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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-11-30 03:08:30 +0300
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-11-30 03:08:30 +0300
commit837e9dcade7e0c60d61f1917fd5a2ec29e22b364 (patch)
treecf6ea5d2a2a28146c2e673cae63338adc536e8c4 /source
parent10bf807574df6c96becd743544d19e3cda10bf66 (diff)
parent92b4316708bad0448f4c433ef9c6c2d3cc1f4fb5 (diff)
Merged changes to revision 25007.
The following files were according to the Math Lib reorganization (see the commit log of revision 24464 for more information): source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h The file release/scripts/ui/properties_render.py was also updated according the RNA UI API renaming in revision 24795.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenfont/intern/blf_font.c4
-rw-r--r--source/blender/blenfont/intern/blf_glyph.c3
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h5
-rw-r--r--source/blender/blenkernel/BKE_action.h12
-rw-r--r--source/blender/blenkernel/BKE_cloth.h2
-rw-r--r--source/blender/blenkernel/BKE_constraint.h13
-rw-r--r--source/blender/blenkernel/BKE_context.h8
-rw-r--r--source/blender/blenkernel/BKE_fcurve.h7
-rw-r--r--source/blender/blenkernel/BKE_group.h4
-rw-r--r--source/blender/blenkernel/BKE_idprop.h2
-rw-r--r--source/blender/blenkernel/BKE_key.h2
-rw-r--r--source/blender/blenkernel/BKE_modifier.h1
-rw-r--r--source/blender/blenkernel/BKE_node.h1
-rw-r--r--source/blender/blenkernel/BKE_paint.h3
-rw-r--r--source/blender/blenkernel/BKE_particle.h2
-rw-r--r--source/blender/blenkernel/BKE_sequence.h38
-rw-r--r--source/blender/blenkernel/BKE_softbody.h3
-rw-r--r--source/blender/blenkernel/BKE_texture.h2
-rw-r--r--source/blender/blenkernel/CMakeLists.txt2
-rw-r--r--source/blender/blenkernel/SConscript2
-rw-r--r--source/blender/blenkernel/intern/BME_tools.c96
-rw-r--r--source/blender/blenkernel/intern/CCGSubSurf.c11
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c78
-rw-r--r--source/blender/blenkernel/intern/action.c140
-rw-r--r--source/blender/blenkernel/intern/anim.c164
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c42
-rw-r--r--source/blender/blenkernel/intern/armature.c507
-rw-r--r--source/blender/blenkernel/intern/boids.c360
-rw-r--r--source/blender/blenkernel/intern/booleanops.c18
-rw-r--r--source/blender/blenkernel/intern/booleanops_mesh.c4
-rw-r--r--source/blender/blenkernel/intern/brush.c30
-rw-r--r--source/blender/blenkernel/intern/bvhutils.c25
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c66
-rw-r--r--source/blender/blenkernel/intern/cloth.c27
-rw-r--r--source/blender/blenkernel/intern/collision.c58
-rw-r--r--source/blender/blenkernel/intern/colortools.c26
-rw-r--r--source/blender/blenkernel/intern/constraint.c759
-rw-r--r--source/blender/blenkernel/intern/context.c71
-rw-r--r--source/blender/blenkernel/intern/curve.c172
-rw-r--r--source/blender/blenkernel/intern/customdata.c34
-rw-r--r--source/blender/blenkernel/intern/deform.c2
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c4
-rw-r--r--source/blender/blenkernel/intern/displist.c46
-rw-r--r--source/blender/blenkernel/intern/effect.c120
-rw-r--r--source/blender/blenkernel/intern/exotic.c32
-rw-r--r--source/blender/blenkernel/intern/fcurve.c75
-rw-r--r--source/blender/blenkernel/intern/fluidsim.c8
-rw-r--r--source/blender/blenkernel/intern/fmodifier.c111
-rw-r--r--source/blender/blenkernel/intern/font.c16
-rw-r--r--source/blender/blenkernel/intern/gpencil.c2
-rw-r--r--source/blender/blenkernel/intern/group.c52
-rw-r--r--source/blender/blenkernel/intern/idprop.c2
-rw-r--r--source/blender/blenkernel/intern/image.c2
-rw-r--r--source/blender/blenkernel/intern/implicit.c18
-rw-r--r--source/blender/blenkernel/intern/ipo.c63
-rw-r--r--source/blender/blenkernel/intern/key.c59
-rw-r--r--source/blender/blenkernel/intern/lattice.c110
-rw-r--r--source/blender/blenkernel/intern/material.c2
-rw-r--r--source/blender/blenkernel/intern/mball.c26
-rw-r--r--source/blender/blenkernel/intern/mesh.c22
-rw-r--r--source/blender/blenkernel/intern/modifier.c318
-rw-r--r--source/blender/blenkernel/intern/multires.c46
-rw-r--r--source/blender/blenkernel/intern/node.c26
-rw-r--r--source/blender/blenkernel/intern/object.c170
-rw-r--r--source/blender/blenkernel/intern/paint.c2
-rw-r--r--source/blender/blenkernel/intern/particle.c394
-rw-r--r--source/blender/blenkernel/intern/particle_system.c336
-rw-r--r--source/blender/blenkernel/intern/pointcache.c58
-rw-r--r--source/blender/blenkernel/intern/scene.c7
-rw-r--r--source/blender/blenkernel/intern/seqeffects.c102
-rw-r--r--source/blender/blenkernel/intern/sequence.c377
-rw-r--r--source/blender/blenkernel/intern/shrinkwrap.c36
-rw-r--r--source/blender/blenkernel/intern/simple_deform.c8
-rw-r--r--source/blender/blenkernel/intern/sketch.c26
-rw-r--r--source/blender/blenkernel/intern/smoke.c62
-rw-r--r--source/blender/blenkernel/intern/softbody.c368
-rw-r--r--source/blender/blenkernel/intern/sound.c6
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c48
-rw-r--r--source/blender/blenkernel/intern/text.c52
-rw-r--r--source/blender/blenkernel/intern/texture.c14
-rw-r--r--source/blender/blenkernel/intern/world.c2
-rw-r--r--source/blender/blenlib/BLI_arithb.h571
-rw-r--r--source/blender/blenlib/BLI_dlrbTree.h67
-rw-r--r--source/blender/blenlib/BLI_listbase.h2
-rw-r--r--source/blender/blenlib/BLI_math_geom.h13
-rw-r--r--source/blender/blenlib/BLI_math_matrix.h36
-rw-r--r--source/blender/blenlib/BLI_math_rotation.h9
-rw-r--r--source/blender/blenlib/BLI_math_vector.h96
-rw-r--r--source/blender/blenlib/BLI_util.h2
-rw-r--r--source/blender/blenlib/intern/BLI_bfile.c2
-rw-r--r--source/blender/blenlib/intern/BLI_kdopbvh.c10
-rw-r--r--source/blender/blenlib/intern/BLI_kdtree.c12
-rw-r--r--source/blender/blenlib/intern/DLRB_tree.c237
-rw-r--r--source/blender/blenlib/intern/arithb.c5488
-rw-r--r--source/blender/blenlib/intern/boxpack2d.c10
-rw-r--r--source/blender/blenlib/intern/freetypefont.c12
-rw-r--r--source/blender/blenlib/intern/graph.c60
-rw-r--r--source/blender/blenlib/intern/jitter.c2
-rw-r--r--source/blender/blenlib/intern/listbase.c2
-rw-r--r--source/blender/blenlib/intern/math_base.c6
-rw-r--r--source/blender/blenlib/intern/math_color.c2
-rw-r--r--source/blender/blenlib/intern/math_geom.c185
-rw-r--r--source/blender/blenlib/intern/math_matrix.c89
-rw-r--r--source/blender/blenlib/intern/math_rotation.c43
-rw-r--r--source/blender/blenlib/intern/math_vector.c268
-rw-r--r--source/blender/blenlib/intern/math_vector_inline.c313
-rw-r--r--source/blender/blenlib/intern/scanfill.c14
-rw-r--r--source/blender/blenlib/intern/util.c2
-rw-r--r--source/blender/blenloader/intern/readfile.c169
-rw-r--r--source/blender/collada/CMakeLists.txt8
-rw-r--r--source/blender/collada/DocumentExporter.cpp34
-rw-r--r--source/blender/collada/DocumentImporter.cpp1247
-rw-r--r--source/blender/collada/collada_internal.h17
-rw-r--r--source/blender/editors/CMakeLists.txt2
-rw-r--r--source/blender/editors/animation/anim_channels_defines.c81
-rw-r--r--source/blender/editors/animation/anim_channels_edit.c9
-rw-r--r--source/blender/editors/animation/anim_deps.c14
-rw-r--r--source/blender/editors/animation/anim_draw.c5
-rw-r--r--source/blender/editors/animation/anim_filter.c213
-rw-r--r--source/blender/editors/animation/anim_intern.h20
-rw-r--r--source/blender/editors/animation/anim_ipo_utils.c6
-rw-r--r--source/blender/editors/animation/anim_ops.c23
-rw-r--r--source/blender/editors/animation/drivers.c34
-rw-r--r--source/blender/editors/animation/fmodifier_ui.c89
-rw-r--r--source/blender/editors/animation/keyframes_draw.c325
-rw-r--r--source/blender/editors/animation/keyframes_edit.c13
-rw-r--r--source/blender/editors/animation/keyframes_general.c2
-rw-r--r--source/blender/editors/animation/keyframing.c151
-rw-r--r--source/blender/editors/animation/keyingsets.c23
-rw-r--r--source/blender/editors/armature/SConscript2
-rw-r--r--source/blender/editors/armature/armature_intern.h1
-rw-r--r--source/blender/editors/armature/armature_ops.c27
-rw-r--r--source/blender/editors/armature/editarmature.c576
-rw-r--r--source/blender/editors/armature/editarmature_generate.c72
-rw-r--r--source/blender/editors/armature/editarmature_retarget.c180
-rw-r--r--source/blender/editors/armature/editarmature_sketch.c124
-rw-r--r--source/blender/editors/armature/meshlaplacian.c526
-rw-r--r--source/blender/editors/armature/meshlaplacian.h3
-rw-r--r--source/blender/editors/armature/poseSlide.c20
-rw-r--r--source/blender/editors/armature/poselib.c2
-rw-r--r--source/blender/editors/armature/poseobject.c82
-rw-r--r--source/blender/editors/armature/reeb.c94
-rw-r--r--source/blender/editors/curve/SConscript2
-rw-r--r--source/blender/editors/curve/curve_ops.c8
-rw-r--r--source/blender/editors/curve/editcurve.c161
-rw-r--r--source/blender/editors/curve/editfont.c4
-rw-r--r--source/blender/editors/datafiles/B.blend.c17464
-rw-r--r--source/blender/editors/datafiles/blenderbuttons.c12634
-rw-r--r--source/blender/editors/datafiles/prvicons.c876
-rw-r--r--source/blender/editors/datafiles/splash.png.c8803
-rw-r--r--source/blender/editors/gpencil/SConscript2
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c37
-rw-r--r--source/blender/editors/gpencil/editaction_gpencil.c2
-rw-r--r--source/blender/editors/gpencil/gpencil_buttons.c2
-rw-r--r--source/blender/editors/gpencil/gpencil_edit.c26
-rw-r--r--source/blender/editors/gpencil/gpencil_paint.c27
-rw-r--r--source/blender/editors/include/ED_anim_api.h11
-rw-r--r--source/blender/editors/include/ED_armature.h15
-rw-r--r--source/blender/editors/include/ED_curve.h2
-rw-r--r--source/blender/editors/include/ED_gpencil.h1
-rw-r--r--source/blender/editors/include/ED_keyframes_draw.h26
-rw-r--r--source/blender/editors/include/ED_mball.h2
-rw-r--r--source/blender/editors/include/ED_mesh.h3
-rw-r--r--source/blender/editors/include/ED_node.h5
-rw-r--r--source/blender/editors/include/ED_object.h16
-rw-r--r--source/blender/editors/include/ED_screen.h1
-rw-r--r--source/blender/editors/include/ED_screen_types.h7
-rw-r--r--source/blender/editors/include/ED_transform.h2
-rw-r--r--source/blender/editors/include/ED_view3d.h5
-rw-r--r--source/blender/editors/include/UI_icons.h44
-rw-r--r--source/blender/editors/include/UI_interface.h22
-rw-r--r--source/blender/editors/interface/interface.c89
-rw-r--r--source/blender/editors/interface/interface_anim.c12
-rw-r--r--source/blender/editors/interface/interface_draw.c46
-rw-r--r--source/blender/editors/interface/interface_handlers.c188
-rw-r--r--source/blender/editors/interface/interface_icons.c2
-rw-r--r--source/blender/editors/interface/interface_intern.h1
-rw-r--r--source/blender/editors/interface/interface_layout.c92
-rw-r--r--source/blender/editors/interface/interface_panel.c2
-rw-r--r--source/blender/editors/interface/interface_regions.c26
-rw-r--r--source/blender/editors/interface/interface_style.c2
-rw-r--r--source/blender/editors/interface/interface_templates.c91
-rw-r--r--source/blender/editors/interface/interface_utils.c12
-rw-r--r--source/blender/editors/interface/interface_widgets.c86
-rw-r--r--source/blender/editors/interface/view2d_ops.c22
-rw-r--r--source/blender/editors/mesh/SConscript2
-rw-r--r--source/blender/editors/mesh/editface.c28
-rw-r--r--source/blender/editors/mesh/editmesh.c29
-rw-r--r--source/blender/editors/mesh/editmesh_add.c76
-rw-r--r--source/blender/editors/mesh/editmesh_lib.c140
-rw-r--r--source/blender/editors/mesh/editmesh_loop.c4
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c170
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c177
-rw-r--r--source/blender/editors/mesh/mesh_data.c29
-rw-r--r--source/blender/editors/mesh/mesh_ops.c68
-rw-r--r--source/blender/editors/mesh/meshtools.c118
-rw-r--r--source/blender/editors/metaball/SConscript2
-rw-r--r--source/blender/editors/metaball/mball_edit.c24
-rw-r--r--source/blender/editors/object/SConscript1
-rw-r--r--source/blender/editors/object/object_add.c110
-rw-r--r--source/blender/editors/object/object_constraint.c173
-rw-r--r--source/blender/editors/object/object_edit.c97
-rw-r--r--source/blender/editors/object/object_group.c43
-rw-r--r--source/blender/editors/object/object_hook.c685
-rw-r--r--source/blender/editors/object/object_intern.h22
-rw-r--r--source/blender/editors/object/object_lattice.c6
-rw-r--r--source/blender/editors/object/object_modifier.c304
-rw-r--r--source/blender/editors/object/object_ops.c56
-rw-r--r--source/blender/editors/object/object_relations.c101
-rw-r--r--source/blender/editors/object/object_select.c4
-rw-r--r--source/blender/editors/object/object_shapekey.c45
-rw-r--r--source/blender/editors/object/object_transform.c192
-rw-r--r--source/blender/editors/object/object_vgroup.c110
-rw-r--r--source/blender/editors/physics/SConscript2
-rw-r--r--source/blender/editors/physics/particle_edit.c152
-rw-r--r--source/blender/editors/physics/particle_object.c28
-rw-r--r--source/blender/editors/physics/physics_fluid.c6
-rw-r--r--source/blender/editors/physics/physics_intern.h4
-rw-r--r--source/blender/editors/physics/physics_ops.c8
-rw-r--r--source/blender/editors/physics/physics_pointcache.c4
-rw-r--r--source/blender/editors/render/SConscript2
-rw-r--r--source/blender/editors/render/render_preview.c2
-rw-r--r--source/blender/editors/render/render_shading.c2
-rw-r--r--source/blender/editors/screen/area.c23
-rw-r--r--source/blender/editors/screen/glutil.c18
-rw-r--r--source/blender/editors/screen/screen_context.c67
-rw-r--r--source/blender/editors/screen/screen_edit.c3
-rw-r--r--source/blender/editors/screen/screen_ops.c215
-rw-r--r--source/blender/editors/sculpt_paint/SConscript2
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c301
-rw-r--r--source/blender/editors/sculpt_paint/paint_ops.c44
-rw-r--r--source/blender/editors/sculpt_paint/paint_stroke.c7
-rw-r--r--source/blender/editors/sculpt_paint/paint_utils.c14
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c164
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c172
-rw-r--r--source/blender/editors/sound/SConscript1
-rw-r--r--source/blender/editors/space_action/action_draw.c2
-rw-r--r--source/blender/editors/space_action/action_edit.c70
-rw-r--r--source/blender/editors/space_action/action_header.c56
-rw-r--r--source/blender/editors/space_action/action_intern.h42
-rw-r--r--source/blender/editors/space_action/action_ops.c106
-rw-r--r--source/blender/editors/space_action/action_select.c18
-rw-r--r--source/blender/editors/space_action/space_action.c11
-rw-r--r--source/blender/editors/space_api/space.c2
-rw-r--r--source/blender/editors/space_api/spacetypes.c2
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c5
-rw-r--r--source/blender/editors/space_buttons/space_buttons.c8
-rw-r--r--source/blender/editors/space_console/space_console.c4
-rw-r--r--source/blender/editors/space_file/file_intern.h2
-rw-r--r--source/blender/editors/space_file/file_ops.c46
-rw-r--r--source/blender/editors/space_file/file_panels.c4
-rw-r--r--source/blender/editors/space_file/filelist.c28
-rw-r--r--source/blender/editors/space_file/filesel.c9
-rw-r--r--source/blender/editors/space_file/space_file.c15
-rw-r--r--source/blender/editors/space_graph/graph_buttons.c27
-rw-r--r--source/blender/editors/space_graph/graph_draw.c4
-rw-r--r--source/blender/editors/space_graph/graph_edit.c6
-rw-r--r--source/blender/editors/space_graph/graph_header.c7
-rw-r--r--source/blender/editors/space_graph/graph_intern.h2
-rw-r--r--source/blender/editors/space_graph/graph_ops.c4
-rw-r--r--source/blender/editors/space_graph/graph_select.c2
-rw-r--r--source/blender/editors/space_graph/graph_utils.c2
-rw-r--r--source/blender/editors/space_graph/space_graph.c11
-rw-r--r--source/blender/editors/space_image/image_buttons.c2
-rw-r--r--source/blender/editors/space_image/image_ops.c4
-rw-r--r--source/blender/editors/space_image/space_image.c4
-rw-r--r--source/blender/editors/space_info/space_info.c4
-rw-r--r--source/blender/editors/space_logic/logic_buttons.c2
-rw-r--r--source/blender/editors/space_logic/logic_window.c14
-rw-r--r--source/blender/editors/space_logic/space_logic.c4
-rw-r--r--source/blender/editors/space_nla/nla_buttons.c7
-rw-r--r--source/blender/editors/space_nla/nla_channels.c7
-rw-r--r--source/blender/editors/space_nla/nla_draw.c2
-rw-r--r--source/blender/editors/space_nla/nla_edit.c20
-rw-r--r--source/blender/editors/space_nla/nla_header.c14
-rw-r--r--source/blender/editors/space_nla/nla_intern.h10
-rw-r--r--source/blender/editors/space_nla/nla_ops.c24
-rw-r--r--source/blender/editors/space_nla/nla_select.c2
-rw-r--r--source/blender/editors/space_nla/space_nla.c11
-rw-r--r--source/blender/editors/space_node/drawnode.c171
-rw-r--r--source/blender/editors/space_node/node_buttons.c183
-rw-r--r--source/blender/editors/space_node/node_draw.c140
-rw-r--r--source/blender/editors/space_node/node_edit.c822
-rw-r--r--source/blender/editors/space_node/node_header.c128
-rw-r--r--source/blender/editors/space_node/node_intern.h29
-rw-r--r--source/blender/editors/space_node/node_ops.c70
-rw-r--r--source/blender/editors/space_node/node_select.c143
-rw-r--r--source/blender/editors/space_node/node_state.c102
-rw-r--r--source/blender/editors/space_node/space_node.c117
-rw-r--r--source/blender/editors/space_outliner/outliner.c2
-rw-r--r--source/blender/editors/space_outliner/outliner_ops.c4
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c8
-rw-r--r--source/blender/editors/space_script/script_edit.c32
-rw-r--r--source/blender/editors/space_script/script_intern.h1
-rw-r--r--source/blender/editors/space_script/script_ops.c4
-rw-r--r--source/blender/editors/space_script/space_script.c4
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c277
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c222
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c87
-rw-r--r--source/blender/editors/space_sequencer/sequencer_intern.h8
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c18
-rw-r--r--source/blender/editors/space_sequencer/sequencer_select.c62
-rw-r--r--source/blender/editors/space_sequencer/space_sequencer.c25
-rw-r--r--source/blender/editors/space_sound/space_sound.c4
-rw-r--r--source/blender/editors/space_text/space_text.c4
-rw-r--r--source/blender/editors/space_text/text_ops.c4
-rw-r--r--source/blender/editors/space_time/space_time.c2
-rw-r--r--source/blender/editors/space_userpref/space_userpref.c2
-rw-r--r--source/blender/editors/space_view3d/SConscript4
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c92
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c4
-rw-r--r--source/blender/editors/space_view3d/drawobject.c416
-rw-r--r--source/blender/editors/space_view3d/drawvolume.c8
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c38
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c87
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c59
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c276
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c402
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h1
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c131
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c62
-rw-r--r--source/blender/editors/space_view3d/view3d_snap.c100
-rw-r--r--source/blender/editors/space_view3d/view3d_toolbar.c4
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c185
-rw-r--r--source/blender/editors/transform/SConscript2
-rw-r--r--source/blender/editors/transform/transform.c574
-rw-r--r--source/blender/editors/transform/transform.h29
-rw-r--r--source/blender/editors/transform/transform_constraints.c118
-rw-r--r--source/blender/editors/transform/transform_conversions.c298
-rw-r--r--source/blender/editors/transform/transform_generics.c102
-rw-r--r--source/blender/editors/transform/transform_input.c63
-rw-r--r--source/blender/editors/transform/transform_manipulator.c248
-rw-r--r--source/blender/editors/transform/transform_ops.c98
-rw-r--r--source/blender/editors/transform/transform_orientations.c135
-rw-r--r--source/blender/editors/transform/transform_snap.c344
-rw-r--r--source/blender/editors/uvedit/uvedit_draw.c90
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c15
-rw-r--r--source/blender/editors/uvedit/uvedit_parametrizer.c102
-rw-r--r--source/blender/editors/uvedit/uvedit_unwrap_ops.c44
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp16
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h2
-rw-r--r--source/blender/gpu/CMakeLists.txt2
-rw-r--r--source/blender/gpu/SConscript4
-rw-r--r--source/blender/gpu/intern/gpu_buffers.c6
-rw-r--r--source/blender/gpu/intern/gpu_material.c46
-rw-r--r--source/blender/ikplugin/intern/ikplugin_api.c2
-rw-r--r--source/blender/ikplugin/intern/iksolver_plugin.c84
-rw-r--r--source/blender/ikplugin/intern/itasc_plugin.cpp74
-rw-r--r--source/blender/imbuf/intern/jp2.c2
-rw-r--r--source/blender/imbuf/intern/util.c6
-rw-r--r--source/blender/makesdna/DNA_action_types.h3
-rw-r--r--source/blender/makesdna/DNA_anim_types.h21
-rw-r--r--source/blender/makesdna/DNA_armature_types.h13
-rw-r--r--source/blender/makesdna/DNA_cloth_types.h2
-rw-r--r--source/blender/makesdna/DNA_constraint_types.h305
-rw-r--r--source/blender/makesdna/DNA_ipo_types.h2
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h8
-rw-r--r--source/blender/makesdna/DNA_node_types.h10
-rw-r--r--source/blender/makesdna/DNA_object_force.h10
-rw-r--r--source/blender/makesdna/DNA_particle_types.h1
-rw-r--r--source/blender/makesdna/DNA_scene_types.h32
-rw-r--r--source/blender/makesdna/DNA_sequence_types.h7
-rw-r--r--source/blender/makesdna/DNA_space_types.h1
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h4
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h1
-rw-r--r--source/blender/makesdna/DNA_windowmanager_types.h6
-rw-r--r--source/blender/makesrna/RNA_access.h66
-rw-r--r--source/blender/makesrna/RNA_define.h5
-rw-r--r--source/blender/makesrna/RNA_enum_types.h6
-rw-r--r--source/blender/makesrna/RNA_types.h2
-rw-r--r--source/blender/makesrna/SConscript1
-rw-r--r--source/blender/makesrna/intern/CMakeLists.txt1
-rw-r--r--source/blender/makesrna/intern/SConscript1
-rw-r--r--source/blender/makesrna/intern/makesrna.c27
-rw-r--r--source/blender/makesrna/intern/rna_ID.c5
-rw-r--r--source/blender/makesrna/intern/rna_access.c409
-rw-r--r--source/blender/makesrna/intern/rna_animation.c11
-rw-r--r--source/blender/makesrna/intern/rna_armature.c171
-rw-r--r--source/blender/makesrna/intern/rna_cloth.c27
-rw-r--r--source/blender/makesrna/intern/rna_color.c2
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c228
-rw-r--r--source/blender/makesrna/intern/rna_curve.c71
-rw-r--r--source/blender/makesrna/intern/rna_define.c41
-rw-r--r--source/blender/makesrna/intern/rna_fcurve.c283
-rw-r--r--source/blender/makesrna/intern/rna_fcurve_api.c40
-rw-r--r--source/blender/makesrna/intern/rna_group.c78
-rw-r--r--source/blender/makesrna/intern/rna_internal.h1
-rw-r--r--source/blender/makesrna/intern/rna_internal_types.h19
-rw-r--r--source/blender/makesrna/intern/rna_key.c2
-rw-r--r--source/blender/makesrna/intern/rna_lattice.c4
-rw-r--r--source/blender/makesrna/intern/rna_main.c62
-rw-r--r--source/blender/makesrna/intern/rna_material.c4
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c126
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c31
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c778
-rw-r--r--source/blender/makesrna/intern/rna_object.c225
-rw-r--r--source/blender/makesrna/intern/rna_object_api.c3
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c30
-rw-r--r--source/blender/makesrna/intern/rna_particle.c3
-rw-r--r--source/blender/makesrna/intern/rna_pose.c197
-rw-r--r--source/blender/makesrna/intern/rna_pose_api.c7
-rw-r--r--source/blender/makesrna/intern/rna_render.c4
-rw-r--r--source/blender/makesrna/intern/rna_rna.c41
-rw-r--r--source/blender/makesrna/intern/rna_scene.c249
-rw-r--r--source/blender/makesrna/intern/rna_scene_api.c51
-rw-r--r--source/blender/makesrna/intern/rna_screen.c10
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c44
-rw-r--r--source/blender/makesrna/intern/rna_sequence.c65
-rw-r--r--source/blender/makesrna/intern/rna_space.c74
-rw-r--r--source/blender/makesrna/intern/rna_text.c4
-rw-r--r--source/blender/makesrna/intern/rna_texture.c56
-rw-r--r--source/blender/makesrna/intern/rna_ui_api.c77
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c139
-rw-r--r--source/blender/makesrna/intern/rna_wm.c104
-rw-r--r--source/blender/makesrna/intern/rna_wm_api.c93
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_levels.c2
-rw-r--r--source/blender/nodes/intern/CMP_util.h2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_camera.c2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_curves.c2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_mapping.c2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_material.c4
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c6
-rw-r--r--source/blender/nodes/intern/SHD_util.h2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_distance.c4
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_rotate.c6
-rw-r--r--source/blender/nodes/intern/TEX_util.h2
-rw-r--r--source/blender/python/BPY_extern.h96
-rw-r--r--source/blender/python/epy_doc_gen.py28
-rw-r--r--source/blender/python/generic/Geometry.c24
-rw-r--r--source/blender/python/generic/IDProp.c1026
-rw-r--r--source/blender/python/generic/IDProp.h64
-rw-r--r--source/blender/python/generic/Mathutils.c66
-rw-r--r--source/blender/python/generic/bpy_internal_import.c45
-rw-r--r--source/blender/python/generic/bpy_internal_import.h5
-rw-r--r--source/blender/python/generic/euler.c12
-rw-r--r--source/blender/python/generic/matrix.c48
-rw-r--r--source/blender/python/generic/quat.c44
-rw-r--r--source/blender/python/generic/vector.c52
-rw-r--r--source/blender/python/intern/bpy_interface.c245
-rw-r--r--source/blender/python/intern/bpy_operator.c24
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c118
-rw-r--r--source/blender/python/intern/bpy_rna.c981
-rw-r--r--source/blender/python/intern/bpy_rna.h8
-rw-r--r--source/blender/python/intern/bpy_ui.c2
-rw-r--r--source/blender/python/intern/bpy_util.c17
-rw-r--r--source/blender/python/intern/stubs.c1
-rw-r--r--source/blender/quicktime/CMakeLists.txt6
-rw-r--r--source/blender/quicktime/SConscript8
-rw-r--r--source/blender/quicktime/apple/qtkit_export.m275
-rw-r--r--source/blender/quicktime/apple/qtkit_import.m529
-rw-r--r--source/blender/quicktime/apple/quicktime_export.c27
-rw-r--r--source/blender/quicktime/apple/quicktime_import.c28
-rw-r--r--source/blender/quicktime/quicktime_export.h18
-rw-r--r--source/blender/quicktime/quicktime_import.h29
-rw-r--r--source/blender/render/CMakeLists.txt4
-rw-r--r--source/blender/render/SConscript7
-rw-r--r--source/blender/render/intern/raytrace/rayobject.cpp16
-rw-r--r--source/blender/render/intern/raytrace/rayobject_rtbuild.cpp2
-rw-r--r--source/blender/render/intern/raytrace/rayobject_vbvh.cpp2
-rw-r--r--source/blender/render/intern/source/convertblender.c440
-rw-r--r--source/blender/render/intern/source/envmap.c108
-rw-r--r--source/blender/render/intern/source/imagetexture.c2
-rw-r--r--source/blender/render/intern/source/initrender.c4
-rw-r--r--source/blender/render/intern/source/occlusion.c68
-rw-r--r--source/blender/render/intern/source/pipeline.c14
-rw-r--r--source/blender/render/intern/source/pixelblending.c2
-rw-r--r--source/blender/render/intern/source/pixelshading.c18
-rw-r--r--source/blender/render/intern/source/pointdensity.c25
-rw-r--r--source/blender/render/intern/source/rayobject_blibvh.c4
-rw-r--r--source/blender/render/intern/source/rayobject_instance.c14
-rw-r--r--source/blender/render/intern/source/rayobject_octree.c4
-rw-r--r--source/blender/render/intern/source/rayshade.c78
-rw-r--r--source/blender/render/intern/source/rendercore.c36
-rw-r--r--source/blender/render/intern/source/renderdatabase.c40
-rw-r--r--source/blender/render/intern/source/shadbuf.c40
-rw-r--r--source/blender/render/intern/source/shadeinput.c72
-rw-r--r--source/blender/render/intern/source/shadeoutput.c60
-rw-r--r--source/blender/render/intern/source/sss.c10
-rw-r--r--source/blender/render/intern/source/strand.c38
-rw-r--r--source/blender/render/intern/source/sunsky.c12
-rw-r--r--source/blender/render/intern/source/texture.c134
-rw-r--r--source/blender/render/intern/source/volume_precache.c12
-rw-r--r--source/blender/render/intern/source/volumetric.c66
-rw-r--r--source/blender/render/intern/source/voxeldata.c8
-rw-r--r--source/blender/render/intern/source/zbuf.c24
-rw-r--r--source/blender/windowmanager/CMakeLists.txt4
-rw-r--r--source/blender/windowmanager/SConscript2
-rw-r--r--source/blender/windowmanager/WM_api.h13
-rw-r--r--source/blender/windowmanager/WM_types.h11
-rw-r--r--source/blender/windowmanager/intern/wm.c31
-rw-r--r--source/blender/windowmanager/intern/wm_cursors.c14
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c147
-rw-r--r--source/blender/windowmanager/intern/wm_files.c17
-rw-r--r--source/blender/windowmanager/intern/wm_init_exit.c27
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c79
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c333
-rw-r--r--source/blender/windowmanager/intern/wm_subwindow.c30
-rw-r--r--source/blender/windowmanager/intern/wm_window.c26
-rw-r--r--source/blender/windowmanager/wm.h1
-rw-r--r--source/blender/windowmanager/wm_event_system.h4
-rw-r--r--source/blenderplayer/bad_level_call_stubs/stubs.c82
-rw-r--r--source/creator/creator.c56
-rw-r--r--source/gameengine/BlenderRoutines/CMakeLists.txt2
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp8
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderCanvas.h2
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderGL.cpp28
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderGL.h8
-rw-r--r--source/gameengine/BlenderRoutines/SConscript2
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.cpp6
-rw-r--r--source/gameengine/Converter/BL_ArmatureActuator.cpp2
-rw-r--r--source/gameengine/Converter/BL_ArmatureChannel.cpp58
-rw-r--r--source/gameengine/Converter/BL_ArmatureConstraint.cpp12
-rw-r--r--source/gameengine/Converter/BL_ArmatureObject.cpp10
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp55
-rw-r--r--source/gameengine/Converter/BL_MeshDeformer.cpp6
-rw-r--r--source/gameengine/Converter/BL_MeshDeformer.h4
-rw-r--r--source/gameengine/Converter/BL_ModifierDeformer.cpp4
-rw-r--r--source/gameengine/Converter/BL_ModifierDeformer.h4
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.cpp2
-rw-r--r--source/gameengine/Converter/BL_ShapeDeformer.cpp4
-rw-r--r--source/gameengine/Converter/BL_ShapeDeformer.h4
-rw-r--r--source/gameengine/Converter/BL_SkinDeformer.cpp18
-rw-r--r--source/gameengine/Converter/BL_SkinDeformer.h4
-rw-r--r--source/gameengine/Converter/BL_SkinMeshObject.cpp156
-rw-r--r--source/gameengine/Converter/BL_SkinMeshObject.h67
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.cpp535
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.h36
-rw-r--r--source/gameengine/Converter/KX_ConvertActuators.cpp3
-rw-r--r--source/gameengine/Converter/KX_IpoConvert.cpp22
-rw-r--r--source/gameengine/Converter/KX_SoftBodyDeformer.cpp120
-rw-r--r--source/gameengine/Converter/KX_SoftBodyDeformer.h102
-rw-r--r--source/gameengine/Converter/Makefile1
-rw-r--r--source/gameengine/GameLogic/SCA_EventManager.h5
-rw-r--r--source/gameengine/GameLogic/SCA_ExpressionController.cpp2
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.h8
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.cpp13
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.h1
-rw-r--r--source/gameengine/GameLogic/SCA_LogicManager.cpp11
-rw-r--r--source/gameengine/GameLogic/SCA_LogicManager.h5
-rw-r--r--source/gameengine/GameLogic/SCA_PropertySensor.cpp1
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.cpp3
-rw-r--r--source/gameengine/GamePlayer/common/GPC_Canvas.h7
-rw-r--r--source/gameengine/GamePlayer/common/SConscript2
-rw-r--r--source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp4
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp22
-rw-r--r--source/gameengine/GamePlayer/ghost/SConscript2
-rw-r--r--source/gameengine/Ketsji/CMakeLists.txt2
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h4
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h5
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp3
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.h13
-rw-r--r--source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp127
-rw-r--r--source/gameengine/Ketsji/KX_Dome.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.h12
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.cpp8
-rw-r--r--source/gameengine/Ketsji/KX_IPO_SGController.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp19
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.h4
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.h7
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.h5
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp157
-rw-r--r--source/gameengine/Ketsji/KX_RaySensor.h6
-rw-r--r--source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h7
-rw-r--r--source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h5
-rw-r--r--source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h5
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp308
-rw-r--r--source/gameengine/Ketsji/KX_Scene.h32
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.h7
-rw-r--r--source/gameengine/Ketsji/KX_TouchEventManager.h1
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.h4
-rw-r--r--source/gameengine/Ketsji/Makefile1
-rw-r--r--source/gameengine/Ketsji/SConscript2
-rw-r--r--source/gameengine/Physics/Bullet/CcdGraphicController.cpp15
-rw-r--r--source/gameengine/Physics/Bullet/CcdGraphicController.h2
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.cpp520
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.h3
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp35
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h6
-rw-r--r--source/gameengine/Physics/common/PHY_IController.h7
-rw-r--r--source/gameengine/Physics/common/PHY_IGraphicController.h2
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsController.h1
-rw-r--r--source/gameengine/PyDoc/GameTypes.py17
-rw-r--r--source/gameengine/Rasterizer/CMakeLists.txt3
-rw-r--r--source/gameengine/Rasterizer/Makefile5
-rw-r--r--source/gameengine/Rasterizer/RAS_BucketManager.cpp41
-rw-r--r--source/gameengine/Rasterizer/RAS_BucketManager.h15
-rw-r--r--source/gameengine/Rasterizer/RAS_IPolygonMaterial.h4
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.cpp128
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.h12
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt2
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript4
-rw-r--r--source/gameengine/Rasterizer/SConscript4
-rw-r--r--source/gameengine/SceneGraph/SG_IObject.h16
-rw-r--r--source/gameengine/VideoTexture/ImageRender.cpp48
-rw-r--r--source/nan_compile.mk3
596 files changed, 45322 insertions, 38592 deletions
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index 8721e49f06b..c1b54c393c7 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -46,7 +46,7 @@
#include "BLI_blenlib.h"
#include "BLI_linklist.h" /* linknode */
#include "BLI_string.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BIF_gl.h"
#include "BLF_api.h"
@@ -459,7 +459,7 @@ static void blf_font_fill(FontBLF *font)
font->pos[0]= 0.0f;
font->pos[1]= 0.0f;
font->angle= 0.0f;
- Mat4One(font->mat);
+ unit_m4(font->mat);
font->clip_rec.xmin= 0.0f;
font->clip_rec.xmax= 0.0f;
font->clip_rec.ymin= 0.0f;
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index 7d1e43a38df..1174197dce7 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -131,7 +131,8 @@ void blf_glyph_cache_free(GlyphCacheBLF *gc)
}
}
- glDeleteTextures(gc->cur_tex+1, gc->textures);
+ if (gc->cur_tex+1 > 0)
+ glDeleteTextures(gc->cur_tex+1, gc->textures);
free((void *)gc->textures);
MEM_freeN(gc);
}
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 076747cb845..514411e137d 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -54,6 +54,7 @@ struct Object;
struct Scene;
struct Mesh;
struct EditMesh;
+struct KeyBlock;
struct ModifierData;
struct MCol;
struct ColorBand;
@@ -318,6 +319,10 @@ int DM_release(DerivedMesh *dm);
*/
void DM_to_mesh(DerivedMesh *dm, struct Mesh *me);
+/* utility function to convert a DerivedMesh to a shape key block
+ */
+void DM_to_meshkey(DerivedMesh *dm, struct Mesh *me, struct KeyBlock *kb);
+
/* set the CD_FLAG_NOCOPY flag in custom data layers where the mask is
* zero for the layer type, so only layer types specified by the mask
* will be copied
diff --git a/source/blender/blenkernel/BKE_action.h b/source/blender/blenkernel/BKE_action.h
index 17b56864d1e..6029ce01794 100644
--- a/source/blender/blenkernel/BKE_action.h
+++ b/source/blender/blenkernel/BKE_action.h
@@ -118,6 +118,12 @@ struct bActionGroup *action_groups_find_named(struct bAction *act, const char na
/* Pose API ----------------- */
/**
+ * Deallocates a pose channel.
+ * Does not free the pose channel itself.
+ */
+void free_pose_channel(struct bPoseChannel *pchan);
+
+/**
* Removes and deallocates all channels from a pose.
* Does not free the pose itself.
*/
@@ -134,7 +140,11 @@ void free_pose(struct bPose *pose);
*/
void copy_pose(struct bPose **dst, struct bPose *src, int copyconstraints);
-
+/**
+ * Copy the internal members of each pose channel including constraints
+ * and ID-Props, used when duplicating bones in editmode.
+ */
+void duplicate_pose_channel_data(struct bPoseChannel *pchan, const struct bPoseChannel *pchan_from);
/**
* Return a pointer to the pose channel of the given name
diff --git a/source/blender/blenkernel/BKE_cloth.h b/source/blender/blenkernel/BKE_cloth.h
index e5b3adbd0c0..54dd82317fc 100644
--- a/source/blender/blenkernel/BKE_cloth.h
+++ b/source/blender/blenkernel/BKE_cloth.h
@@ -38,7 +38,7 @@
#include "BKE_DerivedMesh.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "DNA_cloth_types.h"
diff --git a/source/blender/blenkernel/BKE_constraint.h b/source/blender/blenkernel/BKE_constraint.h
index 6446b48d553..e9110b99098 100644
--- a/source/blender/blenkernel/BKE_constraint.h
+++ b/source/blender/blenkernel/BKE_constraint.h
@@ -52,7 +52,7 @@ typedef struct bConstraintOb {
float startmat[4][4]; /* original matrix (before constraint solving) */
short type; /* type of owner */
- short rotOrder; /* rotation order for constraint owner (as defined in eEulerRotationOrders in BLI_arithb.h) */
+ short rotOrder; /* rotation order for constraint owner (as defined in eEulerRotationOrders in BLI_math.h) */
} bConstraintOb;
/* ---------------------------------------------------------------------------- */
@@ -108,18 +108,25 @@ bConstraintTypeInfo *get_constraint_typeinfo(int type);
/* Constraint Target Macros */
#define VALID_CONS_TARGET(ct) ((ct) && (ct->tar))
-
/* ---------------------------------------------------------------------------- */
/* Constraint function prototypes */
void unique_constraint_name(struct bConstraint *con, struct ListBase *list);
void free_constraints(struct ListBase *list);
-void copy_constraints(struct ListBase *dst, struct ListBase *src);
+void copy_constraints(struct ListBase *dst, const struct ListBase *src);
void relink_constraints(struct ListBase *list);
void free_constraint_data(struct bConstraint *con);
+/* Constraint API function prototypes */
struct bConstraint *constraints_get_active(struct ListBase *list);
+void constraints_set_active(ListBase *list, struct bConstraint *con);
+
+struct bConstraint *add_ob_constraint(struct Object *ob, const char *name, short type);
+struct bConstraint *add_pose_constraint(struct Object *ob, struct bPoseChannel *pchan, const char *name, short type);
+
+int remove_constraint(ListBase *list, struct bConstraint *con);
+int remove_constraint_index(ListBase *list, int index);
/* Constraints + Proxies function prototypes */
void extract_proxylocal_constraints(struct ListBase *dst, struct ListBase *src);
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index feba39ee11d..2c013a5231a 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -174,7 +174,7 @@ PointerRNA CTX_data_pointer_get(const bContext *C, const char *member);
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type);
ListBase CTX_data_collection_get(const bContext *C, const char *member);
ListBase CTX_data_dir_get(const bContext *C);
-void CTX_data_get(const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb);
+int CTX_data_get(const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb);
void CTX_data_id_pointer_set(bContextDataResult *result, struct ID *id);
void CTX_data_pointer_set(bContextDataResult *result, struct ID *id, StructRNA *type, void *data);
@@ -248,9 +248,9 @@ int CTX_data_selected_editable_bones(const bContext *C, ListBase *list);
int CTX_data_visible_bones(const bContext *C, ListBase *list);
int CTX_data_editable_bones(const bContext *C, ListBase *list);
-struct bPoseChannel *CTX_data_active_pchan(const bContext *C);
-int CTX_data_selected_pchans(const bContext *C, ListBase *list);
-int CTX_data_visible_pchans(const bContext *C, ListBase *list);
+struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C);
+int CTX_data_selected_pose_bones(const bContext *C, ListBase *list);
+int CTX_data_visible_pose_bones(const bContext *C, ListBase *list);
#ifdef __cplusplus
}
diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h
index 6e273c81e39..5888c6d7530 100644
--- a/source/blender/blenkernel/BKE_fcurve.h
+++ b/source/blender/blenkernel/BKE_fcurve.h
@@ -34,6 +34,7 @@ struct ChannelDriver;
struct DriverTarget;
struct BezTriple;
+struct StructRNA;
#include "DNA_curve_types.h"
@@ -129,7 +130,8 @@ FModifierTypeInfo *get_fmodifier_typeinfo(int type);
struct FModifier *add_fmodifier(ListBase *modifiers, int type);
void copy_fmodifiers(ListBase *dst, ListBase *src);
-void remove_fmodifier(ListBase *modifiers, struct FModifier *fcm);
+int remove_fmodifier(ListBase *modifiers, struct FModifier *fcm);
+int remove_fmodifier_index(ListBase *modifiers, int index);
void free_fmodifiers(ListBase *modifiers);
struct FModifier *find_active_fmodifier(ListBase *modifiers);
@@ -155,6 +157,9 @@ void copy_fcurves(ListBase *dst, ListBase *src);
/* find matching F-Curve in the given list of F-Curves */
struct FCurve *list_find_fcurve(ListBase *list, const char rna_path[], const int array_index);
+/* high level function to get an fcurve from C without having the rna */
+struct FCurve *id_data_find_fcurve(ID* id, void *data, struct StructRNA *type, char *prop_name, int index);
+
/* Binary search algorithm for finding where to 'insert' BezTriple with given frame number.
* Returns the index to insert at (data already at that index will be offset if replace is 0)
*/
diff --git a/source/blender/blenkernel/BKE_group.h b/source/blender/blenkernel/BKE_group.h
index b66ddf13527..877e09b037f 100644
--- a/source/blender/blenkernel/BKE_group.h
+++ b/source/blender/blenkernel/BKE_group.h
@@ -42,8 +42,8 @@ void free_group(struct Group *group);
void unlink_group(struct Group *group);
struct Group *add_group(char *name);
struct Group *copy_group(struct Group *group);
-void add_to_group(struct Group *group, struct Object *ob);
-int rem_from_group(struct Group *group, struct Object *ob);
+int add_to_group(struct Group *group, struct Object *ob, struct Scene *scene, struct Base *base);
+int rem_from_group(struct Group *group, struct Object *ob, struct Scene *scene, struct Base *base);
struct Group *find_group(struct Object *ob, struct Group *group);
int object_in_group(struct Object *ob, struct Group *group);
int group_is_animated(struct Object *parent, struct Group *group);
diff --git a/source/blender/blenkernel/BKE_idprop.h b/source/blender/blenkernel/BKE_idprop.h
index 1980ba78c86..9c7460851cb 100644
--- a/source/blender/blenkernel/BKE_idprop.h
+++ b/source/blender/blenkernel/BKE_idprop.h
@@ -117,7 +117,7 @@ int IDP_InsertToGroup(struct IDProperty *group, struct IDProperty *previous,
*/
void IDP_RemFromGroup(struct IDProperty *group, struct IDProperty *prop);
-IDProperty *IDP_GetPropertyFromGroup(struct IDProperty *prop, char *name);
+IDProperty *IDP_GetPropertyFromGroup(struct IDProperty *prop, const char *name);
/*Get an iterator to iterate over the members of an id property group.
Note that this will automatically free the iterator once iteration is complete;
diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h
index b70801a9edd..d5bae00d32e 100644
--- a/source/blender/blenkernel/BKE_key.h
+++ b/source/blender/blenkernel/BKE_key.h
@@ -59,7 +59,9 @@ void key_curve_normal_weights(float t, float *data, int type);
float *do_ob_key(struct Scene *scene, struct Object *ob);
struct Key *ob_get_key(struct Object *ob);
+struct KeyBlock *add_keyblock(struct Scene *scene, struct Key *key);
struct KeyBlock *ob_get_keyblock(struct Object *ob);
+struct KeyBlock *ob_get_reference_keyblock(struct Object *ob);
struct KeyBlock *key_get_keyblock(struct Key *key, int index);
struct KeyBlock *key_get_named_keyblock(struct Key *key, const char name[]);
char *key_get_curValue_rnaPath(struct Key *key, struct KeyBlock *kb);
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 245db7e35ff..c30bfa3e247 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -281,6 +281,7 @@ int modifier_dependsOnTime(struct ModifierData *md);
int modifier_supportsMapping(struct ModifierData *md);
int modifier_couldBeCage(struct ModifierData *md);
int modifier_isDeformer(struct ModifierData *md);
+int modifier_sameTopology(ModifierData *md);
int modifier_isEnabled(struct ModifierData *md, int required_mode);
void modifier_setError(struct ModifierData *md, char *format, ...);
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 4c872fb247c..f9130e24a08 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -162,6 +162,7 @@ void nodeVerifyType(struct bNodeTree *ntree, struct bNode *node);
void nodeAddToPreview(struct bNode *, float *, int, int);
void nodeUnlinkNode(struct bNodeTree *ntree, struct bNode *node);
+void nodeUniqueName(struct bNodeTree *ntree, struct bNode *node);
void nodeAddSockets(struct bNode *node, struct bNodeType *ntype);
struct bNode *nodeAddNodeType(struct bNodeTree *ntree, int type, struct bNodeTree *ngroup, struct ID *id);
void nodeRegisterType(struct ListBase *typelist, const struct bNodeType *ntype) ;
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index ba42aca1872..b532b0820d7 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -68,6 +68,9 @@ typedef struct SculptSession {
struct MFace *mface;
int totvert, totface;
float *face_normals;
+
+ struct Object *ob;
+ struct KeyBlock *kb, *refkb;
/* Mesh connectivity */
struct ListBase *fmap;
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index 2291601bd47..2199240d77b 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -222,7 +222,7 @@ void copy_particle_key(struct ParticleKey *to, struct ParticleKey *from, int tim
void psys_particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, int index_dmcache, float *fuv, float foffset, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor);
struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct ParticleSystem *psys);
-void object_add_particle_system(struct Scene *scene, struct Object *ob);
+struct ModifierData *object_add_particle_system(struct Scene *scene, struct Object *ob, char *name);
void object_remove_particle_system(struct Scene *scene, struct Object *ob);
struct ParticleSettings *psys_new_settings(char *name, struct Main *main);
struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part);
diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequence.h
index fb3c282b090..2f7526d524c 100644
--- a/source/blender/blenkernel/BKE_sequence.h
+++ b/source/blender/blenkernel/BKE_sequence.h
@@ -163,7 +163,7 @@ void update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_s
/* seqeffects.c */
// intern?
struct SeqEffectHandle get_sequence_blend(struct Sequence *seq);
-void sequence_effect_speed_rebuild_map(struct Sequence *seq, int force);
+void sequence_effect_speed_rebuild_map(struct Scene *scene, struct Sequence *seq, int force);
// extern
struct SeqEffectHandle get_sequence_effect(struct Sequence *seq);
@@ -183,10 +183,44 @@ void fix_single_seq(struct Sequence *seq);
int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test);
int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test);
int shuffle_seq_time(ListBase * seqbasep);
-void free_imbuf_seq(struct ListBase * seqbasep, int check_mem_usage);
+void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage);
void seq_update_sound(struct Sequence *seq);
void clear_scene_in_allseqs(struct Scene *sce);
+struct Sequence *active_seq_get(struct Scene *scene);
+void active_seq_set(struct Scene *scene, struct Sequence *seq);
+
+/* api for adding new sequence strips */
+typedef struct SeqLoadInfo {
+ int start_frame;
+ int channel;
+ int flag; /* use sound, replace sel */
+ int type;
+ int tot_success;
+ int tot_error;
+ int len; /* only for image strips */
+ char path[512];
+ char name[32];
+} SeqLoadInfo;
+
+/* SeqLoadInfo.flag */
+#define SEQ_LOAD_REPLACE_SEL 1<<0
+#define SEQ_LOAD_FRAME_ADVANCE 1<<1
+#define SEQ_LOAD_MOVIE_SOUND 1<<2
+#define SEQ_LOAD_SOUND_CACHE 1<<3
+
+/* use as an api function */
+typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *);
+
+struct Sequence *alloc_sequence(ListBase *lb, int cfra, int machine);
+
+void seq_load_apply(struct Scene *scene, struct Sequence *seq, struct SeqLoadInfo *seq_load);
+
+void seqUniqueName(ListBase *seqbasep, struct Sequence *seq);
+
+struct Sequence *sequencer_add_image_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
+struct Sequence *sequencer_add_sound_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
+struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
diff --git a/source/blender/blenkernel/BKE_softbody.h b/source/blender/blenkernel/BKE_softbody.h
index d8053281ceb..92cb5542ad1 100644
--- a/source/blender/blenkernel/BKE_softbody.h
+++ b/source/blender/blenkernel/BKE_softbody.h
@@ -68,5 +68,8 @@ extern void sbObjectToSoftbody(struct Object *ob);
/* pass NULL to unlink again */
extern void sbSetInterruptCallBack(int (*f)(void));
+extern void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscale[3][3]);
+
+
#endif
diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h
index b9dc5916e69..95ada45f5d8 100644
--- a/source/blender/blenkernel/BKE_texture.h
+++ b/source/blender/blenkernel/BKE_texture.h
@@ -62,7 +62,7 @@ int do_colorband(struct ColorBand *coba, float in, float out[4]);
void colorband_table_RGBA(struct ColorBand *coba, float **array, int *size);
void default_tex(struct Tex *tex);
-struct Tex *add_texture(char *name);
+struct Tex *add_texture(const char *name);
void default_mtex(struct MTex *mtex);
struct MTex *add_mtex(void);
struct Tex *copy_texture(struct Tex *tex);
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index 079a5411cf2..d2a6587336a 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -37,6 +37,8 @@ SET(INC
${ZLIB_INC}
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
IF(WITH_BULLET)
SET(INC ${INC} ../../../extern/bullet2/src)
ADD_DEFINITIONS(-DUSE_BULLET)
diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript
index cceb4c685fa..fdd3a9e5276 100644
--- a/source/blender/blenkernel/SConscript
+++ b/source/blender/blenkernel/SConscript
@@ -16,7 +16,7 @@ incs += ' #/intern/audaspace/intern'
incs += ' ' + env['BF_OPENGL_INC']
incs += ' ' + env['BF_ZLIB_INC']
-defs = []
+defs = [ 'GLEW_STATIC' ]
if not env['WITH_BF_PYTHON']:
defs.append('DISABLE_PYTHON')
diff --git a/source/blender/blenkernel/intern/BME_tools.c b/source/blender/blenkernel/intern/BME_tools.c
index 32065ea5151..d92e8fe4227 100644
--- a/source/blender/blenkernel/intern/BME_tools.c
+++ b/source/blender/blenkernel/intern/BME_tools.c
@@ -42,7 +42,7 @@
#include "BKE_utildefines.h"
#include "BKE_bmesh.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
/*split this all into a seperate bevel.c file in src*/
@@ -88,7 +88,7 @@ BME_TransData *BME_assign_transdata(BME_TransData_Head *td, BME_Mesh *bm, BME_Ve
else if (org != NULL) VECCOPY(vtd->org,org);
if (vec != NULL) {
VECCOPY(vtd->vec,vec);
- Normalize(vtd->vec);
+ normalize_v3(vtd->vec);
}
vtd->loc = loc;
@@ -261,7 +261,7 @@ static BME_Vert *BME_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Edge *e, BME_Edge
nv = BME_SEMV(bm,v,e,ne);
if (nv == NULL) return NULL;
VECSUB(nv->co,v2->co,v->co);
- len = VecLength(nv->co);
+ len = len_v3(nv->co);
VECADDFAC(nv->co,v->co,nv->co,len*percent);
nv->flag = v->flag;
nv->bweight = v->bweight;
@@ -335,17 +335,17 @@ static int BME_bevel_get_vec(float *vec, BME_Vert *v1, BME_Vert *v2, BME_TransDa
/* compare the transform origins to see if we can use the vert co's;
* if they belong to different origins, then we will use the origins to determine
* the vector */
- if (VecCompare(vtd1->org,vtd2->org,0.000001f)) {
+ if (compare_v3v3(vtd1->org,vtd2->org,0.000001f)) {
VECSUB(vec,v2->co,v1->co);
- if (VecLength(vec) < 0.000001f) {
- VecMulf(vec,0);
+ if (len_v3(vec) < 0.000001f) {
+ mul_v3_fl(vec,0);
}
return 0;
}
else {
VECSUB(vec,vtd2->org,vtd1->org);
- if (VecLength(vec) < 0.000001f) {
- VecMulf(vec,0);
+ if (len_v3(vec) < 0.000001f) {
+ mul_v3_fl(vec,0);
}
return 1;
}
@@ -363,18 +363,18 @@ static int BME_bevel_get_vec(float *vec, BME_Vert *v1, BME_Vert *v2, BME_TransDa
static float BME_bevel_project_vec(float *vec1, float *vec2, float *up_vec, int is_forward, BME_TransData_Head *td) {
float factor, vec3[3], tmp[3],c1,c2;
- Crossf(tmp,vec1,vec2);
- Normalize(tmp);
- factor = Inpf(up_vec,tmp);
+ cross_v3_v3v3(tmp,vec1,vec2);
+ normalize_v3(tmp);
+ factor = dot_v3v3(up_vec,tmp);
if ((factor > 0 && is_forward) || (factor < 0 && !is_forward)) {
- Crossf(vec3,vec2,tmp); /* hmm, maybe up_vec should be used instead of tmp */
+ cross_v3_v3v3(vec3,vec2,tmp); /* hmm, maybe up_vec should be used instead of tmp */
}
else {
- Crossf(vec3,tmp,vec2); /* hmm, maybe up_vec should be used instead of tmp */
+ cross_v3_v3v3(vec3,tmp,vec2); /* hmm, maybe up_vec should be used instead of tmp */
}
- Normalize(vec3);
- c1 = Inpf(vec3,vec1);
- c2 = Inpf(vec1,vec1);
+ normalize_v3(vec3);
+ c1 = dot_v3v3(vec3,vec1);
+ c2 = dot_v3v3(vec1,vec1);
if (fabs(c1) < 0.000001f || fabs(c2) < 0.000001f) {
factor = 0.0f;
}
@@ -435,8 +435,8 @@ static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, B
ne->tflag1 = BME_BEVEL_ORIG; /* mark edge as original, even though it isn't */
BME_bevel_get_vec(vec1,v1,v,td);
BME_bevel_get_vec(vec2,v2,v,td);
- Crossf(t_up_vec,vec1,vec2);
- Normalize(t_up_vec);
+ cross_v3_v3v3(t_up_vec,vec1,vec2);
+ normalize_v3(t_up_vec);
up_vec = t_up_vec;
}
else {
@@ -486,8 +486,8 @@ static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, B
is_edge = BME_bevel_get_vec(vec1,v,v1,td); /* get the vector we will be projecting onto */
BME_bevel_get_vec(vec2,v,v2,td); /* get the vector we will be projecting parallel to */
- len = VecLength(vec1);
- Normalize(vec1);
+ len = len_v3(vec1);
+ normalize_v3(vec1);
vtd = BME_get_transdata(td, sv);
vtd1 = BME_get_transdata(td, v);
@@ -525,8 +525,8 @@ static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, B
}
VECADDFAC(sv->co,v->co,vec1,dis);
VECSUB(vec1,sv->co,vtd1->org);
- dis = VecLength(vec1);
- Normalize(vec1);
+ dis = len_v3(vec1);
+ normalize_v3(vec1);
BME_assign_transdata(td, bm, sv, vtd1->org, vtd1->org, vec1, sv->co, dis, scale, maxfactor, vtd->max);
return sv;
@@ -545,10 +545,10 @@ static float BME_bevel_set_max(BME_Vert *v1, BME_Vert *v2, float value, BME_Tran
}
else {
VECCOPY(vec2,vtd1->vec);
- VecMulf(vec2,vtd1->factor);
- if (Inpf(vec1, vec1)) {
- Projf(vec2,vec2,vec1);
- fac1 = VecLength(vec2)/value;
+ mul_v3_fl(vec2,vtd1->factor);
+ if (dot_v3v3(vec1, vec1)) {
+ project_v3_v3v3(vec2,vec2,vec1);
+ fac1 = len_v3(vec2)/value;
}
else {
fac1 = 0;
@@ -560,10 +560,10 @@ static float BME_bevel_set_max(BME_Vert *v1, BME_Vert *v2, float value, BME_Tran
}
else {
VECCOPY(vec3,vtd2->vec);
- VecMulf(vec3,vtd2->factor);
- if (Inpf(vec1, vec1)) {
- Projf(vec2,vec3,vec1);
- fac2 = VecLength(vec2)/value;
+ mul_v3_fl(vec3,vtd2->factor);
+ if (dot_v3v3(vec1, vec1)) {
+ project_v3_v3v3(vec2,vec3,vec1);
+ fac2 = len_v3(vec2)/value;
}
else {
fac2 = 0;
@@ -571,7 +571,7 @@ static float BME_bevel_set_max(BME_Vert *v1, BME_Vert *v2, float value, BME_Tran
}
if (fac1 || fac2) {
- max = VecLength(vec1)/(fac1 + fac2);
+ max = len_v3(vec1)/(fac1 + fac2);
if (vtd1->max && (*vtd1->max < 0 || max < *vtd1->max)) {
*vtd1->max = max;
}
@@ -760,12 +760,12 @@ static BME_Poly *BME_bevel_poly(BME_Mesh *bm, BME_Poly *f, float value, int opti
for (i=0,ol=f->loopbase,l=ol->next; l->next!=ol; l=l->next) {
BME_bevel_get_vec(vec1,l->next->v,ol->v,td);
BME_bevel_get_vec(vec2,l->v,ol->v,td);
- Crossf(vec3,vec2,vec1);
+ cross_v3_v3v3(vec3,vec2,vec1);
VECADD(up_vec,up_vec,vec3);
i++;
}
- VecMulf(up_vec,1.0f/i);
- Normalize(up_vec);
+ mul_v3_fl(up_vec,1.0f/i);
+ normalize_v3(up_vec);
for (i=0,len=f->len; i<len; i++,l=l->next) {
if ((l->e->tflag1 & BME_BEVEL_BEVEL) && (l->e->tflag1 & BME_BEVEL_ORIG)) {
@@ -791,10 +791,10 @@ static BME_Poly *BME_bevel_poly(BME_Mesh *bm, BME_Poly *f, float value, int opti
}
else {
VECCOPY(vec2,vtd1->vec);
- VecMulf(vec2,vtd1->factor);
- if (Inpf(vec1, vec1)) {
- Projf(vec2,vec2,vec1);
- fac1 = VecLength(vec2)/value;
+ mul_v3_fl(vec2,vtd1->factor);
+ if (dot_v3v3(vec1, vec1)) {
+ project_v3_v3v3(vec2,vec2,vec1);
+ fac1 = len_v3(vec2)/value;
}
else {
fac1 = 0;
@@ -805,17 +805,17 @@ static BME_Poly *BME_bevel_poly(BME_Mesh *bm, BME_Poly *f, float value, int opti
}
else {
VECCOPY(vec3,vtd2->vec);
- VecMulf(vec3,vtd2->factor);
- if (Inpf(vec1, vec1)) {
- Projf(vec2,vec3,vec1);
- fac2 = VecLength(vec2)/value;
+ mul_v3_fl(vec3,vtd2->factor);
+ if (dot_v3v3(vec1, vec1)) {
+ project_v3_v3v3(vec2,vec3,vec1);
+ fac2 = len_v3(vec2)/value;
}
else {
fac2 = 0;
}
}
if (fac1 || fac2) {
- max = VecLength(vec1)/(fac1 + fac2);
+ max = len_v3(vec1)/(fac1 + fac2);
if (vtd1->max && (*vtd1->max < 0 || max < *vtd1->max)) {
*vtd1->max = max;
}
@@ -880,7 +880,7 @@ static float BME_bevel_get_angle(BME_Mesh *bm, BME_Edge *e, BME_Vert *v) {
}
VECSUB(vec1,v1->co,v->co);
VECSUB(vec2,v2->co,v->co);
- Crossf(vec3,vec1,vec2);
+ cross_v3_v3v3(vec3,vec1,vec2);
l1 = l2;
if (l1->v == v) {
@@ -893,12 +893,12 @@ static float BME_bevel_get_angle(BME_Mesh *bm, BME_Edge *e, BME_Vert *v) {
}
VECSUB(vec1,v1->co,v->co);
VECSUB(vec2,v2->co,v->co);
- Crossf(vec4,vec2,vec1);
+ cross_v3_v3v3(vec4,vec2,vec1);
- Normalize(vec3);
- Normalize(vec4);
+ normalize_v3(vec3);
+ normalize_v3(vec4);
- return Inpf(vec3,vec4);
+ return dot_v3v3(vec3,vec4);
}
static int BME_face_sharededges(BME_Poly *f1, BME_Poly *f2){
BME_Loop *l;
diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c
index cee032f364e..355ea70b178 100644
--- a/source/blender/blenkernel/intern/CCGSubSurf.c
+++ b/source/blender/blenkernel/intern/CCGSubSurf.c
@@ -3,12 +3,15 @@
#include <stdlib.h>
#include <string.h>
#include <math.h>
-#include <float.h>
#include "CCGSubSurf.h"
#include "BLO_sys_types.h" // for intptr_t support
+/* used for normalize_v3 in BLI_math_vector
+ * float.h's FLT_EPSILON causes trouble with subsurf normals - campbell */
+#define EPSILON (1.0e-35f)
+
/***/
typedef unsigned char byte;
@@ -593,7 +596,7 @@ void _face_calcIFNo(CCGFace *f, int lvl, int S, int x, int y, float *no, int lev
length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
- if (length>FLT_EPSILON) {
+ if (length>EPSILON) {
float invLength = 1.f/length;
no[0] *= invLength;
@@ -1934,7 +1937,7 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) {
length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
- if (length>FLT_EPSILON) {
+ if (length>EPSILON) {
float invLength = 1.0f/length;
no[0] *= invLength;
no[1] *= invLength;
@@ -1993,7 +1996,7 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) {
float *no = FACE_getIFNo(f, lvl, S, x, y);
float length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
- if (length>FLT_EPSILON) {
+ if (length>EPSILON) {
float invLength = 1.0f/length;
no[0] *= invLength;
no[1] *= invLength;
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 11e58203bb3..209e4610c6a 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -52,7 +52,7 @@
#include "DNA_space_types.h"
#include "DNA_particle_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_edgehash.h"
#include "BLI_editVert.h"
@@ -277,6 +277,26 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me)
*me = tmp;
}
+void DM_to_meshkey(DerivedMesh *dm, Mesh *me, KeyBlock *kb)
+{
+ int a, totvert = dm->getNumVerts(dm);
+ float *fp;
+ MVert *mvert;
+
+ if(totvert==0 || me->totvert==0 || me->totvert!=totvert) return;
+
+ if(kb->data) MEM_freeN(kb->data);
+ kb->data= MEM_callocN(me->key->elemsize*me->totvert, "kb->data");
+ kb->totelem= totvert;
+
+ fp= kb->data;
+ mvert=dm->getVertDataArray(dm, CD_MVERT);
+
+ for(a=0; a<kb->totelem; a++, fp+=3, mvert++) {
+ VECCOPY(fp, mvert->co);
+ }
+}
+
void DM_set_only_copy(DerivedMesh *dm, CustomDataMask mask)
{
CustomData_set_only_copy(&dm->vertData, mask);
@@ -619,20 +639,20 @@ static void emDM__calcFaceCent(EditFace *efa, float cent[3], float (*vertexCos)[
{
if (vertexCos) {
VECCOPY(cent, vertexCos[(int) efa->v1->tmp.l]);
- VecAddf(cent, cent, vertexCos[(int) efa->v2->tmp.l]);
- VecAddf(cent, cent, vertexCos[(int) efa->v3->tmp.l]);
- if (efa->v4) VecAddf(cent, cent, vertexCos[(int) efa->v4->tmp.l]);
+ add_v3_v3v3(cent, cent, vertexCos[(int) efa->v2->tmp.l]);
+ add_v3_v3v3(cent, cent, vertexCos[(int) efa->v3->tmp.l]);
+ if (efa->v4) add_v3_v3v3(cent, cent, vertexCos[(int) efa->v4->tmp.l]);
} else {
VECCOPY(cent, efa->v1->co);
- VecAddf(cent, cent, efa->v2->co);
- VecAddf(cent, cent, efa->v3->co);
- if (efa->v4) VecAddf(cent, cent, efa->v4->co);
+ add_v3_v3v3(cent, cent, efa->v2->co);
+ add_v3_v3v3(cent, cent, efa->v3->co);
+ if (efa->v4) add_v3_v3v3(cent, cent, efa->v4->co);
}
if (efa->v4) {
- VecMulf(cent, 0.25f);
+ mul_v3_fl(cent, 0.25f);
} else {
- VecMulf(cent, 0.33333333333f);
+ mul_v3_fl(cent, 0.33333333333f);
}
}
static void emDM_foreachMappedFaceCenter(DerivedMesh *dm, void (*func)(void *userData, int index, float *co, float *no), void *userData)
@@ -1498,25 +1518,25 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob,
if(efa->v4) {
float *v4 = vertexCos[(int) efa->v4->tmp.l];
- CalcNormFloat4(v1, v2, v3, v4, no);
- VecAddf(emdm->vertexNos[(int) efa->v4->tmp.l], emdm->vertexNos[(int) efa->v4->tmp.l], no);
+ normal_quad_v3( no,v1, v2, v3, v4);
+ add_v3_v3v3(emdm->vertexNos[(int) efa->v4->tmp.l], emdm->vertexNos[(int) efa->v4->tmp.l], no);
}
else {
- CalcNormFloat(v1, v2, v3, no);
+ normal_tri_v3( no,v1, v2, v3);
}
- VecAddf(emdm->vertexNos[(int) efa->v1->tmp.l], emdm->vertexNos[(int) efa->v1->tmp.l], no);
- VecAddf(emdm->vertexNos[(int) efa->v2->tmp.l], emdm->vertexNos[(int) efa->v2->tmp.l], no);
- VecAddf(emdm->vertexNos[(int) efa->v3->tmp.l], emdm->vertexNos[(int) efa->v3->tmp.l], no);
+ add_v3_v3v3(emdm->vertexNos[(int) efa->v1->tmp.l], emdm->vertexNos[(int) efa->v1->tmp.l], no);
+ add_v3_v3v3(emdm->vertexNos[(int) efa->v2->tmp.l], emdm->vertexNos[(int) efa->v2->tmp.l], no);
+ add_v3_v3v3(emdm->vertexNos[(int) efa->v3->tmp.l], emdm->vertexNos[(int) efa->v3->tmp.l], no);
}
for(i=0, eve= em->verts.first; eve; i++, eve=eve->next) {
float *no = emdm->vertexNos[i];
/* following Mesh convention; we use vertex coordinate itself
* for normal in this case */
- if (Normalize(no)==0.0) {
+ if (normalize_v3(no)==0.0) {
VECCOPY(no, vertexCos[i]);
- Normalize(no);
+ normalize_v3(no);
}
}
}
@@ -2482,7 +2502,7 @@ int editmesh_get_first_deform_matrices(Object *ob, EditMesh *em, float (**deform
defmats= MEM_callocN(sizeof(*defmats)*numVerts, "defmats");
for(a=0; a<numVerts; a++)
- Mat3One(defmats[a]);
+ unit_m3(defmats[a]);
}
mti->deformMatricesEM(md, ob, em, dm, deformedVerts, defmats,
@@ -2554,11 +2574,11 @@ void DM_add_tangent_layer(DerivedMesh *dm)
if (mf->v4) {
v4= &mvert[mf->v4];
- CalcNormFloat4(v4->co, v3->co, v2->co, v1->co, fno);
+ normal_quad_v3( fno,v4->co, v3->co, v2->co, v1->co);
}
else {
v4= NULL;
- CalcNormFloat(v3->co, v2->co, v1->co, fno);
+ normal_tri_v3( fno,v3->co, v2->co, v1->co);
}
if(mtface) {
@@ -2569,11 +2589,11 @@ void DM_add_tangent_layer(DerivedMesh *dm)
}
else {
uv1= uv[0]; uv2= uv[1]; uv3= uv[2]; uv4= uv[3];
- spheremap(orco[mf->v1][0], orco[mf->v1][1], orco[mf->v1][2], &uv[0][0], &uv[0][1]);
- spheremap(orco[mf->v2][0], orco[mf->v2][1], orco[mf->v2][2], &uv[1][0], &uv[1][1]);
- spheremap(orco[mf->v3][0], orco[mf->v3][1], orco[mf->v3][2], &uv[2][0], &uv[2][1]);
+ map_to_sphere( &uv[0][0], &uv[0][1],orco[mf->v1][0], orco[mf->v1][1], orco[mf->v1][2]);
+ map_to_sphere( &uv[1][0], &uv[1][1],orco[mf->v2][0], orco[mf->v2][1], orco[mf->v2][2]);
+ map_to_sphere( &uv[2][0], &uv[2][1],orco[mf->v3][0], orco[mf->v3][1], orco[mf->v3][2]);
if(v4)
- spheremap(orco[mf->v4][0], orco[mf->v4][1], orco[mf->v4][2], &uv[3][0], &uv[3][1]);
+ map_to_sphere( &uv[3][0], &uv[3][1],orco[mf->v4][0], orco[mf->v4][1], orco[mf->v4][2]);
}
tangent_from_uv(uv1, uv2, uv3, v1->co, v2->co, v3->co, fno, tang);
@@ -2603,11 +2623,11 @@ void DM_add_tangent_layer(DerivedMesh *dm)
}
else {
uv1= uv[0]; uv2= uv[1]; uv3= uv[2]; uv4= uv[3];
- spheremap(orco[mf->v1][0], orco[mf->v1][1], orco[mf->v1][2], &uv[0][0], &uv[0][1]);
- spheremap(orco[mf->v2][0], orco[mf->v2][1], orco[mf->v2][2], &uv[1][0], &uv[1][1]);
- spheremap(orco[mf->v3][0], orco[mf->v3][1], orco[mf->v3][2], &uv[2][0], &uv[2][1]);
+ map_to_sphere( &uv[0][0], &uv[0][1],orco[mf->v1][0], orco[mf->v1][1], orco[mf->v1][2]);
+ map_to_sphere( &uv[1][0], &uv[1][1],orco[mf->v2][0], orco[mf->v2][1], orco[mf->v2][2]);
+ map_to_sphere( &uv[2][0], &uv[2][1],orco[mf->v3][0], orco[mf->v3][1], orco[mf->v3][2]);
if(len==4)
- spheremap(orco[mf->v4][0], orco[mf->v4][1], orco[mf->v4][2], &uv[3][0], &uv[3][1]);
+ map_to_sphere( &uv[3][0], &uv[3][1],orco[mf->v4][0], orco[mf->v4][1], orco[mf->v4][2]);
}
mf_vi[0]= mf->v1;
@@ -2619,7 +2639,7 @@ void DM_add_tangent_layer(DerivedMesh *dm)
vtang= find_vertex_tangent(vtangents[mf_vi[j]], mtface ? tf->uv[j] : uv[j]);
VECCOPY(tangent[j], vtang);
- Normalize(tangent[j]);
+ normalize_v3(tangent[j]);
}
}
diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c
index 2505a3a70ac..ace1292f813 100644
--- a/source/blender/blenkernel/intern/action.c
+++ b/source/blender/blenkernel/intern/action.c
@@ -62,9 +62,11 @@
#include "BKE_main.h"
#include "BKE_object.h"
#include "BKE_utildefines.h"
+#include "BKE_idprop.h"
+
#include "BIK_api.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
@@ -151,7 +153,6 @@ void make_local_action(bAction *act)
}
}
-
void free_action (bAction *act)
{
/* sanity check */
@@ -453,7 +454,9 @@ bPoseChannel *verify_pose_channel(bPose* pose, const char* name)
chan->limitmax[0]= chan->limitmax[1]= chan->limitmax[2]= 180.0f;
chan->stiffness[0]= chan->stiffness[1]= chan->stiffness[2]= 0.0f;
chan->ikrotweight = chan->iklinweight = 0.0f;
- Mat4One(chan->constinv);
+ unit_m4(chan->constinv);
+
+ chan->protectflag = OB_LOCK_ROT4D; /* lock by components by default */
BLI_addtail(&pose->chanbase, chan);
@@ -516,17 +519,22 @@ void copy_pose (bPose **dst, bPose *src, int copycon)
outPose->ikdata = NULL;
outPose->ikparam = MEM_dupallocN(src->ikparam);
- // TODO: rename this argument...
- if (copycon) {
- for (pchan=outPose->chanbase.first; pchan; pchan=pchan->next) {
+ for (pchan=outPose->chanbase.first; pchan; pchan=pchan->next) {
+ // TODO: rename this argument...
+ if (copycon) {
copy_constraints(&listb, &pchan->constraints); // copy_constraints NULLs listb
pchan->constraints= listb;
pchan->path= NULL;
}
- /* for now, duplicate Bone Groups too when doing this */
- BLI_duplicatelist(&outPose->agroups, &src->agroups);
+ if(pchan->prop) {
+ pchan->prop= IDP_CopyProperty(pchan->prop);
+ }
}
+
+ /* for now, duplicate Bone Groups too when doing this */
+ if(copycon)
+ BLI_duplicatelist(&outPose->agroups, &src->agroups);
*dst=outPose;
}
@@ -564,16 +572,27 @@ void init_pose_ikparam(bPose *pose)
}
}
+void free_pose_channel(bPoseChannel *pchan)
+{
+ if (pchan->path)
+ MEM_freeN(pchan->path);
+
+ free_constraints(&pchan->constraints);
+
+ if(pchan->prop) {
+ IDP_FreeProperty(pchan->prop);
+ MEM_freeN(pchan->prop);
+ }
+}
+
void free_pose_channels(bPose *pose)
{
bPoseChannel *pchan;
if (pose->chanbase.first) {
- for (pchan = pose->chanbase.first; pchan; pchan=pchan->next){
- if (pchan->path)
- MEM_freeN(pchan->path);
- free_constraints(&pchan->constraints);
- }
+ for (pchan = pose->chanbase.first; pchan; pchan=pchan->next)
+ free_pose_channel(pchan);
+
BLI_freelistN(&pose->chanbase);
}
}
@@ -611,17 +630,59 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan
pchan->rotAngle= chan->rotAngle;
QUATCOPY(pchan->quat, chan->quat);
pchan->rotmode= chan->rotmode;
- Mat4CpyMat4(pchan->chan_mat, (float(*)[4])chan->chan_mat);
- Mat4CpyMat4(pchan->pose_mat, (float(*)[4])chan->pose_mat);
+ copy_m4_m4(pchan->chan_mat, (float(*)[4])chan->chan_mat);
+ copy_m4_m4(pchan->pose_mat, (float(*)[4])chan->pose_mat);
pchan->flag= chan->flag;
con= chan->constraints.first;
- for(pcon= pchan->constraints.first; pcon; pcon= pcon->next, con= con->next) {
+ for(pcon= pchan->constraints.first; pcon && con; pcon= pcon->next, con= con->next) {
pcon->enforce= con->enforce;
pcon->headtail= con->headtail;
}
}
+/* makes copies of internal data, unlike copy_pose_channel_data which only
+ * copies the pose state.
+ * hint: use when copying bones in editmode (on returned value from verify_pose_channel) */
+void duplicate_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *pchan_from)
+{
+ /* copy transform locks */
+ pchan->protectflag = pchan_from->protectflag;
+
+ /* copy rotation mode */
+ pchan->rotmode = pchan_from->rotmode;
+
+ /* copy bone group */
+ pchan->agrp_index= pchan_from->agrp_index;
+
+ /* ik (dof) settings */
+ pchan->ikflag = pchan_from->ikflag;
+ VECCOPY(pchan->limitmin, pchan_from->limitmin);
+ VECCOPY(pchan->limitmax, pchan_from->limitmax);
+ VECCOPY(pchan->stiffness, pchan_from->stiffness);
+ pchan->ikstretch= pchan_from->ikstretch;
+ pchan->ikrotweight= pchan_from->ikrotweight;
+ pchan->iklinweight= pchan_from->iklinweight;
+
+ /* constraints */
+ copy_constraints(&pchan->constraints, &pchan_from->constraints);
+
+ /* id-properties */
+ if(pchan->prop) {
+ /* unlikely but possible it exists */
+ IDP_FreeProperty(pchan->prop);
+ MEM_freeN(pchan->prop);
+ pchan->prop= NULL;
+ }
+ if(pchan_from->prop) {
+ pchan->prop= IDP_CopyProperty(pchan_from->prop);
+ }
+
+ /* custom shape */
+ pchan->custom= pchan_from->custom;
+}
+
+
/* checks for IK constraint, Spline IK, and also for Follow-Path constraint.
* can do more constraints flags later
*/
@@ -868,7 +929,7 @@ short action_get_item_transforms (bAction *act, Object *ob, bPoseChannel *pchan,
/* build PointerRNA from provided data to obtain the paths to use */
if (pchan)
- RNA_pointer_create((ID *)ob, &RNA_PoseChannel, pchan, &ptr);
+ RNA_pointer_create((ID *)ob, &RNA_PoseBone, pchan, &ptr);
else if (ob)
RNA_id_pointer_create((ID *)ob, &ptr);
else
@@ -1013,8 +1074,8 @@ void copy_pose_result(bPose *to, bPose *from)
for(pchanfrom= from->chanbase.first; pchanfrom; pchanfrom= pchanfrom->next) {
pchanto= get_pose_channel(to, pchanfrom->name);
if(pchanto) {
- Mat4CpyMat4(pchanto->pose_mat, pchanfrom->pose_mat);
- Mat4CpyMat4(pchanto->chan_mat, pchanfrom->chan_mat);
+ copy_m4_m4(pchanto->pose_mat, pchanfrom->pose_mat);
+ copy_m4_m4(pchanto->chan_mat, pchanfrom->chan_mat);
/* used for local constraints */
VECCOPY(pchanto->loc, pchanfrom->loc);
@@ -1024,7 +1085,10 @@ void copy_pose_result(bPose *to, bPose *from)
VECCOPY(pchanto->pose_head, pchanfrom->pose_head);
VECCOPY(pchanto->pose_tail, pchanfrom->pose_tail);
+
+ pchanto->rotmode= pchanfrom->rotmode;
pchanto->flag= pchanfrom->flag;
+ pchanto->protectflag= pchanfrom->protectflag;
}
}
}
@@ -1040,12 +1104,14 @@ void what_does_obaction (Scene *scene, Object *ob, Object *workob, bPose *pose,
clear_workob(workob);
/* init workob */
- Mat4CpyMat4(workob->obmat, ob->obmat);
- Mat4CpyMat4(workob->parentinv, ob->parentinv);
- Mat4CpyMat4(workob->constinv, ob->constinv);
+ copy_m4_m4(workob->obmat, ob->obmat);
+ copy_m4_m4(workob->parentinv, ob->parentinv);
+ copy_m4_m4(workob->constinv, ob->constinv);
workob->parent= ob->parent;
workob->track= ob->track;
-
+
+ workob->rotmode= ob->rotmode;
+
workob->trackflag= ob->trackflag;
workob->upflag= ob->upflag;
@@ -1109,7 +1175,7 @@ static void blend_pose_strides(bPose *dst, bPose *src, float srcweight, short mo
dstweight = 1.0F;
}
- VecLerpf(dst->stride_offset, dst->stride_offset, src->stride_offset, srcweight);
+ interp_v3_v3v3(dst->stride_offset, dst->stride_offset, src->stride_offset, srcweight);
}
@@ -1169,27 +1235,27 @@ static void blend_pose_offset_bone(bActionStrip *strip, bPose *dst, bPose *src,
execute_action_ipo(achan, &pchan);
/* store offset that moves src to location of pchan */
- VecSubf(vec, dpchan->loc, pchan.loc);
+ sub_v3_v3v3(vec, dpchan->loc, pchan.loc);
- Mat4Mul3Vecfl(dpchan->bone->arm_mat, vec);
+ mul_mat3_m4_v3(dpchan->bone->arm_mat, vec);
}
}
else {
/* store offset that moves src to location of dst */
- VecSubf(vec, dpchan->loc, spchan->loc);
- Mat4Mul3Vecfl(dpchan->bone->arm_mat, vec);
+ sub_v3_v3v3(vec, dpchan->loc, spchan->loc);
+ mul_mat3_m4_v3(dpchan->bone->arm_mat, vec);
}
/* if blending, we only add with factor scrweight */
- VecMulf(vec, srcweight);
+ mul_v3_fl(vec, srcweight);
- VecAddf(dst->cyclic_offset, dst->cyclic_offset, vec);
+ add_v3_v3v3(dst->cyclic_offset, dst->cyclic_offset, vec);
}
}
}
- VecAddf(dst->cyclic_offset, dst->cyclic_offset, src->cyclic_offset);
+ add_v3_v3v3(dst->cyclic_offset, dst->cyclic_offset, src->cyclic_offset);
}
/* added "sizecorr" here, to allow armatures to be scaled and still have striding.
@@ -1249,14 +1315,14 @@ static float stridechannel_frame(Object *ob, float sizecorr, bActionStrip *strip
if (pdistNewNormalized <= 1) {
// search for correction in positive path-direction
where_on_path(ob, pdistNewNormalized, vec2, dir); /* vec needs size 4 */
- VecSubf(stride_offset, vec2, vec1);
+ sub_v3_v3v3(stride_offset, vec2, vec1);
}
else {
// we reached the end of the path, search backwards instead
where_on_path(ob, (pathdist-pdist)/path->totdist, vec2, dir); /* vec needs size 4 */
- VecSubf(stride_offset, vec1, vec2);
+ sub_v3_v3v3(stride_offset, vec1, vec2);
}
- Mat4Mul3Vecfl(ob->obmat, stride_offset);
+ mul_mat3_m4_v3(ob->obmat, stride_offset);
return striptime;
}
}
@@ -1295,10 +1361,10 @@ static void cyclic_offs_bone(Object *ob, bPose *pose, bActionStrip *strip, float
}
if(foundvert) {
/* bring it into armature space */
- VecSubf(min, max, min);
+ sub_v3_v3v3(min, max, min);
bone= get_named_bone(ob->data, strip->offs_bone); /* weak */
if(bone) {
- Mat4Mul3Vecfl(bone->arm_mat, min);
+ mul_mat3_m4_v3(bone->arm_mat, min);
/* dominant motion, cyclic_offset was cleared in rest_pose */
if (strip->flag & (ACTSTRIP_CYCLIC_USEX | ACTSTRIP_CYCLIC_USEY | ACTSTRIP_CYCLIC_USEZ)) {
@@ -1549,7 +1615,7 @@ static void do_nla(Scene *scene, Object *ob, int blocktype)
}
else if(blocktype==ID_AR) {
/* apply stride offset to object */
- VecAddf(ob->obmat[3], ob->obmat[3], ob->pose->stride_offset);
+ add_v3_v3v3(ob->obmat[3], ob->obmat[3], ob->pose->stride_offset);
}
/* free */
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index 5cae2418e89..6b8b604cb94 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -35,7 +35,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "DNA_listBase.h"
@@ -134,11 +134,11 @@ void calc_curvepath(Object *ob)
for(a=0; a<tot; a++) {
fp++;
if(cycl && a==tot-1)
- VecSubf(xyz, bevpfirst->vec, bevp->vec);
+ sub_v3_v3v3(xyz, bevpfirst->vec, bevp->vec);
else
- VecSubf(xyz, (bevp+1)->vec, bevp->vec);
+ sub_v3_v3v3(xyz, (bevp+1)->vec, bevp->vec);
- *fp= *(fp-1)+VecLength(xyz);
+ *fp= *(fp-1)+len_v3(xyz);
bevp++;
}
@@ -176,11 +176,11 @@ void calc_curvepath(Object *ob)
fac1= fac2/fac1;
fac2= 1.0f-fac1;
- VecLerpf(pp->vec, bevp->vec, bevpn->vec, fac2);
+ interp_v3_v3v3(pp->vec, bevp->vec, bevpn->vec, fac2);
pp->vec[3]= fac1*bevp->alfa + fac2*bevpn->alfa;
pp->radius= fac1*bevp->radius + fac2*bevpn->radius;
- QuatInterpol(pp->quat, bevp->quat, bevpn->quat, fac2);
- NormalQuat(pp->quat);
+ interp_qt_qtqt(pp->quat, bevp->quat, bevpn->quat, fac2);
+ normalize_qt(pp->quat);
pp++;
}
@@ -250,17 +250,13 @@ int where_on_path(Object *ob, float ctime, float *vec, float *dir, float *quat,
/* note, commented out for follow constraint */
//if(cu->flag & CU_FOLLOW) {
-
+
key_curve_tangent_weights(1.0f-fac, data, KEY_BSPLINE);
-
- dir[0]= data[0]*p0->vec[0] + data[1]*p1->vec[0] + data[2]*p2->vec[0] + data[3]*p3->vec[0] ;
- dir[1]= data[0]*p0->vec[1] + data[1]*p1->vec[1] + data[2]*p2->vec[1] + data[3]*p3->vec[1] ;
- dir[2]= data[0]*p0->vec[2] + data[1]*p1->vec[2] + data[2]*p2->vec[2] + data[3]*p3->vec[2] ;
-
+
+ interp_v3_v3v3v3v3(dir, p0->vec, p1->vec, p2->vec, p3->vec, data);
+
/* make compatible with vectoquat */
- dir[0]= -dir[0];
- dir[1]= -dir[1];
- dir[2]= -dir[2];
+ negate_v3(dir);
//}
nu= cu->nurb.first;
@@ -284,20 +280,20 @@ int where_on_path(Object *ob, float ctime, float *vec, float *dir, float *quat,
* to more then one index in data which can give divide by zero error */
/*
totfac= data[0]+data[1];
- if(totfac>0.000001) QuatInterpol(q1, p0->quat, p1->quat, data[0] / totfac);
+ if(totfac>0.000001) interp_qt_qtqt(q1, p0->quat, p1->quat, data[0] / totfac);
else QUATCOPY(q1, p1->quat);
- NormalQuat(q1);
+ normalize_qt(q1);
totfac= data[2]+data[3];
- if(totfac>0.000001) QuatInterpol(q2, p2->quat, p3->quat, data[2] / totfac);
+ if(totfac>0.000001) interp_qt_qtqt(q2, p2->quat, p3->quat, data[2] / totfac);
else QUATCOPY(q1, p3->quat);
- NormalQuat(q2);
+ normalize_qt(q2);
totfac = data[0]+data[1]+data[2]+data[3];
- if(totfac>0.000001) QuatInterpol(quat, q1, q2, (data[0]+data[1]) / totfac);
+ if(totfac>0.000001) interp_qt_qtqt(quat, q1, q2, (data[0]+data[1]) / totfac);
else QUATCOPY(quat, q2);
- NormalQuat(quat);
+ normalize_qt(quat);
*/
// XXX - find some way to make quat interpolation work correctly, above code fails in rare but nasty cases.
QUATCOPY(quat, p1->quat);
@@ -317,8 +313,8 @@ static DupliObject *new_dupli_object(ListBase *lb, Object *ob, float mat[][4], i
BLI_addtail(lb, dob);
dob->ob= ob;
- Mat4CpyMat4(dob->mat, mat);
- Mat4CpyMat4(dob->omat, ob->obmat);
+ copy_m4_m4(dob->mat, mat);
+ copy_m4_m4(dob->omat, ob->obmat);
dob->origlay= ob->lay;
dob->index= index;
dob->type= type;
@@ -352,20 +348,20 @@ static void group_duplilist(ListBase *lb, Scene *scene, Object *ob, int level, i
/* Group Dupli Offset, should apply after everything else */
if (group->dupli_ofs[0] || group->dupli_ofs[1] || group->dupli_ofs[2]) {
- Mat4CpyMat4(tmat, go->ob->obmat);
- VecSubf(tmat[3], tmat[3], group->dupli_ofs);
- Mat4MulMat4(mat, tmat, ob->obmat);
+ copy_m4_m4(tmat, go->ob->obmat);
+ sub_v3_v3v3(tmat[3], tmat[3], group->dupli_ofs);
+ mul_m4_m4m4(mat, tmat, ob->obmat);
} else {
- Mat4MulMat4(mat, go->ob->obmat, ob->obmat);
+ mul_m4_m4m4(mat, go->ob->obmat, ob->obmat);
}
dob= new_dupli_object(lb, go->ob, mat, ob->lay, 0, OB_DUPLIGROUP, animated);
dob->no_draw= (dob->origlay & group->layer)==0;
if(go->ob->transflag & OB_DUPLI) {
- Mat4CpyMat4(dob->ob->obmat, dob->mat);
+ copy_m4_m4(dob->ob->obmat, dob->mat);
object_duplilist_recursive((ID *)group, scene, go->ob, lb, ob->obmat, level+1, animated);
- Mat4CpyMat4(dob->ob->obmat, dob->omat);
+ copy_m4_m4(dob->ob->obmat, dob->omat);
}
}
}
@@ -402,7 +398,7 @@ static void frames_duplilist(ListBase *lb, Scene *scene, Object *ob, int level,
#endif // XXX old animation system
where_is_object_time(scene, ob, (float)scene->r.cfra);
dob= new_dupli_object(lb, ob, ob->obmat, ob->lay, scene->r.cfra, OB_DUPLIFRAMES, animated);
- Mat4CpyMat4(dob->omat, copyob.obmat);
+ copy_m4_m4(dob->omat, copyob.obmat);
}
}
@@ -430,11 +426,11 @@ static void vertex_dupli__mapFunc(void *userData, int index, float *co, float *n
float vec[3], q2[4], mat[3][3], tmat[4][4], obmat[4][4];
VECCOPY(vec, co);
- Mat4MulVecfl(vdd->pmat, vec);
- VecSubf(vec, vec, vdd->pmat[3]);
- VecAddf(vec, vec, vdd->obmat[3]);
+ mul_m4_v3(vdd->pmat, vec);
+ sub_v3_v3v3(vec, vec, vdd->pmat[3]);
+ add_v3_v3v3(vec, vec, vdd->obmat[3]);
- Mat4CpyMat4(obmat, vdd->obmat);
+ copy_m4_m4(obmat, vdd->obmat);
VECCOPY(obmat[3], vec);
if(vdd->par->transflag & OB_DUPLIROT) {
@@ -445,11 +441,11 @@ static void vertex_dupli__mapFunc(void *userData, int index, float *co, float *n
vec[0]= -no_s[0]; vec[1]= -no_s[1]; vec[2]= -no_s[2];
}
- vectoquat(vec, vdd->ob->trackflag, vdd->ob->upflag, q2);
+ vec_to_quat( q2,vec, vdd->ob->trackflag, vdd->ob->upflag);
- QuatToMat3(q2, mat);
- Mat4CpyMat4(tmat, obmat);
- Mat4MulMat43(obmat, tmat, mat);
+ quat_to_mat3( mat,q2);
+ copy_m4_m4(tmat, obmat);
+ mul_m4_m4m3(obmat, tmat, mat);
}
dob= new_dupli_object(vdd->lb, vdd->ob, obmat, vdd->par->lay, index, OB_DUPLIVERTS, vdd->animated);
if(vdd->orco)
@@ -457,10 +453,10 @@ static void vertex_dupli__mapFunc(void *userData, int index, float *co, float *n
if(vdd->ob->transflag & OB_DUPLI) {
float tmpmat[4][4];
- Mat4CpyMat4(tmpmat, vdd->ob->obmat);
- Mat4CpyMat4(vdd->ob->obmat, obmat); /* pretend we are really this mat */
+ copy_m4_m4(tmpmat, vdd->ob->obmat);
+ copy_m4_m4(vdd->ob->obmat, obmat); /* pretend we are really this mat */
object_duplilist_recursive((ID *)vdd->id, vdd->scene, vdd->ob, vdd->lb, obmat, vdd->level+1, vdd->animated);
- Mat4CpyMat4(vdd->ob->obmat, tmpmat);
+ copy_m4_m4(vdd->ob->obmat, tmpmat);
}
}
@@ -478,7 +474,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl
float vec[3], no[3], pmat[4][4];
int lay, totvert, a, oblay;
- Mat4CpyMat4(pmat, par->obmat);
+ copy_m4_m4(pmat, par->obmat);
/* simple preventing of too deep nested groups */
if(level>MAX_DUPLI_RECUR) return;
@@ -533,9 +529,9 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl
when par_space_mat is NULL ob->obmat can be used instead of ob__obmat
*/
if(par_space_mat)
- Mat4MulMat4(vdd.obmat, ob->obmat, par_space_mat);
+ mul_m4_m4m4(vdd.obmat, ob->obmat, par_space_mat);
else
- Mat4CpyMat4(vdd.obmat, ob->obmat);
+ copy_m4_m4(vdd.obmat, ob->obmat);
vdd.id= id;
vdd.level= level;
@@ -544,7 +540,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl
vdd.ob= ob;
vdd.scene= scene;
vdd.par= par;
- Mat4CpyMat4(vdd.pmat, pmat);
+ copy_m4_m4(vdd.pmat, pmat);
/* mballs have a different dupli handling */
if(ob->type!=OB_MBALL) ob->flag |= OB_DONE; /* doesnt render */
@@ -596,7 +592,7 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
/* simple preventing of too deep nested groups */
if(level>MAX_DUPLI_RECUR) return;
- Mat4CpyMat4(pmat, par->obmat);
+ copy_m4_m4(pmat, par->obmat);
em = BKE_mesh_get_editmesh(me);
if(em) {
@@ -664,11 +660,11 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
when par_space_mat is NULL ob->obmat can be used instead of ob__obmat
*/
if(par_space_mat)
- Mat4MulMat4(ob__obmat, ob->obmat, par_space_mat);
+ mul_m4_m4m4(ob__obmat, ob->obmat, par_space_mat);
else
- Mat4CpyMat4(ob__obmat, ob->obmat);
+ copy_m4_m4(ob__obmat, ob->obmat);
- Mat3CpyMat4(imat, ob->parentinv);
+ copy_m3_m4(imat, ob->parentinv);
/* mballs have a different dupli handling */
if(ob->type!=OB_MBALL) ob->flag |= OB_DONE; /* doesnt render */
@@ -686,34 +682,34 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
/* translation */
if(v4)
- CalcCent4f(cent, v1, v2, v3, v4);
+ cent_quad_v3(cent, v1, v2, v3, v4);
else
- CalcCent3f(cent, v1, v2, v3);
- Mat4MulVecfl(pmat, cent);
+ cent_tri_v3(cent, v1, v2, v3);
+ mul_m4_v3(pmat, cent);
- VecSubf(cent, cent, pmat[3]);
- VecAddf(cent, cent, ob__obmat[3]);
+ sub_v3_v3v3(cent, cent, pmat[3]);
+ add_v3_v3v3(cent, cent, ob__obmat[3]);
- Mat4CpyMat4(obmat, ob__obmat);
+ copy_m4_m4(obmat, ob__obmat);
VECCOPY(obmat[3], cent);
/* rotation */
- triatoquat(v1, v2, v3, quat);
- QuatToMat3(quat, mat);
+ tri_to_quat( quat,v1, v2, v3);
+ quat_to_mat3( mat,quat);
/* scale */
if(par->transflag & OB_DUPLIFACES_SCALE) {
- float size= v4?AreaQ3Dfl(v1, v2, v3, v4):AreaT3Dfl(v1, v2, v3);
+ float size= v4? area_quad_v3(v1, v2, v3, v4): area_tri_v3(v1, v2, v3);
size= sqrt(size) * par->dupfacesca;
- Mat3MulFloat(mat[0], size);
+ mul_m3_fl(mat, size);
}
- Mat3CpyMat3(mat3, mat);
- Mat3MulMat3(mat, imat, mat3);
+ copy_m3_m3(mat3, mat);
+ mul_m3_m3m3(mat, imat, mat3);
- Mat4CpyMat4(tmat, obmat);
- Mat4MulMat43(obmat, tmat, mat);
+ copy_m4_m4(tmat, obmat);
+ mul_m4_m4m3(obmat, tmat, mat);
dob= new_dupli_object(lb, ob, obmat, lay, a, OB_DUPLIFACES, animated);
if(G.rendering) {
@@ -744,10 +740,10 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
if(ob->transflag & OB_DUPLI) {
float tmpmat[4][4];
- Mat4CpyMat4(tmpmat, ob->obmat);
- Mat4CpyMat4(ob->obmat, obmat); /* pretend we are really this mat */
+ copy_m4_m4(tmpmat, ob->obmat);
+ copy_m4_m4(ob->obmat, obmat); /* pretend we are really this mat */
object_duplilist_recursive((ID *)id, scene, ob, lb, ob->obmat, level+1, animated);
- Mat4CpyMat4(ob->obmat, tmpmat);
+ copy_m4_m4(ob->obmat, tmpmat);
}
}
@@ -935,22 +931,22 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
if(psys_get_particle_state(&sim, a, &state, 0) == 0)
continue;
- QuatToMat4(state.rot, pamat);
+ quat_to_mat4( pamat,state.rot);
VECCOPY(pamat[3], state.co);
pamat[3][3]= 1.0f;
}
if(part->ren_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
for(go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) {
- Mat4MulMat4(tmat, oblist[b]->obmat, pamat);
- Mat4MulFloat3((float *)tmat, size*scale);
+ mul_m4_m4m4(tmat, oblist[b]->obmat, pamat);
+ mul_mat3_m4_fl(tmat, size*scale);
if(par_space_mat)
- Mat4MulMat4(mat, tmat, par_space_mat);
+ mul_m4_m4m4(mat, tmat, par_space_mat);
else
- Mat4CpyMat4(mat, tmat);
+ copy_m4_m4(mat, tmat);
dob= new_dupli_object(lb, go->ob, mat, par->lay, counter, OB_DUPLIPARTS, animated);
- Mat4CpyMat4(dob->omat, obcopylist[b].obmat);
+ copy_m4_m4(dob->omat, obcopylist[b].obmat);
if(G.rendering)
psys_get_dupli_texture(par, part, sim.psmd, pa, cpa, dob->uv, dob->orco);
}
@@ -962,21 +958,21 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
VECCOPY(vec, obmat[3]);
obmat[3][0] = obmat[3][1] = obmat[3][2] = 0.0f;
- Mat4CpyMat4(mat, pamat);
+ copy_m4_m4(mat, pamat);
- Mat4MulMat4(tmat, obmat, mat);
- Mat4MulFloat3((float *)tmat, size*scale);
+ mul_m4_m4m4(tmat, obmat, mat);
+ mul_mat3_m4_fl(tmat, size*scale);
if(part->draw & PART_DRAW_GLOBAL_OB)
VECADD(tmat[3], tmat[3], vec);
if(par_space_mat)
- Mat4MulMat4(mat, tmat, par_space_mat);
+ mul_m4_m4m4(mat, tmat, par_space_mat);
else
- Mat4CpyMat4(mat, tmat);
+ copy_m4_m4(mat, tmat);
dob= new_dupli_object(lb, ob, mat, ob->lay, counter, OB_DUPLIPARTS, animated);
- Mat4CpyMat4(dob->omat, oldobmat);
+ copy_m4_m4(dob->omat, oldobmat);
if(G.rendering)
psys_get_dupli_texture(par, part, sim.psmd, pa, cpa, dob->uv, dob->orco);
}
@@ -1037,7 +1033,7 @@ static void font_duplilist(ListBase *lb, Scene *scene, Object *par, int level, i
/* simple preventing of too deep nested groups */
if(level>MAX_DUPLI_RECUR) return;
- Mat4CpyMat4(pmat, par->obmat);
+ copy_m4_m4(pmat, par->obmat);
/* in par the family name is stored, use this to find the other objects */
@@ -1062,9 +1058,9 @@ static void font_duplilist(ListBase *lb, Scene *scene, Object *par, int level, i
vec[1]= fsize*(ct->yof - yof);
vec[2]= 0.0;
- Mat4MulVecfl(pmat, vec);
+ mul_m4_v3(pmat, vec);
- Mat4CpyMat4(obmat, par->obmat);
+ copy_m4_m4(obmat, par->obmat);
VECCOPY(obmat[3], vec);
new_dupli_object(lb, ob, obmat, par->lay, a, OB_DUPLIVERTS, animated);
@@ -1122,7 +1118,7 @@ static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBas
if (level==0) {
for(dob= duplilist->first; dob; dob= dob->next)
if(dob->type == OB_DUPLIGROUP)
- Mat4CpyMat4(dob->ob->obmat, dob->mat);
+ copy_m4_m4(dob->ob->obmat, dob->mat);
}
}
}
@@ -1143,7 +1139,7 @@ void free_object_duplilist(ListBase *lb)
for(dob= lb->first; dob; dob= dob->next) {
dob->ob->lay= dob->origlay;
- Mat4CpyMat4(dob->ob->obmat, dob->omat);
+ copy_m4_m4(dob->ob->obmat, dob->omat);
}
BLI_freelistN(lb);
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 61e754ffbec..a6f733708c7 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "DNA_anim_types.h"
@@ -353,7 +353,7 @@ static void nlastrips_path_rename_fix (ID *owner_id, char *prefix, char *oldName
/* Fix all RNA-Paths in the AnimData block used by the given ID block
* NOTE: it is assumed that the structure we're replacing is <prefix><["><name><"]>
- * i.e. pose.pose_channels["Bone"]
+ * i.e. pose.bones["Bone"]
*/
void BKE_animdata_fix_paths_rename (ID *owner_id, AnimData *adt, char *prefix, char *oldName, char *newName)
{
@@ -388,7 +388,7 @@ void BKE_animdata_fix_paths_rename (ID *owner_id, AnimData *adt, char *prefix, c
/* Fix all RNA-Paths throughout the database (directly access the Global.main version)
* NOTE: it is assumed that the structure we're replacing is <prefix><["><name><"]>
- * i.e. pose.pose_channels["Bone"]
+ * i.e. pose.bones["Bone"]
*/
void BKE_all_animdata_fix_paths_rename (char *prefix, char *oldName, char *newName)
{
@@ -697,20 +697,26 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i
switch (RNA_property_type(prop))
{
case PROP_BOOLEAN:
- if (RNA_property_array_length(&new_ptr, prop))
- RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(&new_ptr, prop)) {
+ if (RNA_property_editable_index(&new_ptr, prop, array_index))
+ RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value);
+ }
else
RNA_property_boolean_set(&new_ptr, prop, (int)value);
break;
case PROP_INT:
- if (RNA_property_array_length(&new_ptr, prop))
- RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(&new_ptr, prop)){
+ if (RNA_property_editable_index(&new_ptr, prop, array_index))
+ RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value);
+ }
else
RNA_property_int_set(&new_ptr, prop, (int)value);
break;
case PROP_FLOAT:
- if (RNA_property_array_length(&new_ptr, prop))
- RNA_property_float_set_index(&new_ptr, prop, array_index, value);
+ if (RNA_property_array_length(&new_ptr, prop)) {
+ if (RNA_property_editable_index(&new_ptr, prop, array_index))
+ RNA_property_float_set_index(&new_ptr, prop, array_index, value);
+ }
else
RNA_property_float_set(&new_ptr, prop, value);
break;
@@ -1434,20 +1440,26 @@ void nladata_flush_channels (ListBase *channels)
switch (RNA_property_type(prop))
{
case PROP_BOOLEAN:
- if (RNA_property_array_length(ptr, prop))
- RNA_property_boolean_set_index(ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(ptr, prop)) {
+ if (RNA_property_editable_index(ptr, prop, array_index))
+ RNA_property_boolean_set_index(ptr, prop, array_index, (int)value);
+ }
else
RNA_property_boolean_set(ptr, prop, (int)value);
break;
case PROP_INT:
- if (RNA_property_array_length(ptr, prop))
- RNA_property_int_set_index(ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(ptr, prop)) {
+ if (RNA_property_editable_index(ptr, prop, array_index))
+ RNA_property_int_set_index(ptr, prop, array_index, (int)value);
+ }
else
RNA_property_int_set(ptr, prop, (int)value);
break;
case PROP_FLOAT:
- if (RNA_property_array_length(ptr, prop))
- RNA_property_float_set_index(ptr, prop, array_index, value);
+ if (RNA_property_array_length(ptr, prop)) {
+ if (RNA_property_editable_index(ptr, prop, array_index))
+ RNA_property_float_set_index(ptr, prop, array_index, value);
+ }
else
RNA_property_float_set(ptr, prop, value);
break;
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 25151714569..418c9f00596 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -34,9 +34,10 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
+#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
@@ -49,6 +50,7 @@
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
+#include "BKE_animsys.h"
#include "BKE_armature.h"
#include "BKE_action.h"
#include "BKE_anim.h"
@@ -127,6 +129,12 @@ void free_armature(bArmature *arm)
freeSketch(arm->sketch);
arm->sketch = NULL;
}
+
+ /* free animation data */
+ if (arm->adt) {
+ BKE_free_animdata(&arm->id);
+ arm->adt= NULL;
+ }
}
}
@@ -482,7 +490,7 @@ static void equalize_bezier(float *data, int desired)
pdist[0]= 0.0f;
for(a=0, fp= data; a<MAX_BBONE_SUBDIV; a++, fp+=4) {
QUATCOPY(temp[a], fp);
- pdist[a+1]= pdist[a]+VecLenf(fp, fp+4);
+ pdist[a+1]= pdist[a]+len_v3v3(fp, fp+4);
}
/* do last point */
QUATCOPY(temp[a], fp);
@@ -532,16 +540,16 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest)
if(!rest) {
/* check if we need to take non-uniform bone scaling into account */
- scale[0]= VecLength(pchan->pose_mat[0]);
- scale[1]= VecLength(pchan->pose_mat[1]);
- scale[2]= VecLength(pchan->pose_mat[2]);
+ scale[0]= len_v3(pchan->pose_mat[0]);
+ scale[1]= len_v3(pchan->pose_mat[1]);
+ scale[2]= len_v3(pchan->pose_mat[2]);
if(fabs(scale[0] - scale[1]) > 1e-6f || fabs(scale[1] - scale[2]) > 1e-6f) {
- Mat4One(scalemat);
+ unit_m4(scalemat);
scalemat[0][0]= scale[0];
scalemat[1][1]= scale[1];
scalemat[2][2]= scale[2];
- Mat4Invert(iscalemat, scalemat);
+ invert_m4_m4(iscalemat, scalemat);
length *= scale[1];
doscale = 1;
@@ -564,15 +572,15 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest)
last point = (0, length, 0) */
if(rest) {
- Mat4Invert(imat, pchan->bone->arm_mat);
+ invert_m4_m4(imat, pchan->bone->arm_mat);
}
else if(doscale) {
- Mat4CpyMat4(posemat, pchan->pose_mat);
- Mat4Ortho(posemat);
- Mat4Invert(imat, posemat);
+ copy_m4_m4(posemat, pchan->pose_mat);
+ normalize_m4(posemat);
+ invert_m4_m4(imat, posemat);
}
else
- Mat4Invert(imat, pchan->pose_mat);
+ invert_m4_m4(imat, pchan->pose_mat);
if(prev) {
float difmat[4][4], result[3][3], imat3[3][3];
@@ -582,7 +590,7 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest)
VECCOPY(h1, prev->bone->arm_head)
else
VECCOPY(h1, prev->pose_head)
- Mat4MulVecfl(imat, h1);
+ mul_m4_v3(imat, h1);
if(prev->bone->segments>1) {
/* if previous bone is B-bone too, use average handle direction */
@@ -590,21 +598,21 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest)
roll1= 0.0f;
}
- Normalize(h1);
- VecMulf(h1, -hlength1);
+ normalize_v3(h1);
+ mul_v3_fl(h1, -hlength1);
if(prev->bone->segments==1) {
/* find the previous roll to interpolate */
if(rest)
- Mat4MulMat4(difmat, prev->bone->arm_mat, imat);
+ mul_m4_m4m4(difmat, prev->bone->arm_mat, imat);
else
- Mat4MulMat4(difmat, prev->pose_mat, imat);
- Mat3CpyMat4(result, difmat); // the desired rotation at beginning of next bone
+ mul_m4_m4m4(difmat, prev->pose_mat, imat);
+ copy_m3_m4(result, difmat); // the desired rotation at beginning of next bone
vec_roll_to_mat3(h1, 0.0f, mat3); // the result of vec_roll without roll
- Mat3Inv(imat3, mat3);
- Mat3MulMat3(mat3, result, imat3); // the matrix transforming vec_roll to desired roll
+ invert_m3_m3(imat3, mat3);
+ mul_m3_m3m3(mat3, result, imat3); // the matrix transforming vec_roll to desired roll
roll1= (float)atan2(mat3[2][0], mat3[2][2]);
}
@@ -621,28 +629,28 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest)
VECCOPY(h2, next->bone->arm_tail)
else
VECCOPY(h2, next->pose_tail)
- Mat4MulVecfl(imat, h2);
+ mul_m4_v3(imat, h2);
/* if next bone is B-bone too, use average handle direction */
if(next->bone->segments>1);
else h2[1]-= length;
- Normalize(h2);
+ normalize_v3(h2);
/* find the next roll to interpolate as well */
if(rest)
- Mat4MulMat4(difmat, next->bone->arm_mat, imat);
+ mul_m4_m4m4(difmat, next->bone->arm_mat, imat);
else
- Mat4MulMat4(difmat, next->pose_mat, imat);
- Mat3CpyMat4(result, difmat); // the desired rotation at beginning of next bone
+ mul_m4_m4m4(difmat, next->pose_mat, imat);
+ copy_m3_m4(result, difmat); // the desired rotation at beginning of next bone
vec_roll_to_mat3(h2, 0.0f, mat3); // the result of vec_roll without roll
- Mat3Inv(imat3, mat3);
- Mat3MulMat3(mat3, imat3, result); // the matrix transforming vec_roll to desired roll
+ invert_m3_m3(imat3, mat3);
+ mul_m3_m3m3(mat3, imat3, result); // the matrix transforming vec_roll to desired roll
roll2= (float)atan2(mat3[2][0], mat3[2][2]);
/* and only now negate handle */
- VecMulf(h2, -hlength2);
+ mul_v3_fl(h2, -hlength2);
}
else {
h2[0]= 0.0f; h2[1]= -hlength2; h2[2]= 0.0f;
@@ -662,15 +670,15 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest)
/* make transformation matrices for the segments for drawing */
for(a=0, fp= data[0]; a<bone->segments; a++, fp+=4) {
- VecSubf(h1, fp+4, fp);
+ sub_v3_v3v3(h1, fp+4, fp);
vec_roll_to_mat3(h1, fp[3], mat3); // fp[3] is roll
- Mat4CpyMat3(result_array[a].mat, mat3);
+ copy_m4_m3(result_array[a].mat, mat3);
VECCOPY(result_array[a].mat[3], fp);
if(doscale) {
/* correct for scaling when this matrix is used in scaled space */
- Mat4MulSerie(result_array[a].mat, iscalemat, result_array[a].mat,
+ mul_serie_m4(result_array[a].mat, iscalemat, result_array[a].mat,
scalemat, NULL, NULL, NULL, NULL, NULL);
}
}
@@ -701,26 +709,26 @@ static void pchan_b_bone_defmats(bPoseChannel *pchan, int use_quaternion, int re
/* first matrix is the inverse arm_mat, to bring points in local bone space
for finding out which segment it belongs to */
- Mat4Invert(b_bone_mats[0].mat, bone->arm_mat);
+ invert_m4_m4(b_bone_mats[0].mat, bone->arm_mat);
/* then we make the b_bone_mats:
- first transform to local bone space
- translate over the curve to the bbone mat space
- transform with b_bone matrix
- transform back into global space */
- Mat4One(tmat);
+ unit_m4(tmat);
for(a=0; a<bone->segments; a++) {
if(b_bone_rest)
- Mat4Invert(tmat, b_bone_rest[a].mat);
+ invert_m4_m4(tmat, b_bone_rest[a].mat);
else
tmat[3][1] = -a*(bone->length/(float)bone->segments);
- Mat4MulSerie(b_bone_mats[a+1].mat, pchan->chan_mat, bone->arm_mat,
+ mul_serie_m4(b_bone_mats[a+1].mat, pchan->chan_mat, bone->arm_mat,
b_bone[a].mat, tmat, b_bone_mats[0].mat, NULL, NULL, NULL);
if(use_quaternion)
- Mat4ToDQuat(bone->arm_mat, b_bone_mats[a+1].mat, &b_bone_dual_quats[a]);
+ mat4_to_dquat( &b_bone_dual_quats[a],bone->arm_mat, b_bone_mats[a+1].mat);
}
}
@@ -743,13 +751,13 @@ static void b_bone_deform(bPoseChannel *pchan, Bone *bone, float *co, DualQuat *
CLAMP(a, 0, bone->segments-1);
if(dq) {
- DQuatCpyDQuat(dq, &((DualQuat*)pchan->b_bone_dual_quats)[a]);
+ copy_dq_dq(dq, &((DualQuat*)pchan->b_bone_dual_quats)[a]);
}
else {
- Mat4MulVecfl(b_bone[a+1].mat, co);
+ mul_m4_v3(b_bone[a+1].mat, co);
if(defmat)
- Mat3CpyMat4(defmat, b_bone[a+1].mat);
+ copy_m3_m4(defmat, b_bone[a+1].mat);
}
}
@@ -761,10 +769,10 @@ float distfactor_to_bone (float vec[3], float b1[3], float b2[3], float rad1, fl
float pdelta[3];
float hsqr, a, l, rad;
- VecSubf (bdelta, b2, b1);
- l = Normalize (bdelta);
+ sub_v3_v3v3(bdelta, b2, b1);
+ l = normalize_v3(bdelta);
- VecSubf (pdelta, vec, b1);
+ sub_v3_v3v3(pdelta, vec, b1);
a = bdelta[0]*pdelta[0] + bdelta[1]*pdelta[1] + bdelta[2]*pdelta[2];
hsqr = ((pdelta[0]*pdelta[0]) + (pdelta[1]*pdelta[1]) + (pdelta[2]*pdelta[2]));
@@ -809,12 +817,12 @@ static void pchan_deform_mat_add(bPoseChannel *pchan, float weight, float bbonem
float wmat[3][3];
if(pchan->bone->segments>1)
- Mat3CpyMat3(wmat, bbonemat);
+ copy_m3_m3(wmat, bbonemat);
else
- Mat3CpyMat4(wmat, pchan->chan_mat);
+ copy_m3_m4(wmat, pchan->chan_mat);
- Mat3MulFloat((float*)wmat, weight);
- Mat3AddMat3(mat, mat, wmat);
+ mul_m3_fl(wmat, weight);
+ add_m3_m3m3(mat, mat, wmat);
}
static float dist_bone_deform(bPoseChannel *pchan, float *vec, DualQuat *dq, float mat[][3], float *co)
@@ -840,12 +848,12 @@ static float dist_bone_deform(bPoseChannel *pchan, float *vec, DualQuat *dq, flo
// applies on cop and bbonemat
b_bone_deform(pchan, bone, cop, NULL, (mat)?bbonemat:NULL);
else
- Mat4MulVecfl(pchan->chan_mat, cop);
+ mul_m4_v3(pchan->chan_mat, cop);
// Make this a delta from the base position
- VecSubf (cop, cop, co);
+ sub_v3_v3v3(cop, cop, co);
cop[0]*=fac; cop[1]*=fac; cop[2]*=fac;
- VecAddf (vec, vec, cop);
+ add_v3_v3v3(vec, vec, cop);
if(mat)
pchan_deform_mat_add(pchan, fac, bbonemat, mat);
@@ -853,10 +861,10 @@ static float dist_bone_deform(bPoseChannel *pchan, float *vec, DualQuat *dq, flo
else {
if(bone->segments>1) {
b_bone_deform(pchan, bone, cop, &bbonedq, NULL);
- DQuatAddWeighted(dq, &bbonedq, fac);
+ add_weighted_dq_dq(dq, &bbonedq, fac);
}
else
- DQuatAddWeighted(dq, pchan->dual_quat, fac);
+ add_weighted_dq_dq(dq, pchan->dual_quat, fac);
}
}
}
@@ -879,7 +887,7 @@ static void pchan_bone_deform(bPoseChannel *pchan, float weight, float *vec, Dua
// applies on cop and bbonemat
b_bone_deform(pchan, pchan->bone, cop, NULL, (mat)?bbonemat:NULL);
else
- Mat4MulVecfl(pchan->chan_mat, cop);
+ mul_m4_v3(pchan->chan_mat, cop);
vec[0]+=(cop[0]-co[0])*weight;
vec[1]+=(cop[1]-co[1])*weight;
@@ -891,10 +899,10 @@ static void pchan_bone_deform(bPoseChannel *pchan, float weight, float *vec, Dua
else {
if(pchan->bone->segments>1) {
b_bone_deform(pchan, pchan->bone, cop, &bbonedq, NULL);
- DQuatAddWeighted(dq, &bbonedq, weight);
+ add_weighted_dq_dq(dq, &bbonedq, weight);
}
else
- DQuatAddWeighted(dq, pchan->dual_quat, weight);
+ add_weighted_dq_dq(dq, pchan->dual_quat, weight);
}
(*contrib)+=weight;
@@ -923,10 +931,10 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm,
if(arm->edbo) return;
- Mat4Invert(obinv, target->obmat);
- Mat4CpyMat4(premat, target->obmat);
- Mat4MulMat4(postmat, armOb->obmat, obinv);
- Mat4Invert(premat, postmat);
+ invert_m4_m4(obinv, target->obmat);
+ copy_m4_m4(premat, target->obmat);
+ mul_m4_m4m4(postmat, armOb->obmat, obinv);
+ invert_m4_m4(premat, postmat);
/* bone defmats are already in the channels, chan_mat */
@@ -944,7 +952,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm,
if(use_quaternion) {
pchan->dual_quat= &dualquats[totchan++];
- Mat4ToDQuat(pchan->bone->arm_mat, pchan->chan_mat, pchan->dual_quat);
+ mat4_to_dquat( pchan->dual_quat,pchan->bone->arm_mat, pchan->chan_mat);
}
}
}
@@ -1013,7 +1021,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm,
vec= sumvec;
if(defMats) {
- Mat3Clr((float*)summat);
+ zero_m3(summat);
smat = summat;
}
}
@@ -1050,7 +1058,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm,
co= prevCos?prevCos[i]:vertexCos[i];
/* Apply the object's matrix */
- Mat4MulVecfl(premat, co);
+ mul_m4_v3(premat, co);
if(use_dverts && dvert && dvert->totweight) { // use weight groups ?
int deformed = 0;
@@ -1096,42 +1104,42 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm,
/* actually should be EPSILON? weight values and contrib can be like 10e-39 small */
if(contrib > 0.0001f) {
if(use_quaternion) {
- DQuatNormalize(dq, contrib);
+ normalize_dq(dq, contrib);
if(armature_weight != 1.0f) {
VECCOPY(dco, co);
- DQuatMulVecfl(dq, dco, (defMats)? summat: NULL);
- VecSubf(dco, dco, co);
- VecMulf(dco, armature_weight);
- VecAddf(co, co, dco);
+ mul_v3m3_dq( dco, (defMats)? summat: NULL,dq);
+ sub_v3_v3v3(dco, dco, co);
+ mul_v3_fl(dco, armature_weight);
+ add_v3_v3v3(co, co, dco);
}
else
- DQuatMulVecfl(dq, co, (defMats)? summat: NULL);
+ mul_v3m3_dq( co, (defMats)? summat: NULL,dq);
smat = summat;
}
else {
- VecMulf(vec, armature_weight/contrib);
- VecAddf(co, vec, co);
+ mul_v3_fl(vec, armature_weight/contrib);
+ add_v3_v3v3(co, vec, co);
}
if(defMats) {
float pre[3][3], post[3][3], tmpmat[3][3];
- Mat3CpyMat4(pre, premat);
- Mat3CpyMat4(post, postmat);
- Mat3CpyMat3(tmpmat, defMats[i]);
+ copy_m3_m4(pre, premat);
+ copy_m3_m4(post, postmat);
+ copy_m3_m3(tmpmat, defMats[i]);
if(!use_quaternion) /* quaternion already is scale corrected */
- Mat3MulFloat((float*)smat, armature_weight/contrib);
+ mul_m3_fl(smat, armature_weight/contrib);
- Mat3MulSerie(defMats[i], tmpmat, pre, smat, post,
+ mul_serie_m3(defMats[i], tmpmat, pre, smat, post,
NULL, NULL, NULL, NULL);
}
}
/* always, check above code */
- Mat4MulVecfl(postmat, co);
+ mul_m4_v3(postmat, co);
/* interpolate with previous modifier position using weight group */
@@ -1165,7 +1173,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm,
void get_objectspace_bone_matrix (struct Bone* bone, float M_accumulatedMatrix[][4], int root, int posed)
{
- Mat4CpyMat4(M_accumulatedMatrix, bone->arm_mat);
+ copy_m4_m4(M_accumulatedMatrix, bone->arm_mat);
}
/* **************** Space to Space API ****************** */
@@ -1179,10 +1187,10 @@ void armature_mat_world_to_pose(Object *ob, float inmat[][4], float outmat[][4])
if (ob==NULL) return;
/* get inverse of (armature) object's matrix */
- Mat4Invert(obmat, ob->obmat);
+ invert_m4_m4(obmat, ob->obmat);
/* multiply given matrix by object's-inverse to find pose-space matrix */
- Mat4MulMat4(outmat, obmat, inmat);
+ mul_m4_m4m4(outmat, obmat, inmat);
}
/* Convert Wolrd-Space Location to Pose-Space Location
@@ -1195,7 +1203,7 @@ void armature_loc_world_to_pose(Object *ob, float *inloc, float *outloc)
float nLocMat[4][4];
/* build matrix for location */
- Mat4One(xLocMat);
+ unit_m4(xLocMat);
VECCOPY(xLocMat[3], inloc);
/* get bone-space cursor matrix and extract location */
@@ -1217,24 +1225,24 @@ void armature_mat_pose_to_bone(bPoseChannel *pchan, float inmat[][4], float outm
/* get the inverse matrix of the pchan's transforms */
if (pchan->rotmode)
- LocEulSizeToMat4(pc_trans, pchan->loc, pchan->eul, pchan->size);
+ loc_eul_size_to_mat4(pc_trans, pchan->loc, pchan->eul, pchan->size);
else
- LocQuatSizeToMat4(pc_trans, pchan->loc, pchan->quat, pchan->size);
- Mat4Invert(inv_trans, pc_trans);
+ loc_quat_size_to_mat4(pc_trans, pchan->loc, pchan->quat, pchan->size);
+ invert_m4_m4(inv_trans, pc_trans);
/* Remove the pchan's transforms from it's pose_mat.
* This should leave behind the effects of restpose +
* parenting + constraints
*/
- Mat4MulMat4(pc_posemat, inv_trans, pchan->pose_mat);
+ mul_m4_m4m4(pc_posemat, inv_trans, pchan->pose_mat);
/* get the inverse of the leftovers so that we can remove
* that component from the supplied matrix
*/
- Mat4Invert(inv_posemat, pc_posemat);
+ invert_m4_m4(inv_posemat, pc_posemat);
/* get the new matrix */
- Mat4MulMat4(outmat, inmat, inv_posemat);
+ mul_m4_m4m4(outmat, inmat, inv_posemat);
}
/* Convert Pose-Space Location to Bone-Space Location
@@ -1247,7 +1255,7 @@ void armature_loc_pose_to_bone(bPoseChannel *pchan, float *inloc, float *outloc)
float nLocMat[4][4];
/* build matrix for location */
- Mat4One(xLocMat);
+ unit_m4(xLocMat);
VECCOPY(xLocMat[3], inloc);
/* get bone-space cursor matrix and extract location */
@@ -1263,8 +1271,8 @@ void armature_mat_pose_to_delta(float delta_mat[][4], float pose_mat[][4], float
{
float imat[4][4];
- Mat4Invert(imat, arm_mat);
- Mat4MulMat4(delta_mat, pose_mat, imat);
+ invert_m4_m4(imat, arm_mat);
+ mul_m4_m4m4(delta_mat, pose_mat, imat);
}
/* **************** Rotation Mode Conversions ****************************** */
@@ -1280,33 +1288,33 @@ void BKE_rotMode_change_values (float quat[4], float eul[3], float axis[3], floa
if (newMode > 0) { /* to euler */
if (oldMode == ROT_MODE_AXISANGLE) {
/* axis-angle to euler */
- AxisAngleToEulO(axis, *angle, eul, newMode);
+ axis_angle_to_eulO( eul, newMode,axis, *angle);
}
else if (oldMode == ROT_MODE_QUAT) {
/* quat to euler */
- QuatToEulO(quat, eul, newMode);
+ quat_to_eulO( eul, newMode,quat);
}
/* else { no conversion needed } */
}
else if (newMode == ROT_MODE_QUAT) { /* to quat */
if (oldMode == ROT_MODE_AXISANGLE) {
/* axis angle to quat */
- AxisAngleToQuat(quat, axis, *angle);
+ axis_angle_to_quat(quat, axis, *angle);
}
else if (oldMode > 0) {
/* euler to quat */
- EulOToQuat(eul, oldMode, quat);
+ eulO_to_quat( quat,eul, oldMode);
}
/* else { no conversion needed } */
}
else if (newMode == ROT_MODE_AXISANGLE) { /* to axis-angle */
if (oldMode > 0) {
/* euler to axis angle */
- EulOToAxisAngle(eul, oldMode, axis, angle);
+ eulO_to_axis_angle( axis, angle,eul, oldMode);
}
else if (oldMode == ROT_MODE_QUAT) {
/* quat to axis angle */
- QuatToAxisAngle(quat, axis, angle);
+ quat_to_axis_angle( axis, angle,quat);
}
/* when converting to axis-angle, we need a special exception for the case when there is no axis */
@@ -1341,14 +1349,14 @@ void BKE_rotMode_change_values (float quat[4], float eul[3], float axis[3], floa
void mat3_to_vec_roll(float mat[][3], float *vec, float *roll)
{
if (vec)
- VecCopyf(vec, mat[1]);
+ copy_v3_v3(vec, mat[1]);
if (roll) {
float vecmat[3][3], vecmatinv[3][3], rollmat[3][3];
vec_roll_to_mat3(mat[1], 0.0f, vecmat);
- Mat3Inv(vecmatinv, vecmat);
- Mat3MulMat3(rollmat, vecmatinv, mat);
+ invert_m3_m3(vecmatinv, vecmat);
+ mul_m3_m3m3(rollmat, vecmatinv, mat);
*roll= (float)atan2(rollmat[2][0], rollmat[2][2]);
}
@@ -1363,26 +1371,26 @@ void vec_roll_to_mat3(float *vec, float roll, float mat[][3])
float rMatrix[3][3], bMatrix[3][3];
VECCOPY (nor, vec);
- Normalize (nor);
+ normalize_v3(nor);
/* Find Axis & Amount for bone matrix*/
- Crossf (axis,target,nor);
+ cross_v3_v3v3(axis,target,nor);
- if (Inpf(axis,axis) > 0.0000000000001) {
+ if (dot_v3v3(axis,axis) > 0.0000000000001) {
/* if nor is *not* a multiple of target ... */
- Normalize (axis);
+ normalize_v3(axis);
- theta= NormalizedVecAngle2(target, nor);
+ theta= angle_normalized_v3v3(target, nor);
/* Make Bone matrix*/
- VecRotToMat3(axis, theta, bMatrix);
+ vec_rot_to_mat3( bMatrix,axis, theta);
}
else {
/* if nor is a multiple of target ... */
float updown;
/* point same direction, or opposite? */
- updown = ( Inpf (target,nor) > 0 ) ? 1.0f : -1.0f;
+ updown = ( dot_v3v3(target,nor) > 0 ) ? 1.0f : -1.0f;
/* I think this should work ... */
bMatrix[0][0]=updown; bMatrix[0][1]=0.0; bMatrix[0][2]=0.0;
@@ -1391,10 +1399,10 @@ void vec_roll_to_mat3(float *vec, float roll, float mat[][3])
}
/* Make Roll matrix*/
- VecRotToMat3(nor, roll, rMatrix);
+ vec_rot_to_mat3( rMatrix,nor, roll);
/* Combine and output result*/
- Mat3MulMat3 (mat, rMatrix, bMatrix);
+ mul_m3_m3m3(mat, rMatrix, bMatrix);
}
@@ -1405,10 +1413,10 @@ void where_is_armature_bone(Bone *bone, Bone *prevbone)
float vec[3];
/* Bone Space */
- VecSubf (vec, bone->tail, bone->head);
+ sub_v3_v3v3(vec, bone->tail, bone->head);
vec_roll_to_mat3(vec, bone->roll, bone->bone_mat);
- bone->length= VecLenf(bone->head, bone->tail);
+ bone->length= len_v3v3(bone->head, bone->tail);
/* this is called on old file reading too... */
if(bone->xwidth==0.0) {
@@ -1421,7 +1429,7 @@ void where_is_armature_bone(Bone *bone, Bone *prevbone)
float offs_bone[4][4]; // yoffs(b-1) + root(b) + bonemat(b)
/* bone transform itself */
- Mat4CpyMat3(offs_bone, bone->bone_mat);
+ copy_m4_m3(offs_bone, bone->bone_mat);
/* The bone's root offset (is in the parent's coordinate system) */
VECCOPY(offs_bone[3], bone->head);
@@ -1430,10 +1438,10 @@ void where_is_armature_bone(Bone *bone, Bone *prevbone)
offs_bone[3][1]+= prevbone->length;
/* Compose the matrix for this bone */
- Mat4MulMat4(bone->arm_mat, offs_bone, prevbone->arm_mat);
+ mul_m4_m4m4(bone->arm_mat, offs_bone, prevbone->arm_mat);
}
else {
- Mat4CpyMat3(bone->arm_mat, bone->bone_mat);
+ copy_m4_m3(bone->arm_mat, bone->bone_mat);
VECCOPY(bone->arm_mat[3], bone->head);
}
@@ -1441,8 +1449,8 @@ void where_is_armature_bone(Bone *bone, Bone *prevbone)
VECCOPY(bone->arm_head, bone->arm_mat[3]);
/* tail is in current local coord system */
VECCOPY(vec, bone->arm_mat[1]);
- VecMulf(vec, bone->length);
- VecAddf(bone->arm_tail, bone->arm_head, vec);
+ mul_v3_fl(vec, bone->length);
+ add_v3_v3v3(bone->arm_tail, bone->arm_head, vec);
/* and the kiddies */
prevbone= bone;
@@ -1501,6 +1509,10 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
pchanw.child= pchan->child;
pchanw.path= NULL;
+ /* this is freed so copy a copy, else undo crashes */
+ if(pchanw.prop)
+ pchanw.prop= IDP_CopyProperty(pchanw.prop);
+
/* constraints - proxy constraints are flushed... local ones are added after
* 1. extract constraints not from proxy (CONSTRAINT_PROXY_LOCAL) from pchan's constraints
* 2. copy proxy-pchan's constraints on-to new
@@ -1530,8 +1542,7 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
}
/* free stuff from current channel */
- if (pchan->path) MEM_freeN(pchan->path);
- free_constraints(&pchan->constraints);
+ free_pose_channel(pchan);
/* the final copy */
*pchan= pchanw;
@@ -1586,9 +1597,7 @@ void armature_rebuild_pose(Object *ob, bArmature *arm)
for(pchan= pose->chanbase.first; pchan; pchan= next) {
next= pchan->next;
if(pchan->bone==NULL) {
- if(pchan->path)
- MEM_freeN(pchan->path);
- free_constraints(&pchan->constraints);
+ free_pose_channel(pchan);
BLI_freelinkN(&pose->chanbase, pchan);
}
}
@@ -1632,7 +1641,7 @@ typedef struct tSplineIK_Tree {
/* ----------- */
/* Tag the bones in the chain formed by the given bone for IK */
-static void splineik_init_tree_from_pchan(Object *ob, bPoseChannel *pchan_tip)
+static void splineik_init_tree_from_pchan(Scene *scene, Object *ob, bPoseChannel *pchan_tip)
{
bPoseChannel *pchan, *pchanRoot=NULL;
bPoseChannel *pchanChain[255];
@@ -1661,6 +1670,21 @@ static void splineik_init_tree_from_pchan(Object *ob, bPoseChannel *pchan_tip)
}
if (con == NULL)
return;
+
+ /* make sure that the constraint targets are ok
+ * - this is a workaround for a depsgraph bug...
+ */
+ if (ikData->tar) {
+ Curve *cu= ikData->tar->data;
+
+ /* note: when creating constraints that follow path, the curve gets the CU_PATH set now,
+ * currently for paths to work it needs to go through the bevlist/displist system (ton)
+ */
+
+ /* only happens on reload file, but violates depsgraph still... fix! */
+ if ((cu->path==NULL) || (cu->path->data==NULL))
+ makeDispListCurveTypes(scene, ikData->tar, 0);
+ }
/* find the root bone and the chain of bones from the root to the tip
* NOTE: this assumes that the bones are connected, but that may not be true...
@@ -1707,7 +1731,7 @@ static void splineik_init_tree_from_pchan(Object *ob, bPoseChannel *pchan_tip)
*/
if ((ikData->flag & CONSTRAINT_SPLINEIK_EVENSPLITS) || (totLength == 0.0f)) {
/* 1) equi-spaced joints */
- ikData->points[i]= segmentLen;
+ ikData->points[i]= ikData->points[i-1] - segmentLen;
}
else {
/* 2) to find this point on the curve, we take a step from the previous joint
@@ -1800,7 +1824,7 @@ static void splineik_init_tree(Scene *scene, Object *ob, float ctime)
/* find the tips of Spline IK chains, which are simply the bones which have been tagged as such */
for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
if (pchan->constflag & PCHAN_HAS_SPLINEIK)
- splineik_init_tree_from_pchan(ob, pchan);
+ splineik_init_tree_from_pchan(scene, ob, pchan);
}
}
@@ -1811,9 +1835,7 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
{
bSplineIKConstraint *ikData= tree->ikData;
float poseHead[3], poseTail[3], poseMat[4][4];
- float splineVec[3], scaleFac;
- float rad, radius=1.0f;
- float vec[4], dir[3];
+ float splineVec[3], scaleFac, radius=1.0f;
/* firstly, calculate the bone matrix the standard way, since this is needed for roll control */
where_is_pose_bone(scene, ob, pchan, ctime);
@@ -1821,32 +1843,49 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
VECCOPY(poseHead, pchan->pose_head);
VECCOPY(poseTail, pchan->pose_tail);
- /* step 1a: get xyz positions for the tail endpoint of the bone */
- if ( where_on_path(ikData->tar, tree->points[index], vec, dir, NULL, &rad) ) {
- /* convert the position to pose-space, then store it */
- Mat4MulVecfl(ob->imat, vec);
- VECCOPY(poseTail, vec);
+ /* step 1: determine the positions for the endpoints of the bone */
+ {
+ float vec[4], dir[3], rad;
+ float tailBlendFac= 1.0f;
+
+ /* determine if the bone should still be affected by SplineIK */
+ if (tree->points[index+1] >= 1.0f) {
+ /* spline doesn't affect the bone anymore, so done... */
+ pchan->flag |= POSE_DONE;
+ return;
+ }
+ else if ((tree->points[index] >= 1.0f) && (tree->points[index+1] < 1.0f)) {
+ /* blending factor depends on the amount of the bone still left on the chain */
+ tailBlendFac= (1.0f - tree->points[index+1]) / (tree->points[index] - tree->points[index+1]);
+ }
- /* set the new radius */
- radius= rad;
- }
-
- /* step 1b: get xyz positions for the head endpoint of the bone */
- if ( where_on_path(ikData->tar, tree->points[index+1], vec, dir, NULL, &rad) ) {
- /* store the position, and convert it to pose space */
- Mat4MulVecfl(ob->imat, vec);
- VECCOPY(poseHead, vec);
+ /* tail endpoint */
+ if ( where_on_path(ikData->tar, tree->points[index], vec, dir, NULL, &rad) ) {
+ /* convert the position to pose-space, then store it */
+ mul_m4_v3(ob->imat, vec);
+ interp_v3_v3v3(poseTail, pchan->pose_tail, vec, tailBlendFac);
+
+ /* set the new radius */
+ radius= rad;
+ }
- /* set the new radius (it should be the average value) */
- radius = (radius+rad) / 2;
+ /* head endpoint */
+ if ( where_on_path(ikData->tar, tree->points[index+1], vec, dir, NULL, &rad) ) {
+ /* store the position, and convert it to pose space */
+ mul_m4_v3(ob->imat, vec);
+ VECCOPY(poseHead, vec);
+
+ /* set the new radius (it should be the average value) */
+ radius = (radius+rad) / 2;
+ }
}
/* step 2: determine the implied transform from these endpoints
* - splineVec: the vector direction that the spline applies on the bone
* - scaleFac: the factor that the bone length is scaled by to get the desired amount
*/
- VecSubf(splineVec, poseTail, poseHead);
- scaleFac= VecLength(splineVec) / pchan->bone->length;
+ sub_v3_v3v3(splineVec, poseTail, poseHead);
+ scaleFac= len_v3(splineVec) / pchan->bone->length;
/* step 3: compute the shortest rotation needed to map from the bone rotation to the current axis
* - this uses the same method as is used for the Damped Track Constraint (see the code there for details)
@@ -1861,68 +1900,99 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
VECCOPY(rmat[0], pchan->pose_mat[0]);
VECCOPY(rmat[1], pchan->pose_mat[1]);
VECCOPY(rmat[2], pchan->pose_mat[2]);
- Mat3Ortho(rmat);
+ normalize_m3(rmat);
/* also, normalise the orientation imposed by the bone, now that we've extracted the scale factor */
- Normalize(splineVec);
+ normalize_v3(splineVec);
/* calculate smallest axis-angle rotation necessary for getting from the
* current orientation of the bone, to the spline-imposed direction
*/
- Crossf(raxis, rmat[1], splineVec);
+ cross_v3_v3v3(raxis, rmat[1], splineVec);
- rangle= Inpf(rmat[1], splineVec);
+ rangle= dot_v3v3(rmat[1], splineVec);
rangle= acos( MAX2(-1.0f, MIN2(1.0f, rangle)) );
/* construct rotation matrix from the axis-angle rotation found above
* - this call takes care to make sure that the axis provided is a unit vector first
*/
- AxisAngleToMat3(raxis, rangle, dmat);
+ axis_angle_to_mat3(dmat, raxis, rangle);
/* combine these rotations so that the y-axis of the bone is now aligned as the spline dictates,
* while still maintaining roll control from the existing bone animation
*/
- Mat3MulMat3(tmat, dmat, rmat); // m1, m3, m2
- Mat3Ortho(tmat); /* attempt to reduce shearing, though I doubt this'll really help too much now... */
- Mat4CpyMat3(poseMat, tmat);
+ mul_m3_m3m3(tmat, dmat, rmat); // m1, m3, m2
+ normalize_m3(tmat); /* attempt to reduce shearing, though I doubt this'll really help too much now... */
+ copy_m4_m3(poseMat, tmat);
}
/* step 4: set the scaling factors for the axes */
- // TODO: include a no-scale option?
{
/* only multiply the y-axis by the scaling factor to get nice volume-preservation */
- VecMulf(poseMat[1], scaleFac);
+ mul_v3_fl(poseMat[1], scaleFac);
/* set the scaling factors of the x and z axes from... */
switch (ikData->xzScaleMode) {
- case CONSTRAINT_SPLINEIK_XZS_RADIUS:
- {
- /* radius of curve */
- VecMulf(poseMat[0], radius);
- VecMulf(poseMat[2], radius);
- }
- break;
case CONSTRAINT_SPLINEIK_XZS_ORIGINAL:
{
/* original scales get used */
float scale;
/* x-axis scale */
- scale= VecLength(pchan->pose_mat[0]);
- VecMulf(poseMat[0], scale);
+ scale= len_v3(pchan->pose_mat[0]);
+ mul_v3_fl(poseMat[0], scale);
/* z-axis scale */
- scale= VecLength(pchan->pose_mat[2]);
- VecMulf(poseMat[2], scale);
+ scale= len_v3(pchan->pose_mat[2]);
+ mul_v3_fl(poseMat[2], scale);
+ }
+ break;
+ case CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC:
+ {
+ /* 'volume preservation' */
+ float scale;
+
+ /* calculate volume preservation factor which is
+ * basically the inverse of the y-scaling factor
+ */
+ if (fabs(scaleFac) != 0.0f) {
+ scale= 1.0 / fabs(scaleFac);
+
+ /* we need to clamp this within sensible values */
+ // NOTE: these should be fine for now, but should get sanitised in future
+ scale= MIN2( MAX2(scale, 0.0001) , 100000);
+ }
+ else
+ scale= 1.0f;
+
+ /* apply the scaling */
+ mul_v3_fl(poseMat[0], scale);
+ mul_v3_fl(poseMat[2], scale);
}
break;
}
+
+ /* finally, multiply the x and z scaling by the radius of the curve too,
+ * to allow automatic scales to get tweaked still
+ */
+ if ((ikData->flag & CONSTRAINT_SPLINEIK_NO_CURVERAD) == 0) {
+ mul_v3_fl(poseMat[0], radius);
+ mul_v3_fl(poseMat[2], radius);
+ }
}
- /* step 5: set the location of the bone in the matrix */
- VECCOPY(poseMat[3], poseHead);
+ /* step 5: set the location of the bone in the matrix
+ * - when the 'no-root' option is affected, the chain can retain
+ * the shape but be moved elsewhere
+ */
+ if (ikData->flag & CONSTRAINT_SPLINEIK_NO_ROOT) {
+ VECCOPY(poseMat[3], pchan->pose_head);
+ }
+ else {
+ VECCOPY(poseMat[3], poseHead);
+ }
/* finally, store the new transform */
- Mat4CpyMat4(pchan->pose_mat, poseMat);
+ copy_m4_m4(pchan->pose_mat, poseMat);
VECCOPY(pchan->pose_head, poseHead);
VECCOPY(pchan->pose_tail, poseTail);
@@ -1974,26 +2044,26 @@ void chan_calc_mat(bPoseChannel *chan)
float tmat[3][3];
/* get scaling matrix */
- SizeToMat3(chan->size, smat);
+ size_to_mat3( smat,chan->size);
/* rotations may either be quats, eulers (with various rotation orders), or axis-angle */
if (chan->rotmode > 0) {
/* euler rotations (will cause gimble lock, but this can be alleviated a bit with rotation orders) */
- EulOToMat3(chan->eul, chan->rotmode, rmat);
+ eulO_to_mat3( rmat,chan->eul, chan->rotmode);
}
else if (chan->rotmode == ROT_MODE_AXISANGLE) {
/* axis-angle - not really that great for 3D-changing orientations */
- AxisAngleToMat3(chan->rotAxis, chan->rotAngle, rmat);
+ axis_angle_to_mat3( rmat,chan->rotAxis, chan->rotAngle);
}
else {
/* quats are normalised before use to eliminate scaling issues */
- NormalQuat(chan->quat); // TODO: do this with local vars only!
- QuatToMat3(chan->quat, rmat);
+ normalize_qt(chan->quat); // TODO: do this with local vars only!
+ quat_to_mat3( rmat,chan->quat);
}
/* calculate matrix of bone (as 3x3 matrix, but then copy the 4x4) */
- Mat3MulMat3(tmat, rmat, smat);
- Mat4CpyMat3(chan->chan_mat, tmat);
+ mul_m3_m3m3(tmat, rmat, smat);
+ copy_m4_m3(chan->chan_mat, tmat);
/* prevent action channels breaking chains */
/* need to check for bone here, CONSTRAINT_TYPE_ACTION uses this call */
@@ -2057,8 +2127,8 @@ static void do_strip_modifiers(Scene *scene, Object *armob, Bone *bone, bPoseCha
float mat4[4][4], mat3[3][3];
curve_deform_vector(scene, amod->ob, armob, bone->arm_mat[3], pchan->pose_mat[3], mat3, amod->no_rot_axis);
- Mat4CpyMat4(mat4, pchan->pose_mat);
- Mat4MulMat34(pchan->pose_mat, mat3, mat4);
+ copy_m4_m4(mat4, pchan->pose_mat);
+ mul_m4_m3m4(pchan->pose_mat, mat3, mat4);
}
}
@@ -2075,8 +2145,8 @@ static void do_strip_modifiers(Scene *scene, Object *armob, Bone *bone, bPoseCha
/* make a copy of starting conditions */
VECCOPY(loc, pchan->pose_mat[3]);
- Mat4ToEul(pchan->pose_mat, eul);
- Mat4ToSize(pchan->pose_mat, size);
+ mat4_to_eul( eul,pchan->pose_mat);
+ mat4_to_size( size,pchan->pose_mat);
VECCOPY(eulo, eul);
VECCOPY(sizeo, size);
@@ -2086,14 +2156,14 @@ static void do_strip_modifiers(Scene *scene, Object *armob, Bone *bone, bPoseCha
nor[0] = BLI_gNoise(amod->noisesize, size[0]+ofs, size[1], size[2], 0, 0) - ofs;
nor[1] = BLI_gNoise(amod->noisesize, size[0], size[1]+ofs, size[2], 0, 0) - ofs;
nor[2] = BLI_gNoise(amod->noisesize, size[0], size[1], size[2]+ofs, 0, 0) - ofs;
- VecAddf(size, size, nor);
+ add_v3_v3v3(size, size, nor);
if (sizeo[0] != 0)
- VecMulf(pchan->pose_mat[0], size[0] / sizeo[0]);
+ mul_v3_fl(pchan->pose_mat[0], size[0] / sizeo[0]);
if (sizeo[1] != 0)
- VecMulf(pchan->pose_mat[1], size[1] / sizeo[1]);
+ mul_v3_fl(pchan->pose_mat[1], size[1] / sizeo[1]);
if (sizeo[2] != 0)
- VecMulf(pchan->pose_mat[2], size[2] / sizeo[2]);
+ mul_v3_fl(pchan->pose_mat[2], size[2] / sizeo[2]);
}
if (amod->channels & 2) {
/* for rotation */
@@ -2102,10 +2172,10 @@ static void do_strip_modifiers(Scene *scene, Object *armob, Bone *bone, bPoseCha
nor[2] = BLI_gNoise(amod->noisesize, eul[0], eul[1], eul[2]+ofs, 0, 0) - ofs;
compatible_eul(nor, eulo);
- VecAddf(eul, eul, nor);
+ add_v3_v3v3(eul, eul, nor);
compatible_eul(eul, eulo);
- LocEulSizeToMat4(pchan->pose_mat, loc, eul, size);
+ loc_eul_size_to_mat4(pchan->pose_mat, loc, eul, size);
}
if (amod->channels & 1) {
/* for location */
@@ -2113,7 +2183,7 @@ static void do_strip_modifiers(Scene *scene, Object *armob, Bone *bone, bPoseCha
nor[1] = BLI_gNoise(amod->noisesize, loc[0], loc[1]+ofs, loc[2], 0, 0) - ofs;
nor[2] = BLI_gNoise(amod->noisesize, loc[0], loc[1], loc[2]+ofs, 0, 0) - ofs;
- VecAddf(pchan->pose_mat[3], loc, nor);
+ add_v3_v3v3(pchan->pose_mat[3], loc, nor);
}
}
}
@@ -2148,7 +2218,7 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti
float offs_bone[4][4]; // yoffs(b-1) + root(b) + bonemat(b)
/* bone transform itself */
- Mat4CpyMat3(offs_bone, bone->bone_mat);
+ copy_m4_m3(offs_bone, bone->bone_mat);
/* The bone's root offset (is in the parent's coordinate system) */
VECCOPY(offs_bone[3], bone->head);
@@ -2161,39 +2231,48 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti
float tmat[4][4];
/* the rotation of the parent restposition */
- Mat4CpyMat4(tmat, parbone->arm_mat);
-
- /* the location of actual parent transform */
- VECCOPY(tmat[3], offs_bone[3]);
- offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
- Mat4MulVecfl(parchan->pose_mat, tmat[3]);
-
- Mat4MulSerie(pchan->pose_mat, tmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
+ copy_m4_m4(tmat, parbone->arm_mat);
+ mul_serie_m4(pchan->pose_mat, tmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
}
else if(bone->flag & BONE_NO_SCALE) {
float orthmat[4][4];
- /* get the official transform, but we only use the vector from it (optimize...) */
- Mat4MulSerie(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
- VECCOPY(vec, pchan->pose_mat[3]);
-
- /* do this again, but with an ortho-parent matrix */
- Mat4CpyMat4(orthmat, parchan->pose_mat);
- Mat4Ortho(orthmat);
- Mat4MulSerie(pchan->pose_mat, orthmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
-
- /* copy correct transform */
- VECCOPY(pchan->pose_mat[3], vec);
+ /* do transform, with an ortho-parent matrix */
+ copy_m4_m4(orthmat, parchan->pose_mat);
+ normalize_m4(orthmat);
+ mul_serie_m4(pchan->pose_mat, orthmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
+ }
+ else
+ mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
+
+ /* in these cases we need to compute location separately */
+ if(bone->flag & (BONE_HINGE|BONE_NO_SCALE|BONE_NO_LOCAL_LOCATION)) {
+ float bone_loc[3], chan_loc[3];
+
+ mul_v3_m4v3(bone_loc, parchan->pose_mat, offs_bone[3]);
+ copy_v3_v3(chan_loc, pchan->chan_mat[3]);
+
+ /* no local location is not transformed by bone matrix */
+ if(!(bone->flag & BONE_NO_LOCAL_LOCATION))
+ mul_mat3_m4_v3(offs_bone, chan_loc);
+
+ /* for hinge we use armature instead of pose mat */
+ if(bone->flag & BONE_HINGE) mul_mat3_m4_v3(parbone->arm_mat, chan_loc);
+ else mul_mat3_m4_v3(parchan->pose_mat, chan_loc);
+
+ add_v3_v3v3(pchan->pose_mat[3], bone_loc, chan_loc);
}
- else
- Mat4MulSerie(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
}
else {
- Mat4MulMat4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat);
+ mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat);
+
+ /* optional location without arm_mat rotation */
+ if(bone->flag & BONE_NO_LOCAL_LOCATION)
+ add_v3_v3v3(pchan->pose_mat[3], bone->arm_mat[3], pchan->chan_mat[3]);
/* only rootbones get the cyclic offset (unless user doesn't want that) */
if ((bone->flag & BONE_NO_CYCLICOFFSET) == 0)
- VecAddf(pchan->pose_mat[3], pchan->pose_mat[3], ob->pose->cyclic_offset);
+ add_v3_v3v3(pchan->pose_mat[3], pchan->pose_mat[3], ob->pose->cyclic_offset);
}
/* do NLA strip modifiers - i.e. curve follow */
@@ -2229,8 +2308,8 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti
VECCOPY(pchan->pose_head, pchan->pose_mat[3]);
/* calculate tail */
VECCOPY(vec, pchan->pose_mat[1]);
- VecMulf(vec, bone->length);
- VecAddf(pchan->pose_tail, pchan->pose_head, vec);
+ mul_v3_fl(vec, bone->length);
+ add_v3_v3v3(pchan->pose_tail, pchan->pose_head, vec);
}
/* This only reads anim data from channels, and writes to channels */
@@ -2258,14 +2337,14 @@ void where_is_pose (Scene *scene, Object *ob)
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
bone= pchan->bone;
if(bone) {
- Mat4CpyMat4(pchan->pose_mat, bone->arm_mat);
+ copy_m4_m4(pchan->pose_mat, bone->arm_mat);
VECCOPY(pchan->pose_head, bone->arm_head);
VECCOPY(pchan->pose_tail, bone->arm_tail);
}
}
}
else {
- Mat4Invert(ob->imat, ob->obmat); // imat is needed
+ invert_m4_m4(ob->imat, ob->obmat); // imat is needed
/* 1. clear flags */
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
@@ -2303,8 +2382,8 @@ void where_is_pose (Scene *scene, Object *ob)
/* calculating deform matrices */
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
if(pchan->bone) {
- Mat4Invert(imat, pchan->bone->arm_mat);
- Mat4MulMat4(pchan->chan_mat, imat, pchan->pose_mat);
+ invert_m4_m4(imat, pchan->bone->arm_mat);
+ mul_m4_m4m4(pchan->chan_mat, imat, pchan->pose_mat);
}
}
}
diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c
index 712fb13cfc0..389009cca76 100644
--- a/source/blender/blenkernel/intern/boids.c
+++ b/source/blender/blenkernel/intern/boids.c
@@ -43,7 +43,7 @@
#include "DNA_listBase.h"
#include "BLI_rand.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_kdtree.h"
#include "BLI_kdopbvh.h"
@@ -135,10 +135,10 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val,
/* estimate future location of target */
get_effector_data(eff, &efd, &epoint, 1);
- VecMulf(efd.vel, efd.distance / (val->max_speed * bbd->timestep));
- VecAddf(efd.loc, efd.loc, efd.vel);
- VecSubf(efd.vec_to_point, pa->prev_state.co, efd.loc);
- efd.distance = VecLength(efd.vec_to_point);
+ mul_v3_fl(efd.vel, efd.distance / (val->max_speed * bbd->timestep));
+ add_v3_v3v3(efd.loc, efd.loc, efd.vel);
+ sub_v3_v3v3(efd.vec_to_point, pa->prev_state.co, efd.loc);
+ efd.distance = len_v3(efd.vec_to_point);
}
if(rule->type == eBoidRuleType_Goal && boids->options & BOID_ALLOW_CLIMB && surface!=0.0f) {
@@ -152,17 +152,17 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val,
priority > 2.0f * gabr->fear_factor) {
/* detach from surface and try to fly away from danger */
VECCOPY(efd.vec_to_point, bpa->gravity);
- VecMulf(efd.vec_to_point, -1.0f);
+ mul_v3_fl(efd.vec_to_point, -1.0f);
}
VECCOPY(bbd->wanted_co, efd.vec_to_point);
- VecMulf(bbd->wanted_co, mul);
+ mul_v3_fl(bbd->wanted_co, mul);
bbd->wanted_speed = val->max_speed * priority;
/* with goals factor is approach velocity factor */
if(rule->type == eBoidRuleType_Goal && boids->landing_smoothness > 0.0f) {
- float len2 = 2.0f*VecLength(pa->prev_state.vel);
+ float len2 = 2.0f*len_v3(pa->prev_state.vel);
surface *= pa->size * boids->height;
@@ -198,12 +198,12 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
float radius = val->personal_space * pa->size, ray_dir[3];
VECCOPY(col.co1, pa->prev_state.co);
- VecAddf(col.co2, pa->prev_state.co, pa->prev_state.vel);
- VecSubf(ray_dir, col.co2, col.co1);
- VecMulf(ray_dir, acbr->look_ahead);
+ add_v3_v3v3(col.co2, pa->prev_state.co, pa->prev_state.vel);
+ sub_v3_v3v3(ray_dir, col.co2, col.co1);
+ mul_v3_fl(ray_dir, acbr->look_ahead);
col.t = 0.0f;
hit.index = -1;
- hit.dist = col.ray_len = VecLength(ray_dir);
+ hit.dist = col.ray_len = len_v3(ray_dir);
/* find out closest deflector object */
for(coll = bbd->sim->colliders->first; coll; coll=coll->next) {
@@ -224,9 +224,9 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
VECCOPY(bbd->wanted_co, col.nor);
- VecMulf(bbd->wanted_co, (1.0f - t) * val->personal_space * pa->size);
+ mul_v3_fl(bbd->wanted_co, (1.0f - t) * val->personal_space * pa->size);
- bbd->wanted_speed = sqrt(t) * VecLength(pa->prev_state.vel);
+ bbd->wanted_speed = sqrt(t) * len_v3(pa->prev_state.vel);
return 1;
}
@@ -235,39 +235,39 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
//check boids in own system
if(acbr->options & BRULE_ACOLL_WITH_BOIDS)
{
- neighbors = BLI_kdtree_range_search(bbd->sim->psys->tree, acbr->look_ahead * VecLength(pa->prev_state.vel), pa->prev_state.co, pa->prev_state.ave, &ptn);
+ neighbors = BLI_kdtree_range_search(bbd->sim->psys->tree, acbr->look_ahead * len_v3(pa->prev_state.vel), pa->prev_state.co, pa->prev_state.ave, &ptn);
if(neighbors > 1) for(n=1; n<neighbors; n++) {
VECCOPY(co1, pa->prev_state.co);
VECCOPY(vel1, pa->prev_state.vel);
VECCOPY(co2, (bbd->sim->psys->particles + ptn[n].index)->prev_state.co);
VECCOPY(vel2, (bbd->sim->psys->particles + ptn[n].index)->prev_state.vel);
- VecSubf(loc, co1, co2);
+ sub_v3_v3v3(loc, co1, co2);
- VecSubf(vec, vel1, vel2);
+ sub_v3_v3v3(vec, vel1, vel2);
- inp = Inpf(vec,vec);
+ inp = dot_v3v3(vec,vec);
/* velocities not parallel */
if(inp != 0.0f) {
- t = -Inpf(loc, vec)/inp;
+ t = -dot_v3v3(loc, vec)/inp;
/* cpa is not too far in the future so investigate further */
if(t > 0.0f && t < t_min) {
VECADDFAC(co1, co1, vel1, t);
VECADDFAC(co2, co2, vel2, t);
- VecSubf(vec, co2, co1);
+ sub_v3_v3v3(vec, co2, co1);
- len = Normalize(vec);
+ len = normalize_v3(vec);
/* distance of cpa is close enough */
if(len < 2.0f * val->personal_space * pa->size) {
t_min = t;
- VecMulf(vec, VecLength(vel1));
- VecMulf(vec, (2.0f - t)/2.0f);
- VecSubf(bbd->wanted_co, vel1, vec);
- bbd->wanted_speed = VecLength(bbd->wanted_co);
+ mul_v3_fl(vec, len_v3(vel1));
+ mul_v3_fl(vec, (2.0f - t)/2.0f);
+ sub_v3_v3v3(bbd->wanted_co, vel1, vec);
+ bbd->wanted_speed = len_v3(bbd->wanted_co);
ret = 1;
}
}
@@ -281,39 +281,39 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
ParticleSystem *epsys = psys_get_target_system(bbd->sim->ob, pt);
if(epsys) {
- neighbors = BLI_kdtree_range_search(epsys->tree, acbr->look_ahead * VecLength(pa->prev_state.vel), pa->prev_state.co, pa->prev_state.ave, &ptn);
+ neighbors = BLI_kdtree_range_search(epsys->tree, acbr->look_ahead * len_v3(pa->prev_state.vel), pa->prev_state.co, pa->prev_state.ave, &ptn);
if(neighbors > 0) for(n=0; n<neighbors; n++) {
VECCOPY(co1, pa->prev_state.co);
VECCOPY(vel1, pa->prev_state.vel);
VECCOPY(co2, (epsys->particles + ptn[n].index)->prev_state.co);
VECCOPY(vel2, (epsys->particles + ptn[n].index)->prev_state.vel);
- VecSubf(loc, co1, co2);
+ sub_v3_v3v3(loc, co1, co2);
- VecSubf(vec, vel1, vel2);
+ sub_v3_v3v3(vec, vel1, vel2);
- inp = Inpf(vec,vec);
+ inp = dot_v3v3(vec,vec);
/* velocities not parallel */
if(inp != 0.0f) {
- t = -Inpf(loc, vec)/inp;
+ t = -dot_v3v3(loc, vec)/inp;
/* cpa is not too far in the future so investigate further */
if(t > 0.0f && t < t_min) {
VECADDFAC(co1, co1, vel1, t);
VECADDFAC(co2, co2, vel2, t);
- VecSubf(vec, co2, co1);
+ sub_v3_v3v3(vec, co2, co1);
- len = Normalize(vec);
+ len = normalize_v3(vec);
/* distance of cpa is close enough */
if(len < 2.0f * val->personal_space * pa->size) {
t_min = t;
- VecMulf(vec, VecLength(vel1));
- VecMulf(vec, (2.0f - t)/2.0f);
- VecSubf(bbd->wanted_co, vel1, vec);
- bbd->wanted_speed = VecLength(bbd->wanted_co);
+ mul_v3_fl(vec, len_v3(vel1));
+ mul_v3_fl(vec, (2.0f - t)/2.0f);
+ sub_v3_v3v3(bbd->wanted_co, vel1, vec);
+ bbd->wanted_speed = len_v3(bbd->wanted_co);
ret = 1;
}
}
@@ -340,9 +340,9 @@ static int rule_separate(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Pa
int ret = 0;
if(neighbors > 1 && ptn[1].dist!=0.0f) {
- VecSubf(vec, pa->prev_state.co, bbd->sim->psys->particles[ptn[1].index].state.co);
- VecMulf(vec, (2.0f * val->personal_space * pa->size - ptn[1].dist) / ptn[1].dist);
- VecAddf(bbd->wanted_co, bbd->wanted_co, vec);
+ sub_v3_v3v3(vec, pa->prev_state.co, bbd->sim->psys->particles[ptn[1].index].state.co);
+ mul_v3_fl(vec, (2.0f * val->personal_space * pa->size - ptn[1].dist) / ptn[1].dist);
+ add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
bbd->wanted_speed = val->max_speed;
len = ptn[1].dist;
ret = 1;
@@ -357,9 +357,9 @@ static int rule_separate(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Pa
neighbors = BLI_kdtree_range_search(epsys->tree, 2.0f * val->personal_space * pa->size, pa->prev_state.co, NULL, &ptn);
if(neighbors > 0 && ptn[0].dist < len) {
- VecSubf(vec, pa->prev_state.co, ptn[0].co);
- VecMulf(vec, (2.0f * val->personal_space * pa->size - ptn[0].dist) / ptn[1].dist);
- VecAddf(bbd->wanted_co, bbd->wanted_co, vec);
+ sub_v3_v3v3(vec, pa->prev_state.co, ptn[0].co);
+ mul_v3_fl(vec, (2.0f * val->personal_space * pa->size - ptn[0].dist) / ptn[1].dist);
+ add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
bbd->wanted_speed = val->max_speed;
len = ptn[0].dist;
ret = 1;
@@ -380,19 +380,19 @@ static int rule_flock(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
if(neighbors > 1) {
for(n=1; n<neighbors; n++) {
- VecAddf(loc, loc, bbd->sim->psys->particles[ptn[n].index].prev_state.co);
- VecAddf(vec, vec, bbd->sim->psys->particles[ptn[n].index].prev_state.vel);
+ add_v3_v3v3(loc, loc, bbd->sim->psys->particles[ptn[n].index].prev_state.co);
+ add_v3_v3v3(vec, vec, bbd->sim->psys->particles[ptn[n].index].prev_state.vel);
}
- VecMulf(loc, 1.0f/((float)neighbors - 1.0f));
- VecMulf(vec, 1.0f/((float)neighbors - 1.0f));
+ mul_v3_fl(loc, 1.0f/((float)neighbors - 1.0f));
+ mul_v3_fl(vec, 1.0f/((float)neighbors - 1.0f));
- VecSubf(loc, loc, pa->prev_state.co);
- VecSubf(vec, vec, pa->prev_state.vel);
+ sub_v3_v3v3(loc, loc, pa->prev_state.co);
+ sub_v3_v3v3(vec, vec, pa->prev_state.vel);
- VecAddf(bbd->wanted_co, bbd->wanted_co, vec);
- VecAddf(bbd->wanted_co, bbd->wanted_co, loc);
- bbd->wanted_speed = VecLength(bbd->wanted_co);
+ add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
+ add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, loc);
+ bbd->wanted_speed = len_v3(bbd->wanted_co);
ret = 1;
}
@@ -410,16 +410,16 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
float vec2[3], t;
/* first check we're not blocking the leader*/
- VecSubf(vec, flbr->loc, flbr->oloc);
- VecMulf(vec, 1.0f/bbd->timestep);
+ sub_v3_v3v3(vec, flbr->loc, flbr->oloc);
+ mul_v3_fl(vec, 1.0f/bbd->timestep);
- VecSubf(loc, pa->prev_state.co, flbr->oloc);
+ sub_v3_v3v3(loc, pa->prev_state.co, flbr->oloc);
- mul = Inpf(vec, vec);
+ mul = dot_v3v3(vec, vec);
/* leader is not moving */
if(mul < 0.01) {
- len = VecLength(loc);
+ len = len_v3(loc);
/* too close to leader */
if(len < 2.0f * val->personal_space * pa->size) {
VECCOPY(bbd->wanted_co, loc);
@@ -428,16 +428,16 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
}
}
else {
- t = Inpf(loc, vec)/mul;
+ t = dot_v3v3(loc, vec)/mul;
/* possible blocking of leader in near future */
if(t > 0.0f && t < 3.0f) {
VECCOPY(vec2, vec);
- VecMulf(vec2, t);
+ mul_v3_fl(vec2, t);
- VecSubf(vec2, loc, vec2);
+ sub_v3_v3v3(vec2, loc, vec2);
- len = VecLength(vec2);
+ len = len_v3(vec2);
if(len < 2.0f * val->personal_space * pa->size) {
VECCOPY(bbd->wanted_co, vec2);
@@ -454,15 +454,15 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
}
else {
VECCOPY(loc, flbr->oloc);
- VecSubf(vec, flbr->loc, flbr->oloc);
- VecMulf(vec, 1.0/bbd->timestep);
+ sub_v3_v3v3(vec, flbr->loc, flbr->oloc);
+ mul_v3_fl(vec, 1.0/bbd->timestep);
}
/* fac is seconds behind leader */
VECADDFAC(loc, loc, vec, -flbr->distance);
- VecSubf(bbd->wanted_co, loc, pa->prev_state.co);
- bbd->wanted_speed = VecLength(bbd->wanted_co);
+ sub_v3_v3v3(bbd->wanted_co, loc, pa->prev_state.co);
+ bbd->wanted_speed = len_v3(bbd->wanted_co);
ret = 1;
}
@@ -473,13 +473,13 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
for(i = 0; i< bbd->sim->psys->totpart; i+=n){
VECCOPY(vec, bbd->sim->psys->particles[i].prev_state.vel);
- VecSubf(loc, pa->prev_state.co, bbd->sim->psys->particles[i].prev_state.co);
+ sub_v3_v3v3(loc, pa->prev_state.co, bbd->sim->psys->particles[i].prev_state.co);
- mul = Inpf(vec, vec);
+ mul = dot_v3v3(vec, vec);
/* leader is not moving */
if(mul < 0.01) {
- len = VecLength(loc);
+ len = len_v3(loc);
/* too close to leader */
if(len < 2.0f * val->personal_space * pa->size) {
VECCOPY(bbd->wanted_co, loc);
@@ -488,16 +488,16 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
}
}
else {
- t = Inpf(loc, vec)/mul;
+ t = dot_v3v3(loc, vec)/mul;
/* possible blocking of leader in near future */
if(t > 0.0f && t < t_min) {
VECCOPY(vec2, vec);
- VecMulf(vec2, t);
+ mul_v3_fl(vec2, t);
- VecSubf(vec2, loc, vec2);
+ sub_v3_v3v3(vec2, loc, vec2);
- len = VecLength(vec2);
+ len = len_v3(vec2);
if(len < 2.0f * val->personal_space * pa->size) {
t_min = t;
@@ -524,8 +524,8 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
/* fac is seconds behind leader */
VECADDFAC(loc, loc, vec, -flbr->distance);
- VecSubf(bbd->wanted_co, loc, pa->prev_state.co);
- bbd->wanted_speed = VecLength(bbd->wanted_co);
+ sub_v3_v3v3(bbd->wanted_co, loc, pa->prev_state.co);
+ bbd->wanted_speed = len_v3(bbd->wanted_co);
ret = 1;
}
@@ -544,30 +544,30 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
bpa->wander[1] += asbr->wander * (-1.0f + 2.0f * BLI_frand());
bpa->wander[2] += asbr->wander * (-1.0f + 2.0f * BLI_frand());
- Normalize(bpa->wander);
+ normalize_v3(bpa->wander);
VECCOPY(vec, bpa->wander);
- QuatMulVecf(pa->prev_state.rot, vec);
+ mul_qt_v3(pa->prev_state.rot, vec);
VECCOPY(bbd->wanted_co, pa->prev_state.ave);
- VecMulf(bbd->wanted_co, 1.1f);
+ mul_v3_fl(bbd->wanted_co, 1.1f);
- VecAddf(bbd->wanted_co, bbd->wanted_co, vec);
+ add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
/* leveling */
if(asbr->level > 0.0f) {
- Projf(vec, bbd->wanted_co, bbd->sim->psys->part->acc);
- VecMulf(vec, asbr->level);
- VecSubf(bbd->wanted_co, bbd->wanted_co, vec);
+ project_v3_v3v3(vec, bbd->wanted_co, bbd->sim->psys->part->acc);
+ mul_v3_fl(vec, asbr->level);
+ sub_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
}
}
else {
VECCOPY(bbd->wanted_co, pa->prev_state.ave);
/* may happen at birth */
- if(Inp2f(bbd->wanted_co,bbd->wanted_co)==0.0f) {
+ if(dot_v2v2(bbd->wanted_co,bbd->wanted_co)==0.0f) {
bbd->wanted_co[0] = 2.0f*(0.5f - BLI_frand());
bbd->wanted_co[1] = 2.0f*(0.5f - BLI_frand());
bbd->wanted_co[2] = 2.0f*(0.5f - BLI_frand());
@@ -575,9 +575,9 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
/* leveling */
if(asbr->level > 0.0f) {
- Projf(vec, bbd->wanted_co, bbd->sim->psys->part->acc);
- VecMulf(vec, asbr->level);
- VecSubf(bbd->wanted_co, bbd->wanted_co, vec);
+ project_v3_v3v3(vec, bbd->wanted_co, bbd->sim->psys->part->acc);
+ mul_v3_fl(vec, asbr->level);
+ sub_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
}
}
@@ -641,20 +641,20 @@ static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
}
/* decide action if enemy presence found */
if(e_strength > 0.0f) {
- VecSubf(bbd->wanted_co, closest_enemy, pa->prev_state.co);
+ sub_v3_v3v3(bbd->wanted_co, closest_enemy, pa->prev_state.co);
/* attack if in range */
if(closest_dist <= bbd->part->boids->range + pa->size + enemy_pa->size) {
float damage = BLI_frand();
float enemy_dir[3] = {bbd->wanted_co[0],bbd->wanted_co[1],bbd->wanted_co[2]};
- Normalize(enemy_dir);
+ normalize_v3(enemy_dir);
/* fight mode */
bbd->wanted_speed = 0.0f;
/* must face enemy to fight */
- if(Inpf(pa->prev_state.ave, enemy_dir)>0.5f) {
+ if(dot_v3v3(pa->prev_state.ave, enemy_dir)>0.5f) {
bpa = enemy_pa->boid;
bpa->data.health -= bbd->part->boids->strength * bbd->timestep * ((1.0f-bbd->part->boids->accuracy)*damage + bbd->part->boids->accuracy);
}
@@ -669,7 +669,7 @@ static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
if(bpa->data.health/bbd->part->boids->health * bbd->part->boids->aggression < e_strength / f_strength) {
/* decide to flee */
if(closest_dist < fbr->flee_distance * fbr->distance) {
- VecMulf(bbd->wanted_co, -1.0f);
+ mul_v3_fl(bbd->wanted_co, -1.0f);
bbd->wanted_speed = val->max_speed;
}
else { /* wait for better odds */
@@ -735,7 +735,7 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float *gro
/* take surface velocity into account */
closest_point_on_surface(surmd, pa->state.co, x, NULL, v);
- VecAddf(x, x, v);
+ add_v3_v3v3(x, x, v);
/* get actual position on surface */
closest_point_on_surface(surmd, x, ground_co, ground_nor, NULL);
@@ -754,12 +754,12 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float *gro
VECCOPY(col.co1, pa->state.co);
VECCOPY(col.co2, pa->state.co);
- VecAddf(col.co1, col.co1, zvec);
- VecSubf(col.co2, col.co2, zvec);
- VecSubf(ray_dir, col.co2, col.co1);
+ add_v3_v3v3(col.co1, col.co1, zvec);
+ sub_v3_v3v3(col.co2, col.co2, zvec);
+ sub_v3_v3v3(ray_dir, col.co2, col.co1);
col.t = 0.0f;
hit.index = -1;
- hit.dist = col.ray_len = VecLength(ray_dir);
+ hit.dist = col.ray_len = len_v3(ray_dir);
/* find out upmost deflector object */
for(coll = bbd->sim->colliders->first; coll; coll = coll->next){
@@ -772,9 +772,9 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float *gro
/* then use that object */
if(hit.index>=0) {
t = hit.dist/col.ray_len;
- VecLerpf(ground_co, col.co1, col.co2, t);
+ interp_v3_v3v3(ground_co, col.co1, col.co2, t);
VECCOPY(ground_nor, col.nor);
- Normalize(ground_nor);
+ normalize_v3(ground_nor);
return col.hit_ob;
}
else {
@@ -829,23 +829,23 @@ static void boid_climb(BoidSettings *boids, ParticleData *pa, float *surface_co,
/* gather apparent gravity */
VECADDFAC(bpa->gravity, bpa->gravity, surface_nor, -1.0);
- Normalize(bpa->gravity);
+ normalize_v3(bpa->gravity);
/* raise boid it's size from surface */
- VecMulf(nor, pa->size * boids->height);
- VecAddf(pa->state.co, surface_co, nor);
+ mul_v3_fl(nor, pa->size * boids->height);
+ add_v3_v3v3(pa->state.co, surface_co, nor);
/* remove normal component from velocity */
- Projf(vel, pa->state.vel, surface_nor);
- VecSubf(pa->state.vel, pa->state.vel, vel);
+ project_v3_v3v3(vel, pa->state.vel, surface_nor);
+ sub_v3_v3v3(pa->state.vel, pa->state.vel, vel);
}
static float boid_goal_signed_dist(float *boid_co, float *goal_co, float *goal_nor)
{
float vec[3];
- VecSubf(vec, boid_co, goal_co);
+ sub_v3_v3v3(vec, boid_co, goal_co);
- return Inpf(vec, goal_nor);
+ return dot_v3v3(vec, goal_nor);
}
/* wanted_co is relative to boid location */
static int apply_boid_rule(BoidBrainData *bbd, BoidRule *rule, BoidValues *val, ParticleData *pa, float fuzziness)
@@ -859,7 +859,7 @@ static int apply_boid_rule(BoidBrainData *bbd, BoidRule *rule, BoidValues *val,
if(boid_rules[rule->type](rule, bbd, val, pa)==0)
return 0;
- if(fuzziness < 0.0f || VecLenCompare(bbd->wanted_co, pa->prev_state.vel, fuzziness * VecLength(pa->prev_state.vel))==0)
+ if(fuzziness < 0.0f || compare_len_v3v3(bbd->wanted_co, pa->prev_state.vel, fuzziness * len_v3(pa->prev_state.vel))==0)
return 1;
else
return 0;
@@ -943,7 +943,7 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
int n = 0;
for(rule = state->rules.first; rule; rule=rule->next) {
if(apply_boid_rule(bbd, rule, &val, pa, -1.0f)) {
- VecAddf(wanted_co, wanted_co, bbd->wanted_co);
+ add_v3_v3v3(wanted_co, wanted_co, bbd->wanted_co);
wanted_speed += bbd->wanted_speed;
n++;
bbd->wanted_co[0]=bbd->wanted_co[1]=bbd->wanted_co[2]=bbd->wanted_speed=0.0f;
@@ -951,7 +951,7 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
}
if(n > 1) {
- VecMulf(wanted_co, 1.0f/(float)n);
+ mul_v3_fl(wanted_co, 1.0f/(float)n);
wanted_speed /= (float)n;
}
@@ -971,12 +971,12 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
float cvel[3], dir[3];
VECCOPY(dir, pa->prev_state.ave);
- Normalize2(dir);
+ normalize_v2(dir);
VECCOPY(cvel, bbd->wanted_co);
- Normalize2(cvel);
+ normalize_v2(cvel);
- if(Inp2f(cvel, dir) > 0.95 / mul)
+ if(dot_v2v2(cvel, dir) > 0.95 / mul)
bpa->data.mode = eBoidMode_Liftoff;
}
else if(val.jump_speed > 0.0f) {
@@ -990,20 +990,20 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
float len;
VECCOPY(dir, pa->prev_state.ave);
- Normalize2(dir);
+ normalize_v2(dir);
VECCOPY(cvel, bbd->wanted_co);
- Normalize2(cvel);
+ normalize_v2(cvel);
- len = Vec2Length(pa->prev_state.vel);
+ len = len_v2(pa->prev_state.vel);
/* first of all, are we going in a suitable direction? */
/* or at a suitably slow speed */
- if(Inp2f(cvel, dir) > 0.95f / mul || len <= state->rule_fuzziness) {
+ if(dot_v2v2(cvel, dir) > 0.95f / mul || len <= state->rule_fuzziness) {
/* try to reach goal at highest point of the parabolic path */
- cur_v = Vec2Length(pa->prev_state.vel);
+ cur_v = len_v2(pa->prev_state.vel);
z_v = sasqrt(-2.0f * bbd->part->acc[2] * bbd->wanted_co[2]);
- ground_v = Vec2Length(bbd->wanted_co)*sasqrt(-0.5f * bbd->part->acc[2] / bbd->wanted_co[2]);
+ ground_v = len_v2(bbd->wanted_co)*sasqrt(-0.5f * bbd->part->acc[2] / bbd->wanted_co[2]);
len = sasqrt((ground_v-cur_v)*(ground_v-cur_v) + z_v*z_v);
@@ -1014,11 +1014,11 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
VECCOPY(jump_v, dir);
jump_v[2] = z_v;
- VecMulf(jump_v, ground_v);
+ mul_v3_fl(jump_v, ground_v);
- Normalize(jump_v);
- VecMulf(jump_v, len);
- Vec2Addf(jump_v, jump_v, pa->prev_state.vel);
+ normalize_v3(jump_v);
+ mul_v3_fl(jump_v, len);
+ add_v2_v2v2(jump_v, jump_v, pa->prev_state.vel);
}
}
}
@@ -1103,7 +1103,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
VECCOPY(old_dir, pa->prev_state.ave);
VECCOPY(wanted_dir, bbd->wanted_co);
- new_speed = Normalize(wanted_dir);
+ new_speed = normalize_v3(wanted_dir);
/* first check if we have valid direction we want to go towards */
if(new_speed == 0.0f) {
@@ -1111,39 +1111,39 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
}
else {
float old_dir2[2], wanted_dir2[2], nor[3], angle;
- Vec2Copyf(old_dir2, old_dir);
- Normalize2(old_dir2);
- Vec2Copyf(wanted_dir2, wanted_dir);
- Normalize2(wanted_dir2);
+ copy_v2_v2(old_dir2, old_dir);
+ normalize_v2(old_dir2);
+ copy_v2_v2(wanted_dir2, wanted_dir);
+ normalize_v2(wanted_dir2);
/* choose random direction to turn if wanted velocity */
/* is directly behind regardless of z-coordinate */
- if(Inp2f(old_dir2, wanted_dir2) < -0.99f) {
+ if(dot_v2v2(old_dir2, wanted_dir2) < -0.99f) {
wanted_dir[0] = 2.0f*(0.5f - BLI_frand());
wanted_dir[1] = 2.0f*(0.5f - BLI_frand());
wanted_dir[2] = 2.0f*(0.5f - BLI_frand());
- Normalize(wanted_dir);
+ normalize_v3(wanted_dir);
}
/* constrain direction with maximum angular velocity */
- angle = saacos(Inpf(old_dir, wanted_dir));
+ angle = saacos(dot_v3v3(old_dir, wanted_dir));
angle = MIN2(angle, val.max_ave);
- Crossf(nor, old_dir, wanted_dir);
- VecRotToQuat(nor, angle, q);
+ cross_v3_v3v3(nor, old_dir, wanted_dir);
+ axis_angle_to_quat( q,nor, angle);
VECCOPY(new_dir, old_dir);
- QuatMulVecf(q, new_dir);
- Normalize(new_dir);
+ mul_qt_v3(q, new_dir);
+ normalize_v3(new_dir);
/* save direction in case resulting velocity too small */
- VecRotToQuat(nor, angle*dtime, q);
+ axis_angle_to_quat( q,nor, angle*dtime);
VECCOPY(pa->state.ave, old_dir);
- QuatMulVecf(q, pa->state.ave);
- Normalize(pa->state.ave);
+ mul_qt_v3(q, pa->state.ave);
+ normalize_v3(pa->state.ave);
}
/* constrain speed with maximum acceleration */
- old_speed = VecLength(pa->prev_state.vel);
+ old_speed = len_v3(pa->prev_state.vel);
if(bbd->wanted_speed < old_speed)
new_speed = MAX2(bbd->wanted_speed, old_speed - val.max_acc);
@@ -1152,11 +1152,11 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* combine direction and speed */
VECCOPY(new_vel, new_dir);
- VecMulf(new_vel, new_speed);
+ mul_v3_fl(new_vel, new_speed);
/* maintain minimum flying velocity if not landing */
if(level >= landing_level) {
- float len2 = Inp2f(new_vel,new_vel);
+ float len2 = dot_v2v2(new_vel,new_vel);
float root;
len2 = MAX2(len2, val.min_speed*val.min_speed);
@@ -1164,20 +1164,20 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
new_vel[2] = new_vel[2] < 0.0f ? -root : root;
- Normalize2(new_vel);
- Vec2Mulf(new_vel, sasqrt(len2));
+ normalize_v2(new_vel);
+ mul_v2_fl(new_vel, sasqrt(len2));
}
/* finally constrain speed to max speed */
- new_speed = Normalize(new_vel);
- VecMulf(new_vel, MIN2(new_speed, val.max_speed));
+ new_speed = normalize_v3(new_vel);
+ mul_v3_fl(new_vel, MIN2(new_speed, val.max_speed));
/* get acceleration from difference of velocities */
- VecSubf(acc, new_vel, pa->prev_state.vel);
+ sub_v3_v3v3(acc, new_vel, pa->prev_state.vel);
/* break acceleration to components */
- Projf(tan_acc, acc, pa->prev_state.ave);
- VecSubf(nor_acc, acc, tan_acc);
+ project_v3_v3v3(tan_acc, acc, pa->prev_state.ave);
+ sub_v3_v3v3(nor_acc, acc, tan_acc);
}
/* account for effectors */
@@ -1185,32 +1185,32 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
pdDoEffectors(bbd->sim->psys->effectors, bbd->sim->colliders, bbd->part->effector_weights, &epoint, force, NULL);
if(ELEM(bpa->data.mode, eBoidMode_OnLand, eBoidMode_Climbing)) {
- float length = Normalize(force);
+ float length = normalize_v3(force);
length = MAX2(0.0f, length - boids->land_stick_force);
- VecMulf(force, length);
+ mul_v3_fl(force, length);
}
- VecAddf(acc, acc, force);
+ add_v3_v3v3(acc, acc, force);
/* store smoothed acceleration for nice banking etc. */
VECADDFAC(bpa->data.acc, bpa->data.acc, acc, dtime);
- VecMulf(bpa->data.acc, 1.0f / (1.0f + dtime));
+ mul_v3_fl(bpa->data.acc, 1.0f / (1.0f + dtime));
/* integrate new location & velocity */
/* by regarding the acceleration as a force at this stage we*/
/* can get better control allthough it's a bit unphysical */
- VecMulf(acc, 1.0f/pa_mass);
+ mul_v3_fl(acc, 1.0f/pa_mass);
VECCOPY(dvec, acc);
- VecMulf(dvec, dtime*dtime*0.5f);
+ mul_v3_fl(dvec, dtime*dtime*0.5f);
VECCOPY(bvec, pa->prev_state.vel);
- VecMulf(bvec, dtime);
- VecAddf(dvec, dvec, bvec);
- VecAddf(pa->state.co, pa->state.co, dvec);
+ mul_v3_fl(bvec, dtime);
+ add_v3_v3v3(dvec, dvec, bvec);
+ add_v3_v3v3(pa->state.co, pa->state.co, dvec);
VECADDFAC(pa->state.vel, pa->state.vel, acc, dtime);
@@ -1224,9 +1224,9 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
float grav[3] = {0.0f, 0.0f, bbd->part->acc[2] < 0.0f ? -1.0f : 0.0f};
/* don't take forward acceleration into account (better banking) */
- if(Inpf(bpa->data.acc, pa->state.vel) > 0.0f) {
- Projf(dvec, bpa->data.acc, pa->state.vel);
- VecSubf(dvec, bpa->data.acc, dvec);
+ if(dot_v3v3(bpa->data.acc, pa->state.vel) > 0.0f) {
+ project_v3_v3v3(dvec, bpa->data.acc, pa->state.vel);
+ sub_v3_v3v3(dvec, bpa->data.acc, dvec);
}
else {
VECCOPY(dvec, bpa->data.acc);
@@ -1234,7 +1234,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* gather apparent gravity */
VECADDFAC(bpa->gravity, grav, dvec, -boids->banking);
- Normalize(bpa->gravity);
+ normalize_v3(bpa->gravity);
/* stick boid on goal when close enough */
if(bbd->goal_ob && boid_goal_signed_dist(pa->state.co, bbd->goal_co, bbd->goal_nor) <= pa->size * boids->height) {
@@ -1257,7 +1257,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* gather apparent gravity */
VECADDFAC(bpa->gravity, bpa->gravity, grav, dtime);
- Normalize(bpa->gravity);
+ normalize_v3(bpa->gravity);
if(boids->options & BOID_ALLOW_LAND) {
/* stick boid on goal when close enough */
@@ -1289,15 +1289,15 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
///* gather apparent gravity to r_ve */
//VECADDFAC(pa->r_ve, pa->r_ve, ground_nor, -1.0);
- //Normalize(pa->r_ve);
+ //normalize_v3(pa->r_ve);
///* raise boid it's size from surface */
- //VecMulf(nor, pa->size * boids->height);
- //VecAddf(pa->state.co, ground_co, nor);
+ //mul_v3_fl(nor, pa->size * boids->height);
+ //add_v3_v3v3(pa->state.co, ground_co, nor);
///* remove normal component from velocity */
- //Projf(v, pa->state.vel, ground_nor);
- //VecSubf(pa->state.vel, pa->state.vel, v);
+ //project_v3_v3v3(v, pa->state.vel, ground_nor);
+ //sub_v3_v3v3(pa->state.vel, pa->state.vel, v);
break;
}
case eBoidMode_OnLand:
@@ -1323,19 +1323,19 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* Don't take gravity's strength in to account, */
/* otherwise amount of banking is hard to control. */
VECCOPY(grav, ground_nor);
- VecMulf(grav, -1.0f);
+ mul_v3_fl(grav, -1.0f);
- Projf(dvec, bpa->data.acc, pa->state.vel);
- VecSubf(dvec, bpa->data.acc, dvec);
+ project_v3_v3v3(dvec, bpa->data.acc, pa->state.vel);
+ sub_v3_v3v3(dvec, bpa->data.acc, dvec);
/* gather apparent gravity */
VECADDFAC(bpa->gravity, grav, dvec, -boids->banking);
- Normalize(bpa->gravity);
+ normalize_v3(bpa->gravity);
}
else {
/* gather negative surface normal */
VECADDFAC(bpa->gravity, bpa->gravity, ground_nor, -1.0f);
- Normalize(bpa->gravity);
+ normalize_v3(bpa->gravity);
}
break;
}
@@ -1343,36 +1343,36 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* save direction to state.ave unless the boid is falling */
/* (boids can't effect their direction when falling) */
- if(bpa->data.mode!=eBoidMode_Falling && VecLength(pa->state.vel) > 0.1*pa->size) {
+ if(bpa->data.mode!=eBoidMode_Falling && len_v3(pa->state.vel) > 0.1*pa->size) {
VECCOPY(pa->state.ave, pa->state.vel);
- Normalize(pa->state.ave);
+ normalize_v3(pa->state.ave);
}
/* apply damping */
if(ELEM(bpa->data.mode, eBoidMode_OnLand, eBoidMode_Climbing))
- VecMulf(pa->state.vel, 1.0f - 0.2f*bbd->part->dampfac);
+ mul_v3_fl(pa->state.vel, 1.0f - 0.2f*bbd->part->dampfac);
/* calculate rotation matrix based on forward & down vectors */
if(bpa->data.mode == eBoidMode_InAir) {
VECCOPY(mat[0], pa->state.ave);
- Projf(dvec, bpa->gravity, pa->state.ave);
- VecSubf(mat[2], bpa->gravity, dvec);
- Normalize(mat[2]);
+ project_v3_v3v3(dvec, bpa->gravity, pa->state.ave);
+ sub_v3_v3v3(mat[2], bpa->gravity, dvec);
+ normalize_v3(mat[2]);
}
else {
- Projf(dvec, pa->state.ave, bpa->gravity);
- VecSubf(mat[0], pa->state.ave, dvec);
- Normalize(mat[0]);
+ project_v3_v3v3(dvec, pa->state.ave, bpa->gravity);
+ sub_v3_v3v3(mat[0], pa->state.ave, dvec);
+ normalize_v3(mat[0]);
VECCOPY(mat[2], bpa->gravity);
}
- VecMulf(mat[2], -1.0f);
- Crossf(mat[1], mat[2], mat[0]);
+ mul_v3_fl(mat[2], -1.0f);
+ cross_v3_v3v3(mat[1], mat[2], mat[0]);
/* apply rotation */
- Mat3ToQuat_is_ok(mat, q);
- QuatCopy(pa->state.rot, q);
+ mat3_to_quat_is_ok( q,mat);
+ copy_qt_qt(pa->state.rot, q);
}
BoidRule *boid_new_rule(int type)
diff --git a/source/blender/blenkernel/intern/booleanops.c b/source/blender/blenkernel/intern/booleanops.c
index 1f6457199fb..68e1f61a800 100644
--- a/source/blender/blenkernel/intern/booleanops.c
+++ b/source/blender/blenkernel/intern/booleanops.c
@@ -33,7 +33,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
@@ -104,7 +104,7 @@ static void VertexIt_Fill(CSG_IteratorPtr it, CSG_IVertex *vert)
float global_pos[3];
/* boolean happens in global space, transform both with obmat */
- VecMat4MulVecfl(
+ mul_v3_m4v3(
global_pos,
iterator->ob->obmat,
verts[iterator->pos].co
@@ -327,11 +327,11 @@ static void InterpCSGFace(
for (j = 0; j < nr; j++) {
// get coordinate into the space of the original mesh
if (mapmat)
- VecMat4MulVecfl(obco, mapmat, co[j]);
+ mul_v3_m4v3(obco, mapmat, co[j]);
else
- VecCopyf(obco, co[j]);
+ copy_v3_v3(obco, co[j]);
- InterpWeightsQ3Dfl(orig_co[0], orig_co[1], orig_co[2], orig_co[3], obco, w[j]);
+ interp_weights_face_v3( w[j],orig_co[0], orig_co[1], orig_co[2], orig_co[3], obco);
}
CustomData_interp(&orig_dm->faceData, &dm->faceData, &orig_index, NULL, (float*)w, 1, index);
@@ -375,7 +375,7 @@ static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh(
// we have to map the vertex coordinates back in the coordinate frame
// of the resulting object, since it was computed in world space
- VecMat4MulVecfl(mvert->co, parinv, csgvert.position);
+ mul_v3_m4v3(mvert->co, parinv, csgvert.position);
}
// a hash table to remap materials to indices
@@ -478,9 +478,9 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
// we map the final object back into ob's local coordinate space. For this
// we need to compute the inverse transform from global to ob (inv_mat),
// and the transform from ob to ob_select for use in interpolation (map_mat)
- Mat4Invert(inv_mat, ob->obmat);
- Mat4MulMat4(map_mat, ob_select->obmat, inv_mat);
- Mat4Invert(inv_mat, ob_select->obmat);
+ invert_m4_m4(inv_mat, ob->obmat);
+ mul_m4_m4m4(map_mat, ob_select->obmat, inv_mat);
+ invert_m4_m4(inv_mat, ob_select->obmat);
{
// interface with the boolean module:
diff --git a/source/blender/blenkernel/intern/booleanops_mesh.c b/source/blender/blenkernel/intern/booleanops_mesh.c
index 14e32873dbd..15a3d042622 100644
--- a/source/blender/blenkernel/intern/booleanops_mesh.c
+++ b/source/blender/blenkernel/intern/booleanops_mesh.c
@@ -47,7 +47,7 @@
#include "BKE_library.h"
#include "BKE_material.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
/**
* Implementation of boolean ops mesh interface.
@@ -151,7 +151,7 @@ CSG_AddMeshToBlender(
if (mesh == NULL) return 0;
if (mesh->base == NULL) return 0;
- Mat4Invert(inv_mat,mesh->base->object->obmat);
+ invert_m4_m4(inv_mat,mesh->base->object->obmat);
// Create a new blender mesh object - using 'base' as
// a template for the new object.
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 115d31b587c..a9d72d93091 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -42,7 +42,7 @@
#include "RNA_access.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
@@ -83,7 +83,7 @@ Brush *add_brush(const char *name)
brush->clone.alpha= 0.5;
brush->sculpt_tool = SCULPT_TOOL_DRAW;
- brush_curve_preset(brush, BRUSH_PRESET_SHARP);
+ brush_curve_preset(brush, BRUSH_PRESET_SMOOTH);
/* enable fake user by default */
brush->id.flag |= LIB_FAKEUSER;
@@ -252,7 +252,7 @@ void brush_curve_preset(Brush *b, BrushCurvePreset preset)
if(preset == BRUSH_PRESET_SHARP)
cm->totpoint= 3;
if(preset == BRUSH_PRESET_SMOOTH)
- cm->totpoint= 6;
+ cm->totpoint= 4;
if(preset == BRUSH_PRESET_MAX)
cm->totpoint= 2;
@@ -271,16 +271,12 @@ void brush_curve_preset(Brush *b, BrushCurvePreset preset)
else if(preset == BRUSH_PRESET_SMOOTH) {
cm->curve[0].x= 0;
cm->curve[0].y= 1;
- cm->curve[1].x= 0.1;
- cm->curve[1].y= 0.97553;
- cm->curve[2].x= 0.3;
- cm->curve[2].y= 0.79389;
- cm->curve[3].x= 0.9;
- cm->curve[3].y= 0.02447;
- cm->curve[4].x= 0.7;
- cm->curve[4].y= 0.20611;
- cm->curve[5].x= 1;
- cm->curve[5].y= 0;
+ cm->curve[1].x= 0.25;
+ cm->curve[1].y= 0.92;
+ cm->curve[2].x= 0.75;
+ cm->curve[2].y= 0.08;
+ cm->curve[3].x= 1;
+ cm->curve[3].y= 0;
}
else if(preset == BRUSH_PRESET_MAX) {
cm->curve[0].x= 0;
@@ -845,8 +841,8 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl
/* setup starting time, direction vector and accumulated time */
starttime= painter->accumtime;
- Vec2Subf(dmousepos, pos, painter->lastmousepos);
- len= Normalize2(dmousepos);
+ sub_v2_v2v2(dmousepos, pos, painter->lastmousepos);
+ len= normalize_v2(dmousepos);
painter->accumtime += curtime - painter->lasttime;
/* do paint op over unpainted time distance */
@@ -880,8 +876,8 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl
/* setup starting distance, direction vector and accumulated distance */
startdistance= painter->accumdistance;
- Vec2Subf(dmousepos, pos, painter->lastmousepos);
- len= Normalize2(dmousepos);
+ sub_v2_v2v2(dmousepos, pos, painter->lastmousepos);
+ len= normalize_v2(dmousepos);
painter->accumdistance += len;
/* do paint op over unpainted distance */
diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c
index f2526231d50..5945be51aac 100644
--- a/source/blender/blenkernel/intern/bvhutils.c
+++ b/source/blender/blenkernel/intern/bvhutils.c
@@ -45,7 +45,7 @@
#include "BKE_displist.h"
#include "BKE_global.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_linklist.h"
#include "MEM_guardedalloc.h"
@@ -55,7 +55,7 @@ static float ray_tri_intersection(const BVHTreeRay *ray, const float m_dist, con
{
float dist;
- if(RayIntersectsTriangle((float*)ray->origin, (float*)ray->direction, (float*)v0, (float*)v1, (float*)v2, &dist, NULL))
+ if(isect_ray_tri_v3((float*)ray->origin, (float*)ray->direction, (float*)v0, (float*)v1, (float*)v2, &dist, NULL))
return dist;
return FLT_MAX;
@@ -68,10 +68,10 @@ static float sphereray_tri_intersection(const BVHTreeRay *ray, float radius, con
float p1[3];
float plane_normal[3], hit_point[3];
- CalcNormFloat((float*)v0, (float*)v1, (float*)v2, plane_normal);
+ normal_tri_v3( plane_normal,(float*)v0, (float*)v1, (float*)v2);
VECADDFAC( p1, ray->origin, ray->direction, m_dist);
- if(SweepingSphereIntersectsTriangleUV((float*)ray->origin, p1, radius, (float*)v0, (float*)v1, (float*)v2, &idist, hit_point))
+ if(isect_sweeping_sphere_tri_v3((float*)ray->origin, p1, radius, (float*)v0, (float*)v1, (float*)v2, &idist, hit_point))
{
return idist * m_dist;
}
@@ -384,9 +384,9 @@ static float nearest_point_in_tri_surface(const float *v0,const float *v1,const
float w[3], x[3], y[3], z[3];
VECCOPY(w, v0);
VECCOPY(x, e0);
- VecMulf(x, S);
+ mul_v3_fl(x, S);
VECCOPY(y, e1);
- VecMulf(y, T);
+ mul_v3_fl(y, T);
VECADD(z, w, x);
VECADD(z, z, y);
//VECSUB(d, p, z);
@@ -430,7 +430,7 @@ static void mesh_faces_nearest_point(void *userdata, int index, const float *co,
nearest->index = index;
nearest->dist = dist;
VECCOPY(nearest->co, nearest_tmp);
- CalcNormFloat(t0, t1, t2, nearest->no);
+ normal_tri_v3( nearest->no,t0, t1, t2);
}
t1 = t2;
@@ -469,7 +469,7 @@ static void mesh_faces_spherecast(void *userdata, int index, const BVHTreeRay *r
hit->dist = dist;
VECADDFAC(hit->co, ray->origin, ray->direction, dist);
- CalcNormFloat(t0, t1, t2, hit->no);
+ normal_tri_v3( hit->no,t0, t1, t2);
}
t1 = t2;
@@ -492,16 +492,17 @@ static void mesh_edges_nearest_point(void *userdata, int index, const float *co,
t0 = vert[ edge->v1 ].co;
t1 = vert[ edge->v2 ].co;
- PclosestVL3Dfl(nearest_tmp, co, t0, t1);
- dist = VecLenf(nearest_tmp, co);
+ // NOTE: casts to "float*" here are due to co being "const float*"
+ closest_to_line_segment_v3(nearest_tmp, (float*)co, t0, t1);
+ dist = len_v3v3(nearest_tmp, (float*)co);
if(dist < nearest->dist)
{
nearest->index = index;
nearest->dist = dist;
VECCOPY(nearest->co, nearest_tmp);
- VecSubf(nearest->no, t0, t1);
- Normalize(nearest->no);
+ sub_v3_v3v3(nearest->no, t0, t1);
+ normalize_v3(nearest->no);
}
}
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index e38bb00fe8d..30d1b65cc8b 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -45,7 +45,7 @@
#include "BKE_multires.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_edgehash.h"
#include "BLI_editVert.h"
@@ -405,12 +405,9 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *a
/* TODO make this better (cache facenormals as layer?) */
float nor[3];
if(mface->v4) {
- CalcNormFloat4(mvert[mface->v1].co, mvert[mface->v2].co,
- mvert[mface->v3].co, mvert[mface->v4].co,
- nor);
+ normal_quad_v3( nor,mvert[mface->v1].co, mvert[mface->v2].co, mvert[mface->v3].co, mvert[mface->v4].co);
} else {
- CalcNormFloat(mvert[mface->v1].co, mvert[mface->v2].co,
- mvert[mface->v3].co, nor);
+ normal_tri_v3( nor,mvert[mface->v1].co, mvert[mface->v2].co, mvert[mface->v3].co);
}
glNormal3fv(nor);
}
@@ -579,12 +576,9 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
else {
float nor[3];
if(mf->v4) {
- CalcNormFloat4(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, mv[mf->v4].co,
- nor);
+ normal_quad_v3( nor,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co, mv[mf->v4].co);
} else {
- CalcNormFloat(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, nor);
+ normal_tri_v3( nor,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co);
}
glNormal3fv(nor);
}
@@ -754,12 +748,9 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us
else {
float nor[3];
if(mf->v4) {
- CalcNormFloat4(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, mv[mf->v4].co,
- nor);
+ normal_quad_v3( nor,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co, mv[mf->v4].co);
} else {
- CalcNormFloat(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, nor);
+ normal_tri_v3( nor,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co);
}
glNormal3fv(nor);
}
@@ -929,12 +920,9 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
/* TODO ideally a normal layer should always be available */
float nor[3];
if(mface->v4) {
- CalcNormFloat4(mvert[mface->v1].co, mvert[mface->v2].co,
- mvert[mface->v3].co, mvert[mface->v4].co,
- nor);
+ normal_quad_v3( nor,mvert[mface->v1].co, mvert[mface->v2].co, mvert[mface->v3].co, mvert[mface->v4].co);
} else {
- CalcNormFloat(mvert[mface->v1].co, mvert[mface->v2].co,
- mvert[mface->v3].co, nor);
+ normal_tri_v3( nor,mvert[mface->v1].co, mvert[mface->v2].co, mvert[mface->v3].co);
}
glNormal3fv(nor);
}
@@ -1271,18 +1259,16 @@ static void cdDM_foreachMappedFaceCenter(
orig = i;
VECCOPY(cent, mv[mf->v1].co);
- VecAddf(cent, cent, mv[mf->v2].co);
- VecAddf(cent, cent, mv[mf->v3].co);
+ add_v3_v3v3(cent, cent, mv[mf->v2].co);
+ add_v3_v3v3(cent, cent, mv[mf->v3].co);
if (mf->v4) {
- CalcNormFloat4(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, mv[mf->v4].co, no);
- VecAddf(cent, cent, mv[mf->v4].co);
- VecMulf(cent, 0.25f);
+ normal_quad_v3( no,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co, mv[mf->v4].co);
+ add_v3_v3v3(cent, cent, mv[mf->v4].co);
+ mul_v3_fl(cent, 0.25f);
} else {
- CalcNormFloat(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, no);
- VecMulf(cent, 0.33333333333f);
+ normal_tri_v3( no,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co);
+ mul_v3_fl(cent, 0.33333333333f);
}
func(userData, orig, cent, no);
@@ -1630,26 +1616,24 @@ void CDDM_calc_normals(DerivedMesh *dm)
float *f_no = face_nors[i];
if(mf->v4)
- CalcNormFloat4(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, mv[mf->v4].co, f_no);
+ normal_quad_v3( f_no,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co, mv[mf->v4].co);
else
- CalcNormFloat(mv[mf->v1].co, mv[mf->v2].co,
- mv[mf->v3].co, f_no);
+ normal_tri_v3( f_no,mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co);
- VecAddf(temp_nors[mf->v1], temp_nors[mf->v1], f_no);
- VecAddf(temp_nors[mf->v2], temp_nors[mf->v2], f_no);
- VecAddf(temp_nors[mf->v3], temp_nors[mf->v3], f_no);
+ add_v3_v3v3(temp_nors[mf->v1], temp_nors[mf->v1], f_no);
+ add_v3_v3v3(temp_nors[mf->v2], temp_nors[mf->v2], f_no);
+ add_v3_v3v3(temp_nors[mf->v3], temp_nors[mf->v3], f_no);
if(mf->v4)
- VecAddf(temp_nors[mf->v4], temp_nors[mf->v4], f_no);
+ add_v3_v3v3(temp_nors[mf->v4], temp_nors[mf->v4], f_no);
}
/* normalize vertex normals and assign */
for(i = 0; i < numVerts; i++, mv++) {
float *no = temp_nors[i];
- if (Normalize(no) == 0.0) {
+ if (normalize_v3(no) == 0.0) {
VECCOPY(no, mv->co);
- Normalize(no);
+ normalize_v3(no);
}
mv->no[0] = (short)(no[0] * 32767.0);
@@ -1860,7 +1844,7 @@ DerivedMesh *MultiresDM_new(MultiresSubsurf *ms, DerivedMesh *orig, int numVerts
mvert = CustomData_get_layer(&orig->vertData, CD_MVERT);
mrdm->orco = MEM_callocN(sizeof(float) * 3 * orig->getNumVerts(orig), "multires orco");
for(i = 0; i < orig->getNumVerts(orig); ++i)
- VecCopyf(mrdm->orco[i], mvert[i].co);
+ copy_v3_v3(mrdm->orco[i], mvert[i].co);
}
else
DM_init(dm, numVerts, numEdges, numFaces);
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 74f88a77e63..6c4c7daea7f 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -131,6 +131,7 @@ void cloth_init ( ClothModifierData *clmd )
clmd->sim_parms->avg_spring_len = 0.0;
clmd->sim_parms->presets = 2; /* cotton as start setting */
clmd->sim_parms->timescale = 1.0f; /* speed factor, describes how fast cloth moves */
+ clmd->sim_parms->reset = 0;
clmd->coll_parms->self_friction = 5.0;
clmd->coll_parms->friction = 5.0;
@@ -403,7 +404,7 @@ static int do_step_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul
/* Get the current position. */
VECCOPY(verts->xconst, mvert[i].co);
- Mat4MulVecfl(ob->obmat, verts->xconst);
+ mul_m4_v3(ob->obmat, verts->xconst);
}
effectors = pdInitEffectors(clmd->scene, ob, NULL, clmd->sim_parms->effector_weights);
@@ -450,6 +451,18 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
cache->last_exact= 0;
return dm;
}
+
+ if(clmd->sim_parms->reset || (framenr == (startframe - clmd->sim_parms->preroll)))
+ {
+ clmd->sim_parms->reset = 0;
+ cache->flag |= PTCACHE_REDO_NEEDED;
+ BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
+ cache->simframe= 0;
+ cache->last_exact= 0;
+ cache->flag |= PTCACHE_SIMULATION_VALID;
+ cache->flag &= ~PTCACHE_REDO_NEEDED;
+ return result;
+ }
/* verify we still have the same number of vertices, if not do nothing.
* note that this should only happen if the number of vertices changes
@@ -468,7 +481,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
clmd->sim_parms->dt = clmd->sim_parms->timescale / clmd->sim_parms->stepsPerFrame;
/* handle continuous simulation with the play button */
- if(BKE_ptcache_get_continue_physics()) {
+ if(BKE_ptcache_get_continue_physics() || ((clmd->sim_parms->preroll > 0) && (framenr > startframe - clmd->sim_parms->preroll) && (framenr < startframe))) {
cache->flag &= ~PTCACHE_SIMULATION_VALID;
cache->simframe= 0;
cache->last_exact= 0;
@@ -503,7 +516,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
if(!do_init_cloth(ob, clmd, result, framenr))
return result;
- if(framenr == startframe) {
+ if((framenr == startframe) && (clmd->sim_parms->preroll == 0)) {
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
do_init_cloth(ob, clmd, result, framenr);
cache->simframe= framenr;
@@ -723,7 +736,7 @@ static void cloth_to_object (Object *ob, ClothModifierData *clmd, DerivedMesh *
if (clmd->clothObject) {
/* inverse matrix is not uptodate... */
- Mat4Invert (ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
mvert = CDDM_get_verts(dm);
numverts = dm->getNumVerts(dm);
@@ -731,7 +744,7 @@ static void cloth_to_object (Object *ob, ClothModifierData *clmd, DerivedMesh *
for (i = 0; i < numverts; i++)
{
VECCOPY (mvert[i].co, cloth->verts[i].x);
- Mat4MulVecfl (ob->imat, mvert[i].co); /* cloth is in global coords */
+ mul_m4_v3(ob->imat, mvert[i].co); /* cloth is in global coords */
}
}
}
@@ -867,7 +880,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d
if(first)
{
VECCOPY ( verts->x, mvert[i].co );
- Mat4MulVecfl ( ob->obmat, verts->x );
+ mul_m4_v3( ob->obmat, verts->x );
}
/* no GUI interface yet */
@@ -884,7 +897,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d
VECCOPY ( verts->xconst, verts->x );
VECCOPY ( verts->txold, verts->x );
VECCOPY ( verts->tx, verts->x );
- VecMulf ( verts->v, 0.0f );
+ mul_v3_fl( verts->v, 0.0f );
verts->impulse_count = 0;
VECCOPY ( verts->impulse, tnull );
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index 8c664bc1a57..2ea54ac1f03 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -529,7 +529,7 @@ int cloth_collision_response_static ( ClothModifierData *clmd, CollisionModifier
// calculate tangential velocity
VECCOPY ( temp, collpair->normal );
- VecMulf ( temp, magrelVel );
+ mul_v3_fl( temp, magrelVel );
VECSUB ( vrel_t_pre, relativeVelocity, temp );
// Decrease in magnitude of relative tangential velocity due to coulomb friction
@@ -539,7 +539,7 @@ int cloth_collision_response_static ( ClothModifierData *clmd, CollisionModifier
// Apply friction impulse.
if ( magtangent > ALMOST_ZERO )
{
- Normalize ( vrel_t_pre );
+ normalize_v3( vrel_t_pre );
impulse = magtangent / ( 1.0 + w1*w1 + w2*w2 + w3*w3 ); // 2.0 *
VECADDMUL ( cloth1->verts[collpair->ap1].impulse, vrel_t_pre, w1 * impulse );
@@ -681,7 +681,7 @@ CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap
if ( distance <= ( epsilon1 + epsilon2 + ALMOST_ZERO ) )
{
VECCOPY ( collpair->normal, collpair->vector );
- Normalize ( collpair->normal );
+ normalize_v3( collpair->normal );
collpair->distance = distance;
collpair->flag = 0;
@@ -726,6 +726,7 @@ CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap
return collpair;
}
+#if 0
static int cloth_collision_response_moving( ClothModifierData *clmd, CollisionModifierData *collmd, CollPair *collpair, CollPair *collision_end )
{
int result = 0;
@@ -778,7 +779,7 @@ static int cloth_collision_response_moving( ClothModifierData *clmd, CollisionMo
// calculate tangential velocity
VECCOPY ( temp, collpair->normal );
- VecMulf ( temp, magrelVel );
+ mul_v3_fl( temp, magrelVel );
VECSUB ( vrel_t_pre, relativeVelocity, temp );
// Decrease in magnitude of relative tangential velocity due to coulomb friction
@@ -788,7 +789,7 @@ static int cloth_collision_response_moving( ClothModifierData *clmd, CollisionMo
// Apply friction impulse.
if ( magtangent > ALMOST_ZERO )
{
- Normalize ( vrel_t_pre );
+ normalize_v3( vrel_t_pre );
impulse = 2.0 * magtangent / ( 1.0 + w1*w1 + w2*w2 + w3*w3 );
VECADDMUL ( cloth1->verts[collpair->ap1].impulse, vrel_t_pre, w1 * impulse );
@@ -834,6 +835,7 @@ static int cloth_collision_response_moving( ClothModifierData *clmd, CollisionMo
}
return result;
}
+#endif
static float projectPointOntoLine(float *p, float *a, float *b)
{
@@ -853,15 +855,15 @@ static void calculateEENormal(float *np1, float *np2, float *np3, float *np4,flo
// printf("l1: %f, l1: %f, l2: %f, l2: %f\n", line1[0], line1[1], line2[0], line2[1]);
- Crossf(out_normal, line1, line2);
+ cross_v3_v3v3(out_normal, line1, line2);
- length = Normalize(out_normal);
+ length = normalize_v3(out_normal);
if (length <= FLT_EPSILON)
{ // lines are collinear
VECSUB(out_normal, np2, np1);
- Normalize(out_normal);
+ normalize_v3(out_normal);
}
}
@@ -901,7 +903,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
VECSUB(line1, np12, np11);
VECSUB(line2, np22, np21);
- Crossf(cross, line1, line2);
+ cross_v3_v3v3(cross, line1, line2);
length = INPR(cross, cross);
if (length < FLT_EPSILON)
@@ -912,7 +914,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
*out_a1 = 0;
calculateEENormal(np11, np12, np21, np22, out_normal);
VECSUB(temp, np22, np21);
- VecMulf(temp, *out_a2);
+ mul_v3_fl(temp, *out_a2);
VECADD(temp2, temp, np21);
VECADD(temp2, temp2, np11);
return INPR(temp2, temp2);
@@ -928,7 +930,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// return (np22 - (np11 + (np12 - np11) * out_a1)).lengthSquared();
VECSUB(temp, np12, np11);
- VecMulf(temp, *out_a1);
+ mul_v3_fl(temp, *out_a1);
VECADD(temp2, temp, np11);
VECSUB(temp2, np22, temp2);
return INPR(temp2, temp2);
@@ -943,7 +945,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// return (np21 - (np11 + (np12 - np11) * out_a1)).lengthSquared();
VECSUB(temp, np12, np11);
- VecMulf(temp, *out_a1);
+ mul_v3_fl(temp, *out_a1);
VECADD(temp2, temp, np11);
VECSUB(temp2, np21, temp2);
return INPR(temp2, temp2);
@@ -991,12 +993,12 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// p1= np11 + (np12 - np11) * out_a1;
VECSUB(temp, np12, np11);
- VecMulf(temp, *out_a1);
+ mul_v3_fl(temp, *out_a1);
VECADD(p1, np11, temp);
// p2 = np21 + (np22 - np21) * out_a2;
VECSUB(temp, np22, np21);
- VecMulf(temp, *out_a2);
+ mul_v3_fl(temp, *out_a2);
VECADD(p2, np21, temp);
calculateEENormal(np11, np12, np21, np22, out_normal);
@@ -1022,7 +1024,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// p1 = np11 + (np12 - np11) * out_a1;
VECSUB(temp, np12, np11);
- VecMulf(temp, *out_a1);
+ mul_v3_fl(temp, *out_a1);
VECADD(p1, np11, temp);
*out_a2 = projectPointOntoLine(p1, np21, np22);
@@ -1032,7 +1034,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// return (p1 - (np21 + (np22 - np21) * out_a2)).lengthSquared();
VECSUB(temp, np22, np21);
- VecMulf(temp, *out_a2);
+ mul_v3_fl(temp, *out_a2);
VECADD(temp, temp, np21);
VECSUB(temp, p1, temp);
return INPR(temp, temp);
@@ -1044,7 +1046,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// p2 = np21 + (np22 - np21) * out_a2;
VECSUB(temp, np22, np21);
- VecMulf(temp, *out_a2);
+ mul_v3_fl(temp, *out_a2);
VECADD(p2, np21, temp);
*out_a1 = projectPointOntoLine(p2, np11, np12);
@@ -1054,7 +1056,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
// return ((np11 + (np12 - np11) * out_a1) - p2).lengthSquared();
VECSUB(temp, np12, np11);
- VecMulf(temp, *out_a1);
+ mul_v3_fl(temp, *out_a1);
VECADD(temp, temp, np11);
VECSUB(temp, temp, p2);
return INPR(temp, temp);
@@ -1065,6 +1067,7 @@ static float edgedge_distance(float np11[3], float np12[3], float np21[3], float
return 0;
}
+#if 0
static int cloth_collision_moving_edges ( ClothModifierData *clmd, CollisionModifierData *collmd, CollPair *collpair )
{
EdgeCollPair edgecollpair;
@@ -1217,16 +1220,16 @@ static int cloth_collision_moving_edges ( ClothModifierData *clmd, CollisionModi
float desiredVn;
VECCOPY(vrel_1_to_2, verts1[edgecollpair.p11].tv);
- VecMulf(vrel_1_to_2, 1.0 - a);
+ mul_v3_fl(vrel_1_to_2, 1.0 - a);
VECCOPY(temp, verts1[edgecollpair.p12].tv);
- VecMulf(temp, a);
+ mul_v3_fl(temp, a);
VECADD(vrel_1_to_2, vrel_1_to_2, temp);
VECCOPY(temp, verts1[edgecollpair.p21].tv);
- VecMulf(temp, 1.0 - b);
+ mul_v3_fl(temp, 1.0 - b);
VECCOPY(temp2, verts1[edgecollpair.p22].tv);
- VecMulf(temp2, b);
+ mul_v3_fl(temp2, b);
VECADD(temp, temp, temp2);
VECSUB(vrel_1_to_2, vrel_1_to_2, temp);
@@ -1237,7 +1240,7 @@ static int cloth_collision_moving_edges ( ClothModifierData *clmd, CollisionModi
if(out_normalVelocity < 0.0)
{
out_normalVelocity*= -1.0;
- VecNegf(out_normal);
+ negate_v3(out_normal);
}
*/
/* Inelastic repulsion impulse. */
@@ -1292,6 +1295,7 @@ static int cloth_collision_moving ( ClothModifierData *clmd, CollisionModifierDa
return 1;
}
+#endif
// return all collision objects in scene
@@ -1707,7 +1711,7 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl
continue;
}
- length = Normalize ( temp );
+ length = normalize_v3( temp );
if ( length < mindistance )
{
@@ -1715,17 +1719,17 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl
if ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED )
{
- VecMulf ( temp, -correction );
+ mul_v3_fl( temp, -correction );
VECADD ( verts[j].tx, verts[j].tx, temp );
}
else if ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED )
{
- VecMulf ( temp, correction );
+ mul_v3_fl( temp, correction );
VECADD ( verts[i].tx, verts[i].tx, temp );
}
else
{
- VecMulf ( temp, -correction*0.5 );
+ mul_v3_fl( temp, -correction*0.5 );
VECADD ( verts[j].tx, verts[j].tx, temp );
VECSUB ( verts[i].tx, verts[i].tx, temp );
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index 8cd64ae2ece..f3448a60b5a 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -52,7 +52,7 @@
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_threads.h"
#include "IMB_imbuf.h"
@@ -462,35 +462,35 @@ static void curvemap_make_table(CurveMap *cuma, rctf *clipr)
if(bezt[0].h2==HD_AUTO) {
- hlen= VecLenf(bezt[0].vec[1], bezt[0].vec[2]); /* original handle length */
+ hlen= len_v3v3(bezt[0].vec[1], bezt[0].vec[2]); /* original handle length */
/* clip handle point */
VECCOPY(vec, bezt[1].vec[0]);
if(vec[0] < bezt[0].vec[1][0])
vec[0]= bezt[0].vec[1][0];
- VecSubf(vec, vec, bezt[0].vec[1]);
- nlen= VecLength(vec);
+ sub_v3_v3v3(vec, vec, bezt[0].vec[1]);
+ nlen= len_v3(vec);
if(nlen>FLT_EPSILON) {
- VecMulf(vec, hlen/nlen);
- VecAddf(bezt[0].vec[2], vec, bezt[0].vec[1]);
- VecSubf(bezt[0].vec[0], bezt[0].vec[1], vec);
+ mul_v3_fl(vec, hlen/nlen);
+ add_v3_v3v3(bezt[0].vec[2], vec, bezt[0].vec[1]);
+ sub_v3_v3v3(bezt[0].vec[0], bezt[0].vec[1], vec);
}
}
a= cuma->totpoint-1;
if(bezt[a].h2==HD_AUTO) {
- hlen= VecLenf(bezt[a].vec[1], bezt[a].vec[0]); /* original handle length */
+ hlen= len_v3v3(bezt[a].vec[1], bezt[a].vec[0]); /* original handle length */
/* clip handle point */
VECCOPY(vec, bezt[a-1].vec[2]);
if(vec[0] > bezt[a].vec[1][0])
vec[0]= bezt[a].vec[1][0];
- VecSubf(vec, vec, bezt[a].vec[1]);
- nlen= VecLength(vec);
+ sub_v3_v3v3(vec, vec, bezt[a].vec[1]);
+ nlen= len_v3(vec);
if(nlen>FLT_EPSILON) {
- VecMulf(vec, hlen/nlen);
- VecAddf(bezt[a].vec[0], vec, bezt[a].vec[1]);
- VecSubf(bezt[a].vec[2], bezt[a].vec[1], vec);
+ mul_v3_fl(vec, hlen/nlen);
+ add_v3_v3v3(bezt[a].vec[0], vec, bezt[a].vec[1]);
+ sub_v3_v3v3(bezt[a].vec[2], bezt[a].vec[1], vec);
}
}
}
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index a319838a56f..0f3213cbc5d 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "DNA_armature_types.h"
@@ -122,12 +122,12 @@ bConstraintOb *constraints_make_evalob (Scene *scene, Object *ob, void *subdata,
cob->ob = ob;
cob->type = datatype;
cob->rotOrder = EULER_ORDER_DEFAULT; // TODO: when objects have rotation order too, use that
- Mat4CpyMat4(cob->matrix, ob->obmat);
+ copy_m4_m4(cob->matrix, ob->obmat);
}
else
- Mat4One(cob->matrix);
+ unit_m4(cob->matrix);
- Mat4CpyMat4(cob->startmat, cob->matrix);
+ copy_m4_m4(cob->startmat, cob->matrix);
}
break;
case CONSTRAINT_OBTYPE_BONE:
@@ -148,18 +148,18 @@ bConstraintOb *constraints_make_evalob (Scene *scene, Object *ob, void *subdata,
}
/* matrix in world-space */
- Mat4MulMat4(cob->matrix, cob->pchan->pose_mat, ob->obmat);
+ mul_m4_m4m4(cob->matrix, cob->pchan->pose_mat, ob->obmat);
}
else
- Mat4One(cob->matrix);
+ unit_m4(cob->matrix);
- Mat4CpyMat4(cob->startmat, cob->matrix);
+ copy_m4_m4(cob->startmat, cob->matrix);
}
break;
default: /* other types not yet handled */
- Mat4One(cob->matrix);
- Mat4One(cob->startmat);
+ unit_m4(cob->matrix);
+ unit_m4(cob->startmat);
break;
}
@@ -176,8 +176,8 @@ void constraints_clear_evalob (bConstraintOb *cob)
return;
/* calculate delta of constraints evaluation */
- Mat4Invert(imat, cob->startmat);
- Mat4MulMat4(delta, imat, cob->matrix);
+ invert_m4_m4(imat, cob->startmat);
+ mul_m4_m4m4(delta, imat, cob->matrix);
/* copy matrices back to source */
switch (cob->type) {
@@ -186,10 +186,10 @@ void constraints_clear_evalob (bConstraintOb *cob)
/* cob->ob might not exist! */
if (cob->ob) {
/* copy new ob-matrix back to owner */
- Mat4CpyMat4(cob->ob->obmat, cob->matrix);
+ copy_m4_m4(cob->ob->obmat, cob->matrix);
/* copy inverse of delta back to owner */
- Mat4Invert(cob->ob->constinv, delta);
+ invert_m4_m4(cob->ob->constinv, delta);
}
}
break;
@@ -198,10 +198,10 @@ void constraints_clear_evalob (bConstraintOb *cob)
/* cob->ob or cob->pchan might not exist */
if (cob->ob && cob->pchan) {
/* copy new pose-matrix back to owner */
- Mat4MulMat4(cob->pchan->pose_mat, cob->matrix, cob->ob->imat);
+ mul_m4_m4m4(cob->pchan->pose_mat, cob->matrix, cob->ob->imat);
/* copy inverse of delta back to owner */
- Mat4Invert(cob->pchan->constinv, delta);
+ invert_m4_m4(cob->pchan->constinv, delta);
}
}
break;
@@ -235,9 +235,9 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
case CONSTRAINT_SPACE_WORLD: /* ---------- FROM WORLDSPACE ---------- */
{
/* world to pose */
- Mat4Invert(imat, ob->obmat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, imat);
+ invert_m4_m4(imat, ob->obmat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, imat);
/* use pose-space as stepping stone for other spaces... */
if (ELEM(to, CONSTRAINT_SPACE_LOCAL, CONSTRAINT_SPACE_PARLOCAL)) {
@@ -250,8 +250,8 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
{
/* pose to world */
if (to == CONSTRAINT_SPACE_WORLD) {
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, ob->obmat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, ob->obmat);
}
/* pose to local */
else if (to == CONSTRAINT_SPACE_LOCAL) {
@@ -260,7 +260,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
float offs_bone[4][4];
/* construct offs_bone the same way it is done in armature.c */
- Mat4CpyMat3(offs_bone, pchan->bone->bone_mat);
+ copy_m4_m3(offs_bone, pchan->bone->bone_mat);
VECCOPY(offs_bone[3], pchan->bone->head);
offs_bone[3][1]+= pchan->bone->parent->length;
@@ -269,37 +269,37 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
float tmat[4][4];
/* the rotation of the parent restposition */
- Mat4CpyMat4(tmat, pchan->bone->parent->arm_mat);
+ copy_m4_m4(tmat, pchan->bone->parent->arm_mat);
/* the location of actual parent transform */
VECCOPY(tmat[3], offs_bone[3]);
offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
- Mat4MulVecfl(pchan->parent->pose_mat, tmat[3]);
+ mul_m4_v3(pchan->parent->pose_mat, tmat[3]);
- Mat4MulMat4(diff_mat, offs_bone, tmat);
- Mat4Invert(imat, diff_mat);
+ mul_m4_m4m4(diff_mat, offs_bone, tmat);
+ invert_m4_m4(imat, diff_mat);
}
else {
/* pose_mat = par_pose_mat * bone_mat * chan_mat */
- Mat4MulMat4(diff_mat, offs_bone, pchan->parent->pose_mat);
- Mat4Invert(imat, diff_mat);
+ mul_m4_m4m4(diff_mat, offs_bone, pchan->parent->pose_mat);
+ invert_m4_m4(imat, diff_mat);
}
}
else {
/* pose_mat = chan_mat * arm_mat */
- Mat4Invert(imat, pchan->bone->arm_mat);
+ invert_m4_m4(imat, pchan->bone->arm_mat);
}
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, imat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, imat);
}
}
/* pose to local with parent */
else if (to == CONSTRAINT_SPACE_PARLOCAL) {
if (pchan->bone) {
- Mat4Invert(imat, pchan->bone->arm_mat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, imat);
+ invert_m4_m4(imat, pchan->bone->arm_mat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, imat);
}
}
}
@@ -313,7 +313,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
float offs_bone[4][4];
/* construct offs_bone the same way it is done in armature.c */
- Mat4CpyMat3(offs_bone, pchan->bone->bone_mat);
+ copy_m4_m3(offs_bone, pchan->bone->bone_mat);
VECCOPY(offs_bone[3], pchan->bone->head);
offs_bone[3][1]+= pchan->bone->parent->length;
@@ -322,29 +322,29 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
float tmat[4][4];
/* the rotation of the parent restposition */
- Mat4CpyMat4(tmat, pchan->bone->parent->arm_mat);
+ copy_m4_m4(tmat, pchan->bone->parent->arm_mat);
/* the location of actual parent transform */
VECCOPY(tmat[3], offs_bone[3]);
offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
- Mat4MulVecfl(pchan->parent->pose_mat, tmat[3]);
+ mul_m4_v3(pchan->parent->pose_mat, tmat[3]);
- Mat4MulMat4(diff_mat, offs_bone, tmat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, diff_mat);
+ mul_m4_m4m4(diff_mat, offs_bone, tmat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, diff_mat);
}
else {
/* pose_mat = par_pose_mat * bone_mat * chan_mat */
- Mat4MulMat4(diff_mat, offs_bone, pchan->parent->pose_mat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, diff_mat);
+ mul_m4_m4m4(diff_mat, offs_bone, pchan->parent->pose_mat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, diff_mat);
}
}
else {
- Mat4CpyMat4(diff_mat, pchan->bone->arm_mat);
+ copy_m4_m4(diff_mat, pchan->bone->arm_mat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, diff_mat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, diff_mat);
}
}
@@ -359,9 +359,9 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
{
/* local + parent to pose */
if (pchan->bone) {
- Mat4CpyMat4(diff_mat, pchan->bone->arm_mat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, diff_mat, tempmat);
+ copy_m4_m4(diff_mat, pchan->bone->arm_mat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, diff_mat, tempmat);
}
/* use pose-space as stepping stone for other spaces */
@@ -379,19 +379,19 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
/* check if object has a parent - otherwise this won't work */
if (ob->parent) {
/* 'subtract' parent's effects from owner */
- Mat4MulMat4(diff_mat, ob->parentinv, ob->parent->obmat);
- Mat4Invert(imat, diff_mat);
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(mat, tempmat, imat);
+ mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat);
+ invert_m4_m4(imat, diff_mat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(mat, tempmat, imat);
}
}
else if (from==CONSTRAINT_SPACE_LOCAL && to==CONSTRAINT_SPACE_WORLD) {
/* check that object has a parent - otherwise this won't work */
if (ob->parent) {
/* 'add' parent's effect back to owner */
- Mat4CpyMat4(tempmat, mat);
- Mat4MulMat4(diff_mat, ob->parentinv, ob->parent->obmat);
- Mat4MulMat4(mat, tempmat, diff_mat);
+ copy_m4_m4(tempmat, mat);
+ mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat);
+ mul_m4_m4m4(mat, tempmat, diff_mat);
}
}
}
@@ -412,7 +412,7 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
short freeDM = 0;
/* initialize target matrix using target matrix */
- Mat4CpyMat4(mat, ob->obmat);
+ copy_m4_m4(mat, ob->obmat);
/* get index of vertex group */
dgroup = get_named_vertexgroup_num(ob, substring);
@@ -454,8 +454,8 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
if (dvert[i].dw[j].def_nr == dgroup) {
dm->getVertCo(dm, i, co);
dm->getVertNo(dm, i, nor);
- VecAddf(vec, vec, co);
- VecAddf(normal, normal, nor);
+ add_v3_v3v3(vec, vec, co);
+ add_v3_v3v3(normal, normal, nor);
count++;
break;
}
@@ -466,8 +466,8 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
/* calculate averages of normal and coordinates */
if (count > 0) {
- VecMulf(vec, 1.0f / count);
- VecMulf(normal, 1.0f / count);
+ mul_v3_fl(vec, 1.0f / count);
+ mul_v3_fl(normal, 1.0f / count);
}
@@ -476,25 +476,25 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
* calc_manipulator_stats, V3D_MANIP_NORMAL case
*/
/* we need the transpose of the inverse for a normal... */
- Mat3CpyMat4(imat, ob->obmat);
+ copy_m3_m4(imat, ob->obmat);
- Mat3Inv(tmat, imat);
- Mat3Transp(tmat);
- Mat3MulVecfl(tmat, normal);
+ invert_m3_m3(tmat, imat);
+ transpose_m3(tmat);
+ mul_m3_v3(tmat, normal);
- Normalize(normal);
+ normalize_v3(normal);
VECCOPY(plane, tmat[1]);
VECCOPY(tmat[2], normal);
- Crossf(tmat[0], normal, plane);
- Crossf(tmat[1], tmat[2], tmat[0]);
+ cross_v3_v3v3(tmat[0], normal, plane);
+ cross_v3_v3v3(tmat[1], tmat[2], tmat[0]);
- Mat4CpyMat3(mat, tmat);
- Mat4Ortho(mat);
+ copy_m4_m3(mat, tmat);
+ normalize_m4(mat);
/* apply the average coordinate as the new location */
- VecMat4MulVecfl(tvec, ob->obmat, vec);
+ mul_v3_m4v3(tvec, ob->obmat, vec);
VECCOPY(mat[3], tvec);
}
}
@@ -522,7 +522,7 @@ static void contarget_get_lattice_mat (Object *ob, char *substring, float mat[][
int i, n;
/* initialize target matrix using target matrix */
- Mat4CpyMat4(mat, ob->obmat);
+ copy_m4_m4(mat, ob->obmat);
/* get index of vertex group */
dgroup = get_named_vertexgroup_num(ob, substring);
@@ -542,7 +542,7 @@ static void contarget_get_lattice_mat (Object *ob, char *substring, float mat[][
else
memcpy(tvec, bp->vec, 3*sizeof(float));
- VecAddf(vec, vec, tvec);
+ add_v3_v3v3(vec, vec, tvec);
grouped++;
break;
@@ -556,8 +556,8 @@ static void contarget_get_lattice_mat (Object *ob, char *substring, float mat[][
/* find average location, then multiply by ob->obmat to find world-space location */
if (grouped)
- VecMulf(vec, 1.0f / grouped);
- VecMat4MulVecfl(tvec, ob->obmat, vec);
+ mul_v3_fl(vec, 1.0f / grouped);
+ mul_v3_m4v3(tvec, ob->obmat, vec);
/* copy new location to matrix */
VECCOPY(mat[3], tvec);
@@ -569,7 +569,7 @@ static void constraint_target_to_mat4 (Scene *scene, Object *ob, char *substring
{
/* Case OBJECT */
if (!strlen(substring)) {
- Mat4CpyMat4(mat, ob->obmat);
+ copy_m4_m4(mat, ob->obmat);
constraint_mat_convertspace(ob, NULL, mat, from, to);
}
/* Case VERTEXGROUP */
@@ -601,23 +601,23 @@ static void constraint_target_to_mat4 (Scene *scene, Object *ob, char *substring
*/
if (headtail < 0.000001) {
/* skip length interpolation if set to head */
- Mat4MulMat4(mat, pchan->pose_mat, ob->obmat);
+ mul_m4_m4m4(mat, pchan->pose_mat, ob->obmat);
}
else {
float tempmat[4][4], loc[3];
/* interpolate along length of bone */
- VecLerpf(loc, pchan->pose_head, pchan->pose_tail, headtail);
+ interp_v3_v3v3(loc, pchan->pose_head, pchan->pose_tail, headtail);
/* use interpolated distance for subtarget */
- Mat4CpyMat4(tempmat, pchan->pose_mat);
- VecCopyf(tempmat[3], loc);
+ copy_m4_m4(tempmat, pchan->pose_mat);
+ copy_v3_v3(tempmat[3], loc);
- Mat4MulMat4(mat, tempmat, ob->obmat);
+ mul_m4_m4m4(mat, tempmat, ob->obmat);
}
}
else
- Mat4CpyMat4(mat, ob->obmat);
+ copy_m4_m4(mat, ob->obmat);
/* convert matrix space as required */
constraint_mat_convertspace(ob, pchan, mat, from, to);
@@ -666,7 +666,7 @@ static void default_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstrain
if (VALID_CONS_TARGET(ct))
constraint_target_to_mat4(cob->scene, ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
else if (ct)
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
/* This following macro should be used for all standard single-target *_get_tars functions
@@ -772,7 +772,7 @@ static void childof_new_data (void *cdata)
data->flag = (CHILDOF_LOCX | CHILDOF_LOCY | CHILDOF_LOCZ |
CHILDOF_ROTX |CHILDOF_ROTY | CHILDOF_ROTZ |
CHILDOF_SIZEX | CHILDOF_SIZEY | CHILDOF_SIZEZ);
- Mat4One(data->invmat);
+ unit_m4(data->invmat);
}
static int childof_get_tars (bConstraint *con, ListBase *list)
@@ -813,16 +813,16 @@ static void childof_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
float loco[3], eulo[3], sizo[3];
/* get offset (parent-inverse) matrix */
- Mat4CpyMat4(invmat, data->invmat);
+ copy_m4_m4(invmat, data->invmat);
/* extract components of both matrices */
VECCOPY(loc, ct->matrix[3]);
- Mat4ToEulO(ct->matrix, eul, ct->rotOrder);
- Mat4ToSize(ct->matrix, size);
+ mat4_to_eulO( eul, ct->rotOrder,ct->matrix);
+ mat4_to_size( size,ct->matrix);
VECCOPY(loco, invmat[3]);
- Mat4ToEulO(invmat, eulo, cob->rotOrder);
- Mat4ToSize(invmat, sizo);
+ mat4_to_eulO( eulo, cob->rotOrder,invmat);
+ mat4_to_size( sizo,invmat);
/* disable channels not enabled */
if (!(data->flag & CHILDOF_LOCX)) loc[0]= loco[0]= 0.0f;
@@ -836,19 +836,19 @@ static void childof_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
if (!(data->flag & CHILDOF_SIZEZ)) size[2]= sizo[2]= 1.0f;
/* make new target mat and offset mat */
- LocEulOSizeToMat4(ct->matrix, loc, eul, size, ct->rotOrder);
- LocEulOSizeToMat4(invmat, loco, eulo, sizo, cob->rotOrder);
+ loc_eulO_size_to_mat4(ct->matrix, loc, eul, size, ct->rotOrder);
+ loc_eulO_size_to_mat4(invmat, loco, eulo, sizo, cob->rotOrder);
/* multiply target (parent matrix) by offset (parent inverse) to get
* the effect of the parent that will be exherted on the owner
*/
- Mat4MulMat4(parmat, invmat, ct->matrix);
+ mul_m4_m4m4(parmat, invmat, ct->matrix);
/* now multiply the parent matrix by the owner matrix to get the
* the effect of this constraint (i.e. owner is 'parented' to parent)
*/
- Mat4CpyMat4(tempmat, cob->matrix);
- Mat4MulMat4(cob->matrix, tempmat, parmat);
+ copy_m4_m4(tempmat, cob->matrix);
+ mul_m4_m4m4(cob->matrix, tempmat, parmat);
}
}
@@ -929,14 +929,14 @@ static void vectomat (float *vec, float *target_up, short axis, short upflag, sh
float neg = -1;
int right_index;
- VecCopyf(n, vec);
- if (Normalize(n) == 0.0) {
+ copy_v3_v3(n, vec);
+ if (normalize_v3(n) == 0.0) {
n[0] = 0.0;
n[1] = 0.0;
n[2] = 1.0;
}
if (axis > 2) axis -= 3;
- else VecNegf(n);
+ else negate_v3(n);
/* n specifies the transformation of the track axis */
if (flags & TARGET_Z_UP) {
@@ -953,19 +953,19 @@ static void vectomat (float *vec, float *target_up, short axis, short upflag, sh
}
/* project the up vector onto the plane specified by n */
- Projf(proj, u, n); /* first u onto n... */
- VecSubf(proj, u, proj); /* then onto the plane */
+ project_v3_v3v3(proj, u, n); /* first u onto n... */
+ sub_v3_v3v3(proj, u, proj); /* then onto the plane */
/* proj specifies the transformation of the up axis */
- if (Normalize(proj) == 0.0) { /* degenerate projection */
+ if (normalize_v3(proj) == 0.0) { /* degenerate projection */
proj[0] = 0.0;
proj[1] = 1.0;
proj[2] = 0.0;
}
/* Normalized cross product of n and proj specifies transformation of the right axis */
- Crossf(right, proj, n);
- Normalize(right);
+ cross_v3_v3v3(right, proj, n);
+ normalize_v3(right);
if (axis != upflag) {
right_index = 3 - axis - upflag;
@@ -1005,7 +1005,7 @@ static void trackto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
float tmat[4][4];
/* Get size property, since ob->size is only the object's own relative size, not its global one */
- Mat4ToSize(cob->matrix, size);
+ mat4_to_size( size,cob->matrix);
/* Clear the object's rotation */
cob->matrix[0][0]=size[0];
@@ -1021,13 +1021,13 @@ static void trackto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
/* targetmat[2] instead of ownermat[2] is passed to vectomat
* for backwards compatability it seems... (Aligorith)
*/
- VecSubf(vec, cob->matrix[3], ct->matrix[3]);
+ sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]);
vectomat(vec, ct->matrix[2],
(short)data->reserved1, (short)data->reserved2,
data->flags, totmat);
- Mat4CpyMat4(tmat, cob->matrix);
- Mat4MulMat34(cob->matrix, totmat, tmat);
+ copy_m4_m4(tmat, cob->matrix);
+ mul_m4_m3m4(cob->matrix, totmat, tmat);
}
}
@@ -1098,19 +1098,19 @@ static void kinematic_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstra
Object *ob= cob->ob;
if (ob == NULL) {
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
else {
float vec[3];
/* move grabtarget into world space */
VECCOPY(vec, data->grabtarget);
- Mat4MulVecfl(ob->obmat, vec);
- Mat4CpyMat4(ct->matrix, ob->obmat);
+ mul_m4_v3(ob->obmat, vec);
+ copy_m4_m4(ct->matrix, ob->obmat);
VECCOPY(ct->matrix[3], vec);
}
}
else
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
}
@@ -1177,8 +1177,8 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
float totmat[4][4];
float curvetime;
- Mat4One(totmat);
- Mat4One(ct->matrix);
+ unit_m4(totmat);
+ unit_m4(ct->matrix);
/* note: when creating constraints that follow path, the curve gets the CU_PATH set now,
* currently for paths to work it needs to go through the bevlist/displist system (ton)
@@ -1212,34 +1212,34 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
if ( where_on_path(ct->tar, curvetime, vec, dir, NULL, &radius) ) {
if (data->followflag & FOLLOWPATH_FOLLOW) {
- vectoquat(dir, (short) data->trackflag, (short) data->upflag, quat);
+ vec_to_quat( quat,dir, (short) data->trackflag, (short) data->upflag);
- Normalize(dir);
+ normalize_v3(dir);
q[0]= (float)cos(0.5*vec[3]);
x1= (float)sin(0.5*vec[3]);
q[1]= -x1*dir[0];
q[2]= -x1*dir[1];
q[3]= -x1*dir[2];
- QuatMul(quat, q, quat);
+ mul_qt_qtqt(quat, q, quat);
- QuatToMat4(quat, totmat);
+ quat_to_mat4( totmat,quat);
}
if (data->followflag & FOLLOWPATH_RADIUS) {
float tmat[4][4], rmat[4][4];
- Mat4Scale(tmat, radius);
- Mat4MulMat4(rmat, totmat, tmat);
- Mat4CpyMat4(totmat, rmat);
+ scale_m4_fl(tmat, radius);
+ mul_m4_m4m4(rmat, totmat, tmat);
+ copy_m4_m4(totmat, rmat);
}
VECCOPY(totmat[3], vec);
- Mat4MulSerie(ct->matrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL);
+ mul_serie_m4(ct->matrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL);
}
}
}
else if (ct)
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
static void followpath_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targets)
@@ -1254,25 +1254,25 @@ static void followpath_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
/* get Object local transform (loc/rot/size) to determine transformation from path */
//object_to_mat4(ob, obmat);
- Mat4CpyMat4(obmat, cob->matrix); // FIXME!!!
+ copy_m4_m4(obmat, cob->matrix); // FIXME!!!
/* get scaling of object before applying constraint */
- Mat4ToSize(cob->matrix, size);
+ mat4_to_size( size,cob->matrix);
/* apply targetmat - containing location on path, and rotation */
- Mat4MulSerie(cob->matrix, ct->matrix, obmat, NULL, NULL, NULL, NULL, NULL, NULL);
+ mul_serie_m4(cob->matrix, ct->matrix, obmat, NULL, NULL, NULL, NULL, NULL, NULL);
/* un-apply scaling caused by path */
if ((data->followflag & FOLLOWPATH_RADIUS)==0) { /* XXX - assume that scale correction means that radius will have some scale error in it - Campbell */
float obsize[3];
- Mat4ToSize(cob->matrix, obsize);
+ mat4_to_size( obsize,cob->matrix);
if (obsize[0])
- VecMulf(cob->matrix[0], size[0] / obsize[0]);
+ mul_v3_fl(cob->matrix[0], size[0] / obsize[0]);
if (obsize[1])
- VecMulf(cob->matrix[1], size[1] / obsize[1]);
+ mul_v3_fl(cob->matrix[1], size[1] / obsize[1]);
if (obsize[2])
- VecMulf(cob->matrix[2], size[2] / obsize[2]);
+ mul_v3_fl(cob->matrix[2], size[2] / obsize[2]);
}
}
}
@@ -1350,9 +1350,9 @@ static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t
float size[3];
VECCOPY(loc, cob->matrix[3]);
- Mat4ToSize(cob->matrix, size);
+ mat4_to_size( size,cob->matrix);
- Mat4ToEulO(cob->matrix, eul, cob->rotOrder);
+ mat4_to_eulO( eul, cob->rotOrder,cob->matrix);
/* eulers: radians to degrees! */
eul[0] = (float)(eul[0] / M_PI * 180);
@@ -1387,7 +1387,7 @@ static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t
eul[1] = (float)(eul[1] / 180 * M_PI);
eul[2] = (float)(eul[2] / 180 * M_PI);
- LocEulOSizeToMat4(cob->matrix, loc, eul, size, cob->rotOrder);
+ loc_eulO_size_to_mat4(cob->matrix, loc, eul, size, cob->rotOrder);
}
static bConstraintTypeInfo CTI_ROTLIMIT = {
@@ -1413,8 +1413,8 @@ static void sizelimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
bSizeLimitConstraint *data = con->data;
float obsize[3], size[3];
- Mat4ToSize(cob->matrix, size);
- Mat4ToSize(cob->matrix, obsize);
+ mat4_to_size( size,cob->matrix);
+ mat4_to_size( obsize,cob->matrix);
if (data->flag & LIMIT_XMIN) {
if (size[0] < data->xmin)
@@ -1442,11 +1442,11 @@ static void sizelimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
}
if (obsize[0])
- VecMulf(cob->matrix[0], size[0]/obsize[0]);
+ mul_v3_fl(cob->matrix[0], size[0]/obsize[0]);
if (obsize[1])
- VecMulf(cob->matrix[1], size[1]/obsize[1]);
+ mul_v3_fl(cob->matrix[1], size[1]/obsize[1]);
if (obsize[2])
- VecMulf(cob->matrix[2], size[2]/obsize[2]);
+ mul_v3_fl(cob->matrix[2], size[2]/obsize[2]);
}
static bConstraintTypeInfo CTI_SIZELIMIT = {
@@ -1592,17 +1592,17 @@ static void rotlike_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
float size[3];
VECCOPY(loc, cob->matrix[3]);
- Mat4ToSize(cob->matrix, size);
+ mat4_to_size( size,cob->matrix);
/* to allow compatible rotations, must get both rotations in the order of the owner... */
- Mat4ToEulO(ct->matrix, eul, cob->rotOrder);
- Mat4ToEulO(cob->matrix, obeul, cob->rotOrder);
+ mat4_to_eulO( eul, cob->rotOrder,ct->matrix);
+ mat4_to_eulO( obeul, cob->rotOrder,cob->matrix);
if ((data->flag & ROTLIKE_X)==0)
eul[0] = obeul[0];
else {
if (data->flag & ROTLIKE_OFFSET)
- eulerO_rot(eul, obeul[0], 'x', cob->rotOrder);
+ rotate_eulO(eul, cob->rotOrder, 'x', obeul[0]);
if (data->flag & ROTLIKE_X_INVERT)
eul[0] *= -1;
@@ -1612,7 +1612,7 @@ static void rotlike_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
eul[1] = obeul[1];
else {
if (data->flag & ROTLIKE_OFFSET)
- eulerO_rot(eul, obeul[1], 'y', cob->rotOrder);
+ rotate_eulO(eul, cob->rotOrder, 'y', obeul[1]);
if (data->flag & ROTLIKE_Y_INVERT)
eul[1] *= -1;
@@ -1622,14 +1622,14 @@ static void rotlike_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
eul[2] = obeul[2];
else {
if (data->flag & ROTLIKE_OFFSET)
- eulerO_rot(eul, obeul[2], 'z', cob->rotOrder);
+ rotate_eulO(eul, cob->rotOrder, 'z', obeul[2]);
if (data->flag & ROTLIKE_Z_INVERT)
eul[2] *= -1;
}
compatible_eul(eul, obeul);
- LocEulOSizeToMat4(cob->matrix, loc, eul, size, cob->rotOrder);
+ loc_eulO_size_to_mat4(cob->matrix, loc, eul, size, cob->rotOrder);
}
}
@@ -1691,32 +1691,32 @@ static void sizelike_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t
if (VALID_CONS_TARGET(ct)) {
float obsize[3], size[3];
- Mat4ToSize(ct->matrix, size);
- Mat4ToSize(cob->matrix, obsize);
+ mat4_to_size( size,ct->matrix);
+ mat4_to_size( obsize,cob->matrix);
if ((data->flag & SIZELIKE_X) && (obsize[0] != 0)) {
if (data->flag & SIZELIKE_OFFSET) {
size[0] += (obsize[0] - 1.0f);
- VecMulf(cob->matrix[0], size[0] / obsize[0]);
+ mul_v3_fl(cob->matrix[0], size[0] / obsize[0]);
}
else
- VecMulf(cob->matrix[0], size[0] / obsize[0]);
+ mul_v3_fl(cob->matrix[0], size[0] / obsize[0]);
}
if ((data->flag & SIZELIKE_Y) && (obsize[1] != 0)) {
if (data->flag & SIZELIKE_OFFSET) {
size[1] += (obsize[1] - 1.0f);
- VecMulf(cob->matrix[1], size[1] / obsize[1]);
+ mul_v3_fl(cob->matrix[1], size[1] / obsize[1]);
}
else
- VecMulf(cob->matrix[1], size[1] / obsize[1]);
+ mul_v3_fl(cob->matrix[1], size[1] / obsize[1]);
}
if ((data->flag & SIZELIKE_Z) && (obsize[2] != 0)) {
if (data->flag & SIZELIKE_OFFSET) {
size[2] += (obsize[2] - 1.0f);
- VecMulf(cob->matrix[2], size[2] / obsize[2]);
+ mul_v3_fl(cob->matrix[2], size[2] / obsize[2]);
}
else
- VecMulf(cob->matrix[2], size[2] / obsize[2]);
+ mul_v3_fl(cob->matrix[2], size[2] / obsize[2]);
}
}
}
@@ -1817,7 +1817,7 @@ static void pycon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintT
#endif
}
else if (ct)
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
static void pycon_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targets)
@@ -1912,7 +1912,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
short axis;
/* initialise return matrix */
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
/* get the transform matrix of the target */
constraint_target_to_mat4(cob->scene, ct->tar, ct->subtarget, tempmat, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
@@ -1925,7 +1925,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
*/
if (data->type < 10) {
/* extract rotation (is in whatever space target should be in) */
- Mat4ToEul(tempmat, vec);
+ mat4_to_eul(vec, tempmat);
vec[0] *= (float)(180.0/M_PI);
vec[1] *= (float)(180.0/M_PI);
vec[2] *= (float)(180.0/M_PI);
@@ -1933,7 +1933,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
}
else if (data->type < 20) {
/* extract scaling (is in whatever space target should be in) */
- Mat4ToSize(tempmat, vec);
+ mat4_to_size(vec, tempmat);
axis= data->type - 10;
}
else {
@@ -1945,7 +1945,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
/* Target defines the animation */
s = (vec[axis]-data->min) / (data->max-data->min);
CLAMP(s, 0, 1);
- t = ( s * (data->end-data->start)) + data->start;
+ t = (s * (data->end-data->start)) + data->start;
if (G.f & G_DEBUG)
printf("do Action Constraint %s - Ob %s Pchan %s \n", con->name, cob->ob->id.name+2, (cob->pchan)?cob->pchan->name:NULL);
@@ -1959,16 +1959,20 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
/* make a temporary pose and evaluate using that */
pose = MEM_callocN(sizeof(bPose), "pose");
- /* make a copy of the bone of interest in the temp pose before evaluating action, so that it can get set */
+ /* make a copy of the bone of interest in the temp pose before evaluating action, so that it can get set
+ * - we need to manually copy over a few settings, including rotation order, otherwise this fails
+ */
pchan = cob->pchan;
+
tchan= verify_pose_channel(pose, pchan->name);
+ tchan->rotmode= pchan->rotmode;
/* evaluate action using workob (it will only set the PoseChannel in question) */
what_does_obaction(cob->scene, cob->ob, &workob, pose, data->act, pchan->name, t);
/* convert animation to matrices for use here */
chan_calc_mat(tchan);
- Mat4CpyMat4(ct->matrix, tchan->chan_mat);
+ copy_m4_m4(ct->matrix, tchan->chan_mat);
/* Clean up */
free_pose(pose);
@@ -1998,8 +2002,8 @@ static void actcon_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar
/* Nice and simple... we just need to multiply the matrices, as the get_target_matrix
* function has already taken care of everything else.
*/
- Mat4CpyMat4(temp, cob->matrix);
- Mat4MulMat4(cob->matrix, ct->matrix, temp);
+ copy_m4_m4(temp, cob->matrix);
+ mul_m4_m4m4(cob->matrix, ct->matrix, temp);
}
}
@@ -2068,7 +2072,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
float mdet;
/* Vector object -> target */
- VecSubf(vec, ct->matrix[3], cob->matrix[3]);
+ sub_v3_v3v3(vec, ct->matrix[3], cob->matrix[3]);
switch (data->lockflag){
case LOCK_X: /* LOCK X */
{
@@ -2076,71 +2080,71 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
case TRACK_Y: /* LOCK X TRACK Y */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[0]);
- VecSubf(totmat[1], vec, vec2);
- Normalize(totmat[1]);
+ project_v3_v3v3(vec2, vec, cob->matrix[0]);
+ sub_v3_v3v3(totmat[1], vec, vec2);
+ normalize_v3(totmat[1]);
/* the x axis is fixed */
totmat[0][0] = cob->matrix[0][0];
totmat[0][1] = cob->matrix[0][1];
totmat[0][2] = cob->matrix[0][2];
- Normalize(totmat[0]);
+ normalize_v3(totmat[0]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[2], totmat[0], totmat[1]);
+ cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
}
break;
case TRACK_Z: /* LOCK X TRACK Z */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[0]);
- VecSubf(totmat[2], vec, vec2);
- Normalize(totmat[2]);
+ project_v3_v3v3(vec2, vec, cob->matrix[0]);
+ sub_v3_v3v3(totmat[2], vec, vec2);
+ normalize_v3(totmat[2]);
/* the x axis is fixed */
totmat[0][0] = cob->matrix[0][0];
totmat[0][1] = cob->matrix[0][1];
totmat[0][2] = cob->matrix[0][2];
- Normalize(totmat[0]);
+ normalize_v3(totmat[0]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[1], totmat[2], totmat[0]);
+ cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
}
break;
case TRACK_nY: /* LOCK X TRACK -Y */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[0]);
- VecSubf(totmat[1], vec, vec2);
- Normalize(totmat[1]);
- VecNegf(totmat[1]);
+ project_v3_v3v3(vec2, vec, cob->matrix[0]);
+ sub_v3_v3v3(totmat[1], vec, vec2);
+ normalize_v3(totmat[1]);
+ negate_v3(totmat[1]);
/* the x axis is fixed */
totmat[0][0] = cob->matrix[0][0];
totmat[0][1] = cob->matrix[0][1];
totmat[0][2] = cob->matrix[0][2];
- Normalize(totmat[0]);
+ normalize_v3(totmat[0]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[2], totmat[0], totmat[1]);
+ cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
}
break;
case TRACK_nZ: /* LOCK X TRACK -Z */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[0]);
- VecSubf(totmat[2], vec, vec2);
- Normalize(totmat[2]);
- VecNegf(totmat[2]);
+ project_v3_v3v3(vec2, vec, cob->matrix[0]);
+ sub_v3_v3v3(totmat[2], vec, vec2);
+ normalize_v3(totmat[2]);
+ negate_v3(totmat[2]);
/* the x axis is fixed */
totmat[0][0] = cob->matrix[0][0];
totmat[0][1] = cob->matrix[0][1];
totmat[0][2] = cob->matrix[0][2];
- Normalize(totmat[0]);
+ normalize_v3(totmat[0]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[1], totmat[2], totmat[0]);
+ cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
}
break;
default:
@@ -2159,71 +2163,71 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
case TRACK_X: /* LOCK Y TRACK X */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[1]);
- VecSubf(totmat[0], vec, vec2);
- Normalize(totmat[0]);
+ project_v3_v3v3(vec2, vec, cob->matrix[1]);
+ sub_v3_v3v3(totmat[0], vec, vec2);
+ normalize_v3(totmat[0]);
/* the y axis is fixed */
totmat[1][0] = cob->matrix[1][0];
totmat[1][1] = cob->matrix[1][1];
totmat[1][2] = cob->matrix[1][2];
- Normalize(totmat[1]);
+ normalize_v3(totmat[1]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[2], totmat[0], totmat[1]);
+ cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
}
break;
case TRACK_Z: /* LOCK Y TRACK Z */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[1]);
- VecSubf(totmat[2], vec, vec2);
- Normalize(totmat[2]);
+ project_v3_v3v3(vec2, vec, cob->matrix[1]);
+ sub_v3_v3v3(totmat[2], vec, vec2);
+ normalize_v3(totmat[2]);
/* the y axis is fixed */
totmat[1][0] = cob->matrix[1][0];
totmat[1][1] = cob->matrix[1][1];
totmat[1][2] = cob->matrix[1][2];
- Normalize(totmat[1]);
+ normalize_v3(totmat[1]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[0], totmat[1], totmat[2]);
+ cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
}
break;
case TRACK_nX: /* LOCK Y TRACK -X */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[1]);
- VecSubf(totmat[0], vec, vec2);
- Normalize(totmat[0]);
- VecNegf(totmat[0]);
+ project_v3_v3v3(vec2, vec, cob->matrix[1]);
+ sub_v3_v3v3(totmat[0], vec, vec2);
+ normalize_v3(totmat[0]);
+ negate_v3(totmat[0]);
/* the y axis is fixed */
totmat[1][0] = cob->matrix[1][0];
totmat[1][1] = cob->matrix[1][1];
totmat[1][2] = cob->matrix[1][2];
- Normalize(totmat[1]);
+ normalize_v3(totmat[1]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[2], totmat[0], totmat[1]);
+ cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
}
break;
case TRACK_nZ: /* LOCK Y TRACK -Z */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[1]);
- VecSubf(totmat[2], vec, vec2);
- Normalize(totmat[2]);
- VecNegf(totmat[2]);
+ project_v3_v3v3(vec2, vec, cob->matrix[1]);
+ sub_v3_v3v3(totmat[2], vec, vec2);
+ normalize_v3(totmat[2]);
+ negate_v3(totmat[2]);
/* the y axis is fixed */
totmat[1][0] = cob->matrix[1][0];
totmat[1][1] = cob->matrix[1][1];
totmat[1][2] = cob->matrix[1][2];
- Normalize(totmat[1]);
+ normalize_v3(totmat[1]);
/* the z axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[0], totmat[1], totmat[2]);
+ cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
}
break;
default:
@@ -2242,71 +2246,71 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
case TRACK_X: /* LOCK Z TRACK X */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[2]);
- VecSubf(totmat[0], vec, vec2);
- Normalize(totmat[0]);
+ project_v3_v3v3(vec2, vec, cob->matrix[2]);
+ sub_v3_v3v3(totmat[0], vec, vec2);
+ normalize_v3(totmat[0]);
/* the z axis is fixed */
totmat[2][0] = cob->matrix[2][0];
totmat[2][1] = cob->matrix[2][1];
totmat[2][2] = cob->matrix[2][2];
- Normalize(totmat[2]);
+ normalize_v3(totmat[2]);
/* the x axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[1], totmat[2], totmat[0]);
+ cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
}
break;
case TRACK_Y: /* LOCK Z TRACK Y */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[2]);
- VecSubf(totmat[1], vec, vec2);
- Normalize(totmat[1]);
+ project_v3_v3v3(vec2, vec, cob->matrix[2]);
+ sub_v3_v3v3(totmat[1], vec, vec2);
+ normalize_v3(totmat[1]);
/* the z axis is fixed */
totmat[2][0] = cob->matrix[2][0];
totmat[2][1] = cob->matrix[2][1];
totmat[2][2] = cob->matrix[2][2];
- Normalize(totmat[2]);
+ normalize_v3(totmat[2]);
/* the x axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[0], totmat[1], totmat[2]);
+ cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
}
break;
case TRACK_nX: /* LOCK Z TRACK -X */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[2]);
- VecSubf(totmat[0], vec, vec2);
- Normalize(totmat[0]);
- VecNegf(totmat[0]);
+ project_v3_v3v3(vec2, vec, cob->matrix[2]);
+ sub_v3_v3v3(totmat[0], vec, vec2);
+ normalize_v3(totmat[0]);
+ negate_v3(totmat[0]);
/* the z axis is fixed */
totmat[2][0] = cob->matrix[2][0];
totmat[2][1] = cob->matrix[2][1];
totmat[2][2] = cob->matrix[2][2];
- Normalize(totmat[2]);
+ normalize_v3(totmat[2]);
/* the x axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[1], totmat[2], totmat[0]);
+ cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
}
break;
case TRACK_nY: /* LOCK Z TRACK -Y */
{
/* Projection of Vector on the plane */
- Projf(vec2, vec, cob->matrix[2]);
- VecSubf(totmat[1], vec, vec2);
- Normalize(totmat[1]);
- VecNegf(totmat[1]);
+ project_v3_v3v3(vec2, vec, cob->matrix[2]);
+ sub_v3_v3v3(totmat[1], vec, vec2);
+ normalize_v3(totmat[1]);
+ negate_v3(totmat[1]);
/* the z axis is fixed */
totmat[2][0] = cob->matrix[2][0];
totmat[2][1] = cob->matrix[2][1];
totmat[2][2] = cob->matrix[2][2];
- Normalize(totmat[2]);
+ normalize_v3(totmat[2]);
/* the x axis gets mapped onto a third orthogonal vector */
- Crossf(totmat[0], totmat[1], totmat[2]);
+ cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
}
break;
default:
@@ -2331,18 +2335,18 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
tmpmat[0][0] = cob->matrix[0][0];tmpmat[0][1] = cob->matrix[0][1];tmpmat[0][2] = cob->matrix[0][2];
tmpmat[1][0] = cob->matrix[1][0];tmpmat[1][1] = cob->matrix[1][1];tmpmat[1][2] = cob->matrix[1][2];
tmpmat[2][0] = cob->matrix[2][0];tmpmat[2][1] = cob->matrix[2][1];tmpmat[2][2] = cob->matrix[2][2];
- Normalize(tmpmat[0]);
- Normalize(tmpmat[1]);
- Normalize(tmpmat[2]);
- Mat3Inv(invmat, tmpmat);
- Mat3MulMat3(tmpmat, totmat, invmat);
+ normalize_v3(tmpmat[0]);
+ normalize_v3(tmpmat[1]);
+ normalize_v3(tmpmat[2]);
+ invert_m3_m3(invmat, tmpmat);
+ mul_m3_m3m3(tmpmat, totmat, invmat);
totmat[0][0] = tmpmat[0][0];totmat[0][1] = tmpmat[0][1];totmat[0][2] = tmpmat[0][2];
totmat[1][0] = tmpmat[1][0];totmat[1][1] = tmpmat[1][1];totmat[1][2] = tmpmat[1][2];
totmat[2][0] = tmpmat[2][0];totmat[2][1] = tmpmat[2][1];totmat[2][2] = tmpmat[2][2];
- Mat4CpyMat4(tmat, cob->matrix);
+ copy_m4_m4(tmat, cob->matrix);
- mdet = Det3x3( totmat[0][0],totmat[0][1],totmat[0][2],
+ mdet = determinant_m3( totmat[0][0],totmat[0][1],totmat[0][2],
totmat[1][0],totmat[1][1],totmat[1][2],
totmat[2][0],totmat[2][1],totmat[2][2]);
if (mdet==0) {
@@ -2352,7 +2356,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
}
/* apply out transformaton to the object */
- Mat4MulMat34(cob->matrix, totmat, tmat);
+ mul_m4_m3m4(cob->matrix, totmat, tmat);
}
}
@@ -2417,7 +2421,7 @@ static void distlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
short clamp_surf= 0;
/* calculate our current distance from the target */
- dist= VecLenf(cob->matrix[3], ct->matrix[3]);
+ dist= len_v3v3(cob->matrix[3], ct->matrix[3]);
/* set distance (flag is only set when user demands it) */
if (data->dist == 0)
@@ -2464,7 +2468,7 @@ static void distlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
/* clamp to 'surface' (i.e. move owner so that dist == data->dist) */
if (clamp_surf) {
/* simply interpolate along line formed by target -> owner */
- VecLerpf(dvec, ct->matrix[3], cob->matrix[3], sfac);
+ interp_v3_v3v3(dvec, ct->matrix[3], cob->matrix[3], sfac);
/* copy new vector onto owner */
VECCOPY(cob->matrix[3], dvec);
@@ -2538,27 +2542,27 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
float dist;
/* store scaling before destroying obmat */
- Mat4ToSize(cob->matrix, size);
+ mat4_to_size( size,cob->matrix);
/* store X orientation before destroying obmat */
xx[0] = cob->matrix[0][0];
xx[1] = cob->matrix[0][1];
xx[2] = cob->matrix[0][2];
- Normalize(xx);
+ normalize_v3(xx);
/* store Z orientation before destroying obmat */
zz[0] = cob->matrix[2][0];
zz[1] = cob->matrix[2][1];
zz[2] = cob->matrix[2][2];
- Normalize(zz);
+ normalize_v3(zz);
- VecSubf(vec, cob->matrix[3], ct->matrix[3]);
+ sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]);
vec[0] /= size[0];
vec[1] /= size[1];
vec[2] /= size[2];
- dist = Normalize(vec);
- //dist = VecLenf( ob->obmat[3], targetmat[3]);
+ dist = normalize_v3(vec);
+ //dist = len_v3v3( ob->obmat[3], targetmat[3]);
/* data->orglength==0 occurs on first run, and after 'R' button is clicked */
if (data->orglength == 0)
@@ -2601,8 +2605,8 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
cob->matrix[2][1]=0;
cob->matrix[2][2]=size[2]*scale[2];
- VecSubf(vec, cob->matrix[3], ct->matrix[3]);
- Normalize(vec);
+ sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]);
+ normalize_v3(vec);
/* new Y aligns object target connection*/
totmat[1][0] = -vec[0];
@@ -2612,8 +2616,8 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
case PLANE_X:
/* build new Z vector */
/* othogonal to "new Y" "old X! plane */
- Crossf(orth, vec, xx);
- Normalize(orth);
+ cross_v3_v3v3(orth, vec, xx);
+ normalize_v3(orth);
/* new Z*/
totmat[2][0] = orth[0];
@@ -2621,8 +2625,8 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
totmat[2][2] = orth[2];
/* we decided to keep X plane*/
- Crossf(xx, orth, vec);
- Normalize(xx);
+ cross_v3_v3v3(xx, orth, vec);
+ normalize_v3(xx);
totmat[0][0] = xx[0];
totmat[0][1] = xx[1];
totmat[0][2] = xx[2];
@@ -2630,8 +2634,8 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
case PLANE_Z:
/* build new X vector */
/* othogonal to "new Y" "old Z! plane */
- Crossf(orth, vec, zz);
- Normalize(orth);
+ cross_v3_v3v3(orth, vec, zz);
+ normalize_v3(orth);
/* new X */
totmat[0][0] = -orth[0];
@@ -2639,16 +2643,16 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
totmat[0][2] = -orth[2];
/* we decided to keep Z */
- Crossf(zz, orth, vec);
- Normalize(zz);
+ cross_v3_v3v3(zz, orth, vec);
+ normalize_v3(zz);
totmat[2][0] = zz[0];
totmat[2][1] = zz[1];
totmat[2][2] = zz[2];
break;
} /* switch (data->plane) */
- Mat4CpyMat4(tmat, cob->matrix);
- Mat4MulMat34(cob->matrix, totmat, tmat);
+ copy_m4_m4(tmat, cob->matrix);
+ mul_m4_m3m4(cob->matrix, totmat, tmat);
}
}
@@ -2716,15 +2720,15 @@ static void minmax_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar
float val1, val2;
int index;
- Mat4CpyMat4(obmat, cob->matrix);
- Mat4CpyMat4(tarmat, ct->matrix);
+ copy_m4_m4(obmat, cob->matrix);
+ copy_m4_m4(tarmat, ct->matrix);
if (data->flag & MINMAX_USEROT) {
/* take rotation of target into account by doing the transaction in target's localspace */
- Mat4Invert(imat, tarmat);
- Mat4MulMat4(tmat, obmat, imat);
- Mat4CpyMat4(obmat, tmat);
- Mat4One(tarmat);
+ invert_m4_m4(imat, tarmat);
+ mul_m4_m4m4(tmat, obmat, imat);
+ copy_m4_m4(obmat, tmat);
+ unit_m4(tarmat);
}
switch (data->minmaxflag) {
@@ -2775,8 +2779,8 @@ static void minmax_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar
}
if (data->flag & MINMAX_USEROT) {
/* get out of localspace */
- Mat4MulMat4(tmat, obmat, ct->matrix);
- Mat4CpyMat4(cob->matrix, tmat);
+ mul_m4_m4m4(tmat, obmat, ct->matrix);
+ copy_m4_m4(cob->matrix, tmat);
}
else {
VECCOPY(cob->matrix[3], obmat[3]);
@@ -2900,7 +2904,7 @@ static void clampto_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstrain
* might end up calling this...
*/
if (ct)
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
static void clampto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targets)
@@ -2914,8 +2918,8 @@ static void clampto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
float obmat[4][4], targetMatrix[4][4], ownLoc[3];
float curveMin[3], curveMax[3];
- Mat4CpyMat4(obmat, cob->matrix);
- Mat4One(targetMatrix);
+ copy_m4_m4(obmat, cob->matrix);
+ unit_m4(targetMatrix);
VECCOPY(ownLoc, obmat[3]);
INIT_MINMAX(curveMin, curveMax)
@@ -2931,7 +2935,7 @@ static void clampto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
/* 1. determine which axis to sample on? */
if (data->flag == CLAMPTO_AUTO) {
float size[3];
- VecSubf(size, curveMax, curveMin);
+ sub_v3_v3v3(size, curveMax, curveMin);
/* find axis along which the bounding box has the greatest
* extent. Otherwise, default to the x-axis, as that is quite
@@ -3004,10 +3008,10 @@ static void clampto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
/* 3. position on curve */
if (where_on_path(ct->tar, curvetime, vec, dir, NULL, NULL) ) {
- Mat4One(totmat);
+ unit_m4(totmat);
VECCOPY(totmat[3], vec);
- Mat4MulSerie(targetMatrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL);
+ mul_serie_m4(targetMatrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL);
}
}
@@ -3082,22 +3086,22 @@ static void transform_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
/* obtain target effect */
switch (data->from) {
case 2: /* scale */
- Mat4ToSize(ct->matrix, dvec);
+ mat4_to_size( dvec,ct->matrix);
break;
case 1: /* rotation (convert to degrees first) */
- Mat4ToEulO(ct->matrix, dvec, cob->rotOrder);
+ mat4_to_eulO( dvec, cob->rotOrder,ct->matrix);
for (i=0; i<3; i++)
dvec[i] = (float)(dvec[i] / M_PI * 180);
break;
default: /* location */
- VecCopyf(dvec, ct->matrix[3]);
+ copy_v3_v3(dvec, ct->matrix[3]);
break;
}
/* extract components of owner's matrix */
VECCOPY(loc, cob->matrix[3]);
- Mat4ToEulO(cob->matrix, eul, cob->rotOrder);
- Mat4ToSize(cob->matrix, size);
+ mat4_to_eulO( eul, cob->rotOrder,cob->matrix);
+ mat4_to_size( size,cob->matrix);
/* determine where in range current transforms lie */
if (data->expo) {
@@ -3146,12 +3150,12 @@ static void transform_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
loc[i]= (data->to_min[i] + (sval[(int)data->map[i]] * (data->to_max[i] - data->to_min[i])));
/* add original location back on (so that it can still be moved) */
- VecAddf(loc, cob->matrix[3], loc);
+ add_v3_v3v3(loc, cob->matrix[3], loc);
break;
}
/* apply to matrix */
- LocEulOSizeToMat4(cob->matrix, loc, eul, size, cob->rotOrder);
+ loc_eulO_size_to_mat4(cob->matrix, loc, eul, size, cob->rotOrder);
}
}
@@ -3223,7 +3227,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
hit.index = -1;
hit.dist = 100000.0f; //TODO should use FLT_MAX.. but normal projection doenst yet supports it
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
if(target != NULL)
{
@@ -3249,8 +3253,8 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
BLI_bvhtree_find_nearest(treeData.tree, co, &nearest, treeData.nearest_callback, &treeData);
- dist = VecLenf(co, nearest.co);
- VecLerpf(co, co, nearest.co, (dist - scon->dist)/dist); /* linear interpolation */
+ dist = len_v3v3(co, nearest.co);
+ interp_v3_v3v3(co, co, nearest.co, (dist - scon->dist)/dist); /* linear interpolation */
space_transform_invert(&transform, co);
break;
@@ -3265,7 +3269,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
break;
}
- Normalize(no);
+ normalize_v3(no);
bvhtree_from_mesh_faces(&treeData, target, scon->dist, 4, 6);
@@ -3295,7 +3299,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
}
/* co is in local object coordinates, change it to global and update target position */
- VecMat4MulVecfl(co, cob->matrix, co);
+ mul_v3_m4v3(co, cob->matrix, co);
VECCOPY(ct->matrix[3], co);
}
}
@@ -3379,23 +3383,23 @@ static void damptrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
float rmat[3][3], tmat[4][4];
/* find the (unit) direction that the axis we're interested in currently points
- * - Mat4Mul3Vecfl() only takes the 3x3 (rotation+scaling) components of the 4x4 matrix
+ * - mul_mat3_m4_v3() only takes the 3x3 (rotation+scaling) components of the 4x4 matrix
* - the normalisation step at the end should take care of any unwanted scaling
* left over in the 3x3 matrix we used
*/
VECCOPY(obvec, track_dir_vecs[data->trackflag]);
- Mat4Mul3Vecfl(cob->matrix, obvec);
+ mul_mat3_m4_v3(cob->matrix, obvec);
- if (Normalize(obvec) == 0.0f) {
+ if (normalize_v3(obvec) == 0.0f) {
/* exceptional case - just use the track vector as appropriate */
VECCOPY(obvec, track_dir_vecs[data->trackflag]);
}
/* find the (unit) direction vector going from the owner to the target */
VECCOPY(obloc, cob->matrix[3]);
- VecSubf(tarvec, ct->matrix[3], obloc);
+ sub_v3_v3v3(tarvec, ct->matrix[3], obloc);
- if (Normalize(tarvec) == 0.0f) {
+ if (normalize_v3(tarvec) == 0.0f) {
/* the target is sitting on the owner, so just make them use the same direction vectors */
// FIXME: or would it be better to use the pure direction vector?
VECCOPY(tarvec, obvec);
@@ -3410,23 +3414,23 @@ static void damptrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
* - the min/max wrappers around (obvec . tarvec) result (stored temporarily in rangle)
* are used to ensure that the smallest angle is chosen
*/
- Crossf(raxis, obvec, tarvec);
+ cross_v3_v3v3(raxis, obvec, tarvec);
- rangle= Inpf(obvec, tarvec);
+ rangle= dot_v3v3(obvec, tarvec);
rangle= acos( MAX2(-1.0f, MIN2(1.0f, rangle)) );
/* construct rotation matrix from the axis-angle rotation found above
* - this call takes care to make sure that the axis provided is a unit vector first
*/
- AxisAngleToMat3(raxis, rangle, rmat);
+ axis_angle_to_mat3( rmat,raxis, rangle);
/* rotate the owner in the way defined by this rotation matrix, then reapply the location since
* we may have destroyed that in the process of multiplying the matrix
*/
- Mat4One(tmat);
- Mat4MulMat34(tmat, rmat, cob->matrix); // m1, m3, m2
+ unit_m4(tmat);
+ mul_m4_m3m4(tmat, rmat, cob->matrix); // m1, m3, m2
- Mat4CpyMat4(cob->matrix, tmat);
+ copy_m4_m4(cob->matrix, tmat);
VECCOPY(cob->matrix[3], obloc);
}
}
@@ -3510,7 +3514,7 @@ static void splineik_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstrai
* might end up calling this...
*/
if (ct)
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
static bConstraintTypeInfo CTI_SPLINEIK = {
@@ -3636,6 +3640,121 @@ void free_constraints (ListBase *list)
BLI_freelistN(list);
}
+
+/* Remove the specified constraint from the given constraint stack */
+int remove_constraint (ListBase *list, bConstraint *con)
+{
+ if (con) {
+ free_constraint_data(con);
+ BLI_freelinkN(list, con);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+/* Remove the nth constraint from the given constraint stack */
+int remove_constraint_index (ListBase *list, int index)
+{
+ bConstraint *con= BLI_findlink(list, index);
+
+ if (con)
+ return remove_constraint(list, con);
+ else
+ return 0;
+}
+
+/* ......... */
+
+/* Creates a new constraint, initialises its data, and returns it */
+static bConstraint *add_new_constraint_internal (const char *name, short type)
+{
+ bConstraint *con= MEM_callocN(sizeof(bConstraint), "Constraint");
+ bConstraintTypeInfo *cti= get_constraint_typeinfo(type);
+ const char *newName;
+
+ /* Set up a generic constraint datablock */
+ con->type = type;
+ con->flag |= CONSTRAINT_EXPAND;
+ con->enforce = 1.0f;
+
+ /* Determine a basic name, and info */
+ if (cti) {
+ /* initialise constraint data */
+ con->data = MEM_callocN(cti->size, cti->structName);
+
+ /* only constraints that change any settings need this */
+ if (cti->new_data)
+ cti->new_data(con->data);
+
+ /* if no name is provided, use the type of the constraint as the name */
+ newName= (name && name[0]) ? name : cti->name;
+ }
+ else {
+ /* if no name is provided, use the generic "Const" name */
+ // NOTE: any constraint type that gets here really shouldn't get added...
+ newName= (name && name[0]) ? name : "Const";
+ }
+
+ /* copy the name */
+ BLI_strncpy(con->name, newName, sizeof(con->name));
+
+ /* return the new constraint */
+ return con;
+}
+
+/* if pchan is not NULL then assume we're adding a pose constraint */
+static bConstraint *add_new_constraint (Object *ob, bPoseChannel *pchan, const char *name, short type)
+{
+ bConstraint *con;
+ ListBase *list;
+
+ /* add the constraint */
+ con= add_new_constraint_internal(name, type);
+
+ /* find the constraint stack - bone or object? */
+ list = (pchan) ? (&pchan->constraints) : (&ob->constraints);
+
+ if (list) {
+ /* add new constraint to end of list of constraints before ensuring that it has a unique name
+ * (otherwise unique-naming code will fail, since it assumes element exists in list)
+ */
+ BLI_addtail(list, con);
+ unique_constraint_name(con, list);
+
+ /* if the target list is a list on some PoseChannel belonging to a proxy-protected
+ * Armature layer, we must tag newly added constraints with a flag which allows them
+ * to persist after proxy syncing has been done
+ */
+ if (proxylocked_constraints_owner(ob, pchan))
+ con->flag |= CONSTRAINT_PROXY_LOCAL;
+
+ /* make this constraint the active one */
+ constraints_set_active(list, con);
+ }
+
+ return con;
+}
+
+/* ......... */
+
+/* Add new constraint for the given bone */
+bConstraint *add_pose_constraint (Object *ob, bPoseChannel *pchan, const char *name, short type)
+{
+ if (pchan == NULL)
+ return NULL;
+
+ return add_new_constraint(ob, pchan, name, type);
+}
+
+/* Add new constraint for the given object */
+bConstraint *add_ob_constraint(Object *ob, const char *name, short type)
+{
+ return add_new_constraint(ob, NULL, name, type);
+}
+
+/* ......... */
+
/* Reassign links that constraints have to other data (called during file loading?) */
void relink_constraints (ListBase *conlist)
{
@@ -3666,8 +3785,10 @@ void relink_constraints (ListBase *conlist)
}
}
+/* ......... */
+
/* duplicate all of the constraints in a constraint stack */
-void copy_constraints (ListBase *dst, ListBase *src)
+void copy_constraints (ListBase *dst, const ListBase *src)
{
bConstraint *con, *srccon;
@@ -3680,6 +3801,7 @@ void copy_constraints (ListBase *dst, ListBase *src)
/* make a new copy of the constraint's data */
con->data = MEM_dupallocN(con->data);
+ // NOTE: depreceated... old animation system
id_us_plus((ID *)con->ipo);
/* only do specific constraints if required */
@@ -3688,6 +3810,8 @@ void copy_constraints (ListBase *dst, ListBase *src)
}
}
+/* ......... */
+
/* finds the 'active' constraint in a constraint stack */
bConstraint *constraints_get_active (ListBase *list)
{
@@ -3705,6 +3829,19 @@ bConstraint *constraints_get_active (ListBase *list)
return NULL;
}
+/* Set the given constraint as the active one (clearing all the others) */
+void constraints_set_active (ListBase *list, bConstraint *con)
+{
+ bConstraint *c;
+
+ for (c= list->first; c; c= c->next) {
+ if (c == con)
+ c->flag |= CONSTRAINT_ACTIVE;
+ else
+ c->flag &= ~CONSTRAINT_ACTIVE;
+ }
+}
+
/* -------- Constraints and Proxies ------- */
/* Rescue all constraints tagged as being CONSTRAINT_PROXY_LOCAL (i.e. added to bone that's proxy-synced in this file) */
@@ -3772,12 +3909,12 @@ void get_constraint_target_matrix (struct Scene *scene, bConstraint *con, int n,
cob->ob= (Object *)ownerdata;
cob->pchan= NULL;
if (cob->ob) {
- Mat4CpyMat4(cob->matrix, cob->ob->obmat);
- Mat4CpyMat4(cob->startmat, cob->matrix);
+ copy_m4_m4(cob->matrix, cob->ob->obmat);
+ copy_m4_m4(cob->startmat, cob->matrix);
}
else {
- Mat4One(cob->matrix);
- Mat4One(cob->startmat);
+ unit_m4(cob->matrix);
+ unit_m4(cob->startmat);
}
}
break;
@@ -3786,12 +3923,12 @@ void get_constraint_target_matrix (struct Scene *scene, bConstraint *con, int n,
cob->ob= NULL; /* this might not work at all :/ */
cob->pchan= (bPoseChannel *)ownerdata;
if (cob->pchan) {
- Mat4CpyMat4(cob->matrix, cob->pchan->pose_mat);
- Mat4CpyMat4(cob->startmat, cob->matrix);
+ copy_m4_m4(cob->matrix, cob->pchan->pose_mat);
+ copy_m4_m4(cob->startmat, cob->matrix);
}
else {
- Mat4One(cob->matrix);
- Mat4One(cob->startmat);
+ unit_m4(cob->matrix);
+ unit_m4(cob->startmat);
}
}
break;
@@ -3808,7 +3945,7 @@ void get_constraint_target_matrix (struct Scene *scene, bConstraint *con, int n,
if (ct) {
if (cti->get_target_matrix)
cti->get_target_matrix(con, cob, ct, ctime);
- Mat4CpyMat4(mat, ct->matrix);
+ copy_m4_m4(mat, ct->matrix);
}
/* free targets + 'constraint-ob' */
@@ -3818,7 +3955,7 @@ void get_constraint_target_matrix (struct Scene *scene, bConstraint *con, int n,
}
else {
/* invalid constraint - perhaps... */
- Mat4One(mat);
+ unit_m4(mat);
}
}
@@ -3861,7 +3998,7 @@ void solve_constraints (ListBase *conlist, bConstraintOb *cob, float ctime)
/* move owner matrix into right space */
constraint_mat_convertspace(cob->ob, cob->pchan, cob->matrix, CONSTRAINT_SPACE_WORLD, con->ownspace);
- Mat4CpyMat4(oldmat, cob->matrix);
+ copy_m4_m4(oldmat, cob->matrix);
/* prepare targets for constraint solving */
if (cti->get_constraint_targets) {
@@ -3882,7 +4019,7 @@ void solve_constraints (ListBase *conlist, bConstraintOb *cob, float ctime)
}
else {
for (ct= targets.first; ct; ct= ct->next)
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
}
}
@@ -3899,21 +4036,21 @@ void solve_constraints (ListBase *conlist, bConstraintOb *cob, float ctime)
/* Interpolate the enforcement, to blend result of constraint into final owner transform */
/* 1. Remove effects of original matrix from constraint solution ==> delta */
- Mat4Invert(imat, oldmat);
- Mat4CpyMat4(solution, cob->matrix);
- Mat4MulMat4(delta, solution, imat);
+ invert_m4_m4(imat, oldmat);
+ copy_m4_m4(solution, cob->matrix);
+ mul_m4_m4m4(delta, solution, imat);
/* 2. If constraint influence is not full strength, then interpolate
* identity_matrix --> delta_matrix to get the effect the constraint actually exerts
*/
if (enf < 1.0) {
float identity[4][4];
- Mat4One(identity);
- Mat4BlendMat4(delta, identity, delta, enf);
+ unit_m4(identity);
+ blend_m4_m4m4(delta, identity, delta, enf);
}
/* 3. Now multiply the delta by the matrix in use before the evaluation */
- Mat4MulMat4(cob->matrix, delta, oldmat);
+ mul_m4_m4m4(cob->matrix, delta, oldmat);
/* move owner back into worldspace for next constraint/other business */
if ((con->flag & CONSTRAINT_SPACEONCE) == 0)
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 7f2872c0797..fc1ef4aede9 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -46,6 +46,8 @@
#include "BKE_screen.h"
#include "BKE_global.h"
+#include "BPY_extern.h"
+
#include <string.h>
/* struct */
@@ -408,16 +410,26 @@ struct bContextDataResult {
static int ctx_data_get(bContext *C, const char *member, bContextDataResult *result)
{
int done= 0, recursion= C->data.recursion;
+ int ret= 0;
memset(result, 0, sizeof(bContextDataResult));
if(CTX_py_dict_get(C)) {
- return bpy_context_get(C, member, result);
+ return BPY_context_get(C, member, result);
+// if (BPY_context_get(C, member, result))
+// return 1;
}
/* we check recursion to ensure that we do not get infinite
* loops requesting data from ourselfs in a context callback */
- if(!done && recursion < 1 && C->wm.store) {
+
+ /* Ok, this looks evil...
+ * if(ret) done= -(-ret | -done);
+ *
+ * Values in order of importance
+ * (0, -1, 1) - Where 1 is highest priority
+ * */
+ if(done!=1 && recursion < 1 && C->wm.store) {
bContextStoreEntry *entry;
C->data.recursion= 1;
@@ -429,21 +441,28 @@ static int ctx_data_get(bContext *C, const char *member, bContextDataResult *res
}
}
}
- if(!done && recursion < 2 && C->wm.region) {
+ if(done!=1 && recursion < 2 && C->wm.region) {
C->data.recursion= 2;
- if(C->wm.region->type && C->wm.region->type->context)
- done= C->wm.region->type->context(C, member, result);
+ if(C->wm.region->type && C->wm.region->type->context) {
+ ret = C->wm.region->type->context(C, member, result);
+ if(ret) done= -(-ret | -done);
+
+ }
}
- if(!done && recursion < 3 && C->wm.area) {
+ if(done!=1 && recursion < 3 && C->wm.area) {
C->data.recursion= 3;
- if(C->wm.area->type && C->wm.area->type->context)
- done= C->wm.area->type->context(C, member, result);
+ if(C->wm.area->type && C->wm.area->type->context) {
+ ret = C->wm.area->type->context(C, member, result);
+ if(ret) done= -(-ret | -done);
+ }
}
- if(!done && recursion < 4 && C->wm.screen) {
+ if(done!=1 && recursion < 4 && C->wm.screen) {
bContextDataCallback cb= C->wm.screen->context;
C->data.recursion= 4;
- if(cb)
- done= cb(C, member, result);
+ if(cb) {
+ ret = cb(C, member, result);
+ if(ret) done= -(-ret | -done);
+ }
}
C->data.recursion= recursion;
@@ -455,7 +474,7 @@ static void *ctx_data_pointer_get(const bContext *C, const char *member)
{
bContextDataResult result;
- if(C && ctx_data_get((bContext*)C, member, &result))
+ if(C && ctx_data_get((bContext*)C, member, &result)==1)
return result.ptr.data;
return NULL;
@@ -465,7 +484,7 @@ static int ctx_data_pointer_verify(const bContext *C, const char *member, void *
{
bContextDataResult result;
- if(ctx_data_get((bContext*)C, member, &result)) {
+ if(ctx_data_get((bContext*)C, member, &result)==1) {
*pointer= result.ptr.data;
return 1;
}
@@ -479,7 +498,7 @@ static int ctx_data_collection_get(const bContext *C, const char *member, ListBa
{
bContextDataResult result;
- if(ctx_data_get((bContext*)C, member, &result)) {
+ if(ctx_data_get((bContext*)C, member, &result)==1) {
*list= result.list;
return 1;
}
@@ -494,7 +513,7 @@ PointerRNA CTX_data_pointer_get(const bContext *C, const char *member)
{
bContextDataResult result;
- if(ctx_data_get((bContext*)C, member, &result))
+ if(ctx_data_get((bContext*)C, member, &result)==1)
return result.ptr;
else
return PointerRNA_NULL;
@@ -514,7 +533,7 @@ ListBase CTX_data_collection_get(const bContext *C, const char *member)
{
bContextDataResult result;
- if(ctx_data_get((bContext*)C, member, &result)) {
+ if(ctx_data_get((bContext*)C, member, &result)==1) {
return result.list;
}
else {
@@ -524,11 +543,13 @@ ListBase CTX_data_collection_get(const bContext *C, const char *member)
}
}
-void CTX_data_get(const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb)
+/* 1:found, -1:found but not set, 0:not found */
+int CTX_data_get(const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb)
{
bContextDataResult result;
+ int ret= ctx_data_get((bContext*)C, member, &result);
- if(ctx_data_get((bContext*)C, member, &result)) {
+ if(ret==1) {
*r_ptr= result.ptr;
*r_lb= result.list;
}
@@ -536,6 +557,8 @@ void CTX_data_get(const bContext *C, const char *member, PointerRNA *r_ptr, List
memset(r_ptr, 0, sizeof(*r_ptr));
memset(r_lb, 0, sizeof(*r_lb));
}
+
+ return ret;
}
static void data_dir_add(ListBase *lb, const char *member)
@@ -855,18 +878,18 @@ int CTX_data_editable_bones(const bContext *C, ListBase *list)
return ctx_data_collection_get(C, "editable_bones", list);
}
-struct bPoseChannel *CTX_data_active_pchan(const bContext *C)
+struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C)
{
- return ctx_data_pointer_get(C, "active_pchan");
+ return ctx_data_pointer_get(C, "active_pose_bone");
}
-int CTX_data_selected_pchans(const bContext *C, ListBase *list)
+int CTX_data_selected_pose_bones(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, "selected_pchans", list);
+ return ctx_data_collection_get(C, "selected_pose_bones", list);
}
-int CTX_data_visible_pchans(const bContext *C, ListBase *list)
+int CTX_data_visible_pose_bones(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, "visible_pchans", list);
+ return ctx_data_collection_get(C, "visible_pose_bones", list);
}
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 1410e5d29c2..75759733cad 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -40,7 +40,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_object_types.h"
#include "DNA_curve_types.h"
@@ -992,7 +992,7 @@ static void forward_diff_bezier_cotangent(float *p0, float *p1, float *p2, float
for(i=0; i<3; i++) {
p[i]= (-6*t + 6)*p0[i] + (18*t - 12)*p1[i] + (-18*t + 6)*p2[i] + (6*t)*p3[i];
}
- Normalize(p);
+ normalize_v3(p);
p = (float *)(((char *)p)+stride);
}
}
@@ -1569,7 +1569,7 @@ static void alfa_bezpart(BezTriple *prevbezt, BezTriple *bezt, Nurb *nu, float *
/* correct non-cyclic cases by copying direction and rotation
* values onto the first & last end-points */
-static void bevel_list_cyclic_fix(BevList *bl)
+static void bevel_list_cyclic_fix_3D(BevList *bl)
{
BevPoint *bevp, *bevp1;
@@ -1598,7 +1598,7 @@ static void bevel_list_calc_bisect(BevList *bl)
nr= bl->nr;
while(nr--) {
/* totally simple */
- VecBisect3(bevp1->dir, bevp0->vec, bevp1->vec, bevp2->vec);
+ bisect_v3_v3v3v3(bevp1->dir, bevp0->vec, bevp1->vec, bevp2->vec);
bevp0= bevp1;
bevp1= bevp2;
@@ -1616,8 +1616,8 @@ static void bevel_list_flip_tangents(BevList *bl)
nr= bl->nr;
while(nr--) {
- if(RAD2DEG(VecAngle2(bevp0->tan, bevp1->tan)) > 90)
- VecNegf(bevp1->tan);
+ if(RAD2DEG(angle_v2v2(bevp0->tan, bevp1->tan)) > 90)
+ negate_v3(bevp1->tan);
bevp0= bevp1;
bevp1= bevp2;
@@ -1637,9 +1637,9 @@ static void bevel_list_apply_tilt(BevList *bl)
nr= bl->nr;
while(nr--) {
- AxisAngleToQuat(q, bevp1->dir, bevp1->alfa);
- QuatMul(bevp1->quat, q, bevp1->quat);
- NormalQuat(bevp1->quat);
+ axis_angle_to_quat(q, bevp1->dir, bevp1->alfa);
+ mul_qt_qtqt(bevp1->quat, q, bevp1->quat);
+ normalize_qt(bevp1->quat);
bevp0= bevp1;
bevp1= bevp2;
@@ -1683,18 +1683,18 @@ static void bevel_list_smooth(BevList *bl, int smooth_iter)
while(nr--) {
/* interpolate quats */
float zaxis[3] = {0,0,1}, cross[3], q2[4];
- QuatInterpol(q, bevp0_quat, bevp2->quat, 0.5);
- NormalQuat(q);
+ interp_qt_qtqt(q, bevp0_quat, bevp2->quat, 0.5);
+ normalize_qt(q);
- QuatMulVecf(q, zaxis);
- Crossf(cross, zaxis, bevp1->dir);
- AxisAngleToQuat(q2, cross, NormalizedVecAngle2(zaxis, bevp1->dir));
- NormalQuat(q2);
+ mul_qt_v3(q, zaxis);
+ cross_v3_v3v3(cross, zaxis, bevp1->dir);
+ axis_angle_to_quat(q2, cross, angle_normalized_v3v3(zaxis, bevp1->dir));
+ normalize_qt(q2);
QUATCOPY(bevp0_quat, bevp1->quat);
- QuatMul(q, q2, q);
- QuatInterpol(bevp1->quat, bevp1->quat, q, 0.5);
- NormalQuat(bevp1->quat);
+ mul_qt_qtqt(q, q2, q);
+ interp_qt_qtqt(bevp1->quat, bevp1->quat, q, 0.5);
+ normalize_qt(bevp1->quat);
bevp0= bevp1;
@@ -1716,8 +1716,8 @@ static void make_bevel_list_3D_zup(BevList *bl)
nr= bl->nr;
while(nr--) {
/* totally simple */
- VecBisect3(bevp1->dir, bevp0->vec, bevp1->vec, bevp2->vec);
- vectoquat(bevp1->dir, 5, 1, bevp1->quat);
+ bisect_v3_v3v3v3(bevp1->dir, bevp0->vec, bevp1->vec, bevp2->vec);
+ vec_to_quat( bevp1->quat,bevp1->dir, 5, 1);
bevp0= bevp1;
bevp1= bevp2;
@@ -1743,15 +1743,15 @@ static void make_bevel_list_3D_minimum_twist(BevList *bl)
while(nr--) {
if(nr+4 > bl->nr) { /* first time and second time, otherwise first point adjusts last */
- vectoquat(bevp1->dir, 5, 1, bevp1->quat);
+ vec_to_quat( bevp1->quat,bevp1->dir, 5, 1);
}
else {
- float angle= NormalizedVecAngle2(bevp0->dir, bevp1->dir);
+ float angle= angle_normalized_v3v3(bevp0->dir, bevp1->dir);
if(angle > 0.0f) { /* otherwise we can keep as is */
- Crossf(cross_tmp, bevp0->dir, bevp1->dir);
- AxisAngleToQuat(q, cross_tmp, angle);
- QuatMul(bevp1->quat, q, bevp0->quat);
+ cross_v3_v3v3(cross_tmp, bevp0->dir, bevp1->dir);
+ axis_angle_to_quat(q, cross_tmp, angle);
+ mul_qt_qtqt(bevp1->quat, q, bevp0->quat);
}
else {
QUATCOPY(bevp1->quat, bevp0->quat);
@@ -1788,26 +1788,26 @@ static void make_bevel_list_3D_minimum_twist(BevList *bl)
bevp_last--;
/* quats and vec's are normalized, should not need to re-normalize */
- QuatMulVecf(bevp_first->quat, vec_1);
- QuatMulVecf(bevp_last->quat, vec_2);
- Normalize(vec_1);
- Normalize(vec_2);
+ mul_qt_v3(bevp_first->quat, vec_1);
+ mul_qt_v3(bevp_last->quat, vec_2);
+ normalize_v3(vec_1);
+ normalize_v3(vec_2);
/* align the vector, can avoid this and it looks 98% OK but
* better to align the angle quat roll's before comparing */
{
- Crossf(cross_tmp, bevp_last->dir, bevp_first->dir);
- angle = NormalizedVecAngle2(bevp_first->dir, bevp_last->dir);
- AxisAngleToQuat(q, cross_tmp, angle);
- QuatMulVecf(q, vec_2);
+ cross_v3_v3v3(cross_tmp, bevp_last->dir, bevp_first->dir);
+ angle = angle_normalized_v3v3(bevp_first->dir, bevp_last->dir);
+ axis_angle_to_quat(q, cross_tmp, angle);
+ mul_qt_v3(q, vec_2);
}
- angle= NormalizedVecAngle2(vec_1, vec_2);
+ angle= angle_normalized_v3v3(vec_1, vec_2);
/* flip rotation if needs be */
- Crossf(cross_tmp, vec_1, vec_2);
- Normalize(cross_tmp);
- if(NormalizedVecAngle2(bevp_first->dir, cross_tmp) < 90/(180.0/M_PI))
+ cross_v3_v3v3(cross_tmp, vec_1, vec_2);
+ normalize_v3(cross_tmp);
+ if(angle_normalized_v3v3(bevp_first->dir, cross_tmp) < 90/(180.0/M_PI))
angle = -angle;
bevp2= (BevPoint *)(bl+1);
@@ -1818,8 +1818,8 @@ static void make_bevel_list_3D_minimum_twist(BevList *bl)
while(nr--) {
ang_fac= angle * (1.0f-((float)nr/bl->nr)); /* also works */
- AxisAngleToQuat(q, bevp1->dir, ang_fac);
- QuatMul(bevp1->quat, q, bevp1->quat);
+ axis_angle_to_quat(q, bevp1->dir, ang_fac);
+ mul_qt_qtqt(bevp1->quat, q, bevp1->quat);
bevp0= bevp1;
bevp1= bevp2;
@@ -1837,7 +1837,7 @@ static void make_bevel_list_3D_tangent(BevList *bl)
bevel_list_calc_bisect(bl);
if(bl->poly== -1) /* check its not cyclic */
- bevel_list_cyclic_fix(bl); // XXX - run this now so tangents will be right before doing the flipping
+ bevel_list_cyclic_fix_3D(bl); // XXX - run this now so tangents will be right before doing the flipping
bevel_list_flip_tangents(bl);
/* correct the tangents */
@@ -1848,9 +1848,9 @@ static void make_bevel_list_3D_tangent(BevList *bl)
nr= bl->nr;
while(nr--) {
- Crossf(cross_tmp, bevp1->tan, bevp1->dir);
- Crossf(bevp1->tan, cross_tmp, bevp1->dir);
- Normalize(bevp1->tan);
+ cross_v3_v3v3(cross_tmp, bevp1->tan, bevp1->dir);
+ cross_v3_v3v3(bevp1->tan, cross_tmp, bevp1->dir);
+ normalize_v3(bevp1->tan);
bevp0= bevp1;
bevp1= bevp2;
@@ -1872,9 +1872,9 @@ static void make_bevel_list_3D_tangent(BevList *bl)
float cross_tmp[3];
float zero[3] = {0,0,0};
- Crossf(cross_tmp, bevp1->tan, bevp1->dir);
- Normalize(cross_tmp);
- triatoquat(zero, cross_tmp, bevp1->tan, bevp1->quat); /* XXX - could be faster */
+ cross_v3_v3v3(cross_tmp, bevp1->tan, bevp1->dir);
+ normalize_v3(cross_tmp);
+ tri_to_quat( bevp1->quat,zero, cross_tmp, bevp1->tan); /* XXX - could be faster */
bevp0= bevp1;
bevp1= bevp2;
@@ -1896,7 +1896,7 @@ static void make_bevel_list_3D(BevList *bl, int smooth_iter, int twist_mode)
}
if(bl->poly== -1) /* check its not cyclic */
- bevel_list_cyclic_fix(bl);
+ bevel_list_cyclic_fix_3D(bl);
if(smooth_iter)
bevel_list_smooth(bl, smooth_iter);
@@ -1906,6 +1906,29 @@ static void make_bevel_list_3D(BevList *bl, int smooth_iter, int twist_mode)
+/* only for 2 points */
+static void make_bevel_list_segment_3D(BevList *bl)
+{
+ float q[4];
+
+ BevPoint *bevp2= (BevPoint *)(bl+1);
+ BevPoint *bevp1= bevp2+1;
+
+ /* simple quat/dir */
+ sub_v3_v3v3(bevp1->dir, bevp1->vec, bevp2->vec);
+ normalize_v3(bevp1->dir);
+
+ vec_to_quat( bevp1->quat,bevp1->dir, 5, 1);
+
+ axis_angle_to_quat(q, bevp1->dir, bevp1->alfa);
+ mul_qt_qtqt(bevp1->quat, q, bevp1->quat);
+ normalize_qt(bevp1->quat);
+ VECCOPY(bevp2->dir, bevp1->dir);
+ QUATCOPY(bevp2->quat, bevp1->quat);
+}
+
+
+
void makeBevelList(Object *ob)
{
/*
@@ -2213,7 +2236,9 @@ void makeBevelList(Object *ob)
}
/* STEP 4: 2D-COSINES or 3D ORIENTATION */
- if((cu->flag & CU_3D)==0) { /* 3D */
+ if((cu->flag & CU_3D)==0) {
+ /* note: bevp->dir and bevp->quat are not needed for beveling but are
+ * used when making a path from a 2D curve, therefor they need to be set - Campbell */
bl= cu->bev.first;
while(bl) {
@@ -2230,6 +2255,9 @@ void makeBevelList(Object *ob)
calc_bevel_sin_cos(x1, y1, -x1, -y1, &(bevp1->sina), &(bevp1->cosa));
bevp2->sina= bevp1->sina;
bevp2->cosa= bevp1->cosa;
+
+ /* fill in dir & quat */
+ make_bevel_list_segment_3D(bl);
}
else {
bevp2= (BevPoint *)(bl+1);
@@ -2245,6 +2273,12 @@ void makeBevelList(Object *ob)
calc_bevel_sin_cos(x1, y1, x2, y2, &(bevp1->sina), &(bevp1->cosa));
+ /* from: make_bevel_list_3D_zup, could call but avoid a second loop.
+ * no need for tricky tilt calculation as with 3D curves */
+ bisect_v3_v3v3v3(bevp1->dir, bevp0->vec, bevp1->vec, bevp2->vec);
+ vec_to_quat( bevp1->quat,bevp1->dir, 5, 1);
+ /* done with inline make_bevel_list_3D_zup */
+
bevp0= bevp1;
bevp1= bevp2;
bevp2++;
@@ -2261,6 +2295,9 @@ void makeBevelList(Object *ob)
bevp1= bevp-1;
bevp->sina= bevp1->sina;
bevp->cosa= bevp1->cosa;
+
+ /* correct for the dir/quat, see above why its needed */
+ bevel_list_cyclic_fix_3D(bl);
}
}
bl= bl->next;
@@ -2274,22 +2311,7 @@ void makeBevelList(Object *ob)
/* do nothing */
}
else if(bl->nr==2) { /* 2 pnt, treat separate */
- float q[4];
-
- bevp2= (BevPoint *)(bl+1);
- bevp1= bevp2+1;
-
- /* simple quat/dir */
- VecSubf(bevp1->dir, bevp1->vec, bevp2->vec);
- Normalize(bevp1->dir);
-
- vectoquat(bevp1->dir, 5, 1, bevp1->quat);
-
- AxisAngleToQuat(q, bevp1->dir, bevp1->alfa);
- QuatMul(bevp1->quat, q, bevp1->quat);
- NormalQuat(bevp1->quat);
- VECCOPY(bevp2->dir, bevp1->dir);
- QUATCOPY(bevp2->quat, bevp1->quat);
+ make_bevel_list_segment_3D(bl);
}
else {
make_bevel_list_3D(bl, (int)(resolu*cu->twist_smooth), cu->twist_mode);
@@ -2421,10 +2443,10 @@ void calchandleNurb(BezTriple *bezt, BezTriple *prev, BezTriple *next, int mode)
if(leftviolate || rightviolate) { /* align left handle */
float h1[3], h2[3];
- VecSubf(h1, p2-3, p2);
- VecSubf(h2, p2, p2+3);
- len1= Normalize(h1);
- len2= Normalize(h2);
+ sub_v3_v3v3(h1, p2-3, p2);
+ sub_v3_v3v3(h2, p2, p2+3);
+ len1= normalize_v3(h1);
+ len2= normalize_v3(h2);
vz= INPR(h1, h2);
@@ -2460,8 +2482,8 @@ void calchandleNurb(BezTriple *bezt, BezTriple *prev, BezTriple *next, int mode)
*(p2+5)= *(p2+2)+dz1;
}
- len2= VecLenf(p2, p2+3);
- len1= VecLenf(p2, p2-3);
+ len2= len_v3v3(p2, p2+3);
+ len1= len_v3v3(p2, p2-3);
if(len1==0.0) len1=1.0;
if(len2==0.0) len2=1.0;
@@ -2588,18 +2610,18 @@ void autocalchandlesNurb(Nurb *nu, int flag)
if(flag==0 || (bezt1->f1 & flag) ) {
bezt1->h1= 0;
/* distance too short: vectorhandle */
- if( VecLenf( bezt1->vec[1], bezt0->vec[1] ) < 0.0001) {
+ if( len_v3v3( bezt1->vec[1], bezt0->vec[1] ) < 0.0001) {
bezt1->h1= HD_VECT;
leftsmall= 1;
}
else {
/* aligned handle? */
- if(DistVL2Dfl(bezt1->vec[1], bezt1->vec[0], bezt1->vec[2]) < 0.0001) {
+ if(dist_to_line_v2(bezt1->vec[1], bezt1->vec[0], bezt1->vec[2]) < 0.0001) {
align= 1;
bezt1->h1= HD_ALIGN;
}
/* or vector handle? */
- if(DistVL2Dfl(bezt1->vec[0], bezt1->vec[1], bezt0->vec[1]) < 0.0001)
+ if(dist_to_line_v2(bezt1->vec[0], bezt1->vec[1], bezt0->vec[1]) < 0.0001)
bezt1->h1= HD_VECT;
}
@@ -2608,7 +2630,7 @@ void autocalchandlesNurb(Nurb *nu, int flag)
if(flag==0 || (bezt1->f3 & flag) ) {
bezt1->h2= 0;
/* distance too short: vectorhandle */
- if( VecLenf( bezt1->vec[1], bezt2->vec[1] ) < 0.0001) {
+ if( len_v3v3( bezt1->vec[1], bezt2->vec[1] ) < 0.0001) {
bezt1->h2= HD_VECT;
rightsmall= 1;
}
@@ -2617,7 +2639,7 @@ void autocalchandlesNurb(Nurb *nu, int flag)
if(align) bezt1->h2= HD_ALIGN;
/* or vector handle? */
- if(DistVL2Dfl(bezt1->vec[2], bezt1->vec[1], bezt2->vec[1]) < 0.0001)
+ if(dist_to_line_v2(bezt1->vec[2], bezt1->vec[1], bezt2->vec[1]) < 0.0001)
bezt1->h2= HD_VECT;
}
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 28aaadea9c3..7b754025b6c 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -34,7 +34,7 @@
#include "BKE_customdata.h"
#include "BKE_utildefines.h" // CLAMP
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_linklist.h"
#include "BLI_mempool.h"
@@ -410,21 +410,21 @@ static void mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, fl
vrat = v - y;
uopp = 1 - urat;
- VecCopyf(d[0], disps[y * st + x]);
- VecCopyf(d[1], disps[y * st + x2]);
- VecCopyf(d[2], disps[y2 * st + x]);
- VecCopyf(d[3], disps[y2 * st + x2]);
- VecMulf(d[0], uopp);
- VecMulf(d[1], urat);
- VecMulf(d[2], uopp);
- VecMulf(d[3], urat);
+ copy_v3_v3(d[0], disps[y * st + x]);
+ copy_v3_v3(d[1], disps[y * st + x2]);
+ copy_v3_v3(d[2], disps[y2 * st + x]);
+ copy_v3_v3(d[3], disps[y2 * st + x2]);
+ mul_v3_fl(d[0], uopp);
+ mul_v3_fl(d[1], urat);
+ mul_v3_fl(d[2], uopp);
+ mul_v3_fl(d[3], urat);
- VecAddf(d2[0], d[0], d[1]);
- VecAddf(d2[1], d[2], d[3]);
- VecMulf(d2[0], 1 - vrat);
- VecMulf(d2[1], vrat);
+ add_v3_v3v3(d2[0], d[0], d[1]);
+ add_v3_v3v3(d2[1], d[2], d[3]);
+ mul_v3_fl(d2[0], 1 - vrat);
+ mul_v3_fl(d2[1], vrat);
- VecAddf(out, d2[0], d2[1]);
+ add_v3_v3v3(out, d2[0], d2[1]);
}
static void layerSwap_mdisps(void *data, int *ci)
@@ -440,7 +440,7 @@ static void layerSwap_mdisps(void *data, int *ci)
for(y = 0; y < st; ++y) {
for(x = 0; x < st; ++x) {
- VecCopyf(d[(st - y - 1) * st + (st - x - 1)], s->disps[y * st + x]);
+ copy_v3_v3(d[(st - y - 1) * st + (st - x - 1)], s->disps[y * st + x]);
}
}
@@ -462,7 +462,7 @@ static void layerInterp_mdisps(void **sources, float *weights, float *sub_weight
/* Initialize the destination */
for(i = 0; i < d->totdisp; ++i) {
float z[3] = {0,0,0};
- VecCopyf(d->disps[i], z);
+ copy_v3_v3(d->disps[i], z);
}
/* For now, some restrictions on the input */
@@ -493,7 +493,7 @@ static void layerInterp_mdisps(void **sources, float *weights, float *sub_weight
float srcdisp[3];
mdisps_bilinear(srcdisp, s->disps, st, mid3[0], mid3[1]);
- VecCopyf(d->disps[y * st + x], srcdisp);
+ copy_v3_v3(d->disps[y * st + x], srcdisp);
}
}
}
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index b7949a6e06f..c1e45243bb5 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -59,7 +59,7 @@
#include "BKE_mesh.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 36568ee5667..302b81f2a04 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -34,7 +34,7 @@
#endif
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -327,7 +327,7 @@ static void dag_add_driver_relation(AnimData *adt, DagForest *dag, DagNode *node
node1 = dag_get_node(dag, dtar->id);
/* check if bone... */
- if ((ob->type==OB_ARMATURE) && dtar->rna_path && strstr(dtar->rna_path, "pose.pose_channels["))
+ if ((ob->type==OB_ARMATURE) && dtar->rna_path && strstr(dtar->rna_path, "pose.bones["))
dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver");
/* check if ob data */
else if (dtar->rna_path && strstr(dtar->rna_path, "data."))
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 64af08d6f6a..48fb283c404 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -56,7 +56,7 @@
#include "DNA_key_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_edgehash.h"
@@ -220,12 +220,12 @@ void addnormalsDispList(Object *ob, ListBase *lb)
for(; b<dl->nr; b++) {
- CalcNormFloat4(v1, v3, v4, v2, nor);
+ normal_quad_v3( nor,v1, v3, v4, v2);
- VecAddf(n1, n1, nor);
- VecAddf(n2, n2, nor);
- VecAddf(n3, n3, nor);
- VecAddf(n4, n4, nor);
+ add_v3_v3v3(n1, n1, nor);
+ add_v3_v3v3(n2, n2, nor);
+ add_v3_v3v3(n3, n3, nor);
+ add_v3_v3v3(n4, n4, nor);
v2= v1; v1+= 3;
v4= v3; v3+= 3;
@@ -236,7 +236,7 @@ void addnormalsDispList(Object *ob, ListBase *lb)
a= dl->parts*dl->nr;
v1= ndata;
while(a--) {
- Normalize(v1);
+ normalize_v3(v1);
v1+= 3;
}
}
@@ -475,11 +475,11 @@ static void init_fastshade_for_ob(Render *re, Object *ob, int *need_orco_r, floa
init_fastshade_shadeinput(re);
RE_DataBase_GetView(re, tmat);
- Mat4MulMat4(mat, ob->obmat, tmat);
+ mul_m4_m4m4(mat, ob->obmat, tmat);
- Mat4Invert(tmat, mat);
- Mat3CpyMat4(imat, tmat);
- if(ob->transflag & OB_NEG_SCALE) Mat3MulFloat((float *)imat, -1.0);
+ invert_m4_m4(tmat, mat);
+ copy_m3_m4(imat, tmat);
+ if(ob->transflag & OB_NEG_SCALE) mul_m3_fl(imat, -1.0);
if (need_orco_r) *need_orco_r= 0;
for(a=0; a<ob->totcol; a++) {
@@ -563,7 +563,7 @@ static void mesh_create_shadedColors(Render *re, Object *ob, int onlyForMesh, un
vn[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
vn[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
vn[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn;
- Normalize(vn);
+ normalize_v3(vn);
}
for (i=0; i<totface; i++) {
@@ -586,15 +586,15 @@ static void mesh_create_shadedColors(Render *re, Object *ob, int onlyForMesh, un
VECCOPY(nor, &nors[i*3]);
} else {
if (mf->v4)
- CalcNormFloat4(mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co, nor);
+ normal_quad_v3( nor,mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co);
else
- CalcNormFloat(mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, nor);
+ normal_tri_v3( nor,mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co);
}
n1[0]= imat[0][0]*nor[0]+imat[0][1]*nor[1]+imat[0][2]*nor[2];
n1[1]= imat[1][0]*nor[0]+imat[1][1]*nor[1]+imat[1][2]*nor[2];
n1[2]= imat[2][0]*nor[0]+imat[2][1]*nor[1]+imat[2][2]*nor[2];
- Normalize(n1);
+ normalize_v3(n1);
for (j=0; j<nverts; j++) {
MVert *mv= &mvert[vidx[j]];
@@ -603,7 +603,7 @@ static void mesh_create_shadedColors(Render *re, Object *ob, int onlyForMesh, un
float *vn = (mf->flag & ME_SMOOTH)?&vnors[3*vidx[j]]:n1;
VECCOPY(vec, mv->co);
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
vec[0]+= 0.001*vn[0];
vec[1]+= 0.001*vn[1];
vec[2]+= 0.001*vn[2];
@@ -708,14 +708,14 @@ void shadeDispList(Scene *scene, Base *base)
n1[0]= imat[0][0]*dl->nors[0]+imat[0][1]*dl->nors[1]+imat[0][2]*dl->nors[2];
n1[1]= imat[1][0]*dl->nors[0]+imat[1][1]*dl->nors[1]+imat[1][2]*dl->nors[2];
n1[2]= imat[2][0]*dl->nors[0]+imat[2][1]*dl->nors[1]+imat[2][2]*dl->nors[2];
- Normalize(n1);
+ normalize_v3(n1);
fp= dl->verts;
a= dl->nr;
while(a--) {
VECCOPY(vec, fp);
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
fastshade(vec, n1, fp, ma, (char *)col1, NULL);
@@ -731,12 +731,12 @@ void shadeDispList(Scene *scene, Base *base)
while(a--) {
VECCOPY(vec, fp);
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
n1[0]= imat[0][0]*nor[0]+imat[0][1]*nor[1]+imat[0][2]*nor[2];
n1[1]= imat[1][0]*nor[0]+imat[1][1]*nor[1]+imat[1][2]*nor[2];
n1[2]= imat[2][0]*nor[0]+imat[2][1]*nor[1]+imat[2][2]*nor[2];
- Normalize(n1);
+ normalize_v3(n1);
fastshade(vec, n1, fp, ma, (char *)col1, NULL);
@@ -769,13 +769,13 @@ void shadeDispList(Scene *scene, Base *base)
a= dl->nr;
while(a--) {
VECCOPY(vec, fp);
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
/* transpose ! */
n1[0]= imat[0][0]*nor[0]+imat[0][1]*nor[1]+imat[0][2]*nor[2];
n1[1]= imat[1][0]*nor[0]+imat[1][1]*nor[1]+imat[1][2]*nor[2];
n1[2]= imat[2][0]*nor[0]+imat[2][1]*nor[1]+imat[2][2]*nor[2];
- Normalize(n1);
+ normalize_v3(n1);
fastshade(vec, n1, fp, ma, (char *)col1, NULL);
@@ -1612,7 +1612,7 @@ void makeDispListCurveTypes(Scene *scene, Object *ob, int forOrco)
vec[1]= fp1[2];
vec[2]= 0.0;
- QuatMulVecf(bevp->quat, vec);
+ mul_qt_v3(bevp->quat, vec);
data[0]= bevp->vec[0] + fac*vec[0];
data[1]= bevp->vec[1] + fac*vec[1];
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index 9b648e2c05c..6d63553396d 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -52,7 +52,7 @@
#include "DNA_texture_types.h"
#include "DNA_scene_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_jitter.h"
#include "BLI_listbase.h"
@@ -221,8 +221,8 @@ static void precalculate_effector(EffectorCache *eff)
if(cu->path && cu->path->data) {
where_on_path(eff->ob, 0.0, eff->guide_loc, eff->guide_dir, NULL, &eff->guide_radius);
- Mat4MulVecfl(eff->ob->obmat, eff->guide_loc);
- Mat4Mul3Vecfl(eff->ob->obmat, eff->guide_dir);
+ mul_m4_v3(eff->ob->obmat, eff->guide_loc);
+ mul_mat3_m4_v3(eff->ob->obmat, eff->guide_dir);
}
}
}
@@ -433,8 +433,8 @@ static float eff_calc_visibility(ListBase *colliders, EffectorCache *eff, Effect
return visibility;
VECCOPY(norm, efd->vec_to_point);
- VecNegf(norm);
- len = Normalize(norm);
+ negate_v3(norm);
+ len = normalize_v3(norm);
// check all collision objects
for(col = colls->first; col; col = col->next)
@@ -520,7 +520,7 @@ float effector_falloff(EffectorCache *eff, EffectorData *efd, EffectedPoint *poi
float falloff = weights ? weights->weight[0] * weights->weight[eff->pd->forcefield] : 1.0f;
float fac, r_fac;
- fac = Inpf(efd->nor, efd->vec_to_point2);
+ fac = dot_v3v3(efd->nor, efd->vec_to_point2);
if(eff->pd->zdir == PFIELD_Z_POS && fac < 0.0f)
falloff=0.0f;
@@ -537,7 +537,7 @@ float effector_falloff(EffectorCache *eff, EffectorData *efd, EffectedPoint *poi
break;
VECADDFAC(temp, efd->vec_to_point, efd->nor, -fac);
- r_fac= VecLength(temp);
+ r_fac= len_v3(temp);
falloff*= falloff_func_rad(eff->pd, r_fac);
break;
case PFIELD_FALL_CONE:
@@ -545,7 +545,7 @@ float effector_falloff(EffectorCache *eff, EffectorData *efd, EffectedPoint *poi
if(falloff == 0.0f)
break;
- r_fac=saacos(fac/VecLength(efd->vec_to_point))*180.0f/(float)M_PI;
+ r_fac=saacos(fac/len_v3(efd->vec_to_point))*180.0f/(float)M_PI;
falloff*= falloff_func_rad(eff->pd, r_fac);
break;
@@ -574,12 +574,12 @@ int closest_point_on_surface(SurfaceModifierData *surmd, float *co, float *surfa
MFace *mface = CDDM_get_face(surmd->dm, nearest.index);
VECCOPY(surface_vel, surmd->v[mface->v1].co);
- VecAddf(surface_vel, surface_vel, surmd->v[mface->v2].co);
- VecAddf(surface_vel, surface_vel, surmd->v[mface->v3].co);
+ add_v3_v3v3(surface_vel, surface_vel, surmd->v[mface->v2].co);
+ add_v3_v3v3(surface_vel, surface_vel, surmd->v[mface->v3].co);
if(mface->v4)
- VecAddf(surface_vel, surface_vel, surmd->v[mface->v4].co);
+ add_v3_v3v3(surface_vel, surface_vel, surmd->v[mface->v4].co);
- VecMulf(surface_vel, mface->v4 ? 0.25f : 0.333f);
+ mul_v3_fl(surface_vel, mface->v4 ? 0.25f : 0.333f);
}
return 1;
}
@@ -596,9 +596,9 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
float vec[3];
/* using velocity corrected location allows for easier sliding over effector surface */
- VecCopyf(vec, point->vel);
- VecMulf(vec, point->vel_to_frame);
- VecAddf(vec, vec, point->loc);
+ copy_v3_v3(vec, point->vel);
+ mul_v3_fl(vec, point->vel_to_frame);
+ add_v3_v3v3(vec, vec, point->loc);
ret = closest_point_on_surface(eff->surmd, vec, efd->loc, efd->nor, real_velocity ? efd->vel : NULL);
@@ -612,10 +612,10 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
dm->getVertCo(dm, *efd->index, efd->loc);
dm->getVertNo(dm, *efd->index, efd->nor);
- Mat4MulVecfl(eff->ob->obmat, efd->loc);
- Mat4Mul3Vecfl(eff->ob->obmat, efd->nor);
+ mul_m4_v3(eff->ob->obmat, efd->loc);
+ mul_mat3_m4_v3(eff->ob->obmat, efd->nor);
- Normalize(efd->nor);
+ normalize_v3(efd->nor);
efd->size = 0.0f;
@@ -660,15 +660,15 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
/* use z-axis as normal*/
VECCOPY(efd->nor, ob->obmat[2]);
- Normalize(efd->nor);
+ normalize_v3(efd->nor);
/* for vortex the shape chooses between old / new force */
if(eff->pd->shape == PFIELD_SHAPE_PLANE) {
/* efd->loc is closes point on effector xy-plane */
float temp[3];
- VecSubf(temp, point->loc, ob->obmat[3]);
- Projf(efd->loc, temp, efd->nor);
- VecSubf(efd->loc, point->loc, efd->loc);
+ sub_v3_v3v3(temp, point->loc, ob->obmat[3]);
+ project_v3_v3v3(efd->loc, temp, efd->nor);
+ sub_v3_v3v3(efd->loc, point->loc, efd->loc);
}
else {
VECCOPY(efd->loc, ob->obmat[3]);
@@ -679,7 +679,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
where_is_object_time(eff->scene, ob, cfra - 1.0);
- VecSubf(efd->vel, efd->vel, ob->obmat[3]);
+ sub_v3_v3v3(efd->vel, efd->vel, ob->obmat[3]);
}
*eff->ob = obcopy;
@@ -690,8 +690,8 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
}
if(ret) {
- VecSubf(efd->vec_to_point, point->loc, efd->loc);
- efd->distance = VecLength(efd->vec_to_point);
+ sub_v3_v3v3(efd->vec_to_point, point->loc, efd->loc);
+ efd->distance = len_v3(efd->vec_to_point);
if(eff->flag & PE_USE_NORMAL_DATA) {
VECCOPY(efd->vec_to_point2, efd->vec_to_point);
@@ -699,9 +699,9 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
}
else {
/* for some effectors we need the object center every time */
- VecSubf(efd->vec_to_point2, point->loc, eff->ob->obmat[3]);
+ sub_v3_v3v3(efd->vec_to_point2, point->loc, eff->ob->obmat[3]);
VECCOPY(efd->nor2, eff->ob->obmat[2]);
- Normalize(efd->nor2);
+ normalize_v3(efd->nor2);
}
}
@@ -764,12 +764,12 @@ static void do_texture_effector(EffectorCache *eff, EffectorData *efd, EffectedP
VECCOPY(tex_co,point->loc);
if(eff->pd->flag & PFIELD_TEX_2D) {
- float fac=-Inpf(tex_co, efd->nor);
+ float fac=-dot_v3v3(tex_co, efd->nor);
VECADDFAC(tex_co, tex_co, efd->nor, fac);
}
if(eff->pd->flag & PFIELD_TEX_OBJECT) {
- Mat4Mul3Vecfl(eff->ob->obmat, tex_co);
+ mul_mat3_m4_v3(eff->ob->obmat, tex_co);
}
hasrgb = multitex_ext(eff->pd->tex, tex_co, NULL,NULL, 1, result);
@@ -815,11 +815,11 @@ static void do_texture_effector(EffectorCache *eff, EffectorData *efd, EffectedP
}
if(eff->pd->flag & PFIELD_TEX_2D){
- float fac = -Inpf(force, efd->nor);
+ float fac = -dot_v3v3(force, efd->nor);
VECADDFAC(force, force, efd->nor, fac);
}
- VecAddf(total_force, total_force, force);
+ add_v3_v3v3(total_force, total_force, force);
}
void do_physical_effector(EffectorCache *eff, EffectorData *efd, EffectedPoint *point, float *total_force)
{
@@ -844,51 +844,51 @@ void do_physical_effector(EffectorCache *eff, EffectorData *efd, EffectedPoint *
switch(pd->forcefield){
case PFIELD_WIND:
VECCOPY(force, efd->nor);
- VecMulf(force, strength * efd->falloff);
+ mul_v3_fl(force, strength * efd->falloff);
break;
case PFIELD_FORCE:
- Normalize(force);
- VecMulf(force, strength * efd->falloff);
+ normalize_v3(force);
+ mul_v3_fl(force, strength * efd->falloff);
break;
case PFIELD_VORTEX:
/* old vortex force */
if(pd->shape == PFIELD_SHAPE_POINT) {
- Crossf(force, efd->nor, efd->vec_to_point);
- Normalize(force);
- VecMulf(force, strength * efd->distance * efd->falloff);
+ cross_v3_v3v3(force, efd->nor, efd->vec_to_point);
+ normalize_v3(force);
+ mul_v3_fl(force, strength * efd->distance * efd->falloff);
}
else {
/* new vortex force */
- Crossf(temp, efd->nor2, efd->vec_to_point2);
- VecMulf(temp, strength * efd->falloff);
+ cross_v3_v3v3(temp, efd->nor2, efd->vec_to_point2);
+ mul_v3_fl(temp, strength * efd->falloff);
- Crossf(force, efd->nor2, temp);
- VecMulf(force, strength * efd->falloff);
+ cross_v3_v3v3(force, efd->nor2, temp);
+ mul_v3_fl(force, strength * efd->falloff);
VECADDFAC(temp, temp, point->vel, -point->vel_to_sec);
- VecAddf(force, force, temp);
+ add_v3_v3v3(force, force, temp);
}
break;
case PFIELD_MAGNET:
if(eff->pd->shape == PFIELD_SHAPE_POINT)
/* magnetic field of a moving charge */
- Crossf(temp, efd->nor, efd->vec_to_point);
+ cross_v3_v3v3(temp, efd->nor, efd->vec_to_point);
else
- VecCopyf(temp, efd->nor);
+ copy_v3_v3(temp, efd->nor);
- Normalize(temp);
- VecMulf(temp, strength * efd->falloff);
- Crossf(force, point->vel, temp);
- VecMulf(force, point->vel_to_sec);
+ normalize_v3(temp);
+ mul_v3_fl(temp, strength * efd->falloff);
+ cross_v3_v3v3(force, point->vel, temp);
+ mul_v3_fl(force, point->vel_to_sec);
break;
case PFIELD_HARMONIC:
- VecMulf(force, -strength * efd->falloff);
- VecCopyf(temp, point->vel);
- VecMulf(temp, -damp * 2.0f * (float)sqrt(fabs(strength)) * point->vel_to_sec);
- VecAddf(force, force, temp);
+ mul_v3_fl(force, -strength * efd->falloff);
+ copy_v3_v3(temp, point->vel);
+ mul_v3_fl(temp, -damp * 2.0f * (float)sqrt(fabs(strength)) * point->vel_to_sec);
+ add_v3_v3v3(force, force, temp);
break;
case PFIELD_CHARGE:
- VecMulf(force, point->charge * strength * efd->falloff);
+ mul_v3_fl(force, point->charge * strength * efd->falloff);
break;
case PFIELD_LENNARDJ:
fac = pow((efd->size + point->size) / efd->distance, 6.0);
@@ -898,7 +898,7 @@ void do_physical_effector(EffectorCache *eff, EffectorData *efd, EffectedPoint *
/* limit the repulsive term drastically to avoid huge forces */
fac = ((fac>2.0) ? 2.0 : fac);
- VecMulf(force, strength * fac);
+ mul_v3_fl(force, strength * fac);
break;
case PFIELD_BOID:
/* Boid field is handled completely in boids code. */
@@ -913,16 +913,16 @@ void do_physical_effector(EffectorCache *eff, EffectorData *efd, EffectedPoint *
force[0] = -1.0f + 2.0f * BLI_gTurbulence(pd->f_size, temp[0], temp[1], temp[2], 2,0,2);
force[1] = -1.0f + 2.0f * BLI_gTurbulence(pd->f_size, temp[1], temp[2], temp[0], 2,0,2);
force[2] = -1.0f + 2.0f * BLI_gTurbulence(pd->f_size, temp[2], temp[0], temp[1], 2,0,2);
- VecMulf(force, strength * efd->falloff);
+ mul_v3_fl(force, strength * efd->falloff);
break;
case PFIELD_DRAG:
VECCOPY(force, point->vel);
- fac = Normalize(force) * point->vel_to_sec;
+ fac = normalize_v3(force) * point->vel_to_sec;
strength = MIN2(strength, 2.0f);
damp = MIN2(damp, 2.0f);
- VecMulf(force, -efd->falloff * fac * (strength * fac + damp));
+ mul_v3_fl(force, -efd->falloff * fac * (strength * fac + damp));
break;
}
@@ -937,12 +937,12 @@ void do_physical_effector(EffectorCache *eff, EffectorData *efd, EffectedPoint *
if(pd->flag & PFIELD_DO_ROTATION && point->ave && point->rot) {
float xvec[3] = {1.0f, 0.0f, 0.0f};
float dave[3];
- QuatMulVecf(point->rot, xvec);
- Crossf(dave, xvec, force);
+ mul_qt_v3(point->rot, xvec);
+ cross_v3_v3v3(dave, xvec, force);
if(pd->f_flow != 0.0f) {
VECADDFAC(dave, dave, point->ave, -pd->f_flow * efd->falloff);
}
- VecAddf(point->ave, point->ave, dave);
+ add_v3_v3v3(point->ave, point->ave, dave);
}
}
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c
index 8827897a509..48a05c2f6a7 100644
--- a/source/blender/blenkernel/intern/exotic.c
+++ b/source/blender/blenkernel/intern/exotic.c
@@ -64,7 +64,7 @@
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BKE_blender.h"
@@ -180,7 +180,7 @@ static void mesh_add_normals_flags(Mesh *me)
v3= me->mvert+mface->v3;
v4= me->mvert+mface->v4;
- CalcNormFloat(v1->co, v2->co, v3->co, nor);
+ normal_tri_v3( nor,v1->co, v2->co, v3->co);
sno[0]= 32767.0*nor[0];
sno[1]= 32767.0*nor[1];
sno[2]= 32767.0*nor[2];
@@ -1249,7 +1249,7 @@ static void read_inventor(Scene *scene, char *str, struct ListBase *listb)
VECCOPY(bp->vec, data);
if(coordtype==4) {
bp->vec[3]= data[3];
- VecMulf(bp->vec, 1.0f/data[3]);
+ mul_v3_fl(bp->vec, 1.0f/data[3]);
}
else bp->vec[3]= 1.0;
data+= coordtype;
@@ -1837,7 +1837,7 @@ static void write_vert_stl(Object *ob, MVert *verts, int index, FILE *fpSTL)
float vert[3];
VECCOPY(vert, verts[(index)].co);
- Mat4MulVecfl(ob->obmat, vert);
+ mul_m4_v3(ob->obmat, vert);
if (ENDIAN_ORDER==B_ENDIAN) {
SWITCH_INT(vert[0]);
@@ -2174,7 +2174,7 @@ static void write_camera_vrml(FILE *fp, Object *ob)
Camera *cam;
if(ob==0) return;
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
fprintf(fp, "\tMatrixTransform {\n");
@@ -3031,10 +3031,10 @@ static void dxf_read_line(Scene *scene, int noob) {
mvert= &me->mvert[(me->totvert-2)];
- VecSubf(mvert->co, cent, vcenter);
+ sub_v3_v3v3(mvert->co, cent, vcenter);
mvert++;
if (vspace) { VECCOPY(mvert->co, epoint);
- } else VecSubf(mvert->co, epoint, vcenter);
+ } else sub_v3_v3v3(mvert->co, epoint, vcenter);
mface= &(((MFace*)me->mface)[me->totface-1]);
mface->v1= me->totvert-2;
@@ -3237,7 +3237,7 @@ static void dxf_read_ellipse(Scene *scene, int noob)
if (vspace) {
VECCOPY(mvert->co, epoint);
} else {
- VecSubf(mvert->co, epoint, vcenter);
+ sub_v3_v3v3(mvert->co, epoint, vcenter);
}
if (v > 0) {
@@ -3360,7 +3360,7 @@ static void dxf_read_arc(Scene *scene, int noob)
if (vspace) {
VECCOPY(mvert->co, epoint);
} else {
- VecSubf(mvert->co, epoint, vcenter);
+ sub_v3_v3v3(mvert->co, epoint, vcenter);
}
if (v > 0) {
@@ -3470,7 +3470,7 @@ static void dxf_read_polyline(Scene *scene, int noob) {
mvert= &me->mvert[me->totvert-1];
if (vspace) { VECCOPY(mvert->co, vert);
- } else VecSubf(mvert->co, vert, vcenter);
+ } else sub_v3_v3v3(mvert->co, vert, vcenter);
}
/* make edges */
@@ -3556,7 +3556,7 @@ static void dxf_read_polyline(Scene *scene, int noob) {
mvert= &me->mvert[(me->totvert-1)];
if (vspace) { VECCOPY(mvert->co, vert);
- } else VecSubf(mvert->co, vert, vcenter);
+ } else sub_v3_v3v3(mvert->co, vert, vcenter);
} else if (vflags & 128) {
if(vids[2]==0) {
@@ -3687,7 +3687,7 @@ static void dxf_read_lwpolyline(Scene *scene, int noob) {
if (vspace) {
VECCOPY(mvert->co, vert);
} else {
- VecSubf(mvert->co, vert, vcenter);
+ sub_v3_v3v3(mvert->co, vert, vcenter);
}
if (v > 0) {
@@ -3859,20 +3859,20 @@ static void dxf_read_3dface(Scene *scene, int noob)
ftmp=NULL;
mvert= &me->mvert[(me->totvert-nverts)];
- VecSubf(mvert->co, cent, vcenter);
+ sub_v3_v3v3(mvert->co, cent, vcenter);
mvert++;
if (vspace) { VECCOPY(mvert->co, vert2);
- } else VecSubf(mvert->co, vert2, vcenter);
+ } else sub_v3_v3v3(mvert->co, vert2, vcenter);
mvert++;
if (vspace) { VECCOPY(mvert->co, vert3);
- } else VecSubf(mvert->co, vert3, vcenter);
+ } else sub_v3_v3v3(mvert->co, vert3, vcenter);
if (nverts==4) {
mvert++;
if (vspace) { VECCOPY(mvert->co, vert4);
- } else VecSubf(mvert->co, vert4, vcenter);
+ } else sub_v3_v3v3(mvert->co, vert4, vcenter);
}
mface= &(((MFace*)me->mface)[me->totface-1]);
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 0ecd1fe912b..0623a5cbe5e 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -43,10 +43,12 @@
#include "DNA_anim_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_noise.h"
#include "BKE_fcurve.h"
+#include "BKE_animsys.h"
+
#include "BKE_curve.h"
#include "BKE_global.h"
#include "BKE_idprop.h"
@@ -177,6 +179,49 @@ void copy_fcurves (ListBase *dst, ListBase *src)
/* --------------------- Finding -------------------------- */
+FCurve *id_data_find_fcurve(ID *id, void *data, StructRNA *type, char *prop_name, int index)
+{
+ /* anim vars */
+ AnimData *adt;
+ FCurve *fcu= NULL;
+
+ /* rna vars */
+ PointerRNA ptr;
+ PropertyRNA *prop;
+ char *path;
+
+ adt= BKE_animdata_from_id(id);
+
+ /* only use the current action ??? */
+ if(adt==NULL || adt->action==NULL)
+ return NULL;
+
+ RNA_pointer_create(id, type, data, &ptr);
+ prop = RNA_struct_find_property(&ptr, prop_name);
+
+ if(prop) {
+ path= RNA_path_from_ID_to_property(&ptr, prop);
+
+ if(path) {
+ /* animation takes priority over drivers */
+ if(adt->action && adt->action->curves.first)
+ fcu= list_find_fcurve(&adt->action->curves, path, index);
+
+ /* if not animated, check if driven */
+#if 0
+ if(!fcu && (adt->drivers.first)) {
+ fcu= list_find_fcurve(&adt->drivers, path, but->rnaindex);
+ }
+#endif
+
+ MEM_freeN(path);
+ }
+ }
+
+ return fcu;
+}
+
+
/* Find the F-Curve affecting the given RNA-access path + index, in the list of F-Curves provided */
FCurve *list_find_fcurve (ListBase *list, const char rna_path[], const int array_index)
{
@@ -686,6 +731,9 @@ DriverTarget *driver_add_new_target (ChannelDriver *driver)
dtar= MEM_callocN(sizeof(DriverTarget), "DriverTarget");
BLI_addtail(&driver->targets, dtar);
+ /* make the default ID-type ID_OB, since most driver targets refer to objects */
+ dtar->idtype= ID_OB;
+
/* give the target a 'unique' name */
strcpy(dtar->name, "var");
BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64);
@@ -774,7 +822,7 @@ float driver_get_target_value (ChannelDriver *driver, DriverTarget *dtar)
}
/* get property to read from, and get value as appropriate */
- if (RNA_path_resolve(&id_ptr, path, &ptr, &prop)) {
+ if (RNA_path_resolve_full(&id_ptr, path, &ptr, &prop, &index)) {
switch (RNA_property_type(prop)) {
case PROP_BOOLEAN:
if (RNA_property_array_length(&ptr, prop))
@@ -801,8 +849,13 @@ float driver_get_target_value (ChannelDriver *driver, DriverTarget *dtar)
break;
}
}
- else if (G.f & G_DEBUG)
- printf("Driver Evaluation Error: cannot resolve target for %s -> %s \n", id->name, path);
+ else {
+ if (G.f & G_DEBUG)
+ printf("Driver Evaluation Error: cannot resolve target for %s -> %s \n", id->name, path);
+
+ driver->flag |= DRIVER_FLAG_INVALID;
+ return 0.0f;
+ }
return value;
}
@@ -831,7 +884,7 @@ static void driver_get_target_pchans2 (ChannelDriver *driver, bPoseChannel **pch
/* resolve path so that we have pointer to the right posechannel */
if (RNA_path_resolve(&id_ptr, dtar->rna_path, &ptr, &prop)) {
/* is pointer valid (i.e. pointing to an actual posechannel */
- if ((ptr.type == &RNA_PoseChannel) && (ptr.data)) {
+ if ((ptr.type == &RNA_PoseBone) && (ptr.data)) {
/* first or second target? */
if (i)
*pchan1= ptr.data;
@@ -924,11 +977,11 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime)
}
/* use the final posed locations */
- Mat4ToQuat(pchan->pose_mat, q1);
- Mat4ToQuat(pchan2->pose_mat, q2);
+ mat4_to_quat(q1, pchan->pose_mat);
+ mat4_to_quat(q2, pchan2->pose_mat);
- QuatInv(q1);
- QuatMul(quat, q1, q2);
+ invert_qt(q1);
+ mul_qt_qtqt(quat, q1, q2);
angle = 2.0f * (saacos(quat[0]));
angle= ABS(angle);
@@ -1017,13 +1070,13 @@ static int findzero (float x, float q0, float q1, float q2, float q3, float *o)
if (d > 0.0) {
t= sqrt(d);
- o[0]= (float)(Sqrt3d(-q+t) + Sqrt3d(-q-t) - a);
+ o[0]= (float)(sqrt3d(-q+t) + sqrt3d(-q-t) - a);
if ((o[0] >= SMALL) && (o[0] <= 1.000001)) return 1;
else return 0;
}
else if (d == 0.0) {
- t= Sqrt3d(-q);
+ t= sqrt3d(-q);
o[0]= (float)(2*t - a);
if ((o[0] >= SMALL) && (o[0] <= 1.000001)) nr++;
diff --git a/source/blender/blenkernel/intern/fluidsim.c b/source/blender/blenkernel/intern/fluidsim.c
index aa163b821c8..9453c2a0ad1 100644
--- a/source/blender/blenkernel/intern/fluidsim.c
+++ b/source/blender/blenkernel/intern/fluidsim.c
@@ -40,7 +40,7 @@
#include "DNA_particle_types.h"
#include "DNA_scene_types.h" // N_T
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_cdderivedmesh.h"
@@ -563,13 +563,13 @@ void fluid_get_bb(MVert *mvert, int totvert, float obmat[][4],
float vec[3];
VECCOPY(vec, mvert[0].co);
- Mat4MulVecfl(obmat, vec);
+ mul_m4_v3(obmat, vec);
bbsx = vec[0]; bbsy = vec[1]; bbsz = vec[2];
bbex = vec[0]; bbey = vec[1]; bbez = vec[2];
for(i = 1; i < totvert; i++) {
VECCOPY(vec, mvert[i].co);
- Mat4MulVecfl(obmat, vec);
+ mul_m4_v3(obmat, vec);
if(vec[0] < bbsx){ bbsx= vec[0]; }
if(vec[1] < bbsy){ bbsy= vec[1]; }
@@ -626,7 +626,7 @@ void initElbeemMesh(struct Scene *scene, struct Object *ob,
verts = MEM_callocN( totvert*3*sizeof(float), "elbeemmesh_vertices");
for(i=0; i<totvert; i++) {
VECCOPY( &verts[i*3], mvert[i].co);
- if(useGlobalCoords) { Mat4MulVecfl(ob->obmat, &verts[i*3]); }
+ if(useGlobalCoords) { mul_m4_v3(ob->obmat, &verts[i*3]); }
}
*vertices = verts;
diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c
index 4e79f6238b5..877c6d6b62e 100644
--- a/source/blender/blenkernel/intern/fmodifier.c
+++ b/source/blender/blenkernel/intern/fmodifier.c
@@ -41,7 +41,7 @@
#include "DNA_anim_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_noise.h"
#include "BKE_fcurve.h"
@@ -53,6 +53,8 @@
#include "RNA_access.h"
#include "RNA_types.h"
+#include "AUD_C-API.h"
+
#ifndef DISABLE_PYTHON
#include "BPY_extern.h" /* for BPY_pydriver_eval() */
#endif
@@ -871,6 +873,96 @@ static FModifierTypeInfo FMI_LIMITS = {
fcm_limits_evaluate /* evaluate */
};
+/* Sound F-Curve Modifier --------------------------- */
+
+static void fcm_sound_new_data (void *mdata)
+{
+ FMod_Sound *data= (FMod_Sound *)mdata;
+
+ /* defaults */
+ data->strength= 1.0f;
+ data->delay = 0.0f;
+ data->modification = FCM_SOUND_MODIF_REPLACE;
+ data->sound = NULL;
+}
+
+static void fcm_sound_evaluate (FCurve *fcu, FModifier *fcm, float *cvalue, float evaltime)
+{
+ FMod_Sound *data= (FMod_Sound *)fcm->data;
+ float amplitude;
+
+ AUD_Device *device;
+ AUD_Sound *limiter;
+ AUD_SoundInfo info;
+
+ // XXX fixme - need to get in terms of time instead of frames to be really useful
+// evaltime = FRA2TIME(evaltime);
+ evaltime -= data->delay;
+
+ /* sound-system cannot cope with negative times/frames */
+ if (evaltime < 0.0f)
+ return;
+ /* must have a sound with a cache so that this can be used */
+ if (ELEM(NULL, data->sound, data->sound->cache))
+ return;
+
+ /* examine this snippet of the wave, and extract the amplitude from it */
+ info = AUD_getInfo(data->sound->cache);
+ info.specs.channels = 1;
+ info.specs.format = AUD_FORMAT_FLOAT32;
+ device = AUD_openReadDevice(info.specs);
+ limiter = AUD_limitSound(data->sound->cache, evaltime, evaltime + 1);
+ AUD_playDevice(device, limiter);
+ AUD_unload(limiter);
+ AUD_readDevice(device, (sample_t*)&amplitude, 1);
+ AUD_closeReadDevice(device);
+
+ /* combine the amplitude with existing motion data */
+ switch (data->modification) {
+ case FCM_SOUND_MODIF_ADD:
+ *cvalue= *cvalue + amplitude * data->strength;
+ break;
+ case FCM_SOUND_MODIF_SUBTRACT:
+ *cvalue= *cvalue - amplitude * data->strength;
+ break;
+ case FCM_SOUND_MODIF_MULTIPLY:
+ *cvalue= *cvalue * amplitude * data->strength;
+ break;
+ case FCM_SOUND_MODIF_REPLACE:
+ default:
+ *cvalue= *cvalue + amplitude * data->strength;
+ break;
+ }
+}
+
+static float fcm_sound_time (FCurve *fcu, FModifier *fcm, float cvalue, float evaltime)
+{
+ FMod_Sound *data= (FMod_Sound *)fcm->data;
+
+ /* check for the time delay */
+// evaltime = FRA2TIME(evaltime);
+ if(evaltime < data->delay)
+ return data->delay;
+
+ /* modifier doesn't change time */
+ return evaltime;
+}
+
+static FModifierTypeInfo FMI_SOUND = {
+ FMODIFIER_TYPE_SOUND, /* type */
+ sizeof(FMod_Sound), /* size */
+ FMI_TYPE_REPLACE_VALUES, /* action type */
+ 0, /* requirements */
+ "Sound", /* name */
+ "FMod_Sound", /* struct name */
+ NULL, /* free data */
+ NULL, /* copy data */
+ fcm_sound_new_data, /* new data */
+ NULL, /* verify */
+ fcm_sound_time, /* evaluate time */
+ fcm_sound_evaluate /* evaluate */
+};
+
/* F-Curve Modifier API --------------------------- */
/* All of the F-Curve Modifier api functions use FModifierTypeInfo structs to carry out
* and operations that involve F-Curve modifier specific code.
@@ -892,6 +984,7 @@ static void fmods_init_typeinfo ()
fmodifiersTypeInfo[6]= NULL/*&FMI_FILTER*/; /* Filter F-Curve Modifier */ // XXX unimplemented
fmodifiersTypeInfo[7]= &FMI_PYTHON; /* Custom Python F-Curve Modifier */
fmodifiersTypeInfo[8]= &FMI_LIMITS; /* Limits F-Curve Modifier */
+ fmodifiersTypeInfo[9]= &FMI_SOUND; /* Sound F-Curve Modifier */
}
/* This function should be used for getting the appropriate type-info when only
@@ -992,13 +1085,13 @@ void copy_fmodifiers (ListBase *dst, ListBase *src)
}
/* Remove and free the given F-Modifier from the given stack */
-void remove_fmodifier (ListBase *modifiers, FModifier *fcm)
+int remove_fmodifier (ListBase *modifiers, FModifier *fcm)
{
FModifierTypeInfo *fmi= fmodifier_get_typeinfo(fcm);
/* sanity check */
if (fcm == NULL)
- return;
+ return 0;
/* free modifier's special data (stored inside fcm->data) */
if (fcm->data) {
@@ -1010,15 +1103,25 @@ void remove_fmodifier (ListBase *modifiers, FModifier *fcm)
}
/* remove modifier from stack */
- if (modifiers)
+ if (modifiers) {
BLI_freelinkN(modifiers, fcm);
+ return 1;
+ }
else {
// XXX this case can probably be removed some day, as it shouldn't happen...
printf("remove_fmodifier() - no modifier stack given \n");
MEM_freeN(fcm);
+ return 0;
}
}
+/* Remove and free the nth F-Modifier from the given stack */
+int remove_fmodifier_index (ListBase *modifiers, int index)
+{
+ FModifier *fcm= BLI_findlink(modifiers, index);
+ return remove_fmodifier(modifiers, fcm);
+}
+
/* Remove all of a given F-Curve's modifiers */
void free_fmodifiers (ListBase *modifiers)
{
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index 4e05bf45d3d..e2dccf02b40 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_vfontdata.h"
@@ -968,12 +968,12 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode)
float minx, maxx, miny, maxy;
float timeofs, sizefac;
- Mat4Invert(imat, ob->obmat);
- Mat3CpyMat4(imat3, imat);
+ invert_m4_m4(imat, ob->obmat);
+ copy_m3_m4(imat3, imat);
- Mat3CpyMat4(cmat, cu->textoncurve->obmat);
- Mat3MulMat3(cmat, cmat, imat3);
- sizefac= Normalize(cmat[0])/cu->fsize;
+ copy_m3_m4(cmat, cu->textoncurve->obmat);
+ mul_m3_m3m3(cmat, cmat, imat3);
+ sizefac= normalize_v3(cmat[0])/cu->fsize;
minx=miny= 1.0e20f;
maxx=maxy= -1.0e20f;
@@ -1042,7 +1042,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode)
where_on_path(cu->textoncurve, ctime, vec, tvec, NULL, NULL);
where_on_path(cu->textoncurve, ctime+dtime, tvec, rotvec, NULL, NULL);
- VecMulf(vec, sizefac);
+ mul_v3_fl(vec, sizefac);
ct->rot= (float)(M_PI-atan2(rotvec[1], rotvec[0]));
@@ -1196,7 +1196,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode)
vecyo[0] = ct->xof;
vecyo[1] = ct->yof;
vecyo[2] = 0;
- Mat4MulVecfl(ob->obmat, vecyo);
+ mul_m4_v3(ob->obmat, vecyo);
VECCOPY(ob->loc, vecyo);
outta = 1;
cu->sepchar = 0;
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 43c4137e73e..5023d87cef8 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -36,7 +36,7 @@
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "DNA_listBase.h"
diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c
index 6bb47bc0f0f..3ab02a576d0 100644
--- a/source/blender/blenkernel/intern/group.c
+++ b/source/blender/blenkernel/intern/group.c
@@ -51,6 +51,7 @@
#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_object.h"
+#include "BKE_scene.h" /* object_in_scene */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -95,7 +96,7 @@ void unlink_group(Group *group)
/* ensure objects are not in this group */
for(; base; base= base->next) {
- if(rem_from_group(group, base->object) && find_group(base->object, NULL)==NULL) {
+ if(rem_from_group(group, base->object, sce, base) && find_group(base->object, NULL)==NULL) {
base->object->flag &= ~OB_FROMGROUP;
base->flag &= ~OB_FROMGROUP;
}
@@ -153,15 +154,15 @@ Group *copy_group(Group *group)
}
/* external */
-void add_to_group(Group *group, Object *ob)
+static int add_to_group_internal(Group *group, Object *ob)
{
GroupObject *go;
- if(group==NULL || ob==NULL) return;
+ if(group==NULL || ob==NULL) return 0;
/* check if the object has been added already */
for(go= group->gobject.first; go; go= go->next) {
- if(go->ob==ob) return;
+ if(go->ob==ob) return 0;
}
go= MEM_callocN(sizeof(GroupObject), "groupobject");
@@ -169,10 +170,31 @@ void add_to_group(Group *group, Object *ob)
go->ob= ob;
+ return 1;
+}
+
+int add_to_group(Group *group, Object *object, Scene *scene, Base *base)
+{
+ if(add_to_group_internal(group, object)) {
+ if((object->flag & OB_FROMGROUP)==0) {
+
+ if(scene && base==NULL)
+ base= object_in_scene(object, scene);
+
+ object->flag |= OB_FROMGROUP;
+
+ if(base)
+ base->flag |= OB_FROMGROUP;
+ }
+ return 1;
+ }
+ else {
+ return 0;
+ }
}
/* also used for ob==NULL */
-int rem_from_group(Group *group, Object *ob)
+static int rem_from_group_internal(Group *group, Object *ob)
{
GroupObject *go, *gon;
int removed = 0;
@@ -192,6 +214,26 @@ int rem_from_group(Group *group, Object *ob)
return removed;
}
+int rem_from_group(Group *group, Object *object, Scene *scene, Base *base)
+{
+ if(rem_from_group_internal(group, object)) {
+
+ if(find_group(object, NULL) == NULL) {
+ if(scene && base==NULL)
+ base= object_in_scene(object, scene);
+
+ object->flag &= ~OB_FROMGROUP;
+
+ if(base)
+ base->flag &= ~OB_FROMGROUP;
+ }
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
int object_in_group(Object *ob, Group *group)
{
GroupObject *go;
diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c
index 3cff82f522a..7e081982f24 100644
--- a/source/blender/blenkernel/intern/idprop.c
+++ b/source/blender/blenkernel/intern/idprop.c
@@ -442,7 +442,7 @@ void IDP_RemFromGroup(IDProperty *group, IDProperty *prop)
BLI_remlink(&group->data.group, prop);
}
-IDProperty *IDP_GetPropertyFromGroup(IDProperty *prop, char *name)
+IDProperty *IDP_GetPropertyFromGroup(IDProperty *prop, const char *name)
{
IDProperty *loop;
for (loop=prop->data.group.first; loop; loop=loop->next) {
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index efe53f6f8ef..0452b38a2e5 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -61,7 +61,7 @@
#include "DNA_sequence_types.h"
#include "DNA_userdef_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_threads.h"
diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c
index de215ae4af9..f2b737fa3c2 100644
--- a/source/blender/blenkernel/intern/implicit.c
+++ b/source/blender/blenkernel/intern/implicit.c
@@ -297,6 +297,7 @@ DO_INLINE void sub_lfvector_lfvector(float (*to)[3], float (*fLongVectorA)[3], f
///////////////////////////
// 3x3 matrix
///////////////////////////
+#if 0
/* printf 3x3 matrix on console: for debug output */
static void print_fmatrix(float m3[3][3])
{
@@ -304,6 +305,7 @@ static void print_fmatrix(float m3[3][3])
printf("%f\t%f\t%f\n",m3[1][0],m3[1][1],m3[1][2]);
printf("%f\t%f\t%f\n\n",m3[2][0],m3[2][1],m3[2][2]);
}
+#endif
/* copy 3x3 matrix */
DO_INLINE void cp_fmatrix(float to[3][3], float from[3][3])
@@ -972,6 +974,7 @@ DO_INLINE void BuildPPinv(fmatrix3x3 *lA, fmatrix3x3 *P, fmatrix3x3 *Pinv)
}
}
+#if 0
/*
// version 1.3
static int cg_filtered_pre(lfVector *dv, fmatrix3x3 *lA, lfVector *lB, lfVector *z, fmatrix3x3 *S, fmatrix3x3 *P, fmatrix3x3 *Pinv)
@@ -1143,6 +1146,7 @@ static int cg_filtered_pre(lfVector *dv, fmatrix3x3 *lA, lfVector *lB, lfVector
return iterations<conjgrad_looplimit;
}
+#endif
// outer product is NOT cross product!!!
DO_INLINE void dfdx_spring_type1(float to[3][3], float extent[3], float length, float L, float dot, float k)
@@ -1550,28 +1554,28 @@ static void cloth_calc_force(ClothModifierData *clmd, float frame, lfVector *lF,
CalcFloat(lX[mfaces[i].v1],lX[mfaces[i].v2],lX[mfaces[i].v3],triunnormal);
VECCOPY(trinormal, triunnormal);
- Normalize(trinormal);
+ normalize_v3(trinormal);
// add wind from v1
VECCOPY(tmp, trinormal);
- VecMulf(tmp, calculateVertexWindForce(winvec[mfaces[i].v1], triunnormal));
+ mul_v3_fl(tmp, calculateVertexWindForce(winvec[mfaces[i].v1], triunnormal));
VECADDS(lF[mfaces[i].v1], lF[mfaces[i].v1], tmp, factor);
// add wind from v2
VECCOPY(tmp, trinormal);
- VecMulf(tmp, calculateVertexWindForce(winvec[mfaces[i].v2], triunnormal));
+ mul_v3_fl(tmp, calculateVertexWindForce(winvec[mfaces[i].v2], triunnormal));
VECADDS(lF[mfaces[i].v2], lF[mfaces[i].v2], tmp, factor);
// add wind from v3
VECCOPY(tmp, trinormal);
- VecMulf(tmp, calculateVertexWindForce(winvec[mfaces[i].v3], triunnormal));
+ mul_v3_fl(tmp, calculateVertexWindForce(winvec[mfaces[i].v3], triunnormal));
VECADDS(lF[mfaces[i].v3], lF[mfaces[i].v3], tmp, factor);
// add wind from v4
if(mfaces[i].v4)
{
VECCOPY(tmp, trinormal);
- VecMulf(tmp, calculateVertexWindForce(winvec[mfaces[i].v4], triunnormal));
+ mul_v3_fl(tmp, calculateVertexWindForce(winvec[mfaces[i].v4], triunnormal));
VECADDS(lF[mfaces[i].v4], lF[mfaces[i].v4], tmp, factor);
}
}
@@ -1652,7 +1656,7 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase
if(verts [i].flags & CLOTH_VERT_FLAG_PINNED)
{
VECSUB(id->V[i], verts[i].xconst, verts[i].xold);
- // VecMulf(id->V[i], clmd->sim_parms->stepsPerFrame);
+ // mul_v3_fl(id->V[i], clmd->sim_parms->stepsPerFrame);
}
}
}
@@ -1725,7 +1729,7 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase
VECCOPY(id->Xnew[i], verts[i].tx);
VECCOPY(id->Vnew[i], verts[i].tv);
- VecMulf(id->Vnew[i], clmd->sim_parms->stepsPerFrame);
+ mul_v3_fl(id->Vnew[i], clmd->sim_parms->stepsPerFrame);
}
}
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 5dc26143533..6fc3fc547df 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -70,7 +70,7 @@
#include "DNA_world_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "BKE_utildefines.h"
@@ -885,6 +885,17 @@ static char *get_rna_access (int blocktype, int adrcode, char actname[], char co
case ID_SEQ: /* sequencer strip */
//SEQ_FAC1:
+ switch (adrcode) {
+ case SEQ_FAC1:
+ propname= "effect_fader";
+ break;
+ case SEQ_FAC_SPEED:
+ propname= "speed_fader";
+ break;
+ case SEQ_FAC_OPACITY:
+ propname= "blend_opacity";
+ break;
+ }
// poin= &(seq->facf0); // XXX this doesn't seem to be included anywhere in sequencer RNA...
break;
@@ -919,11 +930,11 @@ static char *get_rna_access (int blocktype, int adrcode, char actname[], char co
/* append preceeding bits to path */
if ((actname && actname[0]) && (constname && constname[0])) {
/* Constraint in Pose-Channel */
- sprintf(buf, "pose.pose_channels[\"%s\"].constraints[\"%s\"]", actname, constname);
+ sprintf(buf, "pose.bones[\"%s\"].constraints[\"%s\"]", actname, constname);
}
else if (actname && actname[0]) {
/* Pose-Channel */
- sprintf(buf, "pose.pose_channels[\"%s\"]", actname);
+ sprintf(buf, "pose.bones[\"%s\"]", actname);
}
else if (constname && constname[0]) {
/* Constraint in Object */
@@ -1604,6 +1615,7 @@ void do_versions_ipos_to_animato(Main *main)
ListBase drivers = {NULL, NULL};
ID *id;
AnimData *adt;
+ Scene *scene;
if (main == NULL) {
printf("Argh! Main is NULL in do_versions_ipos_to_animato() \n");
@@ -1781,6 +1793,51 @@ void do_versions_ipos_to_animato(Main *main)
}
}
+ /* sequence strips */
+ for(scene = main->scene.first; scene; scene = scene->id.next) {
+ if(scene->ed && scene->ed->seqbasep) {
+ Sequence * seq;
+
+ for(seq = scene->ed->seqbasep->first;
+ seq; seq = seq->next) {
+ short adrcode = SEQ_FAC1;
+
+ if (G.f & G_DEBUG)
+ printf("\tconverting sequence strip %s \n", seq->name+2);
+
+ if (!seq->ipo || !seq->ipo->curve.first) {
+ seq->flag |=
+ SEQ_USE_EFFECT_DEFAULT_FADE;
+ continue;
+ }
+
+ /* patch adrcode, so that we can map
+ to different DNA variables later
+ (semi-hack (tm) )
+ */
+ switch(seq->type) {
+ case SEQ_IMAGE:
+ case SEQ_META:
+ case SEQ_SCENE:
+ case SEQ_MOVIE:
+ case SEQ_COLOR:
+ adrcode = SEQ_FAC_OPACITY;
+ break;
+ case SEQ_SPEED:
+ adrcode = SEQ_FAC_SPEED;
+ break;
+ }
+ ((IpoCurve*) seq->ipo->curve.first)
+ ->adrcode = adrcode;
+ ipo_to_animdata((ID*) seq, seq->ipo,
+ NULL, NULL);
+ seq->ipo->id.us--;
+ seq->ipo = NULL;
+ }
+ }
+ }
+
+
/* textures */
for (id= main->tex.first; id; id= id->next) {
Tex *te= (Tex *)id;
diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c
index 61f51d61e0b..c7b79756263 100644
--- a/source/blender/blenkernel/intern/key.c
+++ b/source/blender/blenkernel/intern/key.c
@@ -1192,11 +1192,11 @@ static void do_curve_key(Scene *scene, Object *ob, Key *key, char *out, int tot)
#endif // XXX old animation system
flag= setkeys(ctime, &key->block, k, t, 0);
-
+
if(flag==0)
- ; /* do_key(a, a+step, tot, (char *)out, key, k, t, 0); */
+ do_key(a, a+step, tot, (char *)out, key, actkb, k, t, 0);
else
- ; /* cp_key(a, a+step, tot, (char *)out, key, k[2],0); */
+ cp_key(a, a+step, tot, (char *)out, key, actkb, k[2], NULL, 0);
}
}
else {
@@ -1395,6 +1395,49 @@ Key *ob_get_key(Object *ob)
return NULL;
}
+KeyBlock *add_keyblock(Scene *scene, Key *key)
+{
+ KeyBlock *kb;
+ float curpos= -0.1;
+ int tot;
+
+ kb= key->block.last;
+ if(kb) curpos= kb->pos;
+
+ kb= MEM_callocN(sizeof(KeyBlock), "Keyblock");
+ BLI_addtail(&key->block, kb);
+ kb->type= KEY_CARDINAL;
+
+ tot= BLI_countlist(&key->block);
+ if(tot==1) strcpy(kb->name, "Basis");
+ else sprintf(kb->name, "Key %d", tot-1);
+
+ // XXX this is old anim system stuff? (i.e. the 'index' of the shapekey)
+ kb->adrcode= tot-1;
+
+ key->totkey++;
+ if(key->totkey==1) key->refkey= kb;
+
+ kb->slidermin= 0.0f;
+ kb->slidermax= 1.0f;
+
+ // XXX kb->pos is the confusing old horizontal-line RVK crap in old IPO Editor...
+ if(key->type == KEY_RELATIVE)
+ kb->pos= curpos+0.1;
+ else {
+#if 0 // XXX old animation system
+ curpos= bsystem_time(scene, 0, (float)CFRA, 0.0);
+ if(calc_ipo_spec(key->ipo, KEY_SPEED, &curpos)==0) {
+ curpos /= 100.0;
+ }
+ kb->pos= curpos;
+
+ sort_keys(key);
+#endif // XXX old animation system
+ }
+ return kb;
+}
+
/* only the active keyblock */
KeyBlock *ob_get_keyblock(Object *ob)
{
@@ -1408,6 +1451,16 @@ KeyBlock *ob_get_keyblock(Object *ob)
return NULL;
}
+KeyBlock *ob_get_reference_keyblock(Object *ob)
+{
+ Key *key= ob_get_key(ob);
+
+ if (key)
+ return key->refkey;
+
+ return NULL;
+}
+
/* get the appropriate KeyBlock given an index */
KeyBlock *key_get_keyblock(Key *key, int index)
{
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index c53101299c6..dc548edbb25 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_armature_types.h"
#include "DNA_mesh_types.h"
@@ -155,10 +155,10 @@ void resizelattice(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb)
/* prevent using deformed locations */
freedisplist(&ltOb->disp);
- Mat4CpyMat4(mat, ltOb->obmat);
- Mat4One(ltOb->obmat);
+ copy_m4_m4(mat, ltOb->obmat);
+ unit_m4(ltOb->obmat);
lattice_deform_verts(ltOb, NULL, NULL, vertexCos, uNew*vNew*wNew, NULL);
- Mat4CpyMat4(ltOb->obmat, mat);
+ copy_m4_m4(ltOb->obmat, mat);
lt->typeu = typeu;
lt->typev = typev;
@@ -310,18 +310,18 @@ void init_latt_deform(Object *oblatt, Object *ob)
/* for example with a particle system: ob==0 */
if(ob==NULL) {
/* in deformspace, calc matrix */
- Mat4Invert(lt->latmat, oblatt->obmat);
+ invert_m4_m4(lt->latmat, oblatt->obmat);
/* back: put in deform array */
- Mat4Invert(imat, lt->latmat);
+ invert_m4_m4(imat, lt->latmat);
}
else {
/* in deformspace, calc matrix */
- Mat4Invert(imat, oblatt->obmat);
- Mat4MulMat4(lt->latmat, ob->obmat, imat);
+ invert_m4_m4(imat, oblatt->obmat);
+ mul_m4_m4m4(lt->latmat, ob->obmat, imat);
/* back: put in deform array */
- Mat4Invert(imat, lt->latmat);
+ invert_m4_m4(imat, lt->latmat);
}
for(w=0,fw=lt->fw; w<lt->pntsw; w++,fw+=lt->dw) {
@@ -337,7 +337,7 @@ void init_latt_deform(Object *oblatt, Object *ob)
fp[2] = bp->vec[2] - fw;
}
- Mat4Mul3Vecfl(imat, fp);
+ mul_mat3_m4_v3(imat, fp);
}
}
}
@@ -356,7 +356,7 @@ void calc_latt_deform(Object *ob, float *co, float weight)
/* co is in local coords, treat with latmat */
VECCOPY(vec, co);
- Mat4MulVecfl(lt->latmat, vec);
+ mul_m4_v3(lt->latmat, vec);
/* u v w coords */
@@ -456,15 +456,15 @@ typedef struct {
static void init_curve_deform(Object *par, Object *ob, CurveDeform *cd, int dloc)
{
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulMat4(cd->objectspace, par->obmat, ob->imat);
- Mat4Invert(cd->curvespace, cd->objectspace);
- Mat3CpyMat4(cd->objectspace3, cd->objectspace);
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_m4_m4m4(cd->objectspace, par->obmat, ob->imat);
+ invert_m4_m4(cd->curvespace, cd->objectspace);
+ copy_m3_m4(cd->objectspace3, cd->objectspace);
// offset vector for 'no smear'
if(dloc) {
- Mat4Invert(par->imat, par->obmat);
- VecMat4MulVecfl(cd->dloc, par->imat, ob->obmat[3]);
+ invert_m4_m4(par->imat, par->obmat);
+ mul_v3_m4v3(cd->dloc, par->imat, ob->obmat[3]);
}
else cd->dloc[0]=cd->dloc[1]=cd->dloc[2]= 0.0f;
@@ -497,15 +497,15 @@ static int where_on_path_deform(Object *ob, float ctime, float *vec, float *dir,
float dvec[3];
if(ctime < 0.0) {
- VecSubf(dvec, path->data[1].vec, path->data[0].vec);
- VecMulf(dvec, ctime*(float)path->len);
+ sub_v3_v3v3(dvec, path->data[1].vec, path->data[0].vec);
+ mul_v3_fl(dvec, ctime*(float)path->len);
VECADD(vec, vec, dvec);
if(quat) QUATCOPY(quat, path->data[0].quat);
if(radius) *radius= path->data[0].radius;
}
else if(ctime > 1.0) {
- VecSubf(dvec, path->data[path->len-1].vec, path->data[path->len-2].vec);
- VecMulf(dvec, (ctime-1.0)*(float)path->len);
+ sub_v3_v3v3(dvec, path->data[path->len-1].vec, path->data[path->len-2].vec);
+ mul_v3_fl(dvec, (ctime-1.0)*(float)path->len);
VECADD(vec, vec, dvec);
if(quat) QUATCOPY(quat, path->data[path->len-1].quat);
if(radius) *radius= path->data[path->len-1].radius;
@@ -570,28 +570,28 @@ static int calc_curve_deform(Scene *scene, Object *par, float *co, short axis, C
dir[cd->no_rot_axis-1]= 0.0f;
/* -1 for compatibility with old track defines */
- vectoquat(dir, axis-1, upflag, quat);
+ vec_to_quat( quat,dir, axis-1, upflag);
/* the tilt */
if(loc[3]!=0.0) {
- Normalize(dir);
+ normalize_v3(dir);
q[0]= (float)cos(0.5*loc[3]);
fac= (float)sin(0.5*loc[3]);
q[1]= -fac*dir[0];
q[2]= -fac*dir[1];
q[3]= -fac*dir[2];
- QuatMul(quat, q, quat);
+ mul_qt_qtqt(quat, q, quat);
}
#endif
- static float q_x90d[4] = {0.70710676908493, 0.70710676908493, 0.0, 0.0}; // float rot_axis[3]= {1,0,0}; AxisAngleToQuat(q, rot_axis, 90 * (M_PI / 180));
- static float q_y90d[4] = {0.70710676908493, 0.0, 0.70710676908493, 0.0}; // float rot_axis[3]= {0,1,0}; AxisAngleToQuat(q, rot_axis, 90 * (M_PI / 180));
- static float q_z90d[4] = {0.70710676908493, 0.0, 0.0, 0.70710676908493}; // float rot_axis[3]= {0,0,2}; AxisAngleToQuat(q, rot_axis, 90 * (M_PI / 180));
+ static float q_x90d[4] = {0.70710676908493, 0.70710676908493, 0.0, 0.0}; // float rot_axis[3]= {1,0,0}; axis_angle_to_quat(q, rot_axis, 90 * (M_PI / 180));
+ static float q_y90d[4] = {0.70710676908493, 0.0, 0.70710676908493, 0.0}; // float rot_axis[3]= {0,1,0}; axis_angle_to_quat(q, rot_axis, 90 * (M_PI / 180));
+ static float q_z90d[4] = {0.70710676908493, 0.0, 0.0, 0.70710676908493}; // float rot_axis[3]= {0,0,2}; axis_angle_to_quat(q, rot_axis, 90 * (M_PI / 180));
- static float q_nx90d[4] = {0.70710676908493, -0.70710676908493, 0.0, 0.0}; // float rot_axis[3]= {1,0,0}; AxisAngleToQuat(q, rot_axis, -90 * (M_PI / 180));
- static float q_ny90d[4] = {0.70710676908493, 0.0, -0.70710676908493, 0.0}; // float rot_axis[3]= {0,1,0}; AxisAngleToQuat(q, rot_axis, -90 * (M_PI / 180));
- static float q_nz90d[4] = {0.70710676908493, 0.0, 0.0, -0.70710676908493}; // float rot_axis[3]= {0,0,2}; AxisAngleToQuat(q, rot_axis, -90 * (M_PI / 180));
+ static float q_nx90d[4] = {0.70710676908493, -0.70710676908493, 0.0, 0.0}; // float rot_axis[3]= {1,0,0}; axis_angle_to_quat(q, rot_axis, -90 * (M_PI / 180));
+ static float q_ny90d[4] = {0.70710676908493, 0.0, -0.70710676908493, 0.0}; // float rot_axis[3]= {0,1,0}; axis_angle_to_quat(q, rot_axis, -90 * (M_PI / 180));
+ static float q_nz90d[4] = {0.70710676908493, 0.0, 0.0, -0.70710676908493}; // float rot_axis[3]= {0,0,2}; axis_angle_to_quat(q, rot_axis, -90 * (M_PI / 180));
if(cd->no_rot_axis) { /* set by caller */
@@ -602,12 +602,12 @@ static int calc_curve_deform(Scene *scene, Object *par, float *co, short axis, C
VECCOPY(dir_flat, dir);
dir_flat[cd->no_rot_axis-1]= 0.0f;
- Normalize(dir);
- Normalize(dir_flat);
+ normalize_v3(dir);
+ normalize_v3(dir_flat);
- RotationBetweenVectorsToQuat(q, dir, dir_flat); /* Could this be done faster? */
+ rotation_between_vecs_to_quat(q, dir, dir_flat); /* Could this be done faster? */
- QuatMul(new_quat, q, new_quat);
+ mul_qt_qtqt(new_quat, q, new_quat);
}
@@ -624,14 +624,14 @@ static int calc_curve_deform(Scene *scene, Object *par, float *co, short axis, C
switch(axis) {
case MOD_CURVE_POSX:
- QuatMul(quat, new_quat, q_y90d);
+ mul_qt_qtqt(quat, new_quat, q_y90d);
cent[0]= 0.0;
cent[1]= co[2];
cent[2]= co[1];
break;
case MOD_CURVE_NEGX:
- QuatMul(quat, new_quat, q_ny90d);
+ mul_qt_qtqt(quat, new_quat, q_ny90d);
cent[0]= 0.0;
cent[1]= -co[1];
@@ -639,28 +639,28 @@ static int calc_curve_deform(Scene *scene, Object *par, float *co, short axis, C
break;
case MOD_CURVE_POSY:
- QuatMul(quat, new_quat, q_x90d);
+ mul_qt_qtqt(quat, new_quat, q_x90d);
cent[0]= co[2];
cent[1]= 0.0;
cent[2]= -co[0];
break;
case MOD_CURVE_NEGY:
- QuatMul(quat, new_quat, q_nx90d);
+ mul_qt_qtqt(quat, new_quat, q_nx90d);
cent[0]= -co[0];
cent[1]= 0.0;
cent[2]= -co[2];
break;
case MOD_CURVE_POSZ:
- QuatMul(quat, new_quat, q_z90d);
+ mul_qt_qtqt(quat, new_quat, q_z90d);
cent[0]= co[1];
cent[1]= -co[0];
cent[2]= 0.0;
break;
case MOD_CURVE_NEGZ:
- QuatMul(quat, new_quat, q_nz90d);
+ mul_qt_qtqt(quat, new_quat, q_nz90d);
cent[0]= co[0];
cent[1]= -co[1];
@@ -670,11 +670,11 @@ static int calc_curve_deform(Scene *scene, Object *par, float *co, short axis, C
/* scale if enabled */
if(cu->flag & CU_PATH_RADIUS)
- VecMulf(cent, radius);
+ mul_v3_fl(cent, radius);
/* local rotation */
- NormalQuat(quat);
- QuatMulVecf(quat, cent);
+ normalize_qt(quat);
+ mul_qt_v3(quat, cent);
/* translation */
VECADD(co, cent, loc);
@@ -739,7 +739,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target, DerivedMesh
for(j = 0; j < dvert->totweight; j++) {
if(dvert->dw[j].def_nr == index) {
- Mat4MulVecfl(cd.curvespace, vertexCos[a]);
+ mul_m4_v3(cd.curvespace, vertexCos[a]);
DO_MINMAX(vertexCos[a], cd.dmin, cd.dmax);
break;
}
@@ -754,9 +754,9 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target, DerivedMesh
if(dvert->dw[j].def_nr == index) {
VECCOPY(vec, vertexCos[a]);
calc_curve_deform(scene, cuOb, vec, defaxis, &cd, NULL);
- VecLerpf(vertexCos[a], vertexCos[a], vec,
+ interp_v3_v3v3(vertexCos[a], vertexCos[a], vec,
dvert->dw[j].weight);
- Mat4MulVecfl(cd.objectspace, vertexCos[a]);
+ mul_m4_v3(cd.objectspace, vertexCos[a]);
break;
}
}
@@ -766,13 +766,13 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target, DerivedMesh
INIT_MINMAX(cd.dmin, cd.dmax);
for(a = 0; a < numVerts; a++) {
- Mat4MulVecfl(cd.curvespace, vertexCos[a]);
+ mul_m4_v3(cd.curvespace, vertexCos[a]);
DO_MINMAX(vertexCos[a], cd.dmin, cd.dmax);
}
for(a = 0; a < numVerts; a++) {
calc_curve_deform(scene, cuOb, vertexCos[a], defaxis, &cd, NULL);
- Mat4MulVecfl(cd.objectspace, vertexCos[a]);
+ mul_m4_v3(cd.objectspace, vertexCos[a]);
}
}
cu->flag = flag;
@@ -787,7 +787,7 @@ void curve_deform_vector(Scene *scene, Object *cuOb, Object *target, float *orco
float quat[4];
if(cuOb->type != OB_CURVE) {
- Mat3One(mat);
+ unit_m3(mat);
return;
}
@@ -797,18 +797,18 @@ void curve_deform_vector(Scene *scene, Object *cuOb, Object *target, float *orco
VECCOPY(cd.dmin, orco);
VECCOPY(cd.dmax, orco);
- Mat4MulVecfl(cd.curvespace, vec);
+ mul_m4_v3(cd.curvespace, vec);
if(calc_curve_deform(scene, cuOb, vec, target->trackflag+1, &cd, quat)) {
float qmat[3][3];
- QuatToMat3(quat, qmat);
- Mat3MulMat3(mat, qmat, cd.objectspace3);
+ quat_to_mat3( qmat,quat);
+ mul_m3_m3m3(mat, qmat, cd.objectspace3);
}
else
- Mat3One(mat);
+ unit_m3(mat);
- Mat4MulVecfl(cd.objectspace, vec);
+ mul_m4_v3(cd.objectspace, vec);
}
@@ -939,7 +939,7 @@ void outside_lattice(Lattice *lt)
bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
- VecMulf(bp->vec, 0.3333333f);
+ mul_v3_fl(bp->vec, 0.3333333f);
}
}
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index c2260e1e761..a3e0ab04991 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -46,7 +46,7 @@
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_animsys.h"
#include "BKE_blender.h"
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index 3ca7dac4bc9..d731ab4230b 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -47,7 +47,7 @@
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
@@ -436,7 +436,7 @@ Object *find_basis_mball(Scene *scene, Object *basis)
void calc_mballco(MetaElem *ml, float *vec)
{
if(ml->mat) {
- Mat4MulVecfl((float ( * )[4])ml->mat, vec);
+ mul_m4_v3((float ( * )[4])ml->mat, vec);
}
}
@@ -448,7 +448,7 @@ float densfunc(MetaElem *ball, float x, float y, float z)
vec[0]= x;
vec[1]= y;
vec[2]= z;
- Mat4MulVecfl((float ( * )[4])ball->imat, vec);
+ mul_m4_v3((float ( * )[4])ball->imat, vec);
dx= vec[0];
dy= vec[1];
dz= vec[2];
@@ -1508,8 +1508,8 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */
int a, obnr, zero_size=0;
char obname[32];
- Mat4CpyMat4(obmat, ob->obmat); /* to cope with duplicators from next_object */
- Mat4Invert(obinv, ob->obmat);
+ copy_m4_m4(obmat, ob->obmat); /* to cope with duplicators from next_object */
+ invert_m4_m4(obinv, ob->obmat);
a= 0;
splitIDname(ob->id.name+2, obname, &obnr);
@@ -1581,15 +1581,15 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */
if(ml->s > 10.0) ml->s = 10.0;
/* Rotation of MetaElem is stored in quat */
- QuatToMat4(ml->quat, temp3);
+ quat_to_mat4( temp3,ml->quat);
/* Translation of MetaElem */
- Mat4One(temp2);
+ unit_m4(temp2);
temp2[3][0]= ml->x;
temp2[3][1]= ml->y;
temp2[3][2]= ml->z;
- Mat4MulMat4(temp1, temp3, temp2);
+ mul_m4_m4m4(temp1, temp3, temp2);
/* make a copy because of duplicates */
mainb[a]= new_pgn_element(sizeof(MetaElem));
@@ -1600,12 +1600,12 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */
imat= new_pgn_element(4*4*sizeof(float));
/* mat is the matrix to transform from mball into the basis-mball */
- Mat4Invert(obinv, obmat);
- Mat4MulMat4(temp2, bob->obmat, obinv);
+ invert_m4_m4(obinv, obmat);
+ mul_m4_m4m4(temp2, bob->obmat, obinv);
/* MetaBall transformation */
- Mat4MulMat4(mat, temp1, temp2);
+ mul_m4_m4m4(mat, temp1, temp2);
- Mat4Invert(imat,mat);
+ invert_m4_m4(imat,mat);
mainb[a]->rad2= ml->rad*ml->rad;
@@ -1648,7 +1648,7 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */
/* transformation of Metalem bb */
for(i=0; i<8; i++)
- Mat4MulVecfl((float ( * )[4])mat, mainb[a]->bb->vec[i]);
+ mul_m4_v3((float ( * )[4])mat, mainb[a]->bb->vec[i]);
/* find max and min of transformed bb */
for(i=0; i<8; i++){
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 6ef557ca879..d5c597b802c 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -70,7 +70,7 @@
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_edgehash.h"
@@ -1086,7 +1086,7 @@ void mesh_to_curve(Scene *scene, Object *ob)
/* add points */
vl= polyline.first;
for (i=0, bp=nu->bp; i < totpoly; i++, bp++, vl=(VertLink *)vl->next) {
- VecCopyf(bp->vec, mverts[vl->index].co);
+ copy_v3_v3(bp->vec, mverts[vl->index].co);
bp->f1= SELECT;
bp->radius = bp->weight = 1.0;
}
@@ -1146,23 +1146,23 @@ void mesh_calc_normals(MVert *mverts, int numVerts, MFace *mfaces, int numFaces,
float *f_no= &fnors[i*3];
if (mf->v4)
- CalcNormFloat4(mverts[mf->v1].co, mverts[mf->v2].co, mverts[mf->v3].co, mverts[mf->v4].co, f_no);
+ normal_quad_v3( f_no,mverts[mf->v1].co, mverts[mf->v2].co, mverts[mf->v3].co, mverts[mf->v4].co);
else
- CalcNormFloat(mverts[mf->v1].co, mverts[mf->v2].co, mverts[mf->v3].co, f_no);
+ normal_tri_v3( f_no,mverts[mf->v1].co, mverts[mf->v2].co, mverts[mf->v3].co);
- VecAddf(tnorms[mf->v1], tnorms[mf->v1], f_no);
- VecAddf(tnorms[mf->v2], tnorms[mf->v2], f_no);
- VecAddf(tnorms[mf->v3], tnorms[mf->v3], f_no);
+ add_v3_v3v3(tnorms[mf->v1], tnorms[mf->v1], f_no);
+ add_v3_v3v3(tnorms[mf->v2], tnorms[mf->v2], f_no);
+ add_v3_v3v3(tnorms[mf->v3], tnorms[mf->v3], f_no);
if (mf->v4)
- VecAddf(tnorms[mf->v4], tnorms[mf->v4], f_no);
+ add_v3_v3v3(tnorms[mf->v4], tnorms[mf->v4], f_no);
}
for (i=0; i<numVerts; i++) {
MVert *mv= &mverts[i];
float *no= tnorms[i];
- if (Normalize(no)==0.0) {
+ if (normalize_v3(no)==0.0) {
VECCOPY(no, mv->co);
- Normalize(no);
+ normalize_v3(no);
}
mv->no[0]= (short)(no[0]*32767.0);
@@ -1262,7 +1262,7 @@ UvVertMap *make_uv_vert_map(struct MFace *mface, struct MTFace *tface, unsigned
next= iterv->next;
uv2= (tf+iterv->f)->uv[iterv->tfindex];
- Vec2Subf(uvdiff, uv2, uv);
+ sub_v2_v2v2(uvdiff, uv2, uv);
if(fabs(uv[0]-uv2[0]) < limit[0] && fabs(uv[1]-uv2[1]) < limit[1]) {
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 1f4f69bd376..56aab7d2ba9 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -41,7 +41,7 @@
#include "float.h"
#include "ctype.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_kdopbvh.h"
#include "BLI_kdtree.h"
@@ -1187,7 +1187,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
if(amd->end_cap && amd->end_cap != ob)
end_cap = amd->end_cap->derivedFinal;
- Mat4One(offset);
+ unit_m4(offset);
indexMap = MEM_callocN(sizeof(*indexMap) * dm->getNumVerts(dm),
"indexmap");
@@ -1197,7 +1197,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
maxVerts = dm->getNumVerts(dm);
if(amd->offset_type & MOD_ARR_OFF_CONST)
- VecAddf(offset[3], offset[3], amd->offset);
+ add_v3_v3v3(offset[3], offset[3], amd->offset);
if(amd->offset_type & MOD_ARR_OFF_RELATIVE) {
for(j = 0; j < 3; j++)
offset[3][j] += amd->scale[j] * vertarray_size(src_mvert,
@@ -1209,14 +1209,14 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
float result_mat[4][4];
if(ob)
- Mat4Invert(obinv, ob->obmat);
+ invert_m4_m4(obinv, ob->obmat);
else
- Mat4One(obinv);
+ unit_m4(obinv);
- Mat4MulSerie(result_mat, offset,
+ mul_serie_m4(result_mat, offset,
obinv, amd->offset_ob->obmat,
NULL, NULL, NULL, NULL, NULL);
- Mat4CpyMat4(offset, result_mat);
+ copy_m4_m4(offset, result_mat);
}
if(amd->fit_type == MOD_ARR_FITCURVE && amd->curve_ob) {
@@ -1226,7 +1226,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
float scale;
object_to_mat3(amd->curve_ob, tmp_mat);
- scale = Mat3ToScalef(tmp_mat);
+ scale = mat3_to_scale(tmp_mat);
if(!cu->path) {
cu->flag |= CU_PATH; // needed for path & bevlist
@@ -1241,7 +1241,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
prescribed length */
if(amd->fit_type == MOD_ARR_FITLENGTH
|| amd->fit_type == MOD_ARR_FITCURVE) {
- float dist = sqrt(Inpf(offset[3], offset[3]));
+ float dist = sqrt(dot_v3v3(offset[3], offset[3]));
if(dist > 1e-6f)
/* this gives length = first copy start to last copy end
@@ -1274,11 +1274,11 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
result = CDDM_from_template(dm, finalVerts, finalEdges, finalFaces);
/* calculate the offset matrix of the final copy (for merging) */
- Mat4One(final_offset);
+ unit_m4(final_offset);
for(j=0; j < count - 1; j++) {
- Mat4MulMat4(tmp_mat, final_offset, offset);
- Mat4CpyMat4(final_offset, tmp_mat);
+ mul_m4_m4m4(tmp_mat, final_offset, offset);
+ copy_m4_m4(final_offset, tmp_mat);
}
numVerts = numEdges = numFaces = 0;
@@ -1314,7 +1314,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
if((count > 1) && (amd->flags & MOD_ARR_MERGE)) {
float tmp_co[3];
VECCOPY(tmp_co, mv->co);
- Mat4MulVecfl(offset, tmp_co);
+ mul_m4_v3(offset, tmp_co);
for(j = 0; j < maxVerts; j++) {
/* if vertex already merged, don't use it */
@@ -1322,15 +1322,15 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
inMV = &src_mvert[j];
/* if this vert is within merge limit, merge */
- if(VecLenCompare(tmp_co, inMV->co, amd->merge_dist)) {
+ if(compare_len_v3v3(tmp_co, inMV->co, amd->merge_dist)) {
indexMap[i].merge = j;
/* test for merging with final copy of merge target */
if(amd->flags & MOD_ARR_MERGEFINAL) {
VECCOPY(tmp_co, inMV->co);
inMV = &src_mvert[i];
- Mat4MulVecfl(final_offset, tmp_co);
- if(VecLenCompare(tmp_co, inMV->co, amd->merge_dist))
+ mul_m4_v3(final_offset, tmp_co);
+ if(compare_len_v3v3(tmp_co, inMV->co, amd->merge_dist))
indexMap[i].merge_final = 1;
}
break;
@@ -1347,7 +1347,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
*mv2 = *mv;
numVerts++;
- Mat4MulVecfl(offset, co);
+ mul_m4_v3(offset, co);
VECCOPY(mv2->co, co);
}
} else if(indexMap[i].merge != i && indexMap[i].merge_final) {
@@ -1504,7 +1504,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
cap_medge = start_cap->getEdgeArray(start_cap);
cap_mface = start_cap->getFaceArray(start_cap);
- Mat4Invert(startoffset, offset);
+ invert_m4_m4(startoffset, offset);
vert_map = MEM_callocN(sizeof(*vert_map) * capVerts,
"arrayModifier_doArray vert_map");
@@ -1520,12 +1520,12 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
int j;
VECCOPY(tmp_co, mv->co);
- Mat4MulVecfl(startoffset, tmp_co);
+ mul_m4_v3(startoffset, tmp_co);
for(j = 0; j < maxVerts; j++) {
in_mv = &src_mvert[j];
/* if this vert is within merge limit, merge */
- if(VecLenCompare(tmp_co, in_mv->co, amd->merge_dist)) {
+ if(compare_len_v3v3(tmp_co, in_mv->co, amd->merge_dist)) {
vert_map[i] = calc_mapping(indexMap, j, 0);
merged = 1;
break;
@@ -1536,7 +1536,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
if(!merged) {
DM_copy_vert_data(start_cap, result, i, numVerts, 1);
mvert[numVerts] = *mv;
- Mat4MulVecfl(startoffset, mvert[numVerts].co);
+ mul_m4_v3(startoffset, mvert[numVerts].co);
origindex[numVerts] = ORIGINDEX_NONE;
vert_map[i] = numVerts;
@@ -1605,7 +1605,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
cap_medge = end_cap->getEdgeArray(end_cap);
cap_mface = end_cap->getFaceArray(end_cap);
- Mat4MulMat4(endoffset, final_offset, offset);
+ mul_m4_m4m4(endoffset, final_offset, offset);
vert_map = MEM_callocN(sizeof(*vert_map) * capVerts,
"arrayModifier_doArray vert_map");
@@ -1621,12 +1621,12 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
int j;
VECCOPY(tmp_co, mv->co);
- Mat4MulVecfl(offset, tmp_co);
+ mul_m4_v3(offset, tmp_co);
for(j = 0; j < maxVerts; j++) {
in_mv = &src_mvert[j];
/* if this vert is within merge limit, merge */
- if(VecLenCompare(tmp_co, in_mv->co, amd->merge_dist)) {
+ if(compare_len_v3v3(tmp_co, in_mv->co, amd->merge_dist)) {
vert_map[i] = calc_mapping(indexMap, j, count - 1);
merged = 1;
break;
@@ -1637,7 +1637,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
if(!merged) {
DM_copy_vert_data(end_cap, result, i, numVerts, 1);
mvert[numVerts] = *mv;
- Mat4MulVecfl(endoffset, mvert[numVerts].co);
+ mul_m4_v3(endoffset, mvert[numVerts].co);
origindex[numVerts] = ORIGINDEX_NONE;
vert_map[i] = numVerts;
@@ -1921,9 +1921,9 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
if (mmd->mirror_ob) {
float obinv[4][4];
- Mat4Invert(obinv, mmd->mirror_ob->obmat);
- Mat4MulMat4(mtx, ob->obmat, obinv);
- Mat4Invert(imtx, mtx);
+ invert_m4_m4(obinv, mmd->mirror_ob->obmat);
+ mul_m4_m4m4(mtx, ob->obmat, obinv);
+ invert_m4_m4(imtx, mtx);
}
for(i = 0; i < maxVerts; i++) {
@@ -1934,10 +1934,10 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
dm->getVert(dm, i, &inMV);
- VecCopyf(co, inMV.co);
+ copy_v3_v3(co, inMV.co);
if (mmd->mirror_ob) {
- VecMat4MulVecfl(co, mtx, co);
+ mul_v3_m4v3(co, mtx, co);
}
isShared = ABS(co[axis])<=tolerance;
@@ -1955,9 +1955,9 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
if(isShared) {
co[axis] = 0;
if (mmd->mirror_ob) {
- VecMat4MulVecfl(co, imtx, co);
+ mul_v3_m4v3(co, imtx, co);
}
- VecCopyf(mv->co, co);
+ copy_v3_v3(mv->co, co);
mv->flag |= ME_VERT_MERGED;
} else {
@@ -1969,9 +1969,9 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
co[axis] = -co[axis];
if (mmd->mirror_ob) {
- VecMat4MulVecfl(co, imtx, co);
+ mul_v3_m4v3(co, imtx, co);
}
- VecCopyf(mv2->co, co);
+ copy_v3_v3(mv2->co, co);
if (mmd->flag & MOD_MIR_VGROUP){
dvert = DM_get_vert_data(result, numVerts, CD_MDEFORMVERT);
@@ -2477,12 +2477,12 @@ static SmoothMesh *smoothmesh_from_derivedmesh(DerivedMesh *dm)
if(face->edges[2]->verts[1]->oldIndex == mf.v3) face->flip[2] = 1;
face->edges[3] = BLI_edgehash_lookup(edges, mf.v4, mf.v1);
if(face->edges[3]->verts[1]->oldIndex == mf.v4) face->flip[3] = 1;
- CalcNormFloat4(v1.co, v2.co, v3.co, v4.co, face->normal);
+ normal_quad_v3( face->normal,v1.co, v2.co, v3.co, v4.co);
} else {
face->edges[2] = BLI_edgehash_lookup(edges, mf.v3, mf.v1);
if(face->edges[2]->verts[1]->oldIndex == mf.v3) face->flip[2] = 1;
face->edges[3] = NULL;
- CalcNormFloat(v1.co, v2.co, v3.co, face->normal);
+ normal_tri_v3( face->normal,v1.co, v2.co, v3.co);
}
for(j = 0; j < SMOOTHFACE_MAX_EDGES && face->edges[j]; j++) {
@@ -3179,7 +3179,7 @@ static void tag_and_count_extra_edges(SmoothMesh *mesh, float split_angle,
/* we know the edge has 2 faces, so check the angle */
SmoothFace *face1 = edge->faces->link;
SmoothFace *face2 = edge->faces->next->link;
- float edge_angle_cos = Inpf(face1->normal,
+ float edge_angle_cos = dot_v3v3(face1->normal,
face2->normal);
if(edge_angle_cos < threshold) {
@@ -3575,7 +3575,7 @@ static void get_texture_coords(DisplaceModifierData *dmd, Object *ob,
if(texmapping == MOD_DISP_MAP_OBJECT) {
if(dmd->map_object)
- Mat4Invert(mapob_imat, dmd->map_object->obmat);
+ invert_m4_m4(mapob_imat, dmd->map_object->obmat);
else /* if there is no map object, default to local */
texmapping = MOD_DISP_MAP_LOCAL;
}
@@ -3641,12 +3641,12 @@ static void get_texture_coords(DisplaceModifierData *dmd, Object *ob,
break;
case MOD_DISP_MAP_GLOBAL:
VECCOPY(*texco, *co);
- Mat4MulVecfl(ob->obmat, *texco);
+ mul_m4_v3(ob->obmat, *texco);
break;
case MOD_DISP_MAP_OBJECT:
VECCOPY(*texco, *co);
- Mat4MulVecfl(ob->obmat, *texco);
- Mat4MulVecfl(mapob_imat, *texco);
+ mul_m4_v3(ob->obmat, *texco);
+ mul_m4_v3(mapob_imat, *texco);
break;
}
}
@@ -3917,7 +3917,7 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
/* convert coords to world space */
for(i = 0, co = coords; i < numVerts; ++i, ++co)
- Mat4MulVecfl(ob->obmat, *co);
+ mul_m4_v3(ob->obmat, *co);
/* calculate a projection matrix and normal for each projector */
for(i = 0; i < num_projectors; ++i) {
@@ -3925,7 +3925,7 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
float offsetmat[4][4];
Camera *cam = NULL;
/* calculate projection matrix */
- Mat4Invert(projectors[i].projmat, projectors[i].ob->obmat);
+ invert_m4_m4(projectors[i].projmat, projectors[i].ob->obmat);
if(projectors[i].ob->type == OB_CAMERA) {
cam = (Camera *)projectors[i].ob->data;
@@ -3947,9 +3947,8 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
xmin = -xmax;
ymin = -ymax;
- i_window(xmin, xmax, ymin, ymax,
- cam->clipsta, cam->clipend, perspmat);
- Mat4MulMat4(tmpmat, projectors[i].projmat, perspmat);
+ perspective_m4( perspmat,xmin, xmax, ymin, ymax, cam->clipsta, cam->clipend);
+ mul_m4_m4m4(tmpmat, projectors[i].projmat, perspmat);
} else if(cam->type == CAM_ORTHO) {
float orthomat[4][4];
float xmax;
@@ -3967,16 +3966,15 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
xmin = -xmax;
ymin = -ymax;
- i_ortho(xmin, xmax, ymin, ymax,
- cam->clipsta, cam->clipend, orthomat);
- Mat4MulMat4(tmpmat, projectors[i].projmat, orthomat);
+ orthographic_m4( orthomat,xmin, xmax, ymin, ymax, cam->clipsta, cam->clipend);
+ mul_m4_m4m4(tmpmat, projectors[i].projmat, orthomat);
}
} else {
- Mat4CpyMat4(tmpmat, projectors[i].projmat);
+ copy_m4_m4(tmpmat, projectors[i].projmat);
}
- Mat4One(offsetmat);
- Mat4MulFloat3(offsetmat[0], 0.5);
+ unit_m4(offsetmat);
+ mul_mat3_m4_fl(offsetmat, 0.5);
offsetmat[3][0] = offsetmat[3][1] = offsetmat[3][2] = 0.5;
if (cam) {
@@ -3992,19 +3990,19 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
}
}
- Mat4MulMat4(projectors[i].projmat, tmpmat, offsetmat);
+ mul_m4_m4m4(projectors[i].projmat, tmpmat, offsetmat);
/* calculate worldspace projector normal (for best projector test) */
projectors[i].normal[0] = 0;
projectors[i].normal[1] = 0;
projectors[i].normal[2] = 1;
- Mat4Mul3Vecfl(projectors[i].ob->obmat, projectors[i].normal);
+ mul_mat3_m4_v3(projectors[i].ob->obmat, projectors[i].normal);
}
/* if only one projector, project coords to UVs */
if(num_projectors == 1)
for(i = 0, co = coords; i < numVerts; ++i, ++co)
- Mat4MulVec3Project(projectors[0].projmat, *co);
+ mul_project_m4_v4(projectors[0].projmat, *co);
mface = dm->getFaceArray(dm);
numFaces = dm->getNumFaces(dm);
@@ -4041,19 +4039,19 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
/* get the untransformed face normal */
if(mf->v4) {
VECCOPY(co4, coords[mf->v4]);
- CalcNormFloat4(co1, co2, co3, co4, face_no);
+ normal_quad_v3( face_no,co1, co2, co3, co4);
} else {
- CalcNormFloat(co1, co2, co3, face_no);
+ normal_tri_v3( face_no,co1, co2, co3);
}
/* find the projector which the face points at most directly
* (projector normal with largest dot product is best)
*/
- best_dot = Inpf(projectors[0].normal, face_no);
+ best_dot = dot_v3v3(projectors[0].normal, face_no);
best_projector = &projectors[0];
for(j = 1; j < num_projectors; ++j) {
- float tmp_dot = Inpf(projectors[j].normal,
+ float tmp_dot = dot_v3v3(projectors[j].normal,
face_no);
if(tmp_dot > best_dot) {
best_dot = tmp_dot;
@@ -4061,11 +4059,11 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
}
}
- Mat4MulVec3Project(best_projector->projmat, co1);
- Mat4MulVec3Project(best_projector->projmat, co2);
- Mat4MulVec3Project(best_projector->projmat, co3);
+ mul_project_m4_v4(best_projector->projmat, co1);
+ mul_project_m4_v4(best_projector->projmat, co2);
+ mul_project_m4_v4(best_projector->projmat, co3);
if(mf->v4)
- Mat4MulVec3Project(best_projector->projmat, co4);
+ mul_project_m4_v4(best_projector->projmat, co4);
/* apply transformed coords as UVs */
tface->uv[0][0] = co1[0];
@@ -4360,11 +4358,11 @@ static void smoothModifier_do(
if (uctmp[idx1] < 255) {
uctmp[idx1]++;
- VecAddf(v1, v1, fvec);
+ add_v3_v3v3(v1, v1, fvec);
}
if (uctmp[idx2] < 255) {
uctmp[idx2]++;
- VecAddf(v2, v2, fvec);
+ add_v3_v3v3(v2, v2, fvec);
}
}
@@ -4578,14 +4576,14 @@ static void castModifier_sphere_do(
* we use its location, transformed to ob's local space */
if (ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4Invert(ctrl_ob->imat, ctrl_ob->obmat);
- Mat4MulMat4(mat, ob->obmat, ctrl_ob->imat);
- Mat4Invert(imat, mat);
+ invert_m4_m4(ctrl_ob->imat, ctrl_ob->obmat);
+ mul_m4_m4m4(mat, ob->obmat, ctrl_ob->imat);
+ invert_m4_m4(imat, mat);
}
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
VECCOPY(center, ctrl_ob->obmat[3]);
- Mat4MulVecfl(ob->imat, center);
+ mul_m4_v3(ob->imat, center);
}
/* now we check which options the user wants */
@@ -4620,7 +4618,7 @@ static void castModifier_sphere_do(
if(len <= 0) {
for (i = 0; i < numVerts; i++) {
- len += VecLenf(center, vertexCos[i]);
+ len += len_v3v3(center, vertexCos[i]);
}
len /= numVerts;
@@ -4642,9 +4640,9 @@ static void castModifier_sphere_do(
VECCOPY(tmp_co, vertexCos[i]);
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(mat, tmp_co);
+ mul_m4_v3(mat, tmp_co);
} else {
- VecSubf(tmp_co, tmp_co, center);
+ sub_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4654,7 +4652,7 @@ static void castModifier_sphere_do(
vec[2] = 0.0f;
if (has_radius) {
- if (VecLength(vec) > cmd->radius) continue;
+ if (len_v3(vec) > cmd->radius) continue;
}
for (j = 0; j < dvert[i].totweight; ++j) {
@@ -4668,7 +4666,7 @@ static void castModifier_sphere_do(
fac = fac_orig * dw->weight;
facm = 1.0f - fac;
- Normalize(vec);
+ normalize_v3(vec);
if (flag & MOD_CAST_X)
tmp_co[0] = fac*vec[0]*len + facm*tmp_co[0];
@@ -4679,9 +4677,9 @@ static void castModifier_sphere_do(
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(imat, tmp_co);
+ mul_m4_v3(imat, tmp_co);
} else {
- VecAddf(tmp_co, tmp_co, center);
+ add_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4697,9 +4695,9 @@ static void castModifier_sphere_do(
VECCOPY(tmp_co, vertexCos[i]);
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(mat, tmp_co);
+ mul_m4_v3(mat, tmp_co);
} else {
- VecSubf(tmp_co, tmp_co, center);
+ sub_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4709,10 +4707,10 @@ static void castModifier_sphere_do(
vec[2] = 0.0f;
if (has_radius) {
- if (VecLength(vec) > cmd->radius) continue;
+ if (len_v3(vec) > cmd->radius) continue;
}
- Normalize(vec);
+ normalize_v3(vec);
if (flag & MOD_CAST_X)
tmp_co[0] = fac*vec[0]*len + facm*tmp_co[0];
@@ -4723,9 +4721,9 @@ static void castModifier_sphere_do(
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(imat, tmp_co);
+ mul_m4_v3(imat, tmp_co);
} else {
- VecAddf(tmp_co, tmp_co, center);
+ add_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4780,14 +4778,14 @@ static void castModifier_cuboid_do(
if (ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4Invert(ctrl_ob->imat, ctrl_ob->obmat);
- Mat4MulMat4(mat, ob->obmat, ctrl_ob->imat);
- Mat4Invert(imat, mat);
+ invert_m4_m4(ctrl_ob->imat, ctrl_ob->obmat);
+ mul_m4_m4m4(mat, ob->obmat, ctrl_ob->imat);
+ invert_m4_m4(imat, mat);
}
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
VECCOPY(center, ctrl_ob->obmat[3]);
- Mat4MulVecfl(ob->imat, center);
+ mul_m4_v3(ob->imat, center);
}
if((flag & MOD_CAST_SIZE_FROM_RADIUS) && has_radius) {
@@ -4816,7 +4814,7 @@ static void castModifier_cuboid_do(
DO_MINMAX(center, min, max);
for (i = 0; i < numVerts; i++) {
- VecSubf(vec, vertexCos[i], center);
+ sub_v3_v3v3(vec, vertexCos[i], center);
DO_MINMAX(vec, min, max);
}
}
@@ -4859,9 +4857,9 @@ static void castModifier_cuboid_do(
VECCOPY(tmp_co, vertexCos[i]);
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(mat, tmp_co);
+ mul_m4_v3(mat, tmp_co);
} else {
- VecSubf(tmp_co, tmp_co, center);
+ sub_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4897,7 +4895,7 @@ static void castModifier_cuboid_do(
if (tmp_co[2] > 0.0f) octant += 4;
/* apex is the bb's vertex at the chosen octant */
- VecCopyf(apex, bb[octant]);
+ copy_v3_v3(apex, bb[octant]);
/* find which bb plane is closest to this vertex ... */
d[0] = tmp_co[0] / apex[0];
@@ -4935,9 +4933,9 @@ static void castModifier_cuboid_do(
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(imat, tmp_co);
+ mul_m4_v3(imat, tmp_co);
} else {
- VecAddf(tmp_co, tmp_co, center);
+ add_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4955,9 +4953,9 @@ static void castModifier_cuboid_do(
VECCOPY(tmp_co, vertexCos[i]);
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(mat, tmp_co);
+ mul_m4_v3(mat, tmp_co);
} else {
- VecSubf(tmp_co, tmp_co, center);
+ sub_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -4972,7 +4970,7 @@ static void castModifier_cuboid_do(
if (tmp_co[1] > 0.0f) octant += 2;
if (tmp_co[2] > 0.0f) octant += 4;
- VecCopyf(apex, bb[octant]);
+ copy_v3_v3(apex, bb[octant]);
d[0] = tmp_co[0] / apex[0];
d[1] = tmp_co[1] / apex[1];
@@ -5003,9 +5001,9 @@ static void castModifier_cuboid_do(
if(ctrl_ob) {
if(flag & MOD_CAST_USE_OB_TRANSFORM) {
- Mat4MulVecfl(imat, tmp_co);
+ mul_m4_v3(imat, tmp_co);
} else {
- VecAddf(tmp_co, tmp_co, center);
+ add_v3_v3v3(tmp_co, tmp_co, center);
}
}
@@ -5170,7 +5168,7 @@ static void wavemod_get_texture_coords(WaveModifierData *wmd, Object *ob,
if(texmapping == MOD_WAV_MAP_OBJECT) {
if(wmd->map_object)
- Mat4Invert(wmd->map_object->imat, wmd->map_object->obmat);
+ invert_m4_m4(wmd->map_object->imat, wmd->map_object->obmat);
else /* if there is no map object, default to local */
texmapping = MOD_WAV_MAP_LOCAL;
}
@@ -5236,12 +5234,12 @@ static void wavemod_get_texture_coords(WaveModifierData *wmd, Object *ob,
break;
case MOD_WAV_MAP_GLOBAL:
VECCOPY(*texco, *co);
- Mat4MulVecfl(ob->obmat, *texco);
+ mul_m4_v3(ob->obmat, *texco);
break;
case MOD_WAV_MAP_OBJECT:
VECCOPY(*texco, *co);
- Mat4MulVecfl(ob->obmat, *texco);
- Mat4MulVecfl(wmd->map_object->imat, *texco);
+ mul_m4_v3(ob->obmat, *texco);
+ mul_m4_v3(wmd->map_object->imat, *texco);
break;
}
}
@@ -5267,8 +5265,8 @@ static void waveModifier_do(WaveModifierData *md,
if(wmd->objectcenter){
float mat[4][4];
/* get the control object's location in local coordinates */
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulMat4(mat, wmd->objectcenter->obmat, ob->imat);
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_m4_m4m4(mat, wmd->objectcenter->obmat, ob->imat);
wmd->startx = mat[3][0];
wmd->starty = mat[3][1];
@@ -5657,14 +5655,14 @@ static void hookModifier_deformVerts(
/* get world-space matrix of target, corrected for the space the verts are in */
if (hmd->subtarget[0] && pchan) {
/* bone target if there's a matching pose-channel */
- Mat4MulMat4(dmat, pchan->pose_mat, hmd->object->obmat);
+ mul_m4_m4m4(dmat, pchan->pose_mat, hmd->object->obmat);
}
else {
/* just object target */
- Mat4CpyMat4(dmat, hmd->object->obmat);
+ copy_m4_m4(dmat, hmd->object->obmat);
}
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulSerie(mat, ob->imat, dmat, hmd->parentinv,
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_serie_m4(mat, ob->imat, dmat, hmd->parentinv,
NULL, NULL, NULL, NULL, NULL);
/* vertex indices? */
@@ -5694,29 +5692,29 @@ static void hookModifier_deformVerts(
if(orig_index == index) {
co = vertexCos[j];
if(hmd->falloff != 0.0) {
- float len = VecLenf(co, hmd->cent);
+ float len = len_v3v3(co, hmd->cent);
if(len > hmd->falloff) fac = 0.0;
else if(len > 0.0)
fac *= sqrt(1.0 - len / hmd->falloff);
}
if(fac != 0.0) {
- VecMat4MulVecfl(vec, mat, co);
- VecLerpf(co, co, vec, fac);
+ mul_v3_m4v3(vec, mat, co);
+ interp_v3_v3v3(co, co, vec, fac);
}
}
}
} else {
if(hmd->falloff != 0.0) {
- float len = VecLenf(co, hmd->cent);
+ float len = len_v3v3(co, hmd->cent);
if(len > hmd->falloff) fac = 0.0;
else if(len > 0.0)
fac *= sqrt(1.0 - len / hmd->falloff);
}
if(fac != 0.0) {
- VecMat4MulVecfl(vec, mat, co);
- VecLerpf(co, co, vec, fac);
+ mul_v3_m4v3(vec, mat, co);
+ interp_v3_v3v3(co, co, vec, fac);
}
}
}
@@ -5755,14 +5753,14 @@ static void hookModifier_deformVerts(
float *co = vertexCos[i];
if(hmd->falloff != 0.0) {
- float len = VecLenf(co, hmd->cent);
+ float len = len_v3v3(co, hmd->cent);
if(len > hmd->falloff) fac = 0.0;
else if(len > 0.0)
fac *= sqrt(1.0 - len / hmd->falloff);
}
- VecMat4MulVecfl(vec, mat, co);
- VecLerpf(co, co, vec, fac);
+ mul_v3_m4v3(vec, mat, co);
+ interp_v3_v3v3(co, co, vec, fac);
}
}
}
@@ -6010,7 +6008,7 @@ static void collisionModifier_initData(ModifierData *md)
collmd->current_x = NULL;
collmd->current_xnew = NULL;
collmd->current_v = NULL;
- collmd->time = -1;
+ collmd->time = -1000;
collmd->numverts = 0;
collmd->bvhtree = NULL;
}
@@ -6041,7 +6039,7 @@ static void collisionModifier_freeData(ModifierData *md)
collmd->current_x = NULL;
collmd->current_xnew = NULL;
collmd->current_v = NULL;
- collmd->time = -1;
+ collmd->time = -1000;
collmd->numverts = 0;
collmd->bvhtree = NULL;
collmd->mfaces = NULL;
@@ -6091,14 +6089,14 @@ static void collisionModifier_deformVerts(
if(collmd->x && (numverts != collmd->numverts))
collisionModifier_freeData((ModifierData *)collmd);
- if(collmd->time == -1) // first time
+ if(collmd->time == -1000) // first time
{
collmd->x = dm->dupVertArray(dm); // frame start position
for ( i = 0; i < numverts; i++ )
{
// we save global positions
- Mat4MulVecfl ( ob->obmat, collmd->x[i].co );
+ mul_m4_v3( ob->obmat, collmd->x[i].co );
}
collmd->xnew = MEM_dupallocN(collmd->x); // frame end position
@@ -6128,7 +6126,7 @@ static void collisionModifier_deformVerts(
for ( i = 0; i < numverts; i++ )
{
// we save global positions
- Mat4MulVecfl ( ob->obmat, collmd->xnew[i].co );
+ mul_m4_v3( ob->obmat, collmd->xnew[i].co );
}
memcpy(collmd->current_xnew, collmd->x, numverts*sizeof(MVert));
@@ -6274,14 +6272,14 @@ static void surfaceModifier_deformVerts(
/* convert to global coordinates and calculate velocity */
for(i = 0, x = surmd->x, v = surmd->v; i<numverts; i++, x++, v++) {
vec = CDDM_get_vert(surmd->dm, i)->co;
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
if(init)
v->co[0] = v->co[1] = v->co[2] = 0.0f;
else
- VecSubf(v->co, vec, x->co);
+ sub_v3_v3v3(v->co, vec, x->co);
- VecCopyf(x->co, vec);
+ copy_v3_v3(x->co, vec);
}
surmd->cfra = md->scene->r.cfra;
@@ -6715,7 +6713,7 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
psys_get_particle_on_path(&sim, first_particle + i/totvert, &state,1);
- Normalize(state.vel);
+ normalize_v3(state.vel);
/* TODO: incremental rotations somehow */
if(state.vel[axis] < -0.9999 || state.vel[axis] > 0.9999) {
@@ -6726,10 +6724,10 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
float temp[3] = {0.0f,0.0f,0.0f};
temp[axis] = 1.0f;
- Crossf(cross, temp, state.vel);
+ cross_v3_v3v3(cross, temp, state.vel);
/* state.vel[axis] is the only component surviving from a dot product with the axis */
- VecRotToQuat(cross,saacos(state.vel[axis]),state.rot);
+ axis_angle_to_quat(state.rot,cross,saacos(state.vel[axis]));
}
}
@@ -6738,9 +6736,9 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
psys_get_particle_state(&sim, first_particle + i/totvert, &state,1);
}
- QuatMulVecf(state.rot,mv->co);
+ mul_qt_v3(state.rot,mv->co);
if(pimd->flag & eParticleInstanceFlag_UseSize)
- VecMulf(mv->co, size[i/totvert]);
+ mul_v3_fl(mv->co, size[i/totvert]);
VECADD(mv->co,mv->co,state.co);
}
@@ -6903,14 +6901,14 @@ static void explodeModifier_createFacepa(ExplodeModifierData *emd,
/* set face-particle-indexes to nearest particle to face center */
for(i=0,fa=mface; i<totface; i++,fa++){
- VecAddf(center,mvert[fa->v1].co,mvert[fa->v2].co);
- VecAddf(center,center,mvert[fa->v3].co);
+ add_v3_v3v3(center,mvert[fa->v1].co,mvert[fa->v2].co);
+ add_v3_v3v3(center,center,mvert[fa->v3].co);
if(fa->v4){
- VecAddf(center,center,mvert[fa->v4].co);
- VecMulf(center,0.25);
+ add_v3_v3v3(center,center,mvert[fa->v4].co);
+ mul_v3_fl(center,0.25);
}
else
- VecMulf(center,0.3333f);
+ mul_v3_fl(center,0.3333f);
p= BLI_kdtree_find_nearest(tree,center,NULL,NULL);
@@ -7082,7 +7080,7 @@ static DerivedMesh * explodeModifier_splitEdges(ExplodeModifierData *emd, Derive
mv=CDDM_get_vert(splitdm,i);
VECADD(dupve->co,dupve->co,mv->co);
- VecMulf(dupve->co,0.5);
+ mul_v3_fl(dupve->co,0.5);
}
BLI_edgehashIterator_free(ehi);
@@ -7298,7 +7296,7 @@ static DerivedMesh * explodeModifier_splitEdges(ExplodeModifierData *emd, Derive
VECADD(dupve->co,dupve->co,mv->co);
mv=CDDM_get_vert(splitdm,mf->v4);
VECADD(dupve->co,dupve->co,mv->co);
- VecMulf(dupve->co,0.25);
+ mul_v3_fl(dupve->co,0.25);
df1=CDDM_get_face(splitdm,curdupface);
@@ -7474,7 +7472,7 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd,
/*dupvert= CDDM_get_verts(explode);*/
/* getting back to object space */
- Mat4Invert(imat,ob->obmat);
+ invert_m4_m4(imat,ob->obmat);
psmd->psys->lattice = psys_get_lattice(&sim);
@@ -7501,23 +7499,23 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd,
/* get particle state */
psys_particle_on_emitter(psmd,part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc0,nor,0,0,0,0);
- Mat4MulVecfl(ob->obmat,loc0);
+ mul_m4_v3(ob->obmat,loc0);
state.time=cfra;
psys_get_particle_state(&sim, i, &state, 1);
vertco=CDDM_get_vert(explode,v)->co;
- Mat4MulVecfl(ob->obmat,vertco);
+ mul_m4_v3(ob->obmat,vertco);
VECSUB(vertco,vertco,loc0);
/* apply rotation, size & location */
- QuatMulVecf(state.rot,vertco);
- VecMulf(vertco,pa->size);
+ mul_qt_v3(state.rot,vertco);
+ mul_v3_fl(vertco,pa->size);
VECADD(vertco,vertco,state.co);
- Mat4MulVecfl(imat,vertco);
+ mul_m4_v3(imat,vertco);
}
}
BLI_edgehashIterator_free(ehi);
@@ -7883,11 +7881,11 @@ static void meshdeformModifier_do(
return;
/* compute matrices to go in and out of cage object space */
- Mat4Invert(imat, mmd->object->obmat);
- Mat4MulMat4(cagemat, ob->obmat, imat);
- Mat4MulMat4(cmat, cagemat, mmd->bindmat);
- Mat4Invert(iobmat, cmat);
- Mat3CpyMat4(icagemat, iobmat);
+ invert_m4_m4(imat, mmd->object->obmat);
+ mul_m4_m4m4(cagemat, ob->obmat, imat);
+ mul_m4_m4m4(cmat, cagemat, mmd->bindmat);
+ invert_m4_m4(iobmat, cmat);
+ copy_m3_m4(icagemat, iobmat);
/* bind weights if needed */
if(!mmd->bindcos) {
@@ -7896,7 +7894,7 @@ static void meshdeformModifier_do(
/* progress bar redraw can make this recursive .. */
if(!recursive) {
recursive = 1;
- mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat);
+ mmd->bindfunc(md->scene, dm, mmd, (float*)vertexCos, numVerts, cagemat);
recursive = 0;
}
}
@@ -7921,7 +7919,7 @@ static void meshdeformModifier_do(
VECCOPY(co, cagemvert[a].co);
if(G.rt != 527) {
- Mat4MulVecfl(mmd->bindmat, co);
+ mul_m4_v3(mmd->bindmat, co);
/* compute difference with world space bind coord */
VECSUB(dco[a], co, bindcos[a]);
}
@@ -7975,7 +7973,7 @@ static void meshdeformModifier_do(
if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) {
/* transform coordinate into cage's local space */
VECCOPY(co, vertexCos[b]);
- Mat4MulVecfl(cagemat, co);
+ mul_m4_v3(cagemat, co);
totweight= meshdeform_dynamic_bind(mmd, dco, co);
}
else {
@@ -7992,8 +7990,8 @@ static void meshdeformModifier_do(
}
if(totweight > 0.0f) {
- VecMulf(co, fac/totweight);
- Mat3MulVecfl(icagemat, co);
+ mul_v3_fl(co, fac/totweight);
+ mul_m3_v3(icagemat, co);
if(G.rt != 527)
VECADD(vertexCos[b], vertexCos[b], co)
else
@@ -8084,7 +8082,7 @@ static DerivedMesh *multiresModifier_applyModifier(ModifierData *md, Object *ob,
int i;
MVert *dst = CDDM_get_verts(final);
for(i = 0; i < mmd->undo_verts_tot; ++i) {
- VecCopyf(dst[i].co, mmd->undo_verts[i].co);
+ copy_v3_v3(dst[i].co, mmd->undo_verts[i].co);
}
CDDM_calc_normals(final);
@@ -8365,10 +8363,10 @@ static void shapekeyModifier_deformMatricesEM(
int a;
if(kb && kb->totelem==numVerts && kb!=key->refkey) {
- Mat3Scale(scale, kb->curval);
+ scale_m3_fl(scale, kb->curval);
for(a=0; a<numVerts; a++)
- Mat3CpyMat3(defMats[a], scale);
+ copy_m3_m3(defMats[a], scale);
}
}
@@ -8926,6 +8924,12 @@ int modifier_couldBeCage(ModifierData *md)
modifier_supportsMapping(md));
}
+int modifier_sameTopology(ModifierData *md)
+{
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ return ( mti->type == eModifierTypeType_OnlyDeform || mti->type == eModifierTypeType_Nonconstructive);
+}
+
void modifier_setError(ModifierData *md, char *format, ...)
{
char buffer[2048];
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index e1a51a05ca4..47b2914b0f5 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -37,7 +37,7 @@
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_cdderivedmesh.h"
@@ -164,7 +164,7 @@ int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src
int i;
for(i = 0; i < src_me->totvert; ++i)
- VecCopyf(mvert[i].co, src_me->mvert[i].co);
+ copy_v3_v3(mvert[i].co, src_me->mvert[i].co);
mrdm->needsFree = 1;
MultiresDM_mark_as_modified(mrdm);
mrdm->release(mrdm);
@@ -178,9 +178,9 @@ int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src
static void Mat3FromColVecs(float mat[][3], float v1[3], float v2[3], float v3[3])
{
- VecCopyf(mat[0], v1);
- VecCopyf(mat[1], v2);
- VecCopyf(mat[2], v3);
+ copy_v3_v3(mat[0], v1);
+ copy_v3_v3(mat[1], v2);
+ copy_v3_v3(mat[2], v3);
}
static DerivedMesh *multires_subdisp_pre(DerivedMesh *mrdm, int distance, int simple)
@@ -233,7 +233,7 @@ static void multires_subdisp(DerivedMesh *orig, Object *ob, DerivedMesh *final,
if(!addverts) {
for(i = 0; i < totvert; ++i) {
float z[3] = {0,0,0};
- VecCopyf(mvd[i].co, z);
+ copy_v3_v3(mvd[i].co, z);
}
}
@@ -424,7 +424,7 @@ void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object
for(j = 0, y = 0; y < st; y += skip) {
for(x = 0; x < st; x += skip) {
- VecCopyf(disps[j], mdisps[i].disps[y * st + x]);
+ copy_v3_v3(disps[j], mdisps[i].disps[y * st + x]);
++j;
}
}
@@ -998,27 +998,27 @@ static void calc_disp_mat(MultiresDisplacer *d, float mat[3][3])
if(u < 0) {
u = multires_index_at_loc(d->face_index, d->x - 1, d->y, d, &d->edges_primary);
- VecSubf(t1, base->co, d->subco[u].co);
+ sub_v3_v3v3(t1, base->co, d->subco[u].co);
}
else
- VecSubf(t1, d->subco[u].co, base->co);
+ sub_v3_v3v3(t1, d->subco[u].co, base->co);
if(v < 0) {
v = multires_index_at_loc(d->face_index, d->x, d->y - 1, d, &d->edges_primary);
- VecSubf(t2, base->co, d->subco[v].co);
+ sub_v3_v3v3(t2, base->co, d->subco[v].co);
}
else
- VecSubf(t2, d->subco[v].co, base->co);
+ sub_v3_v3v3(t2, d->subco[v].co, base->co);
//printf("uu=%d, vv=%d\n", u, v);
- Normalize(t1);
- Normalize(t2);
+ normalize_v3(t1);
+ normalize_v3(t2);
Mat3FromColVecs(mat, t1, t2, norm);
if(d->invert) {
- Mat3Inv(inv, mat);
- Mat3CpyMat3(mat, inv);
+ invert_m3_m3(inv, mat);
+ copy_m3_m3(mat, inv);
}
}
@@ -1033,23 +1033,23 @@ static void multires_displace(MultiresDisplacer *d, float co[3])
data = d->grid->disps[(d->y * d->spacing) * d->disp_st + (d->x * d->spacing)];
if(d->invert)
- VecSubf(disp, co, subco->co);
+ sub_v3_v3v3(disp, co, subco->co);
else
- VecCopyf(disp, data);
+ copy_v3_v3(disp, data);
/* Apply ts matrix to displacement */
calc_disp_mat(d, mat);
- Mat3MulVecfl(mat, disp);
+ mul_m3_v3(mat, disp);
if(d->invert) {
- VecCopyf(data, disp);
+ copy_v3_v3(data, disp);
}
else {
if(d->type == 4 || d->type == 5)
- VecMulf(disp, d->weight);
- VecAddf(co, co, disp);
+ mul_v3_fl(disp, d->weight);
+ add_v3_v3v3(co, co, disp);
}
if(d->type == 2) {
@@ -1200,7 +1200,7 @@ static void multiresModifier_update(DerivedMesh *dm)
/* Subtract the original vertex cos from the new vertex cos */
verts_new = CDDM_get_verts(dm);
for(i = 0; i < dm->getNumVerts(dm); ++i)
- VecSubf(verts_new[i].co, verts_new[i].co, cur_lvl_orig_verts[i].co);
+ sub_v3_v3v3(verts_new[i].co, verts_new[i].co, cur_lvl_orig_verts[i].co);
final = multires_subdisp_pre(dm, totlvl - lvl, 0);
@@ -1579,7 +1579,7 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
/* Transfer verts */
for(i = 0; i < totvert; ++i)
- VecCopyf(vdst[i].co, vsrc[vvmap[i]].co);
+ copy_v3_v3(vdst[i].co, vsrc[vvmap[i]].co);
MEM_freeN(vvmap);
}
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index f6d6bb14b7e..a27c3b6494b 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -32,6 +32,7 @@
#endif
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "DNA_ID.h"
@@ -53,7 +54,7 @@
#include "BKE_text.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
#include "BLI_threads.h"
@@ -903,7 +904,11 @@ void nodeAddSockets(bNode *node, bNodeType *ntype)
}
}
}
-
+/* Find the first available, non-duplicate name for a given node */
+void nodeUniqueName(bNodeTree *ntree, bNode *node)
+{
+ BLI_uniquename(&ntree->nodes, node, "Node", '.', offsetof(bNode, name), 32);
+}
bNode *nodeAddNodeType(bNodeTree *ntree, int type, bNodeTree *ngroup, ID *id)
{
@@ -937,6 +942,9 @@ bNode *nodeAddNodeType(bNodeTree *ntree, int type, bNodeTree *ngroup, ID *id)
}
else
BLI_strncpy(node->name, ntype->name, NODE_MAXSTR);
+
+ nodeUniqueName(ntree, node);
+
node->type= ntype->type;
node->flag= NODE_SELECT|ntype->flag;
node->width= ntype->width;
@@ -989,6 +997,8 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node, int internal)
bNodeSocket *sock, *oldsock;
*nnode= *node;
+ nodeUniqueName(ntree, nnode);
+
BLI_addtail(&ntree->nodes, nnode);
BLI_duplicatelist(&nnode->inputs, &node->inputs);
@@ -1062,6 +1072,11 @@ bNodeTree *ntreeAddTree(int type)
return ntree;
}
+/* Warning: this function gets called during some rather unexpected times
+ * - internal_select is only 1 when used for duplicating selected nodes (i.e. Shift-D duplicate operator)
+ * - this gets called when executing compositing updates (for threaded previews)
+ * - when the nodetree datablock needs to be copied (i.e. when users get copied)
+ */
bNodeTree *ntreeCopyTree(bNodeTree *ntree, int internal_select)
{
bNodeTree *newtree;
@@ -1093,10 +1108,9 @@ bNodeTree *ntreeCopyTree(bNodeTree *ntree, int internal_select)
if(internal_select==0 || (node->flag & NODE_SELECT)) {
nnode= nodeCopyNode(newtree, node, internal_select); /* sets node->new */
if(internal_select) {
- node->flag &= ~NODE_SELECT;
+ node->flag &= ~(NODE_SELECT|NODE_ACTIVE);
nnode->flag |= NODE_SELECT;
}
- node->flag &= ~NODE_ACTIVE;
/* deselect original sockets */
for(sock= node->inputs.first; sock; sock= sock->next) {
@@ -1661,7 +1675,9 @@ void ntreeSocketUseFlags(bNodeTree *ntree)
/* tag all thats in use */
for(link= ntree->links.first; link; link= link->next) {
- link->fromsock->flag |= SOCK_IN_USE;
+
+ if(link->fromsock) // FIXME, see below
+ link->fromsock->flag |= SOCK_IN_USE;
if(link->tosock) // FIXME This can be NULL, when dragging a new link in the UI, should probably copy the node tree for preview render - campbell
link->tosock->flag |= SOCK_IN_USE;
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index ba8d41f54bb..73a1d2023a2 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -70,7 +70,7 @@
#include "DNA_world_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BKE_utildefines.h"
@@ -622,7 +622,7 @@ void unlink_object(Scene *scene, Object *ob)
/* groups */
group= G.main->group.first;
while(group) {
- rem_from_group(group, ob);
+ rem_from_group(group, ob, NULL, NULL);
group= group->id.next;
}
@@ -740,13 +740,13 @@ float dof_camera(Object *ob)
return 0.0f;
if (cam->dof_ob) {
/* too simple, better to return the distance on the view axis only
- * return VecLenf(ob->obmat[3], cam->dof_ob->obmat[3]); */
+ * return len_v3v3(ob->obmat[3], cam->dof_ob->obmat[3]); */
float mat[4][4], obmat[4][4];
- Mat4CpyMat4(obmat, ob->obmat);
- Mat4Ortho(obmat);
- Mat4Invert(ob->imat, obmat);
- Mat4MulMat4(mat, cam->dof_ob->obmat, ob->imat);
+ copy_m4_m4(obmat, ob->obmat);
+ normalize_m4(obmat);
+ invert_m4_m4(ob->imat, obmat);
+ mul_m4_m4m4(mat, cam->dof_ob->obmat, ob->imat);
return (float)fabs(mat[3][2]);
}
return cam->YF_dofdist;
@@ -965,8 +965,8 @@ Object *add_only_object(int type, char *name)
/* ob->transflag= OB_QUAT; */
#if 0 /* not used yet */
- QuatOne(ob->quat);
- QuatOne(ob->dquat);
+ unit_qt(ob->quat);
+ unit_qt(ob->dquat);
#endif
ob->col[0]= ob->col[1]= ob->col[2]= 1.0;
@@ -976,9 +976,9 @@ Object *add_only_object(int type, char *name)
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0;
ob->size[0]= ob->size[1]= ob->size[2]= 1.0;
- Mat4One(ob->constinv);
- Mat4One(ob->parentinv);
- Mat4One(ob->obmat);
+ unit_m4(ob->constinv);
+ unit_m4(ob->parentinv);
+ unit_m4(ob->obmat);
ob->dt= OB_SHADED;
ob->empty_drawtype= OB_ARROWS;
ob->empty_drawsize= 1.0;
@@ -1044,6 +1044,10 @@ Object *add_object(struct Scene *scene, int type)
ob->rotmode= ROT_MODE_EUL;
/* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */
ob->rotAxis[1]= ob->drotAxis[1]= 1.0f;
+ /* quaternions should be 1,0,0,0 by default.... */
+ ob->quat[0]= 1.0f;
+ /* rotation locks should be 4D for 4 component rotations by default... */
+ ob->protectflag = OB_LOCK_ROT4D;
base= scene_add_base(scene, ob);
scene_select_base(scene, base);
@@ -1464,7 +1468,7 @@ void object_make_proxy(Object *ob, Object *target, Object *gob)
}
ob->parent= target->parent; /* libdata */
- Mat4CpyMat4(ob->parentinv, target->parentinv);
+ copy_m4_m4(ob->parentinv, target->parentinv);
/* copy animdata stuff - drivers only for now... */
if ((target->adt) && (target->adt->drivers.first)) {
@@ -1588,7 +1592,7 @@ void object_scale_to_mat3(Object *ob, float mat[][3])
vec[0]= ob->size[0]+ob->dsize[0];
vec[1]= ob->size[1]+ob->dsize[1];
vec[2]= ob->size[2]+ob->dsize[2];
- SizeToMat3(vec, mat);
+ size_to_mat3( mat,vec);
}
// TODO: this should take rotation orders into account later...
@@ -1599,29 +1603,29 @@ void object_rot_to_mat3(Object *ob, float mat[][3])
/* initialise the delta-rotation matrix, which will get (pre)multiplied
* with the rotation matrix to yield the appropriate rotation
*/
- Mat3One(dmat);
+ unit_m3(dmat);
/* rotations may either be quats, eulers (with various rotation orders), or axis-angle */
if (ob->rotmode > 0) {
/* euler rotations (will cause gimble lock, but this can be alleviated a bit with rotation orders) */
- EulOToMat3(ob->rot, ob->rotmode, rmat);
- EulOToMat3(ob->drot, ob->rotmode, dmat);
+ eulO_to_mat3( rmat,ob->rot, ob->rotmode);
+ eulO_to_mat3( dmat,ob->drot, ob->rotmode);
}
else if (ob->rotmode == ROT_MODE_AXISANGLE) {
/* axis-angle - not really that great for 3D-changing orientations */
- AxisAngleToMat3(ob->rotAxis, ob->rotAngle, rmat);
- AxisAngleToMat3(ob->drotAxis, ob->drotAngle, dmat);
+ axis_angle_to_mat3( rmat,ob->rotAxis, ob->rotAngle);
+ axis_angle_to_mat3( dmat,ob->drotAxis, ob->drotAngle);
}
else {
/* quats are normalised before use to eliminate scaling issues */
- NormalQuat(ob->quat);
- QuatToMat3(ob->quat, rmat);
- QuatToMat3(ob->dquat, dmat);
+ normalize_qt(ob->quat);
+ quat_to_mat3( rmat,ob->quat);
+ quat_to_mat3( dmat,ob->dquat);
}
/* combine these rotations */
// XXX is this correct? if errors, change the order of multiplication...
- Mat3MulMat3(mat, dmat, rmat);
+ mul_m3_m3m3(mat, dmat, rmat);
}
void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
@@ -1635,7 +1639,7 @@ void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
/* rot */
object_rot_to_mat3(ob, rmat);
- Mat3MulMat3(mat, rmat, smat);
+ mul_m3_m3m3(mat, rmat, smat);
}
void object_to_mat4(Object *ob, float mat[][4])
@@ -1644,7 +1648,7 @@ void object_to_mat4(Object *ob, float mat[][4])
object_to_mat3(ob, tmat);
- Mat4CpyMat3(mat, tmat);
+ copy_m4_m3(mat, tmat);
mat[3][0]= ob->loc[0] + ob->dloc[0];
mat[3][1]= ob->loc[1] + ob->dloc[1];
@@ -1659,7 +1663,7 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4])
float q[4], vec[4], dir[3], quat[4], radius, x1, ctime;
float timeoffs = 0.0, sf_orig = 0.0;
- Mat4One(mat);
+ unit_m4(mat);
cu= par->data;
if(cu->path==NULL || cu->path->data==NULL) /* only happens on reload file, but violates depsgraph still... fix! */
@@ -1707,25 +1711,25 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4])
if( where_on_path(par, ctime, vec, dir, NULL, &radius) ) {
if(cu->flag & CU_FOLLOW) {
- vectoquat(dir, ob->trackflag, ob->upflag, quat);
+ vec_to_quat( quat,dir, ob->trackflag, ob->upflag);
/* the tilt */
- Normalize(dir);
+ normalize_v3(dir);
q[0]= (float)cos(0.5*vec[3]);
x1= (float)sin(0.5*vec[3]);
q[1]= -x1*dir[0];
q[2]= -x1*dir[1];
q[3]= -x1*dir[2];
- QuatMul(quat, q, quat);
+ mul_qt_qtqt(quat, q, quat);
- QuatToMat4(quat, mat);
+ quat_to_mat4( mat,quat);
}
if(cu->flag & CU_PATH_RADIUS) {
float tmat[4][4], rmat[4][4];
- Mat4Scale(tmat, radius);
- Mat4MulMat4(rmat, mat, tmat);
- Mat4CpyMat4(mat, rmat);
+ scale_m4_fl(tmat, radius);
+ mul_m4_m4m4(rmat, mat, tmat);
+ copy_m4_m4(mat, rmat);
}
VECCOPY(mat[3], vec);
@@ -1739,7 +1743,7 @@ static void ob_parbone(Object *ob, Object *par, float mat[][4])
float vec[3];
if (par->type!=OB_ARMATURE) {
- Mat4One(mat);
+ unit_m4(mat);
return;
}
@@ -1747,17 +1751,17 @@ static void ob_parbone(Object *ob, Object *par, float mat[][4])
pchan= get_pose_channel(par->pose, ob->parsubstr);
if (!pchan){
printf ("Object %s with Bone parent: bone %s doesn't exist\n", ob->id.name+2, ob->parsubstr);
- Mat4One(mat);
+ unit_m4(mat);
return;
}
/* get bone transform */
- Mat4CpyMat4(mat, pchan->pose_mat);
+ copy_m4_m4(mat, pchan->pose_mat);
/* but for backwards compatibility, the child has to move to the tail */
VECCOPY(vec, mat[1]);
- VecMulf(vec, pchan->bone->length);
- VecAddf(mat[3], mat[3], vec);
+ mul_v3_fl(vec, pchan->bone->length);
+ add_v3_v3v3(mat[3], mat[3], vec);
}
static void give_parvert(Object *par, int nr, float *vec)
@@ -1794,7 +1798,7 @@ static void give_parvert(Object *par, int nr, float *vec)
for(i = 0; i < numVerts; ++i, ++index) {
if(*index == nr) {
dm->getVertCo(dm, i, co);
- VecAddf(vec, vec, co);
+ add_v3_v3v3(vec, vec, co);
count++;
}
}
@@ -1802,7 +1806,7 @@ static void give_parvert(Object *par, int nr, float *vec)
if (count==0) {
/* keep as 0,0,0 */
} else if(count > 0) {
- VecMulf(vec, 1.0f / count);
+ mul_v3_fl(vec, 1.0f / count);
} else {
/* use first index if its out of range */
dm->getVertCo(dm, 0, vec);
@@ -1886,7 +1890,7 @@ static void ob_parvert3(Object *ob, Object *par, float mat[][4])
float cmat[3][3], v1[3], v2[3], v3[3], q[4];
/* in local ob space */
- Mat4One(mat);
+ unit_m4(mat);
if (ELEM4(par->type, OB_MESH, OB_SURF, OB_CURVE, OB_LATTICE)) {
@@ -1894,17 +1898,17 @@ static void ob_parvert3(Object *ob, Object *par, float mat[][4])
give_parvert(par, ob->par2, v2);
give_parvert(par, ob->par3, v3);
- triatoquat(v1, v2, v3, q);
- QuatToMat3(q, cmat);
- Mat4CpyMat3(mat, cmat);
+ tri_to_quat( q,v1, v2, v3);
+ quat_to_mat3( cmat,q);
+ copy_m4_m3(mat, cmat);
if(ob->type==OB_CURVE) {
VECCOPY(mat[3], v1);
}
else {
- VecAddf(mat[3], v1, v2);
- VecAddf(mat[3], mat[3], v3);
- VecMulf(mat[3], 0.3333333f);
+ add_v3_v3v3(mat[3], v1, v2);
+ add_v3_v3v3(mat[3], mat[3], v3);
+ mul_v3_fl(mat[3], 0.3333333f);
}
}
}
@@ -1992,8 +1996,8 @@ void where_is_object_time(Scene *scene, Object *ob, float ctime)
}
/* set negative scale flag in object */
- Crossf(vec, ob->obmat[0], ob->obmat[1]);
- if( Inpf(vec, ob->obmat[2]) < 0.0 ) ob->transflag |= OB_NEG_SCALE;
+ cross_v3_v3v3(vec, ob->obmat[0], ob->obmat[1]);
+ if( dot_v3v3(vec, ob->obmat[2]) < 0.0 ) ob->transflag |= OB_NEG_SCALE;
else ob->transflag &= ~OB_NEG_SCALE;
}
@@ -2007,7 +2011,7 @@ static void solve_parenting (Scene *scene, Object *ob, Object *par, float obmat[
object_to_mat4(ob, locmat);
- if(ob->partype & PARSLOW) Mat4CpyMat4(slowmat, obmat);
+ if(ob->partype & PARSLOW) copy_m4_m4(slowmat, obmat);
switch(ob->partype & PARTYPE) {
case PAROBJECT:
@@ -2019,43 +2023,43 @@ static void solve_parenting (Scene *scene, Object *ob, Object *par, float obmat[
}
}
- if(ok) Mat4MulSerie(totmat, par->obmat, tmat,
+ if(ok) mul_serie_m4(totmat, par->obmat, tmat,
NULL, NULL, NULL, NULL, NULL, NULL);
- else Mat4CpyMat4(totmat, par->obmat);
+ else copy_m4_m4(totmat, par->obmat);
break;
case PARBONE:
ob_parbone(ob, par, tmat);
- Mat4MulSerie(totmat, par->obmat, tmat,
+ mul_serie_m4(totmat, par->obmat, tmat,
NULL, NULL, NULL, NULL, NULL, NULL);
break;
case PARVERT1:
- Mat4One(totmat);
+ unit_m4(totmat);
if (simul){
VECCOPY(totmat[3], par->obmat[3]);
}
else{
give_parvert(par, ob->par1, vec);
- VecMat4MulVecfl(totmat[3], par->obmat, vec);
+ mul_v3_m4v3(totmat[3], par->obmat, vec);
}
break;
case PARVERT3:
ob_parvert3(ob, par, tmat);
- Mat4MulSerie(totmat, par->obmat, tmat,
+ mul_serie_m4(totmat, par->obmat, tmat,
NULL, NULL, NULL, NULL, NULL, NULL);
break;
case PARSKEL:
- Mat4CpyMat4(totmat, par->obmat);
+ copy_m4_m4(totmat, par->obmat);
break;
}
// total
- Mat4MulSerie(tmat, totmat, ob->parentinv,
+ mul_serie_m4(tmat, totmat, ob->parentinv,
NULL, NULL, NULL, NULL, NULL, NULL);
- Mat4MulSerie(obmat, tmat, locmat,
+ mul_serie_m4(obmat, tmat, locmat,
NULL, NULL, NULL, NULL, NULL, NULL);
if (simul) {
@@ -2063,7 +2067,7 @@ static void solve_parenting (Scene *scene, Object *ob, Object *par, float obmat[
}
else{
// external usable originmat
- Mat3CpyMat4(originmat, tmat);
+ copy_m3_m4(originmat, tmat);
// origin, voor help line
if( (ob->partype & 15)==PARSKEL ) {
@@ -2082,9 +2086,9 @@ void solve_tracking (Object *ob, float targetmat[][4])
float totmat[3][3];
float tmat[4][4];
- VecSubf(vec, ob->obmat[3], targetmat[3]);
- vectoquat(vec, ob->trackflag, ob->upflag, quat);
- QuatToMat3(quat, totmat);
+ sub_v3_v3v3(vec, ob->obmat[3], targetmat[3]);
+ vec_to_quat( quat,vec, ob->trackflag, ob->upflag);
+ quat_to_mat3( totmat,quat);
if(ob->parent && (ob->transflag & OB_POWERTRACK)) {
/* 'temporal' : clear parent info */
@@ -2097,9 +2101,9 @@ void solve_tracking (Object *ob, float targetmat[][4])
tmat[3][2]= ob->obmat[3][2];
tmat[3][3]= ob->obmat[3][3];
}
- else Mat4CpyMat4(tmat, ob->obmat);
+ else copy_m4_m4(tmat, ob->obmat);
- Mat4MulMat34(ob->obmat, totmat, tmat);
+ mul_m4_m3m4(ob->obmat, totmat, tmat);
}
@@ -2171,9 +2175,9 @@ void what_does_parent(Scene *scene, Object *ob, Object *workob)
{
clear_workob(workob);
- Mat4One(workob->obmat);
- Mat4One(workob->parentinv);
- Mat4One(workob->constinv);
+ unit_m4(workob->obmat);
+ unit_m4(workob->parentinv);
+ unit_m4(workob->constinv);
workob->parent= ob->parent;
workob->track= ob->track;
@@ -2261,7 +2265,7 @@ void minmax_object(Object *ob, float *min, float *max)
bb= *(cu->bb);
for(a=0; a<8; a++) {
- Mat4MulVecfl(ob->obmat, bb.vec[a]);
+ mul_m4_v3(ob->obmat, bb.vec[a]);
DO_MINMAX(bb.vec[a], min, max);
}
break;
@@ -2270,10 +2274,10 @@ void minmax_object(Object *ob, float *min, float *max)
bPoseChannel *pchan;
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
VECCOPY(vec, pchan->pose_head);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
DO_MINMAX(vec, min, max);
VECCOPY(vec, pchan->pose_tail);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
DO_MINMAX(vec, min, max);
}
break;
@@ -2286,7 +2290,7 @@ void minmax_object(Object *ob, float *min, float *max)
bb = *mesh_get_bb(ob);
for(a=0; a<8; a++) {
- Mat4MulVecfl(ob->obmat, bb.vec[a]);
+ mul_m4_v3(ob->obmat, bb.vec[a]);
DO_MINMAX(bb.vec[a], min, max);
}
}
@@ -2298,11 +2302,11 @@ void minmax_object(Object *ob, float *min, float *max)
DO_MINMAX(ob->obmat[3], min, max);
VECCOPY(vec, ob->obmat[3]);
- VecAddf(vec, vec, ob->size);
+ add_v3_v3v3(vec, vec, ob->size);
DO_MINMAX(vec, min, max);
VECCOPY(vec, ob->obmat[3]);
- VecSubf(vec, vec, ob->size);
+ sub_v3_v3v3(vec, vec, ob->size);
DO_MINMAX(vec, min, max);
break;
}
@@ -2353,17 +2357,20 @@ void object_handle_update(Scene *scene, Object *ob)
// printf("ob proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name);
if(ob->proxy_from->proxy_group) {/* transform proxy into group space */
Object *obg= ob->proxy_from->proxy_group;
- Mat4Invert(obg->imat, obg->obmat);
- Mat4MulMat4(ob->obmat, ob->proxy_from->obmat, obg->imat);
+ invert_m4_m4(obg->imat, obg->obmat);
+ mul_m4_m4m4(ob->obmat, ob->proxy_from->obmat, obg->imat);
}
else
- Mat4CpyMat4(ob->obmat, ob->proxy_from->obmat);
+ copy_m4_m4(ob->obmat, ob->proxy_from->obmat);
}
else
where_is_object(scene, ob);
}
if(ob->recalc & OB_RECALC_DATA) {
+ ID *data_id= (ID *)ob->data;
+ AnimData *adt= BKE_animdata_from_id(data_id);
+ float ctime= (float)scene->r.cfra; // XXX this is bad...
if (G.f & G_DEBUG)
printf("recalcdata %s\n", ob->id.name+2);
@@ -2386,10 +2393,6 @@ void object_handle_update(Scene *scene, Object *ob)
makeDispListCurveTypes(scene, ob, 0);
}
else if(ELEM(ob->type, OB_CAMERA, OB_LAMP)) {
- ID *data_id= (ID *)ob->data;
- AnimData *adt= BKE_animdata_from_id(data_id);
- float ctime= (float)scene->r.cfra; // XXX this is bad...
-
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
}
@@ -2402,6 +2405,9 @@ void object_handle_update(Scene *scene, Object *ob)
if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
armature_rebuild_pose(ob, ob->data);
+ /* evaluate drivers */
+ BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
+
if(ob->id.lib && ob->proxy_from) {
copy_pose_result(ob->pose, ob->proxy_from->pose);
// printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name);
@@ -2538,7 +2544,7 @@ int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3
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);
+ result = isect_ray_tri_v3(ray_start, ray_normal, bb->vec[v1], bb->vec[v2], bb->vec[v3], &lambda, NULL);
}
return result;
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 3dfe3966e2f..27fcfa8b9cb 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -161,7 +161,7 @@ void paint_brush_slot_remove(Paint *p)
int paint_facesel_test(Object *ob)
{
- return (ob && ob->data && (((Mesh *)ob->data)->editflag & ME_EDIT_PAINT_MASK) && (ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)));
+ return (ob && ob->type==OB_MESH && ob->data && (((Mesh *)ob->data)->editflag & ME_EDIT_PAINT_MASK) && (ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)));
}
void paint_init(Paint *p, const char col[3])
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 24d6b229297..bb2f4128891 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -51,7 +51,7 @@
#include "DNA_smoke_types.h"
#include "DNA_texture_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_kdtree.h"
@@ -618,12 +618,12 @@ static float psys_render_projected_area(ParticleSystem *psys, float *center, flo
/* transform to view space */
VECCOPY(co, center);
co[3]= 1.0f;
- Mat4MulVec4fl(data->viewmat, co);
+ mul_m4_v4(data->viewmat, co);
/* compute two vectors orthogonal to view vector */
VECCOPY(view, co);
- Normalize(view);
- VecOrthoBasisf(view, ortho1, ortho2);
+ normalize_v3(view);
+ ortho_basis_v3v3_v3( ortho1, ortho2,view);
/* compute on screen minification */
w= co[2]*data->winmat[2][3] + data->winmat[3][3];
@@ -637,7 +637,7 @@ static float psys_render_projected_area(ParticleSystem *psys, float *center, flo
/* viewport of the screen test */
/* project point on screen */
- Mat4MulVec4fl(data->winmat, co);
+ mul_m4_v4(data->winmat, co);
if(co[3] != 0.0f) {
co[0]= 0.5f*data->winx*(1.0f + co[0]/co[3]);
co[1]= 0.5f*data->winy*(1.0f + co[1]/co[3]);
@@ -698,9 +698,9 @@ void psys_render_set(Object *ob, ParticleSystem *psys, float viewmat[][4], float
psys->pathcachebufs.first = psys->pathcachebufs.last = NULL;
psys->childcachebufs.first = psys->childcachebufs.last = NULL;
- Mat4CpyMat4(data->winmat, winmat);
- Mat4MulMat4(data->viewmat, ob->obmat, viewmat);
- Mat4MulMat4(data->mat, data->viewmat, winmat);
+ copy_m4_m4(data->winmat, winmat);
+ mul_m4_m4m4(data->viewmat, ob->obmat, viewmat);
+ mul_m4_m4m4(data->mat, data->viewmat, winmat);
data->winx= winx;
data->winy= winy;
@@ -828,11 +828,11 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot)
if(mf->v4) {
VECCOPY(co4, mvert[mf->v4].co);
VECADD(facecenter[b], facecenter[b], co4);
- facearea[b] += AreaQ3Dfl(co1, co2, co3, co4);
+ facearea[b] += area_quad_v3(co1, co2, co3, co4);
facetotvert[b] += 4;
}
else {
- facearea[b] += AreaT3Dfl(co1, co2, co3);
+ facearea[b] += area_tri_v3(co1, co2, co3);
facetotvert[b] += 3;
}
}
@@ -840,7 +840,7 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot)
for(a=0; a<totorigface; a++)
if(facetotvert[a] > 0)
- VecMulf(facecenter[a], 1.0f/facetotvert[a]);
+ mul_v3_fl(facecenter[a], 1.0f/facetotvert[a]);
/* for conversion from BU area / pixel area to reference screen size */
mesh_get_texspace(me, 0, 0, size);
@@ -1007,7 +1007,7 @@ void psys_interpolate_particle(short type, ParticleKey keys[4], float dt, Partic
float t[4];
if(type<0) {
- VecfCubicInterpol(keys[1].co, keys[1].vel, keys[2].co, keys[2].vel, dt, result->co, result->vel);
+ interp_cubic_v3( result->co, result->vel,keys[1].co, keys[1].vel, keys[2].co, keys[2].vel, dt);
}
else {
key_curve_position_weights(dt, t, type);
@@ -1280,9 +1280,9 @@ static void do_particle_interpolation(ParticleSystem *psys, int p, ParticleData
/* convert velocity to timestep size */
if(pind->keyed || pind->cache || point_vel){
- VecMulf(keys[1].vel, dfra / frs_sec);
- VecMulf(keys[2].vel, dfra / frs_sec);
- QuatInterpol(result->rot,keys[1].rot,keys[2].rot,keytime);
+ mul_v3_fl(keys[1].vel, dfra / frs_sec);
+ mul_v3_fl(keys[2].vel, dfra / frs_sec);
+ interp_qt_qtqt(result->rot,keys[1].rot,keys[2].rot,keytime);
}
/* now we should have in chronologiacl order k1<=k2<=t<=k3<=k4 with keytime between [0,1]->[k2,k3] (k1 & k4 used for cardinal & bspline interpolation)*/
@@ -1292,7 +1292,7 @@ static void do_particle_interpolation(ParticleSystem *psys, int p, ParticleData
/* the velocity needs to be converted back from cubic interpolation */
if(pind->keyed || pind->cache || point_vel)
- VecMulf(result->vel, frs_sec / dfra);
+ mul_v3_fl(result->vel, frs_sec / dfra);
}
/************************************************/
/* Particles on a dm */
@@ -1312,14 +1312,14 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
VECCOPY(n1,(mvert+mface->v1)->no);
VECCOPY(n2,(mvert+mface->v2)->no);
VECCOPY(n3,(mvert+mface->v3)->no);
- Normalize(n1);
- Normalize(n2);
- Normalize(n3);
+ normalize_v3(n1);
+ normalize_v3(n2);
+ normalize_v3(n3);
if(mface->v4) {
v4= (mvert+mface->v4)->co;
VECCOPY(n4,(mvert+mface->v4)->no);
- Normalize(n4);
+ normalize_v3(n4);
vec[0]= w[0]*v1[0] + w[1]*v2[0] + w[2]*v3[0] + w[3]*v4[0];
vec[1]= w[0]*v1[1] + w[1]*v2[1] + w[2]*v3[1] + w[3]*v4[1];
@@ -1332,7 +1332,7 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
nor[2]= w[0]*n1[2] + w[1]*n2[2] + w[2]*n3[2] + w[3]*n4[2];
}
else
- CalcNormFloat4(v1,v2,v3,v4,nor);
+ normal_quad_v3(nor,v1,v2,v3,v4);
}
}
else {
@@ -1347,7 +1347,7 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
nor[2]= w[0]*n1[2] + w[1]*n2[2] + w[2]*n3[2];
}
else
- CalcNormFloat(v1,v2,v3,nor);
+ normal_tri_v3(nor,v1,v2,v3);
}
}
@@ -1361,11 +1361,11 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
}
else{
uv1= tuv[0]; uv2= tuv[1]; uv3= tuv[2]; uv4= tuv[3];
- spheremap(v1[0], v1[1], v1[2], uv1, uv1+1);
- spheremap(v2[0], v2[1], v2[2], uv2, uv2+1);
- spheremap(v3[0], v3[1], v3[2], uv3, uv3+1);
+ map_to_sphere( uv1, uv1+1,v1[0], v1[1], v1[2]);
+ map_to_sphere( uv2, uv2+1,v2[0], v2[1], v2[2]);
+ map_to_sphere( uv3, uv3+1,v3[0], v3[1], v3[2]);
if(v4)
- spheremap(v4[0], v4[1], v4[2], uv4, uv4+1);
+ map_to_sphere( uv4, uv4+1,v4[0], v4[1], v4[2]);
}
if(v4){
@@ -1375,8 +1375,8 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
t1= uv3[1] - uv1[1];
t2= uv4[1] - uv1[1];
- VecSubf(e1, v3, v1);
- VecSubf(e2, v4, v1);
+ sub_v3_v3v3(e1, v3, v1);
+ sub_v3_v3v3(e2, v4, v1);
}
else{
s1= uv2[0] - uv1[0];
@@ -1385,8 +1385,8 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
t1= uv2[1] - uv1[1];
t2= uv3[1] - uv1[1];
- VecSubf(e1, v2, v1);
- VecSubf(e2, v3, v1);
+ sub_v3_v3v3(e1, v2, v1);
+ sub_v3_v3v3(e2, v3, v1);
}
vtan[0] = (s1*e2[0] - s2*e1[0]);
@@ -1411,7 +1411,7 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
orco[2]= w[0]*o1[2] + w[1]*o2[2] + w[2]*o3[2] + w[3]*o4[2];
if(ornor)
- CalcNormFloat4(o1, o2, o3, o4, ornor);
+ normal_quad_v3( ornor,o1, o2, o3, o4);
}
else {
orco[0]= w[0]*o1[0] + w[1]*o2[0] + w[2]*o3[0];
@@ -1419,7 +1419,7 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or
orco[2]= w[0]*o1[2] + w[1]*o2[2] + w[2]*o3[2];
if(ornor)
- CalcNormFloat(o1, o2, o3, ornor);
+ normal_tri_v3( ornor,o1, o2, o3);
}
}
else {
@@ -1517,10 +1517,10 @@ static void psys_origspace_to_w(OrigSpaceFace *osface, int quad, float *w, float
if(quad) {
v[3][0]= osface->uv[3][0]; v[3][1]= osface->uv[3][1]; v[3][2]= 0.0f;
- MeanValueWeights(v, 4, co, neww);
+ interp_weights_poly_v3( neww,v, 4, co);
}
else {
- MeanValueWeights(v, 3, co, neww);
+ interp_weights_poly_v3( neww,v, 3, co);
neww[3]= 0.0f;
}
}
@@ -1566,10 +1566,10 @@ int psys_particle_dm_face_lookup(Object *ob, DerivedMesh *dm, int index, float *
/* check that this intersects - Its possible this misses :/ -
* could also check its not between */
if(quad) {
- if(IsectPQ2Df(uv, faceuv[0], faceuv[1], faceuv[2], faceuv[3]))
+ if(isect_point_quad_v2(uv, faceuv[0], faceuv[1], faceuv[2], faceuv[3]))
return findex;
}
- else if(IsectPT2Df(uv, faceuv[0], faceuv[1], faceuv[2]))
+ else if(isect_point_tri_v2(uv, faceuv[0], faceuv[1], faceuv[2]))
return findex;
}
}
@@ -1582,10 +1582,10 @@ int psys_particle_dm_face_lookup(Object *ob, DerivedMesh *dm, int index, float *
/* check that this intersects - Its possible this misses :/ -
* could also check its not between */
if(quad) {
- if(IsectPQ2Df(uv, faceuv[0], faceuv[1], faceuv[2], faceuv[3]))
+ if(isect_point_quad_v2(uv, faceuv[0], faceuv[1], faceuv[2], faceuv[3]))
return findex;
}
- else if(IsectPT2Df(uv, faceuv[0], faceuv[1], faceuv[2]))
+ else if(isect_point_tri_v2(uv, faceuv[0], faceuv[1], faceuv[2]))
return findex;
}
}
@@ -1678,7 +1678,7 @@ void psys_particle_on_dm(DerivedMesh *dm, int from, int index, int index_dmcache
if(nor) {
dm->getVertNo(dm,mapindex,nor);
- Normalize(nor);
+ normalize_v3(nor);
}
if(orco)
@@ -1686,7 +1686,7 @@ void psys_particle_on_dm(DerivedMesh *dm, int from, int index, int index_dmcache
if(ornor) {
dm->getVertNo(dm,mapindex,nor);
- Normalize(nor);
+ normalize_v3(nor);
}
if(utan && vtan) {
@@ -1711,8 +1711,8 @@ void psys_particle_on_dm(DerivedMesh *dm, int from, int index, int index_dmcache
if(nor)
VECCOPY(nor,tmpnor);
- Normalize(tmpnor);
- VecMulf(tmpnor,-foffset);
+ normalize_v3(tmpnor);
+ mul_v3_fl(tmpnor,-foffset);
VECADD(vec,vec,tmpnor);
}
else
@@ -1835,42 +1835,42 @@ static void do_prekink(ParticleKey *state, ParticleKey *par, float *par_rot, flo
if(par_rot)
QUATCOPY(q2,par_rot)
else
- vectoquat(par->vel,axis,(axis+1)%3, q2);
- QuatMulVecf(q2,vec);
- VecMulf(vec,amplitude);
+ vec_to_quat( q2,par->vel,axis,(axis+1)%3);
+ mul_qt_v3(q2,vec);
+ mul_v3_fl(vec,amplitude);
VECADD(state->co,state->co,vec);
VECSUB(vec,state->co,par->co);
if(t!=0.0)
- VecRotToQuat(par->vel,t,q1);
+ axis_angle_to_quat(q1,par->vel,t);
- QuatMulVecf(q1,vec);
+ mul_qt_v3(q1,vec);
VECADD(state->co,par->co,vec);
break;
case PART_KINK_RADIAL:
VECSUB(vec,state->co,par->co);
- Normalize(vec);
- VecMulf(vec,amplitude*(float)sin(t));
+ normalize_v3(vec);
+ mul_v3_fl(vec,amplitude*(float)sin(t));
VECADD(state->co,state->co,vec);
break;
case PART_KINK_WAVE:
vec[axis]=1.0;
if(obmat)
- Mat4Mul3Vecfl(obmat,vec);
+ mul_mat3_m4_v3(obmat,vec);
if(par_rot)
- QuatMulVecf(par_rot,vec);
+ mul_qt_v3(par_rot,vec);
- Projf(q1,vec,par->vel);
+ project_v3_v3v3(q1,vec,par->vel);
VECSUB(vec,vec,q1);
- Normalize(vec);
+ normalize_v3(vec);
- VecMulf(vec,amplitude*(float)sin(t));
+ mul_v3_fl(vec,amplitude*(float)sin(t));
VECADD(state->co,state->co,vec);
break;
@@ -1884,46 +1884,46 @@ static void do_prekink(ParticleKey *state, ParticleKey *par, float *par_rot, flo
if(par_rot)
QUATCOPY(q2,par_rot)
else
- vectoquat(par->vel,axis,(axis+1)%3,q2);
- QuatMulVecf(q2,y_vec);
- QuatMulVecf(q2,z_vec);
+ vec_to_quat(q2,par->vel,axis,(axis+1)%3);
+ mul_qt_v3(q2,y_vec);
+ mul_qt_v3(q2,z_vec);
VECSUB(vec_from_par,state->co,par->co);
VECCOPY(vec_one,vec_from_par);
- radius=Normalize(vec_one);
+ radius=normalize_v3(vec_one);
- inp_y=Inpf(y_vec,vec_one);
- inp_z=Inpf(z_vec,vec_one);
+ inp_y=dot_v3v3(y_vec,vec_one);
+ inp_z=dot_v3v3(z_vec,vec_one);
if(inp_y>0.5){
VECCOPY(state_co,y_vec);
- VecMulf(y_vec,amplitude*(float)cos(t));
- VecMulf(z_vec,amplitude/2.0f*(float)sin(2.0f*t));
+ mul_v3_fl(y_vec,amplitude*(float)cos(t));
+ mul_v3_fl(z_vec,amplitude/2.0f*(float)sin(2.0f*t));
}
else if(inp_z>0.0){
VECCOPY(state_co,z_vec);
- VecMulf(state_co,(float)sin(M_PI/3.0f));
+ mul_v3_fl(state_co,(float)sin(M_PI/3.0f));
VECADDFAC(state_co,state_co,y_vec,-0.5f);
- VecMulf(y_vec,-amplitude*(float)cos(t + M_PI/3.0f));
- VecMulf(z_vec,amplitude/2.0f*(float)cos(2.0f*t + M_PI/6.0f));
+ mul_v3_fl(y_vec,-amplitude*(float)cos(t + M_PI/3.0f));
+ mul_v3_fl(z_vec,amplitude/2.0f*(float)cos(2.0f*t + M_PI/6.0f));
}
else{
VECCOPY(state_co,z_vec);
- VecMulf(state_co,-(float)sin(M_PI/3.0f));
+ mul_v3_fl(state_co,-(float)sin(M_PI/3.0f));
VECADDFAC(state_co,state_co,y_vec,-0.5f);
- VecMulf(y_vec,amplitude*(float)-sin(t+M_PI/6.0f));
- VecMulf(z_vec,amplitude/2.0f*(float)-sin(2.0f*t+M_PI/3.0f));
+ mul_v3_fl(y_vec,amplitude*(float)-sin(t+M_PI/6.0f));
+ mul_v3_fl(z_vec,amplitude/2.0f*(float)-sin(2.0f*t+M_PI/3.0f));
}
- VecMulf(state_co,amplitude);
+ mul_v3_fl(state_co,amplitude);
VECADD(state_co,state_co,par->co);
VECSUB(vec_from_par,state->co,state_co);
- length=Normalize(vec_from_par);
- VecMulf(vec_from_par,MIN2(length,amplitude/2.0f));
+ length=normalize_v3(vec_from_par);
+ mul_v3_fl(vec_from_par,MIN2(length,amplitude/2.0f));
VECADD(state_co,par->co,y_vec);
VECADD(state_co,state_co,z_vec);
@@ -1934,7 +1934,7 @@ static void do_prekink(ParticleKey *state, ParticleKey *par, float *par_rot, flo
if(t<shape){
shape=t/shape;
shape=(float)sqrt((double)shape);
- VecLerpf(state->co,state->co,state_co,shape);
+ interp_v3_v3v3(state->co,state->co,state_co,shape);
}
else{
VECCOPY(state->co,state_co);
@@ -1958,7 +1958,7 @@ static void do_clump(ParticleKey *state, ParticleKey *par, float time, float clu
clump = -clumpfac*pa_clump*(float)pow(1.0-(double)time,(double)cpow);
else
clump = clumpfac*pa_clump*(float)pow((double)time,(double)cpow);
- VecLerpf(state->co,state->co,par->co,clump);
+ interp_v3_v3v3(state->co,state->co,par->co,clump);
}
}
void precalc_guides(ParticleSimulationData *sim, ListBase *effectors)
@@ -1990,7 +1990,7 @@ void precalc_guides(ParticleSimulationData *sim, ListBase *effectors)
VECSUB(efd.vec_to_point, state.co, eff->guide_loc);
VECCOPY(efd.nor, eff->guide_dir);
- efd.distance = VecLength(efd.vec_to_point);
+ efd.distance = len_v3(efd.vec_to_point);
VECCOPY(data->vec_to_point, efd.vec_to_point);
data->strength = effector_falloff(eff, &efd, &point, weights);
@@ -2037,33 +2037,33 @@ int do_guides(ListBase *effectors, ParticleKey *state, int index, float time)
return 0;
}
- Mat4MulVecfl(eff->ob->obmat, guidevec);
- Mat4Mul3Vecfl(eff->ob->obmat, guidedir);
+ mul_m4_v3(eff->ob->obmat, guidevec);
+ mul_mat3_m4_v3(eff->ob->obmat, guidedir);
- Normalize(guidedir);
+ normalize_v3(guidedir);
VECCOPY(vec_to_point, data->vec_to_point);
if(guidetime != 0.0){
/* curve direction */
- Crossf(temp, eff->guide_dir, guidedir);
- angle = Inpf(eff->guide_dir, guidedir)/(VecLength(eff->guide_dir));
+ cross_v3_v3v3(temp, eff->guide_dir, guidedir);
+ angle = dot_v3v3(eff->guide_dir, guidedir)/(len_v3(eff->guide_dir));
angle = saacos(angle);
- VecRotToQuat(temp, angle, rot2);
- QuatMulVecf(rot2, vec_to_point);
+ axis_angle_to_quat( rot2,temp, angle);
+ mul_qt_v3(rot2, vec_to_point);
/* curve tilt */
- VecRotToQuat(guidedir, guidevec[3] - eff->guide_loc[3], rot2);
- QuatMulVecf(rot2, vec_to_point);
+ axis_angle_to_quat( rot2,guidedir, guidevec[3] - eff->guide_loc[3]);
+ mul_qt_v3(rot2, vec_to_point);
}
/* curve taper */
if(cu->taperobj)
- VecMulf(vec_to_point, calc_taper(eff->scene, cu->taperobj, (int)(data->strength*guidetime*100.0), 100));
+ mul_v3_fl(vec_to_point, calc_taper(eff->scene, cu->taperobj, (int)(data->strength*guidetime*100.0), 100));
else{ /* curve size*/
if(cu->flag & CU_PATH_RADIUS) {
- VecMulf(vec_to_point, radius);
+ mul_v3_fl(vec_to_point, radius);
}
}
par.co[0] = par.co[1] = par.co[2] = 0.0f;
@@ -2081,13 +2081,13 @@ int do_guides(ListBase *effectors, ParticleKey *state, int index, float time)
if(totstrength != 0.0){
if(totstrength > 1.0)
- VecMulf(effect, 1.0f / totstrength);
+ mul_v3_fl(effect, 1.0f / totstrength);
CLAMP(totstrength, 0.0, 1.0);
//VECADD(effect,effect,pa_zero);
- VecLerpf(state->co, state->co, effect, totstrength);
+ interp_v3_v3v3(state->co, state->co, effect, totstrength);
- Normalize(veffect);
- VecMulf(veffect, VecLength(state->vel));
+ normalize_v3(veffect);
+ mul_v3_fl(veffect, len_v3(state->vel));
VECCOPY(state->vel, veffect);
return 1;
}
@@ -2102,7 +2102,7 @@ static void do_rough(float *loc, float mat[4][4], float t, float fac, float size
if((float)fabs((float)(-1.5+loc[0]+loc[1]+loc[2]))<1.5f*thres) return;
VECCOPY(rco,loc);
- VecMulf(rco,t);
+ mul_v3_fl(rco,t);
rough[0]=-1.0f+2.0f*BLI_gTurbulence(size, rco[0], rco[1], rco[2], 2,0,2);
rough[1]=-1.0f+2.0f*BLI_gTurbulence(size, rco[1], rco[2], rco[0], 2,0,2);
rough[2]=-1.0f+2.0f*BLI_gTurbulence(size, rco[2], rco[0], rco[1], 2,0,2);
@@ -2117,10 +2117,10 @@ static void do_rough_end(float *loc, float mat[4][4], float t, float fac, float
float roughfac;
roughfac=fac*(float)pow((double)t,shape);
- Vec2Copyf(rough,loc);
+ copy_v2_v2(rough,loc);
rough[0]=-1.0f+2.0f*rough[0];
rough[1]=-1.0f+2.0f*rough[1];
- Vec2Mulf(rough,roughfac);
+ mul_v2_fl(rough,roughfac);
VECADDFAC(state->co,state->co,mat[0],rough[0]);
VECADDFAC(state->co,state->co,mat[1],rough[1]);
@@ -2142,23 +2142,23 @@ static void do_path_effectors(ParticleSimulationData *sim, int i, ParticleCacheK
pd_point_from_particle(sim, sim->psys->particles+i, &eff_key, &epoint);
pdDoEffectors(sim->psys->effectors, sim->colliders, sim->psys->part->effector_weights, &epoint, force, NULL);
- VecMulf(force, effector*pow((float)k / (float)steps, 100.0f * sim->psys->part->eff_hair) / (float)steps);
+ mul_v3_fl(force, effector*pow((float)k / (float)steps, 100.0f * sim->psys->part->eff_hair) / (float)steps);
- VecAddf(force, force, vec);
+ add_v3_v3v3(force, force, vec);
- Normalize(force);
+ normalize_v3(force);
VECADDFAC(ca->co, (ca-1)->co, force, *length);
if(k < steps) {
- VecSubf(vec, (ca+1)->co, ca->co);
- *length = VecLength(vec);
+ sub_v3_v3v3(vec, (ca+1)->co, ca->co);
+ *length = len_v3(vec);
}
}
static int check_path_length(int k, ParticleCacheKey *keys, ParticleCacheKey *state, float max_length, float *cur_length, float length, float *dvec)
{
if(*cur_length + length > max_length){
- VecMulf(dvec, (max_length - *cur_length) / length);
+ mul_v3_fl(dvec, (max_length - *cur_length) / length);
VECADD(state->co, (state - 1)->co, dvec);
keys->steps = k;
/* something over the maximum step value */
@@ -2172,13 +2172,13 @@ static int check_path_length(int k, ParticleCacheKey *keys, ParticleCacheKey *st
static void offset_child(ChildParticle *cpa, ParticleKey *par, ParticleKey *child, float flat, float radius)
{
VECCOPY(child->co,cpa->fuv);
- VecMulf(child->co,radius);
+ mul_v3_fl(child->co,radius);
child->co[0]*=flat;
VECCOPY(child->vel,par->vel);
- QuatMulVecf(par->rot,child->co);
+ mul_qt_v3(par->rot,child->co);
QUATCOPY(child->rot,par->rot);
@@ -2247,14 +2247,14 @@ static void get_strand_normal(Material *ma, float *surfnor, float surfdist, floa
return;
if(ma->mode & MA_STR_SURFDIFF) {
- Crossf(cross, surfnor, nor);
- Crossf(nstrand, nor, cross);
+ cross_v3_v3v3(cross, surfnor, nor);
+ cross_v3_v3v3(nstrand, nor, cross);
blend= INPR(nstrand, surfnor);
CLAMP(blend, 0.0f, 1.0f);
- VecLerpf(vnor, nstrand, surfnor, blend);
- Normalize(vnor);
+ interp_v3_v3v3(vnor, nstrand, surfnor, blend);
+ normalize_v3(vnor);
}
else
VECCOPY(vnor, nor)
@@ -2262,8 +2262,8 @@ static void get_strand_normal(Material *ma, float *surfnor, float surfdist, floa
if(ma->strand_surfnor > 0.0f) {
if(ma->strand_surfnor > surfdist) {
blend= (ma->strand_surfnor - surfdist)/ma->strand_surfnor;
- VecLerpf(vnor, vnor, surfnor, blend);
- Normalize(vnor);
+ interp_v3_v3v3(vnor, vnor, surfnor, blend);
+ normalize_v3(vnor);
}
}
@@ -2440,7 +2440,7 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle
if(part->path_start==0.0f) {
/* we need to save the actual root position of the child for positioning it accurately to the surface of the emitter */
VECCOPY(cpa_1st,co);
- Mat4MulVecfl(ob->obmat,cpa_1st);
+ mul_m4_v3(ob->obmat,cpa_1st);
}
pa = psys->particles + cpa->parent;
@@ -2538,8 +2538,8 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle
do_path_effectors(&ctx->sim, cpa->pa[0], state, k, ctx->steps, keys->co, ptex.effector, 0.0f, ctx->cfra, &eff_length, eff_vec);
}
else {
- VecSubf(eff_vec,(state+1)->co,state->co);
- eff_length= VecLength(eff_vec);
+ sub_v3_v3v3(eff_vec,(state+1)->co,state->co);
+ eff_length= len_v3(eff_vec);
}
}
}
@@ -2599,17 +2599,17 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle
// }
// if(i<psys->totpart)
- // VecLerpf(state->co, (pcache[i] + k)->co, state->co, branchfac);
+ // interp_v3_v3v3(state->co, (pcache[i] + k)->co, state->co, branchfac);
// else
// /* this is not threadsafe, but should only happen for
// * branching particles particles, which are not threaded */
- // VecLerpf(state->co, (cache[i - psys->totpart] + k)->co, state->co, branchfac);
+ // interp_v3_v3v3(state->co, (cache[i - psys->totpart] + k)->co, state->co, branchfac);
//}
/* we have to correct velocity because of kink & clump */
if(k>1){
VECSUB((state-1)->vel,state->co,(state-2)->co);
- VecMulf((state-1)->vel,0.5);
+ mul_v3_fl((state-1)->vel,0.5);
if(ctx->ma && (part->draw & PART_DRAW_MAT_COL))
get_strand_normal(ctx->ma, ornor, cur_length, (state-1)->vel);
@@ -2841,9 +2841,9 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra)
/* dynamic hair is in object space */
/* keyed and baked are allready in global space */
if(hair_dm)
- Mat4MulVecfl(sim->ob->obmat, result.co);
+ mul_m4_v3(sim->ob->obmat, result.co);
else if(!keyed && !baked && !(psys->flag & PSYS_GLOBAL_HAIR))
- Mat4MulVecfl(hairmat, result.co);
+ mul_m4_v3(hairmat, result.co);
VECCOPY(ca->co, result.co);
VECCOPY(ca->col, col);
@@ -2851,8 +2851,8 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra)
/*--modify paths and calculate rotation & velocity--*/
- VecSubf(vec,(cache[p]+1)->co,cache[p]->co);
- length = VecLength(vec);
+ sub_v3_v3v3(vec,(cache[p]+1)->co,cache[p]->co);
+ length = len_v3(vec);
effector= 1.0f;
if(vg_effector)
@@ -2882,7 +2882,7 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra)
/* calculate initial tangent for incremental rotations */
VECSUB(tangent, ca->co, (ca - 1)->co);
VECCOPY(prev_tangent, tangent);
- Normalize(prev_tangent);
+ normalize_v3(prev_tangent);
/* First rotation is based on emitting face orientation. */
/* This is way better than having flipping rotations resulting */
@@ -2890,13 +2890,13 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra)
/* It's not an ideal solution though since it disregards the */
/* initial tangent, but taking that in to account will allow */
/* the possibility of flipping again. -jahka */
- Mat3ToQuat_is_ok(rotmat, (ca-1)->rot);
+ mat3_to_quat_is_ok( (ca-1)->rot,rotmat);
}
else {
VECSUB(tangent, ca->co, (ca - 1)->co);
- Normalize(tangent);
+ normalize_v3(tangent);
- cosangle= Inpf(tangent, prev_tangent);
+ cosangle= dot_v3v3(tangent, prev_tangent);
/* note we do the comparison on cosangle instead of
* angle, since floating point accuracy makes it give
@@ -2906,9 +2906,9 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra)
}
else {
angle= saacos(cosangle);
- Crossf(normal, prev_tangent, tangent);
- VecRotToQuat(normal, angle, q);
- QuatMul((ca - 1)->rot, q, (ca - 2)->rot);
+ cross_v3_v3v3(normal, prev_tangent, tangent);
+ axis_angle_to_quat( q,normal, angle);
+ mul_qt_qtqt((ca - 1)->rot, q, (ca - 2)->rot);
}
VECCOPY(prev_tangent, tangent);
@@ -3034,7 +3034,7 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf
/* non-hair points are allready in global space */
if(psys && !(psys->flag & PSYS_GLOBAL_HAIR)) {
- Mat4MulVecfl(hairmat, result.co);
+ mul_m4_v3(hairmat, result.co);
/* create rotations for proper creation of children */
if(k) {
@@ -3044,7 +3044,7 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf
/* calculate initial tangent for incremental rotations */
VECSUB(tangent, ca->co, (ca - 1)->co);
VECCOPY(prev_tangent, tangent);
- Normalize(prev_tangent);
+ normalize_v3(prev_tangent);
/* First rotation is based on emitting face orientation. */
/* This is way better than having flipping rotations resulting */
@@ -3052,13 +3052,13 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf
/* It's not an ideal solution though since it disregards the */
/* initial tangent, but taking that in to account will allow */
/* the possibility of flipping again. -jahka */
- Mat3ToQuat_is_ok(rotmat, (ca-1)->rot);
+ mat3_to_quat_is_ok( (ca-1)->rot,rotmat);
}
else {
VECSUB(tangent, ca->co, (ca - 1)->co);
- Normalize(tangent);
+ normalize_v3(tangent);
- cosangle= Inpf(tangent, prev_tangent);
+ cosangle= dot_v3v3(tangent, prev_tangent);
/* note we do the comparison on cosangle instead of
* angle, since floating point accuracy makes it give
@@ -3068,9 +3068,9 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf
}
else {
angle= saacos(cosangle);
- Crossf(normal, prev_tangent, tangent);
- VecRotToQuat(normal, angle, q);
- QuatMul((ca - 1)->rot, q, (ca - 2)->rot);
+ cross_v3_v3v3(normal, prev_tangent, tangent);
+ axis_angle_to_quat( q,normal, angle);
+ mul_qt_qtqt((ca - 1)->rot, q, (ca - 2)->rot);
}
VECCOPY(prev_tangent, tangent);
@@ -3094,13 +3094,13 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf
}
else{
keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time));
- VecLerpf(ca->col, sel_col, nosel_col, keytime);
+ interp_v3_v3v3(ca->col, sel_col, nosel_col, keytime);
}
}
else{
if((ekey + (pind.ekey[1] - point->keys))->flag & PEK_SELECT){
keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time));
- VecLerpf(ca->col, nosel_col, sel_col, keytime);
+ interp_v3_v3v3(ca->col, nosel_col, sel_col, keytime);
}
else{
VECCOPY(ca->col, nosel_col);
@@ -3144,12 +3144,12 @@ static void key_from_object(Object *ob, ParticleKey *key){
VECADD(key->vel,key->vel,key->co);
- Mat4MulVecfl(ob->obmat,key->co);
- Mat4MulVecfl(ob->obmat,key->vel);
- Mat4ToQuat(ob->obmat,q);
+ mul_m4_v3(ob->obmat,key->co);
+ mul_m4_v3(ob->obmat,key->vel);
+ mat4_to_quat(q,ob->obmat);
VECSUB(key->vel,key->vel,key->co);
- QuatMul(key->rot,q,key->rot);
+ mul_qt_qtqt(key->rot,q,key->rot);
}
#endif
@@ -3161,7 +3161,7 @@ static void triatomat(float *v1, float *v2, float *v3, float (*uv)[2], float mat
mat[3][3]= 1.0f;
/* first axis is the normal */
- CalcNormFloat(v1, v2, v3, mat[2]);
+ normal_tri_v3( mat[2],v1, v2, v3);
/* second axis along (1, 0) in uv space */
if(uv) {
@@ -3180,18 +3180,18 @@ static void triatomat(float *v1, float *v2, float *v3, float (*uv)[2], float mat
mat[1][0]= w1*(v2[0] - v1[0]) + w2*(v3[0] - v1[0]);
mat[1][1]= w1*(v2[1] - v1[1]) + w2*(v3[1] - v1[1]);
mat[1][2]= w1*(v2[2] - v1[2]) + w2*(v3[2] - v1[2]);
- Normalize(mat[1]);
+ normalize_v3(mat[1]);
}
else
mat[1][0]= mat[1][1]= mat[1][2]= 0.0f;
}
else {
- VecSubf(mat[1], v2, v1);
- Normalize(mat[1]);
+ sub_v3_v3v3(mat[1], v2, v1);
+ normalize_v3(mat[1]);
}
/* third as a cross product */
- Crossf(mat[0], mat[1], mat[2]);
+ cross_v3_v3v3(mat[0], mat[1], mat[2]);
}
static void psys_face_mat(Object *ob, DerivedMesh *dm, ParticleData *pa, float mat[][4], int orco)
@@ -3203,7 +3203,7 @@ static void psys_face_mat(Object *ob, DerivedMesh *dm, ParticleData *pa, float m
int i = pa->num_dmcache==DMCACHE_NOTFOUND ? pa->num : pa->num_dmcache;
- if (i==-1 || i >= dm->getNumFaces(dm)) { Mat4One(mat); return; }
+ if (i==-1 || i >= dm->getNumFaces(dm)) { unit_m4(mat); return; }
mface=dm->getFaceData(dm,i,CD_MFACE);
osface=dm->getFaceData(dm,i,CD_ORIGSPACE);
@@ -3252,8 +3252,8 @@ void psys_vec_rot_to_face(DerivedMesh *dm, ParticleData *pa, float *vec)
float mat[4][4];
psys_face_mat(0, dm, pa, mat, 0);
- Mat4Transp(mat); /* cheap inverse for rotation matrix */
- Mat4Mul3Vecfl(mat, vec);
+ transpose_m4(mat); /* cheap inverse for rotation matrix */
+ mul_mat3_m4_v3(mat, vec);
}
void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleData *pa, float hairmat[][4])
@@ -3262,20 +3262,20 @@ void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleDa
psys_mat_hair_to_object(ob, dm, from, pa, facemat);
- Mat4MulMat4(hairmat, facemat, ob->obmat);
+ mul_m4_m4m4(hairmat, facemat, ob->obmat);
}
/************************************************/
/* ParticleSettings handling */
/************************************************/
-void object_add_particle_system(Scene *scene, Object *ob)
+ModifierData *object_add_particle_system(Scene *scene, Object *ob, char *name)
{
ParticleSystem *psys;
ModifierData *md;
ParticleSystemModifierData *psmd;
if(!ob || ob->type != OB_MESH)
- return;
+ return NULL;
psys = ob->particlesystem.first;
for(; psys; psys=psys->next)
@@ -3293,7 +3293,11 @@ void object_add_particle_system(Scene *scene, Object *ob)
strcpy(psys->name, "ParticleSystem");
md= modifier_new(eModifierType_ParticleSystem);
- sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+
+ if(name) BLI_strncpy(md->name, name, sizeof(md->name));
+ else sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+ modifier_unique_name(&ob->modifiers, md);
+
psmd= (ParticleSystemModifierData*) md;
psmd->psys=psys;
BLI_addtail(&ob->modifiers, md);
@@ -3304,6 +3308,8 @@ void object_add_particle_system(Scene *scene, Object *ob)
DAG_scene_sort(scene);
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+
+ return md;
}
void object_remove_particle_system(Scene *scene, Object *ob)
{
@@ -3849,8 +3855,8 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey *
if(!keyed && !cached) {
if((pa->flag & PARS_REKEY)==0) {
psys_mat_hair_to_global(sim->ob, sim->psmd->dm, part->from, pa, hairmat);
- Mat4MulVecfl(hairmat, state->co);
- Mat4Mul3Vecfl(hairmat, state->vel);
+ mul_m4_v3(hairmat, state->co);
+ mul_mat3_m4_v3(hairmat, state->vel);
if(sim->psys->effectors && (part->flag & PART_CHILD_GUIDE)==0) {
do_guides(sim->psys->effectors, state, p, state->time);
@@ -3863,7 +3869,7 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey *
}
}
else if(totchild){
- //Mat4Invert(imat,ob->obmat);
+ //invert_m4_m4(imat,ob->obmat);
cpa=psys->child+p-totpart;
@@ -3902,7 +3908,7 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey *
/* we need to save the actual root position of the child for positioning it accurately to the surface of the emitter */
//VECCOPY(cpa_1st,co);
- //Mat4MulVecfl(ob->obmat,cpa_1st);
+ //mul_m4_v3(ob->obmat,cpa_1st);
pa = psys->particles + cpa->parent;
@@ -3979,22 +3985,22 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey *
/* try to estimate correct velocity */
if(vel){
ParticleKey tstate;
- float length = VecLength(state->vel);
+ float length = len_v3(state->vel);
if(t>=0.001f){
tstate.time=t-0.001f;
psys_get_particle_on_path(sim,p,&tstate,0);
VECSUB(state->vel,state->co,tstate.co);
- Normalize(state->vel);
+ normalize_v3(state->vel);
}
else{
tstate.time=t+0.001f;
psys_get_particle_on_path(sim,p,&tstate,0);
VECSUB(state->vel,tstate.co,state->co);
- Normalize(state->vel);
+ normalize_v3(state->vel);
}
- VecMulf(state->vel, length);
+ mul_v3_fl(state->vel, length);
}
}
}
@@ -4101,16 +4107,16 @@ int psys_get_particle_state(ParticleSimulationData *sim, int p, ParticleKey *sta
keytime = (state->time - keys[1].time) / dfra;
/* convert velocity to timestep size */
- VecMulf(keys[1].vel, dfra * timestep);
- VecMulf(keys[2].vel, dfra * timestep);
+ mul_v3_fl(keys[1].vel, dfra * timestep);
+ mul_v3_fl(keys[2].vel, dfra * timestep);
psys_interpolate_particle(-1, keys, keytime, state, 1);
/* convert back to real velocity */
- VecMulf(state->vel, 1.0f / (dfra * timestep));
+ mul_v3_fl(state->vel, 1.0f / (dfra * timestep));
- VecLerpf(state->ave, keys[1].ave, keys[2].ave, keytime);
- QuatInterpol(state->rot, keys[1].rot, keys[2].rot, keytime);
+ interp_v3_v3v3(state->ave, keys[1].ave, keys[2].ave, keytime);
+ interp_qt_qtqt(state->rot, keys[1].rot, keys[2].rot, keytime);
}
}
else {
@@ -4184,8 +4190,8 @@ void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa
float loc[3], nor[3], vec[3], side[3], len, obrotmat[4][4], qmat[4][4];
float xvec[3] = {-1.0, 0.0, 0.0}, q[4];
- VecSubf(vec, (cache+cache->steps-1)->co, cache->co);
- len= Normalize(vec);
+ sub_v3_v3v3(vec, (cache+cache->steps-1)->co, cache->co);
+ len= normalize_v3(vec);
if(pa)
psys_particle_on_emitter(psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,nor,0,0,0,0);
@@ -4198,17 +4204,17 @@ void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa
if(!pa)
pa= psys->particles+cpa->pa[0];
- vectoquat(xvec, ob->trackflag, ob->upflag, q);
- QuatToMat4(q, obrotmat);
+ vec_to_quat( q,xvec, ob->trackflag, ob->upflag);
+ quat_to_mat4( obrotmat,q);
obrotmat[3][3]= 1.0f;
- QuatToMat4(pa->state.rot, qmat);
- Mat4MulMat4(mat, obrotmat, qmat);
+ quat_to_mat4( qmat,pa->state.rot);
+ mul_m4_m4m4(mat, obrotmat, qmat);
}
else {
/* make sure that we get a proper side vector */
- if(fabs(Inpf(nor,vec))>0.999999) {
- if(fabs(Inpf(nor,xvec))>0.999999) {
+ if(fabs(dot_v3v3(nor,vec))>0.999999) {
+ if(fabs(dot_v3v3(nor,xvec))>0.999999) {
nor[0] = 0.0f;
nor[1] = 1.0f;
nor[2] = 0.0f;
@@ -4219,11 +4225,11 @@ void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa
nor[2] = 0.0f;
}
}
- Crossf(side, nor, vec);
- Normalize(side);
- Crossf(nor, vec, side);
+ cross_v3_v3v3(side, nor, vec);
+ normalize_v3(side);
+ cross_v3_v3v3(nor, vec, side);
- Mat4One(mat);
+ unit_m4(mat);
VECCOPY(mat[0], vec);
VECCOPY(mat[1], side);
VECCOPY(mat[2], nor);
@@ -4244,62 +4250,62 @@ void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3]
if(bb->lock && (bb->align == PART_BB_VIEW)) {
VECCOPY(xvec, bb->ob->obmat[0]);
- Normalize(xvec);
+ normalize_v3(xvec);
VECCOPY(yvec, bb->ob->obmat[1]);
- Normalize(yvec);
+ normalize_v3(yvec);
VECCOPY(zvec, bb->ob->obmat[2]);
- Normalize(zvec);
+ normalize_v3(zvec);
}
else if(bb->align == PART_BB_VEL) {
float temp[3];
VECCOPY(temp, bb->vel);
- Normalize(temp);
+ normalize_v3(temp);
VECSUB(zvec, bb->ob->obmat[3], bb->vec);
if(bb->lock) {
- float fac = -Inpf(zvec, temp);
+ float fac = -dot_v3v3(zvec, temp);
VECADDFAC(zvec, zvec, temp, fac);
}
- Normalize(zvec);
+ normalize_v3(zvec);
- Crossf(xvec,temp,zvec);
- Normalize(xvec);
+ cross_v3_v3v3(xvec,temp,zvec);
+ normalize_v3(xvec);
- Crossf(yvec,zvec,xvec);
+ cross_v3_v3v3(yvec,zvec,xvec);
}
else {
VECSUB(zvec, bb->ob->obmat[3], bb->vec);
if(bb->lock)
zvec[bb->align] = 0.0f;
- Normalize(zvec);
+ normalize_v3(zvec);
if(bb->align < PART_BB_VIEW)
- Crossf(xvec, onevec, zvec);
+ cross_v3_v3v3(xvec, onevec, zvec);
else
- Crossf(xvec, bb->ob->obmat[1], zvec);
- Normalize(xvec);
+ cross_v3_v3v3(xvec, bb->ob->obmat[1], zvec);
+ normalize_v3(xvec);
- Crossf(yvec,zvec,xvec);
+ cross_v3_v3v3(yvec,zvec,xvec);
}
VECCOPY(tvec, xvec);
VECCOPY(tvec2, yvec);
- VecMulf(xvec, cos(bb->tilt * (float)M_PI));
- VecMulf(tvec2, sin(bb->tilt * (float)M_PI));
+ mul_v3_fl(xvec, cos(bb->tilt * (float)M_PI));
+ mul_v3_fl(tvec2, sin(bb->tilt * (float)M_PI));
VECADD(xvec, xvec, tvec2);
- VecMulf(yvec, cos(bb->tilt * (float)M_PI));
- VecMulf(tvec, -sin(bb->tilt * (float)M_PI));
+ mul_v3_fl(yvec, cos(bb->tilt * (float)M_PI));
+ mul_v3_fl(tvec, -sin(bb->tilt * (float)M_PI));
VECADD(yvec, yvec, tvec);
- VecMulf(xvec, bb->size);
- VecMulf(yvec, bb->size);
+ mul_v3_fl(xvec, bb->size);
+ mul_v3_fl(yvec, bb->size);
VECADDFAC(center, bb->vec, xvec, bb->offset[0]);
VECADDFAC(center, center, yvec, bb->offset[1]);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index d66c990cbe1..809b5f2090c 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -54,7 +54,7 @@
#include "BLI_rand.h"
#include "BLI_jitter.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_kdtree.h"
#include "BLI_kdopbvh.h"
@@ -405,7 +405,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys)
min[2]-=d/2.0f;
for(i=0,mv=mvert; i<totvert; i++,mv++){
- VecSubf(vec,mv->co,min);
+ sub_v3_v3v3(vec,mv->co,min);
vec[0]/=delta[0];
vec[1]/=delta[1];
vec[2]/=delta[2];
@@ -447,7 +447,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys)
VECCOPY(v2,mvert[mface->v2].co);
VECCOPY(v3,mvert[mface->v3].co);
- if(AxialLineIntersectsTriangle(a,co1, co2, v2, v3, v1, &lambda)){
+ if(isect_axial_line_tri_v3(a,co1, co2, v2, v3, v1, &lambda)){
if(from==PART_FROM_FACE)
(pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST;
else /* store number of intersections */
@@ -457,7 +457,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys)
if(mface->v4){
VECCOPY(v4,mvert[mface->v4].co);
- if(AxialLineIntersectsTriangle(a,co1, co2, v4, v1, v3, &lambda)){
+ if(isect_axial_line_tri_v3(a,co1, co2, v4, v1, v3, &lambda)){
if(from==PART_FROM_FACE)
(pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST;
else
@@ -577,10 +577,10 @@ static void psys_uv_to_w(float u, float v, int quad, float *w)
if(quad) {
vert[3][0]= 0.0f; vert[3][1]= 1.0f; vert[3][2]= 0.0f;
- MeanValueWeights(vert, 4, co, w);
+ interp_weights_poly_v3( w,vert, 4, co);
}
else {
- MeanValueWeights(vert, 3, co, w);
+ interp_weights_poly_v3( w,vert, 3, co);
w[3]= 0.0f;
}
}
@@ -669,8 +669,8 @@ static void psys_thread_distribute_particle(ParticleThread *thread, ParticleData
psys_interpolate_face(mvert,mface,0,0,pa->fuv,co1,nor,0,0,0,0);
- Normalize(nor);
- VecMulf(nor,-100.0);
+ normalize_v3(nor);
+ mul_v3_fl(nor,-100.0);
VECADD(co2,co1,nor);
@@ -684,7 +684,7 @@ static void psys_thread_distribute_particle(ParticleThread *thread, ParticleData
v2=mvert[mface->v2].co;
v3=mvert[mface->v3].co;
- if(LineIntersectsTriangle(co1, co2, v2, v3, v1, &cur_d, 0)){
+ if(isect_line_tri_v3(co1, co2, v2, v3, v1, &cur_d, 0)){
if(cur_d<min_d){
min_d=cur_d;
pa->foffset=cur_d*50.0f; /* to the middle of volume */
@@ -694,7 +694,7 @@ static void psys_thread_distribute_particle(ParticleThread *thread, ParticleData
if(mface->v4){
v4=mvert[mface->v4].co;
- if(LineIntersectsTriangle(co1, co2, v4, v1, v3, &cur_d, 0)){
+ if(isect_line_tri_v3(co1, co2, v4, v1, v3, &cur_d, 0)){
if(cur_d<min_d){
min_d=cur_d;
pa->foffset=cur_d*50.0f; /* to the middle of volume */
@@ -776,18 +776,18 @@ static void psys_thread_distribute_particle(ParticleThread *thread, ParticleData
// int min_seam=0, near_vert=0;
// /* find closest seam */
// for(i=0; i<ctx->totseam; i++, seam++){
- // VecSubf(temp,co1,seam->v0);
- // inp=Inpf(temp,seam->dir)/seam->length2;
+ // sub_v3_v3v3(temp,co1,seam->v0);
+ // inp=dot_v3v3(temp,seam->dir)/seam->length2;
// if(inp<0.0f){
- // cur_len=VecLenf(co1,seam->v0);
+ // cur_len=len_v3v3(co1,seam->v0);
// }
// else if(inp>1.0f){
- // cur_len=VecLenf(co1,seam->v1);
+ // cur_len=len_v3v3(co1,seam->v1);
// }
// else{
- // VecCopyf(temp2,seam->dir);
- // VecMulf(temp2,inp);
- // cur_len=VecLenf(temp,temp2);
+ // copy_v3_v3(temp2,seam->dir);
+ // mul_v3_fl(temp2,inp);
+ // cur_len=len_v3v3(temp,temp2);
// }
// if(cur_len<min_len){
// min_len=cur_len;
@@ -799,27 +799,27 @@ static void psys_thread_distribute_particle(ParticleThread *thread, ParticleData
// }
// seam=ctx->seams+min_seam;
//
- // VecCopyf(temp,seam->v0);
+ // copy_v3_v3(temp,seam->v0);
//
// if(near_vert){
// if(near_vert==-1)
- // VecSubf(tan,co1,seam->v0);
+ // sub_v3_v3v3(tan,co1,seam->v0);
// else{
- // VecSubf(tan,co1,seam->v1);
- // VecCopyf(temp,seam->v1);
+ // sub_v3_v3v3(tan,co1,seam->v1);
+ // copy_v3_v3(temp,seam->v1);
// }
- // Normalize(tan);
+ // normalize_v3(tan);
// }
// else{
- // VecCopyf(tan,seam->tan);
- // VecSubf(temp2,co1,temp);
- // if(Inpf(tan,temp2)<0.0f)
- // VecNegf(tan);
+ // copy_v3_v3(tan,seam->tan);
+ // sub_v3_v3v3(temp2,co1,temp);
+ // if(dot_v3v3(tan,temp2)<0.0f)
+ // negate_v3(tan);
// }
// for(w=0; w<maxw; w++){
- // VecSubf(temp2,ptn[w].co,temp);
- // if(Inpf(tan,temp2)<0.0f){
+ // sub_v3_v3v3(temp2,ptn[w].co,temp);
+ // if(dot_v3v3(tan,temp2)<0.0f){
// parent[w]=-1;
// pweight[w]=0.0f;
// }
@@ -989,12 +989,12 @@ static int psys_threads_init_distribution(ParticleThread *threads, Scene *scene,
// for(p=0, ed=medge; p<totedge; p++,ed++){
// if(ed->flag&ME_SEAM){
- // VecCopyf(cur_seam->v0,(mvert+ed->v1)->co);
- // VecCopyf(cur_seam->v1,(mvert+ed->v2)->co);
+ // copy_v3_v3(cur_seam->v0,(mvert+ed->v1)->co);
+ // copy_v3_v3(cur_seam->v1,(mvert+ed->v2)->co);
- // VecSubf(cur_seam->dir,cur_seam->v1,cur_seam->v0);
+ // sub_v3_v3v3(cur_seam->dir,cur_seam->v1,cur_seam->v0);
- // cur_seam->length2=VecLength(cur_seam->dir);
+ // cur_seam->length2=len_v3(cur_seam->dir);
// cur_seam->length2*=cur_seam->length2;
// temp[0]=(float)((mvert+ed->v1)->no[0]);
@@ -1004,12 +1004,12 @@ static int psys_threads_init_distribution(ParticleThread *threads, Scene *scene,
// temp2[1]=(float)((mvert+ed->v2)->no[1]);
// temp2[2]=(float)((mvert+ed->v2)->no[2]);
- // VecAddf(cur_seam->nor,temp,temp2);
- // Normalize(cur_seam->nor);
+ // add_v3_v3v3(cur_seam->nor,temp,temp2);
+ // normalize_v3(cur_seam->nor);
- // Crossf(cur_seam->tan,cur_seam->dir,cur_seam->nor);
+ // cross_v3_v3v3(cur_seam->tan,cur_seam->dir,cur_seam->nor);
- // Normalize(cur_seam->tan);
+ // normalize_v3(cur_seam->tan);
// cur_seam++;
// }
@@ -1035,7 +1035,7 @@ static int psys_threads_init_distribution(ParticleThread *threads, Scene *scene,
cpa->fuv[0]=2.0f*BLI_frand()-1.0f;
cpa->fuv[1]=2.0f*BLI_frand()-1.0f;
cpa->fuv[2]=2.0f*BLI_frand()-1.0f;
- length=VecLength(cpa->fuv);
+ length=len_v3(cpa->fuv);
}
cpa->num=-1;
@@ -1176,10 +1176,10 @@ static int psys_threads_init_distribution(ParticleThread *threads, Scene *scene,
v4= (MVert*)dm->getVertData(dm,mf->v4,CD_MVERT);
VECCOPY(co4, v4->co);
}
- cur= AreaQ3Dfl(co1, co2, co3, co4);
+ cur= area_quad_v3(co1, co2, co3, co4);
}
else
- cur= AreaT3Dfl(co1, co2, co3);
+ cur= area_tri_v3(co1, co2, co3);
if(cur>maxweight)
maxweight=cur;
@@ -1682,7 +1682,7 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
r_rot[1] = 2.0f * (PSYS_FRAND(p + 17) - 0.5f);
r_rot[2] = 2.0f * (PSYS_FRAND(p + 18) - 0.5f);
r_rot[3] = 2.0f * (PSYS_FRAND(p + 19) - 0.5f);
- NormalQuat(r_rot);
+ normalize_qt(r_rot);
r_phase = PSYS_FRAND(p + 20);
@@ -1699,15 +1699,15 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
psys_get_particle_state(&tsim, pa->num, &state, 1);
psys_get_from_key(&state, loc, nor, rot, 0);
- QuatMulVecf(rot, vtan);
- QuatMulVecf(rot, utan);
+ mul_qt_v3(rot, vtan);
+ mul_qt_v3(rot, utan);
VECCOPY(p_vel, state.vel);
- speed=Normalize(p_vel);
- VecMulf(p_vel, Inpf(r_vel, p_vel));
+ speed=normalize_v3(p_vel);
+ mul_v3_fl(p_vel, dot_v3v3(r_vel, p_vel));
VECSUB(p_vel, r_vel, p_vel);
- Normalize(p_vel);
- VecMulf(p_vel, speed);
+ normalize_v3(p_vel);
+ mul_v3_fl(p_vel, speed);
VECCOPY(pa->fuv, loc); /* abusing pa->fuv (not used for "from particle") for storing emit location */
}
@@ -1731,46 +1731,46 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
/* particles live in global space so */
/* let's convert: */
/* -location */
- Mat4MulVecfl(ob->obmat,loc);
+ mul_m4_v3(ob->obmat,loc);
/* -normal */
- Mat4Mul3Vecfl(ob->obmat,nor);
- Normalize(nor);
+ mul_mat3_m4_v3(ob->obmat,nor);
+ normalize_v3(nor);
/* -tangent */
if(part->tanfac!=0.0){
//float phase=vg_rot?2.0f*(psys_particle_value_from_verts(sim->psmd->dm,part->from,pa,vg_rot)-0.5f):0.0f;
float phase=0.0f;
- VecMulf(vtan,-(float)cos(M_PI*(part->tanphase+phase)));
+ mul_v3_fl(vtan,-(float)cos(M_PI*(part->tanphase+phase)));
fac=-(float)sin(M_PI*(part->tanphase+phase));
VECADDFAC(vtan,vtan,utan,fac);
- Mat4Mul3Vecfl(ob->obmat,vtan);
+ mul_mat3_m4_v3(ob->obmat,vtan);
VECCOPY(utan,nor);
- VecMulf(utan,Inpf(vtan,nor));
+ mul_v3_fl(utan,dot_v3v3(vtan,nor));
VECSUB(vtan,vtan,utan);
- Normalize(vtan);
+ normalize_v3(vtan);
}
/* -velocity */
if(part->randfac!=0.0){
- Mat4Mul3Vecfl(ob->obmat,r_vel);
- Normalize(r_vel);
+ mul_mat3_m4_v3(ob->obmat,r_vel);
+ normalize_v3(r_vel);
}
/* -angular velocity */
if(part->avemode==PART_AVE_RAND){
- Mat4Mul3Vecfl(ob->obmat,r_ave);
- Normalize(r_ave);
+ mul_mat3_m4_v3(ob->obmat,r_ave);
+ normalize_v3(r_ave);
}
/* -rotation */
if(part->randrotfac != 0.0f){
- Mat4ToQuat(ob->obmat,rot);
- QuatMul(r_rot,r_rot,rot);
+ mat4_to_quat(rot,ob->obmat);
+ mul_qt_qtqt(r_rot,r_rot,rot);
}
}
@@ -1785,8 +1785,8 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
/* boids store direction in ave */
if(fabs(nor[2])==1.0f) {
- VecSubf(pa->state.ave, loc, ob->obmat[3]);
- Normalize(pa->state.ave);
+ sub_v3_v3v3(pa->state.ave, loc, ob->obmat[3]);
+ normalize_v3(pa->state.ave);
}
else {
VECCOPY(pa->state.ave, nor);
@@ -1799,17 +1799,17 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
bpa->gravity[2] = sim->scene->physics_settings.gravity[2];
/* calculate rotation matrix */
- Projf(dvec, r_vel, pa->state.ave);
- VecSubf(mat[0], pa->state.ave, dvec);
- Normalize(mat[0]);
+ project_v3_v3v3(dvec, r_vel, pa->state.ave);
+ sub_v3_v3v3(mat[0], pa->state.ave, dvec);
+ normalize_v3(mat[0]);
VECCOPY(mat[2], r_vel);
- VecMulf(mat[2], -1.0f);
- Normalize(mat[2]);
- Crossf(mat[1], mat[2], mat[0]);
+ mul_v3_fl(mat[2], -1.0f);
+ normalize_v3(mat[2]);
+ cross_v3_v3v3(mat[1], mat[2], mat[0]);
/* apply rotation */
- Mat3ToQuat_is_ok(mat, q);
- QuatCopy(pa->state.rot, q);
+ mat3_to_quat_is_ok( q,mat);
+ copy_qt_qt(pa->state.rot, q);
bpa->data.health = part->boids->health;
bpa->data.mode = eBoidMode_InAir;
@@ -1828,7 +1828,7 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
/* *emitter velocity */
if(dtime!=0.0 && part->obfac!=0.0){
VECSUB(vel,loc,pa->state.co);
- VecMulf(vel,part->obfac/dtime);
+ mul_v3_fl(vel,part->obfac/dtime);
}
/* *emitter normal */
@@ -1843,17 +1843,17 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
/* *emitter object orientation */
if(part->ob_vel[0]!=0.0) {
VECCOPY(vec, ob->obmat[0]);
- Normalize(vec);
+ normalize_v3(vec);
VECADDFAC(vel, vel, vec, part->ob_vel[0]);
}
if(part->ob_vel[1]!=0.0) {
VECCOPY(vec, ob->obmat[1]);
- Normalize(vec);
+ normalize_v3(vec);
VECADDFAC(vel, vel, vec, part->ob_vel[1]);
}
if(part->ob_vel[2]!=0.0) {
VECCOPY(vec, ob->obmat[2]);
- Normalize(vec);
+ normalize_v3(vec);
VECADDFAC(vel, vel, vec, part->ob_vel[2]);
}
@@ -1874,7 +1874,7 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
// ptex.ivel*=icu->curval;
//}
- VecMulf(vel,ptex.ivel);
+ mul_v3_fl(vel,ptex.ivel);
VECCOPY(pa->state.vel,vel);
@@ -1889,10 +1889,10 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
/* create vector into which rotation is aligned */
switch(part->rotmode){
case PART_ROT_NOR:
- VecCopyf(rot_vec, nor);
+ copy_v3_v3(rot_vec, nor);
break;
case PART_ROT_VEL:
- VecCopyf(rot_vec, vel);
+ copy_v3_v3(rot_vec, vel);
break;
case PART_ROT_GLOB_X:
case PART_ROT_GLOB_Y:
@@ -1902,28 +1902,28 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
case PART_ROT_OB_X:
case PART_ROT_OB_Y:
case PART_ROT_OB_Z:
- VecCopyf(rot_vec, ob->obmat[part->rotmode - PART_ROT_OB_X]);
+ copy_v3_v3(rot_vec, ob->obmat[part->rotmode - PART_ROT_OB_X]);
break;
}
/* create rotation quat */
- VecNegf(rot_vec);
- vectoquat(rot_vec, OB_POSX, OB_POSZ, q2);
+ negate_v3(rot_vec);
+ vec_to_quat( q2,rot_vec, OB_POSX, OB_POSZ);
/* randomize rotation quat */
if(part->randrotfac!=0.0f)
- QuatInterpol(rot, q2, r_rot, part->randrotfac);
+ interp_qt_qtqt(rot, q2, r_rot, part->randrotfac);
else
- QuatCopy(rot,q2);
+ copy_qt_qt(rot,q2);
/* rotation phase */
phasefac = part->phasefac;
if(part->randphasefac != 0.0f)
phasefac += part->randphasefac * r_phase;
- VecRotToQuat(x_vec, phasefac*(float)M_PI, q_phase);
+ axis_angle_to_quat( q_phase,x_vec, phasefac*(float)M_PI);
/* combine base rotation & phase */
- QuatMul(pa->state.rot, rot, q_phase);
+ mul_qt_qtqt(pa->state.rot, rot, q_phase);
}
/* -angular velocity */
@@ -1939,13 +1939,13 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
VECCOPY(pa->state.ave,r_ave);
break;
}
- Normalize(pa->state.ave);
- VecMulf(pa->state.ave,part->avefac);
+ normalize_v3(pa->state.ave);
+ mul_v3_fl(pa->state.ave,part->avefac);
//icu=find_ipocurve(psys->part->ipo,PART_EMIT_AVE);
//if(icu){
// calc_icu(icu,100*((pa->time-part->sta)/(part->end-part->sta)));
- // VecMulf(pa->state.ave,icu->curval);
+ // mul_v3_fl(pa->state.ave,icu->curval);
//}
}
}
@@ -2157,7 +2157,7 @@ static void set_keyed_keys(ParticleSimulationData *sim)
// }
// }
// else{
-// dist=VecLenf(pa->state.co, re->state.co);
+// dist=len_v3v3(pa->state.co, re->state.co);
// if(dist <= re->size){
// if(pa->alive==PARS_UNBORN){
// pa->time=re->time;
@@ -2168,12 +2168,12 @@ static void set_keyed_keys(ParticleSimulationData *sim)
// float vec[3];
// VECSUB(vec,pa->state.co, re->state.co);
// if(birth==0)
-// VecMulf(vec,(float)pow(1.0f-dist/re->size,part->reactshape));
+// mul_v3_fl(vec,(float)pow(1.0f-dist/re->size,part->reactshape));
// VECADDFAC(pa->state.vel,pa->state.vel,vec,part->reactfac);
// VECADDFAC(pa->state.vel,pa->state.vel,re->state.vel,part->partfac);
// }
// if(birth)
-// VecMulf(pa->state.vel,(float)pow(1.0f-dist/re->size,part->reactshape));
+// mul_v3_fl(pa->state.vel,(float)pow(1.0f-dist/re->size,part->reactshape));
// }
// }
// }
@@ -2287,6 +2287,9 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
case PART_INT_RK4:
steps=4;
break;
+ case PART_INT_VERLET:
+ steps=1;
+ break;
}
copy_particle_key(states,&pa->state,1);
@@ -2301,7 +2304,7 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
/* calculate air-particle interaction */
if(part->dragfac!=0.0f){
- fac=-part->dragfac*pa->size*pa->size*VecLength(states[i].vel);
+ fac=-part->dragfac*pa->size*pa->size*len_v3(states[i].vel);
VECADDFAC(force,force,states[i].vel,fac);
}
@@ -2313,7 +2316,7 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
}
/* force to acceleration*/
- VecMulf(force,1.0f/pa_mass);
+ mul_v3_fl(force,1.0f/pa_mass);
/* add global acceleration (gravitation) */
if(sim->scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY
@@ -2321,7 +2324,7 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
&& (part->type != PART_HAIR || part->effector_weights->flag & EFF_WEIGHT_DO_HAIR)) {
float gravity[3];
VECCOPY(gravity, sim->scene->physics_settings.gravity);
- VecMulf(gravity, part->effector_weights->global_gravity);
+ mul_v3_fl(gravity, part->effector_weights->global_gravity);
VECADD(force,force,gravity);
}
@@ -2348,9 +2351,9 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
switch(i){
case 0:
VECCOPY(dx[0],states->vel);
- VecMulf(dx[0],dtime);
+ mul_v3_fl(dx[0],dtime);
VECCOPY(dv[0],force);
- VecMulf(dv[0],dtime);
+ mul_v3_fl(dv[0],dtime);
VECADDFAC(states[1].co,states->co,dx[0],0.5f);
VECADDFAC(states[1].vel,states->vel,dv[0],0.5f);
@@ -2358,18 +2361,18 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
break;
case 1:
VECADDFAC(dx[1],states->vel,dv[0],0.5f);
- VecMulf(dx[1],dtime);
+ mul_v3_fl(dx[1],dtime);
VECCOPY(dv[1],force);
- VecMulf(dv[1],dtime);
+ mul_v3_fl(dv[1],dtime);
VECADDFAC(states[2].co,states->co,dx[1],0.5f);
VECADDFAC(states[2].vel,states->vel,dv[1],0.5f);
break;
case 2:
VECADDFAC(dx[2],states->vel,dv[1],0.5f);
- VecMulf(dx[2],dtime);
+ mul_v3_fl(dx[2],dtime);
VECCOPY(dv[2],force);
- VecMulf(dv[2],dtime);
+ mul_v3_fl(dv[2],dtime);
VECADD(states[3].co,states->co,dx[2]);
VECADD(states[3].vel,states->vel,dv[2]);
@@ -2377,9 +2380,9 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
break;
case 3:
VECADD(dx[3],states->vel,dv[2]);
- VecMulf(dx[3],dtime);
+ mul_v3_fl(dx[3],dtime);
VECCOPY(dv[3],force);
- VecMulf(dv[3],dtime);
+ mul_v3_fl(dv[3],dtime);
VECADDFAC(pa->state.co,states->co,dx[0],1.0f/6.0f);
VECADDFAC(pa->state.co,pa->state.co,dx[1],1.0f/3.0f);
@@ -2392,12 +2395,19 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
VECADDFAC(pa->state.vel,pa->state.vel,dv[3],1.0f/6.0f);
}
break;
+ case PART_INT_VERLET: /* Verlet integration */
+ VECADDFAC(pa->state.vel,pa->state.vel,force,dtime);
+ VECADDFAC(pa->state.co,pa->state.co,pa->state.vel,dtime);
+
+ VECSUB(pa->state.vel,pa->state.co,pa->prev_state.co);
+ mul_v3_fl(pa->state.vel,1.0f/dtime);
+ break;
}
}
/* damp affects final velocity */
if(part->dampfac!=0.0)
- VecMulf(pa->state.vel,1.0f-part->dampfac);
+ mul_v3_fl(pa->state.vel,1.0f-part->dampfac);
VECCOPY(pa->state.ave, states->ave);
@@ -2414,7 +2424,7 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
VECCOPY(pa->state.co,tkey.co);
/* guides don't produce valid velocity */
VECSUB(pa->state.vel,tkey.co,pa->prev_state.co);
- VecMulf(pa->state.vel,1.0f/dtime);
+ mul_v3_fl(pa->state.vel,1.0f/dtime);
pa->state.time=tkey.time;
}
}
@@ -2426,35 +2436,35 @@ static void rotate_particle(ParticleSettings *part, ParticleData *pa, float dfra
if((part->flag & PART_ROT_DYN)==0){
if(part->avemode==PART_AVE_SPIN){
float angle;
- float len1 = VecLength(pa->prev_state.vel);
- float len2 = VecLength(pa->state.vel);
+ float len1 = len_v3(pa->prev_state.vel);
+ float len2 = len_v3(pa->state.vel);
if(len1==0.0f || len2==0.0f)
pa->state.ave[0]=pa->state.ave[1]=pa->state.ave[2]=0.0f;
else{
- Crossf(pa->state.ave,pa->prev_state.vel,pa->state.vel);
- Normalize(pa->state.ave);
- angle=Inpf(pa->prev_state.vel,pa->state.vel)/(len1*len2);
- VecMulf(pa->state.ave,saacos(angle)/dtime);
+ cross_v3_v3v3(pa->state.ave,pa->prev_state.vel,pa->state.vel);
+ normalize_v3(pa->state.ave);
+ angle=dot_v3v3(pa->prev_state.vel,pa->state.vel)/(len1*len2);
+ mul_v3_fl(pa->state.ave,saacos(angle)/dtime);
}
- VecRotToQuat(pa->state.vel,dtime*part->avefac,rot2);
+ axis_angle_to_quat(rot2,pa->state.vel,dtime*part->avefac);
}
}
- rotfac=VecLength(pa->state.ave);
- if(rotfac==0.0){ /* QuatOne (in VecRotToQuat) doesn't give unit quat [1,0,0,0]?? */
+ rotfac=len_v3(pa->state.ave);
+ if(rotfac==0.0){ /* unit_qt(in VecRotToQuat) doesn't give unit quat [1,0,0,0]?? */
rot1[0]=1.0;
rot1[1]=rot1[2]=rot1[3]=0;
}
else{
- VecRotToQuat(pa->state.ave,rotfac*dtime,rot1);
+ axis_angle_to_quat(rot1,pa->state.ave,rotfac*dtime);
}
- QuatMul(pa->state.rot,rot1,pa->prev_state.rot);
- QuatMul(pa->state.rot,rot2,pa->state.rot);
+ mul_qt_qtqt(pa->state.rot,rot1,pa->prev_state.rot);
+ mul_qt_qtqt(pa->state.rot,rot2,pa->state.rot);
/* keep rotation quat in good health */
- NormalQuat(pa->state.rot);
+ normalize_qt(pa->state.rot);
}
/* convert from triangle barycentric weights to quad mean value weights */
@@ -2471,7 +2481,7 @@ static void intersect_dm_quad_weights(float *v1, float *v2, float *v3, float *v4
co[1]= v1[1]*w[0] + v2[1]*w[1] + v3[1]*w[2] + v4[1]*w[3];
co[2]= v1[2]*w[0] + v2[2]*w[1] + v3[2]*w[2] + v4[2]*w[3];
- MeanValueWeights(vert, 4, co, w);
+ interp_weights_poly_v3( w,vert, 4, co);
}
/* check intersection with a derivedmesh */
@@ -2537,18 +2547,18 @@ int psys_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm, float *vert_cos
DO_MINMAX(v3,min,max);
if(mface->v4)
DO_MINMAX(v4,min,max)
- if(AabbIntersectAabb(min,max,p_min,p_max)==0)
+ if(isect_aabb_aabb_v3(min,max,p_min,p_max)==0)
continue;
}
else{
VECCOPY(min, face_minmax+6*i);
VECCOPY(max, face_minmax+6*i+3);
- if(AabbIntersectAabb(min,max,p_min,p_max)==0)
+ if(isect_aabb_aabb_v3(min,max,p_min,p_max)==0)
continue;
}
if(radius>0.0f){
- if(SweepingSphereIntersectsTriangleUV(co1, co2, radius, v2, v3, v1, &cur_d, cur_ipoint)){
+ if(isect_sweeping_sphere_tri_v3(co1, co2, radius, v2, v3, v1, &cur_d, cur_ipoint)){
if(cur_d<*min_d){
*min_d=cur_d;
VECCOPY(ipoint,cur_ipoint);
@@ -2557,7 +2567,7 @@ int psys_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm, float *vert_cos
}
}
if(mface->v4){
- if(SweepingSphereIntersectsTriangleUV(co1, co2, radius, v4, v1, v3, &cur_d, cur_ipoint)){
+ if(isect_sweeping_sphere_tri_v3(co1, co2, radius, v4, v1, v3, &cur_d, cur_ipoint)){
if(cur_d<*min_d){
*min_d=cur_d;
VECCOPY(ipoint,cur_ipoint);
@@ -2568,7 +2578,7 @@ int psys_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm, float *vert_cos
}
}
else{
- if(LineIntersectsTriangle(co1, co2, v1, v2, v3, &cur_d, cur_uv)){
+ if(isect_line_tri_v3(co1, co2, v1, v2, v3, &cur_d, cur_uv)){
if(cur_d<*min_d){
*min_d=cur_d;
min_w[0]= 1.0 - cur_uv[0] - cur_uv[1];
@@ -2582,7 +2592,7 @@ int psys_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm, float *vert_cos
}
}
if(mface->v4){
- if(LineIntersectsTriangle(co1, co2, v1, v3, v4, &cur_d, cur_uv)){
+ if(isect_line_tri_v3(co1, co2, v1, v3, v4, &cur_d, cur_uv)){
if(cur_d<*min_d){
*min_d=cur_d;
min_w[0]= 1.0 - cur_uv[0] - cur_uv[1];
@@ -2618,7 +2628,7 @@ void particle_intersect_face(void *userdata, int index, const BVHTreeRay *ray, B
VECCOPY(vel, v[ face->v1 ].co);
VECADD(vel, vel, v[ face->v2 ].co);
VECADD(vel, vel, v[ face->v3 ].co);
- VecMulf(vel, 0.33334f);
+ mul_v3_fl(vel, 0.33334f);
/* substract face velocity, in other words convert to
a coordinate system where only the particle moves */
@@ -2628,16 +2638,16 @@ void particle_intersect_face(void *userdata, int index, const BVHTreeRay *ray, B
do
{
if(ray->radius == 0.0f) {
- if(LineIntersectsTriangle(co1, co2, t0, t1, t2, &t, uv)) {
+ if(isect_line_tri_v3(co1, co2, t0, t1, t2, &t, uv)) {
if(t >= 0.0f && t < hit->dist/col->ray_len) {
hit->dist = col->ray_len * t;
hit->index = index;
/* calculate normal that's facing the particle */
- CalcNormFloat(t0, t1, t2, col->nor);
+ normal_tri_v3( col->nor,t0, t1, t2);
VECSUB(temp, co2, co1);
- if(Inpf(col->nor, temp) > 0.0f)
- VecNegf(col->nor);
+ if(dot_v3v3(col->nor, temp) > 0.0f)
+ negate_v3(col->nor);
VECCOPY(col->vel,vel);
@@ -2647,15 +2657,15 @@ void particle_intersect_face(void *userdata, int index, const BVHTreeRay *ray, B
}
}
else {
- if(SweepingSphereIntersectsTriangleUV(co1, co2, ray->radius, t0, t1, t2, &t, ipoint)) {
+ if(isect_sweeping_sphere_tri_v3(co1, co2, ray->radius, t0, t1, t2, &t, ipoint)) {
if(t >=0.0f && t < hit->dist/col->ray_len) {
hit->dist = col->ray_len * t;
hit->index = index;
- VecLerpf(temp, co1, co2, t);
+ interp_v3_v3v3(temp, co1, co2, t);
VECSUB(col->nor, temp, ipoint);
- Normalize(col->nor);
+ normalize_v3(col->nor);
VECCOPY(col->vel,vel);
@@ -2706,7 +2716,7 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
VECSUB(ray_dir, col.co2, col.co1);
hit.index = -1;
- hit.dist = col.ray_len = VecLength(ray_dir);
+ hit.dist = col.ray_len = len_v3(ray_dir);
/* even if particle is stationary we want to check for moving colliders */
/* if hit.dist is zero the bvhtree_ray_cast will just ignore everything */
@@ -2738,10 +2748,10 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
float t = hit.dist/col.ray_len; /* time of collision between this iteration */
float dt = col.t + t * (1.0f - col.t); /* time of collision between frame change*/
- VecLerpf(co, col.co1, col.co2, t);
+ interp_v3_v3v3(co, col.co1, col.co2, t);
VECSUB(vec, col.co2, col.co1);
- VecMulf(col.vel, 1.0f-col.t);
+ mul_v3_fl(col.vel, 1.0f-col.t);
/* particle dies in collision */
if(through == 0 && (part->flag & PART_DIE_ON_COL || pd->flag & PDEFLE_KILL_PART)) {
@@ -2752,9 +2762,9 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
VECADDFAC(co, co, col.nor, (through ? -0.0001f : 0.0001f));
VECCOPY(pa->state.co, co);
- VecLerpf(pa->state.vel, pa->prev_state.vel, pa->state.vel, dt);
- QuatInterpol(pa->state.rot, pa->prev_state.rot, pa->state.rot, dt);
- VecLerpf(pa->state.ave, pa->prev_state.ave, pa->state.ave, dt);
+ interp_v3_v3v3(pa->state.vel, pa->prev_state.vel, pa->state.vel, dt);
+ interp_qt_qtqt(pa->state.rot, pa->prev_state.rot, pa->state.rot, dt);
+ interp_v3_v3v3(pa->state.ave, pa->prev_state.ave, pa->state.ave, dt);
/* particle is dead so we don't need to calculate further */
deflections=max_deflections;
@@ -2772,13 +2782,13 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
CLAMP(frict,0.0,1.0);
/* treat normal & tangent components separately */
- inp = Inpf(col.nor, vec);
- inp_v = Inpf(col.nor, col.vel);
+ inp = dot_v3v3(col.nor, vec);
+ inp_v = dot_v3v3(col.nor, col.vel);
VECADDFAC(tan_vec, vec, col.nor, -inp);
VECADDFAC(tan_vel, col.vel, col.nor, -inp_v);
if((part->flag & PART_ROT_DYN)==0)
- VecLerpf(tan_vec, tan_vec, tan_vel, frict);
+ interp_v3_v3v3(tan_vec, tan_vec, tan_vel, frict);
VECCOPY(nor_vec, col.nor);
inp *= 1.0f - damp;
@@ -2788,9 +2798,9 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
/* special case for object hitting the particle from behind */
if(through==0 && ((inp_v>0 && inp>0 && inp_v>inp) || (inp_v<0 && inp<0 && inp_v<inp)))
- VecMulf(nor_vec, inp_v);
+ mul_v3_fl(nor_vec, inp_v);
else
- VecMulf(nor_vec, inp_v + (through ? 1.0f : -1.0f) * inp);
+ mul_v3_fl(nor_vec, inp_v + (through ? 1.0f : -1.0f) * inp);
/* angular <-> linear velocity - slightly more physical and looks even nicer than before */
if(part->flag & PART_ROT_DYN) {
@@ -2800,37 +2810,37 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
VECSUB(surface_vel, tan_vec, tan_vel);
/* direction of rolling friction */
- Crossf(rot_vel, pa->state.ave, col.nor);
+ cross_v3_v3v3(rot_vel, pa->state.ave, col.nor);
/* convert to current dt */
- VecMulf(rot_vel, (timestep*dfra) * (1.0f - col.t));
- VecMulf(rot_vel, pa->size);
+ mul_v3_fl(rot_vel, (timestep*dfra) * (1.0f - col.t));
+ mul_v3_fl(rot_vel, pa->size);
/* apply sliding friction */
VECSUB(surface_vel, surface_vel, rot_vel);
VECCOPY(friction, surface_vel);
- VecMulf(surface_vel, 1.0 - frict);
- VecMulf(friction, frict);
+ mul_v3_fl(surface_vel, 1.0 - frict);
+ mul_v3_fl(friction, frict);
/* sliding changes angular velocity */
- Crossf(dave, col.nor, friction);
- VecMulf(dave, 1.0f/MAX2(pa->size, 0.001));
+ cross_v3_v3v3(dave, col.nor, friction);
+ mul_v3_fl(dave, 1.0f/MAX2(pa->size, 0.001));
/* we assume rolling friction is around 0.01 of sliding friction */
- VecMulf(rot_vel, 1.0 - frict*0.01);
+ mul_v3_fl(rot_vel, 1.0 - frict*0.01);
/* change in angular velocity has to be added to the linear velocity too */
- Crossf(dvel, dave, col.nor);
- VecMulf(dvel, pa->size);
+ cross_v3_v3v3(dvel, dave, col.nor);
+ mul_v3_fl(dvel, pa->size);
VECADD(rot_vel, rot_vel, dvel);
VECADD(surface_vel, surface_vel, rot_vel);
VECADD(tan_vec, surface_vel, tan_vel);
/* convert back to normal time */
- VecMulf(dave, 1.0f/MAX2((timestep*dfra) * (1.0f - col.t), 0.00001));
+ mul_v3_fl(dave, 1.0f/MAX2((timestep*dfra) * (1.0f - col.t), 0.00001));
- VecMulf(pa->state.ave, 1.0 - frict*0.01);
+ mul_v3_fl(pa->state.ave, 1.0 - frict*0.01);
VECADD(pa->state.ave, pa->state.ave, dave);
}
@@ -2839,7 +2849,7 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
/* calculate velocity from collision vector */
VECCOPY(vel, vec);
- VecMulf(vel, 1.0f/MAX2((timestep*dfra) * (1.0f - col.t), 0.00001));
+ mul_v3_fl(vel, 1.0f/MAX2((timestep*dfra) * (1.0f - col.t), 0.00001));
/* make sure we don't hit the current face again */
VECADDFAC(co, co, col.nor, (through ? -0.0001f : 0.0001f));
@@ -2854,15 +2864,15 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo
/* store state for reactors */
//VECCOPY(reaction_state.co, co);
- //VecLerpf(reaction_state.vel, pa->prev_state.vel, pa->state.vel, dt);
- //QuatInterpol(reaction_state.rot, pa->prev_state.rot, pa->state.rot, dt);
+ //interp_v3_v3v3(reaction_state.vel, pa->prev_state.vel, pa->state.vel, dt);
+ //interp_qt_qtqt(reaction_state.rot, pa->prev_state.rot, pa->state.rot, dt);
/* set coordinates for next iteration */
VECCOPY(col.co1, co);
VECADDFAC(col.co2, co, vec, 1.0f - t);
col.t = dt;
- if(VecLength(vec) < 0.001 && VecLength(pa->state.vel) < 0.001) {
+ if(len_v3(vec) < 0.001 && len_v3(pa->state.vel) < 0.001) {
/* kill speed to stop slipping */
VECCOPY(pa->state.vel,zerovec);
VECCOPY(pa->state.co, co);
@@ -3011,7 +3021,7 @@ static void do_hair_dynamics(ParticleSimulationData *sim)
VECSUB(temp, key->co, (key+1)->co);
VECCOPY(mvert->co, key->co);
VECADD(mvert->co, mvert->co, temp);
- Mat4MulVecfl(hairmat, mvert->co);
+ mul_m4_v3(hairmat, mvert->co);
mvert++;
medge->v1 = pa->hair_index - 1;
@@ -3030,7 +3040,7 @@ static void do_hair_dynamics(ParticleSimulationData *sim)
}
VECCOPY(mvert->co, key->co);
- Mat4MulVecfl(hairmat, mvert->co);
+ mul_m4_v3(hairmat, mvert->co);
mvert++;
if(k) {
@@ -3105,7 +3115,7 @@ static void save_hair(ParticleSimulationData *sim, float cfra){
PARTICLE_P;
int totpart;
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
psys->lattice= psys_get_lattice(sim);
@@ -3125,8 +3135,8 @@ static void save_hair(ParticleSimulationData *sim, float cfra){
key += pa->totkey;
/* convert from global to geometry space */
- VecCopyf(key->co, pa->state.co);
- Mat4MulVecfl(ob->imat, key->co);
+ copy_v3_v3(key->co, pa->state.co);
+ mul_m4_v3(ob->imat, key->co);
if(pa->totkey) {
VECSUB(key->co, key->co, root->co);
@@ -3941,6 +3951,6 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys)
system_step(&sim, cfra);
/* save matrix for duplicators */
- Mat4Invert(psys->imat, ob->obmat);
+ invert_m4_m4(psys->imat, ob->obmat);
}
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 68f0e33a98f..c2798b4a746 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -170,12 +170,12 @@ static void ptcache_interpolate_softbody(int index, void *soft_v, void **data, f
dfra = cfra2 - cfra1;
- VecMulf(keys[1].vel, dfra);
- VecMulf(keys[2].vel, dfra);
+ mul_v3_fl(keys[1].vel, dfra);
+ mul_v3_fl(keys[2].vel, dfra);
psys_interpolate_particle(-1, keys, (cfra - cfra1) / dfra, keys, 1);
- VecMulf(keys->vel, 1.0f / dfra);
+ mul_v3_fl(keys->vel, 1.0f / dfra);
VECCOPY(bp->pos, keys->co);
VECCOPY(bp->vec, keys->vel);
@@ -255,18 +255,18 @@ static void ptcache_read_particle(int index, void *psys_v, void **data, float fr
/* determine velocity from previous location */
if(data[BPHYS_DATA_LOCATION] && !data[BPHYS_DATA_VELOCITY]) {
if(cfra > pa->prev_state.time) {
- VecSubf(pa->state.vel, pa->state.co, pa->prev_state.co);
- VecMulf(pa->state.vel, (cfra - pa->prev_state.time) / frs_sec);
+ sub_v3_v3v3(pa->state.vel, pa->state.co, pa->prev_state.co);
+ mul_v3_fl(pa->state.vel, (cfra - pa->prev_state.time) / frs_sec);
}
else {
- VecSubf(pa->state.vel, pa->prev_state.co, pa->state.co);
- VecMulf(pa->state.vel, (pa->prev_state.time - cfra) / frs_sec);
+ sub_v3_v3v3(pa->state.vel, pa->prev_state.co, pa->state.co);
+ mul_v3_fl(pa->state.vel, (pa->prev_state.time - cfra) / frs_sec);
}
}
/* determine rotation from velocity */
if(data[BPHYS_DATA_LOCATION] && !data[BPHYS_DATA_ROTATION]) {
- vectoquat(pa->state.vel, OB_NEGX, OB_POSZ, pa->state.rot);
+ vec_to_quat( pa->state.rot,pa->state.vel, OB_NEGX, OB_POSZ);
}
}
static void ptcache_interpolate_particle(int index, void *psys_v, void **data, float frs_sec, float cfra, float cfra1, float cfra2, float *old_data)
@@ -292,18 +292,18 @@ static void ptcache_interpolate_particle(int index, void *psys_v, void **data, f
/* determine velocity from previous location */
if(data[BPHYS_DATA_LOCATION] && !data[BPHYS_DATA_VELOCITY]) {
if(keys[1].time > keys[2].time) {
- VecSubf(keys[2].vel, keys[1].co, keys[2].co);
- VecMulf(keys[2].vel, (keys[1].time - keys[2].time) / frs_sec);
+ sub_v3_v3v3(keys[2].vel, keys[1].co, keys[2].co);
+ mul_v3_fl(keys[2].vel, (keys[1].time - keys[2].time) / frs_sec);
}
else {
- VecSubf(keys[2].vel, keys[2].co, keys[1].co);
- VecMulf(keys[2].vel, (keys[2].time - keys[1].time) / frs_sec);
+ sub_v3_v3v3(keys[2].vel, keys[2].co, keys[1].co);
+ mul_v3_fl(keys[2].vel, (keys[2].time - keys[1].time) / frs_sec);
}
}
/* determine rotation from velocity */
if(data[BPHYS_DATA_LOCATION] && !data[BPHYS_DATA_ROTATION]) {
- vectoquat(keys[2].vel, OB_NEGX, OB_POSZ, keys[2].rot);
+ vec_to_quat( keys[2].rot,keys[2].vel, OB_NEGX, OB_POSZ);
}
if(cfra > pa->time)
@@ -311,13 +311,13 @@ static void ptcache_interpolate_particle(int index, void *psys_v, void **data, f
dfra = cfra2 - cfra1;
- VecMulf(keys[1].vel, dfra / frs_sec);
- VecMulf(keys[2].vel, dfra / frs_sec);
+ mul_v3_fl(keys[1].vel, dfra / frs_sec);
+ mul_v3_fl(keys[2].vel, dfra / frs_sec);
psys_interpolate_particle(-1, keys, (cfra - cfra1) / dfra, &pa->state, 1);
- QuatInterpol(pa->state.rot, keys[1].rot, keys[2].rot, (cfra - cfra1) / dfra);
+ interp_qt_qtqt(pa->state.rot, keys[1].rot, keys[2].rot, (cfra - cfra1) / dfra);
- VecMulf(pa->state.vel, frs_sec / dfra);
+ mul_v3_fl(pa->state.vel, frs_sec / dfra);
pa->state.time = cfra;
}
@@ -425,18 +425,18 @@ static int ptcache_totwrite_particle(void *psys_v)
// /* determine velocity from previous location */
// if(data[BPHYS_DATA_LOCATION] && !data[BPHYS_DATA_VELOCITY]) {
// if(cfra > pa->prev_state.time) {
-// VecSubf(pa->state.vel, pa->state.co, pa->prev_state.co);
-// VecMulf(pa->state.vel, (cfra - pa->prev_state.time) / frs_sec);
+// sub_v3_v3v3(pa->state.vel, pa->state.co, pa->prev_state.co);
+// mul_v3_fl(pa->state.vel, (cfra - pa->prev_state.time) / frs_sec);
// }
// else {
-// VecSubf(pa->state.vel, pa->prev_state.co, pa->state.co);
-// VecMulf(pa->state.vel, (pa->prev_state.time - cfra) / frs_sec);
+// sub_v3_v3v3(pa->state.vel, pa->prev_state.co, pa->state.co);
+// mul_v3_fl(pa->state.vel, (pa->prev_state.time - cfra) / frs_sec);
// }
// }
//
// /* determine rotation from velocity */
// if(data[BPHYS_DATA_LOCATION] && !data[BPHYS_DATA_ROTATION]) {
-// vectoquat(pa->state.vel, OB_POSX, OB_POSZ, pa->state.rot);
+// vec_to_quat( pa->state.rot,pa->state.vel, OB_POSX, OB_POSZ);
// }
//}
//static void ptcache_interpolate_particle_stream(int index, void *psys_v, void **data, float frs_sec, float cfra, float cfra1, float cfra2, float *old_data)
@@ -461,13 +461,13 @@ static int ptcache_totwrite_particle(void *psys_v)
//
// dfra = cfra2 - cfra1;
//
-// VecMulf(keys[1].vel, dfra / frs_sec);
-// VecMulf(keys[2].vel, dfra / frs_sec);
+// mul_v3_fl(keys[1].vel, dfra / frs_sec);
+// mul_v3_fl(keys[2].vel, dfra / frs_sec);
//
// psys_interpolate_particle(-1, keys, (cfra - cfra1) / dfra, &pa->state, 1);
-// QuatInterpol(pa->state.rot, keys[1].rot,keys[2].rot, (cfra - cfra1) / dfra);
+// interp_qt_qtqt(pa->state.rot, keys[1].rot,keys[2].rot, (cfra - cfra1) / dfra);
//
-// VecMulf(pa->state.vel, frs_sec / dfra);
+// mul_v3_fl(pa->state.vel, frs_sec / dfra);
//
// pa->state.time = cfra;
//}
@@ -525,12 +525,12 @@ static void ptcache_interpolate_cloth(int index, void *cloth_v, void **data, flo
dfra = cfra2 - cfra1;
- VecMulf(keys[1].vel, dfra);
- VecMulf(keys[2].vel, dfra);
+ mul_v3_fl(keys[1].vel, dfra);
+ mul_v3_fl(keys[2].vel, dfra);
psys_interpolate_particle(-1, keys, (cfra - cfra1) / dfra, keys, 1);
- VecMulf(keys->vel, 1.0f / dfra);
+ mul_v3_fl(keys->vel, 1.0f / dfra);
VECCOPY(vert->x, keys->co);
VECCOPY(vert->v, keys->vel);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 99dbd9b6140..53841426728 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -89,7 +89,7 @@
#include "BPY_extern.h"
#endif
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "FRS_freestyle_config.h"
@@ -423,6 +423,7 @@ Scene *add_scene(char *name)
pset->brushtype= PE_BRUSH_NONE;
pset->draw_step= 2;
pset->fade_frames= 2;
+ pset->selectmode= SCE_SELECT_PATH;
for(a=0; a<PE_TOT_BRUSH; a++) {
pset->brush[a].strength= 50;
pset->brush[a].size= 50;
@@ -661,7 +662,7 @@ int next_object(Scene *scene, int val, Base **base, Object **ob)
/* handle dupli's */
if(dupob) {
- Mat4CpyMat4(dupob->ob->obmat, dupob->mat);
+ copy_m4_m4(dupob->ob->obmat, dupob->mat);
(*base)->flag |= OB_FROMDUPLI;
*ob= dupob->ob;
@@ -674,7 +675,7 @@ int next_object(Scene *scene, int val, Base **base, Object **ob)
(*base)->flag &= ~OB_FROMDUPLI;
for(dupob= duplilist->first; dupob; dupob= dupob->next) {
- Mat4CpyMat4(dupob->ob->obmat, dupob->omat);
+ copy_m4_m4(dupob->ob->obmat, dupob->omat);
}
free_object_duplilist(duplilist);
diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c
index 078258092f7..a1f81bf6166 100644
--- a/source/blender/blenkernel/intern/seqeffects.c
+++ b/source/blender/blenkernel/intern/seqeffects.c
@@ -36,11 +36,13 @@
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
+#include "DNA_anim_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_global.h"
+#include "BKE_fcurve.h"
#include "BKE_plugin_types.h"
#include "BKE_sequence.h"
#include "BKE_texture.h"
@@ -49,6 +51,8 @@
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
+#include "RNA_access.h"
+
/* **** XXX **** */
static void error() {}
@@ -242,7 +246,6 @@ static void do_plugin_effect(Sequence * seq,int cfra,
if(seq->plugin->cfra)
*(seq->plugin->cfra)= cfra;
-// XXX *(seq->plugin->cfra)= frame_to_float(scene, cfra);
cp = PIL_dynlib_find_symbol(
seq->plugin->handle, "seqname");
@@ -2777,14 +2780,13 @@ static void store_icu_yrange_speed(struct Sequence * seq,
}
}
}
-
-void sequence_effect_speed_rebuild_map(Sequence * seq, int force)
+void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force)
{
- float facf0 = seq->facf0;
- //float ctime, div;
+ float ctime, div;
int cfra;
float fallback_fac;
SpeedControlVars * v = (SpeedControlVars *)seq->effectdata;
+ FCurve *fcu= NULL;
/* if not already done, load / initialize data */
get_sequence_effect(seq);
@@ -2797,6 +2799,11 @@ void sequence_effect_speed_rebuild_map(Sequence * seq, int force)
return;
}
+ /* XXX - new in 2.5x. should we use the animation system this way?
+ * The fcurve is needed because many frames need evaluating at once - campbell */
+ fcu= id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "speed_fader", 0);
+
+
if (!v->frameMap || v->length != seq->len) {
if (v->frameMap) MEM_freeN(v->frameMap);
@@ -2811,8 +2818,7 @@ void sequence_effect_speed_rebuild_map(Sequence * seq, int force)
/* if there is no IPO, try to make retiming easy by stretching the
strip */
// XXX old animation system - seq
- if (/*!seq->ipo &&*/ seq->seq1->enddisp != seq->seq1->start
- && seq->seq1->len != 0) {
+ if (!fcu && seq->seq1->enddisp != seq->seq1->start && seq->seq1->len != 0) {
fallback_fac = (float) seq->seq1->len /
(float) (seq->seq1->enddisp - seq->seq1->start);
/* FIXME: this strip stretching gets screwed by stripdata
@@ -2829,32 +2835,29 @@ void sequence_effect_speed_rebuild_map(Sequence * seq, int force)
if ((v->flags & SEQ_SPEED_INTEGRATE) != 0) {
float cursor = 0;
+ float facf;
v->frameMap[0] = 0;
v->lastValidFrame = 0;
for (cfra = 1; cfra < v->length; cfra++) {
-#if 0 // XXX old animation system
- if(seq->ipo) {
- if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) {
- ctime = frame_to_float(scene, seq->startdisp + cfra);
- div = 1.0;
- } else {
- ctime= frame_to_float(scene, cfra);
- div= v->length / 100.0f;
- if(div==0.0) return;
- }
-
- calc_ipo(seq->ipo, ctime/div);
- execute_ipo((ID *)seq, seq->ipo);
- } else
-#endif // XXX old animation system
- {
- seq->facf0 = fallback_fac;
+ if(fcu) {
+ if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) {
+ ctime = seq->startdisp + cfra;
+ div = 1.0;
+ } else {
+ ctime= cfra;
+ div= v->length / 100.0f;
+ if(div==0.0) return;
+ }
+
+ facf = evaluate_fcurve(fcu, ctime/div);
+ } else {
+ facf = fallback_fac;
}
- seq->facf0 *= v->globalSpeed;
+ facf *= v->globalSpeed;
- cursor += seq->facf0;
+ cursor += facf;
if (cursor >= v->length) {
v->frameMap[cfra] = v->length - 1;
@@ -2864,40 +2867,39 @@ void sequence_effect_speed_rebuild_map(Sequence * seq, int force)
}
}
} else {
+ float facf;
+
v->lastValidFrame = 0;
for (cfra = 0; cfra < v->length; cfra++) {
-#if 0 // XXX old animation system
- if(seq->ipo) {
- if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) {
- ctime = frame_to_float(scene, seq->startdisp + cfra);
- div = 1.0;
- } else {
- ctime= frame_to_float(scene, cfra);
- div= v->length / 100.0f;
- if(div==0.0) return;
- }
+
+ if(fcu) {
+ if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) {
+ ctime = seq->startdisp + cfra;
+ div = 1.0;
+ } else {
+ ctime= cfra;
+ div= v->length / 100.0f;
+ if(div==0.0) return;
+ }
- calc_ipo(seq->ipo, ctime/div);
- execute_ipo((ID *)seq, seq->ipo);
+ facf = evaluate_fcurve(fcu, ctime / div);
+ if (v->flags & SEQ_SPEED_COMPRESS_IPO_Y) {
+ facf *= v->length;
+ }
}
-#endif // XXX old animation system
- if (v->flags & SEQ_SPEED_COMPRESS_IPO_Y) {
- seq->facf0 *= v->length;
- }
- if (/*!seq->ipo*/ 1) { // XXX old animation system - seq
- seq->facf0 = (float) cfra * fallback_fac;
+ if (!fcu) {
+ facf = (float) cfra * fallback_fac;
}
- seq->facf0 *= v->globalSpeed;
- if (seq->facf0 >= v->length) {
- seq->facf0 = v->length - 1;
+ facf *= v->globalSpeed;
+ if (facf >= v->length) {
+ facf = v->length - 1;
} else {
v->lastValidFrame = cfra;
}
- v->frameMap[cfra] = seq->facf0;
+ v->frameMap[cfra] = facf;
}
}
- seq->facf0 = facf0;
}
/*
diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c
index 1ab085f5fa8..39b911d1c37 100644
--- a/source/blender/blenkernel/intern/sequence.c
+++ b/source/blender/blenkernel/intern/sequence.c
@@ -27,6 +27,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
@@ -37,14 +38,19 @@
#include "DNA_listBase.h"
#include "DNA_sequence_types.h"
#include "DNA_scene_types.h"
+#include "DNA_anim_types.h"
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_main.h"
#include "BKE_sequence.h"
+#include "BKE_fcurve.h"
#include "BKE_utildefines.h"
+#include "RNA_access.h"
+#include "RE_pipeline.h"
#include "BLI_blenlib.h"
+#include "BLI_util.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
@@ -63,8 +69,8 @@
/* **** XXX ******** */
static int seqrectx= 0; /* bad bad global! */
static int seqrecty= 0;
-static void waitcursor(int val) {}
-static int blender_test_break() {return 0;}
+//static void waitcursor(int val) {}
+//static int blender_test_break() {return 0;}
/* **** XXX ******** */
@@ -602,9 +608,9 @@ void reload_sequence_new_file(Scene *scene, Sequence * seq)
sce = seq->scene;
}
- strncpy(seq->name + 2, sce->id.name + 2,
- sizeof(seq->name) - 2);
-
+ BLI_strncpy(seq->name+2, sce->id.name + 2, SEQ_NAME_MAXSTR-2);
+ seqUniqueName(scene->ed->seqbasep, seq);
+
seq->len= seq->scene->r.efra - seq->scene->r.sfra + 1;
seq->len -= seq->anim_startofs;
seq->len -= seq->anim_endofs;
@@ -807,25 +813,29 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se)
int x, y;
int early_out;
struct SeqEffectHandle sh = get_sequence_effect(seq);
+ FCurve *fcu= NULL;
if (!sh.execute) { /* effect not supported in this version... */
make_black_ibuf(se->ibuf);
return;
}
-#if 0 // XXX old animation system
- if(seq->ipo && seq->ipo->curve.first) {
- do_seq_ipo(scene, seq, cfra);
- fac= seq->facf0;
- facf= seq->facf1;
- } else
-#endif // XXX old animation system
- {
+ if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) {
sh.get_default_fac(seq, cfra, &fac, &facf);
+ if( scene->r.mode & R_FIELDS ); else facf= fac;
+ } else {
+ fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence,
+ "effect_fader", 0);
+ if (fcu) {
+ fac = facf = evaluate_fcurve(fcu, cfra);
+ if( scene->r.mode & R_FIELDS ) {
+ facf = evaluate_fcurve(fcu, cfra + 0.5);
+ }
+ } else {
+ fac = facf = seq->effect_fader;
+ }
}
- if( !(scene->r.mode & R_FIELDS) ) facf = fac;
-
early_out = sh.early_out(seq, fac, facf);
if (early_out == -1) { /* no input needed */
@@ -1230,6 +1240,7 @@ static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, in
}
}
+#if 0
static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra,
int build_proxy_run, int render_size);
@@ -1360,6 +1371,7 @@ static void seq_proxy_rebuild(Scene *scene, Sequence * seq)
}
waitcursor(0);
}
+#endif
/* **********************************************************************
@@ -1561,12 +1573,6 @@ static int input_have_to_preprocess(Scene *scene, Sequence * seq, TStripElem* se
if(seq->blend_mode == SEQ_BLEND_REPLACE &&
!(seq->type & SEQ_EFFECT)) {
-#if 0 // XXX old animation system
- if (seq->ipo && seq->ipo->curve.first) {
- do_seq_ipo(scene, seq, cfra);
- mul *= seq->facf0;
- }
-#endif // XXX old animation system
mul *= seq->blend_opacity / 100.0;
}
@@ -1651,12 +1657,6 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf
mul = seq->mul;
if(seq->blend_mode == SEQ_BLEND_REPLACE) {
-#if 0 // XXX old animation system
- if (seq->ipo && seq->ipo->curve.first) {
- do_seq_ipo(scene, seq, cfra);
- mul *= seq->facf0;
- }
-#endif // XXX old animation system
mul *= seq->blend_opacity / 100.0;
}
@@ -2010,14 +2010,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
}
}
} else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions
-#if 0
- /* XXX move entirely to render? */
- int oldcfra = CFRA;
- Sequence * oldseq = get_last_seq();
- Scene *sce= seq->scene, *oldsce= scene;
+ Scene *sce= seq->scene;// *oldsce= scene;
Render *re;
RenderResult rres;
- int doseq, rendering= G.rendering;
char scenename[64];
int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
int sce_valid =sce && (sce->camera || have_seq);
@@ -2039,18 +2034,24 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
if (!sce_valid) {
se->ok = STRIPELEM_FAILED;
} else if (se->ibuf==NULL && sce_valid) {
- /* no need to display a waitcursor on sequencer
- scene strips */
- if (!have_seq)
- waitcursor(1);
-
+ int oldcfra;
/* Hack! This function can be called from do_render_seq(), in that case
the seq->scene can already have a Render initialized with same name,
so we have to use a default name. (compositor uses scene name to
find render).
However, when called from within the UI (image preview in sequencer)
we do want to use scene Render, that way the render result is defined
- for display in render/imagewindow */
+ for display in render/imagewindow
+
+ Hmm, don't see, why we can't do that all the time,
+ and since G.rendering is uhm, gone... (Peter)
+ */
+
+ int rendering = 1;
+ int doseq;
+
+ oldcfra = seq->scene->r.cfra;
+
if(rendering) {
BLI_strncpy(scenename, sce->id.name+2, 64);
strcpy(sce->id.name+2, " do_build_seq_ibuf");
@@ -2061,16 +2062,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
doseq= scene->r.scemode & R_DOSEQ;
scene->r.scemode &= ~R_DOSEQ;
- BIF_init_render_callbacks(re, 0); /* 0= no display callbacks */
-
- /* XXX hrms, set_scene still needed? work on that... */
- if(sce!=oldsce) set_scene_bg(sce);
RE_BlenderFrame(re, sce,
seq->sfra+se->nr+seq->anim_startofs);
- if(sce!=oldsce) set_scene_bg(oldsce);
- /* UGLY WARNING, it is set to zero in RE_BlenderFrame */
- G.rendering= rendering;
if(rendering)
BLI_strncpy(sce->id.name+2, scenename, 64);
@@ -2090,20 +2084,12 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
RE_ReleaseResultImage(re);
- BIF_end_render_callbacks();
+ // BIF_end_render_callbacks();
/* restore */
scene->r.scemode |= doseq;
-
- // XXX
-#if 0
- if((G.f & G_PLAYANIM)==0 /* bad, is set on do_render_seq */
- && !have_seq
- && !build_proxy_run)
-#endif
-
- CFRA = oldcfra;
- set_last_seq(oldseq);
+
+ seq->scene->r.cfra = oldcfra;
copy_to_ibuf_still(seq, se);
@@ -2116,7 +2102,6 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
}
}
-#endif
}
if (!build_proxy_run) {
if (se->ibuf && use_limiter) {
@@ -2134,24 +2119,28 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s
float fac, facf;
struct SeqEffectHandle sh = get_sequence_effect(seq);
int early_out;
+ FCurve *fcu= NULL;
se->se1 = 0;
se->se2 = 0;
se->se3 = 0;
-#if 0 // XXX old animation system
- if(seq->ipo && seq->ipo->curve.first) {
- do_seq_ipo(scene, seq, cfra);
- fac= seq->facf0;
- facf= seq->facf1;
- } else
-#endif // XXX old animation system
- {
+ if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) {
sh.get_default_fac(seq, cfra, &fac, &facf);
- }
+ if( scene->r.mode & R_FIELDS ); else facf= fac;
+ } else {
+ fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence,
+ "effect_fader", 0);
+ if (fcu) {
+ fac = facf = evaluate_fcurve(fcu, cfra);
+ if( scene->r.mode & R_FIELDS ) {
+ facf = evaluate_fcurve(fcu, cfra + 0.5);
+ }
+ } else {
+ fac = facf = seq->effect_fader;
+ }
+ }
- if( scene->r.mode & R_FIELDS ); else facf= fac;
-
early_out = sh.early_out(seq, fac, facf);
switch (early_out) {
case -1:
@@ -2224,7 +2213,7 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra
TStripElem * se1 = 0;
TStripElem * se2 = 0;
- sequence_effect_speed_rebuild_map(seq, 0);
+ sequence_effect_speed_rebuild_map(scene, seq, 0);
f_cfra = seq->start + s->frameMap[nr];
@@ -2385,6 +2374,7 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
int early_out;
Sequence * seq = seq_arr[i];
struct SeqEffectHandle sh;
+ float facf;
se = give_tstripelem(seq, cfra);
@@ -2411,20 +2401,9 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
sh = get_sequence_blend(seq);
- seq->facf0 = seq->facf1 = 1.0;
+ facf = seq->blend_opacity / 100.0;
-#if 0 // XXX old animation system
- if(seq->ipo && seq->ipo->curve.first) {
- do_seq_ipo(scene, seq, cfra);
- }
-#endif
-
- if( scene->r.mode & R_FIELDS ); else seq->facf0 = seq->facf1;
-
- seq->facf0 *= seq->blend_opacity / 100.0;
- seq->facf1 *= seq->blend_opacity / 100.0;
-
- early_out = sh.early_out(seq, seq->facf0, seq->facf1);
+ early_out = sh.early_out(seq, facf, facf);
switch (early_out) {
case -1:
@@ -2481,8 +2460,10 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
struct SeqEffectHandle sh = get_sequence_blend(seq);
TStripElem* se1 = give_tstripelem(seq_arr[i-1], cfra);
TStripElem* se2 = give_tstripelem(seq_arr[i], cfra);
+
+ float facf = seq->blend_opacity / 100.0;
- int early_out = sh.early_out(seq, seq->facf0, seq->facf1);
+ int early_out = sh.early_out(seq, facf, facf);
switch (early_out) {
case 0: {
int x= se2->ibuf->x;
@@ -2530,12 +2511,12 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
if (swap_input) {
sh.execute(seq, cfra,
- seq->facf0, seq->facf1, x, y,
+ facf, facf, x, y,
se2->ibuf, se1->ibuf_comp, 0,
se2->ibuf_comp);
} else {
sh.execute(seq, cfra,
- seq->facf0, seq->facf1, x, y,
+ facf, facf, x, y,
se1->ibuf_comp, se2->ibuf, 0,
se2->ibuf_comp);
}
@@ -2631,6 +2612,7 @@ ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown
return i;
}
+#if 0
/* check used when we need to change seq->blend_mode but not to effect or audio strips */
static int seq_can_blend(Sequence *seq)
{
@@ -2640,6 +2622,7 @@ static int seq_can_blend(Sequence *seq)
return 0;
}
}
+#endif
/* *********************** threading api ******************* */
@@ -2651,8 +2634,8 @@ static pthread_mutex_t queue_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t wakeup_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t wakeup_cond = PTHREAD_COND_INITIALIZER;
-static pthread_mutex_t prefetch_ready_lock = PTHREAD_MUTEX_INITIALIZER;
-static pthread_cond_t prefetch_ready_cond = PTHREAD_COND_INITIALIZER;
+//static pthread_mutex_t prefetch_ready_lock = PTHREAD_MUTEX_INITIALIZER;
+//static pthread_cond_t prefetch_ready_cond = PTHREAD_COND_INITIALIZER;
static pthread_mutex_t frame_done_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t frame_done_cond = PTHREAD_COND_INITIALIZER;
@@ -2685,6 +2668,7 @@ typedef struct PrefetchQueueElem {
struct ImBuf * ibuf;
} PrefetchQueueElem;
+#if 0
static void *seq_prefetch_thread(void * This_)
{
PrefetchThread * This = This_;
@@ -2833,6 +2817,7 @@ static void seq_stop_threads()
/* deinit malloc mutex */
BLI_end_threads(0);
}
+#endif
void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown,
int render_size)
@@ -2859,6 +2844,7 @@ void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown,
pthread_mutex_unlock(&wakeup_lock);
}
+#if 0
static void seq_wait_for_prefetch_ready()
{
PrefetchThread *tslot;
@@ -2887,6 +2873,7 @@ static void seq_wait_for_prefetch_ready()
fprintf(stderr, "SEQ-THREAD: prefetch done\n");
}
+#endif
ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
{
@@ -2993,6 +2980,7 @@ static void free_anim_seq(Sequence *seq)
}
}
+#if 0
static void free_imbuf_seq_except(Scene *scene, int cfra)
{
Editing *ed= seq_give_editing(scene, FALSE);
@@ -3042,8 +3030,9 @@ static void free_imbuf_seq_except(Scene *scene, int cfra)
}
SEQ_END
}
+#endif
-void free_imbuf_seq(ListBase * seqbase, int check_mem_usage)
+void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage)
{
Sequence *seq;
TStripElem *se;
@@ -3101,11 +3090,11 @@ void free_imbuf_seq(ListBase * seqbase, int check_mem_usage)
if(seq->type==SEQ_MOVIE)
free_anim_seq(seq);
if(seq->type==SEQ_SPEED) {
- sequence_effect_speed_rebuild_map(seq, 1);
+ sequence_effect_speed_rebuild_map(scene, seq, 1);
}
}
if(seq->type==SEQ_META) {
- free_imbuf_seq(&seq->seqbase, FALSE);
+ free_imbuf_seq(scene, &seq->seqbase, FALSE);
}
if(seq->type==SEQ_SCENE) {
/* FIXME: recurs downwards,
@@ -3154,7 +3143,7 @@ static int update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *chan
if(seq->type == SEQ_MOVIE)
free_anim_seq(seq);
if(seq->type == SEQ_SPEED) {
- sequence_effect_speed_rebuild_map(seq, 1);
+ sequence_effect_speed_rebuild_map(scene, seq, 1);
}
}
@@ -3187,6 +3176,7 @@ void free_imbuf_seq()
}
#endif
+#if 0 // XXX old animation system
static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo)
{
/* force update of all sequences with this ipo, on ipo changes */
@@ -3206,6 +3196,7 @@ static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo)
}
SEQ_END
}
+#endif
/* seq funcs's for transforming internally
notice the difference between start/end and left/right.
@@ -3498,3 +3489,205 @@ void seq_update_sound(struct Sequence *seq)
seq->sound_handle->changed = -1;
}
}
+
+Sequence *active_seq_get(Scene *scene)
+{
+ Editing *ed= seq_give_editing(scene, FALSE);
+ if(ed==NULL) return NULL;
+ return ed->act_seq;
+}
+
+void active_seq_set(Scene *scene, Sequence *seq)
+{
+ Editing *ed= seq_give_editing(scene, FALSE);
+ if(ed==NULL) return;
+
+ ed->act_seq= seq;
+}
+
+/* api like funcs for adding */
+
+void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load)
+{
+ if(seq) {
+ strcpy(seq->name, seq_load->name);
+ seqUniqueName(scene->ed->seqbasep, seq);
+
+ if(seq_load->flag & SEQ_LOAD_FRAME_ADVANCE) {
+ seq_load->start_frame += (seq->enddisp - seq->startdisp);
+ }
+
+ if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) {
+ seq_load->flag |= 1; /* SELECT */
+ active_seq_set(scene, seq);
+ }
+
+ if(seq_load->flag & SEQ_LOAD_SOUND_CACHE) {
+ if(seq->sound)
+ sound_cache(seq->sound, 0);
+ }
+
+ seq_load->tot_success++;
+ }
+ else {
+ seq_load->tot_error++;
+ }
+}
+
+Sequence *alloc_sequence(ListBase *lb, int cfra, int machine)
+{
+ Sequence *seq;
+
+ seq= MEM_callocN( sizeof(Sequence), "addseq");
+ BLI_addtail(lb, seq);
+
+ *( (short *)seq->name )= ID_SEQ;
+ seq->name[2]= 0;
+
+ seq->flag= 1; /* SELECT */
+ seq->start= cfra;
+ seq->machine= machine;
+ seq->mul= 1.0;
+ seq->blend_opacity = 100.0;
+
+ return seq;
+}
+
+void seqUniqueName(ListBase *seqbasep, Sequence *seq)
+{
+ BLI_uniquename(seqbasep, seq, "Sequence", '.', offsetof(Sequence, name), SEQ_NAME_MAXSTR);
+}
+
+/* NOTE: this function doesn't fill in iamge names */
+Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load)
+{
+ Scene *scene= CTX_data_scene(C); /* only for active seq */
+ Sequence *seq;
+ Strip *strip;
+ StripElem *se;
+
+ seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel);
+ seq->type= SEQ_IMAGE;
+ BLI_strncpy(seq->name+2, "Image", SEQ_NAME_MAXSTR-2);
+ seqUniqueName(seqbasep, seq);
+
+ /* basic defaults */
+ seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
+
+ strip->len = seq->len = seq_load->len ? seq_load->len : 1;
+ strip->us= 1;
+ strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
+ BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name);
+
+ seq_load_apply(scene, seq, seq_load);
+
+ return seq;
+}
+
+Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load)
+{
+ Scene *scene= CTX_data_scene(C); /* only for sound */
+ Editing *ed= seq_give_editing(scene, TRUE);
+ bSound *sound;
+
+ Sequence *seq; /* generic strip vars */
+ Strip *strip;
+ StripElem *se;
+
+ AUD_SoundInfo info;
+
+ sound = sound_new_file(CTX_data_main(C), seq_load->path);
+
+ if (sound==NULL || sound->handle == NULL) {
+ //if(op)
+ // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format");
+ return NULL;
+ }
+
+ info = AUD_getInfo(sound->handle);
+
+ if (info.specs.format == AUD_FORMAT_INVALID) {
+ sound_delete(C, sound);
+ //if(op)
+ // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format");
+ return NULL;
+ }
+
+ seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel);
+
+ seq->type= SEQ_SOUND;
+ seq->sound= sound;
+ BLI_strncpy(seq->name+2, "Sound", SEQ_NAME_MAXSTR-2);
+ seqUniqueName(seqbasep, seq);
+
+ /* basic defaults */
+ seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
+ strip->len = seq->len = (int) (info.length * FPS);
+ strip->us= 1;
+
+ strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
+
+ BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name);
+
+ seq->sound_handle = sound_new_handle(scene, sound, seq_load->start_frame, seq_load->start_frame + strip->len, 0);
+
+ calc_sequence_disp(seq);
+
+ /* last active name */
+ strncpy(ed->act_sounddir, strip->dir, FILE_MAXDIR-1);
+
+ seq_load_apply(scene, seq, seq_load);
+
+ return seq;
+}
+
+Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load)
+{
+ Scene *scene= CTX_data_scene(C); /* only for sound */
+
+ Sequence *seq, *soundseq; /* generic strip vars */
+ Strip *strip;
+ StripElem *se;
+
+ struct anim *an;
+
+ an = openanim(seq_load->path, IB_rect);
+
+ if(an==NULL)
+ return NULL;
+
+ seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel);
+
+ seq->type= SEQ_MOVIE;
+ seq->anim= an;
+ seq->anim_preseek = IMB_anim_get_preseek(an);
+ BLI_strncpy(seq->name+2, "Movie", SEQ_NAME_MAXSTR-2);
+ seqUniqueName(seqbasep, seq);
+
+ /* basic defaults */
+ seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
+ strip->len = seq->len = IMB_anim_get_duration( an );
+ strip->us= 1;
+
+ strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
+
+ BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name);
+
+ calc_sequence_disp(seq);
+
+
+ if(seq_load->flag & SEQ_LOAD_MOVIE_SOUND) {
+ int start_frame_back= seq_load->start_frame;
+ seq_load->channel++;
+
+ soundseq = sequencer_add_sound_strip(C, seqbasep, seq_load);
+
+ seq_load->start_frame= start_frame_back;
+ seq_load->channel--;
+ }
+
+ /* can be NULL */
+ seq_load_apply(scene, seq, seq_load);
+
+ return seq;
+}
diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c
index efb7db04029..c9bf29ed29c 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.c
+++ b/source/blender/blenkernel/intern/shrinkwrap.c
@@ -51,7 +51,7 @@
#include "BKE_mesh.h"
#include "BKE_subsurf.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_kdtree.h"
#include "BLI_kdopbvh.h"
#include "BLI_editVert.h"
@@ -116,31 +116,31 @@ DerivedMesh *object_get_derived_final(struct Scene *scene, Object *ob, CustomDat
void space_transform_from_matrixs(SpaceTransform *data, float local[4][4], float target[4][4])
{
float itarget[4][4];
- Mat4Invert(itarget, target);
- Mat4MulSerie(data->local2target, itarget, local, 0, 0, 0, 0, 0, 0);
- Mat4Invert(data->target2local, data->local2target);
+ invert_m4_m4(itarget, target);
+ mul_serie_m4(data->local2target, itarget, local, 0, 0, 0, 0, 0, 0);
+ invert_m4_m4(data->target2local, data->local2target);
}
void space_transform_apply(const SpaceTransform *data, float *co)
{
- VecMat4MulVecfl(co, ((SpaceTransform*)data)->local2target, co);
+ mul_v3_m4v3(co, ((SpaceTransform*)data)->local2target, co);
}
void space_transform_invert(const SpaceTransform *data, float *co)
{
- VecMat4MulVecfl(co, ((SpaceTransform*)data)->target2local, co);
+ mul_v3_m4v3(co, ((SpaceTransform*)data)->target2local, co);
}
static void space_transform_apply_normal(const SpaceTransform *data, float *no)
{
- Mat4Mul3Vecfl( ((SpaceTransform*)data)->local2target, no);
- Normalize(no); // TODO: could we just determine de scale value from the matrix?
+ mul_mat3_m4_v3( ((SpaceTransform*)data)->local2target, no);
+ normalize_v3(no); // TODO: could we just determine de scale value from the matrix?
}
static void space_transform_invert_normal(const SpaceTransform *data, float *no)
{
- Mat4Mul3Vecfl(((SpaceTransform*)data)->target2local, no);
- Normalize(no); // TODO: could we just determine de scale value from the matrix?
+ mul_mat3_m4_v3(((SpaceTransform*)data)->target2local, no);
+ normalize_v3(no); // TODO: could we just determine de scale value from the matrix?
}
/*
@@ -223,7 +223,7 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc)
VECCOPY(tmp_co, nearest.co);
space_transform_invert(&calc->local2target, tmp_co);
- VecLerpf(co, co, tmp_co, weight); //linear interpolation
+ interp_v3_v3v3(co, co, tmp_co, weight); //linear interpolation
}
}
@@ -258,7 +258,7 @@ int normal_projection_project_vertex(char options, const float *vert, const floa
space_transform_apply_normal( transf, tmp_no );
no = tmp_no;
- hit_tmp.dist *= Mat4ToScalef( ((SpaceTransform*)transf)->local2target );
+ hit_tmp.dist *= mat4_to_scale( ((SpaceTransform*)transf)->local2target );
}
else
{
@@ -285,7 +285,7 @@ int normal_projection_project_vertex(char options, const float *vert, const floa
space_transform_invert( transf, hit_tmp.co );
space_transform_invert_normal( transf, hit_tmp.no );
- hit_tmp.dist = VecLenf( (float*)vert, hit_tmp.co );
+ hit_tmp.dist = len_v3v3( (float*)vert, hit_tmp.co );
}
memcpy(hit, &hit_tmp, sizeof(hit_tmp) );
@@ -331,7 +331,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S
if(calc->smd->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS) proj_axis[1] = 1.0f;
if(calc->smd->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS) proj_axis[2] = 1.0f;
- Normalize(proj_axis);
+ normalize_v3(proj_axis);
//Invalid projection direction
if(INPR(proj_axis, proj_axis) < FLT_EPSILON)
@@ -364,7 +364,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S
{
VECCOPY(tmp_co, calc->vert[i].co);
if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)
- NormalShortToFloat(tmp_no, calc->vert[i].no);
+ normal_short_to_float_v3(tmp_no, calc->vert[i].no);
else
VECCOPY(tmp_no, proj_axis);
}
@@ -403,7 +403,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S
if(hit.index != -1)
{
- VecLerpf(co, co, hit.co, weight);
+ interp_v3_v3v3(co, co, hit.co, weight);
}
}
}
@@ -486,14 +486,14 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc)
//Adjusting the vertex weight, so that after interpolating it keeps a certain distance from the nearest position
float dist = sasqrt( nearest.dist );
if(dist > FLT_EPSILON)
- VecLerpf(tmp_co, tmp_co, nearest.co, (dist - calc->keepDist)/dist); //linear interpolation
+ interp_v3_v3v3(tmp_co, tmp_co, nearest.co, (dist - calc->keepDist)/dist); //linear interpolation
else
VECCOPY( tmp_co, nearest.co );
}
//Convert the coordinates back to mesh coordinates
space_transform_invert(&calc->local2target, tmp_co);
- VecLerpf(co, co, tmp_co, weight); //linear interpolation
+ interp_v3_v3v3(co, co, tmp_co, weight); //linear interpolation
}
}
diff --git a/source/blender/blenkernel/intern/simple_deform.c b/source/blender/blenkernel/intern/simple_deform.c
index 2978a6f7f01..b2920615f5a 100644
--- a/source/blender/blenkernel/intern/simple_deform.c
+++ b/source/blender/blenkernel/intern/simple_deform.c
@@ -35,7 +35,7 @@
#include "BKE_lattice.h"
#include "BKE_deform.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_shrinkwrap.h"
#include <string.h>
@@ -171,8 +171,8 @@ void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object *ob, s
}
else
{
- Mat4CpyMat4(transf->local2target, smd->origin->obmat);
- Mat4Invert(transf->target2local, transf->local2target);
+ copy_m4_m4(transf->local2target, smd->origin->obmat);
+ invert_m4_m4(transf->target2local, transf->local2target);
}
}
@@ -246,7 +246,7 @@ void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object *ob, s
axis_limit(limit_axis, smd_limit, co, dcut);
simpleDeform_callback(smd_factor, dcut, co); //Apply deform
- VecLerpf(vertexCos[i], vertexCos[i], co, weight); //Use vertex weight has coef of linear interpolation
+ interp_v3_v3v3(vertexCos[i], vertexCos[i], co, weight); //Use vertex weight has coef of linear interpolation
if(transf) space_transform_invert(transf, vertexCos[i]);
}
diff --git a/source/blender/blenkernel/intern/sketch.c b/source/blender/blenkernel/intern/sketch.c
index 8deae7e8e10..a41c7747b1a 100644
--- a/source/blender/blenkernel/intern/sketch.c
+++ b/source/blender/blenkernel/intern/sketch.c
@@ -30,7 +30,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_sketch.h"
#include "BKE_utildefines.h"
@@ -73,7 +73,7 @@ void sk_initPoint(SK_Point *pt, SK_DrawData *dd, float *no)
if (no)
{
VECCOPY(pt->no, no);
- Normalize(pt->no);
+ normalize_v3(pt->no);
}
else
{
@@ -235,7 +235,7 @@ void sk_straightenStroke(SK_Stroke *stk, int start, int end, float p_start[3], f
total = end - start;
- VecSubf(delta_p, p_end, p_start);
+ sub_v3_v3v3(delta_p, p_end, p_start);
prev = stk->points + start;
next = stk->points + end;
@@ -259,8 +259,8 @@ void sk_straightenStroke(SK_Stroke *stk, int start, int end, float p_start[3], f
float *p = stk->points[start + 1 + i].p;
VECCOPY(p, delta_p);
- VecMulf(p, delta);
- VecAddf(p, p, p_start);
+ mul_v3_fl(p, delta);
+ add_v3_v3v3(p, p, p_start);
}
}
@@ -320,9 +320,9 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end)
VECCOPY(normal, stk->points[start].no);
- VecSubf(distance, stk->points[end].p, stk->points[start].p);
- Projf(normal, distance, normal);
- limit = Normalize(normal);
+ sub_v3_v3v3(distance, stk->points[end].p, stk->points[start].p);
+ project_v3_v3v3(normal, distance, normal);
+ limit = normalize_v3(normal);
for (i = 1; i < total - 1; i++)
{
@@ -330,14 +330,14 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end)
float offset[3];
float *p = stk->points[start + i].p;
- VecSubf(distance, p, stk->points[start].p);
- Projf(distance, distance, normal);
+ sub_v3_v3v3(distance, p, stk->points[start].p);
+ project_v3_v3v3(distance, distance, normal);
VECCOPY(offset, normal);
- VecMulf(offset, d);
+ mul_v3_fl(offset, d);
- VecSubf(p, p, distance);
- VecAddf(p, p, offset);
+ sub_v3_v3v3(p, p, distance);
+ add_v3_v3v3(p, p, offset);
}
}
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index b7fe0bdfc98..0a106b1920d 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -44,7 +44,7 @@
#include "BLI_rand.h"
#include "BLI_jitter.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "BLI_kdtree.h"
#include "BLI_kdopbvh.h"
@@ -150,7 +150,7 @@ int smokeModifier_init (SmokeModifierData *smd, Object *ob, Scene *scene, Derive
float tmp[3];
VECCOPY(tmp, verts[i].co);
- Mat4MulVecfl(ob->obmat, tmp);
+ mul_m4_v3(ob->obmat, tmp);
// min BB
min[0] = MIN2(min[0], tmp[0]);
@@ -262,8 +262,8 @@ int smokeModifier_init (SmokeModifierData *smd, Object *ob, Scene *scene, Derive
// bvhtree_from_mesh_faces(smd->flow->bvh, dm, 0.0, 2, 6);
// copy obmat
- // Mat4CpyMat4(smd->flow->mat, ob->obmat);
- // Mat4CpyMat4(smd->flow->mat_old, ob->obmat);
+ // copy_m4_m4(smd->flow->mat, ob->obmat);
+ // copy_m4_m4(smd->flow->mat_old, ob->obmat);
}
*/
@@ -283,8 +283,8 @@ int smokeModifier_init (SmokeModifierData *smd, Object *ob, Scene *scene, Derive
SmokeCollSettings *scs = smd->coll;
// copy obmat
- Mat4CpyMat4(scs->mat, ob->obmat);
- Mat4CpyMat4(scs->mat_old, ob->obmat);
+ copy_m4_m4(scs->mat, ob->obmat);
+ copy_m4_m4(scs->mat_old, ob->obmat);
fill_scs_points(ob, dm, scs);
}
@@ -332,7 +332,7 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
{
float tmpvec[3];
VECCOPY(tmpvec, mvert[i].co);
- Mat4MulVecfl (ob->obmat, tmpvec);
+ mul_m4_v3(ob->obmat, tmpvec);
VECCOPY(&scs->points[i * 3], tmpvec);
}
@@ -358,10 +358,10 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
VECSUB(side2, mvert[ mface[i].v3 ].co, mvert[ mface[i].v1 ].co);
}
- Crossf(trinormorg, side1, side2);
- Normalize(trinormorg);
+ cross_v3_v3v3(trinormorg, side1, side2);
+ normalize_v3(trinormorg);
VECCOPY(trinorm, trinormorg);
- VecMulf(trinorm, 0.25 * cell_len);
+ mul_v3_fl(trinorm, 0.25 * cell_len);
for(j = 0; j <= divs1; j++)
{
@@ -390,9 +390,9 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
VECCOPY(p3, mvert[ mface[i].v3 ].co);
}
- VecMulf(p1, (1.0-uf-vf));
- VecMulf(p2, uf);
- VecMulf(p3, vf);
+ mul_v3_fl(p1, (1.0-uf-vf));
+ mul_v3_fl(p2, uf);
+ mul_v3_fl(p3, vf);
VECADD(p, p1, p2);
VECADD(p, p, p3);
@@ -403,7 +403,7 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
// mMovPoints.push_back(p + trinorm);
VECCOPY(tmpvec, p);
VECADD(tmpvec, tmpvec, trinorm);
- Mat4MulVecfl (ob->obmat, tmpvec);
+ mul_m4_v3(ob->obmat, tmpvec);
VECCOPY(&scs->points[3 * (dm->getNumVerts(dm) + newdivs)], tmpvec);
newdivs++;
@@ -413,7 +413,7 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
// mMovPoints.push_back(p - trinorm);
VECCOPY(tmpvec, p);
VECSUB(tmpvec, tmpvec, trinorm);
- Mat4MulVecfl (ob->obmat, tmpvec);
+ mul_m4_v3(ob->obmat, tmpvec);
VECCOPY(&scs->points[3 * (dm->getNumVerts(dm) + newdivs)], tmpvec);
newdivs++;
}
@@ -466,11 +466,11 @@ void calcTriangleDivs(Object *ob, MVert *verts, int numverts, MFace *faces, int
int divs1=0, divs2=0, divs3=0;
VECCOPY(p0, verts[faces[i].v1].co);
- Mat4MulVecfl (ob->obmat, p0);
+ mul_m4_v3(ob->obmat, p0);
VECCOPY(p1, verts[faces[i].v2].co);
- Mat4MulVecfl (ob->obmat, p1);
+ mul_m4_v3(ob->obmat, p1);
VECCOPY(p2, verts[faces[i].v3].co);
- Mat4MulVecfl (ob->obmat, p2);
+ mul_m4_v3(ob->obmat, p2);
VECSUB(side1, p1, p0);
VECSUB(side2, p2, p0);
@@ -478,12 +478,12 @@ void calcTriangleDivs(Object *ob, MVert *verts, int numverts, MFace *faces, int
if(INPR(side1, side1) > fsTri*fsTri)
{
- float tmp = Normalize(side1);
+ float tmp = normalize_v3(side1);
divs1 = (int)ceil(tmp/fsTri);
}
if(INPR(side2, side2) > fsTri*fsTri)
{
- float tmp = Normalize(side2);
+ float tmp = normalize_v3(side2);
divs2 = (int)ceil(tmp/fsTri);
/*
@@ -505,11 +505,11 @@ void calcTriangleDivs(Object *ob, MVert *verts, int numverts, MFace *faces, int
facecounter++;
VECCOPY(p0, verts[faces[i].v3].co);
- Mat4MulVecfl (ob->obmat, p0);
+ mul_m4_v3(ob->obmat, p0);
VECCOPY(p1, verts[faces[i].v4].co);
- Mat4MulVecfl (ob->obmat, p1);
+ mul_m4_v3(ob->obmat, p1);
VECCOPY(p2, verts[faces[i].v1].co);
- Mat4MulVecfl (ob->obmat, p2);
+ mul_m4_v3(ob->obmat, p2);
VECSUB(side1, p1, p0);
VECSUB(side2, p2, p0);
@@ -517,12 +517,12 @@ void calcTriangleDivs(Object *ob, MVert *verts, int numverts, MFace *faces, int
if(INPR(side1, side1) > fsTri*fsTri)
{
- float tmp = Normalize(side1);
+ float tmp = normalize_v3(side1);
divs1 = (int)ceil(tmp/fsTri);
}
if(INPR(side2, side2) > fsTri*fsTri)
{
- float tmp = Normalize(side2);
+ float tmp = normalize_v3(side2);
divs2 = (int)ceil(tmp/fsTri);
}
@@ -849,7 +849,7 @@ static void smoke_calc_domain(Scene *scene, Object *ob, SmokeModifierData *smd)
else if(pa->alive == PARS_DEAD && (part->flag & PART_DIED)==0) continue;
else if(pa->flag & (PARS_UNEXIST+PARS_NO_DISP)) continue;
// VECCOPY(pos, pa->state.co);
- // Mat4MulVecfl (ob->imat, pos);
+ // mul_m4_v3(ob->imat, pos);
// 1. get corresponding cell
get_cell(smd->domain->p0, smd->domain->res, smd->domain->dx, pa->state.co, cell, 0);
// check if cell is valid (in the domain boundary)
@@ -1105,8 +1105,8 @@ void smokeModifier_do(SmokeModifierData *smd, Scene *scene, Object *ob, DerivedM
// rigid movement support
/*
- Mat4CpyMat4(smd->flow->mat_old, smd->flow->mat);
- Mat4CpyMat4(smd->flow->mat, ob->obmat);
+ copy_m4_m4(smd->flow->mat_old, smd->flow->mat);
+ copy_m4_m4(smd->flow->mat, ob->obmat);
*/
}
else if(scene->r.cfra < smd->time)
@@ -1131,8 +1131,8 @@ void smokeModifier_do(SmokeModifierData *smd, Scene *scene, Object *ob, DerivedM
smd->coll->dm = CDDM_copy(dm);
// rigid movement support
- Mat4CpyMat4(smd->coll->mat_old, smd->coll->mat);
- Mat4CpyMat4(smd->coll->mat, ob->obmat);
+ copy_m4_m4(smd->coll->mat_old, smd->coll->mat);
+ copy_m4_m4(smd->coll->mat, ob->obmat);
}
else if(scene->r.cfra < smd->time)
{
@@ -1378,7 +1378,7 @@ static void get_cell(float *p0, int res[3], float dx, float *pos, int *cell, int
float tmp[3];
VECSUB(tmp, pos, p0);
- VecMulf(tmp, 1.0 / dx);
+ mul_v3_fl(tmp, 1.0 / dx);
if(correct)
{
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index 6e986325f55..f53700976fd 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -66,7 +66,7 @@ variables on the UI for now
#include "DNA_scene_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_ghash.h"
#include "BLI_threads.h"
@@ -108,6 +108,16 @@ typedef struct BodyFace {
short flag;
} BodyFace;
+typedef struct ReferenceVert {
+ float pos[3]; /* position relative to com */
+ float mass; /* node mass */
+} ReferenceVert;
+
+typedef struct ReferenceState {
+ float com[3]; /* center of mass*/
+ ReferenceVert *ivert; /* list of intial values */
+}ReferenceState ;
+
/*private scratch pad for caching and other data only needed when alive*/
typedef struct SBScratch {
@@ -117,6 +127,7 @@ typedef struct SBScratch {
BodyFace *bodyface;
int totface;
float aabbmin[3],aabbmax[3];
+ ReferenceState Ref;
}SBScratch;
typedef struct SB_thread_context {
@@ -265,7 +276,7 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm)
/* ah yeah, put the verices to global coords once */
/* and determine the ortho BB on the fly */
for(i=0; i < pccd_M->totvert; i++){
- Mat4MulVecfl(ob->obmat, pccd_M->mvert[i].co);
+ mul_m4_v3(ob->obmat, pccd_M->mvert[i].co);
/* evaluate limits */
VECCOPY(v,pccd_M->mvert[i].co);
@@ -362,7 +373,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm)
/* ah yeah, put the verices to global coords once */
/* and determine the ortho BB on the fly */
for(i=0; i < pccd_M->totvert; i++){
- Mat4MulVecfl(ob->obmat, pccd_M->mvert[i].co);
+ mul_m4_v3(ob->obmat, pccd_M->mvert[i].co);
/* evaluate limits */
VECCOPY(v,pccd_M->mvert[i].co);
@@ -593,7 +604,7 @@ static void add_mesh_quad_diag_springs(Object *ob)
if (ob->soft){
int nofquads;
- float s_shear = ob->soft->shearstiff*ob->soft->shearstiff;
+ //float s_shear = ob->soft->shearstiff*ob->soft->shearstiff;
nofquads = count_mesh_quads(me);
if (nofquads) {
@@ -882,6 +893,9 @@ static void free_scratch(SoftBody *sb)
if (sb->scratch->bodyface){
MEM_freeN(sb->scratch->bodyface);
}
+ if (sb->scratch->Ref.ivert){
+ MEM_freeN(sb->scratch->Ref.ivert);
+ }
MEM_freeN(sb->scratch);
sb->scratch = NULL;
}
@@ -1059,8 +1073,8 @@ static int sb_detect_face_pointCached(float face_v1[3],float face_v2[3],float fa
/* calculate face normal once again SIGH */
VECSUB(edge1, face_v1, face_v2);
VECSUB(edge2, face_v3, face_v2);
- Crossf(d_nvect, edge2, edge1);
- Normalize(d_nvect);
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ normalize_v3(d_nvect);
hash = vertexowner->soft->scratch->colliderhash;
@@ -1103,14 +1117,14 @@ static int sb_detect_face_pointCached(float face_v1[3],float face_v2[3],float fa
while(a){
VECCOPY(nv1,mvert[a-1].co);
if(mprevvert){
- VecMulf(nv1,time);
+ mul_v3_fl(nv1,time);
Vec3PlusStVec(nv1,(1.0f-time),mprevvert[a-1].co);
}
/* origin to face_v2*/
VECSUB(nv1, nv1, face_v2);
- facedist = Inpf(nv1,d_nvect);
+ facedist = dot_v3v3(nv1,d_nvect);
if (ABS(facedist)<outerfacethickness){
- if (point_in_tri_prism(nv1, face_v1,face_v2,face_v3) ){
+ if (isect_point_tri_prism_v3(nv1, face_v1,face_v2,face_v3) ){
float df;
if (facedist > 0){
df = (outerfacethickness-facedist)/outerfacethickness;
@@ -1218,17 +1232,17 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa
VECCOPY(nv4,mvert[mface->v4].co);
}
if (mprevvert){
- VecMulf(nv1,time);
+ mul_v3_fl(nv1,time);
Vec3PlusStVec(nv1,(1.0f-time),mprevvert[mface->v1].co);
- VecMulf(nv2,time);
+ mul_v3_fl(nv2,time);
Vec3PlusStVec(nv2,(1.0f-time),mprevvert[mface->v2].co);
- VecMulf(nv3,time);
+ mul_v3_fl(nv3,time);
Vec3PlusStVec(nv3,(1.0f-time),mprevvert[mface->v3].co);
if (mface->v4){
- VecMulf(nv4,time);
+ mul_v3_fl(nv4,time);
Vec3PlusStVec(nv4,(1.0f-time),mprevvert[mface->v4].co);
}
}
@@ -1237,12 +1251,12 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa
/* switch origin to be nv2*/
VECSUB(edge1, nv1, nv2);
VECSUB(edge2, nv3, nv2);
- Crossf(d_nvect, edge2, edge1);
- Normalize(d_nvect);
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ normalize_v3(d_nvect);
if (
- LineIntersectsTriangle(nv1, nv2, face_v1, face_v2, face_v3, &t, NULL) ||
- LineIntersectsTriangle(nv2, nv3, face_v1, face_v2, face_v3, &t, NULL) ||
- LineIntersectsTriangle(nv3, nv1, face_v1, face_v2, face_v3, &t, NULL) ){
+ isect_line_tri_v3(nv1, nv2, face_v1, face_v2, face_v3, &t, NULL) ||
+ isect_line_tri_v3(nv2, nv3, face_v1, face_v2, face_v3, &t, NULL) ||
+ isect_line_tri_v3(nv3, nv1, face_v1, face_v2, face_v3, &t, NULL) ){
Vec3PlusStVec(force,-0.5f,d_nvect);
*damp=tune*ob->pd->pdef_sbdamp;
deflected = 2;
@@ -1251,13 +1265,13 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa
/* switch origin to be nv4 */
VECSUB(edge1, nv3, nv4);
VECSUB(edge2, nv1, nv4);
- Crossf(d_nvect, edge2, edge1);
- Normalize(d_nvect);
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ normalize_v3(d_nvect);
if (
- /* LineIntersectsTriangle(nv1, nv3, face_v1, face_v2, face_v3, &t, NULL) ||
+ /* isect_line_tri_v3(nv1, nv3, face_v1, face_v2, face_v3, &t, NULL) ||
we did that edge allready */
- LineIntersectsTriangle(nv3, nv4, face_v1, face_v2, face_v3, &t, NULL) ||
- LineIntersectsTriangle(nv4, nv1, face_v1, face_v2, face_v3, &t, NULL) ){
+ isect_line_tri_v3(nv3, nv4, face_v1, face_v2, face_v3, &t, NULL) ||
+ isect_line_tri_v3(nv4, nv1, face_v1, face_v2, face_v3, &t, NULL) ){
Vec3PlusStVec(force,-0.5f,d_nvect);
*damp=tune*ob->pd->pdef_sbdamp;
deflected = 2;
@@ -1380,7 +1394,7 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa
aabbmax[1] = MAX2(edge_v1[1],edge_v2[1]);
aabbmax[2] = MAX2(edge_v1[2],edge_v2[2]);
- el = VecLenf(edge_v1,edge_v2);
+ el = len_v3v3(edge_v1,edge_v2);
hash = vertexowner->soft->scratch->colliderhash;
ihash = BLI_ghashIterator_new(hash);
@@ -1446,17 +1460,17 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa
VECCOPY(nv4,mvert[mface->v4].co);
}
if (mprevvert){
- VecMulf(nv1,time);
+ mul_v3_fl(nv1,time);
Vec3PlusStVec(nv1,(1.0f-time),mprevvert[mface->v1].co);
- VecMulf(nv2,time);
+ mul_v3_fl(nv2,time);
Vec3PlusStVec(nv2,(1.0f-time),mprevvert[mface->v2].co);
- VecMulf(nv3,time);
+ mul_v3_fl(nv3,time);
Vec3PlusStVec(nv3,(1.0f-time),mprevvert[mface->v3].co);
if (mface->v4){
- VecMulf(nv4,time);
+ mul_v3_fl(nv4,time);
Vec3PlusStVec(nv4,(1.0f-time),mprevvert[mface->v4].co);
}
}
@@ -1466,15 +1480,15 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa
VECSUB(edge1, nv1, nv2);
VECSUB(edge2, nv3, nv2);
- Crossf(d_nvect, edge2, edge1);
- Normalize(d_nvect);
- if ( LineIntersectsTriangle(edge_v1, edge_v2, nv1, nv2, nv3, &t, NULL)){
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ normalize_v3(d_nvect);
+ if ( isect_line_tri_v3(edge_v1, edge_v2, nv1, nv2, nv3, &t, NULL)){
float v1[3],v2[3];
float intrusiondepth,i1,i2;
VECSUB(v1, edge_v1, nv2);
VECSUB(v2, edge_v2, nv2);
- i1 = Inpf(v1,d_nvect);
- i2 = Inpf(v2,d_nvect);
+ i1 = dot_v3v3(v1,d_nvect);
+ i2 = dot_v3v3(v2,d_nvect);
intrusiondepth = -MIN2(i1,i2)/el;
Vec3PlusStVec(force,intrusiondepth,d_nvect);
*damp=ob->pd->pdef_sbdamp;
@@ -1485,15 +1499,15 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa
VECSUB(edge1, nv3, nv4);
VECSUB(edge2, nv1, nv4);
- Crossf(d_nvect, edge2, edge1);
- Normalize(d_nvect);
- if (LineIntersectsTriangle( edge_v1, edge_v2,nv1, nv3, nv4, &t, NULL)){
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ normalize_v3(d_nvect);
+ if (isect_line_tri_v3( edge_v1, edge_v2,nv1, nv3, nv4, &t, NULL)){
float v1[3],v2[3];
float intrusiondepth,i1,i2;
VECSUB(v1, edge_v1, nv4);
VECSUB(v2, edge_v2, nv4);
- i1 = Inpf(v1,d_nvect);
- i2 = Inpf(v2,d_nvect);
+ i1 = dot_v3v3(v1,d_nvect);
+ i2 = dot_v3v3(v2,d_nvect);
intrusiondepth = -MIN2(i1,i2)/el;
@@ -1531,7 +1545,7 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow,
if (ob->softflag & OB_SB_EDGECOLL){
if ( sb_detect_edge_collisionCached (sb->bpoint[bs->v1].pos , sb->bpoint[bs->v2].pos,
&damp,feedback,ob->lay,ob,timenow)){
- VecAddf(bs->ext_force,bs->ext_force,feedback);
+ add_v3_v3v3(bs->ext_force,bs->ext_force,feedback);
bs->flag |= BSF_INTERSECT;
//bs->cf=damp;
bs->cf=sb->choke*0.01f;
@@ -1550,30 +1564,30 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow,
EffectedPoint epoint;
float speed[3]={0.0f,0.0f,0.0f};
float pos[3];
- VecMidf(pos, sb->bpoint[bs->v1].pos , sb->bpoint[bs->v2].pos);
- VecMidf(vel, sb->bpoint[bs->v1].vec , sb->bpoint[bs->v2].vec);
+ mid_v3_v3v3(pos, sb->bpoint[bs->v1].pos , sb->bpoint[bs->v2].pos);
+ mid_v3_v3v3(vel, sb->bpoint[bs->v1].vec , sb->bpoint[bs->v2].vec);
pd_point_from_soft(scene, pos, vel, -1, &epoint);
pdDoEffectors(do_effector, NULL, sb->effector_weights, &epoint, force, speed);
- VecMulf(speed,windfactor);
- VecAddf(vel,vel,speed);
+ mul_v3_fl(speed,windfactor);
+ add_v3_v3v3(vel,vel,speed);
}
/* media in rest */
else{
VECADD(vel, sb->bpoint[bs->v1].vec , sb->bpoint[bs->v2].vec);
}
- f = Normalize(vel);
+ f = normalize_v3(vel);
f = -0.0001f*f*f*sb->aeroedge;
/* (todo) add a nice angle dependant function done for now BUT */
/* still there could be some nice drag/lift function, but who needs it */
VECSUB(sp, sb->bpoint[bs->v1].pos , sb->bpoint[bs->v2].pos);
- Projf(pr,vel,sp);
+ project_v3_v3v3(pr,vel,sp);
VECSUB(vel,vel,pr);
- Normalize(vel);
+ normalize_v3(vel);
if (ob->softflag & OB_SB_AERO_ANGLE){
- Normalize(sp);
- Vec3PlusStVec(bs->ext_force,f*(1.0f-ABS(Inpf(vel,sp))),vel);
+ normalize_v3(sp);
+ Vec3PlusStVec(bs->ext_force,f*(1.0f-ABS(dot_v3v3(vel,sp))),vel);
}
else{
Vec3PlusStVec(bs->ext_force,f,vel); // to keep compatible with 2.45 release files
@@ -1671,15 +1685,15 @@ static int choose_winner(float*w, float* pos,float*a,float*b,float*c,float*ca,fl
{
float mindist,cp;
int winner =1;
- mindist = ABS(Inpf(pos,a));
+ mindist = ABS(dot_v3v3(pos,a));
- cp = ABS(Inpf(pos,b));
+ cp = ABS(dot_v3v3(pos,b));
if ( mindist < cp ){
mindist = cp;
winner =2;
}
- cp = ABS(Inpf(pos,c));
+ cp = ABS(dot_v3v3(pos,c));
if (mindist < cp ){
mindist = cp;
winner =3;
@@ -1805,17 +1819,17 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3],
VECSUB(vv4,nv4,mprevvert[mface->v4].co);
}
- VecMulf(nv1,time);
+ mul_v3_fl(nv1,time);
Vec3PlusStVec(nv1,(1.0f-time),mprevvert[mface->v1].co);
- VecMulf(nv2,time);
+ mul_v3_fl(nv2,time);
Vec3PlusStVec(nv2,(1.0f-time),mprevvert[mface->v2].co);
- VecMulf(nv3,time);
+ mul_v3_fl(nv3,time);
Vec3PlusStVec(nv3,(1.0f-time),mprevvert[mface->v3].co);
if (mface->v4){
- VecMulf(nv4,time);
+ mul_v3_fl(nv4,time);
Vec3PlusStVec(nv4,(1.0f-time),mprevvert[mface->v4].co);
}
}
@@ -1826,14 +1840,14 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3],
VECSUB(edge2, nv3, nv2);
VECSUB(dv1,opco,nv2); /* abuse dv1 to have vertex in question at *origin* of triangle */
- Crossf(d_nvect, edge2, edge1);
- n_mag = Normalize(d_nvect);
- facedist = Inpf(dv1,d_nvect);
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ n_mag = normalize_v3(d_nvect);
+ facedist = dot_v3v3(dv1,d_nvect);
// so rules are
//
if ((facedist > innerfacethickness) && (facedist < outerfacethickness)){
- if (point_in_tri_prism(opco, nv1, nv2, nv3) ){
+ if (isect_point_tri_prism_v3(opco, nv1, nv2, nv3) ){
force_mag_norm =(float)exp(-ee*facedist);
if (facedist > outerfacethickness*ff)
force_mag_norm =(float)force_mag_norm*fa*(facedist - outerfacethickness)*(facedist - outerfacethickness);
@@ -1863,12 +1877,12 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3],
VECSUB(edge2, nv1, nv4);
VECSUB(dv1,opco,nv4); /* abuse dv1 to have vertex in question at *origin* of triangle */
- Crossf(d_nvect, edge2, edge1);
- n_mag = Normalize(d_nvect);
- facedist = Inpf(dv1,d_nvect);
+ cross_v3_v3v3(d_nvect, edge2, edge1);
+ n_mag = normalize_v3(d_nvect);
+ facedist = dot_v3v3(dv1,d_nvect);
if ((facedist > innerfacethickness) && (facedist < outerfacethickness)){
- if (point_in_tri_prism(opco, nv1, nv3, nv4) ){
+ if (isect_point_tri_prism_v3(opco, nv1, nv3, nv4) ){
force_mag_norm =(float)exp(-ee*facedist);
if (facedist > outerfacethickness*ff)
force_mag_norm =(float)force_mag_norm*fa*(facedist - outerfacethickness)*(facedist - outerfacethickness);
@@ -1898,45 +1912,45 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3],
{ // see if 'outer' hits an edge
float dist;
- PclosestVL3Dfl(ve, opco, nv1, nv2);
+ closest_to_line_segment_v3(ve, opco, nv1, nv2);
VECSUB(ve,opco,ve);
- dist = Normalize(ve);
+ dist = normalize_v3(ve);
if ((dist < outerfacethickness)&&(dist < mindistedge )){
VECCOPY(coledge,ve);
mindistedge = dist,
deflected=1;
}
- PclosestVL3Dfl(ve, opco, nv2, nv3);
+ closest_to_line_segment_v3(ve, opco, nv2, nv3);
VECSUB(ve,opco,ve);
- dist = Normalize(ve);
+ dist = normalize_v3(ve);
if ((dist < outerfacethickness)&&(dist < mindistedge )){
VECCOPY(coledge,ve);
mindistedge = dist,
deflected=1;
}
- PclosestVL3Dfl(ve, opco, nv3, nv1);
+ closest_to_line_segment_v3(ve, opco, nv3, nv1);
VECSUB(ve,opco,ve);
- dist = Normalize(ve);
+ dist = normalize_v3(ve);
if ((dist < outerfacethickness)&&(dist < mindistedge )){
VECCOPY(coledge,ve);
mindistedge = dist,
deflected=1;
}
if (mface->v4){ /* quad */
- PclosestVL3Dfl(ve, opco, nv3, nv4);
+ closest_to_line_segment_v3(ve, opco, nv3, nv4);
VECSUB(ve,opco,ve);
- dist = Normalize(ve);
+ dist = normalize_v3(ve);
if ((dist < outerfacethickness)&&(dist < mindistedge )){
VECCOPY(coledge,ve);
mindistedge = dist,
deflected=1;
}
- PclosestVL3Dfl(ve, opco, nv1, nv4);
+ closest_to_line_segment_v3(ve, opco, nv1, nv4);
VECSUB(ve,opco,ve);
- dist = Normalize(ve);
+ dist = normalize_v3(ve);
if ((dist < outerfacethickness)&&(dist < mindistedge )){
VECCOPY(coledge,ve);
mindistedge = dist,
@@ -1974,12 +1988,12 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3],
}
BLI_ghashIterator_free(ihash);
- if (cavel) VecMulf(avel,1.0f/(float)cavel);
+ if (cavel) mul_v3_fl(avel,1.0f/(float)cavel);
VECCOPY(vel,avel);
if (ci) *intrusion /= ci;
if (deflected){
VECCOPY(facenormal,force);
- Normalize(facenormal);
+ normalize_v3(facenormal);
}
return deflected;
}
@@ -2060,8 +2074,8 @@ static void sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float fo
}
/* do bp1 <--> bp2 elastic */
- VecSubf(dir,bp1->pos,bp2->pos);
- distance = Normalize(dir);
+ sub_v3_v3v3(dir,bp1->pos,bp2->pos);
+ distance = normalize_v3(dir);
if (bs->len < distance)
iks = 1.0f/(1.0f-sb->inspring)-1.0f ;/* inner spring constants function */
else
@@ -2092,10 +2106,10 @@ static void sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float fo
Vec3PlusStVec(bp1->force,(bs->len - distance)*forcefactor,dir);
/* do bp1 <--> bp2 viscous */
- VecSubf(dvel,bp1->vec,bp2->vec);
+ sub_v3_v3v3(dvel,bp1->vec,bp2->vec);
kd = sb->infrict * sb_fric_force_scale(ob);
- absvel = Normalize(dvel);
- projvel = Inpf(dir,dvel);
+ absvel = normalize_v3(dvel);
+ projvel = dot_v3v3(dir,dvel);
kd *= absvel * projvel;
Vec3PlusStVec(bp1->force,-kd,dir);
@@ -2169,11 +2183,11 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo
for(c=sb->totpoint, obp= sb->bpoint; c>=ifirst+bb; c--, obp++) {
compare = (obp->colball + bp->colball);
- VecSubf(def, bp->pos, obp->pos);
+ sub_v3_v3v3(def, bp->pos, obp->pos);
/* rather check the AABBoxes before ever calulating the real distance */
/* mathematically it is completly nuts, but performace is pretty much (3) times faster */
if ((ABS(def[0]) > compare) || (ABS(def[1]) > compare) || (ABS(def[2]) > compare)) continue;
- distance = Normalize(def);
+ distance = normalize_v3(def);
if (distance < compare ){
/* exclude body points attached with a spring */
attached = 0;
@@ -2186,16 +2200,16 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo
if (!attached){
float f = bstune/(distance) + bstune/(compare*compare)*distance - 2.0f*bstune/compare ;
- VecMidf(velcenter, bp->vec, obp->vec);
- VecSubf(dvel,velcenter,bp->vec);
- VecMulf(dvel,bp->mass);
+ mid_v3_v3v3(velcenter, bp->vec, obp->vec);
+ sub_v3_v3v3(dvel,velcenter,bp->vec);
+ mul_v3_fl(dvel,bp->mass);
Vec3PlusStVec(bp->force,f*(1.0f-sb->balldamp),def);
Vec3PlusStVec(bp->force,sb->balldamp,dvel);
/* exploit force(a,b) == -force(b,a) part2/2 */
- VecSubf(dvel,velcenter,obp->vec);
- VecMulf(dvel,bp->mass);
+ sub_v3_v3v3(dvel,velcenter,obp->vec);
+ mul_v3_fl(dvel,bp->mass);
Vec3PlusStVec(obp->force,sb->balldamp,dvel);
Vec3PlusStVec(obp->force,-f*(1.0f-sb->balldamp),def);
@@ -2213,16 +2227,16 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo
if(ob->softflag & OB_SB_GOAL) {
/* true elastic goal */
float ks,kd;
- VecSubf(auxvect,bp->pos,bp->origT);
+ sub_v3_v3v3(auxvect,bp->pos,bp->origT);
ks = 1.0f/(1.0f- bp->goal*sb->goalspring)-1.0f ;
bp->force[0]+= -ks*(auxvect[0]);
bp->force[1]+= -ks*(auxvect[1]);
bp->force[2]+= -ks*(auxvect[2]);
/* calulate damping forces generated by goals*/
- VecSubf(velgoal,bp->origS, bp->origE);
+ sub_v3_v3v3(velgoal,bp->origS, bp->origE);
kd = sb->goalfrict * sb_fric_force_scale(ob) ;
- VecAddf(auxvect,velgoal,bp->vec);
+ add_v3_v3v3(auxvect,velgoal,bp->vec);
if (forcetime > 0.0 ) { /* make sure friction does not become rocket motor on time reversal */
bp->force[0]-= kd * (auxvect[0]);
@@ -2241,8 +2255,8 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo
if (sb && scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY){
float gravity[3];
VECCOPY(gravity, scene->physics_settings.gravity);
- VecMulf(gravity, sb_grav_force_scale(ob)*bp->mass*sb->effector_weights->global_gravity); /* individual mass of node here */
- VecAddf(bp->force, bp->force, gravity);
+ mul_v3_fl(gravity, sb_grav_force_scale(ob)*bp->mass*sb->effector_weights->global_gravity); /* individual mass of node here */
+ add_v3_v3v3(bp->force, bp->force, gravity);
}
/* particle field & vortex */
@@ -2256,7 +2270,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo
pdDoEffectors(do_effector, NULL, sb->effector_weights, &epoint, force, speed);
/* apply forcefield*/
- VecMulf(force,fieldfactor* eval_sb_fric_force_scale);
+ mul_v3_fl(force,fieldfactor* eval_sb_fric_force_scale);
VECADD(bp->force, bp->force, force);
/* BP friction in moving media */
@@ -2309,7 +2323,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo
for(b=bp->nofsprings;b>0;b--){
bs = sb->bspring + bp->springs[b-1];
if (do_springcollision || do_aero){
- VecAddf(bp->force,bp->force,bs->ext_force);
+ add_v3_v3v3(bp->force,bp->force,bs->ext_force);
if (bs->flag & BSF_INTERSECT)
bp->choke = bs->cf;
@@ -2478,7 +2492,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
if (scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY){
VECCOPY(gravity, scene->physics_settings.gravity);
- VecMulf(gravity, sb_grav_force_scale(ob)*sb->effector_weights->global_gravity);
+ mul_v3_fl(gravity, sb_grav_force_scale(ob)*sb->effector_weights->global_gravity);
}
/* check conditions for various options */
@@ -2538,13 +2552,13 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
//if ((bp->octantflag & obp->octantflag) == 0) continue;
compare = (obp->colball + bp->colball);
- VecSubf(def, bp->pos, obp->pos);
+ sub_v3_v3v3(def, bp->pos, obp->pos);
/* rather check the AABBoxes before ever calulating the real distance */
/* mathematically it is completly nuts, but performace is pretty much (3) times faster */
if ((ABS(def[0]) > compare) || (ABS(def[1]) > compare) || (ABS(def[2]) > compare)) continue;
- distance = Normalize(def);
+ distance = normalize_v3(def);
if (distance < compare ){
/* exclude body points attached with a spring */
attached = 0;
@@ -2557,9 +2571,9 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
if (!attached){
float f = tune/(distance) + tune/(compare*compare)*distance - 2.0f*tune/compare ;
- VecMidf(velcenter, bp->vec, obp->vec);
- VecSubf(dvel,velcenter,bp->vec);
- VecMulf(dvel,bp->mass);
+ mid_v3_v3v3(velcenter, bp->vec, obp->vec);
+ sub_v3_v3v3(dvel,velcenter,bp->vec);
+ mul_v3_fl(dvel,bp->mass);
Vec3PlusStVec(bp->force,f*(1.0f-sb->balldamp),def);
Vec3PlusStVec(bp->force,sb->balldamp,dvel);
@@ -2589,8 +2603,8 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
}
/* exploit force(a,b) == -force(b,a) part2/2 */
- VecSubf(dvel,velcenter,obp->vec);
- VecMulf(dvel,(bp->mass+obp->mass)/2.0f);
+ sub_v3_v3v3(dvel,velcenter,obp->vec);
+ mul_v3_fl(dvel,(bp->mass+obp->mass)/2.0f);
Vec3PlusStVec(obp->force,sb->balldamp,dvel);
Vec3PlusStVec(obp->force,-f*(1.0f-sb->balldamp),def);
@@ -2609,7 +2623,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
/* do goal stuff */
if(ob->softflag & OB_SB_GOAL) {
/* true elastic goal */
- VecSubf(auxvect,bp->pos,bp->origT);
+ sub_v3_v3v3(auxvect,bp->pos,bp->origT);
ks = 1.0f/(1.0f- bp->goal*sb->goalspring)-1.0f ;
bp->force[0]+= -ks*(auxvect[0]);
bp->force[1]+= -ks*(auxvect[1]);
@@ -2624,9 +2638,9 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
/* calulate damping forces generated by goals*/
- VecSubf(velgoal,bp->origS, bp->origE);
+ sub_v3_v3v3(velgoal,bp->origS, bp->origE);
kd = sb->goalfrict * sb_fric_force_scale(ob) ;
- VecAddf(auxvect,velgoal,bp->vec);
+ add_v3_v3v3(auxvect,velgoal,bp->vec);
if (forcetime > 0.0 ) { /* make sure friction does not become rocket motor on time reversal */
bp->force[0]-= kd * (auxvect[0]);
@@ -2634,7 +2648,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
bp->force[2]-= kd * (auxvect[2]);
if(nl_flags & NLF_BUILD){
//int ia =3*(sb->totpoint-a);
- Normalize(auxvect);
+ normalize_v3(auxvect);
/* depending on my vel */
//dfdv_goal(ia,ia,kd*forcetime);
}
@@ -2663,7 +2677,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
pdDoEffectors(do_effector, NULL, sb->effector_weights, &epoint, force, speed);
/* apply forcefield*/
- VecMulf(force,fieldfactor* eval_sb_fric_force_scale);
+ mul_v3_fl(force,fieldfactor* eval_sb_fric_force_scale);
VECADD(bp->force, bp->force, force);
/* BP friction in moving media */
@@ -2750,7 +2764,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
for(b=bp->nofsprings;b>0;b--){
bs = sb->bspring + bp->springs[b-1];
if (do_springcollision || do_aero){
- VecAddf(bp->force,bp->force,bs->ext_force);
+ add_v3_v3v3(bp->force,bp->force,bs->ext_force);
if (bs->flag & BSF_INTERSECT)
bp->choke = bs->cf;
@@ -2882,7 +2896,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float *
/* the ( ... )' operator denotes derivate respective time */
/* the euler step for velocity then becomes */
/* v(t + dt) = v(t) + a(t) * dt */
- VecMulf(bp->force,timeovermass);/* individual mass of node here */
+ mul_v3_fl(bp->force,timeovermass);/* individual mass of node here */
/* some nasty if's to have heun in here too */
VECCOPY(dv,bp->force);
@@ -2909,17 +2923,17 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float *
/* so here is (x)'= v(elocity) */
/* the euler step for location then becomes */
/* x(t + dt) = x(t) + v(t~) * dt */
- VecMulf(dx,forcetime);
+ mul_v3_fl(dx,forcetime);
/* the freezer coming sooner or later */
/*
- if ((Inpf(dx,dx)<freezeloc )&&(Inpf(bp->force,bp->force)<freezeforce )){
+ if ((dot_v3v3(dx,dx)<freezeloc )&&(dot_v3v3(bp->force,bp->force)<freezeforce )){
bp->frozen /=2;
}
else{
bp->frozen =MIN2(bp->frozen*1.05f,1.0f);
}
- VecMulf(dx,bp->frozen);
+ mul_v3_fl(dx,bp->frozen);
*/
/* again some nasty if's to have heun in here too */
if (mode ==1){
@@ -2940,10 +2954,10 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float *
we don't want to end up in deep space so we add some <viscosity>
to balance that out */
if (bp->choke2 > 0.0f){
- VecMulf(bp->vec,(1.0f - bp->choke2));
+ mul_v3_fl(bp->vec,(1.0f - bp->choke2));
}
if (bp->choke > 0.0f){
- VecMulf(bp->vec,(1.0f - bp->choke));
+ mul_v3_fl(bp->vec,(1.0f - bp->choke));
}
}
@@ -2959,7 +2973,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float *
if (bp->flag & SBF_DOFUZZY) fuzzy =1;
} /*for*/
- if (sb->totpoint) VecMulf(cm,1.0f/sb->totpoint);
+ if (sb->totpoint) mul_v3_fl(cm,1.0f/sb->totpoint);
if (sb->scratch){
VECCOPY(sb->scratch->aabbmin,aabbmin);
VECCOPY(sb->scratch->aabbmax,aabbmax);
@@ -3100,7 +3114,7 @@ static void apply_spring_memory(Object *ob)
bs = &sb->bspring[a];
bp1 =&sb->bpoint[bs->v1];
bp2 =&sb->bpoint[bs->v2];
- l = VecLenf(bp1->pos,bp2->pos);
+ l = len_v3v3(bp1->pos,bp2->pos);
r = bs->len/l;
if (( r > 1.05f) || (r < 0.95)){
bs->len = ((100.0f - b) * bs->len + b*l)/100.0f;
@@ -3192,7 +3206,7 @@ static void springs_from_mesh(Object *ob)
bp= ob->soft->bpoint;
for(a=0; a<me->totvert; a++, bp++) {
VECCOPY(bp->origS, me->mvert[a].co);
- Mat4MulVecfl(ob->obmat, bp->origS);
+ mul_m4_v3(ob->obmat, bp->origS);
}
}
@@ -3203,7 +3217,7 @@ static void springs_from_mesh(Object *ob)
}
for(a=0; a<sb->totspring; a++) {
BodySpring *bs = &sb->bspring[a];
- bs->len= scale*VecLenf(sb->bpoint[bs->v1].origS, sb->bpoint[bs->v2].origS);
+ bs->len= scale*len_v3v3(sb->bpoint[bs->v1].origS, sb->bpoint[bs->v2].origS);
}
}
}
@@ -3332,6 +3346,27 @@ static void mesh_faces_to_scratch(Object *ob)
}
sb->scratch->totface = me->totface;
}
+static void reference_to_scratch(Object *ob)
+{
+ SoftBody *sb= ob->soft;
+ ReferenceVert *rp;
+ BodyPoint *bp;
+ float accu_pos[3] ={0.f,0.f,0.f};
+ float accu_mass = 0.f;
+ int a;
+
+ sb->scratch->Ref.ivert = MEM_mallocN(sizeof(ReferenceVert)*sb->totpoint,"SB_Reference");
+ bp= ob->soft->bpoint;
+ rp= sb->scratch->Ref.ivert;
+ for(a=0; a<sb->totpoint; a++, rp++, bp++) {
+ VECCOPY(rp->pos,bp->pos);
+ VECADD(accu_pos,accu_pos,bp->pos);
+ accu_mass += bp-> mass;
+ }
+ mul_v3_fl(accu_pos,1.0f/accu_mass);
+ VECCOPY(sb->scratch->Ref.com,accu_pos);
+ /* printf("reference_to_scratch \n"); */
+}
/*
helper function to get proper spring length
@@ -3341,10 +3376,10 @@ static float globallen(float *v1,float *v2,Object *ob)
{
float p1[3],p2[3];
VECCOPY(p1,v1);
- Mat4MulVecfl(ob->obmat, p1);
+ mul_m4_v3(ob->obmat, p1);
VECCOPY(p2,v2);
- Mat4MulVecfl(ob->obmat, p2);
- return VecLenf(p1,p2);
+ mul_m4_v3(ob->obmat, p2);
+ return len_v3v3(p1,p2);
}
static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object *ob)
@@ -3569,16 +3604,19 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob)
/* copies softbody result back in object */
static void softbody_to_object(Object *ob, float (*vertexCos)[3], int numVerts, int local)
{
- BodyPoint *bp= ob->soft->bpoint;
- int a;
-
- /* inverse matrix is not uptodate... */
- Mat4Invert(ob->imat, ob->obmat);
-
- for(a=0; a<numVerts; a++, bp++) {
- VECCOPY(vertexCos[a], bp->pos);
- if(local==0)
- Mat4MulVecfl(ob->imat, vertexCos[a]); /* softbody is in global coords, baked optionally not */
+ SoftBody *sb= ob->soft;
+ if(sb){
+ BodyPoint *bp= sb->bpoint;
+ int a;
+ if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){SB_estimate_transform(ob,sb->lcom,sb->lrot,sb->lscale);}
+ /* inverse matrix is not uptodate... */
+ invert_m4_m4(ob->imat, ob->obmat);
+
+ for(a=0; a<numVerts; a++, bp++) {
+ VECCOPY(vertexCos[a], bp->pos);
+ if(local==0)
+ mul_m4_v3(ob->imat, vertexCos[a]); /* softbody is in global coords, baked optionally not */
+ }
}
}
@@ -3592,6 +3630,7 @@ static void sb_new_scratch(SoftBody *sb)
sb->scratch->totface = 0;
sb->scratch->aabbmax[0]=sb->scratch->aabbmax[1]=sb->scratch->aabbmax[2] = 1.0e30f;
sb->scratch->aabbmin[0]=sb->scratch->aabbmin[1]=sb->scratch->aabbmin[2] = -1.0e30f;
+ sb->scratch->Ref.ivert = NULL;
}
/* --- ************ maintaining scratch *************** */
@@ -3706,13 +3745,62 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo
/* copy the position of the goals at desired end time */
VECCOPY(bp->origE, vertexCos[a]);
/* vertexCos came from local world, go global */
- Mat4MulVecfl(ob->obmat, bp->origE);
+ mul_m4_v3(ob->obmat, bp->origE);
/* just to be save give bp->origT a defined value
will be calulated in interpolate_exciter()*/
VECCOPY(bp->origT, bp->origE);
}
}
+
+/* void SB_estimate_transform */
+/* input Object *ob out (says any object that can do SB like mesh,lattice,curve )
+ output float lloc[3],float lrot[3][3],float lscale[3][3]
+ that is:
+ a precise position vector denoting the motion of the center of mass
+ give a rotation/scale matrix using averaging method, that's why estimate and not calculate
+ see: this is kind of reverse engeneering: having to states of a point cloud and recover what happend
+ our advantage here we know the identity of the vertex
+ there are others methods giving other results.
+ lloc,lrot,lscale are allowed to be NULL, just in case you don't need it.
+ should be pretty useful for pythoneers :)
+ not! velocity .. 2nd order stuff
+ vcloud_estimate_transform see
+ */
+
+void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscale[3][3])
+{
+ BodyPoint *bp;
+ ReferenceVert *rp;
+ SoftBody *sb = 0;
+ float (*opos)[3];
+ float (*rpos)[3];
+ float com[3],rcom[3];
+ int a;
+
+ if(!ob ||!ob->soft) return; /* why did we get here ? */
+ sb= ob->soft;
+ if(!sb || !sb->bpoint) return;
+ opos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_OPOS");
+ rpos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_RPOS");
+ /* might filter vertex selection with a vertex group */
+ for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; a<sb->totpoint; a++, bp++, rp++) {
+ VECCOPY(rpos[a],rp->pos);
+ VECCOPY(opos[a],bp->pos);
+ }
+
+ vcloud_estimate_transform(sb->totpoint, opos, NULL, rpos, NULL, com, rcom,lrot,lscale);
+ //VECSUB(com,com,rcom);
+ if (lloc) VECCOPY(lloc,com);
+ VECCOPY(sb->lcom,com);
+ if (lscale) copy_m3_m3(sb->lscale,lscale);
+ if (lrot) copy_m3_m3(sb->lrot,lrot);
+
+
+ MEM_freeN(opos);
+ MEM_freeN(rpos);
+}
+
static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int numVerts)
{
BodyPoint *bp;
@@ -3720,7 +3808,7 @@ static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int
for(a=0,bp=sb->bpoint; a<numVerts; a++, bp++) {
VECCOPY(bp->pos, vertexCos[a]);
- Mat4MulVecfl(ob->obmat, bp->pos); /* yep, sofbody is global coords*/
+ mul_m4_v3(ob->obmat, bp->pos); /* yep, sofbody is global coords*/
VECCOPY(bp->origS, bp->pos);
VECCOPY(bp->origE, bp->pos);
VECCOPY(bp->origT, bp->pos);
@@ -3750,6 +3838,7 @@ static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int
sb->scratch->needstobuildcollider=1;
/* copy some info to scratch */
+ if (1) reference_to_scratch(ob); /* wa only need that if we want to reconstruct IPO */
switch(ob->type) {
case OB_MESH:
if (ob->softflag & OB_SB_FACECOLL) mesh_faces_to_scratch(ob);
@@ -3932,7 +4021,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i
cache->flag &= ~PTCACHE_SIMULATION_VALID;
cache->simframe= 0;
//cache->last_exact= 0;
-
return;
}
else if(framenr > endframe) {
@@ -3967,22 +4055,19 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i
if(BKE_ptcache_get_continue_physics()) {
cache->flag &= ~PTCACHE_SIMULATION_VALID;
cache->simframe= 0;
-
/* do simulation */
dtime = timescale;
-
softbody_update_positions(ob, sb, vertexCos, numVerts);
softbody_step(scene, ob, sb, dtime);
-
softbody_to_object(ob, vertexCos, numVerts, 0);
-
return;
}
/* still no points? go away */
- if(sb->totpoint==0) return;
-
- if(framenr == startframe) {
+ if(sb->totpoint==0) {
+ return;
+ }
+ if(framenr == startframe) {
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
/* first frame, no simulation to do, just set the positions */
@@ -4035,7 +4120,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i
cache->simframe= framenr;
cache->flag |= PTCACHE_SIMULATION_VALID;
-
BKE_ptcache_write_cache(&pid, framenr);
}
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index 6ac9b020f21..d8950c7dace 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -384,6 +384,8 @@ void sound_update_playing(struct bContext *C)
}
}
+ AUD_setSoundVolume(handle->handle, handle->volume);
+
if(action & 1)
{
if(handle->state == AUD_STATUS_INVALID)
@@ -468,7 +470,9 @@ AUD_Device* sound_mixdown(struct Scene *scene, AUD_Specs specs, int start, int e
frameskip -= s;
s = 0;
}
-
+
+ AUD_setSoundVolume(handle->handle, handle->volume);
+
limiter = AUD_limitSound(handle->source->handle, frameskip / fps, e / fps);
delayer = AUD_delaySound(limiter, s / fps);
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 6e95fe7ebc7..cb2e2c437bf 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -54,7 +54,7 @@
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_linklist.h"
#include "BLI_memarena.h"
#include "BLI_edgehash.h"
@@ -561,7 +561,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
}
DM_interp_vert_data(dm, result, vertIdx, weight[0][0], numVerts, i);
- VecCopyf(mvert->co, ccgSubSurf_getFaceCenterData(f));
+ copy_v3_v3(mvert->co, ccgSubSurf_getFaceCenterData(f));
*origIndex = ORIGINDEX_NONE;
++mvert;
++origIndex;
@@ -579,7 +579,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
w[nextS] = weight[x][0][2];
w[otherS] = weight[x][0][3];
DM_interp_vert_data(dm, result, vertIdx, w, numVerts, i);
- VecCopyf(mvert->co,
+ copy_v3_v3(mvert->co,
ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
*origIndex = ORIGINDEX_NONE;
@@ -602,7 +602,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
w[nextS] = weight[y * gridFaces + x][0][2];
w[otherS] = weight[y * gridFaces + x][0][3];
DM_interp_vert_data(dm, result, vertIdx, w, numVerts, i);
- VecCopyf(mvert->co,
+ copy_v3_v3(mvert->co,
ccgSubSurf_getFaceGridData(ss, f, S, x, y));
*origIndex = ORIGINDEX_NONE;
++mvert;
@@ -633,7 +633,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
w[1] = (float) x / (edgeSize - 1);
w[0] = 1 - w[1];
DM_interp_vert_data(dm, result, vertIdx, w, 2, i);
- VecCopyf(mvert->co, ccgSubSurf_getEdgeData(ss, e, x));
+ copy_v3_v3(mvert->co, ccgSubSurf_getEdgeData(ss, e, x));
*origIndex = ORIGINDEX_NONE;
++mvert;
++origIndex;
@@ -651,7 +651,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
vertIdx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
DM_copy_vert_data(dm, result, vertIdx, i, 1);
- VecCopyf(mvert->co, ccgSubSurf_getVertData(ss, v));
+ copy_v3_v3(mvert->co, ccgSubSurf_getVertData(ss, v));
*((int*)ccgSubSurf_getVertUserData(ss, v)) = i;
*origIndex = ccgDM_getVertMapIndex(ss, v);
@@ -1016,19 +1016,19 @@ static void ccgDM_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv)
offset = vertNum - ccgdm->faceMap[i].startVert;
if(offset < 1) {
- VecCopyf(mv->co, ccgSubSurf_getFaceCenterData(f));
+ copy_v3_v3(mv->co, ccgSubSurf_getFaceCenterData(f));
} else if(offset < gridSideEnd) {
offset -= 1;
grid = offset / gridSideVerts;
x = offset % gridSideVerts + 1;
- VecCopyf(mv->co, ccgSubSurf_getFaceGridEdgeData(ss, f, grid, x));
+ copy_v3_v3(mv->co, ccgSubSurf_getFaceGridEdgeData(ss, f, grid, x));
} else if(offset < gridInternalEnd) {
offset -= gridSideEnd;
grid = offset / gridInternalVerts;
offset %= gridInternalVerts;
y = offset / gridSideVerts + 1;
x = offset % gridSideVerts + 1;
- VecCopyf(mv->co, ccgSubSurf_getFaceGridData(ss, f, grid, x, y));
+ copy_v3_v3(mv->co, ccgSubSurf_getFaceGridData(ss, f, grid, x, y));
}
} else if((vertNum < ccgdm->vertMap[0].startVert) && (ccgSubSurf_getNumEdges(ss) > 0)) {
/* this vert comes from edge data */
@@ -1043,14 +1043,14 @@ static void ccgDM_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv)
e = ccgdm->edgeMap[i].edge;
x = vertNum - ccgdm->edgeMap[i].startVert + 1;
- VecCopyf(mv->co, ccgSubSurf_getEdgeData(ss, e, x));
+ copy_v3_v3(mv->co, ccgSubSurf_getEdgeData(ss, e, x));
} else {
/* this vert comes from vert data */
CCGVert *v;
i = vertNum - ccgdm->vertMap[0].startVert;
v = ccgdm->vertMap[i].vert;
- VecCopyf(mv->co, ccgSubSurf_getVertData(ss, v));
+ copy_v3_v3(mv->co, ccgSubSurf_getVertData(ss, v));
}
}
@@ -1188,11 +1188,11 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert)
CCGFace *f = ccgdm->faceMap[index].face;
int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
- VecCopyf(mvert[i++].co, ccgSubSurf_getFaceCenterData(f));
+ copy_v3_v3(mvert[i++].co, ccgSubSurf_getFaceCenterData(f));
for(S = 0; S < numVerts; S++) {
for(x = 1; x < gridSize - 1; x++) {
- VecCopyf(mvert[i++].co,
+ copy_v3_v3(mvert[i++].co,
ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
}
}
@@ -1200,7 +1200,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert)
for(S = 0; S < numVerts; S++) {
for(y = 1; y < gridSize - 1; y++) {
for(x = 1; x < gridSize - 1; x++) {
- VecCopyf(mvert[i++].co,
+ copy_v3_v3(mvert[i++].co,
ccgSubSurf_getFaceGridData(ss, f, S, x, y));
}
}
@@ -1213,7 +1213,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert)
int x;
for(x = 1; x < edgeSize - 1; x++) {
- VecCopyf(mvert[i++].co, ccgSubSurf_getEdgeData(ss, e, x));
+ copy_v3_v3(mvert[i++].co, ccgSubSurf_getEdgeData(ss, e, x));
}
}
@@ -1221,7 +1221,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert)
for(index = 0; index < totvert; index++) {
CCGVert *v = ccgdm->vertMap[index].vert;
- VecCopyf(mvert[i].co, ccgSubSurf_getVertData(ss, v));
+ copy_v3_v3(mvert[i].co, ccgSubSurf_getVertData(ss, v));
i++;
}
@@ -1397,18 +1397,18 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) {
CCGFace *f = faceMap2[index];
int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
- VecCopyf(cos[i++], ccgSubSurf_getFaceCenterData(f));
+ copy_v3_v3(cos[i++], ccgSubSurf_getFaceCenterData(f));
for (S=0; S<numVerts; S++) {
for (x=1; x<gridSize-1; x++) {
- VecCopyf(cos[i++], ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
+ copy_v3_v3(cos[i++], ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
}
}
for (S=0; S<numVerts; S++) {
for (y=1; y<gridSize-1; y++) {
for (x=1; x<gridSize-1; x++) {
- VecCopyf(cos[i++], ccgSubSurf_getFaceGridData(ss, f, S, x, y));
+ copy_v3_v3(cos[i++], ccgSubSurf_getFaceGridData(ss, f, S, x, y));
}
}
}
@@ -1419,13 +1419,13 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) {
int x;
for (x=1; x<edgeSize-1; x++) {
- VecCopyf(cos[i++], ccgSubSurf_getEdgeData(ss, e, x));
+ copy_v3_v3(cos[i++], ccgSubSurf_getEdgeData(ss, e, x));
}
}
for (index=0; index<totvert; index++) {
CCGVert *v = vertMap2[index];
- VecCopyf(cos[i++], ccgSubSurf_getVertData(ss, v));
+ copy_v3_v3(cos[i++], ccgSubSurf_getVertData(ss, v));
}
MEM_freeN(vertMap2);
@@ -2709,17 +2709,17 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
for (i=0; i<N; i++) {
CCGEdge *e = ccgSubSurf_getVertEdge(v, i);
- VecAddf(edge_sum, edge_sum, ccgSubSurf_getEdgeData(ss, e, 1));
+ add_v3_v3v3(edge_sum, edge_sum, ccgSubSurf_getEdgeData(ss, e, 1));
}
for (i=0; i<numFaces; i++) {
CCGFace *f = ccgSubSurf_getVertFace(v, i);
- VecAddf(face_sum, face_sum, ccgSubSurf_getFaceCenterData(f));
+ add_v3_v3v3(face_sum, face_sum, ccgSubSurf_getFaceCenterData(f));
}
/* ad-hoc correction for boundary vertices, to at least avoid them
moving completely out of place (brecht) */
if(numFaces && numFaces != N)
- VecMulf(face_sum, (float)N/(float)numFaces);
+ mul_v3_fl(face_sum, (float)N/(float)numFaces);
co = ccgSubSurf_getVertData(ss, v);
positions_r[idx][0] = (co[0]*N*N + edge_sum[0]*4 + face_sum[0])/(N*(N+5));
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index 8bf0f6b8bdf..c5c23c8b6c7 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -2354,6 +2354,17 @@ void txt_backspace_word (Text *text)
txt_delete_sel(text);
}
+/* Max spaces to replace a tab with, currently hardcoded to TXT_TABSIZE = 4.
+ * Used by txt_convert_tab_to_spaces, indent and unintent.
+ * Remember to change this string according to max tab size */
+static char tab_to_spaces[] = " ";
+
+static void txt_convert_tab_to_spaces (Text *text)
+{
+ char *sb = &tab_to_spaces[text->curl->len % TXT_TABSIZE];
+ txt_insert_buf(text, sb);
+}
+
int txt_add_char (Text *text, char add)
{
int len, lineno;
@@ -2368,6 +2379,12 @@ int txt_add_char (Text *text, char add)
return 1;
}
+ /* insert spaces rather then tabs */
+ if (add == '\t') {
+ txt_convert_tab_to_spaces(text);
+ return 1;
+ }
+
txt_delete_sel(text);
mrk= txt_find_marker_region(text, text->curl, text->curc-1, text->curl->len, 0, 0);
@@ -2443,7 +2460,13 @@ void indent(Text *text)
{
int len, num;
char *tmp;
- char add = '\t';
+ /* char *addtab = "\t";
+ int tablen = 1; */
+ /* hardcoded: TXT_TABSIZE = 4 spaces: */
+ int spaceslen = TXT_TABSIZE;
+ /* hardcoded: use spaces: */
+ char *add = tab_to_spaces;
+ int indentlen = spaceslen;
if (!text) return;
if (!text->curl) return;
@@ -2452,19 +2475,19 @@ void indent(Text *text)
num = 0;
while (TRUE)
{
- tmp= MEM_mallocN(text->curl->len+2, "textline_string");
+ tmp= MEM_mallocN(text->curl->len+indentlen+1, "textline_string");
text->curc = 0;
- if(text->curc) memcpy(tmp, text->curl->line, text->curc);
- tmp[text->curc]= add;
+ if(text->curc) memcpy(tmp, text->curl->line, text->curc); /* XXX never true, check prev line */
+ memcpy(tmp+text->curc, add, indentlen);
len= text->curl->len - text->curc;
- if(len>0) memcpy(tmp+text->curc+1, text->curl->line+text->curc, len);
- tmp[text->curl->len+1]=0;
+ if(len>0) memcpy(tmp+text->curc+indentlen, text->curl->line+text->curc, len);
+ tmp[text->curl->len+indentlen]= 0;
make_new_line(text->curl, tmp);
- text->curc++;
+ text->curc+= indentlen;
txt_make_dirty(text);
txt_clean_text(text);
@@ -2494,8 +2517,12 @@ void indent(Text *text)
void unindent(Text *text)
{
int num = 0;
- char remove = '\t';
-
+ /* char *rmtab = "\t"; */
+ char *remove = tab_to_spaces;
+ /* int indenttab = 1; */
+ int indentspaces = TXT_TABSIZE;
+ int indent = indentspaces;
+
if (!text) return;
if (!text->curl) return;
if (!text->sell) return;
@@ -2504,15 +2531,14 @@ void unindent(Text *text)
{
int i = 0;
- if (text->curl->line[i] == remove)
+ if (BLI_strncasecmp(text->curl->line, remove, indent) == 0)
{
while(i< text->curl->len) {
- text->curl->line[i]= text->curl->line[i+1];
+ text->curl->line[i]= text->curl->line[i+indent];
i++;
}
- text->curl->len--;
+ text->curl->len-= indent;
}
-
txt_make_dirty(text);
txt_clean_text(text);
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 14460423999..818e6195049 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -41,7 +41,7 @@
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_kdopbvh.h"
@@ -215,7 +215,7 @@ TexMapping *add_mapping(void)
texmap->size[0]= texmap->size[1]= texmap->size[2]= 1.0f;
texmap->max[0]= texmap->max[1]= texmap->max[2]= 1.0f;
- Mat4One(texmap->mat);
+ unit_m4(texmap->mat);
return texmap;
}
@@ -224,16 +224,16 @@ void init_mapping(TexMapping *texmap)
{
float eul[3], smat[3][3], rmat[3][3], mat[3][3];
- SizeToMat3(texmap->size, smat);
+ size_to_mat3( smat,texmap->size);
eul[0]= (M_PI/180.0f)*texmap->rot[0];
eul[1]= (M_PI/180.0f)*texmap->rot[1];
eul[2]= (M_PI/180.0f)*texmap->rot[2];
- EulToMat3(eul, rmat);
+ eul_to_mat3( rmat,eul);
- Mat3MulMat3(mat, rmat, smat);
+ mul_m3_m3m3(mat, rmat, smat);
- Mat4CpyMat3(texmap->mat, mat);
+ copy_m4_m3(texmap->mat, mat);
VECCOPY(texmap->mat[3], texmap->loc);
}
@@ -518,7 +518,7 @@ void default_tex(Tex *tex)
/* ------------------------------------------------------------------------- */
-Tex *add_texture(char *name)
+Tex *add_texture(const char *name)
{
Tex *tex;
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index c75c9272e5c..b5f8bc81b81 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -42,7 +42,7 @@
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
diff --git a/source/blender/blenlib/BLI_arithb.h b/source/blender/blenlib/BLI_arithb.h
deleted file mode 100644
index 16da7d25721..00000000000
--- a/source/blender/blenlib/BLI_arithb.h
+++ /dev/null
@@ -1,571 +0,0 @@
-#undef TEST_ACTIVE
-//#define ACTIVE 1
-/**
- * blenlib/BLI_arithb.h mar 2001 Nzc
- *
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- * */
-
-#ifndef BLI_ARITHB_H
-#define BLI_ARITHB_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef WIN32
-#define _USE_MATH_DEFINES
-#endif
-
-#include <math.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-#ifndef M_PI_2
-#define M_PI_2 1.57079632679489661923
-#endif
-#ifndef M_SQRT2
-#define M_SQRT2 1.41421356237309504880
-#endif
-#ifndef M_SQRT1_2
-#define M_SQRT1_2 0.70710678118654752440
-#endif
-#ifndef M_1_PI
-#define M_1_PI 0.318309886183790671538
-#endif
-
-#ifndef M_E
-#define M_E 2.7182818284590452354
-#endif
-#ifndef M_LOG2E
-#define M_LOG2E 1.4426950408889634074
-#endif
-#ifndef M_LOG10E
-#define M_LOG10E 0.43429448190325182765
-#endif
-#ifndef M_LN2
-#define M_LN2 0.69314718055994530942
-#endif
-#ifndef M_LN10
-#define M_LN10 2.30258509299404568402
-#endif
-
-#ifndef sqrtf
-#define sqrtf(a) ((float)sqrt(a))
-#endif
-#ifndef powf
-#define powf(a, b) ((float)pow(a, b))
-#endif
-#ifndef cosf
-#define cosf(a) ((float)cos(a))
-#endif
-#ifndef sinf
-#define sinf(a) ((float)sin(a))
-#endif
-#ifndef acosf
-#define acosf(a) ((float)acos(a))
-#endif
-#ifndef asinf
-#define asinf(a) ((float)asin(a))
-#endif
-#ifndef atan2f
-#define atan2f(a, b) ((float)atan2(a, b))
-#endif
-#ifndef tanf
-#define tanf(a) ((float)tan(a))
-#endif
-#ifndef atanf
-#define atanf(a) ((float)atan(a))
-#endif
-#ifndef floorf
-#define floorf(a) ((float)floor(a))
-#endif
-#ifndef ceilf
-#define ceilf(a) ((float)ceil(a))
-#endif
-#ifndef fabsf
-#define fabsf(a) ((float)fabs(a))
-#endif
-#ifndef logf
-#define logf(a) ((float)log(a))
-#endif
-#ifndef expf
-#define expf(a) ((float)exp(a))
-#endif
-#ifndef fmodf
-#define fmodf(a, b) ((float)fmod(a, b))
-#endif
-
-#ifdef WIN32
- #ifndef FREE_WINDOWS
- #define isnan(n) _isnan(n)
- #define finite _finite
- #endif
-#endif
-
-#define MAT4_UNITY {{ 1.0, 0.0, 0.0, 0.0},\
- { 0.0, 1.0, 0.0, 0.0},\
- { 0.0, 0.0, 1.0, 0.0},\
- { 0.0, 0.0, 0.0, 1.0}}
-
-#define MAT3_UNITY {{ 1.0, 0.0, 0.0},\
- { 0.0, 1.0, 0.0},\
- { 0.0, 0.0, 1.0}}
-
-
-void CalcCent3f(float *cent, float *v1, float *v2, float *v3);
-void CalcCent4f(float *cent, float *v1, float *v2, float *v3, float *v4);
-
-void Crossf(float *c, float *a, float *b);
-void Projf(float *c, float *v1, float *v2);
-
-float Inpf(float *v1, float *v2);
-float Inp2f(float *v1, float *v2);
-
-float Normalize(float *n);
-float Normalize2(float *n);
-
-float Sqrt3f(float f);
-double Sqrt3d(double d);
-
-float saacos(float fac);
-float saasin(float fac);
-float sasqrt(float fac);
-float saacosf(float fac);
-float saasinf(float fac);
-float sasqrtf(float fac);
-
-int FloatCompare(float *v1, float *v2, float limit);
-int FloatCompare4(float *v1, float *v2, float limit);
-float FloatLerpf(float target, float origin, float fac);
-
-float CalcNormFloat(float *v1, float *v2, float *v3, float *n);
-float CalcNormFloat4(float *v1, float *v2, float *v3, float *v4, float *n);
-
-void CalcNormLong(int *v1, int *v2, int *v3, float *n);
-/* CalcNormShort: is ook uitprodukt - (translates as 'is also out/cross product') */
-void CalcNormShort(short *v1, short *v2, short *v3, float *n);
-float power_of_2(float val);
-
-/**
- * @section Euler conversion routines (With Custom Order)
- */
-
-/* Defines for rotation orders
- * WARNING: must match the eRotationModes in DNA_action_types.h
- * order matters - types are saved to file!
- */
-typedef enum eEulerRotationOrders {
- EULER_ORDER_DEFAULT = 1, /* Blender 'default' (classic) is basically XYZ */
- EULER_ORDER_XYZ = 1, /* Blender 'default' (classic) - must be as 1 to sync with PoseChannel rotmode */
- EULER_ORDER_XZY,
- EULER_ORDER_YXZ,
- EULER_ORDER_YZX,
- EULER_ORDER_ZXY,
- EULER_ORDER_ZYX,
- /* NOTE: there are about 6 more entries when including duplicated entries too */
-} eEulerRotationOrders;
-
-void EulOToQuat(float eul[3], short order, float quat[4]);
-void QuatToEulO(float quat[4], float eul[3], short order);
-
-void EulOToMat3(float eul[3], short order, float Mat[3][3]);
-void EulOToMat4(float eul[3], short order, float Mat[4][4]);
-
-void Mat3ToEulO(float Mat[3][3], float eul[3], short order);
-void Mat4ToEulO(float Mat[4][4], float eul[3], short order);
-
-void Mat3ToCompatibleEulO(float mat[3][3], float eul[3], float oldrot[3], short order);
-
-void eulerO_rot(float beul[3], float ang, char axis, short order);
-
-/**
- * @section Euler conversion routines (Blender XYZ)
- */
-
-void EulToMat3(float *eul, float mat[][3]);
-void EulToMat4(float *eul, float mat[][4]);
-
-void Mat3ToEul(float tmat[][3], float *eul);
-void Mat4ToEul(float tmat[][4],float *eul);
-
-void EulToQuat(float *eul, float *quat);
-
-void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot);
-void EulToGimbalAxis(float gmat[][3], float *eul, short order);
-
-
-void compatible_eul(float *eul, float *oldrot);
-void euler_rot(float *beul, float ang, char axis);
-
-
-/**
- * @section Quaternion arithmetic routines
- */
-
-int QuatIsNul(float *q);
-void QuatToEul(float *quat, float *eul);
-void QuatOne(float *);
-void QuatMul(float *, float *, float *);
-void QuatMulVecf(float *q, float *v);
-void QuatMulf(float *q, float f);
-void QuatMulFac(float *q, float fac);
-
-void NormalQuat(float *);
-void VecRotToQuat(float *vec, float phi, float *quat);
-
-void QuatSub(float *q, float *q1, float *q2);
-void QuatConj(float *q);
-void QuatInv(float *q);
-float QuatDot(float *q1, float *q2);
-void QuatCopy(float *q1, float *q2);
-
-void printquat(char *str, float q[4]);
-
-void QuatInterpol(float *result, float *quat1, float *quat2, float t);
-void QuatAdd(float *result, float *quat1, float *quat2, float t);
-
-void QuatToMat3(float *q, float m[][3]);
-void QuatToMat4(float *q, float m[][4]);
-
-/**
- * @section matrix multiplication and copying routines
- */
-
-void Mat3MulFloat(float *m, float f);
-void Mat4MulFloat(float *m, float f);
-void Mat4MulFloat3(float *m, float f);
-
-void Mat3Transp(float mat[][3]);
-void Mat4Transp(float mat[][4]);
-
-int Mat4Invert(float inverse[][4], float mat[][4]);
-void Mat4InvertSimp(float inverse[][4], float mat[][4]);
-void Mat4Inv(float *m1, float *m2);
-void Mat4InvGG(float out[][4], float in[][4]);
-void Mat3Inv(float m1[][3], float m2[][3]);
-
-void Mat3CpyMat4(float m1[][3],float m2[][4]);
-void Mat4CpyMat3(float m1[][4], float m2[][3]);
-
-void Mat3BlendMat3(float out[][3], float dst[][3], float src[][3], float srcweight);
-void Mat4BlendMat4(float out[][4], float dst[][4], float src[][4], float srcweight);
-
-float Det2x2(float a,float b,float c, float d);
-
-float Det3x3(
- float a1, float a2, float a3,
- float b1, float b2, float b3,
- float c1, float c2, float c3
-);
-
-float Det4x4(float m[][4]);
-
-void Mat3Adj(float m1[][3], float m[][3]);
-void Mat4Adj(float out[][4], float in[][4]);
-
-void Mat4MulMat4(float m1[][4], float m2[][4], float m3[][4]);
-void subMat4MulMat4(float *m1, float *m2, float *m3);
-#ifndef TEST_ACTIVE
-void Mat3MulMat3(float m1[][3], float m3[][3], float m2[][3]);
-#else
-void Mat3MulMat3(float *m1, float *m3, float *m2);
-#endif
-void Mat4MulMat34(float (*m1)[4], float (*m3)[3], float (*m2)[4]);
-void Mat4CpyMat4(float m1[][4], float m2[][4]);
-void Mat4SwapMat4(float m1[][4], float m2[][4]);
-void Mat3CpyMat3(float m1[][3], float m2[][3]);
-
-void Mat3MulSerie(float answ[][3],
- float m1[][3], float m2[][3], float m3[][3],
- float m4[][3], float m5[][3], float m6[][3],
- float m7[][3], float m8[][3]
-);
-
-void Mat4MulSerie(float answ[][4], float m1[][4],
- float m2[][4], float m3[][4], float m4[][4],
- float m5[][4], float m6[][4], float m7[][4],
- float m8[][4]
-);
-
-void Mat4Clr(float *m);
-void Mat3Clr(float *m);
-
-void Mat3One(float m[][3]);
-void Mat4One(float m[][4]);
-
-void Mat3Scale(float m[][3], float scale);
-void Mat4Scale(float m[][4], float scale);
-
-/* NOTE: These only normalise the matrix, they don't make it orthogonal */
-void Mat3Ortho(float mat[][3]);
-void Mat4Ortho(float mat[][4]);
-
-int IsMat3Orthogonal(float mat[][3]);
-void Mat3Orthogonal(float mat[][3], int axis); /* axis is the one to keep in place (assumes it is non-null) */
-int IsMat4Orthogonal(float mat[][4]);
-void Mat4Orthogonal(float mat[][4], int axis); /* axis is the one to keep in place (assumes it is non-null) */
-
-void VecMat4MulVecfl(float *in, float mat[][4], float *vec);
-void Mat4MulMat43(float (*m1)[4], float (*m3)[4], float (*m2)[3]);
-void Mat3IsMat3MulMat4(float m1[][3], float m2[][3], float m3[][4]);
-
-void Mat4MulVec(float mat[][4],int *vec);
-void Mat4MulVecfl(float mat[][4], float *vec);
-void Mat4Mul3Vecfl(float mat[][4], float *vec);
-void Mat4MulVec3Project(float mat[][4],float *vec);
-void Mat4MulVec4fl(float mat[][4], float *vec);
-void Mat3MulVec(float mat[][3],int *vec);
-void Mat3MulVecfl(float mat[][3], float *vec);
-void Mat3MulVecd(float mat[][3], double *vec);
-void Mat3TransMulVecfl(float mat[][3], float *vec);
-
-void Mat3AddMat3(float m1[][3], float m2[][3], float m3[][3]);
-void Mat4AddMat4(float m1[][4], float m2[][4], float m3[][4]);
-
-void VecUpMat3old(float *vec, float mat[][3], short axis);
-void VecUpMat3(float *vec, float mat[][3], short axis);
-
-void VecCopyf(float *v1, float *v2);
-int VecLen(int *v1, int *v2);
-float VecLenf(float v1[3], float v2[3]);
-float VecLength(float *v);
-void VecMulf(float *v1, float f);
-void VecNegf(float *v1);
-
-int VecLenCompare(float *v1, float *v2, float limit);
-int VecCompare(float *v1, float *v2, float limit);
-int VecEqual(float *v1, float *v2);
-int VecIsNull(float *v);
-
-void printvecf(char *str,float v[3]);
-void printvec4f(char *str, float v[4]);
-
-void VecAddf(float *v, float *v1, float *v2);
-void VecSubf(float *v, float *v1, float *v2);
-void VecMulVecf(float *v, float *v1, float *v2);
-void VecLerpf(float *target, const float *a, const float *b, const float t);
-void VecLerp3f(float p[3], const float v1[3], const float v2[3], const float v3[3], const float w[3]);
-void VecMidf(float *v, float *v1, float *v2);
-
-void VecOrthoBasisf(float *v, float *v1, float *v2);
-
-float Vec2Lenf(float *v1, float *v2);
-float Vec2Length(float *v);
-void Vec2Mulf(float *v1, float f);
-void Vec2Addf(float *v, float *v1, float *v2);
-void Vec2Subf(float *v, float *v1, float *v2);
-void Vec2Copyf(float *v1, float *v2);
-void Vec2Lerpf(float *target, const float *a, const float *b, const float t);
-void Vec2Lerp3f(float p[2], const float v1[2], const float v2[2], const float v3[2], const float w[3]);
-
-void AxisAngleToQuat(float q[4], float axis[3], float angle);
-void QuatToAxisAngle(float q[4], float axis[3], float *angle);
-void AxisAngleToEulO(float axis[3], float angle, float eul[3], short order);
-void EulOToAxisAngle(float eul[3], short order, float axis[3], float *angle);
-void AxisAngleToMat3(float axis[3], float angle, float mat[3][3]);
-void AxisAngleToMat4(float axis[3], float angle, float mat[4][4]);
-void Mat3ToAxisAngle(float mat[3][3], float axis[3], float *angle);
-void Mat4ToAxisAngle(float mat[4][4], float axis[3], float *angle);
-
-void Mat3ToVecRot(float mat[3][3], float axis[3], float *angle);
-void Mat4ToVecRot(float mat[4][4], float axis[3], float *angle);
-void VecRotToMat3(float *vec, float phi, float mat[][3]);
-void VecRotToMat4(float *vec, float phi, float mat[][4]);
-
-void RotationBetweenVectorsToQuat(float *q, float v1[3], float v2[3]);
-void vectoquat(float *vec, short axis, short upflag, float *q);
-void Mat3ToQuat_is_ok(float wmat[][3], float *q);
-
-void VecReflect(float *out, float *v1, float *v2);
-void VecBisect3(float *v, float *v1, float *v2, float *v3);
-float VecAngle2(float *v1, float *v2);
-float VecAngle3(float *v1, float *v2, float *v3);
-float NormalizedVecAngle2(float *v1, float *v2);
-
-float Vec2Angle3(float *v1, float *v2, float *v3);
-float NormalizedVecAngle2_2D(float *v1, float *v2);
-
-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);
-float PdistVL3Dfl(float *v1, float *v2, float *v3);
-void PclosestVL3Dfl(float *closest, float v1[3], float v2[3], float v3[3]);
-float AreaF2Dfl(float *v1, float *v2, float *v3);
-float AreaQ3Dfl(float *v1, float *v2, float *v3, float *v4);
-float AreaT3Dfl(float *v1, float *v2, float *v3);
-float AreaPoly3Dfl(int nr, float *verts, float *normal);
-
-/* intersect Line-Line
- return:
- -1: colliniar
- 0: no intersection of segments
- 1: exact intersection of segments
- 2: cross-intersection of segments
-*/
-extern short IsectLL2Df(float *v1, float *v2, float *v3, float *v4);
-extern short IsectLL2Ds(short *v1, short *v2, short *v3, short *v4);
-
-/*point in tri, 0 no intersection, 1 intersect */
-int IsectPT2Df(float pt[2], float v1[2], float v2[2], float v3[2]);
-/* point in quad, 0 no intersection, 1 intersect */
-int IsectPQ2Df(float pt[2], float v1[2], float v2[2], float v3[2], float v4[2]);
-
-/* interpolation weights of point in a triangle or quad, v4 may be NULL */
-void InterpWeightsQ3Dfl(float *v1, float *v2, float *v3, float *v4, float *co, float *w);
-/* interpolation weights of point in a polygon with >= 3 vertices */
-void MeanValueWeights(float v[][3], int n, float *co, float *w);
-
-void i_lookat(
- float vx, float vy,
- float vz, float px,
- float py, float pz,
- float twist, float mat[][4]
-);
-
-void i_window(
- float left, float right,
- float bottom, float top,
- float nearClip, float farClip,
- float mat[][4]
-);
-
-#define BLI_CS_SMPTE 0
-#define BLI_CS_REC709 1
-#define BLI_CS_CIE 2
-
-#define RAD2DEG(_rad) ((_rad)*(180.0/M_PI))
-#define DEG2RAD(_deg) ((_deg)*(M_PI/180.0))
-
-void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b);
-void hex_to_rgb(char *hexcol, float *r, float *g, float *b);
-void rgb_to_yuv(float r, float g, float b, float *ly, float *lu, float *lv);
-void yuv_to_rgb(float y, float u, float v, float *lr, float *lg, float *lb);
-void ycc_to_rgb(float y, float cb, float cr, float *lr, float *lg, float *lb);
-void rgb_to_ycc(float r, float g, float b, float *ly, float *lcb, float *lcr);
-void rgb_to_hsv(float r, float g, float b, float *lh, float *ls, float *lv);
-void xyz_to_rgb(float x, float y, float z, float *r, float *g, float *b, int colorspace);
-int constrain_rgb(float *r, float *g, float *b);
-unsigned int hsv_to_cpack(float h, float s, float v);
-unsigned int rgb_to_cpack(float r, float g, float b);
-void cpack_to_rgb(unsigned int col, float *r, float *g, float *b);
-void MinMaxRGB(short c[]);
-
-
-
-void VecStar(float mat[][3],float *vec);
-
-short EenheidsMat(float mat[][3]);
-
-void i_ortho(float left, float right, float bottom, float top, float nearClip, float farClip, float matrix[][4]);
-void i_polarview(float dist, float azimuth, float incidence, float twist, float Vm[][4]);
-void i_translate(float Tx, float Ty, float Tz, float mat[][4]);
-void i_multmatrix(float icand[][4], float Vm[][4]);
-void i_rotate(float angle, char axis, float mat[][4]);
-
-
-
-void MinMax3(float *min, float *max, float *vec);
-void SizeToMat3(float *size, float mat[][3]);
-void SizeToMat4(float *size, float mat[][4]);
-
-float Mat3ToScalef(float mat[][3]);
-float Mat4ToScalef(float mat[][4]);
-
-void printmatrix3(char *str, float m[][3]);
-void printmatrix4(char *str, float m[][4]);
-
-/* uit Sig.Proc.85 pag 253 */
-void Mat3ToQuat(float wmat[][3], float *q);
-void Mat4ToQuat(float m[][4], float *q);
-
-void Mat3ToSize(float mat[][3], float *size);
-void Mat4ToSize(float mat[][4], float *size);
-
-void triatoquat(float *v1, float *v2, float *v3, float *quat);
-
-void LocEulSizeToMat4(float mat[4][4], float loc[3], float eul[3], float size[3]);
-void LocEulOSizeToMat4(float mat[4][4], float loc[3], float eul[3], float size[3], short rotOrder);
-void LocQuatSizeToMat4(float mat[4][4], float loc[3], float quat[4], float size[3]);
-
-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 LineIntersectLine(float v1[3], float v2[3], float v3[3], float v4[3], float i1[3], float i2[3]);
-int LineIntersectLineStrict(float v1[3], float v2[3], float v3[3], float v4[3], float vi[3], float *lambda);
-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 RayIntersectsTriangleThreshold(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold);
-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]);
-void VecfCubicInterpol(float *x1, float *v1, float *x2, float *v2, float t, float *x, float *v);
-void PointInQuad2DUV(float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv);
-void PointInFace2DUV(int isquad, float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv);
-int IsPointInTri2D(float v1[2], float v2[2], float v3[2], float pt[2]);
-int IsPointInTri2DInts(int x1, int y1, int x2, int y2, int a, int b);
-int point_in_tri_prism(float p[3], float v1[3], float v2[3], float v3[3]);
-
-float lambda_cp_line_ex(float p[3], float l1[3], float l2[3], float cp[3]);
-
-float AngleToLength(const float angle);
-
-typedef struct DualQuat {
- float quat[4];
- float trans[4];
-
- float scale[4][4];
- float scale_weight;
-} DualQuat;
-
-void Mat4ToDQuat(float basemat[][4], float mat[][4], DualQuat *dq);
-void DQuatToMat4(DualQuat *dq, float mat[][4]);
-void DQuatAddWeighted(DualQuat *dqsum, DualQuat *dq, float weight);
-void DQuatNormalize(DualQuat *dq, float totweight);
-void DQuatMulVecfl(DualQuat *dq, float *co, float mat[][3]);
-void DQuatCpyDQuat(DualQuat *dq1, DualQuat *dq2);
-
-/* Tangent stuff */
-typedef struct VertexTangent {
- float tang[3], uv[2];
- struct VertexTangent *next;
-} VertexTangent;
-
-void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, float *tang, float *uv);
-float *find_vertex_tangent(VertexTangent *vtang, float *uv);
-void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, float *co3, float *n, float *tang);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/source/blender/blenlib/BLI_dlrbTree.h b/source/blender/blenlib/BLI_dlrbTree.h
index a17cbbd1993..bced738b4e7 100644
--- a/source/blender/blenlib/BLI_dlrbTree.h
+++ b/source/blender/blenlib/BLI_dlrbTree.h
@@ -54,10 +54,10 @@ typedef struct DLRBT_Node {
} DLRBT_Node;
/* Red/Black defines for tree_col */
-enum eDLRBT_Colors {
+typedef enum eDLRBT_Colors {
DLRBT_BLACK= 0,
DLRBT_RED,
-};
+} eDLRBT_Colors;
/* -------- */
@@ -70,9 +70,30 @@ typedef struct DLRBT_Tree {
void *root; /* this should be based on DLRBT_Node-s */
} DLRBT_Tree;
+/* Callback Types --------------------------------- */
+
+/* return -1, 0, 1 for whether the given data is less than, equal to, or greater than the given node
+ * - node: <DLRBT_Node> the node to compare to
+ * - data: pointer to the relevant data or values stored in the bitpattern dependant on the function
+ */
+typedef short (*DLRBT_Comparator_FP)(void *node, void *data);
+
+/* return a new node instance wrapping the given data
+ * - data: pointer to the relevant data to create a subclass of node from
+ */
+typedef DLRBT_Node *(*DLRBT_NAlloc_FP)(void *data);
+
+/* update an existing node instance accordingly to be in sync with the given data *
+ * - node: <DLRBT_Node> the node to update
+ * - data: pointer to the relevant data or values stored in the bitpattern dependant on the function
+ */
+typedef void (*DLRBT_NUpdate_FP)(void *node, void *data);
+
/* ********************************************** */
/* Public API */
+/* ADT Management ------------------------------- */
+
/* Create a new tree, and initialise as necessary */
DLRBT_Tree *BLI_dlrbTree_new(void);
@@ -86,16 +107,52 @@ void BLI_dlrbTree_free(DLRBT_Tree *tree);
void BLI_dlrbTree_linkedlist_sync(DLRBT_Tree *tree);
+/* Searching ------------------------------------ */
-/* Balance the tree after the given element has been added to it
- * (using custom code, in the Binary Tree way).
+/* Find the node which matches or is the closest to the requested node */
+DLRBT_Node *BLI_dlrbTree_search(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data);
+
+/* Find the node which exactly matches the required data */
+DLRBT_Node *BLI_dlrbTree_search_exact(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data);
+
+/* Find the node which occurs immediately before the best matching node */
+DLRBT_Node *BLI_dlrbTree_search_prev(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data);
+
+/* Find the node which occurs immediately after the best matching node */
+DLRBT_Node *BLI_dlrbTree_search_next(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data);
+
+
+/* Check whether there is a node matching the requested node */
+short BLI_dlrbTree_contains(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data);
+
+
+/* Node Operations (Managed) --------------------- */
+/* These methods automate the process of adding/removing nodes from the BST,
+ * using the supplied data and callbacks
*/
-void BLI_dlrbTree_insert(DLRBT_Tree *tree, DLRBT_Node *node);
+
+/* Add the given data to the tree, and return the node added */
+// NOTE: for duplicates, the update_cb is called (if available), and the existing node is returned
+DLRBT_Node *BLI_dlrbTree_add(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb,
+ DLRBT_NAlloc_FP new_cb, DLRBT_NUpdate_FP update_cb, void *data);
+
/* Remove the given element from the tree and balance again */
// FIXME: this is not implemented yet...
void BLI_dlrbTree_remove(DLRBT_Tree *tree, DLRBT_Node *node);
+/* Node Operations (Manual) --------------------- */
+/* These methods require custom code for creating BST nodes and adding them to the
+ * tree in special ways, such that the node can then be balanced.
+ *
+ * It is recommended that these methods are only used where the other method is too cumbersome...
+ */
+
+/* Balance the tree after the given node has been added to it
+ * (using custom code, in the Binary Tree way).
+ */
+void BLI_dlrbTree_insert(DLRBT_Tree *tree, DLRBT_Node *node);
+
/* ********************************************** */
#endif // BLI_DLRB_TREE_H
diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h
index 21b4c83bd88..bd735888f95 100644
--- a/source/blender/blenlib/BLI_listbase.h
+++ b/source/blender/blenlib/BLI_listbase.h
@@ -55,7 +55,7 @@ void BLI_sortlist(struct ListBase *listbase, int (*cmp)(void *, void *));
void BLI_freelist(struct ListBase *listbase);
int BLI_countlist(struct ListBase *listbase);
void BLI_freelinkN(struct ListBase *listbase, void *vlink);
-void BLI_duplicatelist(struct ListBase *list1, struct ListBase *list2); /* copy from 2 to 1 */
+void BLI_duplicatelist(struct ListBase *list1, const struct ListBase *list2);
/* create a generic list node containing link to provided data */
struct LinkData *BLI_genericNodeN(void *data);
diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h
index 05530bce0e5..c50d9caade0 100644
--- a/source/blender/blenlib/BLI_math_geom.h
+++ b/source/blender/blenlib/BLI_math_geom.h
@@ -43,7 +43,7 @@ float normal_quad_v3(float r[3], float a[3], float b[3], float c[3], float d[3])
float area_tri_v2(float a[2], float b[2], float c[2]);
float area_tri_v3(float a[3], float b[3], float c[3]);
float area_quad_v3(float a[3], float b[3], float c[3], float d[3]);
-float area_poly_v3(int nr, float *verts, float normal[3]); // TODO float verts[][3]
+float area_poly_v3(int nr, float verts[][3], float normal[3]);
/********************************* Distance **********************************/
@@ -56,7 +56,6 @@ void closest_to_line_segment_v3(float r[3], float p[3], float l1[3], float l2[3]
/******************************* Intersection ********************************/
-/* TODO return values are not always first yet */
/* TODO int return value consistency */
/* line-line */
@@ -65,8 +64,8 @@ void closest_to_line_segment_v3(float r[3], float p[3], float l1[3], float l2[3]
#define ISECT_LINE_LINE_EXACT 1
#define ISECT_LINE_LINE_CROSS 2
-short isect_line_line_v2(float a1[2], float a2[2], float b1[2], float b2[2]); // TODO return int
-short isect_line_line_v2_short(short a1[2], short a2[2], short b1[2], short b2[2]); // TODO return int
+int isect_line_line_v2(float a1[2], float a2[2], float b1[2], float b2[2]);
+int isect_line_line_v2_short(short a1[2], short a2[2], short b1[2], short b2[2]);
/* Returns the number of point of interests
* 0 - lines are colinear
@@ -149,6 +148,12 @@ void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang,
void tangent_from_uv(float *uv1, float *uv2, float *uv3,
float *co1, float *co2, float *co3, float *n, float *tang);
+/********************************* vector clouds******************************/
+
+
+void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight,
+ float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h
index 9a9c1be6258..5667fb79332 100644
--- a/source/blender/blenlib/BLI_math_matrix.h
+++ b/source/blender/blenlib/BLI_math_matrix.h
@@ -43,8 +43,8 @@ extern "C" {
{ 0.0, 1.0, 0.0},\
{ 0.0, 0.0, 1.0}}
-void zero_m3(float *R); // TODO R[3][3]);
-void zero_m4(float *R); // TODO R[4][4]);
+void zero_m3(float R[3][3]);
+void zero_m4(float R[4][4]);
void unit_m3(float R[3][3]);
void unit_m4(float R[4][4]);
@@ -62,8 +62,6 @@ void swap_m4m4(float A[4][4], float B[4][4]);
void add_m3_m3m3(float R[3][3], float A[3][3], float B[3][3]);
void add_m4_m4m4(float R[4][4], float A[4][4], float B[4][4]);
-// TODO review mul order
-
void mul_m3_m3m3(float R[3][3], float A[3][3], float B[3][3]);
void mul_m4_m4m4(float R[4][4], float A[4][4], float B[4][4]);
void mul_m4_m3m4(float R[4][4], float A[3][3], float B[4][4]);
@@ -77,24 +75,25 @@ void mul_serie_m4(float R[4][4],
float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4],
float M5[4][4], float M6[4][4], float M7[4][4], float M8[4][4]);
-void mul_m4_v3(float M[4][4], float r[3]); // TODO order
+void mul_m4_v3(float M[4][4], float r[3]);
void mul_v3_m4v3(float r[3], float M[4][4], float v[3]);
-void mul_no_transl_m4v3(float M[4][4], float r[3]);
-void mul_m4_v4(float M[4][4], float r[3]); // TODO order
-void mul_project_m4_v4(float M[4][4], float r[3]); // TODO order
+void mul_mat3_m4_v3(float M[4][4], float r[3]);
+void mul_m4_v4(float M[4][4], float r[3]);
+void mul_project_m4_v4(float M[4][4], float r[3]);
-void mul_m3_v3(float M[3][3], float r[3]); // TODO order
-void mul_transposed_m3_v3(float M[3][3], float r[3]); // TODO order
+void mul_m3_v3(float M[3][3], float r[3]);
+void mul_v3_m3v3(float r[3], float M[3][3], float a[3]);
+void mul_transposed_m3_v3(float M[3][3], float r[3]);
void mul_m3_v3_double(float M[3][3], double r[3]);
-void mul_m3_fl(float *R, float f); // TODO R[3][3], float f);
-void mul_m4_fl(float *R, float f); // TODO R[4][4], float f);
-void mul_no_transl_m4_fl(float *R, float f); // TODO R[4][4], float f);
+void mul_m3_fl(float R[3][3], float f);
+void mul_m4_fl(float R[4][4], float f);
+void mul_mat3_m4_fl(float R[4][4], float f);
-void invert_m3(float R[3][3]);
-void invert_m3_m3(float R[3][3], float A[3][3]);
-void invert_m4(float R[4][4]); // TODO does not exist
-int invert_m4_m4(float R[4][4], float A[4][4]); // TODO return int
+int invert_m3(float R[3][3]);
+int invert_m3_m3(float R[3][3], float A[3][3]);
+int invert_m4(float R[4][4]);
+int invert_m4_m4(float R[4][4], float A[4][4]);
/****************************** Linear Algebra *******************************/
@@ -113,9 +112,6 @@ int is_orthogonal_m4(float mat[4][4]);
void adjoint_m3_m3(float R[3][3], float A[3][3]);
void adjoint_m4_m4(float R[4][4], float A[4][4]);
-//float determinant_m2(float A[2][2]); // TODO params
-//float determinant_m3(float A[3][3]); // TODO params
-
float determinant_m2(
float a, float b,
float c, float d);
diff --git a/source/blender/blenlib/BLI_math_rotation.h b/source/blender/blenlib/BLI_math_rotation.h
index b1546e3db6c..b221d89487f 100644
--- a/source/blender/blenlib/BLI_math_rotation.h
+++ b/source/blender/blenlib/BLI_math_rotation.h
@@ -44,7 +44,7 @@ void copy_qt_qt(float q[4], float a[4]);
/* arithmetic */
void mul_qt_qtqt(float q[4], float a[4], float b[4]);
-void mul_qt_v3(float q[4], float r[3]); // TODO order
+void mul_qt_v3(float q[4], float r[3]);
void mul_qt_fl(float q[4], float f);
void mul_fac_qt_fl(float q[4], float f);
@@ -60,7 +60,7 @@ int is_zero_qt(float q[4]);
/* interpolation */
void interp_qt_qtqt(float q[4], float a[4], float b[4], float t);
-void add_qt_qtqt(float q[4], float a[4], float b[4], float t); // TODO name
+void add_qt_qtqt(float q[4], float a[4], float b[4], float t);
/* conversion */
void quat_to_mat3(float mat[3][3], float q[4]);
@@ -72,7 +72,8 @@ void tri_to_quat(float q[4], float a[3], float b[3], float c[3]);
void vec_to_quat(float q[4], float vec[3], short axis, short upflag);
void rotation_between_vecs_to_quat(float q[4], float v1[3], float v2[3]);
-void Mat3ToQuat_is_ok(float wmat[][3], float *q); // TODO what is this?
+/* TODO: don't what this is, but it's not the same as mat3_to_quat */
+void mat3_to_quat_is_ok(float q[4], float mat[3][3]);
/* other */
void print_qt(char *str, float q[4]);
@@ -96,7 +97,7 @@ void mat4_to_axis_angle(float axis[3], float *angle, float M[4][4]);
void mat3_to_vec_rot(float vec[3], float *phi, float mat[3][3]);
void mat4_to_vec_rot(float vec[3], float *phi, float mat[4][4]);
-void vec_rot_to_quat(float quat[4], float vec[3], float phi); // TODO
+void vec_rot_to_quat(float quat[4], float vec[3], float phi);
void vec_rot_to_mat3(float mat[3][3], float vec[3], float phi);
void vec_rot_to_mat4(float mat[4][4], float vec[3], float phi);
diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h
index 1cb1912208e..399c234a108 100644
--- a/source/blender/blenlib/BLI_math_vector.h
+++ b/source/blender/blenlib/BLI_math_vector.h
@@ -32,64 +32,82 @@
extern "C" {
#endif
+/* add platform/compiler checks here if it is not supported */
+#define BLI_MATH_INLINE
+
+#ifdef BLI_MATH_INLINE
+#ifdef _MSC_VER
+#define MINLINE static __inline
+#else
+#define MINLINE static inline
+#endif
+#include "intern/math_vector_inline.c"
+#else
#define MINLINE
-
-//#define static inline
-//#include "intern/math_vector_inline.h"
+#endif
/************************************* Init ***********************************/
-void zero_v2(float r[2]);
-void zero_v3(float r[3]);
+MINLINE void zero_v2(float r[2]);
+MINLINE void zero_v3(float r[3]);
-void copy_v2_v2(float r[2], float a[2]);
-void copy_v3_v3(float r[3], float a[3]);
+MINLINE void copy_v2_v2(float r[2], float a[2]);
+MINLINE void copy_v3_v3(float r[3], float a[3]);
+
+MINLINE void swap_v2_v2(float a[2], float b[2]);
+MINLINE void swap_v3_v3(float a[3], float b[3]);
/********************************* Arithmetic ********************************/
-void add_v2_v2(float r[2], float a[2]);
-void add_v2_v2v2(float r[2], float a[2], float b[2]);
-void add_v3_v3(float r[3], float a[3]);
-void add_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE void add_v2_v2(float r[2], float a[2]);
+MINLINE void add_v2_v2v2(float r[2], float a[2], float b[2]);
+MINLINE void add_v3_v3(float r[3], float a[3]);
+MINLINE void add_v3_v3v3(float r[3], float a[3], float b[3]);
+
+MINLINE void sub_v2_v2(float r[2], float a[2]);
+MINLINE void sub_v2_v2v2(float r[2], float a[2], float b[2]);
+MINLINE void sub_v3_v3(float r[3], float a[3]);
+MINLINE void sub_v3_v3v3(float r[3], float a[3], float b[3]);
-void sub_v2_v2(float r[2], float a[2]);
-void sub_v2_v2v2(float r[2], float a[2], float b[2]);
-void sub_v3_v3(float r[3], float a[3]);
-void sub_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE void mul_v2_fl(float r[2], float f);
+MINLINE void mul_v3_fl(float r[3], float f);
+MINLINE void mul_v3_v3fl(float r[3], float a[3], float f);
+MINLINE void mul_v3_v3(float r[3], float a[3]);
+MINLINE void mul_v3_v3v3(float r[3], float a[3], float b[3]);
-void mul_v2_fl(float r[2], float f);
-void mul_v3_fl(float r[3], float f);
-void mul_v3_v3fl(float r[3], float a[3], float f);
-void mul_v3_v3(float r[3], float a[3]);
-void mul_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE void madd_v3_v3fl(float r[3], float a[3], float f);
+MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f);
+MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]);
-void negate_v3(float r[3]);
-void negate_v3_v3(float r[3], float a[3]);
+MINLINE void negate_v3(float r[3]);
+MINLINE void negate_v3_v3(float r[3], float a[3]);
-float dot_v2v2(float a[2], float b[2]);
-float dot_v3v3(float a[3], float b[3]);
+MINLINE float dot_v2v2(float a[2], float b[2]);
+MINLINE float dot_v3v3(float a[3], float b[3]);
-float cross_v2v2(float a[2], float b[2]);
-void cross_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE float cross_v2v2(float a[2], float b[2]);
+MINLINE void cross_v3_v3v3(float r[3], float a[3], float b[3]);
-void star_m3_v3(float R[3][3],float a[3]);
+MINLINE void star_m3_v3(float R[3][3],float a[3]);
/*********************************** Length **********************************/
-float len_v2(float a[2]);
-float len_v2v2(float a[2], float b[2]);
-float len_v3(float a[3]);
-float len_v3v3(float a[3], float b[3]);
+MINLINE float len_v2(float a[2]);
+MINLINE float len_v2v2(float a[2], float b[2]);
+MINLINE float len_v3(float a[3]);
+MINLINE float len_v3v3(float a[3], float b[3]);
-float normalize_v2(float r[2]);
-float normalize_v3(float r[3]);
+MINLINE float normalize_v2(float r[2]);
+MINLINE float normalize_v3(float r[3]);
/******************************* Interpolation *******************************/
-void interp_v2_v2v2(float r[2], const float a[2], const float b[2], const float t); // TODO const
-void interp_v2_v2v2v2(float r[2], const float a[2], const float b[2], const float c[3], const float t[3]); // TODO const
-void interp_v3_v3v3(float r[3], const float a[3], const float b[3], const float t); // TODO const
-void interp_v3_v3v3v3(float p[3], const float v1[3], const float v2[3], const float v3[3], const float w[3]); // TODO const
+void interp_v2_v2v2(float r[2], float a[2], float b[2], float t);
+void interp_v2_v2v2v2(float r[2], float a[2], float b[2], float c[3], float t[3]);
+void interp_v3_v3v3(float r[3], float a[3], float b[3], float t);
+void interp_v3_v3v3v3(float p[3], float v1[3], float v2[3], float v3[3], float w[3]);
+void interp_v3_v3v3v3v3(float p[3], float v1[3], float v2[3], float v3[3], float v4[3], float w[4]);
void mid_v3_v3v3(float r[3], float a[3], float b[3]);
@@ -127,8 +145,8 @@ void print_v2(char *str, float a[2]);
void print_v3(char *str, float a[3]);
void print_v4(char *str, float a[4]);
-void normal_short_to_float_v3(float r[3], short n[3]);
-void normal_float_to_short_v3(short r[3], float n[3]);
+MINLINE void normal_short_to_float_v3(float r[3], short n[3]);
+MINLINE void normal_float_to_short_v3(short r[3], float n[3]);
void minmax_v3_v3v3(float r[3], float min[3], float max[3]);
diff --git a/source/blender/blenlib/BLI_util.h b/source/blender/blenlib/BLI_util.h
index 7642b71eea0..ca483903d46 100644
--- a/source/blender/blenlib/BLI_util.h
+++ b/source/blender/blenlib/BLI_util.h
@@ -61,7 +61,7 @@ void BLI_split_dirfile_basic(const char *string, char *dir, char *file);
void BLI_join_dirfile(char *string, const char *dir, const char *file);
void BLI_getlastdir(const char* dir, char *last, int maxlen);
int BLI_testextensie(const char *str, const char *ext);
-void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
+void BLI_uniquename(struct ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len);
void BLI_newname(char * name, int add);
int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen);
void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic);
diff --git a/source/blender/blenlib/intern/BLI_bfile.c b/source/blender/blenlib/intern/BLI_bfile.c
index 042cf4beffc..d9f6c8ad96f 100644
--- a/source/blender/blenlib/intern/BLI_bfile.c
+++ b/source/blender/blenlib/intern/BLI_bfile.c
@@ -27,9 +27,9 @@
#include <string.h>
#include <stdlib.h>
#ifndef WIN32
+ #include <libgen.h>
#include <unistd.h>
#include <sys/param.h>
-// #include <libgen.h>
#else
#include <io.h>
#include "BLI_winstuff.h"
diff --git a/source/blender/blenlib/intern/BLI_kdopbvh.c b/source/blender/blenlib/intern/BLI_kdopbvh.c
index eea49254a0e..3f4b9fbae25 100644
--- a/source/blender/blenlib/intern/BLI_kdopbvh.c
+++ b/source/blender/blenlib/intern/BLI_kdopbvh.c
@@ -37,7 +37,7 @@
#include "BKE_utildefines.h"
#include "BLI_kdopbvh.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#ifdef _OPENMP
#include <omp.h>
@@ -332,10 +332,12 @@ static void sort(BVHNode **a0, int begin, int end, int axis)
bvh_insertionsort(a, begin, end, axis);
}
}
+#if 0
static void sort_along_axis(BVHTree *tree, int start, int end, int axis)
{
sort(tree->nodes, start, end, axis);
}
+#endif
//after a call to this function you can expect one of:
// every node to left of a[n] are smaller or equal to it
@@ -1532,6 +1534,7 @@ static void dfs_raycast(BVHRayCastData *data, BVHNode *node)
}
}
+#if 0
static void iterative_raycast(BVHRayCastData *data, BVHNode *node)
{
while(node)
@@ -1562,6 +1565,7 @@ static void iterative_raycast(BVHRayCastData *data, BVHNode *node)
}
}
}
+#endif
int BLI_bvhtree_ray_cast(BVHTree *tree, const float *co, const float *dir, float radius, BVHTreeRayHit *hit, BVHTree_RayCastCallback callback, void *userdata)
{
@@ -1578,7 +1582,7 @@ int BLI_bvhtree_ray_cast(BVHTree *tree, const float *co, const float *dir, float
VECCOPY(data.ray.direction, dir);
data.ray.radius = radius;
- Normalize(data.ray.direction);
+ normalize_v3(data.ray.direction);
for(i=0; i<3; i++)
{
@@ -1635,7 +1639,7 @@ float BLI_bvhtree_bb_raycast(float *bv, float *light_start, float *light_end, fl
data.ray.origin[1] = light_start[1];
data.ray.origin[2] = light_start[2];
- Normalize(data.ray.direction);
+ normalize_v3(data.ray.direction);
VECCOPY(data.ray_dot_axis, data.ray.direction);
dist = ray_nearest_hit(&data, bv);
diff --git a/source/blender/blenlib/intern/BLI_kdtree.c b/source/blender/blenlib/intern/BLI_kdtree.c
index ccf79ed42dc..abf61bfb734 100644
--- a/source/blender/blenlib/intern/BLI_kdtree.c
+++ b/source/blender/blenlib/intern/BLI_kdtree.c
@@ -34,7 +34,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_kdtree.h"
#define SWAP(type, a, b) { type sw_ap; sw_ap=(a); (a)=(b); (b)=sw_ap; }
@@ -76,8 +76,8 @@ void BLI_kdtree_insert(KDTree *tree, int index, float *co, float *nor)
KDTreeNode *node= &tree->nodes[tree->totnode++];
node->index= index;
- VecCopyf(node->co, co);
- if(nor) VecCopyf(node->nor, nor);
+ copy_v3_v3(node->co, co);
+ if(nor) copy_v3_v3(node->nor, nor);
}
static KDTreeNode *kdtree_balance(KDTreeNode *nodes, int totnode, int axis)
@@ -225,7 +225,7 @@ int BLI_kdtree_find_nearest(KDTree *tree, float *co, float *nor, KDTreeNearest *
if(nearest) {
nearest->index= min_node->index;
nearest->dist= sqrt(min_dist);
- VecCopyf(nearest->co, min_node->co);
+ copy_v3_v3(nearest->co, min_node->co);
}
if(stack != defaultstack)
@@ -249,7 +249,7 @@ static void add_nearest(KDTreeNearest *ptn, int *found, int n, int index, float
ptn[i].index= index;
ptn[i].dist= dist;
- VecCopyf(ptn[i].co, co);
+ copy_v3_v3(ptn[i].co, co);
}
/* finds the nearest n entries in tree to specified coordinates */
@@ -366,7 +366,7 @@ static void add_in_range(KDTreeNearest **ptn, int found, int *totfoundstack, int
to->index = index;
to->dist = sqrt(dist);
- VecCopyf(to->co, co);
+ copy_v3_v3(to->co, co);
}
int BLI_kdtree_range_search(KDTree *tree, float range, float *co, float *nor, KDTreeNearest **nearest)
{
diff --git a/source/blender/blenlib/intern/DLRB_tree.c b/source/blender/blenlib/intern/DLRB_tree.c
index af9774c6afd..8eb743e282c 100644
--- a/source/blender/blenlib/intern/DLRB_tree.c
+++ b/source/blender/blenlib/intern/DLRB_tree.c
@@ -130,6 +130,155 @@ void BLI_dlrbTree_linkedlist_sync (DLRBT_Tree *tree)
}
/* *********************************************** */
+/* Tree Search Utilities */
+
+/* Find the node which matches or is the closest to the requested node */
+DLRBT_Node *BLI_dlrbTree_search (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
+{
+ DLRBT_Node *node = (tree) ? tree->root : NULL;
+ short found= 0;
+
+ /* check that there is a comparator to use */
+ // TODO: if no comparator is supplied, try using the one supplied with the tree...
+ if (cmp_cb == NULL)
+ return NULL;
+
+ /* iteratively perform this search */
+ while (node && found==0)
+ {
+ /* check if traverse further or not
+ * NOTE: it is assumed that the values will be unit values only
+ */
+ switch (cmp_cb(node, search_data)) {
+ case -1: /* data less than node */
+ if (node->left)
+ node= node->left;
+ else
+ found= 1;
+ break;
+
+ case 1: /* data greater than node */
+ if (node->right)
+ node= node->right;
+ else
+ found= 1;
+ break;
+
+ default: /* data equals node */
+ found= 1;
+ break;
+ }
+ }
+
+ /* return the nearest matching node */
+ return node;
+}
+
+/* Find the node which exactly matches the required data */
+DLRBT_Node *BLI_dlrbTree_search_exact (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
+{
+ DLRBT_Node *node = (tree) ? tree->root : NULL;
+ short found= 0;
+
+ /* check that there is a comparator to use */
+ // TODO: if no comparator is supplied, try using the one supplied with the tree...
+ if (cmp_cb == NULL)
+ return NULL;
+
+ /* iteratively perform this search */
+ while (node && found==0)
+ {
+ /* check if traverse further or not
+ * NOTE: it is assumed that the values will be unit values only
+ */
+ switch (cmp_cb(node, search_data)) {
+ case -1: /* data less than node */
+ if (node->left)
+ node= node->left;
+ else
+ found= -1;
+ break;
+
+ case 1: /* data greater than node */
+ if (node->right)
+ node= node->right;
+ else
+ found= -1;
+ break;
+
+ default: /* data equals node */
+ found= 1;
+ break;
+ }
+ }
+
+ /* return the nearest matching node */
+ return (found == 1) ? (node) : (NULL);
+}
+
+/* Find the node which occurs immediately before the best matching node */
+DLRBT_Node *BLI_dlrbTree_search_prev (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
+{
+ DLRBT_Node *node;
+
+ /* check that there is a comparator to use */
+ // TODO: if no comparator is supplied, try using the one supplied with the tree...
+ if (cmp_cb == NULL)
+ return NULL;
+
+ /* get the node which best matches this description */
+ node= BLI_dlrbTree_search(tree, cmp_cb, search_data);
+
+ if (node) {
+ /* if the item we're searching for is greater than the node found, we've found the match */
+ if (cmp_cb(node, search_data) > 0)
+ return node;
+
+ /* return the previous node otherwise */
+ // NOTE: what happens if there is no previous node?
+ return node->prev;
+ }
+
+ /* nothing matching was found */
+ return NULL;
+}
+
+/* Find the node which occurs immediately after the best matching node */
+DLRBT_Node *BLI_dlrbTree_search_next (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
+{
+ DLRBT_Node *node;
+
+ /* check that there is a comparator to use */
+ // TODO: if no comparator is supplied, try using the one supplied with the tree...
+ if (cmp_cb == NULL)
+ return NULL;
+
+ /* get the node which best matches this description */
+ node= BLI_dlrbTree_search(tree, cmp_cb, search_data);
+
+ if (node) {
+ /* if the item we're searching for is less than the node found, we've found the match */
+ if (cmp_cb(node, search_data) < 0)
+ return node;
+
+ /* return the previous node otherwise */
+ // NOTE: what happens if there is no previous node?
+ return node->next;
+ }
+
+ /* nothing matching was found */
+ return NULL;
+}
+
+
+/* Check whether there is a node matching the requested node */
+short BLI_dlrbTree_contains(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
+{
+ /* check if an exact search throws up anything... */
+ return (BLI_dlrbTree_search_exact(tree, cmp_cb, search_data) != NULL);
+}
+
+/* *********************************************** */
/* Tree Relationships Utilities */
/* get the 'grandparent' - the parent of the parent - of the given node */
@@ -161,6 +310,7 @@ static DLRBT_Node *get_uncle (DLRBT_Node *node)
/* *********************************************** */
/* Tree Rotation Utilities */
+/* make right child of 'root' the new root */
static void rotate_left (DLRBT_Tree *tree, DLRBT_Node *root)
{
DLRBT_Node **root_slot, *pivot;
@@ -194,6 +344,7 @@ static void rotate_left (DLRBT_Tree *tree, DLRBT_Node *root)
*root_slot= pivot;
}
+/* make the left child of the 'root' the new root */
static void rotate_right (DLRBT_Tree *tree, DLRBT_Node *root)
{
DLRBT_Node **root_slot, *pivot;
@@ -332,7 +483,7 @@ static void insert_check_3 (DLRBT_Tree *tree, DLRBT_Node *node)
/* Balance the tree after the given element has been added to it
* (using custom code, in the Binary Tree way).
*/
-void BLI_dlrbTree_insert(DLRBT_Tree *tree, DLRBT_Node *node)
+void BLI_dlrbTree_insert (DLRBT_Tree *tree, DLRBT_Node *node)
{
/* sanity checks */
if ((tree == NULL) || (node == NULL))
@@ -345,6 +496,90 @@ void BLI_dlrbTree_insert(DLRBT_Tree *tree, DLRBT_Node *node)
insert_check_1(tree, node);
}
+/* ----- */
+
+/* Add the given data to the tree, and return the node added */
+// NOTE: for duplicates, the update_cb is called (if available), and the existing node is returned
+DLRBT_Node *BLI_dlrbTree_add(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb,
+ DLRBT_NAlloc_FP new_cb, DLRBT_NUpdate_FP update_cb, void *data)
+{
+ DLRBT_Node *parNode, *node=NULL;
+ short new_node = 0;
+
+ /* sanity checks */
+ if (tree == NULL)
+ return NULL;
+
+ // TODO: if no comparator is supplied, try using the one supplied with the tree...
+ if (cmp_cb == NULL)
+ return NULL;
+ // TODO: if no allocator is supplied, try using the one supplied with the tree...
+ if (new_cb == NULL)
+ return NULL;
+ // TODO: if no updater is supplied, try using the one supplied with the tree...
+
+ /* try to find the nearest node to this one */
+ parNode= BLI_dlrbTree_search(tree, cmp_cb, data);
+
+ /* add new node to the BST in the 'standard way' as appropriate
+ * NOTE: we do not support duplicates in our tree...
+ */
+ if (parNode) {
+ /* check how this new node compares with the existing ones
+ * NOTE: it is assumed that the values will be unit values only
+ */
+ switch (cmp_cb(parNode, data)) {
+ case -1: /* add new node as left child */
+ {
+ node= new_cb(data);
+ new_node= 1;
+
+ parNode->left= node;
+ node->parent= parNode;
+ }
+ break;
+
+ case 1: /* add new node as right child */
+ {
+ node= new_cb(data);
+ new_node= 1;
+
+ parNode->right= node;
+ node->parent= parNode;
+ }
+ break;
+
+ default: /* update the duplicate node as appropriate */
+ {
+ if (update_cb)
+ update_cb(parNode, data);
+ }
+ break;
+ }
+ }
+ else {
+ /* no nodes in the tree yet... add a new node as the root */
+ node= new_cb(data);
+ new_node= 1;
+
+ tree->root= node;
+ }
+
+ /* if a new node was added, it should be tagged as red, and then balanced as appropriate */
+ if (new_node) {
+ /* tag this new node as being 'red' */
+ node->tree_col= DLRBT_RED;
+
+ /* perform BST balancing steps:
+ * start from case 1, an trek through the tail-recursive insertion checks
+ */
+ insert_check_1(tree, node);
+ }
+
+ /* return the node added */
+ return node;
+}
+
/* *********************************************** */
/* Remove */
diff --git a/source/blender/blenlib/intern/arithb.c b/source/blender/blenlib/intern/arithb.c
deleted file mode 100644
index 874756135e5..00000000000
--- a/source/blender/blenlib/intern/arithb.c
+++ /dev/null
@@ -1,5488 +0,0 @@
-/* arithb.c
- *
- * simple math for blender code
- *
- * sort of cleaned up mar-01 nzc
- *
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-/* ************************ FUNKTIES **************************** */
-
-#include <stdlib.h>
-#include <math.h>
-#include <sys/types.h>
-#include <string.h>
-#include <float.h>
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#if defined(__sun__) || defined( __sun ) || defined (__sparc) || defined (__sparc__)
-#include <strings.h>
-#endif
-
-#if !defined(__sgi) && !defined(WIN32)
-#include <sys/time.h>
-#include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include "BLI_arithb.h"
-#include "BLI_memarena.h"
-
-/* A few small defines. Keep'em local! */
-#define SMALL_NUMBER 1.e-8
-#define ABS(x) ((x) < 0 ? -(x) : (x))
-#define SWAP(type, a, b) { type sw_ap; sw_ap=(a); (a)=(b); (b)=sw_ap; }
-#define CLAMP(a, b, c) if((a)<(b)) (a)=(b); else if((a)>(c)) (a)=(c)
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#ifndef M_SQRT2
-#define M_SQRT2 1.41421356237309504880
-#endif
-
-
-float saacos(float fac)
-{
- if(fac<= -1.0f) return (float)M_PI;
- else if(fac>=1.0f) return 0.0;
- else return (float)acos(fac);
-}
-
-float saasin(float fac)
-{
- if(fac<= -1.0f) return (float)-M_PI/2.0f;
- else if(fac>=1.0f) return (float)M_PI/2.0f;
- else return (float)asin(fac);
-}
-
-float sasqrt(float fac)
-{
- if(fac<=0.0) return 0.0;
- return (float)sqrt(fac);
-}
-
-float saacosf(float fac)
-{
- if(fac<= -1.0f) return (float)M_PI;
- else if(fac>=1.0f) return 0.0f;
- else return (float)acosf(fac);
-}
-
-float saasinf(float fac)
-{
- if(fac<= -1.0f) return (float)-M_PI/2.0f;
- else if(fac>=1.0f) return (float)M_PI/2.0f;
- else return (float)asinf(fac);
-}
-
-float sasqrtf(float fac)
-{
- if(fac<=0.0) return 0.0;
- return (float)sqrtf(fac);
-}
-
-float Normalize(float *n)
-{
- float d;
-
- d= n[0]*n[0]+n[1]*n[1]+n[2]*n[2];
- /* A larger value causes normalize errors in a scaled down models with camera xtreme close */
- if(d>1.0e-35f) {
- d= (float)sqrt(d);
-
- n[0]/=d;
- n[1]/=d;
- n[2]/=d;
- } else {
- n[0]=n[1]=n[2]= 0.0f;
- d= 0.0f;
- }
- return d;
-}
-
-/* Crossf stores the cross product c = a x b */
-void Crossf(float *c, float *a, float *b)
-{
- c[0] = a[1] * b[2] - a[2] * b[1];
- c[1] = a[2] * b[0] - a[0] * b[2];
- c[2] = a[0] * b[1] - a[1] * b[0];
-}
-
-/* Inpf returns the dot product, also called the scalar product and inner product */
-float Inpf( float *v1, float *v2)
-{
- return v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2];
-}
-
-/* Project v1 on v2 */
-void Projf(float *c, float *v1, float *v2)
-{
- float mul;
- mul = Inpf(v1, v2) / Inpf(v2, v2);
-
- c[0] = mul * v2[0];
- c[1] = mul * v2[1];
- c[2] = mul * v2[2];
-}
-
-void Mat3Transp(float mat[][3])
-{
- float t;
-
- t = mat[0][1] ;
- mat[0][1] = mat[1][0] ;
- mat[1][0] = t;
- t = mat[0][2] ;
- mat[0][2] = mat[2][0] ;
- mat[2][0] = t;
- t = mat[1][2] ;
- mat[1][2] = mat[2][1] ;
- mat[2][1] = t;
-}
-
-void Mat4Transp(float mat[][4])
-{
- float t;
-
- t = mat[0][1] ;
- mat[0][1] = mat[1][0] ;
- mat[1][0] = t;
- t = mat[0][2] ;
- mat[0][2] = mat[2][0] ;
- mat[2][0] = t;
- t = mat[0][3] ;
- mat[0][3] = mat[3][0] ;
- mat[3][0] = t;
-
- t = mat[1][2] ;
- mat[1][2] = mat[2][1] ;
- mat[2][1] = t;
- t = mat[1][3] ;
- mat[1][3] = mat[3][1] ;
- mat[3][1] = t;
-
- t = mat[2][3] ;
- mat[2][3] = mat[3][2] ;
- mat[3][2] = t;
-}
-
-
-/*
- * invertmat -
- * computes the inverse of mat and puts it in inverse. Returns
- * TRUE on success (i.e. can always find a pivot) and FALSE on failure.
- * Uses Gaussian Elimination with partial (maximal column) pivoting.
- *
- * Mark Segal - 1992
- */
-
-int Mat4Invert(float inverse[][4], float mat[][4])
-{
- int i, j, k;
- double temp;
- float tempmat[4][4];
- float max;
- int maxj;
-
- /* Set inverse to identity */
- for (i=0; i<4; i++)
- for (j=0; j<4; j++)
- inverse[i][j] = 0;
- for (i=0; i<4; i++)
- inverse[i][i] = 1;
-
- /* Copy original matrix so we don't mess it up */
- for(i = 0; i < 4; i++)
- for(j = 0; j <4; j++)
- tempmat[i][j] = mat[i][j];
-
- for(i = 0; i < 4; i++) {
- /* Look for row with max pivot */
- max = ABS(tempmat[i][i]);
- maxj = i;
- for(j = i + 1; j < 4; j++) {
- if(ABS(tempmat[j][i]) > max) {
- max = ABS(tempmat[j][i]);
- maxj = j;
- }
- }
- /* Swap rows if necessary */
- if (maxj != i) {
- for( k = 0; k < 4; k++) {
- SWAP(float, tempmat[i][k], tempmat[maxj][k]);
- SWAP(float, inverse[i][k], inverse[maxj][k]);
- }
- }
-
- temp = tempmat[i][i];
- if (temp == 0)
- return 0; /* No non-zero pivot */
- for(k = 0; k < 4; k++) {
- tempmat[i][k] = (float)(tempmat[i][k]/temp);
- inverse[i][k] = (float)(inverse[i][k]/temp);
- }
- for(j = 0; j < 4; j++) {
- if(j != i) {
- temp = tempmat[j][i];
- for(k = 0; k < 4; k++) {
- tempmat[j][k] -= (float)(tempmat[i][k]*temp);
- inverse[j][k] -= (float)(inverse[i][k]*temp);
- }
- }
- }
- }
- return 1;
-}
-#ifdef TEST_ACTIVE
-void Mat4InvertSimp(float inverse[][4], float mat[][4])
-{
- /* only for Matrices that have a rotation */
- /* based at GG IV pag 205 */
- float scale;
-
- scale= mat[0][0]*mat[0][0] + mat[1][0]*mat[1][0] + mat[2][0]*mat[2][0];
- if(scale==0.0) return;
-
- scale= 1.0/scale;
-
- /* transpose and scale */
- inverse[0][0]= scale*mat[0][0];
- inverse[1][0]= scale*mat[0][1];
- inverse[2][0]= scale*mat[0][2];
- inverse[0][1]= scale*mat[1][0];
- inverse[1][1]= scale*mat[1][1];
- inverse[2][1]= scale*mat[1][2];
- inverse[0][2]= scale*mat[2][0];
- inverse[1][2]= scale*mat[2][1];
- inverse[2][2]= scale*mat[2][2];
-
- inverse[3][0]= -(inverse[0][0]*mat[3][0] + inverse[1][0]*mat[3][1] + inverse[2][0]*mat[3][2]);
- inverse[3][1]= -(inverse[0][1]*mat[3][0] + inverse[1][1]*mat[3][1] + inverse[2][1]*mat[3][2]);
- inverse[3][2]= -(inverse[0][2]*mat[3][0] + inverse[1][2]*mat[3][1] + inverse[2][2]*mat[3][2]);
-
- inverse[0][3]= inverse[1][3]= inverse[2][3]= 0.0;
- inverse[3][3]= 1.0;
-}
-#endif
-/* struct Matrix4; */
-
-#ifdef TEST_ACTIVE
-/* this seems to be unused.. */
-
-void Mat4Inv(float *m1, float *m2)
-{
-
-/* This gets me into trouble: */
- float mat1[3][3], mat2[3][3];
-
-/* void Mat3Inv(); */
-/* void Mat3CpyMat4(); */
-/* void Mat4CpyMat3(); */
-
- Mat3CpyMat4((float*)mat2,m2);
- Mat3Inv((float*)mat1, (float*) mat2);
- Mat4CpyMat3(m1, mat1);
-
-}
-#endif
-
-
-float Det2x2(float a,float b,float c,float d)
-{
-
- return a*d - b*c;
-}
-
-
-
-float Det3x3(float a1, float a2, float a3,
- float b1, float b2, float b3,
- float c1, float c2, float c3 )
-{
- float ans;
-
- ans = a1 * Det2x2( b2, b3, c2, c3 )
- - b1 * Det2x2( a2, a3, c2, c3 )
- + c1 * Det2x2( a2, a3, b2, b3 );
-
- return ans;
-}
-
-float Det4x4(float m[][4])
-{
- float ans;
- float a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,d1,d2,d3,d4;
-
- a1= m[0][0];
- b1= m[0][1];
- c1= m[0][2];
- d1= m[0][3];
-
- a2= m[1][0];
- b2= m[1][1];
- c2= m[1][2];
- d2= m[1][3];
-
- a3= m[2][0];
- b3= m[2][1];
- c3= m[2][2];
- d3= m[2][3];
-
- a4= m[3][0];
- b4= m[3][1];
- c4= m[3][2];
- d4= m[3][3];
-
- ans = a1 * Det3x3( b2, b3, b4, c2, c3, c4, d2, d3, d4)
- - b1 * Det3x3( a2, a3, a4, c2, c3, c4, d2, d3, d4)
- + c1 * Det3x3( a2, a3, a4, b2, b3, b4, d2, d3, d4)
- - d1 * Det3x3( a2, a3, a4, b2, b3, b4, c2, c3, c4);
-
- return ans;
-}
-
-
-void Mat4Adj(float out[][4], float in[][4]) /* out = ADJ(in) */
-{
- float a1, a2, a3, a4, b1, b2, b3, b4;
- float c1, c2, c3, c4, d1, d2, d3, d4;
-
- a1= in[0][0];
- b1= in[0][1];
- c1= in[0][2];
- d1= in[0][3];
-
- a2= in[1][0];
- b2= in[1][1];
- c2= in[1][2];
- d2= in[1][3];
-
- a3= in[2][0];
- b3= in[2][1];
- c3= in[2][2];
- d3= in[2][3];
-
- a4= in[3][0];
- b4= in[3][1];
- c4= in[3][2];
- d4= in[3][3];
-
-
- out[0][0] = Det3x3( b2, b3, b4, c2, c3, c4, d2, d3, d4);
- out[1][0] = - Det3x3( a2, a3, a4, c2, c3, c4, d2, d3, d4);
- out[2][0] = Det3x3( a2, a3, a4, b2, b3, b4, d2, d3, d4);
- out[3][0] = - Det3x3( a2, a3, a4, b2, b3, b4, c2, c3, c4);
-
- out[0][1] = - Det3x3( b1, b3, b4, c1, c3, c4, d1, d3, d4);
- out[1][1] = Det3x3( a1, a3, a4, c1, c3, c4, d1, d3, d4);
- out[2][1] = - Det3x3( a1, a3, a4, b1, b3, b4, d1, d3, d4);
- out[3][1] = Det3x3( a1, a3, a4, b1, b3, b4, c1, c3, c4);
-
- out[0][2] = Det3x3( b1, b2, b4, c1, c2, c4, d1, d2, d4);
- out[1][2] = - Det3x3( a1, a2, a4, c1, c2, c4, d1, d2, d4);
- out[2][2] = Det3x3( a1, a2, a4, b1, b2, b4, d1, d2, d4);
- out[3][2] = - Det3x3( a1, a2, a4, b1, b2, b4, c1, c2, c4);
-
- out[0][3] = - Det3x3( b1, b2, b3, c1, c2, c3, d1, d2, d3);
- out[1][3] = Det3x3( a1, a2, a3, c1, c2, c3, d1, d2, d3);
- out[2][3] = - Det3x3( a1, a2, a3, b1, b2, b3, d1, d2, d3);
- out[3][3] = Det3x3( a1, a2, a3, b1, b2, b3, c1, c2, c3);
-}
-
-void Mat4InvGG(float out[][4], float in[][4]) /* from Graphic Gems I, out= INV(in) */
-{
- int i, j;
- float det;
-
- /* calculate the adjoint matrix */
-
- Mat4Adj(out,in);
-
- det = Det4x4(out);
-
- if ( fabs( det ) < SMALL_NUMBER) {
- return;
- }
-
- /* scale the adjoint matrix to get the inverse */
-
- for (i=0; i<4; i++)
- for(j=0; j<4; j++)
- out[i][j] = out[i][j] / det;
-
- /* the last factor is not always 1. For that reason an extra division should be implemented? */
-}
-
-
-void Mat3Inv(float m1[][3], float m2[][3])
-{
- short a,b;
- float det;
-
- /* calc adjoint */
- Mat3Adj(m1,m2);
-
- /* then determinant old matrix! */
- det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1])
- -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1])
- +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]);
-
- if(det==0) det=1;
- det= 1/det;
- for(a=0;a<3;a++) {
- for(b=0;b<3;b++) {
- m1[a][b]*=det;
- }
- }
-}
-
-void Mat3Adj(float m1[][3], float m[][3])
-{
- m1[0][0]=m[1][1]*m[2][2]-m[1][2]*m[2][1];
- m1[0][1]= -m[0][1]*m[2][2]+m[0][2]*m[2][1];
- m1[0][2]=m[0][1]*m[1][2]-m[0][2]*m[1][1];
-
- m1[1][0]= -m[1][0]*m[2][2]+m[1][2]*m[2][0];
- m1[1][1]=m[0][0]*m[2][2]-m[0][2]*m[2][0];
- m1[1][2]= -m[0][0]*m[1][2]+m[0][2]*m[1][0];
-
- m1[2][0]=m[1][0]*m[2][1]-m[1][1]*m[2][0];
- m1[2][1]= -m[0][0]*m[2][1]+m[0][1]*m[2][0];
- m1[2][2]=m[0][0]*m[1][1]-m[0][1]*m[1][0];
-}
-
-void Mat4MulMat4(float m1[][4], float m2[][4], float m3[][4])
-{
- /* matrix product: m1[j][k] = m2[j][i].m3[i][k] */
-
- m1[0][0] = m2[0][0]*m3[0][0] + m2[0][1]*m3[1][0] + m2[0][2]*m3[2][0] + m2[0][3]*m3[3][0];
- m1[0][1] = m2[0][0]*m3[0][1] + m2[0][1]*m3[1][1] + m2[0][2]*m3[2][1] + m2[0][3]*m3[3][1];
- m1[0][2] = m2[0][0]*m3[0][2] + m2[0][1]*m3[1][2] + m2[0][2]*m3[2][2] + m2[0][3]*m3[3][2];
- m1[0][3] = m2[0][0]*m3[0][3] + m2[0][1]*m3[1][3] + m2[0][2]*m3[2][3] + m2[0][3]*m3[3][3];
-
- m1[1][0] = m2[1][0]*m3[0][0] + m2[1][1]*m3[1][0] + m2[1][2]*m3[2][0] + m2[1][3]*m3[3][0];
- m1[1][1] = m2[1][0]*m3[0][1] + m2[1][1]*m3[1][1] + m2[1][2]*m3[2][1] + m2[1][3]*m3[3][1];
- m1[1][2] = m2[1][0]*m3[0][2] + m2[1][1]*m3[1][2] + m2[1][2]*m3[2][2] + m2[1][3]*m3[3][2];
- m1[1][3] = m2[1][0]*m3[0][3] + m2[1][1]*m3[1][3] + m2[1][2]*m3[2][3] + m2[1][3]*m3[3][3];
-
- m1[2][0] = m2[2][0]*m3[0][0] + m2[2][1]*m3[1][0] + m2[2][2]*m3[2][0] + m2[2][3]*m3[3][0];
- m1[2][1] = m2[2][0]*m3[0][1] + m2[2][1]*m3[1][1] + m2[2][2]*m3[2][1] + m2[2][3]*m3[3][1];
- m1[2][2] = m2[2][0]*m3[0][2] + m2[2][1]*m3[1][2] + m2[2][2]*m3[2][2] + m2[2][3]*m3[3][2];
- m1[2][3] = m2[2][0]*m3[0][3] + m2[2][1]*m3[1][3] + m2[2][2]*m3[2][3] + m2[2][3]*m3[3][3];
-
- m1[3][0] = m2[3][0]*m3[0][0] + m2[3][1]*m3[1][0] + m2[3][2]*m3[2][0] + m2[3][3]*m3[3][0];
- m1[3][1] = m2[3][0]*m3[0][1] + m2[3][1]*m3[1][1] + m2[3][2]*m3[2][1] + m2[3][3]*m3[3][1];
- m1[3][2] = m2[3][0]*m3[0][2] + m2[3][1]*m3[1][2] + m2[3][2]*m3[2][2] + m2[3][3]*m3[3][2];
- m1[3][3] = m2[3][0]*m3[0][3] + m2[3][1]*m3[1][3] + m2[3][2]*m3[2][3] + m2[3][3]*m3[3][3];
-
-}
-#ifdef TEST_ACTIVE
-void subMat4MulMat4(float *m1, float *m2, float *m3)
-{
-
- m1[0]= m2[0]*m3[0] + m2[1]*m3[4] + m2[2]*m3[8];
- m1[1]= m2[0]*m3[1] + m2[1]*m3[5] + m2[2]*m3[9];
- m1[2]= m2[0]*m3[2] + m2[1]*m3[6] + m2[2]*m3[10];
- m1[3]= m2[0]*m3[3] + m2[1]*m3[7] + m2[2]*m3[11] + m2[3];
- m1+=4;
- m2+=4;
- m1[0]= m2[0]*m3[0] + m2[1]*m3[4] + m2[2]*m3[8];
- m1[1]= m2[0]*m3[1] + m2[1]*m3[5] + m2[2]*m3[9];
- m1[2]= m2[0]*m3[2] + m2[1]*m3[6] + m2[2]*m3[10];
- m1[3]= m2[0]*m3[3] + m2[1]*m3[7] + m2[2]*m3[11] + m2[3];
- m1+=4;
- m2+=4;
- m1[0]= m2[0]*m3[0] + m2[1]*m3[4] + m2[2]*m3[8];
- m1[1]= m2[0]*m3[1] + m2[1]*m3[5] + m2[2]*m3[9];
- m1[2]= m2[0]*m3[2] + m2[1]*m3[6] + m2[2]*m3[10];
- m1[3]= m2[0]*m3[3] + m2[1]*m3[7] + m2[2]*m3[11] + m2[3];
-}
-#endif
-
-#ifndef TEST_ACTIVE
-void Mat3MulMat3(float m1[][3], float m3[][3], float m2[][3])
-#else
-void Mat3MulMat3(float *m1, float *m3, float *m2)
-#endif
-{
- /* m1[i][j] = m2[i][k]*m3[k][j], args are flipped! */
-#ifndef TEST_ACTIVE
- m1[0][0]= m2[0][0]*m3[0][0] + m2[0][1]*m3[1][0] + m2[0][2]*m3[2][0];
- m1[0][1]= m2[0][0]*m3[0][1] + m2[0][1]*m3[1][1] + m2[0][2]*m3[2][1];
- m1[0][2]= m2[0][0]*m3[0][2] + m2[0][1]*m3[1][2] + m2[0][2]*m3[2][2];
-
- m1[1][0]= m2[1][0]*m3[0][0] + m2[1][1]*m3[1][0] + m2[1][2]*m3[2][0];
- m1[1][1]= m2[1][0]*m3[0][1] + m2[1][1]*m3[1][1] + m2[1][2]*m3[2][1];
- m1[1][2]= m2[1][0]*m3[0][2] + m2[1][1]*m3[1][2] + m2[1][2]*m3[2][2];
-
- m1[2][0]= m2[2][0]*m3[0][0] + m2[2][1]*m3[1][0] + m2[2][2]*m3[2][0];
- m1[2][1]= m2[2][0]*m3[0][1] + m2[2][1]*m3[1][1] + m2[2][2]*m3[2][1];
- m1[2][2]= m2[2][0]*m3[0][2] + m2[2][1]*m3[1][2] + m2[2][2]*m3[2][2];
-#else
- m1[0]= m2[0]*m3[0] + m2[1]*m3[3] + m2[2]*m3[6];
- m1[1]= m2[0]*m3[1] + m2[1]*m3[4] + m2[2]*m3[7];
- m1[2]= m2[0]*m3[2] + m2[1]*m3[5] + m2[2]*m3[8];
- m1+=3;
- m2+=3;
- m1[0]= m2[0]*m3[0] + m2[1]*m3[3] + m2[2]*m3[6];
- m1[1]= m2[0]*m3[1] + m2[1]*m3[4] + m2[2]*m3[7];
- m1[2]= m2[0]*m3[2] + m2[1]*m3[5] + m2[2]*m3[8];
- m1+=3;
- m2+=3;
- m1[0]= m2[0]*m3[0] + m2[1]*m3[3] + m2[2]*m3[6];
- m1[1]= m2[0]*m3[1] + m2[1]*m3[4] + m2[2]*m3[7];
- m1[2]= m2[0]*m3[2] + m2[1]*m3[5] + m2[2]*m3[8];
-#endif
-} /* end of void Mat3MulMat3(float m1[][3], float m3[][3], float m2[][3]) */
-
-void Mat4MulMat43(float (*m1)[4], float (*m3)[4], float (*m2)[3])
-{
- m1[0][0]= m2[0][0]*m3[0][0] + m2[0][1]*m3[1][0] + m2[0][2]*m3[2][0];
- m1[0][1]= m2[0][0]*m3[0][1] + m2[0][1]*m3[1][1] + m2[0][2]*m3[2][1];
- m1[0][2]= m2[0][0]*m3[0][2] + m2[0][1]*m3[1][2] + m2[0][2]*m3[2][2];
- m1[1][0]= m2[1][0]*m3[0][0] + m2[1][1]*m3[1][0] + m2[1][2]*m3[2][0];
- m1[1][1]= m2[1][0]*m3[0][1] + m2[1][1]*m3[1][1] + m2[1][2]*m3[2][1];
- m1[1][2]= m2[1][0]*m3[0][2] + m2[1][1]*m3[1][2] + m2[1][2]*m3[2][2];
- m1[2][0]= m2[2][0]*m3[0][0] + m2[2][1]*m3[1][0] + m2[2][2]*m3[2][0];
- m1[2][1]= m2[2][0]*m3[0][1] + m2[2][1]*m3[1][1] + m2[2][2]*m3[2][1];
- m1[2][2]= m2[2][0]*m3[0][2] + m2[2][1]*m3[1][2] + m2[2][2]*m3[2][2];
-}
-/* m1 = m2 * m3, ignore the elements on the 4th row/column of m3*/
-void Mat3IsMat3MulMat4(float m1[][3], float m2[][3], float m3[][4])
-{
- /* m1[i][j] = m2[i][k] * m3[k][j] */
- m1[0][0] = m2[0][0] * m3[0][0] + m2[0][1] * m3[1][0] +m2[0][2] * m3[2][0];
- m1[0][1] = m2[0][0] * m3[0][1] + m2[0][1] * m3[1][1] +m2[0][2] * m3[2][1];
- m1[0][2] = m2[0][0] * m3[0][2] + m2[0][1] * m3[1][2] +m2[0][2] * m3[2][2];
-
- m1[1][0] = m2[1][0] * m3[0][0] + m2[1][1] * m3[1][0] +m2[1][2] * m3[2][0];
- m1[1][1] = m2[1][0] * m3[0][1] + m2[1][1] * m3[1][1] +m2[1][2] * m3[2][1];
- m1[1][2] = m2[1][0] * m3[0][2] + m2[1][1] * m3[1][2] +m2[1][2] * m3[2][2];
-
- m1[2][0] = m2[2][0] * m3[0][0] + m2[2][1] * m3[1][0] +m2[2][2] * m3[2][0];
- m1[2][1] = m2[2][0] * m3[0][1] + m2[2][1] * m3[1][1] +m2[2][2] * m3[2][1];
- m1[2][2] = m2[2][0] * m3[0][2] + m2[2][1] * m3[1][2] +m2[2][2] * m3[2][2];
-}
-
-
-
-void Mat4MulMat34(float (*m1)[4], float (*m3)[3], float (*m2)[4])
-{
- m1[0][0]= m2[0][0]*m3[0][0] + m2[0][1]*m3[1][0] + m2[0][2]*m3[2][0];
- m1[0][1]= m2[0][0]*m3[0][1] + m2[0][1]*m3[1][1] + m2[0][2]*m3[2][1];
- m1[0][2]= m2[0][0]*m3[0][2] + m2[0][1]*m3[1][2] + m2[0][2]*m3[2][2];
- m1[1][0]= m2[1][0]*m3[0][0] + m2[1][1]*m3[1][0] + m2[1][2]*m3[2][0];
- m1[1][1]= m2[1][0]*m3[0][1] + m2[1][1]*m3[1][1] + m2[1][2]*m3[2][1];
- m1[1][2]= m2[1][0]*m3[0][2] + m2[1][1]*m3[1][2] + m2[1][2]*m3[2][2];
- m1[2][0]= m2[2][0]*m3[0][0] + m2[2][1]*m3[1][0] + m2[2][2]*m3[2][0];
- m1[2][1]= m2[2][0]*m3[0][1] + m2[2][1]*m3[1][1] + m2[2][2]*m3[2][1];
- m1[2][2]= m2[2][0]*m3[0][2] + m2[2][1]*m3[1][2] + m2[2][2]*m3[2][2];
-}
-
-void Mat4CpyMat4(float m1[][4], float m2[][4])
-{
- memcpy(m1, m2, 4*4*sizeof(float));
-}
-
-void Mat4SwapMat4(float m1[][4], float m2[][4])
-{
- float t;
- int i, j;
-
- for(i = 0; i < 4; i++) {
- for (j = 0; j < 4; j++) {
- t = m1[i][j];
- m1[i][j] = m2[i][j];
- m2[i][j] = t;
- }
- }
-}
-
-typedef float Mat3Row[3];
-typedef float Mat4Row[4];
-
-#ifdef TEST_ACTIVE
-void Mat3CpyMat4(float *m1p, float *m2p)
-#else
-void Mat3CpyMat4(float m1[][3], float m2[][4])
-#endif
-{
-#ifdef TEST_ACTIVE
- int i, j;
- Mat3Row *m1= (Mat3Row *)m1p;
- Mat4Row *m2= (Mat4Row *)m2p;
- for ( i = 0; i++; i < 3) {
- for (j = 0; j++; j < 3) {
- m1p[3*i + j] = m2p[4*i + j];
- }
- }
-#endif
- m1[0][0]= m2[0][0];
- m1[0][1]= m2[0][1];
- m1[0][2]= m2[0][2];
-
- m1[1][0]= m2[1][0];
- m1[1][1]= m2[1][1];
- m1[1][2]= m2[1][2];
-
- m1[2][0]= m2[2][0];
- m1[2][1]= m2[2][1];
- m1[2][2]= m2[2][2];
-}
-
-/* Butched. See .h for comment */
-/* void Mat4CpyMat3(float m1[][4], float m2[][3]) */
-#ifdef TEST_ACTIVE
-void Mat4CpyMat3(float* m1, float *m2)
-{
- int i;
- for (i = 0; i < 3; i++) {
- m1[(4*i)] = m2[(3*i)];
- m1[(4*i) + 1]= m2[(3*i) + 1];
- m1[(4*i) + 2]= m2[(3*i) + 2];
- m1[(4*i) + 3]= 0.0;
- i++;
- }
-
- m1[12]=m1[13]= m1[14]= 0.0;
- m1[15]= 1.0;
-}
-#else
-
-void Mat4CpyMat3(float m1[][4], float m2[][3]) /* no clear */
-{
- m1[0][0]= m2[0][0];
- m1[0][1]= m2[0][1];
- m1[0][2]= m2[0][2];
-
- m1[1][0]= m2[1][0];
- m1[1][1]= m2[1][1];
- m1[1][2]= m2[1][2];
-
- m1[2][0]= m2[2][0];
- m1[2][1]= m2[2][1];
- m1[2][2]= m2[2][2];
-
- /* Reevan's Bugfix */
- m1[0][3]=0.0F;
- m1[1][3]=0.0F;
- m1[2][3]=0.0F;
-
- m1[3][0]=0.0F;
- m1[3][1]=0.0F;
- m1[3][2]=0.0F;
- m1[3][3]=1.0F;
-
-
-}
-#endif
-
-void Mat3CpyMat3(float m1[][3], float m2[][3])
-{
- /* destination comes first: */
- memcpy(&m1[0], &m2[0], 9*sizeof(float));
-}
-
-void Mat3MulSerie(float answ[][3],
- float m1[][3], float m2[][3], float m3[][3],
- float m4[][3], float m5[][3], float m6[][3],
- float m7[][3], float m8[][3])
-{
- float temp[3][3];
-
- if(m1==0 || m2==0) return;
-
-
- Mat3MulMat3(answ, m2, m1);
- if(m3) {
- Mat3MulMat3(temp, m3, answ);
- if(m4) {
- Mat3MulMat3(answ, m4, temp);
- if(m5) {
- Mat3MulMat3(temp, m5, answ);
- if(m6) {
- Mat3MulMat3(answ, m6, temp);
- if(m7) {
- Mat3MulMat3(temp, m7, answ);
- if(m8) {
- Mat3MulMat3(answ, m8, temp);
- }
- else Mat3CpyMat3(answ, temp);
- }
- }
- else Mat3CpyMat3(answ, temp);
- }
- }
- else Mat3CpyMat3(answ, temp);
- }
-}
-
-void Mat4MulSerie(float answ[][4], float m1[][4],
- float m2[][4], float m3[][4], float m4[][4],
- float m5[][4], float m6[][4], float m7[][4],
- float m8[][4])
-{
- float temp[4][4];
-
- if(m1==0 || m2==0) return;
-
- Mat4MulMat4(answ, m2, m1);
- if(m3) {
- Mat4MulMat4(temp, m3, answ);
- if(m4) {
- Mat4MulMat4(answ, m4, temp);
- if(m5) {
- Mat4MulMat4(temp, m5, answ);
- if(m6) {
- Mat4MulMat4(answ, m6, temp);
- if(m7) {
- Mat4MulMat4(temp, m7, answ);
- if(m8) {
- Mat4MulMat4(answ, m8, temp);
- }
- else Mat4CpyMat4(answ, temp);
- }
- }
- else Mat4CpyMat4(answ, temp);
- }
- }
- else Mat4CpyMat4(answ, temp);
- }
-}
-
-void Mat3BlendMat3(float out[][3], float dst[][3], float src[][3], float srcweight)
-{
- float squat[4], dquat[4], fquat[4];
- float ssize[3], dsize[3], fsize[4];
- float rmat[3][3], smat[3][3];
-
- Mat3ToQuat(dst, dquat);
- Mat3ToSize(dst, dsize);
-
- Mat3ToQuat(src, squat);
- Mat3ToSize(src, ssize);
-
- /* do blending */
- QuatInterpol(fquat, dquat, squat, srcweight);
- VecLerpf(fsize, dsize, ssize, srcweight);
-
- /* compose new matrix */
- QuatToMat3(fquat, rmat);
- SizeToMat3(fsize, smat);
- Mat3MulMat3(out, rmat, smat);
-}
-
-void Mat4BlendMat4(float out[][4], float dst[][4], float src[][4], float srcweight)
-{
- float squat[4], dquat[4], fquat[4];
- float ssize[3], dsize[3], fsize[4];
- float sloc[3], dloc[3], floc[3];
-
- Mat4ToQuat(dst, dquat);
- Mat4ToSize(dst, dsize);
- VecCopyf(dloc, dst[3]);
-
- Mat4ToQuat(src, squat);
- Mat4ToSize(src, ssize);
- VecCopyf(sloc, src[3]);
-
- /* do blending */
- VecLerpf(floc, dloc, sloc, srcweight);
- QuatInterpol(fquat, dquat, squat, srcweight);
- VecLerpf(fsize, dsize, ssize, srcweight);
-
- /* compose new matrix */
- LocQuatSizeToMat4(out, floc, fquat, fsize);
-}
-
-void Mat4Clr(float *m)
-{
- memset(m, 0, 4*4*sizeof(float));
-}
-
-void Mat3Clr(float *m)
-{
- memset(m, 0, 3*3*sizeof(float));
-}
-
-void Mat4One(float m[][4])
-{
-
- m[0][0]= m[1][1]= m[2][2]= m[3][3]= 1.0;
- m[0][1]= m[0][2]= m[0][3]= 0.0;
- m[1][0]= m[1][2]= m[1][3]= 0.0;
- m[2][0]= m[2][1]= m[2][3]= 0.0;
- m[3][0]= m[3][1]= m[3][2]= 0.0;
-}
-
-void Mat3One(float m[][3])
-{
-
- m[0][0]= m[1][1]= m[2][2]= 1.0;
- m[0][1]= m[0][2]= 0.0;
- m[1][0]= m[1][2]= 0.0;
- m[2][0]= m[2][1]= 0.0;
-}
-
-void Mat4Scale(float m[][4], float scale)
-{
-
- m[0][0]= m[1][1]= m[2][2]= scale;
- m[3][3]= 1.0;
- m[0][1]= m[0][2]= m[0][3]= 0.0;
- m[1][0]= m[1][2]= m[1][3]= 0.0;
- m[2][0]= m[2][1]= m[2][3]= 0.0;
- m[3][0]= m[3][1]= m[3][2]= 0.0;
-}
-
-void Mat3Scale(float m[][3], float scale)
-{
-
- m[0][0]= m[1][1]= m[2][2]= scale;
- m[0][1]= m[0][2]= 0.0;
- m[1][0]= m[1][2]= 0.0;
- m[2][0]= m[2][1]= 0.0;
-}
-
-void Mat4MulVec( float mat[][4], int *vec)
-{
- int x,y;
-
- x=vec[0];
- y=vec[1];
- vec[0]=(int)(x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2] + mat[3][0]);
- vec[1]=(int)(x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2] + mat[3][1]);
- vec[2]=(int)(x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2] + mat[3][2]);
-}
-
-void Mat4MulVecfl( float mat[][4], float *vec)
-{
- float x,y;
-
- x=vec[0];
- y=vec[1];
- vec[0]=x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2] + mat[3][0];
- vec[1]=x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2] + mat[3][1];
- vec[2]=x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2] + mat[3][2];
-}
-
-void VecMat4MulVecfl(float *in, float mat[][4], float *vec)
-{
- float x,y;
-
- x=vec[0];
- y=vec[1];
- in[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2] + mat[3][0];
- in[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2] + mat[3][1];
- in[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2] + mat[3][2];
-}
-
-void Mat4Mul3Vecfl( float mat[][4], float *vec)
-{
- float x,y;
-
- x= vec[0];
- y= vec[1];
- vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2];
- vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2];
- vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2];
-}
-
-void Mat4MulVec3Project(float mat[][4], float *vec)
-{
- float w;
-
- w = vec[0]*mat[0][3] + vec[1]*mat[1][3] + vec[2]*mat[2][3] + mat[3][3];
- Mat4MulVecfl(mat, vec);
-
- vec[0] /= w;
- vec[1] /= w;
- vec[2] /= w;
-}
-
-void Mat4MulVec4fl( float mat[][4], float *vec)
-{
- float x,y,z;
-
- x=vec[0];
- y=vec[1];
- z= vec[2];
- vec[0]=x*mat[0][0] + y*mat[1][0] + z*mat[2][0] + mat[3][0]*vec[3];
- vec[1]=x*mat[0][1] + y*mat[1][1] + z*mat[2][1] + mat[3][1]*vec[3];
- vec[2]=x*mat[0][2] + y*mat[1][2] + z*mat[2][2] + mat[3][2]*vec[3];
- vec[3]=x*mat[0][3] + y*mat[1][3] + z*mat[2][3] + mat[3][3]*vec[3];
-}
-
-void Mat3MulVec( float mat[][3], int *vec)
-{
- int x,y;
-
- x=vec[0];
- y=vec[1];
- vec[0]= (int)(x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2]);
- vec[1]= (int)(x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2]);
- vec[2]= (int)(x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2]);
-}
-
-void Mat3MulVecfl( float mat[][3], float *vec)
-{
- float x,y;
-
- x=vec[0];
- y=vec[1];
- vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2];
- vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2];
- vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2];
-}
-
-void Mat3MulVecd( float mat[][3], double *vec)
-{
- double x,y;
-
- x=vec[0];
- y=vec[1];
- vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2];
- vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2];
- vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2];
-}
-
-void Mat3TransMulVecfl( float mat[][3], float *vec)
-{
- float x,y;
-
- x=vec[0];
- y=vec[1];
- vec[0]= x*mat[0][0] + y*mat[0][1] + mat[0][2]*vec[2];
- vec[1]= x*mat[1][0] + y*mat[1][1] + mat[1][2]*vec[2];
- vec[2]= x*mat[2][0] + y*mat[2][1] + mat[2][2]*vec[2];
-}
-
-void Mat3MulFloat(float *m, float f)
-{
- int i;
-
- for(i=0;i<9;i++) m[i]*=f;
-}
-
-void Mat4MulFloat(float *m, float f)
-{
- int i;
-
- for(i=0;i<16;i++) m[i]*=f; /* count to 12: without vector component */
-}
-
-
-void Mat4MulFloat3(float *m, float f) /* only scale component */
-{
- int i,j;
-
- for(i=0; i<3; i++) {
- for(j=0; j<3; j++) {
-
- m[4*i+j] *= f;
- }
- }
-}
-
-void Mat3AddMat3(float m1[][3], float m2[][3], float m3[][3])
-{
- int i, j;
-
- for(i=0;i<3;i++)
- for(j=0;j<3;j++)
- m1[i][j]= m2[i][j] + m3[i][j];
-}
-
-void Mat4AddMat4(float m1[][4], float m2[][4], float m3[][4])
-{
- int i, j;
-
- for(i=0;i<4;i++)
- for(j=0;j<4;j++)
- m1[i][j]= m2[i][j] + m3[i][j];
-}
-
-void VecStar(float mat[][3], float *vec)
-{
-
- mat[0][0]= mat[1][1]= mat[2][2]= 0.0;
- mat[0][1]= -vec[2];
- mat[0][2]= vec[1];
- mat[1][0]= vec[2];
- mat[1][2]= -vec[0];
- mat[2][0]= -vec[1];
- mat[2][1]= vec[0];
-
-}
-#ifdef TEST_ACTIVE
-short EenheidsMat(float mat[][3])
-{
-
- if(mat[0][0]==1.0 && mat[0][1]==0.0 && mat[0][2]==0.0)
- if(mat[1][0]==0.0 && mat[1][1]==1.0 && mat[1][2]==0.0)
- if(mat[2][0]==0.0 && mat[2][1]==0.0 && mat[2][2]==1.0)
- return 1;
- return 0;
-}
-#endif
-
-int FloatCompare( float *v1, float *v2, float limit)
-{
-
- if( fabs(v1[0]-v2[0])<limit ) {
- if( fabs(v1[1]-v2[1])<limit ) {
- if( fabs(v1[2]-v2[2])<limit ) return 1;
- }
- }
- return 0;
-}
-
-int FloatCompare4( float *v1, float *v2, float limit)
-{
-
- if( fabs(v1[0]-v2[0])<limit ) {
- if( fabs(v1[1]-v2[1])<limit ) {
- if( fabs(v1[2]-v2[2])<limit ) {
- if( fabs(v1[3]-v2[3])<limit ) return 1;
- }
- }
- }
- return 0;
-}
-
-float FloatLerpf( float target, float origin, float fac)
-{
- return (fac*target) + (1.0f-fac)*origin;
-}
-
-void printvecf( char *str, float v[3])
-{
- printf("%s: %.3f %.3f %.3f\n", str, v[0], v[1], v[2]);
-
-}
-
-void printquat( char *str, float q[4])
-{
- printf("%s: %.3f %.3f %.3f %.3f\n", str, q[0], q[1], q[2], q[3]);
-
-}
-
-void printvec4f( char *str, float v[4])
-{
- printf("%s\n", str);
- printf("%f %f %f %f\n",v[0],v[1],v[2], v[3]);
- printf("\n");
-
-}
-
-void printmatrix4( char *str, float m[][4])
-{
- printf("%s\n", str);
- printf("%f %f %f %f\n",m[0][0],m[1][0],m[2][0],m[3][0]);
- printf("%f %f %f %f\n",m[0][1],m[1][1],m[2][1],m[3][1]);
- printf("%f %f %f %f\n",m[0][2],m[1][2],m[2][2],m[3][2]);
- printf("%f %f %f %f\n",m[0][3],m[1][3],m[2][3],m[3][3]);
- printf("\n");
-
-}
-
-void printmatrix3( char *str, float m[][3])
-{
- printf("%s\n", str);
- printf("%f %f %f\n",m[0][0],m[1][0],m[2][0]);
- printf("%f %f %f\n",m[0][1],m[1][1],m[2][1]);
- printf("%f %f %f\n",m[0][2],m[1][2],m[2][2]);
- printf("\n");
-
-}
-
-/* **************** QUATERNIONS ********** */
-
-int QuatIsNul(float *q)
-{
- return (q[0] == 0 && q[1] == 0 && q[2] == 0 && q[3] == 0);
-}
-
-void QuatMul(float *q, float *q1, float *q2)
-{
- float t0,t1,t2;
-
- t0= q1[0]*q2[0]-q1[1]*q2[1]-q1[2]*q2[2]-q1[3]*q2[3];
- t1= q1[0]*q2[1]+q1[1]*q2[0]+q1[2]*q2[3]-q1[3]*q2[2];
- t2= q1[0]*q2[2]+q1[2]*q2[0]+q1[3]*q2[1]-q1[1]*q2[3];
- q[3]= q1[0]*q2[3]+q1[3]*q2[0]+q1[1]*q2[2]-q1[2]*q2[1];
- q[0]=t0;
- q[1]=t1;
- q[2]=t2;
-}
-
-/* Assumes a unit quaternion */
-void QuatMulVecf(float *q, float *v)
-{
- float t0, t1, t2;
-
- t0= -q[1]*v[0]-q[2]*v[1]-q[3]*v[2];
- t1= q[0]*v[0]+q[2]*v[2]-q[3]*v[1];
- t2= q[0]*v[1]+q[3]*v[0]-q[1]*v[2];
- v[2]= q[0]*v[2]+q[1]*v[1]-q[2]*v[0];
- v[0]=t1;
- v[1]=t2;
-
- t1= t0*-q[1]+v[0]*q[0]-v[1]*q[3]+v[2]*q[2];
- t2= t0*-q[2]+v[1]*q[0]-v[2]*q[1]+v[0]*q[3];
- v[2]= t0*-q[3]+v[2]*q[0]-v[0]*q[2]+v[1]*q[1];
- v[0]=t1;
- v[1]=t2;
-}
-
-void QuatConj(float *q)
-{
- q[1] = -q[1];
- q[2] = -q[2];
- q[3] = -q[3];
-}
-
-float QuatDot(float *q1, float *q2)
-{
- return q1[0]*q2[0] + q1[1]*q2[1] + q1[2]*q2[2] + q1[3]*q2[3];
-}
-
-void QuatInv(float *q)
-{
- float f = QuatDot(q, q);
-
- if (f == 0.0f)
- return;
-
- QuatConj(q);
- QuatMulf(q, 1.0f/f);
-}
-
-/* simple mult */
-void QuatMulf(float *q, float f)
-{
- q[0] *= f;
- q[1] *= f;
- q[2] *= f;
- q[3] *= f;
-}
-
-void QuatSub(float *q, float *q1, float *q2)
-{
- q2[0]= -q2[0];
- QuatMul(q, q1, q2);
- q2[0]= -q2[0];
-}
-
-/* angular mult factor */
-void QuatMulFac(float *q, float fac)
-{
- float angle= fac*saacos(q[0]); /* quat[0]= cos(0.5*angle), but now the 0.5 and 2.0 rule out */
-
- float co= (float)cos(angle);
- float si= (float)sin(angle);
- q[0]= co;
- Normalize(q+1);
- q[1]*= si;
- q[2]*= si;
- q[3]*= si;
-
-}
-
-void QuatToMat3( float *q, float m[][3])
-{
- double q0, q1, q2, q3, qda,qdb,qdc,qaa,qab,qac,qbb,qbc,qcc;
-
- q0= M_SQRT2 * q[0];
- q1= M_SQRT2 * q[1];
- q2= M_SQRT2 * q[2];
- q3= M_SQRT2 * q[3];
-
- qda= q0*q1;
- qdb= q0*q2;
- qdc= q0*q3;
- qaa= q1*q1;
- qab= q1*q2;
- qac= q1*q3;
- qbb= q2*q2;
- qbc= q2*q3;
- qcc= q3*q3;
-
- m[0][0]= (float)(1.0-qbb-qcc);
- m[0][1]= (float)(qdc+qab);
- m[0][2]= (float)(-qdb+qac);
-
- m[1][0]= (float)(-qdc+qab);
- m[1][1]= (float)(1.0-qaa-qcc);
- m[1][2]= (float)(qda+qbc);
-
- m[2][0]= (float)(qdb+qac);
- m[2][1]= (float)(-qda+qbc);
- m[2][2]= (float)(1.0-qaa-qbb);
-}
-
-
-void QuatToMat4( float *q, float m[][4])
-{
- double q0, q1, q2, q3, qda,qdb,qdc,qaa,qab,qac,qbb,qbc,qcc;
-
- q0= M_SQRT2 * q[0];
- q1= M_SQRT2 * q[1];
- q2= M_SQRT2 * q[2];
- q3= M_SQRT2 * q[3];
-
- qda= q0*q1;
- qdb= q0*q2;
- qdc= q0*q3;
- qaa= q1*q1;
- qab= q1*q2;
- qac= q1*q3;
- qbb= q2*q2;
- qbc= q2*q3;
- qcc= q3*q3;
-
- m[0][0]= (float)(1.0-qbb-qcc);
- m[0][1]= (float)(qdc+qab);
- m[0][2]= (float)(-qdb+qac);
- m[0][3]= 0.0f;
-
- m[1][0]= (float)(-qdc+qab);
- m[1][1]= (float)(1.0-qaa-qcc);
- m[1][2]= (float)(qda+qbc);
- m[1][3]= 0.0f;
-
- m[2][0]= (float)(qdb+qac);
- m[2][1]= (float)(-qda+qbc);
- m[2][2]= (float)(1.0-qaa-qbb);
- m[2][3]= 0.0f;
-
- m[3][0]= m[3][1]= m[3][2]= 0.0f;
- m[3][3]= 1.0f;
-}
-
-void Mat3ToQuat(float wmat[][3], float *q)
-{
- double tr, s;
- float mat[3][3];
-
- /* work on a copy */
- Mat3CpyMat3(mat, wmat);
- Mat3Ortho(mat); /* this is needed AND a NormalQuat in the end */
-
- tr= 0.25*(1.0+mat[0][0]+mat[1][1]+mat[2][2]);
-
- if(tr>FLT_EPSILON) {
- s= sqrt( tr);
- q[0]= (float)s;
- s= 1.0/(4.0*s);
- q[1]= (float)((mat[1][2]-mat[2][1])*s);
- q[2]= (float)((mat[2][0]-mat[0][2])*s);
- q[3]= (float)((mat[0][1]-mat[1][0])*s);
- }
- else {
- if(mat[0][0] > mat[1][1] && mat[0][0] > mat[2][2]) {
- s= 2.0*sqrtf(1.0 + mat[0][0] - mat[1][1] - mat[2][2]);
- q[1]= (float)(0.25*s);
-
- s= 1.0/s;
- q[0]= (float)((mat[2][1] - mat[1][2])*s);
- q[2]= (float)((mat[1][0] + mat[0][1])*s);
- q[3]= (float)((mat[2][0] + mat[0][2])*s);
- }
- else if(mat[1][1] > mat[2][2]) {
- s= 2.0*sqrtf(1.0 + mat[1][1] - mat[0][0] - mat[2][2]);
- q[2]= (float)(0.25*s);
-
- s= 1.0/s;
- q[0]= (float)((mat[2][0] - mat[0][2])*s);
- q[1]= (float)((mat[1][0] + mat[0][1])*s);
- q[3]= (float)((mat[2][1] + mat[1][2])*s);
- }
- else {
- s= 2.0*sqrtf(1.0 + mat[2][2] - mat[0][0] - mat[1][1]);
- q[3]= (float)(0.25*s);
-
- s= 1.0/s;
- q[0]= (float)((mat[1][0] - mat[0][1])*s);
- q[1]= (float)((mat[2][0] + mat[0][2])*s);
- q[2]= (float)((mat[2][1] + mat[1][2])*s);
- }
- }
- NormalQuat(q);
-}
-
-void Mat3ToQuat_is_ok( float wmat[][3], float *q)
-{
- float mat[3][3], matr[3][3], matn[3][3], q1[4], q2[4], angle, si, co, nor[3];
-
- /* work on a copy */
- Mat3CpyMat3(mat, wmat);
- Mat3Ortho(mat);
-
- /* rotate z-axis of matrix to z-axis */
-
- nor[0] = mat[2][1]; /* cross product with (0,0,1) */
- nor[1] = -mat[2][0];
- nor[2] = 0.0;
- Normalize(nor);
-
- co= mat[2][2];
- angle= 0.5f*saacos(co);
-
- co= (float)cos(angle);
- si= (float)sin(angle);
- q1[0]= co;
- q1[1]= -nor[0]*si; /* negative here, but why? */
- q1[2]= -nor[1]*si;
- q1[3]= -nor[2]*si;
-
- /* rotate back x-axis from mat, using inverse q1 */
- QuatToMat3(q1, matr);
- Mat3Inv(matn, matr);
- Mat3MulVecfl(matn, mat[0]);
-
- /* and align x-axes */
- angle= (float)(0.5*atan2(mat[0][1], mat[0][0]));
-
- co= (float)cos(angle);
- si= (float)sin(angle);
- q2[0]= co;
- q2[1]= 0.0f;
- q2[2]= 0.0f;
- q2[3]= si;
-
- QuatMul(q, q1, q2);
-}
-
-
-void Mat4ToQuat( float m[][4], float *q)
-{
- float mat[3][3];
-
- Mat3CpyMat4(mat, m);
- Mat3ToQuat(mat, q);
-
-}
-
-void QuatOne(float *q)
-{
- q[0]= 1.0;
- q[1]= q[2]= q[3]= 0.0;
-}
-
-void NormalQuat(float *q)
-{
- float len;
-
- len= (float)sqrt(q[0]*q[0]+q[1]*q[1]+q[2]*q[2]+q[3]*q[3]);
- if(len!=0.0) {
- q[0]/= len;
- q[1]/= len;
- q[2]/= len;
- q[3]/= len;
- } else {
- q[1]= 1.0f;
- q[0]= q[2]= q[3]= 0.0f;
- }
-}
-
-void RotationBetweenVectorsToQuat(float *q, float v1[3], float v2[3])
-{
- float axis[3];
- float angle;
-
- Crossf(axis, v1, v2);
-
- angle = NormalizedVecAngle2(v1, v2);
-
- AxisAngleToQuat(q, axis, angle);
-}
-
-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;
-
- /* first rotate to axis */
- if(axis>2) {
- x2= vec[0] ; y2= vec[1] ; z2= vec[2];
- axis-= 3;
- }
- else {
- x2= -vec[0] ; y2= -vec[1] ; z2= -vec[2];
- }
-
- q[0]=1.0;
- q[1]=q[2]=q[3]= 0.0;
-
- len1= (float)sqrt(x2*x2+y2*y2+z2*z2);
- if(len1 == 0.0) return;
-
- /* nasty! I need a good routine for this...
- * problem is a rotation of an Y axis to the negative Y-axis for example.
- */
-
- if(axis==0) { /* x-axis */
- nor[0]= 0.0;
- nor[1]= -z2;
- nor[2]= y2;
-
- if(fabs(y2)+fabs(z2)<0.0001)
- nor[1]= 1.0;
-
- co= x2;
- }
- else if(axis==1) { /* y-axis */
- nor[0]= z2;
- nor[1]= 0.0;
- nor[2]= -x2;
-
- if(fabs(x2)+fabs(z2)<0.0001)
- nor[2]= 1.0;
-
- co= y2;
- }
- else { /* z-axis */
- nor[0]= -y2;
- nor[1]= x2;
- nor[2]= 0.0;
-
- if(fabs(x2)+fabs(y2)<0.0001)
- nor[0]= 1.0;
-
- co= z2;
- }
- co/= len1;
-
- Normalize(nor);
-
- angle= 0.5f*saacos(co);
- si= (float)sin(angle);
- q[0]= (float)cos(angle);
- q[1]= nor[0]*si;
- q[2]= nor[1]*si;
- q[3]= nor[2]*si;
-
- if(axis!=upflag) {
- QuatToMat3(q, mat);
-
- fp= mat[2];
- if(axis==0) {
- if(upflag==1) angle= (float)(0.5*atan2(fp[2], fp[1]));
- else angle= (float)(-0.5*atan2(fp[1], fp[2]));
- }
- else if(axis==1) {
- if(upflag==0) angle= (float)(-0.5*atan2(fp[2], fp[0]));
- else angle= (float)(0.5*atan2(fp[0], fp[2]));
- }
- else {
- if(upflag==0) angle= (float)(0.5*atan2(-fp[1], -fp[0]));
- else angle= (float)(-0.5*atan2(-fp[0], -fp[1]));
- }
-
- co= (float)cos(angle);
- si= (float)(sin(angle)/len1);
- q2[0]= co;
- q2[1]= x2*si;
- q2[2]= y2*si;
- q2[3]= z2*si;
-
- QuatMul(q,q2,q);
- }
-}
-
-void VecUpMat3old( float *vec, float mat[][3], short axis)
-{
- float inp, up[3];
- short cox = 0, coy = 0, coz = 0;
-
- /* using different up's is not useful, infact there is no real 'up'!
- */
-
- up[0]= 0.0;
- up[1]= 0.0;
- up[2]= 1.0;
-
- if(axis==0) {
- cox= 0; coy= 1; coz= 2; /* Y up Z tr */
- }
- if(axis==1) {
- cox= 1; coy= 2; coz= 0; /* Z up X tr */
- }
- if(axis==2) {
- cox= 2; coy= 0; coz= 1; /* X up Y tr */
- }
- if(axis==3) {
- cox= 0; coy= 2; coz= 1; /* */
- }
- if(axis==4) {
- cox= 1; coy= 0; coz= 2; /* */
- }
- if(axis==5) {
- cox= 2; coy= 1; coz= 0; /* Y up X tr */
- }
-
- mat[coz][0]= vec[0];
- mat[coz][1]= vec[1];
- mat[coz][2]= vec[2];
- Normalize((float *)mat[coz]);
-
- inp= mat[coz][0]*up[0] + mat[coz][1]*up[1] + mat[coz][2]*up[2];
- mat[coy][0]= up[0] - inp*mat[coz][0];
- mat[coy][1]= up[1] - inp*mat[coz][1];
- mat[coy][2]= up[2] - inp*mat[coz][2];
-
- Normalize((float *)mat[coy]);
-
- Crossf(mat[cox], mat[coy], mat[coz]);
-
-}
-
-void VecUpMat3(float *vec, float mat[][3], short axis)
-{
- float inp;
- short cox = 0, coy = 0, coz = 0;
-
- /* using different up's is not useful, infact there is no real 'up'!
- */
-
- if(axis==0) {
- cox= 0; coy= 1; coz= 2; /* Y up Z tr */
- }
- if(axis==1) {
- cox= 1; coy= 2; coz= 0; /* Z up X tr */
- }
- if(axis==2) {
- cox= 2; coy= 0; coz= 1; /* X up Y tr */
- }
- if(axis==3) {
- cox= 0; coy= 1; coz= 2; /* Y op -Z tr */
- vec[0]= -vec[0];
- vec[1]= -vec[1];
- vec[2]= -vec[2];
- }
- if(axis==4) {
- cox= 1; coy= 0; coz= 2; /* */
- }
- if(axis==5) {
- cox= 2; coy= 1; coz= 0; /* Y up X tr */
- }
-
- mat[coz][0]= vec[0];
- mat[coz][1]= vec[1];
- mat[coz][2]= vec[2];
- Normalize((float *)mat[coz]);
-
- inp= mat[coz][2];
- mat[coy][0]= - inp*mat[coz][0];
- mat[coy][1]= - inp*mat[coz][1];
- mat[coy][2]= 1.0f - inp*mat[coz][2];
-
- Normalize((float *)mat[coy]);
-
- Crossf(mat[cox], mat[coy], mat[coz]);
-
-}
-
-/* A & M Watt, Advanced animation and rendering techniques, 1992 ACM press */
-void QuatInterpolW(float *, float *, float *, float ); // XXX why this?
-
-void QuatInterpolW(float *result, float *quat1, float *quat2, float t)
-{
- float omega, cosom, sinom, sc1, sc2;
-
- cosom = quat1[0]*quat2[0] + quat1[1]*quat2[1] + quat1[2]*quat2[2] + quat1[3]*quat2[3] ;
-
- /* rotate around shortest angle */
- if ((1.0f + cosom) > 0.0001f) {
-
- if ((1.0f - cosom) > 0.0001f) {
- omega = (float)acos(cosom);
- sinom = (float)sin(omega);
- sc1 = (float)sin((1.0 - t) * omega) / sinom;
- sc2 = (float)sin(t * omega) / sinom;
- }
- else {
- sc1 = 1.0f - t;
- sc2 = t;
- }
- result[0] = sc1*quat1[0] + sc2*quat2[0];
- result[1] = sc1*quat1[1] + sc2*quat2[1];
- result[2] = sc1*quat1[2] + sc2*quat2[2];
- result[3] = sc1*quat1[3] + sc2*quat2[3];
- }
- else {
- result[0] = quat2[3];
- result[1] = -quat2[2];
- result[2] = quat2[1];
- result[3] = -quat2[0];
-
- sc1 = (float)sin((1.0 - t)*M_PI_2);
- sc2 = (float)sin(t*M_PI_2);
-
- result[0] = sc1*quat1[0] + sc2*result[0];
- result[1] = sc1*quat1[1] + sc2*result[1];
- result[2] = sc1*quat1[2] + sc2*result[2];
- result[3] = sc1*quat1[3] + sc2*result[3];
- }
-}
-
-void QuatInterpol(float *result, float *quat1, float *quat2, float t)
-{
- float quat[4], omega, cosom, sinom, sc1, sc2;
-
- cosom = quat1[0]*quat2[0] + quat1[1]*quat2[1] + quat1[2]*quat2[2] + quat1[3]*quat2[3] ;
-
- /* rotate around shortest angle */
- if (cosom < 0.0f) {
- cosom = -cosom;
- quat[0]= -quat1[0];
- quat[1]= -quat1[1];
- quat[2]= -quat1[2];
- quat[3]= -quat1[3];
- }
- else {
- quat[0]= quat1[0];
- quat[1]= quat1[1];
- quat[2]= quat1[2];
- quat[3]= quat1[3];
- }
-
- if ((1.0f - cosom) > 0.0001f) {
- omega = (float)acos(cosom);
- sinom = (float)sin(omega);
- sc1 = (float)sin((1 - t) * omega) / sinom;
- sc2 = (float)sin(t * omega) / sinom;
- } else {
- sc1= 1.0f - t;
- sc2= t;
- }
-
- result[0] = sc1 * quat[0] + sc2 * quat2[0];
- result[1] = sc1 * quat[1] + sc2 * quat2[1];
- result[2] = sc1 * quat[2] + sc2 * quat2[2];
- result[3] = sc1 * quat[3] + sc2 * quat2[3];
-}
-
-void QuatAdd(float *result, float *quat1, float *quat2, float t)
-{
- result[0]= quat1[0] + t*quat2[0];
- result[1]= quat1[1] + t*quat2[1];
- result[2]= quat1[2] + t*quat2[2];
- result[3]= quat1[3] + t*quat2[3];
-}
-
-void QuatCopy(float *q1, float *q2)
-{
- q1[0]= q2[0];
- q1[1]= q2[1];
- q1[2]= q2[2];
- q1[3]= q2[3];
-}
-
-/* **************** DUAL QUATERNIONS ************** */
-
-/*
- Conversion routines between (regular quaternion, translation) and
- dual quaternion.
-
- Version 1.0.0, February 7th, 2007
-
- Copyright (C) 2006-2007 University of Dublin, Trinity College, All Rights
- Reserved
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the author(s) be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Author: Ladislav Kavan, kavanl@cs.tcd.ie
-
- Changes for Blender:
- - renaming, style changes and optimizations
- - added support for scaling
-*/
-
-void Mat4ToDQuat(float basemat[][4], float mat[][4], DualQuat *dq)
-{
- float *t, *q, dscale[3], scale[3], basequat[4];
- float baseRS[4][4], baseinv[4][4], baseR[4][4], baseRinv[4][4];
- float R[4][4], S[4][4];
-
- /* split scaling and rotation, there is probably a faster way to do
- this, it's done like this now to correctly get negative scaling */
- Mat4MulMat4(baseRS, basemat, mat);
- Mat4ToSize(baseRS, scale);
-
- VecCopyf(dscale, scale);
- dscale[0] -= 1.0f; dscale[1] -= 1.0f; dscale[2] -= 1.0f;
-
- if((Det4x4(mat) < 0.0f) || VecLength(dscale) > 1e-4) {
- /* extract R and S */
- Mat4ToQuat(baseRS, basequat);
- QuatToMat4(basequat, baseR);
- VecCopyf(baseR[3], baseRS[3]);
-
- Mat4Invert(baseinv, basemat);
- Mat4MulMat4(R, baseinv, baseR);
-
- Mat4Invert(baseRinv, baseR);
- Mat4MulMat4(S, baseRS, baseRinv);
-
- /* set scaling part */
- Mat4MulSerie(dq->scale, basemat, S, baseinv, 0, 0, 0, 0, 0);
- dq->scale_weight= 1.0f;
- }
- else {
- /* matrix does not contain scaling */
- Mat4CpyMat4(R, mat);
- dq->scale_weight= 0.0f;
- }
-
- /* non-dual part */
- Mat4ToQuat(R, dq->quat);
-
- /* dual part */
- t= R[3];
- q= dq->quat;
- dq->trans[0]= -0.5f*( t[0]*q[1] + t[1]*q[2] + t[2]*q[3]);
- dq->trans[1]= 0.5f*( t[0]*q[0] + t[1]*q[3] - t[2]*q[2]);
- dq->trans[2]= 0.5f*(-t[0]*q[3] + t[1]*q[0] + t[2]*q[1]);
- dq->trans[3]= 0.5f*( t[0]*q[2] - t[1]*q[1] + t[2]*q[0]);
-}
-
-void DQuatToMat4(DualQuat *dq, float mat[][4])
-{
- float len, *t, q0[4];
-
- /* regular quaternion */
- QuatCopy(q0, dq->quat);
-
- /* normalize */
- len= (float)sqrt(QuatDot(q0, q0));
- if(len != 0.0f)
- QuatMulf(q0, 1.0f/len);
-
- /* rotation */
- QuatToMat4(q0, mat);
-
- /* translation */
- t= dq->trans;
- mat[3][0]= 2.0f*(-t[0]*q0[1] + t[1]*q0[0] - t[2]*q0[3] + t[3]*q0[2]);
- mat[3][1]= 2.0f*(-t[0]*q0[2] + t[1]*q0[3] + t[2]*q0[0] - t[3]*q0[1]);
- mat[3][2]= 2.0f*(-t[0]*q0[3] - t[1]*q0[2] + t[2]*q0[1] + t[3]*q0[0]);
-
- /* note: this does not handle scaling */
-}
-
-void DQuatAddWeighted(DualQuat *dqsum, DualQuat *dq, float weight)
-{
- int flipped= 0;
-
- /* make sure we interpolate quats in the right direction */
- if (QuatDot(dq->quat, dqsum->quat) < 0) {
- flipped= 1;
- weight= -weight;
- }
-
- /* interpolate rotation and translation */
- dqsum->quat[0] += weight*dq->quat[0];
- dqsum->quat[1] += weight*dq->quat[1];
- dqsum->quat[2] += weight*dq->quat[2];
- dqsum->quat[3] += weight*dq->quat[3];
-
- dqsum->trans[0] += weight*dq->trans[0];
- dqsum->trans[1] += weight*dq->trans[1];
- dqsum->trans[2] += weight*dq->trans[2];
- dqsum->trans[3] += weight*dq->trans[3];
-
- /* interpolate scale - but only if needed */
- if (dq->scale_weight) {
- float wmat[4][4];
-
- if(flipped) /* we don't want negative weights for scaling */
- weight= -weight;
-
- Mat4CpyMat4(wmat, dq->scale);
- Mat4MulFloat((float*)wmat, weight);
- Mat4AddMat4(dqsum->scale, dqsum->scale, wmat);
- dqsum->scale_weight += weight;
- }
-}
-
-void DQuatNormalize(DualQuat *dq, float totweight)
-{
- float scale= 1.0f/totweight;
-
- QuatMulf(dq->quat, scale);
- QuatMulf(dq->trans, scale);
-
- if(dq->scale_weight) {
- float addweight= totweight - dq->scale_weight;
-
- if(addweight) {
- dq->scale[0][0] += addweight;
- dq->scale[1][1] += addweight;
- dq->scale[2][2] += addweight;
- dq->scale[3][3] += addweight;
- }
-
- Mat4MulFloat((float*)dq->scale, scale);
- dq->scale_weight= 1.0f;
- }
-}
-
-void DQuatMulVecfl(DualQuat *dq, float *co, float mat[][3])
-{
- float M[3][3], t[3], scalemat[3][3], len2;
- float w= dq->quat[0], x= dq->quat[1], y= dq->quat[2], z= dq->quat[3];
- float t0= dq->trans[0], t1= dq->trans[1], t2= dq->trans[2], t3= dq->trans[3];
-
- /* rotation matrix */
- M[0][0]= w*w + x*x - y*y - z*z;
- M[1][0]= 2*(x*y - w*z);
- M[2][0]= 2*(x*z + w*y);
-
- M[0][1]= 2*(x*y + w*z);
- M[1][1]= w*w + y*y - x*x - z*z;
- M[2][1]= 2*(y*z - w*x);
-
- M[0][2]= 2*(x*z - w*y);
- M[1][2]= 2*(y*z + w*x);
- M[2][2]= w*w + z*z - x*x - y*y;
-
- len2= QuatDot(dq->quat, dq->quat);
- if(len2 > 0.0f)
- len2= 1.0f/len2;
-
- /* translation */
- t[0]= 2*(-t0*x + w*t1 - t2*z + y*t3);
- t[1]= 2*(-t0*y + t1*z - x*t3 + w*t2);
- t[2]= 2*(-t0*z + x*t2 + w*t3 - t1*y);
-
- /* apply scaling */
- if(dq->scale_weight)
- Mat4MulVecfl(dq->scale, co);
-
- /* apply rotation and translation */
- Mat3MulVecfl(M, co);
- co[0]= (co[0] + t[0])*len2;
- co[1]= (co[1] + t[1])*len2;
- co[2]= (co[2] + t[2])*len2;
-
- /* compute crazyspace correction mat */
- if(mat) {
- if(dq->scale_weight) {
- Mat3CpyMat4(scalemat, dq->scale);
- Mat3MulMat3(mat, M, scalemat);
- }
- else
- Mat3CpyMat3(mat, M);
- Mat3MulFloat((float*)mat, len2);
- }
-}
-
-void DQuatCpyDQuat(DualQuat *dq1, DualQuat *dq2)
-{
- memcpy(dq1, dq2, sizeof(DualQuat));
-}
-
-/* **************** VIEW / PROJECTION ******************************** */
-
-
-void i_ortho(
- float left, float right,
- float bottom, float top,
- float nearClip, float farClip,
- float matrix[][4]
-){
- float Xdelta, Ydelta, Zdelta;
-
- Xdelta = right - left;
- Ydelta = top - bottom;
- Zdelta = farClip - nearClip;
- if (Xdelta == 0.0 || Ydelta == 0.0 || Zdelta == 0.0) {
- return;
- }
- Mat4One(matrix);
- matrix[0][0] = 2.0f/Xdelta;
- matrix[3][0] = -(right + left)/Xdelta;
- matrix[1][1] = 2.0f/Ydelta;
- matrix[3][1] = -(top + bottom)/Ydelta;
- matrix[2][2] = -2.0f/Zdelta; /* note: negate Z */
- matrix[3][2] = -(farClip + nearClip)/Zdelta;
-}
-
-void i_window(
- float left, float right,
- float bottom, float top,
- float nearClip, float farClip,
- float mat[][4]
-){
- float Xdelta, Ydelta, Zdelta;
-
- Xdelta = right - left;
- Ydelta = top - bottom;
- Zdelta = farClip - nearClip;
-
- if (Xdelta == 0.0 || Ydelta == 0.0 || Zdelta == 0.0) {
- return;
- }
- mat[0][0] = nearClip * 2.0f/Xdelta;
- mat[1][1] = nearClip * 2.0f/Ydelta;
- mat[2][0] = (right + left)/Xdelta; /* note: negate Z */
- mat[2][1] = (top + bottom)/Ydelta;
- mat[2][2] = -(farClip + nearClip)/Zdelta;
- mat[2][3] = -1.0f;
- mat[3][2] = (-2.0f * nearClip * farClip)/Zdelta;
- mat[0][1] = mat[0][2] = mat[0][3] =
- mat[1][0] = mat[1][2] = mat[1][3] =
- mat[3][0] = mat[3][1] = mat[3][3] = 0.0;
-
-}
-
-void i_translate(float Tx, float Ty, float Tz, float mat[][4])
-{
- mat[3][0] += (Tx*mat[0][0] + Ty*mat[1][0] + Tz*mat[2][0]);
- mat[3][1] += (Tx*mat[0][1] + Ty*mat[1][1] + Tz*mat[2][1]);
- mat[3][2] += (Tx*mat[0][2] + Ty*mat[1][2] + Tz*mat[2][2]);
-}
-
-void i_multmatrix( float icand[][4], float Vm[][4])
-{
- int row, col;
- float temp[4][4];
-
- for(row=0 ; row<4 ; row++)
- for(col=0 ; col<4 ; col++)
- temp[row][col] = icand[row][0] * Vm[0][col]
- + icand[row][1] * Vm[1][col]
- + icand[row][2] * Vm[2][col]
- + icand[row][3] * Vm[3][col];
- Mat4CpyMat4(Vm, temp);
-}
-
-void i_rotate(float angle, char axis, float mat[][4])
-{
- int col;
- float temp[4];
- float cosine, sine;
-
- for(col=0; col<4 ; col++) /* init temp to zero matrix */
- temp[col] = 0;
-
- angle = (float)(angle*(3.1415926535/180.0));
- cosine = (float)cos(angle);
- sine = (float)sin(angle);
- switch(axis){
- case 'x':
- case 'X':
- for(col=0 ; col<4 ; col++)
- temp[col] = cosine*mat[1][col] + sine*mat[2][col];
- for(col=0 ; col<4 ; col++) {
- mat[2][col] = - sine*mat[1][col] + cosine*mat[2][col];
- mat[1][col] = temp[col];
- }
- break;
-
- case 'y':
- case 'Y':
- for(col=0 ; col<4 ; col++)
- temp[col] = cosine*mat[0][col] - sine*mat[2][col];
- for(col=0 ; col<4 ; col++) {
- mat[2][col] = sine*mat[0][col] + cosine*mat[2][col];
- mat[0][col] = temp[col];
- }
- break;
-
- case 'z':
- case 'Z':
- for(col=0 ; col<4 ; col++)
- temp[col] = cosine*mat[0][col] + sine*mat[1][col];
- for(col=0 ; col<4 ; col++) {
- mat[1][col] = - sine*mat[0][col] + cosine*mat[1][col];
- mat[0][col] = temp[col];
- }
- break;
- }
-}
-
-void i_polarview(float dist, float azimuth, float incidence, float twist, float Vm[][4])
-{
-
- Mat4One(Vm);
-
- i_translate(0.0, 0.0, -dist, Vm);
- i_rotate(-twist,'z', Vm);
- i_rotate(-incidence,'x', Vm);
- i_rotate(-azimuth,'z', Vm);
-}
-
-void i_lookat(float vx, float vy, float vz, float px, float py, float pz, float twist, float mat[][4])
-{
- float sine, cosine, hyp, hyp1, dx, dy, dz;
- float mat1[4][4];
-
- Mat4One(mat);
- Mat4One(mat1);
-
- i_rotate(-twist,'z', mat);
-
- dx = px - vx;
- dy = py - vy;
- dz = pz - vz;
- hyp = dx * dx + dz * dz; /* hyp squared */
- hyp1 = (float)sqrt(dy*dy + hyp);
- hyp = (float)sqrt(hyp); /* the real hyp */
-
- if (hyp1 != 0.0) { /* rotate X */
- sine = -dy / hyp1;
- cosine = hyp /hyp1;
- } else {
- sine = 0;
- cosine = 1.0f;
- }
- mat1[1][1] = cosine;
- mat1[1][2] = sine;
- mat1[2][1] = -sine;
- mat1[2][2] = cosine;
-
- i_multmatrix(mat1, mat);
-
- mat1[1][1] = mat1[2][2] = 1.0f; /* be careful here to reinit */
- mat1[1][2] = mat1[2][1] = 0.0; /* those modified by the last */
-
- /* paragraph */
- if (hyp != 0.0f) { /* rotate Y */
- sine = dx / hyp;
- cosine = -dz / hyp;
- } else {
- sine = 0;
- cosine = 1.0f;
- }
- mat1[0][0] = cosine;
- mat1[0][2] = -sine;
- mat1[2][0] = sine;
- mat1[2][2] = cosine;
-
- i_multmatrix(mat1, mat);
- i_translate(-vx,-vy,-vz, mat); /* translate viewpoint to origin */
-}
-
-
-
-
-
-/* ************************************************ */
-
-void Mat3Orthogonal(float mat[][3], int axis)
-{
- float size[3];
- size[0] = VecLength(mat[0]);
- size[1] = VecLength(mat[1]);
- size[2] = VecLength(mat[2]);
- Normalize(mat[axis]);
- switch(axis)
- {
- case 0:
- if (Inpf(mat[0], mat[1]) < 1) {
- Crossf(mat[2], mat[0], mat[1]);
- Normalize(mat[2]);
- Crossf(mat[1], mat[2], mat[0]);
- } else if (Inpf(mat[0], mat[2]) < 1) {
- Crossf(mat[1], mat[2], mat[0]);
- Normalize(mat[1]);
- Crossf(mat[2], mat[0], mat[1]);
- } else {
- float vec[3] = {mat[0][1], mat[0][2], mat[0][0]};
-
- Crossf(mat[2], mat[0], vec);
- Normalize(mat[2]);
- Crossf(mat[1], mat[2], mat[0]);
- }
- case 1:
- if (Inpf(mat[1], mat[0]) < 1) {
- Crossf(mat[2], mat[0], mat[1]);
- Normalize(mat[2]);
- Crossf(mat[0], mat[1], mat[2]);
- } else if (Inpf(mat[0], mat[2]) < 1) {
- Crossf(mat[0], mat[1], mat[2]);
- Normalize(mat[0]);
- Crossf(mat[2], mat[0], mat[1]);
- } else {
- float vec[3] = {mat[1][1], mat[1][2], mat[1][0]};
-
- Crossf(mat[0], mat[1], vec);
- Normalize(mat[0]);
- Crossf(mat[2], mat[0], mat[1]);
- }
- case 2:
- if (Inpf(mat[2], mat[0]) < 1) {
- Crossf(mat[1], mat[2], mat[0]);
- Normalize(mat[1]);
- Crossf(mat[0], mat[1], mat[2]);
- } else if (Inpf(mat[2], mat[1]) < 1) {
- Crossf(mat[0], mat[1], mat[2]);
- Normalize(mat[0]);
- Crossf(mat[1], mat[2], mat[0]);
- } else {
- float vec[3] = {mat[2][1], mat[2][2], mat[2][0]};
-
- Crossf(mat[0], vec, mat[2]);
- Normalize(mat[0]);
- Crossf(mat[1], mat[2], mat[0]);
- }
- }
- VecMulf(mat[0], size[0]);
- VecMulf(mat[1], size[1]);
- VecMulf(mat[2], size[2]);
-}
-
-void Mat4Orthogonal(float mat[][4], int axis)
-{
- float size[3];
- size[0] = VecLength(mat[0]);
- size[1] = VecLength(mat[1]);
- size[2] = VecLength(mat[2]);
- Normalize(mat[axis]);
- switch(axis)
- {
- case 0:
- if (Inpf(mat[0], mat[1]) < 1) {
- Crossf(mat[2], mat[0], mat[1]);
- Normalize(mat[2]);
- Crossf(mat[1], mat[2], mat[0]);
- } else if (Inpf(mat[0], mat[2]) < 1) {
- Crossf(mat[1], mat[2], mat[0]);
- Normalize(mat[1]);
- Crossf(mat[2], mat[0], mat[1]);
- } else {
- float vec[3] = {mat[0][1], mat[0][2], mat[0][0]};
-
- Crossf(mat[2], mat[0], vec);
- Normalize(mat[2]);
- Crossf(mat[1], mat[2], mat[0]);
- }
- case 1:
- Normalize(mat[0]);
- if (Inpf(mat[1], mat[0]) < 1) {
- Crossf(mat[2], mat[0], mat[1]);
- Normalize(mat[2]);
- Crossf(mat[0], mat[1], mat[2]);
- } else if (Inpf(mat[0], mat[2]) < 1) {
- Crossf(mat[0], mat[1], mat[2]);
- Normalize(mat[0]);
- Crossf(mat[2], mat[0], mat[1]);
- } else {
- float vec[3] = {mat[1][1], mat[1][2], mat[1][0]};
-
- Crossf(mat[0], mat[1], vec);
- Normalize(mat[0]);
- Crossf(mat[2], mat[0], mat[1]);
- }
- case 2:
- if (Inpf(mat[2], mat[0]) < 1) {
- Crossf(mat[1], mat[2], mat[0]);
- Normalize(mat[1]);
- Crossf(mat[0], mat[1], mat[2]);
- } else if (Inpf(mat[2], mat[1]) < 1) {
- Crossf(mat[0], mat[1], mat[2]);
- Normalize(mat[0]);
- Crossf(mat[1], mat[2], mat[0]);
- } else {
- float vec[3] = {mat[2][1], mat[2][2], mat[2][0]};
-
- Crossf(mat[0], vec, mat[2]);
- Normalize(mat[0]);
- Crossf(mat[1], mat[2], mat[0]);
- }
- }
- VecMulf(mat[0], size[0]);
- VecMulf(mat[1], size[1]);
- VecMulf(mat[2], size[2]);
-}
-
-int IsMat3Orthogonal(float mat[][3])
-{
- if (fabs(Inpf(mat[0], mat[1])) > 1.5 * FLT_EPSILON)
- return 0;
-
- if (fabs(Inpf(mat[1], mat[2])) > 1.5 * FLT_EPSILON)
- return 0;
-
- if (fabs(Inpf(mat[0], mat[2])) > 1.5 * FLT_EPSILON)
- return 0;
-
- return 1;
-}
-
-int IsMat4Orthogonal(float mat[][4])
-{
- if (fabs(Inpf(mat[0], mat[1])) > 1.5 * FLT_EPSILON)
- return 0;
-
- if (fabs(Inpf(mat[1], mat[2])) > 1.5 * FLT_EPSILON)
- return 0;
-
- if (fabs(Inpf(mat[0], mat[2])) > 1.5 * FLT_EPSILON)
- return 0;
-
- return 1;
-}
-
-void Mat3Ortho(float mat[][3])
-{
- Normalize(mat[0]);
- Normalize(mat[1]);
- Normalize(mat[2]);
-}
-
-void Mat4Ortho(float mat[][4])
-{
- float len;
-
- len= Normalize(mat[0]);
- if(len!=0.0) mat[0][3]/= len;
- len= Normalize(mat[1]);
- if(len!=0.0) mat[1][3]/= len;
- len= Normalize(mat[2]);
- if(len!=0.0) mat[2][3]/= len;
-}
-
-void VecCopyf(float *v1, float *v2)
-{
- v1[0]= v2[0];
- v1[1]= v2[1];
- v1[2]= v2[2];
-}
-
-int VecLen( int *v1, int *v2)
-{
- float x,y,z;
-
- x=(float)(v1[0]-v2[0]);
- y=(float)(v1[1]-v2[1]);
- z=(float)(v1[2]-v2[2]);
- return (int)floor(sqrt(x*x+y*y+z*z));
-}
-
-float VecLenf(float v1[3], float v2[3])
-{
- float x,y,z;
-
- x=v1[0]-v2[0];
- y=v1[1]-v2[1];
- z=v1[2]-v2[2];
- return (float)sqrt(x*x+y*y+z*z);
-}
-
-float VecLength(float *v)
-{
- return (float) sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
-}
-
-void VecAddf(float *v, float *v1, float *v2)
-{
- v[0]= v1[0]+ v2[0];
- v[1]= v1[1]+ v2[1];
- v[2]= v1[2]+ v2[2];
-}
-
-void VecSubf(float *v, float *v1, float *v2)
-{
- v[0]= v1[0]- v2[0];
- v[1]= v1[1]- v2[1];
- v[2]= v1[2]- v2[2];
-}
-
-void VecMulVecf(float *v, float *v1, float *v2)
-{
- v[0] = v1[0] * v2[0];
- v[1] = v1[1] * v2[1];
- v[2] = v1[2] * v2[2];
-}
-
-void VecLerpf(float *target, const float *a, const float *b, const float t)
-{
- const float s = 1.0f-t;
-
- target[0]= s*a[0] + t*b[0];
- target[1]= s*a[1] + t*b[1];
- target[2]= s*a[2] + t*b[2];
-}
-
-void Vec2Lerpf(float *target, const float *a, const float *b, const float t)
-{
- const float s = 1.0f-t;
-
- target[0]= s*a[0] + t*b[0];
- target[1]= s*a[1] + t*b[1];
-}
-
-/* weight 3 vectors, (VecWeightf in 2.4x)
- * 'w' must be unit length but is not a vector, just 3 weights */
-void VecLerp3f(float p[3], const float v1[3], const float v2[3], const float v3[3], const float w[3])
-{
- p[0] = v1[0]*w[0] + v2[0]*w[1] + v3[0]*w[2];
- p[1] = v1[1]*w[0] + v2[1]*w[1] + v3[1]*w[2];
- p[2] = v1[2]*w[0] + v2[2]*w[1] + v3[2]*w[2];
-}
-
-/* weight 3 2D vectors, (Vec2Weightf in 2.4x)
- * 'w' must be unit length but is not a vector, just 3 weights */
-void Vec2Lerp3f(float p[2], const float v1[2], const float v2[2], const float v3[2], const float w[3])
-{
- p[0] = v1[0]*w[0] + v2[0]*w[1] + v3[0]*w[2];
- p[1] = v1[1]*w[0] + v2[1]*w[1] + v3[1]*w[2];
-}
-
-void VecMidf(float *v, float *v1, float *v2)
-{
- v[0]= 0.5f*(v1[0]+ v2[0]);
- v[1]= 0.5f*(v1[1]+ v2[1]);
- v[2]= 0.5f*(v1[2]+ v2[2]);
-}
-
-void VecMulf(float *v1, float f)
-{
-
- v1[0]*= f;
- v1[1]*= f;
- v1[2]*= f;
-}
-
-void VecNegf(float *v1)
-{
- v1[0] = -v1[0];
- v1[1] = -v1[1];
- v1[2] = -v1[2];
-}
-
-void VecOrthoBasisf(float *v, float *v1, float *v2)
-{
- const float f = (float)sqrt(v[0]*v[0] + v[1]*v[1]);
-
- if (f < 1e-35f) {
- // degenerate case
- v1[0] = (v[2] < 0.0f) ? -1.0f : 1.0f;
- v1[1] = v1[2] = v2[0] = v2[2] = 0.0f;
- v2[1] = 1.0f;
- }
- else {
- const float d= 1.0f/f;
-
- v1[0] = v[1]*d;
- v1[1] = -v[0]*d;
- v1[2] = 0.0f;
- v2[0] = -v[2]*v1[1];
- v2[1] = v[2]*v1[0];
- v2[2] = v[0]*v1[1] - v[1]*v1[0];
- }
-}
-
-int VecLenCompare(float *v1, float *v2, float limit)
-{
- float x,y,z;
-
- x=v1[0]-v2[0];
- y=v1[1]-v2[1];
- z=v1[2]-v2[2];
-
- return ((x*x + y*y + z*z) < (limit*limit));
-}
-
-int VecCompare( float *v1, float *v2, float limit)
-{
- if( fabs(v1[0]-v2[0])<limit )
- if( fabs(v1[1]-v2[1])<limit )
- if( fabs(v1[2]-v2[2])<limit ) return 1;
- return 0;
-}
-
-int VecEqual(float *v1, float *v2)
-{
- return ((v1[0]==v2[0]) && (v1[1]==v2[1]) && (v1[2]==v2[2]));
-}
-
-int VecIsNull(float *v)
-{
- return (v[0] == 0 && v[1] == 0 && v[2] == 0);
-}
-
-void CalcNormShort( short *v1, short *v2, short *v3, float *n) /* is also cross product */
-{
- float n1[3],n2[3];
-
- n1[0]= (float)(v1[0]-v2[0]);
- n2[0]= (float)(v2[0]-v3[0]);
- n1[1]= (float)(v1[1]-v2[1]);
- n2[1]= (float)(v2[1]-v3[1]);
- n1[2]= (float)(v1[2]-v2[2]);
- n2[2]= (float)(v2[2]-v3[2]);
- n[0]= n1[1]*n2[2]-n1[2]*n2[1];
- n[1]= n1[2]*n2[0]-n1[0]*n2[2];
- n[2]= n1[0]*n2[1]-n1[1]*n2[0];
- Normalize(n);
-}
-
-void CalcNormLong( int* v1, int*v2, int*v3, float *n)
-{
- float n1[3],n2[3];
-
- n1[0]= (float)(v1[0]-v2[0]);
- n2[0]= (float)(v2[0]-v3[0]);
- n1[1]= (float)(v1[1]-v2[1]);
- n2[1]= (float)(v2[1]-v3[1]);
- n1[2]= (float)(v1[2]-v2[2]);
- n2[2]= (float)(v2[2]-v3[2]);
- n[0]= n1[1]*n2[2]-n1[2]*n2[1];
- n[1]= n1[2]*n2[0]-n1[0]*n2[2];
- n[2]= n1[0]*n2[1]-n1[1]*n2[0];
- Normalize(n);
-}
-
-float CalcNormFloat( float *v1, float *v2, float *v3, float *n)
-{
- float n1[3],n2[3];
-
- n1[0]= v1[0]-v2[0];
- n2[0]= v2[0]-v3[0];
- n1[1]= v1[1]-v2[1];
- n2[1]= v2[1]-v3[1];
- n1[2]= v1[2]-v2[2];
- n2[2]= v2[2]-v3[2];
- n[0]= n1[1]*n2[2]-n1[2]*n2[1];
- n[1]= n1[2]*n2[0]-n1[0]*n2[2];
- n[2]= n1[0]*n2[1]-n1[1]*n2[0];
- return Normalize(n);
-}
-
-float CalcNormFloat4( float *v1, float *v2, float *v3, float *v4, float *n)
-{
- /* real cross! */
- float n1[3],n2[3];
-
- n1[0]= v1[0]-v3[0];
- n1[1]= v1[1]-v3[1];
- n1[2]= v1[2]-v3[2];
-
- n2[0]= v2[0]-v4[0];
- n2[1]= v2[1]-v4[1];
- n2[2]= v2[2]-v4[2];
-
- n[0]= n1[1]*n2[2]-n1[2]*n2[1];
- n[1]= n1[2]*n2[0]-n1[0]*n2[2];
- n[2]= n1[0]*n2[1]-n1[1]*n2[0];
-
- return Normalize(n);
-}
-
-
-void CalcCent3f(float *cent, float *v1, float *v2, float *v3)
-{
-
- cent[0]= 0.33333f*(v1[0]+v2[0]+v3[0]);
- cent[1]= 0.33333f*(v1[1]+v2[1]+v3[1]);
- cent[2]= 0.33333f*(v1[2]+v2[2]+v3[2]);
-}
-
-void CalcCent4f(float *cent, float *v1, float *v2, float *v3, float *v4)
-{
-
- cent[0]= 0.25f*(v1[0]+v2[0]+v3[0]+v4[0]);
- cent[1]= 0.25f*(v1[1]+v2[1]+v3[1]+v4[1]);
- cent[2]= 0.25f*(v1[2]+v2[2]+v3[2]+v4[2]);
-}
-
-float Sqrt3f(float f)
-{
- if(f==0.0) return 0;
- if(f<0) return (float)(-exp(log(-f)/3));
- else return (float)(exp(log(f)/3));
-}
-
-double Sqrt3d(double d)
-{
- if(d==0.0) return 0;
- if(d<0) return -exp(log(-d)/3);
- else return exp(log(d)/3);
-}
-
-void NormalShortToFloat(float *out, short *in)
-{
- out[0] = in[0] / 32767.0f;
- out[1] = in[1] / 32767.0f;
- out[2] = in[2] / 32767.0f;
-}
-
-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) {
- float a[2],deler;
-
- a[0]= v2[1]-v3[1];
- a[1]= v3[0]-v2[0];
- deler= (float)sqrt(a[0]*a[0]+a[1]*a[1]);
- if(deler== 0.0f) return 0;
-
- return (float)(fabs((v1[0]-v2[0])*a[0]+(v1[1]-v2[1])*a[1])/deler);
-
-}
-
-/* distance v1 to line-piece v2-v3 */
-float PdistVL2Dfl( float *v1, float *v2, float *v3)
-{
- float labda, rc[2], pt[2], len;
-
- rc[0]= v3[0]-v2[0];
- rc[1]= v3[1]-v2[1];
- len= rc[0]*rc[0]+ rc[1]*rc[1];
- if(len==0.0) {
- rc[0]= v1[0]-v2[0];
- rc[1]= v1[1]-v2[1];
- return (float)(sqrt(rc[0]*rc[0]+ rc[1]*rc[1]));
- }
-
- labda= ( rc[0]*(v1[0]-v2[0]) + rc[1]*(v1[1]-v2[1]) )/len;
- if(labda<=0.0) {
- pt[0]= v2[0];
- pt[1]= v2[1];
- }
- else if(labda>=1.0) {
- pt[0]= v3[0];
- pt[1]= v3[1];
- }
- else {
- pt[0]= labda*rc[0]+v2[0];
- pt[1]= labda*rc[1]+v2[1];
- }
-
- rc[0]= pt[0]-v1[0];
- rc[1]= pt[1]-v1[1];
- return (float)sqrt(rc[0]*rc[0]+ rc[1]*rc[1]);
-}
-
-float AreaF2Dfl( float *v1, float *v2, float *v3)
-{
- return (float)(0.5*fabs( (v1[0]-v2[0])*(v2[1]-v3[1]) + (v1[1]-v2[1])*(v3[0]-v2[0]) ));
-}
-
-
-float AreaQ3Dfl( float *v1, float *v2, float *v3, float *v4) /* only convex Quadrilaterals */
-{
- float len, vec1[3], vec2[3], n[3];
-
- VecSubf(vec1, v2, v1);
- VecSubf(vec2, v4, v1);
- Crossf(n, vec1, vec2);
- len= Normalize(n);
-
- VecSubf(vec1, v4, v3);
- VecSubf(vec2, v2, v3);
- Crossf(n, vec1, vec2);
- len+= Normalize(n);
-
- return (len/2.0f);
-}
-
-float AreaT3Dfl( float *v1, float *v2, float *v3) /* Triangles */
-{
- float len, vec1[3], vec2[3], n[3];
-
- VecSubf(vec1, v3, v2);
- VecSubf(vec2, v1, v2);
- Crossf(n, vec1, vec2);
- len= Normalize(n);
-
- return (len/2.0f);
-}
-
-#define MAX2(x,y) ( (x)>(y) ? (x) : (y) )
-#define MAX3(x,y,z) MAX2( MAX2((x),(y)) , (z) )
-
-
-float AreaPoly3Dfl(int nr, float *verts, float *normal)
-{
- float x, y, z, area, max;
- float *cur, *prev;
- int a, px=0, py=1;
-
- /* first: find dominant axis: 0==X, 1==Y, 2==Z */
- x= (float)fabs(normal[0]);
- y= (float)fabs(normal[1]);
- z= (float)fabs(normal[2]);
- max = MAX3(x, y, z);
- if(max==y) py=2;
- else if(max==x) {
- px=1;
- py= 2;
- }
-
- /* The Trapezium Area Rule */
- prev= verts+3*(nr-1);
- cur= verts;
- area= 0;
- for(a=0; a<nr; a++) {
- area+= (cur[px]-prev[px])*(cur[py]+prev[py]);
- prev= cur;
- cur+=3;
- }
-
- return (float)fabs(0.5*area/max);
-}
-
-/* intersect Line-Line, shorts */
-short IsectLL2Ds(short *v1, short *v2, short *v3, short *v4)
-{
- /* return:
- -1: colliniar
- 0: no intersection of segments
- 1: exact intersection of segments
- 2: cross-intersection of segments
- */
- float div, labda, mu;
-
- div= (float)((v2[0]-v1[0])*(v4[1]-v3[1])-(v2[1]-v1[1])*(v4[0]-v3[0]));
- if(div==0.0f) return -1;
-
- labda= ((float)(v1[1]-v3[1])*(v4[0]-v3[0])-(v1[0]-v3[0])*(v4[1]-v3[1]))/div;
-
- mu= ((float)(v1[1]-v3[1])*(v2[0]-v1[0])-(v1[0]-v3[0])*(v2[1]-v1[1]))/div;
-
- if(labda>=0.0f && labda<=1.0f && mu>=0.0f && mu<=1.0f) {
- if(labda==0.0f || labda==1.0f || mu==0.0f || mu==1.0f) return 1;
- return 2;
- }
- return 0;
-}
-
-/* intersect Line-Line, floats */
-short IsectLL2Df(float *v1, float *v2, float *v3, float *v4)
-{
- /* return:
- -1: colliniar
-0: no intersection of segments
-1: exact intersection of segments
-2: cross-intersection of segments
- */
- float div, labda, mu;
-
- div= (v2[0]-v1[0])*(v4[1]-v3[1])-(v2[1]-v1[1])*(v4[0]-v3[0]);
- if(div==0.0) return -1;
-
- labda= ((float)(v1[1]-v3[1])*(v4[0]-v3[0])-(v1[0]-v3[0])*(v4[1]-v3[1]))/div;
-
- mu= ((float)(v1[1]-v3[1])*(v2[0]-v1[0])-(v1[0]-v3[0])*(v2[1]-v1[1]))/div;
-
- if(labda>=0.0 && labda<=1.0 && mu>=0.0 && mu<=1.0) {
- if(labda==0.0 || labda==1.0 || mu==0.0 || mu==1.0) return 1;
- return 2;
- }
- return 0;
-}
-
-/*
--1: colliniar
- 1: intersection
-
-*/
-static short IsectLLPt2Df(float x0,float y0,float x1,float y1,
- float x2,float y2,float x3,float y3, float *xi,float *yi)
-
-{
- /*
- this function computes the intersection of the sent lines
- and returns the intersection point, note that the function assumes
- the lines intersect. the function can handle vertical as well
- as horizontal lines. note the function isn't very clever, it simply
- applies the math, but we don't need speed since this is a
- pre-processing step
- */
- float c1,c2, // constants of linear equations
- det_inv, // the inverse of the determinant of the coefficient
- m1,m2; // the slopes of each line
- /*
- compute slopes, note the cludge for infinity, however, this will
- be close enough
- */
- if ( fabs( x1-x0 ) > 0.000001 )
- m1 = ( y1-y0 ) / ( x1-x0 );
- else
- return -1; /*m1 = ( float ) 1e+10;*/ // close enough to infinity
-
- if ( fabs( x3-x2 ) > 0.000001 )
- m2 = ( y3-y2 ) / ( x3-x2 );
- else
- return -1; /*m2 = ( float ) 1e+10;*/ // close enough to infinity
-
- if (fabs(m1-m2) < 0.000001)
- return -1; /* paralelle lines */
-
-// compute constants
-
- c1 = ( y0-m1*x0 );
- c2 = ( y2-m2*x2 );
-
-// compute the inverse of the determinate
-
- det_inv = 1.0f / ( -m1 + m2 );
-
-// use Kramers rule to compute xi and yi
-
- *xi= ( ( -c2 + c1 ) *det_inv );
- *yi= ( ( m2*c1 - m1*c2 ) *det_inv );
-
- return 1;
-} // end Intersect_Lines
-
-#define SIDE_OF_LINE(pa,pb,pp) ((pa[0]-pp[0])*(pb[1]-pp[1]))-((pb[0]-pp[0])*(pa[1]-pp[1]))
-/* point in tri */
-int IsectPT2Df(float pt[2], float v1[2], float v2[2], float v3[2])
-{
- if (SIDE_OF_LINE(v1,v2,pt)>=0.0) {
- if (SIDE_OF_LINE(v2,v3,pt)>=0.0) {
- if (SIDE_OF_LINE(v3,v1,pt)>=0.0) {
- return 1;
- }
- }
- } else {
- if (! (SIDE_OF_LINE(v2,v3,pt)>=0.0) ) {
- if (! (SIDE_OF_LINE(v3,v1,pt)>=0.0)) {
- return -1;
- }
- }
- }
-
- return 0;
-}
-/* point in quad - only convex quads */
-int IsectPQ2Df(float pt[2], float v1[2], float v2[2], float v3[2], float v4[2])
-{
- if (SIDE_OF_LINE(v1,v2,pt)>=0.0) {
- if (SIDE_OF_LINE(v2,v3,pt)>=0.0) {
- if (SIDE_OF_LINE(v3,v4,pt)>=0.0) {
- if (SIDE_OF_LINE(v4,v1,pt)>=0.0) {
- return 1;
- }
- }
- }
- } else {
- if (! (SIDE_OF_LINE(v2,v3,pt)>=0.0) ) {
- if (! (SIDE_OF_LINE(v3,v4,pt)>=0.0)) {
- if (! (SIDE_OF_LINE(v4,v1,pt)>=0.0)) {
- return -1;
- }
- }
- }
- }
-
- return 0;
-}
-
-
-/**
- *
- * @param min
- * @param max
- * @param vec
- */
-void MinMax3(float *min, float *max, float *vec)
-{
- if(min[0]>vec[0]) min[0]= vec[0];
- if(min[1]>vec[1]) min[1]= vec[1];
- if(min[2]>vec[2]) min[2]= vec[2];
-
- if(max[0]<vec[0]) max[0]= vec[0];
- if(max[1]<vec[1]) max[1]= vec[1];
- if(max[2]<vec[2]) max[2]= vec[2];
-}
-
-static float TriSignedArea(float *v1, float *v2, float *v3, int i, int j)
-{
- return 0.5f*((v1[i]-v2[i])*(v2[j]-v3[j]) + (v1[j]-v2[j])*(v3[i]-v2[i]));
-}
-
-static int BarycentricWeights(float *v1, float *v2, float *v3, float *co, float *n, float *w)
-{
- float xn, yn, zn, a1, a2, a3, asum;
- short i, j;
-
- /* find best projection of face XY, XZ or YZ: barycentric weights of
- the 2d projected coords are the same and faster to compute */
- xn= (float)fabs(n[0]);
- yn= (float)fabs(n[1]);
- zn= (float)fabs(n[2]);
- if(zn>=xn && zn>=yn) {i= 0; j= 1;}
- else if(yn>=xn && yn>=zn) {i= 0; j= 2;}
- else {i= 1; j= 2;}
-
- a1= TriSignedArea(v2, v3, co, i, j);
- a2= TriSignedArea(v3, v1, co, i, j);
- a3= TriSignedArea(v1, v2, co, i, j);
-
- asum= a1 + a2 + a3;
-
- if (fabs(asum) < FLT_EPSILON) {
- /* zero area triangle */
- w[0]= w[1]= w[2]= 1.0f/3.0f;
- return 1;
- }
-
- asum= 1.0f/asum;
- w[0]= a1*asum;
- w[1]= a2*asum;
- w[2]= a3*asum;
-
- return 0;
-}
-
-void InterpWeightsQ3Dfl(float *v1, float *v2, float *v3, float *v4, float *co, float *w)
-{
- float w2[3];
-
- w[0]= w[1]= w[2]= w[3]= 0.0f;
-
- /* first check for exact match */
- if(VecEqual(co, v1))
- w[0]= 1.0f;
- else if(VecEqual(co, v2))
- w[1]= 1.0f;
- else if(VecEqual(co, v3))
- w[2]= 1.0f;
- else if(v4 && VecEqual(co, v4))
- w[3]= 1.0f;
- else {
- /* otherwise compute barycentric interpolation weights */
- float n1[3], n2[3], n[3];
- int degenerate;
-
- VecSubf(n1, v1, v3);
- if (v4) {
- VecSubf(n2, v2, v4);
- }
- else {
- VecSubf(n2, v2, v3);
- }
- Crossf(n, n1, n2);
-
- /* OpenGL seems to split this way, so we do too */
- if (v4) {
- degenerate= BarycentricWeights(v1, v2, v4, co, n, w);
- SWAP(float, w[2], w[3]);
-
- if(degenerate || (w[0] < 0.0f)) {
- /* if w[1] is negative, co is on the other side of the v1-v3 edge,
- so we interpolate using the other triangle */
- degenerate= BarycentricWeights(v2, v3, v4, co, n, w2);
-
- if(!degenerate) {
- w[0]= 0.0f;
- w[1]= w2[0];
- w[2]= w2[1];
- w[3]= w2[2];
- }
- }
- }
- else
- BarycentricWeights(v1, v2, v3, co, n, w);
- }
-}
-
-/* Mean value weights - smooth interpolation weights for polygons with
- * more than 3 vertices */
-static float MeanValueHalfTan(float *v1, float *v2, float *v3)
-{
- float d2[3], d3[3], cross[3], area, dot, len;
-
- VecSubf(d2, v2, v1);
- VecSubf(d3, v3, v1);
- Crossf(cross, d2, d3);
-
- area= VecLength(cross);
- dot= Inpf(d2, d3);
- len= VecLength(d2)*VecLength(d3);
-
- if(area == 0.0f)
- return 0.0f;
- else
- return (len - dot)/area;
-}
-
-void MeanValueWeights(float v[][3], int n, float *co, float *w)
-{
- float totweight, t1, t2, len, *vmid, *vprev, *vnext;
- int i;
-
- totweight= 0.0f;
-
- for(i=0; i<n; i++) {
- vmid= v[i];
- vprev= (i == 0)? v[n-1]: v[i-1];
- vnext= (i == n-1)? v[0]: v[i+1];
-
- t1= MeanValueHalfTan(co, vprev, vmid);
- t2= MeanValueHalfTan(co, vmid, vnext);
-
- len= VecLenf(co, vmid);
- w[i]= (t1+t2)/len;
- totweight += w[i];
- }
-
- if(totweight != 0.0f)
- for(i=0; i<n; i++)
- w[i] /= totweight;
-}
-
-
-/* ************ EULER *************** */
-
-/* Euler Rotation Order Code:
- * was adapted from
- ANSI C code from the article
- "Euler Angle Conversion"
- by Ken Shoemake, shoemake@graphics.cis.upenn.edu
- in "Graphics Gems IV", Academic Press, 1994
- * for use in Blender
- */
-
-/* Type for rotation order info - see wiki for derivation details */
-typedef struct RotOrderInfo {
- short axis[3];
- short parity; /* parity of axis permutation (even=0, odd=1) - 'n' in original code */
-} RotOrderInfo;
-
-/* Array of info for Rotation Order calculations
- * WARNING: must be kept in same order as eEulerRotationOrders
- */
-static RotOrderInfo rotOrders[]= {
- /* i, j, k, n */
- {{0, 1, 2}, 0}, // XYZ
- {{0, 2, 1}, 1}, // XZY
- {{1, 0, 2}, 1}, // YXZ
- {{1, 2, 0}, 0}, // YZX
- {{2, 0, 1}, 0}, // ZXY
- {{2, 1, 0}, 1} // ZYZ
-};
-
-/* Get relevant pointer to rotation order set from the array
- * NOTE: since we start at 1 for the values, but arrays index from 0,
- * there is -1 factor involved in this process...
- */
-#define GET_ROTATIONORDER_INFO(order) (((order)>=1) ? &rotOrders[(order)-1] : &rotOrders[0])
-
-/* Construct quaternion from Euler angles (in radians). */
-void EulOToQuat(float e[3], short order, float q[4])
-{
- RotOrderInfo *R= GET_ROTATIONORDER_INFO(order);
- short i=R->axis[0], j=R->axis[1], k=R->axis[2];
- double ti, tj, th, ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
- double a[3];
-
- ti = e[i]/2; tj = e[j]/2; th = e[k]/2;
-
- if (R->parity) e[j] = -e[j];
-
- ci = cos(ti); cj = cos(tj); ch = cos(th);
- si = sin(ti); sj = sin(tj); sh = sin(th);
-
- cc = ci*ch; cs = ci*sh;
- sc = si*ch; ss = si*sh;
-
- a[i] = cj*sc - sj*cs;
- a[j] = cj*ss + sj*cc;
- a[k] = cj*cs - sj*sc;
-
- q[0] = cj*cc + sj*ss;
- q[1] = a[0];
- q[2] = a[1];
- q[3] = a[2];
-
- if (R->parity) q[j] = -q[j];
-}
-
-/* Convert quaternion to Euler angles (in radians). */
-void QuatToEulO(float q[4], float e[3], short order)
-{
- float M[3][3];
-
- QuatToMat3(q, M);
- Mat3ToEulO(M, e, order);
-}
-
-/* Construct 3x3 matrix from Euler angles (in radians). */
-void EulOToMat3(float e[3], short order, float M[3][3])
-{
- RotOrderInfo *R= GET_ROTATIONORDER_INFO(order);
- short i=R->axis[0], j=R->axis[1], k=R->axis[2];
- double ti, tj, th, ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
-
- if (R->parity) {
- ti = -e[i]; tj = -e[j]; th = -e[k];
- }
- else {
- ti = e[i]; tj = e[j]; th = e[k];
- }
-
- ci = cos(ti); cj = cos(tj); ch = cos(th);
- si = sin(ti); sj = sin(tj); sh = sin(th);
-
- cc = ci*ch; cs = ci*sh;
- sc = si*ch; ss = si*sh;
-
- M[i][i] = cj*ch; M[j][i] = sj*sc-cs; M[k][i] = sj*cc+ss;
- M[i][j] = cj*sh; M[j][j] = sj*ss+cc; M[k][j] = sj*cs-sc;
- M[i][k] = -sj; M[j][k] = cj*si; M[k][k] = cj*ci;
-}
-
-/* Construct 4x4 matrix from Euler angles (in radians). */
-void EulOToMat4(float e[3], short order, float M[4][4])
-{
- float m[3][3];
-
- /* for now, we'll just do this the slow way (i.e. copying matrices) */
- Mat3Ortho(m);
- EulOToMat3(e, order, m);
- Mat4CpyMat3(M, m);
-}
-
-/* Convert 3x3 matrix to Euler angles (in radians). */
-void Mat3ToEulO(float M[3][3], float e[3], short order)
-{
- RotOrderInfo *R= GET_ROTATIONORDER_INFO(order);
- short i=R->axis[0], j=R->axis[1], k=R->axis[2];
- double cy = sqrt(M[i][i]*M[i][i] + M[i][j]*M[i][j]);
-
- if (cy > 16*FLT_EPSILON) {
- e[i] = atan2(M[j][k], M[k][k]);
- e[j] = atan2(-M[i][k], cy);
- e[k] = atan2(M[i][j], M[i][i]);
- }
- else {
- e[i] = atan2(-M[k][j], M[j][j]);
- e[j] = atan2(-M[i][k], cy);
- e[k] = 0;
- }
-
- if (R->parity) {
- e[0] = -e[0];
- e[1] = -e[1];
- e[2] = -e[2];
- }
-}
-
-/* Convert 4x4 matrix to Euler angles (in radians). */
-void Mat4ToEulO(float M[4][4], float e[3], short order)
-{
- float m[3][3];
-
- /* for now, we'll just do this the slow way (i.e. copying matrices) */
- Mat3CpyMat4(m, M);
- Mat3Ortho(m);
- Mat3ToEulO(m, e, order);
-}
-
-/* returns two euler calculation methods, so we can pick the best */
-static void mat3_to_eulo2(float M[3][3], float *e1, float *e2, short order)
-{
- RotOrderInfo *R= GET_ROTATIONORDER_INFO(order);
- short i=R->axis[0], j=R->axis[1], k=R->axis[2];
- float m[3][3];
- double cy;
-
- /* process the matrix first */
- Mat3CpyMat3(m, M);
- Mat3Ortho(m);
-
- cy= sqrt(m[i][i]*m[i][i] + m[i][j]*m[i][j]);
-
- if (cy > 16*FLT_EPSILON) {
- e1[i] = atan2(m[j][k], m[k][k]);
- e1[j] = atan2(-m[i][k], cy);
- e1[k] = atan2(m[i][j], m[i][i]);
-
- e2[i] = atan2(-m[j][k], -m[k][k]);
- e2[j] = atan2(-m[i][k], -cy);
- e2[k] = atan2(-m[i][j], -m[i][i]);
- }
- else {
- e1[i] = atan2(-m[k][j], m[j][j]);
- e1[j] = atan2(-m[i][k], cy);
- e1[k] = 0;
-
- VecCopyf(e2, e1);
- }
-
- if (R->parity) {
- e1[0] = -e1[0];
- e1[1] = -e1[1];
- e1[2] = -e1[2];
-
- e2[0] = -e2[0];
- e2[1] = -e2[1];
- e2[2] = -e2[2];
- }
-}
-
-/* uses 2 methods to retrieve eulers, and picks the closest */
-void Mat3ToCompatibleEulO(float mat[3][3], float eul[3], float oldrot[3], short order)
-{
- float eul1[3], eul2[3];
- float d1, d2;
-
- mat3_to_eulo2(mat, eul1, eul2, order);
-
- compatible_eul(eul1, oldrot);
- compatible_eul(eul2, oldrot);
-
- d1= (float)fabs(eul1[0]-oldrot[0]) + (float)fabs(eul1[1]-oldrot[1]) + (float)fabs(eul1[2]-oldrot[2]);
- d2= (float)fabs(eul2[0]-oldrot[0]) + (float)fabs(eul2[1]-oldrot[1]) + (float)fabs(eul2[2]-oldrot[2]);
-
- /* return best, which is just the one with lowest difference */
- if (d1 > d2)
- VecCopyf(eul, eul2);
- else
- VecCopyf(eul, eul1);
-}
-
-/* rotate the given euler by the given angle on the specified axis */
-// NOTE: is this safe to do with different axis orders?
-void eulerO_rot(float beul[3], float ang, char axis, short order)
-{
- float eul[3], mat1[3][3], mat2[3][3], totmat[3][3];
-
- eul[0]= eul[1]= eul[2]= 0.0f;
- if (axis=='x')
- eul[0]= ang;
- else if (axis=='y')
- eul[1]= ang;
- else
- eul[2]= ang;
-
- EulOToMat3(eul, order, mat1);
- EulOToMat3(beul, order, mat2);
-
- Mat3MulMat3(totmat, mat2, mat1);
-
- Mat3ToEulO(totmat, beul, order);
-}
-
-/* ************ EULER (old XYZ) *************** */
-
-/* XYZ order */
-void EulToMat3( float *eul, float mat[][3])
-{
- double ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
-
- ci = cos(eul[0]);
- cj = cos(eul[1]);
- ch = cos(eul[2]);
- si = sin(eul[0]);
- sj = sin(eul[1]);
- sh = sin(eul[2]);
- cc = ci*ch;
- cs = ci*sh;
- sc = si*ch;
- ss = si*sh;
-
- mat[0][0] = (float)(cj*ch);
- mat[1][0] = (float)(sj*sc-cs);
- mat[2][0] = (float)(sj*cc+ss);
- mat[0][1] = (float)(cj*sh);
- mat[1][1] = (float)(sj*ss+cc);
- mat[2][1] = (float)(sj*cs-sc);
- mat[0][2] = (float)-sj;
- mat[1][2] = (float)(cj*si);
- mat[2][2] = (float)(cj*ci);
-
-}
-
-/* XYZ order */
-void EulToMat4( float *eul,float mat[][4])
-{
- double ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
-
- ci = cos(eul[0]);
- cj = cos(eul[1]);
- ch = cos(eul[2]);
- si = sin(eul[0]);
- sj = sin(eul[1]);
- sh = sin(eul[2]);
- cc = ci*ch;
- cs = ci*sh;
- sc = si*ch;
- ss = si*sh;
-
- mat[0][0] = (float)(cj*ch);
- mat[1][0] = (float)(sj*sc-cs);
- mat[2][0] = (float)(sj*cc+ss);
- mat[0][1] = (float)(cj*sh);
- mat[1][1] = (float)(sj*ss+cc);
- mat[2][1] = (float)(sj*cs-sc);
- mat[0][2] = (float)-sj;
- mat[1][2] = (float)(cj*si);
- mat[2][2] = (float)(cj*ci);
-
-
- mat[3][0]= mat[3][1]= mat[3][2]= mat[0][3]= mat[1][3]= mat[2][3]= 0.0f;
- mat[3][3]= 1.0f;
-}
-
-/* returns two euler calculation methods, so we can pick the best */
-/* XYZ order */
-static void mat3_to_eul2(float tmat[][3], float *eul1, float *eul2)
-{
- float cy, quat[4], mat[3][3];
-
- Mat3ToQuat(tmat, quat);
- QuatToMat3(quat, mat);
- Mat3CpyMat3(mat, tmat);
- Mat3Ortho(mat);
-
- cy = (float)sqrt(mat[0][0]*mat[0][0] + mat[0][1]*mat[0][1]);
-
- if (cy > 16.0*FLT_EPSILON) {
-
- eul1[0] = (float)atan2(mat[1][2], mat[2][2]);
- eul1[1] = (float)atan2(-mat[0][2], cy);
- eul1[2] = (float)atan2(mat[0][1], mat[0][0]);
-
- eul2[0] = (float)atan2(-mat[1][2], -mat[2][2]);
- eul2[1] = (float)atan2(-mat[0][2], -cy);
- eul2[2] = (float)atan2(-mat[0][1], -mat[0][0]);
-
- } else {
- eul1[0] = (float)atan2(-mat[2][1], mat[1][1]);
- eul1[1] = (float)atan2(-mat[0][2], cy);
- eul1[2] = 0.0f;
-
- VecCopyf(eul2, eul1);
- }
-}
-
-/* XYZ order */
-void Mat3ToEul(float tmat[][3], float *eul)
-{
- float eul1[3], eul2[3];
-
- mat3_to_eul2(tmat, eul1, eul2);
-
- /* return best, which is just the one with lowest values it in */
- if( fabs(eul1[0])+fabs(eul1[1])+fabs(eul1[2]) > fabs(eul2[0])+fabs(eul2[1])+fabs(eul2[2])) {
- VecCopyf(eul, eul2);
- }
- else {
- VecCopyf(eul, eul1);
- }
-}
-
-/* XYZ order */
-void Mat4ToEul(float tmat[][4], float *eul)
-{
- float tempMat[3][3];
-
- Mat3CpyMat4(tempMat, tmat);
- Mat3Ortho(tempMat);
- Mat3ToEul(tempMat, eul);
-}
-
-/* XYZ order */
-void QuatToEul(float *quat, float *eul)
-{
- float mat[3][3];
-
- QuatToMat3(quat, mat);
- Mat3ToEul(mat, eul);
-}
-
-/* XYZ order */
-void EulToQuat(float *eul, float *quat)
-{
- float ti, tj, th, ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
-
- ti = eul[0]*0.5f; tj = eul[1]*0.5f; th = eul[2]*0.5f;
- ci = (float)cos(ti); cj = (float)cos(tj); ch = (float)cos(th);
- si = (float)sin(ti); sj = (float)sin(tj); sh = (float)sin(th);
- cc = ci*ch; cs = ci*sh; sc = si*ch; ss = si*sh;
-
- quat[0] = cj*cc + sj*ss;
- quat[1] = cj*sc - sj*cs;
- quat[2] = cj*ss + sj*cc;
- quat[3] = cj*cs - sj*sc;
-}
-
-/* XYZ order */
-void euler_rot(float *beul, float ang, char axis)
-{
- float eul[3], mat1[3][3], mat2[3][3], totmat[3][3];
-
- eul[0]= eul[1]= eul[2]= 0.0f;
- if(axis=='x') eul[0]= ang;
- else if(axis=='y') eul[1]= ang;
- else eul[2]= ang;
-
- EulToMat3(eul, mat1);
- EulToMat3(beul, mat2);
-
- Mat3MulMat3(totmat, mat2, mat1);
-
- Mat3ToEul(totmat, beul);
-
-}
-
-/* exported to transform.c */
-/* order independent! */
-void compatible_eul(float *eul, float *oldrot)
-{
- float dx, dy, dz;
-
- /* correct differences of about 360 degrees first */
- dx= eul[0] - oldrot[0];
- dy= eul[1] - oldrot[1];
- dz= eul[2] - oldrot[2];
-
- while(fabs(dx) > 5.1) {
- if(dx > 0.0f) eul[0] -= 2.0f*(float)M_PI; else eul[0]+= 2.0f*(float)M_PI;
- dx= eul[0] - oldrot[0];
- }
- while(fabs(dy) > 5.1) {
- if(dy > 0.0f) eul[1] -= 2.0f*(float)M_PI; else eul[1]+= 2.0f*(float)M_PI;
- dy= eul[1] - oldrot[1];
- }
- while(fabs(dz) > 5.1) {
- if(dz > 0.0f) eul[2] -= 2.0f*(float)M_PI; else eul[2]+= 2.0f*(float)M_PI;
- dz= eul[2] - oldrot[2];
- }
-
- /* is 1 of the axis rotations larger than 180 degrees and the other small? NO ELSE IF!! */
- if( fabs(dx) > 3.2 && fabs(dy)<1.6 && fabs(dz)<1.6 ) {
- if(dx > 0.0) eul[0] -= 2.0f*(float)M_PI; else eul[0]+= 2.0f*(float)M_PI;
- }
- if( fabs(dy) > 3.2 && fabs(dz)<1.6 && fabs(dx)<1.6 ) {
- if(dy > 0.0) eul[1] -= 2.0f*(float)M_PI; else eul[1]+= 2.0f*(float)M_PI;
- }
- if( fabs(dz) > 3.2 && fabs(dx)<1.6 && fabs(dy)<1.6 ) {
- if(dz > 0.0) eul[2] -= 2.0f*(float)M_PI; else eul[2]+= 2.0f*(float)M_PI;
- }
-
- /* the method below was there from ancient days... but why! probably because the code sucks :)
- */
-#if 0
- /* calc again */
- dx= eul[0] - oldrot[0];
- dy= eul[1] - oldrot[1];
- dz= eul[2] - oldrot[2];
-
- /* special case, tested for x-z */
-
- if( (fabs(dx) > 3.1 && fabs(dz) > 1.5 ) || ( fabs(dx) > 1.5 && fabs(dz) > 3.1 ) ) {
- if(dx > 0.0) eul[0] -= M_PI; else eul[0]+= M_PI;
- if(eul[1] > 0.0) eul[1]= M_PI - eul[1]; else eul[1]= -M_PI - eul[1];
- if(dz > 0.0) eul[2] -= M_PI; else eul[2]+= M_PI;
-
- }
- else if( (fabs(dx) > 3.1 && fabs(dy) > 1.5 ) || ( fabs(dx) > 1.5 && fabs(dy) > 3.1 ) ) {
- if(dx > 0.0) eul[0] -= M_PI; else eul[0]+= M_PI;
- if(dy > 0.0) eul[1] -= M_PI; else eul[1]+= M_PI;
- if(eul[2] > 0.0) eul[2]= M_PI - eul[2]; else eul[2]= -M_PI - eul[2];
- }
- else if( (fabs(dy) > 3.1 && fabs(dz) > 1.5 ) || ( fabs(dy) > 1.5 && fabs(dz) > 3.1 ) ) {
- if(eul[0] > 0.0) eul[0]= M_PI - eul[0]; else eul[0]= -M_PI - eul[0];
- if(dy > 0.0) eul[1] -= M_PI; else eul[1]+= M_PI;
- if(dz > 0.0) eul[2] -= M_PI; else eul[2]+= M_PI;
- }
-#endif
-}
-
-/* uses 2 methods to retrieve eulers, and picks the closest */
-/* XYZ order */
-void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot)
-{
- float eul1[3], eul2[3];
- float d1, d2;
-
- mat3_to_eul2(mat, eul1, eul2);
-
- compatible_eul(eul1, oldrot);
- compatible_eul(eul2, oldrot);
-
- d1= (float)fabs(eul1[0]-oldrot[0]) + (float)fabs(eul1[1]-oldrot[1]) + (float)fabs(eul1[2]-oldrot[2]);
- d2= (float)fabs(eul2[0]-oldrot[0]) + (float)fabs(eul2[1]-oldrot[1]) + (float)fabs(eul2[2]-oldrot[2]);
-
- /* return best, which is just the one with lowest difference */
- if( d1 > d2) {
- VecCopyf(eul, eul2);
- }
- else {
- VecCopyf(eul, eul1);
- }
-
-}
-
-/* the matrix is written to as 3 axis vectors */
-void EulToGimbalAxis(float gmat[][3], float *eul, short order)
-{
- RotOrderInfo *R= GET_ROTATIONORDER_INFO(order);
-
- float mat[3][3];
- float teul[3];
-
- /* first axis is local */
- EulOToMat3(eul, order, mat);
- VecCopyf(gmat[R->axis[0]], mat[R->axis[0]]);
-
- /* second axis is local minus first rotation */
- VecCopyf(teul, eul);
- teul[R->axis[0]] = 0;
- EulOToMat3(teul, order, mat);
- VecCopyf(gmat[R->axis[1]], mat[R->axis[1]]);
-
-
- /* Last axis is global */
- gmat[R->axis[2]][0] = 0;
- gmat[R->axis[2]][1] = 0;
- gmat[R->axis[2]][2] = 0;
- gmat[R->axis[2]][R->axis[2]] = 1;
-}
-
-/* ************ AXIS ANGLE *************** */
-
-/* Axis angle to Quaternions */
-void AxisAngleToQuat(float q[4], float axis[3], 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;
-}
-
-/* Quaternions to Axis Angle */
-void QuatToAxisAngle(float q[4], float axis[3], float *angle)
-{
- float ha, si;
-
- /* calculate angle/2, and sin(angle/2) */
- ha= (float)acos(q[0]);
- si= (float)sin(ha);
-
- /* from half-angle to angle */
- *angle= ha * 2;
-
- /* prevent division by zero for axis conversion */
- if (fabs(si) < 0.0005)
- si= 1.0f;
-
- axis[0]= q[1] / si;
- axis[1]= q[2] / si;
- axis[2]= q[3] / si;
-}
-
-/* Axis Angle to Euler Rotation */
-void AxisAngleToEulO(float axis[3], float angle, float eul[3], short order)
-{
- float q[4];
-
- /* use quaternions as intermediate representation for now... */
- AxisAngleToQuat(q, axis, angle);
- QuatToEulO(q, eul, order);
-}
-
-/* Euler Rotation to Axis Angle */
-void EulOToAxisAngle(float eul[3], short order, float axis[3], float *angle)
-{
- float q[4];
-
- /* use quaternions as intermediate representation for now... */
- EulOToQuat(eul, order, q);
- QuatToAxisAngle(q, axis, angle);
-}
-
-/* axis angle to 3x3 matrix - safer version (normalisation of axis performed) */
-void AxisAngleToMat3(float axis[3], float angle, float mat[3][3])
-{
- float nor[3], nsi[3], co, si, ico;
-
- /* normalise the axis first (to remove unwanted scaling) */
- VecCopyf(nor, axis);
- Normalize(nor);
-
- /* now convert this to a 3x3 matrix */
- co= (float)cos(angle);
- si= (float)sin(angle);
-
- ico= (1.0f - co);
- nsi[0]= nor[0]*si;
- nsi[1]= nor[1]*si;
- nsi[2]= nor[2]*si;
-
- mat[0][0] = ((nor[0] * nor[0]) * ico) + co;
- mat[0][1] = ((nor[0] * nor[1]) * ico) + nsi[2];
- mat[0][2] = ((nor[0] * nor[2]) * ico) - nsi[1];
- mat[1][0] = ((nor[0] * nor[1]) * ico) - nsi[2];
- mat[1][1] = ((nor[1] * nor[1]) * ico) + co;
- mat[1][2] = ((nor[1] * nor[2]) * ico) + nsi[0];
- mat[2][0] = ((nor[0] * nor[2]) * ico) + nsi[1];
- mat[2][1] = ((nor[1] * nor[2]) * ico) - nsi[0];
- mat[2][2] = ((nor[2] * nor[2]) * ico) + co;
-}
-
-/* axis angle to 4x4 matrix - safer version (normalisation of axis performed) */
-void AxisAngleToMat4(float axis[3], float angle, float mat[4][4])
-{
- float tmat[3][3];
-
- AxisAngleToMat3(axis, angle, tmat);
- Mat4One(mat);
- Mat4CpyMat3(mat, tmat);
-}
-
-/* 3x3 matrix to axis angle (see Mat4ToVecRot too) */
-void Mat3ToAxisAngle(float mat[3][3], float axis[3], float *angle)
-{
- float q[4];
-
- /* use quaternions as intermediate representation */
- // TODO: it would be nicer to go straight there...
- Mat3ToQuat(mat, q);
- QuatToAxisAngle(q, axis, angle);
-}
-
-/* 4x4 matrix to axis angle (see Mat4ToVecRot too) */
-void Mat4ToAxisAngle(float mat[4][4], float axis[3], float *angle)
-{
- float q[4];
-
- /* use quaternions as intermediate representation */
- // TODO: it would be nicer to go straight there...
- Mat4ToQuat(mat, q);
- QuatToAxisAngle(q, axis, angle);
-}
-
-/* ************ AXIS ANGLE (unchecked) *************** */
-// TODO: the following calls should probably be depreceated sometime
-
-/* 3x3 matrix to axis angle */
-void Mat3ToVecRot(float mat[3][3], float axis[3], float *angle)
-{
- float q[4];
-
- /* use quaternions as intermediate representation */
- // TODO: it would be nicer to go straight there...
- Mat3ToQuat(mat, q);
- QuatToAxisAngle(q, axis, angle);
-}
-
-/* 4x4 matrix to axis angle */
-void Mat4ToVecRot(float mat[4][4], float axis[3], float *angle)
-{
- float q[4];
-
- /* use quaternions as intermediate representation */
- // TODO: it would be nicer to go straight there...
- Mat4ToQuat(mat, q);
- QuatToAxisAngle(q, axis, angle);
-}
-
-/* axis angle to 3x3 matrix */
-void VecRotToMat3(float *vec, float phi, float mat[][3])
-{
- /* rotation of phi radials around vec */
- float vx, vx2, vy, vy2, vz, vz2, co, si;
-
- vx= vec[0];
- vy= vec[1];
- vz= vec[2];
- vx2= vx*vx;
- vy2= vy*vy;
- vz2= vz*vz;
- co= (float)cos(phi);
- si= (float)sin(phi);
-
- mat[0][0]= vx2+co*(1.0f-vx2);
- mat[0][1]= vx*vy*(1.0f-co)+vz*si;
- mat[0][2]= vz*vx*(1.0f-co)-vy*si;
- mat[1][0]= vx*vy*(1.0f-co)-vz*si;
- mat[1][1]= vy2+co*(1.0f-vy2);
- mat[1][2]= vy*vz*(1.0f-co)+vx*si;
- mat[2][0]= vz*vx*(1.0f-co)+vy*si;
- mat[2][1]= vy*vz*(1.0f-co)-vx*si;
- mat[2][2]= vz2+co*(1.0f-vz2);
-}
-
-/* axis angle to 4x4 matrix */
-void VecRotToMat4(float *vec, float phi, float mat[][4])
-{
- float tmat[3][3];
-
- VecRotToMat3(vec, phi, tmat);
- Mat4One(mat);
- Mat4CpyMat3(mat, tmat);
-}
-
-/* axis angle to quaternion */
-void VecRotToQuat(float *vec, float phi, float *quat)
-{
- /* rotation of phi radials around vec */
- float si;
-
- quat[1]= vec[0];
- quat[2]= vec[1];
- quat[3]= vec[2];
-
- if( Normalize(quat+1) == 0.0f) {
- QuatOne(quat);
- }
- else {
- quat[0]= (float)cos( phi/2.0 );
- si= (float)sin( phi/2.0 );
- quat[1] *= si;
- quat[2] *= si;
- quat[3] *= si;
- }
-}
-
-/* ************ VECTORS *************** */
-
-/* Returns a vector bisecting the angle at v2 formed by v1, v2 and v3 */
-void VecBisect3(float *out, float *v1, float *v2, float *v3)
-{
- float d_12[3], d_23[3];
- VecSubf(d_12, v2, v1);
- VecSubf(d_23, v3, v2);
- Normalize(d_12);
- Normalize(d_23);
- VecAddf(out, d_12, d_23);
- Normalize(out);
-}
-
-/* Returns a reflection vector from a vector and a normal vector
-reflect = vec - ((2 * DotVecs(vec, mirror)) * mirror)
-*/
-void VecReflect(float *out, float *v1, float *v2)
-{
- float vec[3], normal[3];
- float reflect[3] = {0.0f, 0.0f, 0.0f};
- float dot2;
-
- VecCopyf(vec, v1);
- VecCopyf(normal, v2);
-
- Normalize(normal);
-
- dot2 = 2 * Inpf(vec, normal);
-
- reflect[0] = vec[0] - (dot2 * normal[0]);
- reflect[1] = vec[1] - (dot2 * normal[1]);
- reflect[2] = vec[2] - (dot2 * normal[2]);
-
- VecCopyf(out, reflect);
-}
-
-/* Return the angle in degrees between vecs 1-2 and 2-3 in degrees
- If v1 is a shoulder, v2 is the elbow and v3 is the hand,
- this would return the angle at the elbow */
-float VecAngle3(float *v1, float *v2, float *v3)
-{
- float vec1[3], vec2[3];
-
- VecSubf(vec1, v2, v1);
- VecSubf(vec2, v2, v3);
- Normalize(vec1);
- Normalize(vec2);
-
- return NormalizedVecAngle2(vec1, vec2);
-}
-
-float Vec2Angle3(float *v1, float *v2, float *v3)
-{
- float vec1[2], vec2[2];
-
- vec1[0] = v2[0]-v1[0];
- vec1[1] = v2[1]-v1[1];
-
- vec2[0] = v2[0]-v3[0];
- vec2[1] = v2[1]-v3[1];
-
- Normalize2(vec1);
- Normalize2(vec2);
-
- return NormalizedVecAngle2_2D(vec1, vec2);
-}
-
-/* Return the shortest angle in degrees between the 2 vectors */
-float VecAngle2(float *v1, float *v2)
-{
- float vec1[3], vec2[3];
-
- VecCopyf(vec1, v1);
- VecCopyf(vec2, v2);
- Normalize(vec1);
- Normalize(vec2);
-
- return NormalizedVecAngle2(vec1, vec2);
-}
-
-float NormalizedVecAngle2(float *v1, float *v2)
-{
- /* this is the same as acos(Inpf(v1, v2)), but more accurate */
- if (Inpf(v1, v2) < 0.0f) {
- float vec[3];
-
- vec[0]= -v2[0];
- vec[1]= -v2[1];
- vec[2]= -v2[2];
-
- return (float)M_PI - 2.0f*(float)saasin(VecLenf(vec, v1)/2.0f);
- }
- else
- return 2.0f*(float)saasin(VecLenf(v2, v1)/2.0f);
-}
-
-float NormalizedVecAngle2_2D(float *v1, float *v2)
-{
- /* this is the same as acos(Inpf(v1, v2)), but more accurate */
- if (Inp2f(v1, v2) < 0.0f) {
- float vec[2];
-
- vec[0]= -v2[0];
- vec[1]= -v2[1];
-
- return (float)M_PI - 2.0f*saasin(Vec2Lenf(vec, v1)/2.0f);
- }
- else
- return 2.0f*(float)saasin(Vec2Lenf(v2, v1)/2.0f);
-}
-
-/* ******************************************** */
-
-void SizeToMat3( float *size, float mat[][3])
-{
- mat[0][0]= size[0];
- mat[0][1]= 0.0f;
- mat[0][2]= 0.0f;
- mat[1][1]= size[1];
- mat[1][0]= 0.0f;
- mat[1][2]= 0.0f;
- mat[2][2]= size[2];
- mat[2][1]= 0.0f;
- mat[2][0]= 0.0f;
-}
-
-void SizeToMat4( float *size, float mat[][4])
-{
- float tmat[3][3];
-
- SizeToMat3(size, tmat);
- Mat4One(mat);
- Mat4CpyMat3(mat, tmat);
-}
-
-void Mat3ToSize( float mat[][3], float *size)
-{
- size[0]= VecLength(mat[0]);
- size[1]= VecLength(mat[1]);
- size[2]= VecLength(mat[2]);
-}
-
-void Mat4ToSize( float mat[][4], float *size)
-{
- size[0]= VecLength(mat[0]);
- size[1]= VecLength(mat[1]);
- size[2]= VecLength(mat[2]);
-}
-
-/* this gets the average scale of a matrix, only use when your scaling
- * data that has no idea of scale axis, examples are bone-envelope-radius
- * and curve radius */
-float Mat3ToScalef(float mat[][3])
-{
- /* unit length vector */
- float unit_vec[3] = {0.577350269189626f, 0.577350269189626f, 0.577350269189626f};
- Mat3MulVecfl(mat, unit_vec);
- return VecLength(unit_vec);
-}
-
-float Mat4ToScalef(float mat[][4])
-{
- float tmat[3][3];
- Mat3CpyMat4(tmat, mat);
- return Mat3ToScalef(tmat);
-}
-
-
-/* ************* SPECIALS ******************* */
-
-void triatoquat( float *v1, float *v2, float *v3, float *quat)
-{
- /* imaginary x-axis, y-axis triangle is being rotated */
- float vec[3], q1[4], q2[4], n[3], si, co, angle, mat[3][3], imat[3][3];
-
- /* move z-axis to face-normal */
- CalcNormFloat(v1, v2, v3, vec);
-
- n[0]= vec[1];
- n[1]= -vec[0];
- n[2]= 0.0f;
- Normalize(n);
-
- if(n[0]==0.0f && n[1]==0.0f) n[0]= 1.0f;
-
- angle= -0.5f*(float)saacos(vec[2]);
- co= (float)cos(angle);
- si= (float)sin(angle);
- q1[0]= co;
- q1[1]= n[0]*si;
- q1[2]= n[1]*si;
- q1[3]= 0.0f;
-
- /* rotate back line v1-v2 */
- QuatToMat3(q1, mat);
- Mat3Inv(imat, mat);
- VecSubf(vec, v2, v1);
- Mat3MulVecfl(imat, vec);
-
- /* what angle has this line with x-axis? */
- vec[2]= 0.0f;
- Normalize(vec);
-
- angle= (float)(0.5*atan2(vec[1], vec[0]));
- co= (float)cos(angle);
- si= (float)sin(angle);
- q2[0]= co;
- q2[1]= 0.0f;
- q2[2]= 0.0f;
- q2[3]= si;
-
- QuatMul(quat, q1, q2);
-}
-
-void MinMaxRGB(short c[])
-{
- if(c[0]>255) c[0]=255;
- else if(c[0]<0) c[0]=0;
- if(c[1]>255) c[1]=255;
- else if(c[1]<0) c[1]=0;
- if(c[2]>255) c[2]=255;
- else if(c[2]<0) c[2]=0;
-}
-
-float Vec2Lenf(float *v1, float *v2)
-{
- float x, y;
-
- x = v1[0]-v2[0];
- y = v1[1]-v2[1];
- return (float)sqrt(x*x+y*y);
-}
-
-float Vec2Length(float *v)
-{
- return (float)sqrt(v[0]*v[0] + v[1]*v[1]);
-}
-
-void Vec2Mulf(float *v1, float f)
-{
- v1[0]*= f;
- v1[1]*= f;
-}
-
-void Vec2Addf(float *v, float *v1, float *v2)
-{
- v[0]= v1[0]+ v2[0];
- v[1]= v1[1]+ v2[1];
-}
-
-void Vec2Subf(float *v, float *v1, float *v2)
-{
- v[0]= v1[0]- v2[0];
- v[1]= v1[1]- v2[1];
-}
-
-void Vec2Copyf(float *v1, float *v2)
-{
- v1[0]= v2[0];
- v1[1]= v2[1];
-}
-
-float Inp2f(float *v1, float *v2)
-{
- return v1[0]*v2[0]+v1[1]*v2[1];
-}
-
-float Normalize2(float *n)
-{
- float d;
-
- d= n[0]*n[0]+n[1]*n[1];
-
- if(d>1.0e-35f) {
- d= (float)sqrt(d);
- n[0]/=d;
- n[1]/=d;
- } else {
- n[0]=n[1]= 0.0f;
- d= 0.0f;
- }
- return d;
-}
-
-void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b)
-{
- int i;
- float f, p, q, t;
-
- h *= 360.0f;
-
- if(s==0.0f) {
- *r = v;
- *g = v;
- *b = v;
- }
- else {
- if(h== 360.0f) h = 0.0f;
-
- h /= 60.0f;
- i = (int)floor(h);
- f = h - i;
- p = v*(1.0f-s);
- q = v*(1.0f-(s*f));
- t = v*(1.0f-(s*(1.0f-f)));
-
- switch (i) {
- case 0 :
- *r = v;
- *g = t;
- *b = p;
- break;
- case 1 :
- *r = q;
- *g = v;
- *b = p;
- break;
- case 2 :
- *r = p;
- *g = v;
- *b = t;
- break;
- case 3 :
- *r = p;
- *g = q;
- *b = v;
- break;
- case 4 :
- *r = t;
- *g = p;
- *b = v;
- break;
- case 5 :
- *r = v;
- *g = p;
- *b = q;
- break;
- }
- }
-}
-
-void rgb_to_yuv(float r, float g, float b, float *ly, float *lu, float *lv)
-{
- float y, u, v;
- y= 0.299f*r + 0.587f*g + 0.114f*b;
- u=-0.147f*r - 0.289f*g + 0.436f*b;
- v= 0.615f*r - 0.515f*g - 0.100f*b;
-
- *ly=y;
- *lu=u;
- *lv=v;
-}
-
-void yuv_to_rgb(float y, float u, float v, float *lr, float *lg, float *lb)
-{
- float r, g, b;
- r=y+1.140f*v;
- g=y-0.394f*u - 0.581f*v;
- b=y+2.032f*u;
-
- *lr=r;
- *lg=g;
- *lb=b;
-}
-
-void rgb_to_ycc(float r, float g, float b, float *ly, float *lcb, float *lcr)
-{
- float sr,sg, sb;
- float y, cr, cb;
-
- sr=255.0f*r;
- sg=255.0f*g;
- sb=255.0f*b;
-
-
- y=(0.257f*sr)+(0.504f*sg)+(0.098f*sb)+16.0f;
- cb=(-0.148f*sr)-(0.291f*sg)+(0.439f*sb)+128.0f;
- cr=(0.439f*sr)-(0.368f*sg)-(0.071f*sb)+128.0f;
-
- *ly=y;
- *lcb=cb;
- *lcr=cr;
-}
-
-void ycc_to_rgb(float y, float cb, float cr, float *lr, float *lg, float *lb)
-{
- float r,g,b;
-
- r=1.164f*(y-16.0f)+1.596f*(cr-128.0f);
- g=1.164f*(y-16.0f)-0.813f*(cr-128.0f)-0.392f*(cb-128.0f);
- b=1.164f*(y-16.0f)+2.017f*(cb-128.0f);
-
- *lr=r/255.0f;
- *lg=g/255.0f;
- *lb=b/255.0f;
-}
-
-void hex_to_rgb(char *hexcol, float *r, float *g, float *b)
-{
- unsigned int ri, gi, bi;
-
- if (hexcol[0] == '#') hexcol++;
-
- if (sscanf(hexcol, "%02x%02x%02x", &ri, &gi, &bi)) {
- *r = ri / 255.0f;
- *g = gi / 255.0f;
- *b = bi / 255.0f;
- }
-}
-
-void rgb_to_hsv(float r, float g, float b, float *lh, float *ls, float *lv)
-{
- float h, s, v;
- float cmax, cmin, cdelta;
- float rc, gc, bc;
-
- cmax = r;
- cmin = r;
- cmax = (g>cmax ? g:cmax);
- cmin = (g<cmin ? g:cmin);
- cmax = (b>cmax ? b:cmax);
- cmin = (b<cmin ? b:cmin);
-
- v = cmax; /* value */
- if (cmax != 0.0f)
- s = (cmax - cmin)/cmax;
- else {
- s = 0.0f;
- h = 0.0f;
- }
- if (s == 0.0f)
- h = -1.0f;
- else {
- cdelta = cmax-cmin;
- rc = (cmax-r)/cdelta;
- gc = (cmax-g)/cdelta;
- bc = (cmax-b)/cdelta;
- if (r==cmax)
- h = bc-gc;
- else
- if (g==cmax)
- h = 2.0f+rc-bc;
- else
- h = 4.0f+gc-rc;
- h = h*60.0f;
- if (h < 0.0f)
- h += 360.0f;
- }
-
- *ls = s;
- *lh = h / 360.0f;
- if(*lh < 0.0f) *lh= 0.0f;
- *lv = v;
-}
-
-/*http://brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html */
-
-void xyz_to_rgb(float xc, float yc, float zc, float *r, float *g, float *b, int colorspace)
-{
- switch (colorspace) {
- case BLI_CS_SMPTE:
- *r = (3.50570f * xc) + (-1.73964f * yc) + (-0.544011f * zc);
- *g = (-1.06906f * xc) + (1.97781f * yc) + (0.0351720f * zc);
- *b = (0.0563117f * xc) + (-0.196994f * yc) + (1.05005f * zc);
- break;
- case BLI_CS_REC709:
- *r = (3.240476f * xc) + (-1.537150f * yc) + (-0.498535f * zc);
- *g = (-0.969256f * xc) + (1.875992f * yc) + (0.041556f * zc);
- *b = (0.055648f * xc) + (-0.204043f * yc) + (1.057311f * zc);
- break;
- case BLI_CS_CIE:
- *r = (2.28783848734076f * xc) + (-0.833367677835217f * yc) + (-0.454470795871421f * zc);
- *g = (-0.511651380743862f * xc) + (1.42275837632178f * yc) + (0.0888930017552939f * zc);
- *b = (0.00572040983140966f * xc) + (-0.0159068485104036f * yc) + (1.0101864083734f * zc);
- break;
- }
-}
-
-/*If the requested RGB shade contains a negative weight for
- one of the primaries, it lies outside the colour gamut
- accessible from the given triple of primaries. Desaturate
- it by adding white, equal quantities of R, G, and B, enough
- to make RGB all positive. The function returns 1 if the
- components were modified, zero otherwise.*/
-int constrain_rgb(float *r, float *g, float *b)
-{
- float w;
-
- /* Amount of white needed is w = - min(0, *r, *g, *b) */
-
- w = (0 < *r) ? 0 : *r;
- w = (w < *g) ? w : *g;
- w = (w < *b) ? w : *b;
- w = -w;
-
- /* Add just enough white to make r, g, b all positive. */
-
- if (w > 0) {
- *r += w; *g += w; *b += w;
- return 1; /* Color modified to fit RGB gamut */
- }
-
- return 0; /* Color within RGB gamut */
-}
-
-
-/* we define a 'cpack' here as a (3 byte color code) number that can be expressed like 0xFFAA66 or so.
- for that reason it is sensitive for endianness... with this function it works correctly
-*/
-
-unsigned int hsv_to_cpack(float h, float s, float v)
-{
- short r, g, b;
- float rf, gf, bf;
- unsigned int col;
-
- hsv_to_rgb(h, s, v, &rf, &gf, &bf);
-
- r= (short)(rf*255.0f);
- g= (short)(gf*255.0f);
- b= (short)(bf*255.0f);
-
- col= ( r + (g*256) + (b*256*256) );
- return col;
-}
-
-
-unsigned int rgb_to_cpack(float r, float g, float b)
-{
- int ir, ig, ib;
-
- ir= (int)floor(255.0*r);
- if(ir<0) ir= 0; else if(ir>255) ir= 255;
- ig= (int)floor(255.0*g);
- if(ig<0) ig= 0; else if(ig>255) ig= 255;
- ib= (int)floor(255.0*b);
- if(ib<0) ib= 0; else if(ib>255) ib= 255;
-
- return (ir+ (ig*256) + (ib*256*256));
-}
-
-void cpack_to_rgb(unsigned int col, float *r, float *g, float *b)
-{
-
- *r= (float)((col)&0xFF);
- *r /= 255.0f;
-
- *g= (float)(((col)>>8)&0xFF);
- *g /= 255.0f;
-
- *b= (float)(((col)>>16)&0xFF);
- *b /= 255.0f;
-}
-
-
-/* *************** PROJECTIONS ******************* */
-
-void tubemap(float x, float y, float z, float *u, float *v)
-{
- float len;
-
- *v = (z + 1.0f) / 2.0f;
-
- len= (float)sqrt(x*x+y*y);
- if(len > 0.0f)
- *u = (float)((1.0 - (atan2(x/len,y/len) / M_PI)) / 2.0);
- else
- *v = *u = 0.0f; /* to avoid un-initialized variables */
-}
-
-/* ------------------------------------------------------------------------- */
-
-void spheremap(float x, float y, float z, float *u, float *v)
-{
- float len;
-
- len= (float)sqrt(x*x+y*y+z*z);
- if(len > 0.0f) {
- if(x==0.0f && y==0.0f) *u= 0.0f; /* othwise domain error */
- else *u = (float)((1.0 - (float)atan2(x,y) / M_PI) / 2.0);
-
- z/=len;
- *v = 1.0f - (float)saacos(z)/(float)M_PI;
- } else {
- *v = *u = 0.0f; /* to avoid un-initialized variables */
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* proposed api by ton and zr, not used yet */
-#if 0
-/* ***************** m1 = m2 ***************** */
-static void cpy_m3_m3(float m1[][3], float m2[][3])
-{
- memcpy(m1[0], m2[0], 9*sizeof(float));
-}
-
-/* ***************** m1 = m2 ***************** */
-static void cpy_m4_m4(float m1[][4], float m2[][4])
-{
- memcpy(m1[0], m2[0], 16*sizeof(float));
-}
-
-/* ***************** identity matrix ***************** */
-static void ident_m4(float m[][4])
-{
-
- m[0][0]= m[1][1]= m[2][2]= m[3][3]= 1.0;
- m[0][1]= m[0][2]= m[0][3]= 0.0;
- m[1][0]= m[1][2]= m[1][3]= 0.0;
- m[2][0]= m[2][1]= m[2][3]= 0.0;
- m[3][0]= m[3][1]= m[3][2]= 0.0;
-}
-
-/* ***************** m1 = m2 (pre) * m3 (post) ***************** */
-static void mul_m3_m3m3(float m1[][3], float m2[][3], float m3[][3])
-{
- float m[3][3];
-
- m[0][0]= m2[0][0]*m3[0][0] + m2[1][0]*m3[0][1] + m2[2][0]*m3[0][2];
- m[0][1]= m2[0][1]*m3[0][0] + m2[1][1]*m3[0][1] + m2[2][1]*m3[0][2];
- m[0][2]= m2[0][2]*m3[0][0] + m2[1][2]*m3[0][1] + m2[2][2]*m3[0][2];
-
- m[1][0]= m2[0][0]*m3[1][0] + m2[1][0]*m3[1][1] + m2[2][0]*m3[1][2];
- m[1][1]= m2[0][1]*m3[1][0] + m2[1][1]*m3[1][1] + m2[2][1]*m3[1][2];
- m[1][2]= m2[0][2]*m3[1][0] + m2[1][2]*m3[1][1] + m2[2][2]*m3[1][2];
-
- m[2][0]= m2[0][0]*m3[2][0] + m2[1][0]*m3[2][1] + m2[2][0]*m3[2][2];
- m[2][1]= m2[0][1]*m3[2][0] + m2[1][1]*m3[2][1] + m2[2][1]*m3[2][2];
- m[2][2]= m2[0][2]*m3[2][0] + m2[1][2]*m3[2][1] + m2[2][2]*m3[2][2];
-
- cpy_m3_m3(m1, m2);
-}
-
-/* ***************** m1 = m2 (pre) * m3 (post) ***************** */
-static void mul_m4_m4m4(float m1[][4], float m2[][4], float m3[][4])
-{
- float m[4][4];
-
- m[0][0]= m2[0][0]*m3[0][0] + m2[1][0]*m3[0][1] + m2[2][0]*m3[0][2] + m2[3][0]*m3[0][3];
- m[0][1]= m2[0][1]*m3[0][0] + m2[1][1]*m3[0][1] + m2[2][1]*m3[0][2] + m2[3][1]*m3[0][3];
- m[0][2]= m2[0][2]*m3[0][0] + m2[1][2]*m3[0][1] + m2[2][2]*m3[0][2] + m2[3][2]*m3[0][3];
- m[0][3]= m2[0][3]*m3[0][0] + m2[1][3]*m3[0][1] + m2[2][3]*m3[0][2] + m2[3][3]*m3[0][3];
-
- m[1][0]= m2[0][0]*m3[1][0] + m2[1][0]*m3[1][1] + m2[2][0]*m3[1][2] + m2[3][0]*m3[1][3];
- m[1][1]= m2[0][1]*m3[1][0] + m2[1][1]*m3[1][1] + m2[2][1]*m3[1][2] + m2[3][1]*m3[1][3];
- m[1][2]= m2[0][2]*m3[1][0] + m2[1][2]*m3[1][1] + m2[2][2]*m3[1][2] + m2[3][2]*m3[1][3];
- m[1][3]= m2[0][3]*m3[1][0] + m2[1][3]*m3[1][1] + m2[2][3]*m3[1][2] + m2[3][3]*m3[1][3];
-
- m[2][0]= m2[0][0]*m3[2][0] + m2[1][0]*m3[2][1] + m2[2][0]*m3[2][2] + m2[3][0]*m3[2][3];
- m[2][1]= m2[0][1]*m3[2][0] + m2[1][1]*m3[2][1] + m2[2][1]*m3[2][2] + m2[3][1]*m3[2][3];
- m[2][2]= m2[0][2]*m3[2][0] + m2[1][2]*m3[2][1] + m2[2][2]*m3[2][2] + m2[3][2]*m3[2][3];
- m[2][3]= m2[0][3]*m3[2][0] + m2[1][3]*m3[2][1] + m2[2][3]*m3[2][2] + m2[3][3]*m3[2][3];
-
- m[3][0]= m2[0][0]*m3[3][0] + m2[1][0]*m3[3][1] + m2[2][0]*m3[3][2] + m2[3][0]*m3[3][3];
- m[3][1]= m2[0][1]*m3[3][0] + m2[1][1]*m3[3][1] + m2[2][1]*m3[3][2] + m2[3][1]*m3[3][3];
- m[3][2]= m2[0][2]*m3[3][0] + m2[1][2]*m3[3][1] + m2[2][2]*m3[3][2] + m2[3][2]*m3[3][3];
- m[3][3]= m2[0][3]*m3[3][0] + m2[1][3]*m3[3][1] + m2[2][3]*m3[3][2] + m2[3][3]*m3[3][3];
-
- cpy_m4_m4(m1, m2);
-}
-
-/* ***************** m1 = inverse(m2) ***************** */
-static void inv_m3_m3(float m1[][3], float m2[][3])
-{
- short a,b;
- float det;
-
- /* calc adjoint */
- Mat3Adj(m1, m2);
-
- /* then determinant old matrix! */
- det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1])
- -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1])
- +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]);
-
- if(det==0.0f) det=1.0f;
- det= 1.0f/det;
- for(a=0;a<3;a++) {
- for(b=0;b<3;b++) {
- m1[a][b]*=det;
- }
- }
-}
-
-/* ***************** m1 = inverse(m2) ***************** */
-static int inv_m4_m4(float inverse[][4], float mat[][4])
-{
- int i, j, k;
- double temp;
- float tempmat[4][4];
- float max;
- int maxj;
-
- /* Set inverse to identity */
- ident_m4(inverse);
-
- /* Copy original matrix so we don't mess it up */
- cpy_m4_m4(tempmat, mat);
-
- for(i = 0; i < 4; i++) {
- /* Look for row with max pivot */
- max = ABS(tempmat[i][i]);
- maxj = i;
- for(j = i + 1; j < 4; j++) {
- if(ABS(tempmat[j][i]) > max) {
- max = ABS(tempmat[j][i]);
- maxj = j;
- }
- }
- /* Swap rows if necessary */
- if (maxj != i) {
- for( k = 0; k < 4; k++) {
- SWAP(float, tempmat[i][k], tempmat[maxj][k]);
- SWAP(float, inverse[i][k], inverse[maxj][k]);
- }
- }
-
- temp = tempmat[i][i];
- if (temp == 0)
- return 0; /* No non-zero pivot */
- for(k = 0; k < 4; k++) {
- tempmat[i][k] = (float)(tempmat[i][k]/temp);
- inverse[i][k] = (float)(inverse[i][k]/temp);
- }
- for(j = 0; j < 4; j++) {
- if(j != i) {
- temp = tempmat[j][i];
- for(k = 0; k < 4; k++) {
- tempmat[j][k] -= (float)(tempmat[i][k]*temp);
- inverse[j][k] -= (float)(inverse[i][k]*temp);
- }
- }
- }
- }
- return 1;
-}
-
-/* ***************** v1 = v2 * mat ***************** */
-static void mul_v3_v3m4(float *v1, float *v2, float mat[][4])
-{
- float x, y;
-
- x= v2[0]; /* work with a copy, v1 can be same as v2 */
- y= v2[1];
- v1[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*v2[2] + mat[3][0];
- v1[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*v2[2] + mat[3][1];
- v1[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*v2[2] + mat[3][2];
-
-}
-
-#endif
-
-/* moved from effect.c
- test if the line starting at p1 ending at p2 intersects the triangle v0..v2
- return non zero if it does
-*/
-int LineIntersectsTriangle(float p1[3], float p2[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv)
-{
-
- float p[3], s[3], d[3], e1[3], e2[3], q[3];
- float a, f, u, v;
-
- VecSubf(e1, v1, v0);
- VecSubf(e2, v2, v0);
- VecSubf(d, p2, p1);
-
- 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)||(*lambda > 1.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;
-}
-
-/* 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;
-}
-
-int RayIntersectsTriangleThreshold(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold)
-{
- float p[3], s[3], e1[3], e2[3], q[3];
- float a, f, u, v;
- float du = 0, dv = 0;
-
- 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);
- v = f * Inpf(d, q);
-
- if (u < 0) du = u;
- if (u > 1) du = u - 1;
- if (v < 0) dv = v;
- if (v > 1) dv = v - 1;
- if (u > 0 && v > 0 && u + v > 1)
- {
- float t = u + v - 1;
- du = u - t/2;
- dv = v - t/2;
- }
-
- VecMulf(e1, du);
- VecMulf(e2, dv);
-
- if (Inpf(e1, e1) + Inpf(e2, e2) > threshold * threshold)
- {
- return 0;
- }
-
- if(uv) {
- uv[0]= u;
- uv[1]= v;
- }
-
- return 1;
-}
-
-
-/* Adapted from the paper by Kasper Fauerby */
-/* "Improved Collision detection and Response" */
-static int getLowestRoot(float a, float b, float c, float maxR, float* root)
-{
- // Check if a solution exists
- float determinant = b*b - 4.0f*a*c;
-
- // If determinant is negative it means no solutions.
- if (determinant >= 0.0f)
- {
- // calculate the two roots: (if determinant == 0 then
- // x1==x2 but let’s disregard that slight optimization)
- float sqrtD = (float)sqrt(determinant);
- float r1 = (-b - sqrtD) / (2.0f*a);
- float r2 = (-b + sqrtD) / (2.0f*a);
-
- // Sort so x1 <= x2
- if (r1 > r2)
- SWAP( float, r1, r2);
-
- // Get lowest root:
- if (r1 > 0.0f && r1 < maxR)
- {
- *root = r1;
- return 1;
- }
-
- // It is possible that we want x2 - this can happen
- // if x1 < 0
- if (r2 > 0.0f && r2 < maxR)
- {
- *root = r2;
- return 1;
- }
- }
- // No (valid) solutions
- return 0;
-}
-
-int SweepingSphereIntersectsTriangleUV(float p1[3], float p2[3], float radius, float v0[3], float v1[3], float v2[3], float *lambda, float *ipoint)
-{
- float e1[3], e2[3], e3[3], point[3], vel[3], /*dist[3],*/ nor[3], temp[3], bv[3];
- float a, b, c, d, e, x, y, z, radius2=radius*radius;
- float elen2,edotv,edotbv,nordotv,vel2;
- float newLambda;
- int found_by_sweep=0;
-
- VecSubf(e1,v1,v0);
- VecSubf(e2,v2,v0);
- VecSubf(vel,p2,p1);
-
-/*---test plane of tri---*/
- Crossf(nor,e1,e2);
- Normalize(nor);
-
- /* flip normal */
- if(Inpf(nor,vel)>0.0f) VecNegf(nor);
-
- a=Inpf(p1,nor)-Inpf(v0,nor);
- nordotv=Inpf(nor,vel);
-
- if (fabs(nordotv) < 0.000001)
- {
- if(fabs(a)>=radius)
- {
- return 0;
- }
- }
- else
- {
- float t0=(-a+radius)/nordotv;
- float t1=(-a-radius)/nordotv;
-
- if(t0>t1)
- SWAP(float, t0, t1);
-
- if(t0>1.0f || t1<0.0f) return 0;
-
- /* clamp to [0,1] */
- CLAMP(t0, 0.0f, 1.0f);
- CLAMP(t1, 0.0f, 1.0f);
-
- /*---test inside of tri---*/
- /* plane intersection point */
-
- point[0] = p1[0] + vel[0]*t0 - nor[0]*radius;
- point[1] = p1[1] + vel[1]*t0 - nor[1]*radius;
- point[2] = p1[2] + vel[2]*t0 - nor[2]*radius;
-
-
- /* is the point in the tri? */
- a=Inpf(e1,e1);
- b=Inpf(e1,e2);
- c=Inpf(e2,e2);
-
- VecSubf(temp,point,v0);
- d=Inpf(temp,e1);
- e=Inpf(temp,e2);
-
- x=d*c-e*b;
- y=e*a-d*b;
- z=x+y-(a*c-b*b);
-
-
- if( z <= 0.0f && (x >= 0.0f && y >= 0.0f))
- {
- //( ((unsigned int)z)& ~(((unsigned int)x)|((unsigned int)y)) ) & 0x80000000){
- *lambda=t0;
- VecCopyf(ipoint,point);
- return 1;
- }
- }
-
-
- *lambda=1.0f;
-
-/*---test points---*/
- a=vel2=Inpf(vel,vel);
-
- /*v0*/
- VecSubf(temp,p1,v0);
- b=2.0f*Inpf(vel,temp);
- c=Inpf(temp,temp)-radius2;
-
- if(getLowestRoot(a, b, c, *lambda, lambda))
- {
- VecCopyf(ipoint,v0);
- found_by_sweep=1;
- }
-
- /*v1*/
- VecSubf(temp,p1,v1);
- b=2.0f*Inpf(vel,temp);
- c=Inpf(temp,temp)-radius2;
-
- if(getLowestRoot(a, b, c, *lambda, lambda))
- {
- VecCopyf(ipoint,v1);
- found_by_sweep=1;
- }
-
- /*v2*/
- VecSubf(temp,p1,v2);
- b=2.0f*Inpf(vel,temp);
- c=Inpf(temp,temp)-radius2;
-
- if(getLowestRoot(a, b, c, *lambda, lambda))
- {
- VecCopyf(ipoint,v2);
- found_by_sweep=1;
- }
-
-/*---test edges---*/
- VecSubf(e3,v2,v1); //wasnt yet calculated
-
-
- /*e1*/
- VecSubf(bv,v0,p1);
-
- elen2 = Inpf(e1,e1);
- edotv = Inpf(e1,vel);
- edotbv = Inpf(e1,bv);
-
- a=elen2*(-Inpf(vel,vel))+edotv*edotv;
- b=2.0f*(elen2*Inpf(vel,bv)-edotv*edotbv);
- c=elen2*(radius2-Inpf(bv,bv))+edotbv*edotbv;
-
- if(getLowestRoot(a, b, c, *lambda, &newLambda))
- {
- e=(edotv*newLambda-edotbv)/elen2;
-
- if(e >= 0.0f && e <= 1.0f)
- {
- *lambda = newLambda;
- VecCopyf(ipoint,e1);
- VecMulf(ipoint,e);
- VecAddf(ipoint,ipoint,v0);
- found_by_sweep=1;
- }
- }
-
- /*e2*/
- /*bv is same*/
- elen2 = Inpf(e2,e2);
- edotv = Inpf(e2,vel);
- edotbv = Inpf(e2,bv);
-
- a=elen2*(-Inpf(vel,vel))+edotv*edotv;
- b=2.0f*(elen2*Inpf(vel,bv)-edotv*edotbv);
- c=elen2*(radius2-Inpf(bv,bv))+edotbv*edotbv;
-
- if(getLowestRoot(a, b, c, *lambda, &newLambda))
- {
- e=(edotv*newLambda-edotbv)/elen2;
-
- if(e >= 0.0f && e <= 1.0f)
- {
- *lambda = newLambda;
- VecCopyf(ipoint,e2);
- VecMulf(ipoint,e);
- VecAddf(ipoint,ipoint,v0);
- found_by_sweep=1;
- }
- }
-
- /*e3*/
- VecSubf(bv,v0,p1);
- elen2 = Inpf(e1,e1);
- edotv = Inpf(e1,vel);
- edotbv = Inpf(e1,bv);
-
- VecSubf(bv,v1,p1);
- elen2 = Inpf(e3,e3);
- edotv = Inpf(e3,vel);
- edotbv = Inpf(e3,bv);
-
- a=elen2*(-Inpf(vel,vel))+edotv*edotv;
- b=2.0f*(elen2*Inpf(vel,bv)-edotv*edotbv);
- c=elen2*(radius2-Inpf(bv,bv))+edotbv*edotbv;
-
- if(getLowestRoot(a, b, c, *lambda, &newLambda))
- {
- e=(edotv*newLambda-edotbv)/elen2;
-
- if(e >= 0.0f && e <= 1.0f)
- {
- *lambda = newLambda;
- VecCopyf(ipoint,e3);
- VecMulf(ipoint,e);
- VecAddf(ipoint,ipoint,v1);
- found_by_sweep=1;
- }
- }
-
-
- return found_by_sweep;
-}
-int AxialLineIntersectsTriangle(int axis, float p1[3], float p2[3], float v0[3], float v1[3], float v2[3], float *lambda)
-{
- float p[3], e1[3], e2[3];
- float u, v, f;
- int a0=axis, a1=(axis+1)%3, a2=(axis+2)%3;
-
- //return LineIntersectsTriangle(p1,p2,v0,v1,v2,lambda);
-
- ///* first a simple bounding box test */
- //if(MIN3(v0[a1],v1[a1],v2[a1]) > p1[a1]) return 0;
- //if(MIN3(v0[a2],v1[a2],v2[a2]) > p1[a2]) return 0;
- //if(MAX3(v0[a1],v1[a1],v2[a1]) < p1[a1]) return 0;
- //if(MAX3(v0[a2],v1[a2],v2[a2]) < p1[a2]) return 0;
-
- ///* then a full intersection test */
-
- VecSubf(e1,v1,v0);
- VecSubf(e2,v2,v0);
- VecSubf(p,v0,p1);
-
- f= (e2[a1]*e1[a2]-e2[a2]*e1[a1]);
- if ((f > -0.000001) && (f < 0.000001)) return 0;
-
- v= (p[a2]*e1[a1]-p[a1]*e1[a2])/f;
- if ((v < 0.0)||(v > 1.0)) return 0;
-
- f= e1[a1];
- if((f > -0.000001) && (f < 0.000001)){
- f= e1[a2];
- if((f > -0.000001) && (f < 0.000001)) return 0;
- u= (-p[a2]-v*e2[a2])/f;
- }
- else
- u= (-p[a1]-v*e2[a1])/f;
-
- if ((u < 0.0)||((u + v) > 1.0)) return 0;
-
- *lambda = (p[a0]+u*e1[a0]+v*e2[a0])/(p2[a0]-p1[a0]);
-
- if ((*lambda < 0.0)||(*lambda > 1.0)) return 0;
-
- return 1;
-}
-
-/* Returns the number of point of interests
- * 0 - lines are colinear
- * 1 - lines are coplanar, i1 is set to intersection
- * 2 - i1 and i2 are the nearest points on line 1 (v1, v2) and line 2 (v3, v4) respectively
- * */
-int LineIntersectLine(float v1[3], float v2[3], float v3[3], float v4[3], float i1[3], float i2[3])
-{
- float a[3], b[3], c[3], ab[3], cb[3], dir1[3], dir2[3];
- float d;
-
- VecSubf(c, v3, v1);
- VecSubf(a, v2, v1);
- VecSubf(b, v4, v3);
-
- VecCopyf(dir1, a);
- Normalize(dir1);
- VecCopyf(dir2, b);
- Normalize(dir2);
- d = Inpf(dir1, dir2);
- if (d == 1.0f || d == -1.0f) {
- /* colinear */
- return 0;
- }
-
- Crossf(ab, a, b);
- d = Inpf(c, ab);
-
- /* test if the two lines are coplanar */
- if (d > -0.000001f && d < 0.000001f) {
- Crossf(cb, c, b);
-
- VecMulf(a, Inpf(cb, ab) / Inpf(ab, ab));
- VecAddf(i1, v1, a);
- VecCopyf(i2, i1);
-
- return 1; /* one intersection only */
- }
- /* if not */
- else {
- float n[3], t[3];
- float v3t[3], v4t[3];
- VecSubf(t, v1, v3);
-
- /* offset between both plane where the lines lies */
- Crossf(n, a, b);
- Projf(t, t, n);
-
- /* for the first line, offset the second line until it is coplanar */
- VecAddf(v3t, v3, t);
- VecAddf(v4t, v4, t);
-
- VecSubf(c, v3t, v1);
- VecSubf(a, v2, v1);
- VecSubf(b, v4t, v3t);
-
- Crossf(ab, a, b);
- Crossf(cb, c, b);
-
- VecMulf(a, Inpf(cb, ab) / Inpf(ab, ab));
- VecAddf(i1, v1, a);
-
- /* for the second line, just substract the offset from the first intersection point */
- VecSubf(i2, i1, t);
-
- return 2; /* two nearest points */
- }
-}
-
-/* Intersection point strictly between the two lines
- * 0 when no intersection is found
- * */
-int LineIntersectLineStrict(float v1[3], float v2[3], float v3[3], float v4[3], float vi[3], float *lambda)
-{
- float a[3], b[3], c[3], ab[3], cb[3], ca[3], dir1[3], dir2[3];
- float d;
- float d1;
-
- VecSubf(c, v3, v1);
- VecSubf(a, v2, v1);
- VecSubf(b, v4, v3);
-
- VecCopyf(dir1, a);
- Normalize(dir1);
- VecCopyf(dir2, b);
- Normalize(dir2);
- d = Inpf(dir1, dir2);
- if (d == 1.0f || d == -1.0f || d == 0) {
- /* colinear or one vector is zero-length*/
- return 0;
- }
-
- d1 = d;
-
- Crossf(ab, a, b);
- d = Inpf(c, ab);
-
- /* test if the two lines are coplanar */
- if (d > -0.000001f && d < 0.000001f) {
- float f1, f2;
- Crossf(cb, c, b);
- Crossf(ca, c, a);
-
- f1 = Inpf(cb, ab) / Inpf(ab, ab);
- f2 = Inpf(ca, ab) / Inpf(ab, ab);
-
- if (f1 >= 0 && f1 <= 1 &&
- f2 >= 0 && f2 <= 1)
- {
- VecMulf(a, f1);
- VecAddf(vi, v1, a);
-
- if (lambda != NULL)
- {
- *lambda = f1;
- }
-
- return 1; /* intersection found */
- }
- else
- {
- return 0;
- }
- }
- else
- {
- return 0;
- }
-}
-
-int AabbIntersectAabb(float min1[3], float max1[3], float min2[3], float max2[3])
-{
- return (min1[0]<max2[0] && min1[1]<max2[1] && min1[2]<max2[2] &&
- min2[0]<max1[0] && min2[1]<max1[1] && min2[2]<max1[2]);
-}
-
-/* find closest point to p on line through l1,l2 and return lambda,
- * where (0 <= lambda <= 1) when cp is in the line segement l1,l2
- */
-float lambda_cp_line_ex(float p[3], float l1[3], float l2[3], float cp[3])
-{
- float h[3],u[3],lambda;
- VecSubf(u, l2, l1);
- VecSubf(h, p, l1);
- lambda =Inpf(u,h)/Inpf(u,u);
- cp[0] = l1[0] + u[0] * lambda;
- cp[1] = l1[1] + u[1] * lambda;
- cp[2] = l1[2] + u[2] * lambda;
- return lambda;
-}
-
-#if 0
-/* little sister we only need to know lambda */
-static float lambda_cp_line(float p[3], float l1[3], float l2[3])
-{
- float h[3],u[3];
- VecSubf(u, l2, l1);
- VecSubf(h, p, l1);
- return(Inpf(u,h)/Inpf(u,u));
-}
-#endif
-
-/* useful to calculate an even width shell, by taking the angle between 2 planes.
- * The return value is a scale on the offset.
- * no angle between planes is 1.0, as the angle between the 2 planes approches 180d
- * the distance gets very high, 180d would be inf, but this case isn't valid */
-float AngleToLength(const float angle)
-{
- return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle * (M_PI/180.0f)));
-}
-
-/* Similar to LineIntersectsTriangleUV, except it operates on a quad and in 2d, assumes point is in quad */
-void PointInQuad2DUV(float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv)
-{
- float x0,y0, x1,y1, wtot, v2d[2], w1, w2;
-
- /* used for paralelle lines */
- float pt3d[3], l1[3], l2[3], pt_on_line[3];
-
- /* compute 2 edges of the quad intersection point */
- if (IsectLLPt2Df(v0[0],v0[1],v1[0],v1[1], v2[0],v2[1],v3[0],v3[1], &x0,&y0) == 1) {
- /* the intersection point between the quad-edge intersection and the point in the quad we want the uv's for */
- /* should never be paralle !! */
- /*printf("\tnot paralelle 1\n");*/
- IsectLLPt2Df(pt[0],pt[1],x0,y0, v0[0],v0[1],v3[0],v3[1], &x1,&y1);
-
- /* Get the weights from the new intersection point, to each edge */
- v2d[0] = x1-v0[0];
- v2d[1] = y1-v0[1];
- w1 = Vec2Length(v2d);
-
- v2d[0] = x1-v3[0]; /* some but for the other vert */
- v2d[1] = y1-v3[1];
- w2 = Vec2Length(v2d);
- wtot = w1+w2;
- /*w1 = w1/wtot;*/
- /*w2 = w2/wtot;*/
- uv[0] = w1/wtot;
- } else {
- /* lines are paralelle, lambda_cp_line_ex is 3d grrr */
- /*printf("\tparalelle1\n");*/
- pt3d[0] = pt[0];
- pt3d[1] = pt[1];
- pt3d[2] = l1[2] = l2[2] = 0.0f;
-
- l1[0] = v0[0]; l1[1] = v0[1];
- l2[0] = v1[0]; l2[1] = v1[1];
- lambda_cp_line_ex(pt3d, l1, l2, pt_on_line);
- v2d[0] = pt[0]-pt_on_line[0]; /* same, for the other vert */
- v2d[1] = pt[1]-pt_on_line[1];
- w1 = Vec2Length(v2d);
-
- l1[0] = v2[0]; l1[1] = v2[1];
- l2[0] = v3[0]; l2[1] = v3[1];
- lambda_cp_line_ex(pt3d, l1, l2, pt_on_line);
- v2d[0] = pt[0]-pt_on_line[0]; /* same, for the other vert */
- v2d[1] = pt[1]-pt_on_line[1];
- w2 = Vec2Length(v2d);
- wtot = w1+w2;
- uv[0] = w1/wtot;
- }
-
- /* Same as above to calc the uv[1] value, alternate calculation */
-
- if (IsectLLPt2Df(v0[0],v0[1],v3[0],v3[1], v1[0],v1[1],v2[0],v2[1], &x0,&y0) == 1) { /* was v0,v1 v2,v3 now v0,v3 v1,v2*/
- /* never paralle if above was not */
- /*printf("\tnot paralelle2\n");*/
- IsectLLPt2Df(pt[0],pt[1],x0,y0, v0[0],v0[1],v1[0],v1[1], &x1,&y1);/* was v0,v3 now v0,v1*/
-
- v2d[0] = x1-v0[0];
- v2d[1] = y1-v0[1];
- w1 = Vec2Length(v2d);
-
- v2d[0] = x1-v1[0];
- v2d[1] = y1-v1[1];
- w2 = Vec2Length(v2d);
- wtot = w1+w2;
- uv[1] = w1/wtot;
- } else {
- /* lines are paralelle, lambda_cp_line_ex is 3d grrr */
- /*printf("\tparalelle2\n");*/
- pt3d[0] = pt[0];
- pt3d[1] = pt[1];
- pt3d[2] = l1[2] = l2[2] = 0.0f;
-
-
- l1[0] = v0[0]; l1[1] = v0[1];
- l2[0] = v3[0]; l2[1] = v3[1];
- lambda_cp_line_ex(pt3d, l1, l2, pt_on_line);
- v2d[0] = pt[0]-pt_on_line[0]; /* some but for the other vert */
- v2d[1] = pt[1]-pt_on_line[1];
- w1 = Vec2Length(v2d);
-
- l1[0] = v1[0]; l1[1] = v1[1];
- l2[0] = v2[0]; l2[1] = v2[1];
- lambda_cp_line_ex(pt3d, l1, l2, pt_on_line);
- v2d[0] = pt[0]-pt_on_line[0]; /* some but for the other vert */
- v2d[1] = pt[1]-pt_on_line[1];
- w2 = Vec2Length(v2d);
- wtot = w1+w2;
- uv[1] = w1/wtot;
- }
- /* may need to flip UV's here */
-}
-
-/* same as above but does tri's and quads, tri's are a bit of a hack */
-void PointInFace2DUV(int isquad, float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv)
-{
- if (isquad) {
- PointInQuad2DUV(v0, v1, v2, v3, pt, uv);
- }
- else {
- /* not for quads, use for our abuse of LineIntersectsTriangleUV */
- float p1_3d[3], p2_3d[3], v0_3d[3], v1_3d[3], v2_3d[3], lambda;
-
- p1_3d[0] = p2_3d[0] = uv[0];
- p1_3d[1] = p2_3d[1] = uv[1];
- p1_3d[2] = 1.0f;
- p2_3d[2] = -1.0f;
- v0_3d[2] = v1_3d[2] = v2_3d[2] = 0.0;
-
- /* generate a new fuv, (this is possibly a non optimal solution,
- * since we only need 2d calculation but use 3d func's)
- *
- * this method makes an imaginary triangle in 2d space using the UV's from the derived mesh face
- * Then find new uv coords using the fuv and this face with LineIntersectsTriangleUV.
- * This means the new values will be correct in relation to the derived meshes face.
- */
- Vec2Copyf(v0_3d, v0);
- Vec2Copyf(v1_3d, v1);
- Vec2Copyf(v2_3d, v2);
-
- /* Doing this in 3D is not nice */
- LineIntersectsTriangle(p1_3d, p2_3d, v0_3d, v1_3d, v2_3d, &lambda, uv);
- }
-}
-
-int IsPointInTri2D(float v1[2], float v2[2], float v3[2], float pt[2])
-{
- float inp1, inp2, inp3;
-
- inp1= (v2[0]-v1[0])*(v1[1]-pt[1]) + (v1[1]-v2[1])*(v1[0]-pt[0]);
- inp2= (v3[0]-v2[0])*(v2[1]-pt[1]) + (v2[1]-v3[1])*(v2[0]-pt[0]);
- inp3= (v1[0]-v3[0])*(v3[1]-pt[1]) + (v3[1]-v1[1])*(v3[0]-pt[0]);
-
- if(inp1<=0.0f && inp2<=0.0f && inp3<=0.0f) return 1;
- if(inp1>=0.0f && inp2>=0.0f && inp3>=0.0f) return 1;
-
- return 0;
-}
-
-#if 0
-int IsPointInTri2D(float v0[2], float v1[2], float v2[2], float pt[2])
-{
- /* not for quads, use for our abuse of LineIntersectsTriangleUV */
- float p1_3d[3], p2_3d[3], v0_3d[3], v1_3d[3], v2_3d[3];
- /* not used */
- float lambda, uv[3];
-
- p1_3d[0] = p2_3d[0] = uv[0]= pt[0];
- p1_3d[1] = p2_3d[1] = uv[1]= uv[2]= pt[1];
- p1_3d[2] = 1.0f;
- p2_3d[2] = -1.0f;
- v0_3d[2] = v1_3d[2] = v2_3d[2] = 0.0;
-
- /* generate a new fuv, (this is possibly a non optimal solution,
- * since we only need 2d calculation but use 3d func's)
- *
- * this method makes an imaginary triangle in 2d space using the UV's from the derived mesh face
- * Then find new uv coords using the fuv and this face with LineIntersectsTriangleUV.
- * This means the new values will be correct in relation to the derived meshes face.
- */
- Vec2Copyf(v0_3d, v0);
- Vec2Copyf(v1_3d, v1);
- Vec2Copyf(v2_3d, v2);
-
- /* Doing this in 3D is not nice */
- return LineIntersectsTriangle(p1_3d, p2_3d, v0_3d, v1_3d, v2_3d, &lambda, uv);
-}
-#endif
-
-/*
-
- x1,y2
- | \
- | \ .(a,b)
- | \
- x1,y1-- x2,y1
-
-*/
-int IsPointInTri2DInts(int x1, int y1, int x2, int y2, int a, int b)
-{
- float v1[2], v2[2], v3[2], p[2];
-
- v1[0]= (float)x1;
- v1[1]= (float)y1;
-
- v2[0]= (float)x1;
- v2[1]= (float)y2;
-
- v3[0]= (float)x2;
- v3[1]= (float)y1;
-
- p[0]= (float)a;
- p[1]= (float)b;
-
- return IsPointInTri2D(v1, v2, v3, p);
-
-}
-
-/* (x1,v1)(t1=0)------(x2,v2)(t2=1), 0<t<1 --> (x,v)(t) */
-void VecfCubicInterpol(float *x1, float *v1, float *x2, float *v2, float t, float *x, float *v)
-{
- float a[3],b[3];
- float t2= t*t;
- float t3= t2*t;
-
- /* cubic interpolation */
- a[0]= v1[0] + v2[0] + 2*(x1[0] - x2[0]);
- a[1]= v1[1] + v2[1] + 2*(x1[1] - x2[1]);
- a[2]= v1[2] + v2[2] + 2*(x1[2] - x2[2]);
-
- b[0]= -2*v1[0] - v2[0] - 3*(x1[0] - x2[0]);
- b[1]= -2*v1[1] - v2[1] - 3*(x1[1] - x2[1]);
- b[2]= -2*v1[2] - v2[2] - 3*(x1[2] - x2[2]);
-
- x[0]= a[0]*t3 + b[0]*t2 + v1[0]*t + x1[0];
- x[1]= a[1]*t3 + b[1]*t2 + v1[1]*t + x1[1];
- x[2]= a[2]*t3 + b[2]*t2 + v1[2]*t + x1[2];
-
- v[0]= 3*a[0]*t2 + 2*b[0]*t + v1[0];
- v[1]= 3*a[1]*t2 + 2*b[1]*t + v1[1];
- v[2]= 3*a[2]*t2 + 2*b[2]*t + v1[2];
-}
-
-static int point_in_slice(float p[3], float v1[3], float l1[3], float l2[3])
-{
-/*
-what is a slice ?
-some maths:
-a line including l1,l2 and a point not on the line
-define a subset of R3 delimeted by planes parallel to the line and orthogonal
-to the (point --> line) distance vector,one plane on the line one on the point,
-the room inside usually is rather small compared to R3 though still infinte
-useful for restricting (speeding up) searches
-e.g. all points of triangular prism are within the intersection of 3 'slices'
-onother trivial case : cube
-but see a 'spat' which is a deformed cube with paired parallel planes needs only 3 slices too
-*/
- float h,rp[3],cp[3],q[3];
-
- lambda_cp_line_ex(v1,l1,l2,cp);
- VecSubf(q,cp,v1);
-
- VecSubf(rp,p,v1);
- h=Inpf(q,rp)/Inpf(q,q);
- if (h < 0.0f || h > 1.0f) return 0;
- return 1;
-}
-
-#if 0
-/*adult sister defining the slice planes by the origin and the normal
-NOTE |normal| may not be 1 but defining the thickness of the slice*/
-static int point_in_slice_as(float p[3],float origin[3],float normal[3])
-{
- float h,rp[3];
- VecSubf(rp,p,origin);
- h=Inpf(normal,rp)/Inpf(normal,normal);
- if (h < 0.0f || h > 1.0f) return 0;
- return 1;
-}
-
-/*mama (knowing the squared lenght of the normal)*/
-static int point_in_slice_m(float p[3],float origin[3],float normal[3],float lns)
-{
- float h,rp[3];
- VecSubf(rp,p,origin);
- h=Inpf(normal,rp)/lns;
- if (h < 0.0f || h > 1.0f) return 0;
- return 1;
-}
-#endif
-
-
-int point_in_tri_prism(float p[3], float v1[3], float v2[3], float v3[3])
-{
- if(!point_in_slice(p,v1,v2,v3)) return 0;
- if(!point_in_slice(p,v2,v3,v1)) return 0;
- if(!point_in_slice(p,v3,v1,v2)) return 0;
- return 1;
-}
-
-/* point closest to v1 on line v2-v3 in 3D */
-void PclosestVL3Dfl(float *closest, float v1[3], float v2[3], float v3[3])
-{
- float lambda, cp[3];
-
- lambda= lambda_cp_line_ex(v1, v2, v3, cp);
-
- if(lambda <= 0.0f)
- VecCopyf(closest, v2);
- else if(lambda >= 1.0f)
- VecCopyf(closest, v3);
- else
- VecCopyf(closest, cp);
-}
-
-/* distance v1 to line-piece v2-v3 in 3D */
-float PdistVL3Dfl(float *v1, float *v2, float *v3)
-{
- float closest[3];
-
- PclosestVL3Dfl(closest, v1, v2, v3);
-
- return VecLenf(closest, v1);
-}
-
-/********************************************************/
-
-/* make a 4x4 matrix out of 3 transform components */
-/* matrices are made in the order: scale * rot * loc */
-// TODO: need to have a version that allows for rotation order...
-void LocEulSizeToMat4(float mat[4][4], float loc[3], float eul[3], float size[3])
-{
- float rmat[3][3], smat[3][3], tmat[3][3];
-
- /* initialise new matrix */
- Mat4One(mat);
-
- /* make rotation + scaling part */
- EulToMat3(eul, rmat);
- SizeToMat3(size, smat);
- Mat3MulMat3(tmat, rmat, smat);
-
- /* copy rot/scale part to output matrix*/
- Mat4CpyMat3(mat, tmat);
-
- /* copy location to matrix */
- mat[3][0] = loc[0];
- mat[3][1] = loc[1];
- mat[3][2] = loc[2];
-}
-
-/* make a 4x4 matrix out of 3 transform components */
-/* matrices are made in the order: scale * rot * loc */
-void LocEulOSizeToMat4(float mat[4][4], float loc[3], float eul[3], float size[3], short rotOrder)
-{
- float rmat[3][3], smat[3][3], tmat[3][3];
-
- /* initialise new matrix */
- Mat4One(mat);
-
- /* make rotation + scaling part */
- EulOToMat3(eul, rotOrder, rmat);
- SizeToMat3(size, smat);
- Mat3MulMat3(tmat, rmat, smat);
-
- /* copy rot/scale part to output matrix*/
- Mat4CpyMat3(mat, tmat);
-
- /* copy location to matrix */
- mat[3][0] = loc[0];
- mat[3][1] = loc[1];
- mat[3][2] = loc[2];
-}
-
-
-/* make a 4x4 matrix out of 3 transform components */
-/* matrices are made in the order: scale * rot * loc */
-void LocQuatSizeToMat4(float mat[4][4], float loc[3], float quat[4], float size[3])
-{
- float rmat[3][3], smat[3][3], tmat[3][3];
-
- /* initialise new matrix */
- Mat4One(mat);
-
- /* make rotation + scaling part */
- QuatToMat3(quat, rmat);
- SizeToMat3(size, smat);
- Mat3MulMat3(tmat, rmat, smat);
-
- /* copy rot/scale part to output matrix*/
- Mat4CpyMat3(mat, tmat);
-
- /* copy location to matrix */
- mat[3][0] = loc[0];
- mat[3][1] = loc[1];
- mat[3][2] = loc[2];
-}
-
-/********************************************************/
-
-/* Tangents */
-
-/* For normal map tangents we need to detect uv boundaries, and only average
- * tangents in case the uvs are connected. Alternative would be to store 1
- * tangent per face rather than 4 per face vertex, but that's not compatible
- * with games */
-
-
-/* from BKE_mesh.h */
-#define STD_UV_CONNECT_LIMIT 0.0001f
-
-void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, float *tang, float *uv)
-{
- VertexTangent *vt;
-
- /* find a tangent with connected uvs */
- for(vt= *vtang; vt; vt=vt->next) {
- if(fabs(uv[0]-vt->uv[0]) < STD_UV_CONNECT_LIMIT && fabs(uv[1]-vt->uv[1]) < STD_UV_CONNECT_LIMIT) {
- VecAddf(vt->tang, vt->tang, tang);
- return;
- }
- }
-
- /* if not found, append a new one */
- vt= BLI_memarena_alloc((MemArena *)arena, sizeof(VertexTangent));
- VecCopyf(vt->tang, tang);
- vt->uv[0]= uv[0];
- vt->uv[1]= uv[1];
-
- if(*vtang)
- vt->next= *vtang;
- *vtang= vt;
-}
-
-float *find_vertex_tangent(VertexTangent *vtang, float *uv)
-{
- VertexTangent *vt;
- static float nulltang[3] = {0.0f, 0.0f, 0.0f};
-
- for(vt= vtang; vt; vt=vt->next)
- if(fabs(uv[0]-vt->uv[0]) < STD_UV_CONNECT_LIMIT && fabs(uv[1]-vt->uv[1]) < STD_UV_CONNECT_LIMIT)
- return vt->tang;
-
- return nulltang; /* shouldn't happen, except for nan or so */
-}
-
-void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, float *co3, float *n, float *tang)
-{
- float tangv[3], ct[3], e1[3], e2[3], s1, t1, s2, t2, det;
-
- s1= uv2[0] - uv1[0];
- s2= uv3[0] - uv1[0];
- t1= uv2[1] - uv1[1];
- t2= uv3[1] - uv1[1];
- det= 1.0f / (s1 * t2 - s2 * t1);
-
- /* normals in render are inversed... */
- VecSubf(e1, co1, co2);
- VecSubf(e2, co1, co3);
- tang[0] = (t2*e1[0] - t1*e2[0])*det;
- tang[1] = (t2*e1[1] - t1*e2[1])*det;
- tang[2] = (t2*e1[2] - t1*e2[2])*det;
- tangv[0] = (s1*e2[0] - s2*e1[0])*det;
- tangv[1] = (s1*e2[1] - s2*e1[1])*det;
- tangv[2] = (s1*e2[2] - s2*e1[2])*det;
- Crossf(ct, tang, tangv);
-
- /* check flip */
- if ((ct[0]*n[0] + ct[1]*n[1] + ct[2]*n[2]) < 0.0f)
- VecNegf(tang);
-}
-
-/* used for zoom values*/
-float power_of_2(float val) {
- return (float)pow(2, ceil(log(val) / log(2)));
-}
diff --git a/source/blender/blenlib/intern/boxpack2d.c b/source/blender/blenlib/intern/boxpack2d.c
index 7d5e1eec53e..d31bc4e762d 100644
--- a/source/blender/blenlib/intern/boxpack2d.c
+++ b/source/blender/blenlib/intern/boxpack2d.c
@@ -31,7 +31,7 @@
* The defined Below are for internal use only */
/* free vert flags */
-#define eul 0.0000001f
+#define eps 0.0000001f
#define BLF 1
#define TRF 2
#define TLF 4
@@ -68,10 +68,10 @@
b->v[TR]->y = f;\
UPDATE_V34Y(b)
#define BOXINTERSECT(b1, b2)\
- (!( BOXLEFT(b1)+eul>=BOXRIGHT(b2) ||\
- BOXBOTTOM(b1)+eul>=BOXTOP(b2) ||\
- BOXRIGHT(b1)-eul<=BOXLEFT(b2) ||\
- BOXTOP(b1)-eul<=BOXBOTTOM(b2) ))
+ (!( BOXLEFT(b1)+eps>=BOXRIGHT(b2) ||\
+ BOXBOTTOM(b1)+eps>=BOXTOP(b2) ||\
+ BOXRIGHT(b1)-eps<=BOXLEFT(b2) ||\
+ BOXTOP(b1)-eps<=BOXBOTTOM(b2) ))
#define MIN2(x,y) ( (x)<(y) ? (x) : (y) )
#define MAX2(x,y) ( (x)>(y) ? (x) : (y) )
diff --git a/source/blender/blenlib/intern/freetypefont.c b/source/blender/blenlib/intern/freetypefont.c
index cb5632df569..f2727f6f259 100644
--- a/source/blender/blenlib/intern/freetypefont.c
+++ b/source/blender/blenlib/intern/freetypefont.c
@@ -45,7 +45,7 @@
#include "BLI_vfontdata.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
//XXX #include "BIF_toolbox.h"
@@ -256,11 +256,11 @@ static void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vf
// VecLenf, see if there's a distance between the three points
// VecLenf again, to check the angle between the handles
// finally, check if one of them is a vector handle
- if((DistVL2Dfl(bezt->vec[0],bezt->vec[1],bezt->vec[2]) < 0.001) &&
- (VecLenf(bezt->vec[0], bezt->vec[1]) > 0.0001) &&
- (VecLenf(bezt->vec[1], bezt->vec[2]) > 0.0001) &&
- (VecLenf(bezt->vec[0], bezt->vec[2]) > 0.0002) &&
- (VecLenf(bezt->vec[0], bezt->vec[2]) > MAX2(VecLenf(bezt->vec[0], bezt->vec[1]), VecLenf(bezt->vec[1], bezt->vec[2]))) &&
+ if((dist_to_line_v2(bezt->vec[0],bezt->vec[1],bezt->vec[2]) < 0.001) &&
+ (len_v3v3(bezt->vec[0], bezt->vec[1]) > 0.0001) &&
+ (len_v3v3(bezt->vec[1], bezt->vec[2]) > 0.0001) &&
+ (len_v3v3(bezt->vec[0], bezt->vec[2]) > 0.0002) &&
+ (len_v3v3(bezt->vec[0], bezt->vec[2]) > MAX2(len_v3v3(bezt->vec[0], bezt->vec[1]), len_v3v3(bezt->vec[1], bezt->vec[2]))) &&
bezt->h1 != HD_VECT && bezt->h2 != HD_VECT)
{
bezt->h1= bezt->h2= HD_ALIGN;
diff --git a/source/blender/blenlib/intern/graph.c b/source/blender/blenlib/intern/graph.c
index 49a3cad53f1..fd6bb1a2014 100644
--- a/source/blender/blenlib/intern/graph.c
+++ b/source/blender/blenlib/intern/graph.c
@@ -30,7 +30,7 @@
#include "BLI_graph.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
@@ -267,7 +267,7 @@ void BLI_removeDoubleNodes(BGraph *graph, float limit)
{
for(node_replaced = graph->nodes.first; node_replaced; node_replaced = node_replaced->next)
{
- if (node_replaced != node_src && VecLenf(node_replaced->p, node_src->p) <= limit)
+ if (node_replaced != node_src && len_v3v3(node_replaced->p, node_src->p) <= limit)
{
BLI_replaceNode(graph, node_src, node_replaced);
}
@@ -283,7 +283,7 @@ BNode * BLI_FindNodeByPosition(BGraph *graph, float *p, float limit)
for(node = graph->nodes.first; node; node = node->next)
{
- float distance = VecLenf(p, node->p);
+ float distance = len_v3v3(p, node->p);
if (distance <= limit && (closest_node == NULL || distance < min_distance))
{
closest_node = node;
@@ -526,10 +526,10 @@ void BLI_mirrorAlongAxis(float v[3], float center[3], float axis[3])
{
float dv[3], pv[3];
- VecSubf(dv, v, center);
- Projf(pv, dv, axis);
- VecMulf(pv, -2);
- VecAddf(v, v, pv);
+ sub_v3_v3v3(dv, v, center);
+ project_v3_v3v3(pv, dv, axis);
+ mul_v3_fl(pv, -2);
+ add_v3_v3v3(v, v, pv);
}
static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring, int total, float axis[3], float limit, int group)
@@ -546,7 +546,7 @@ static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring,
for (j = i + 1; j < total; j++)
{
- float angle = Inpf(ring[i].n, ring[j].n);
+ float angle = dot_v3v3(ring[i].n, ring[j].n);
/* map negative values to 1..2 */
if (angle < 0)
@@ -579,8 +579,8 @@ static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring,
float p[3];
int j = (i + 1) % total; /* next arc in the circular list */
- VecAddf(tangent, ring[i].n, ring[j].n);
- Crossf(normal, tangent, axis);
+ add_v3_v3v3(tangent, ring[i].n, ring[j].n);
+ cross_v3_v3v3(normal, tangent, axis);
node1 = BLI_otherNode(ring[i].arc, root_node);
node2 = BLI_otherNode(ring[j].arc, root_node);
@@ -589,7 +589,7 @@ static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring,
BLI_mirrorAlongAxis(p, root_node->p, normal);
/* check if it's within limit before continuing */
- if (VecLenf(node1->p, p) > limit)
+ if (len_v3v3(node1->p, p) > limit)
{
symmetric = 0;
}
@@ -658,11 +658,11 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo
unit->arc = connectedArc;
/* project the node to node vector on the symmetry plane */
- VecSubf(unit->n, otherNode->p, root_node->p);
- Projf(vec, unit->n, axis);
- VecSubf(unit->n, unit->n, vec);
+ sub_v3_v3v3(unit->n, otherNode->p, root_node->p);
+ project_v3_v3v3(vec, unit->n, axis);
+ sub_v3_v3v3(unit->n, unit->n, vec);
- Normalize(unit->n);
+ normalize_v3(unit->n);
unit++;
}
@@ -780,9 +780,9 @@ static void flagAxialSymmetry(BNode *root_node, BNode *end_node, BArc *arc, int
arc->symmetry_group = group;
- VecSubf(vec, end_node->p, root_node->p);
+ sub_v3_v3v3(vec, end_node->p, root_node->p);
- if (Inpf(vec, root_node->symmetry_axis) < 0)
+ if (dot_v3v3(vec, root_node->symmetry_axis) < 0)
{
arc->symmetry_flag |= SYM_SIDE_NEGATIVE;
}
@@ -796,26 +796,26 @@ static void testAxialSymmetry(BGraph *graph, BNode* root_node, BNode* node1, BNo
{
float nor[3], vec[3], p[3];
- VecSubf(p, node1->p, root_node->p);
- Crossf(nor, p, axis);
+ sub_v3_v3v3(p, node1->p, root_node->p);
+ cross_v3_v3v3(nor, p, axis);
- VecSubf(p, root_node->p, node2->p);
- Crossf(vec, p, axis);
- VecAddf(vec, vec, nor);
+ sub_v3_v3v3(p, root_node->p, node2->p);
+ cross_v3_v3v3(vec, p, axis);
+ add_v3_v3v3(vec, vec, nor);
- Crossf(nor, vec, axis);
+ cross_v3_v3v3(nor, vec, axis);
if (abs(nor[0]) > abs(nor[1]) && abs(nor[0]) > abs(nor[2]) && nor[0] < 0)
{
- VecNegf(nor);
+ negate_v3(nor);
}
else if (abs(nor[1]) > abs(nor[0]) && abs(nor[1]) > abs(nor[2]) && nor[1] < 0)
{
- VecNegf(nor);
+ negate_v3(nor);
}
else if (abs(nor[2]) > abs(nor[1]) && abs(nor[2]) > abs(nor[0]) && nor[2] < 0)
{
- VecNegf(nor);
+ negate_v3(nor);
}
/* mirror node2 along axis */
@@ -823,7 +823,7 @@ static void testAxialSymmetry(BGraph *graph, BNode* root_node, BNode* node1, BNo
BLI_mirrorAlongAxis(p, root_node->p, nor);
/* check if it's within limit before continuing */
- if (VecLenf(node1->p, p) <= limit)
+ if (len_v3v3(node1->p, p) <= limit)
{
/* mark node as symmetric physically */
VECCOPY(root_node->symmetry_axis, nor);
@@ -905,12 +905,12 @@ static void markdownSecondarySymmetry(BGraph *graph, BNode *node, int depth, int
/* If arc is on the axis */
else if (connectedArc->symmetry_level == level)
{
- VecAddf(axis, axis, connectedArc->head->p);
- VecSubf(axis, axis, connectedArc->tail->p);
+ add_v3_v3v3(axis, axis, connectedArc->head->p);
+ sub_v3_v3v3(axis, axis, connectedArc->tail->p);
}
}
- Normalize(axis);
+ normalize_v3(axis);
/* Split between axial and radial symmetry */
if (count == 2)
diff --git a/source/blender/blenlib/intern/jitter.c b/source/blender/blenlib/intern/jitter.c
index fd658765802..e7933ee98a2 100644
--- a/source/blender/blenlib/intern/jitter.c
+++ b/source/blender/blenlib/intern/jitter.c
@@ -34,7 +34,7 @@
#include <string.h>
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_jitter.h"
diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c
index b3a4722d6d9..166f4ed029e 100644
--- a/source/blender/blenlib/intern/listbase.c
+++ b/source/blender/blenlib/intern/listbase.c
@@ -343,7 +343,7 @@ int BLI_findindex(ListBase *listbase, void *vlink)
return -1;
}
-void BLI_duplicatelist(ListBase *list1, ListBase *list2) /* copy from 2 to 1 */
+void BLI_duplicatelist(ListBase *list1, const ListBase *list2)
{
struct Link *link1, *link2;
diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c
index ca7b95cb3f1..f3fe09c088f 100644
--- a/source/blender/blenlib/intern/math_base.c
+++ b/source/blender/blenlib/intern/math_base.c
@@ -35,14 +35,12 @@
/* A few small defines. Keep'em local! */
#define SMALL_NUMBER 1.e-8
-#if 0
float sqrt3f(float f)
{
if(f==0.0) return 0;
if(f<0) return (float)(-exp(log(-f)/3));
else return (float)(exp(log(f)/3));
}
-#endif
double sqrt3d(double d)
{
@@ -51,7 +49,6 @@ double sqrt3d(double d)
else return exp(log(d)/3);
}
-#if 0
float saacos(float fac)
{
if(fac<= -1.0f) return (float)M_PI;
@@ -96,7 +93,6 @@ float interpf(float target, float origin, float fac)
{
return (fac*target) + (1.0f-fac)*origin;
}
-#endif
/* useful to calculate an even width shell, by taking the angle between 2 planes.
* The return value is a scale on the offset.
@@ -107,11 +103,9 @@ float shell_angle_to_dist(const float angle)
return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle * (M_PI/180.0f)));
}
-#if 0
/* used for zoom values*/
float power_of_2(float val)
{
return (float)pow(2, ceil(log(val) / log(2)));
}
-#endif
diff --git a/source/blender/blenlib/intern/math_color.c b/source/blender/blenlib/intern/math_color.c
index 3b3801a197f..7ae380a1dde 100644
--- a/source/blender/blenlib/intern/math_color.c
+++ b/source/blender/blenlib/intern/math_color.c
@@ -32,7 +32,6 @@
#include "BLI_math.h"
-#if 0
void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b)
{
int i;
@@ -311,5 +310,4 @@ int constrain_rgb(float *r, float *g, float *b)
return 0; /* Color within RGB gamut */
}
-#endif
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index 5c7890ffee4..efa5876e1b0 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -124,7 +124,7 @@ float area_tri_v3(float *v1, float *v2, float *v3) /* Triangles */
#define MAX3(x,y,z) MAX2(MAX2((x),(y)) , (z))
-float area_poly_v3(int nr, float *verts, float *normal)
+float area_poly_v3(int nr, float verts[][3], float *normal)
{
float x, y, z, area, max;
float *cur, *prev;
@@ -142,13 +142,13 @@ float area_poly_v3(int nr, float *verts, float *normal)
}
/* The Trapezium Area Rule */
- prev= verts+3*(nr-1);
- cur= verts;
+ prev= verts[nr-1];
+ cur= verts[0];
area= 0;
for(a=0; a<nr; a++) {
area+= (cur[px]-prev[px])*(cur[py]+prev[py]);
- prev= cur;
- cur+=3;
+ prev= verts[a];
+ cur= verts[a+1];
}
return (float)fabs(0.5*area/max);
@@ -232,7 +232,7 @@ float dist_to_line_segment_v3(float *v1, float *v2, float *v3)
/******************************* Intersection ********************************/
/* intersect Line-Line, shorts */
-short isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
+int isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
{
/* return:
-1: colliniar
@@ -257,7 +257,7 @@ short isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
}
/* intersect Line-Line, floats */
-short isect_line_line_v2(float *v1, float *v2, float *v3, float *v4)
+int isect_line_line_v2(float *v1, float *v2, float *v3, float *v4)
{
/* return:
-1: colliniar
@@ -337,6 +337,7 @@ static short IsectLLPt2Df(float x0,float y0,float x1,float y1,
#define SIDE_OF_LINE(pa,pb,pp) ((pa[0]-pp[0])*(pb[1]-pp[1]))-((pb[0]-pp[0])*(pa[1]-pp[1]))
/* point in tri */
+// XXX was called IsectPT2Df
int isect_point_tri_v2(float pt[2], float v1[2], float v2[2], float v3[2])
{
if (SIDE_OF_LINE(v1,v2,pt)>=0.0) {
@@ -432,7 +433,9 @@ int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2
cross_v3_v3v3(p, d, e2);
a = dot_v3v3(e1, p);
- if ((a > -0.000001) && (a < 0.000001)) return 0;
+ /* note: these values were 0.000001 in 2.4x but for projection snapping on
+ * a human head (1BU==1m), subsurf level 2, this gave many errors - campbell */
+ if ((a > -0.00000001) && (a < 0.00000001)) return 0;
f = 1.0f/a;
sub_v3_v3v3(s, p1, v0);
@@ -1074,8 +1077,8 @@ void isect_point_face_uv_v2(int isquad, float v0[2], float v1[2], float v2[2], f
}
}
-#if 0
-int isect_point_tri_v2(float v1[2], float v2[2], float v3[2], float pt[2])
+#if 0 // XXX this version used to be used in isect_point_tri_v2_int() and was called IsPointInTri2D
+int isect_point_tri_v2(float pt[2], float v1[2], float v2[2], float v3[2])
{
float inp1, inp2, inp3;
@@ -1145,7 +1148,7 @@ int isect_point_tri_v2_int(int x1, int y1, int x2, int y2, int a, int b)
p[0]= (float)a;
p[1]= (float)b;
- return isect_point_tri_v2(v1, v2, v3, p);
+ return isect_point_tri_v2(p, v1, v2, v3);
}
static int point_in_slice(float p[3], float v1[3], float l1[3], float l2[3])
@@ -1533,7 +1536,6 @@ void map_to_sphere(float *u, float *v,float x, float y, float z)
/* from BKE_mesh.h */
#define STD_UV_CONNECT_LIMIT 0.0001f
-#if 0
void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, float *tang, float *uv)
{
VertexTangent *vt;
@@ -1594,5 +1596,162 @@ void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2,
if ((ct[0]*n[0] + ct[1]*n[1] + ct[2]*n[2]) < 0.0f)
negate_v3(tang);
}
-#endif
+/********************************************************/
+
+/* vector clouds */
+/* void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight,
+ float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3])
+
+input
+(
+int list_size
+4 lists as pointer to array[list_size]
+1. current pos array of 'new' positions
+2. current weight array of 'new'weights (may be NULL pointer if you have no weights )
+3. reference rpos array of 'old' positions
+4. reference rweight array of 'old'weights (may be NULL pointer if you have no weights )
+)
+output
+(
+float lloc[3] center of mass pos
+float rloc[3] center of mass rpos
+float lrot[3][3] rotation matrix
+float lscale[3][3] scale matrix
+pointers may be NULL if not needed
+)
+
+*/
+/* can't believe there is none in math utils */
+float _det_m3(float m2[3][3])
+{
+ float det = 0.f;
+ if (m2){
+ det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1])
+ -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1])
+ +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]);
+ }
+ return det;
+}
+
+
+void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight,
+ float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3])
+{
+ float accu_com[3]= {0.0f,0.0f,0.0f}, accu_rcom[3]= {0.0f,0.0f,0.0f};
+ float accu_weight = 0.0f,accu_rweight = 0.0f,eps = 0.000001f;
+
+ int a;
+ /* first set up a nice default response */
+ if (lloc) zero_v3(lloc);
+ if (rloc) zero_v3(rloc);
+ if (lrot) unit_m3(lrot);
+ if (lscale) unit_m3(lscale);
+ /* do com for both clouds */
+ if (pos && rpos && (list_size > 0)) /* paranoya check */
+ {
+ /* do com for both clouds */
+ for(a=0; a<list_size; a++){
+ if (weight){
+ float v[3];
+ copy_v3_v3(v,pos[a]);
+ mul_v3_fl(v,weight[a]);
+ add_v3_v3v3(accu_com,accu_com,v);
+ accu_weight +=weight[a];
+ }
+ else add_v3_v3v3(accu_com,accu_com,pos[a]);
+
+ if (rweight){
+ float v[3];
+ copy_v3_v3(v,rpos[a]);
+ mul_v3_fl(v,rweight[a]);
+ add_v3_v3v3(accu_rcom,accu_rcom,v);
+ accu_rweight +=rweight[a];
+ }
+ else add_v3_v3v3(accu_rcom,accu_rcom,rpos[a]);
+
+ }
+ if (!weight || !rweight){
+ accu_weight = accu_rweight = list_size;
+ }
+
+ mul_v3_fl(accu_com,1.0f/accu_weight);
+ mul_v3_fl(accu_rcom,1.0f/accu_rweight);
+ if (lloc) copy_v3_v3(lloc,accu_com);
+ if (rloc) copy_v3_v3(rloc,accu_rcom);
+ if (lrot || lscale){ /* caller does not want rot nor scale, strange but legal */
+ /*so now do some reverse engeneering and see if we can split rotation from scale ->Polardecompose*/
+ /* build 'projection' matrix */
+ float m[3][3],mr[3][3],q[3][3],qi[3][3];
+ float va[3],vb[3],stunt[3];
+ float odet,ndet;
+ int i=0,imax=15;
+ zero_m3(m);
+ zero_m3(mr);
+
+ /* build 'projection' matrix */
+ for(a=0; a<list_size; a++){
+ sub_v3_v3v3(va,rpos[a],accu_rcom);
+ /* mul_v3_fl(va,bp->mass); mass needs renormalzation here ?? */
+ sub_v3_v3v3(vb,pos[a],accu_com);
+ /* mul_v3_fl(va,rp->mass); */
+ m[0][0] += va[0] * vb[0];
+ m[0][1] += va[0] * vb[1];
+ m[0][2] += va[0] * vb[2];
+
+ m[1][0] += va[1] * vb[0];
+ m[1][1] += va[1] * vb[1];
+ m[1][2] += va[1] * vb[2];
+
+ m[2][0] += va[2] * vb[0];
+ m[2][1] += va[2] * vb[1];
+ m[2][2] += va[2] * vb[2];
+
+ /* building the referenc matrix on the fly
+ needed to scale properly later*/
+
+ mr[0][0] += va[0] * va[0];
+ mr[0][1] += va[0] * va[1];
+ mr[0][2] += va[0] * va[2];
+
+ mr[1][0] += va[1] * va[0];
+ mr[1][1] += va[1] * va[1];
+ mr[1][2] += va[1] * va[2];
+
+ mr[2][0] += va[2] * va[0];
+ mr[2][1] += va[2] * va[1];
+ mr[2][2] += va[2] * va[2];
+ }
+ copy_m3_m3(q,m);
+ stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2];
+ /* renormalizing for numeric stability */
+ mul_m3_fl(q,1.f/len_v3(stunt));
+
+ /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */
+ /* without the far case ... but seems to work here pretty neat */
+ odet = 0.f;
+ ndet = _det_m3(q);
+ while((odet-ndet)*(odet-ndet) > eps && i<imax){
+ invert_m3_m3(qi,q);
+ transpose_m3(qi);
+ add_m3_m3m3(q,q,qi);
+ mul_m3_fl(q,0.5f);
+ odet =ndet;
+ ndet =_det_m3(q);
+ i++;
+ }
+
+ if (i){
+ float scale[3][3];
+ float irot[3][3];
+ if(lrot) copy_m3_m3(lrot,q);
+ invert_m3_m3(irot,q);
+ invert_m3_m3(qi,mr);
+ mul_m3_m3m3(q,m,qi);
+ mul_m3_m3m3(scale,irot,q);
+ if(lscale) copy_m3_m3(lscale,scale);
+
+ }
+ }
+ }
+}
diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c
index f25f24927b4..47b99bce8ab 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -34,12 +34,12 @@
/********************************* Init **************************************/
-void zero_m3(float *m)
+void zero_m3(float m[3][3])
{
memset(m, 0, 3*3*sizeof(float));
}
-void zero_m4(float *m)
+void zero_m4(float m[4][4])
{
memset(m, 0, 4*4*sizeof(float));
}
@@ -183,6 +183,7 @@ void mul_m4_m4m3(float (*m1)[4], float (*m3)[4], float (*m2)[3])
m1[2][1]= m2[2][0]*m3[0][1] + m2[2][1]*m3[1][1] + m2[2][2]*m3[2][1];
m1[2][2]= m2[2][0]*m3[0][2] + m2[2][1]*m3[1][2] + m2[2][2]*m3[2][2];
}
+
/* m1 = m2 * m3, ignore the elements on the 4th row/column of m3*/
void mul_m3_m3m4(float m1[][3], float m2[][3], float m3[][4])
{
@@ -200,8 +201,6 @@ void mul_m3_m3m4(float m1[][3], float m2[][3], float m3[][4])
m1[2][2] = m2[2][0] * m3[0][2] + m2[2][1] * m3[1][2] +m2[2][2] * m3[2][2];
}
-
-
void mul_m4_m3m4(float (*m1)[4], float (*m3)[3], float (*m2)[4])
{
m1[0][0]= m2[0][0]*m3[0][0] + m2[0][1]*m3[1][0] + m2[0][2]*m3[2][0];
@@ -223,7 +222,6 @@ void mul_serie_m3(float answ[][3],
float temp[3][3];
if(m1==0 || m2==0) return;
-
mul_m3_m3m3(answ, m2, m1);
if(m3) {
@@ -304,7 +302,7 @@ void mul_v3_m4v3(float *in, float mat[][4], float *vec)
in[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2] + mat[3][2];
}
-void mul_no_transl_m4v3(float mat[][4], float *vec)
+void mul_mat3_m4_v3(float mat[][4], float *vec)
{
float x,y;
@@ -340,15 +338,19 @@ void mul_m4_v4(float mat[][4], float *vec)
vec[3]=x*mat[0][3] + y*mat[1][3] + z*mat[2][3] + mat[3][3]*vec[3];
}
-void mul_m3_v3(float mat[][3], float *vec)
+void mul_v3_m3v3(float r[3], float M[3][3], float a[3])
{
- float x,y;
+ r[0]= M[0][0]*a[0] + M[1][0]*a[1] + M[2][0]*a[2];
+ r[1]= M[0][1]*a[0] + M[1][1]*a[1] + M[2][1]*a[2];
+ r[2]= M[0][2]*a[0] + M[1][2]*a[1] + M[2][2]*a[2];
+}
- x=vec[0];
- y=vec[1];
- vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2];
- vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2];
- vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2];
+void mul_m3_v3(float M[3][3], float r[3])
+{
+ float tmp[3];
+
+ mul_v3_m3v3(tmp, M, r);
+ copy_v3_v3(r, tmp);
}
void mul_transposed_m3_v3(float mat[][3], float *vec)
@@ -362,30 +364,31 @@ void mul_transposed_m3_v3(float mat[][3], float *vec)
vec[2]= x*mat[2][0] + y*mat[2][1] + mat[2][2]*vec[2];
}
-void mul_m3_fl(float *m, float f)
+void mul_m3_fl(float m[3][3], float f)
{
- int i;
+ int i, j;
- for(i=0;i<9;i++) m[i]*=f;
+ for(i=0;i<3;i++)
+ for(j=0;j<3;j++)
+ m[i][j] *= f;
}
-void mul_m4_fl(float *m, float f)
+void mul_m4_fl(float m[4][4], float f)
{
- int i;
+ int i, j;
- for(i=0;i<16;i++) m[i]*=f; /* count to 12: without vector component */
+ for(i=0;i<4;i++)
+ for(j=0;j<4;j++)
+ m[i][j] *= f;
}
-void mul_no_transl_m4_fl(float *m, float f) /* only scale component */
+void mul_mat3_m4_fl(float m[4][4], float f)
{
- int i,j;
+ int i, j;
- for(i=0; i<3; i++) {
- for(j=0; j<3; j++) {
-
- m[4*i+j] *= f;
- }
- }
+ for(i=0; i<3; i++)
+ for(j=0; j<3; j++)
+ m[i][j] *= f;
}
void mul_m3_v3_double(float mat[][3], double *vec)
@@ -417,10 +420,21 @@ void add_m4_m4m4(float m1[][4], float m2[][4], float m3[][4])
m1[i][j]= m2[i][j] + m3[i][j];
}
-void invert_m3_m3(float m1[][3], float m2[][3])
+int invert_m3(float m[3][3])
+{
+ float tmp[3][3];
+ int success;
+
+ success= invert_m3_m3(tmp, m);
+ copy_m3_m3(m, tmp);
+
+ return success;
+}
+
+int invert_m3_m3(float m1[3][3], float m2[3][3])
{
- short a,b;
float det;
+ int a, b, success;
/* calc adjoint */
adjoint_m3_m3(m1,m2);
@@ -430,6 +444,8 @@ void invert_m3_m3(float m1[][3], float m2[][3])
-m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1])
+m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]);
+ success= (det != 0);
+
if(det==0) det=1;
det= 1/det;
for(a=0;a<3;a++) {
@@ -437,6 +453,19 @@ void invert_m3_m3(float m1[][3], float m2[][3])
m1[a][b]*=det;
}
}
+
+ return success;
+}
+
+int invert_m4(float m[4][4])
+{
+ float tmp[4][4];
+ int success;
+
+ success= invert_m4_m4(tmp, m);
+ copy_m4_m4(m, tmp);
+
+ return success;
}
/*
@@ -448,7 +477,7 @@ void invert_m3_m3(float m1[][3], float m2[][3])
* Mark Segal - 1992
*/
-int invert_m4_m4(float inverse[][4], float mat[][4])
+int invert_m4_m4(float inverse[4][4], float mat[4][4])
{
int i, j, k;
double temp;
diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c
index 85436d3a639..084db725409 100644
--- a/source/blender/blenlib/intern/math_rotation.c
+++ b/source/blender/blenlib/intern/math_rotation.c
@@ -209,7 +209,7 @@ void quat_to_mat4(float m[][4], float *q)
m[3][3]= 1.0f;
}
-void mat3_to_quat(float *q,float wmat[][3])
+void mat3_to_quat(float *q, float wmat[][3])
{
double tr, s;
float mat[3][3];
@@ -257,11 +257,19 @@ void mat3_to_quat(float *q,float wmat[][3])
q[2]= (float)((mat[2][1] + mat[1][2])*s);
}
}
+
normalize_qt(q);
}
-#if 0
-void Mat3ToQuat_is_ok(float wmat[][3], float *q)
+void mat4_to_quat(float *q, float m[][4])
+{
+ float mat[3][3];
+
+ copy_m3_m4(mat, m);
+ mat3_to_quat(q,mat);
+}
+
+void mat3_to_quat_is_ok(float q[4], float wmat[3][3])
{
float mat[3][3], matr[3][3], matn[3][3], q1[4], q2[4], angle, si, co, nor[3];
@@ -287,7 +295,7 @@ void Mat3ToQuat_is_ok(float wmat[][3], float *q)
q1[3]= -nor[2]*si;
/* rotate back x-axis from mat, using inverse q1 */
- quat_to_mat3(matr,q1);
+ quat_to_mat3( matr,q1);
invert_m3_m3(matn, matr);
mul_m3_v3(matn, mat[0]);
@@ -303,28 +311,17 @@ void Mat3ToQuat_is_ok(float wmat[][3], float *q)
mul_qt_qtqt(q, q1, q2);
}
-#endif
-void mat4_to_quat(float *q, float m[][4])
-{
- float mat[3][3];
-
- copy_m3_m4(mat, m);
- mat3_to_quat(q,mat);
-
-}
void normalize_qt(float *q)
{
float len;
- len= (float)sqrt(q[0]*q[0]+q[1]*q[1]+q[2]*q[2]+q[3]*q[3]);
+ len= (float)sqrt(dot_qtqt(q, q));
if(len!=0.0) {
- q[0]/= len;
- q[1]/= len;
- q[2]/= len;
- q[3]/= len;
- } else {
+ mul_qt_fl(q, 1.0f/len);
+ }
+ else {
q[1]= 1.0f;
q[0]= q[2]= q[3]= 0.0f;
}
@@ -938,7 +935,6 @@ void rotate_eul(float *beul, char axis, float ang)
}
-#if 0
/* exported to transform.c */
/* order independent! */
void compatible_eul(float *eul, float *oldrot)
@@ -1002,7 +998,6 @@ void compatible_eul(float *eul, float *oldrot)
}
#endif
}
-#endif
/* uses 2 methods to retrieve eulers, and picks the closest */
/* XYZ order */
@@ -1422,7 +1417,7 @@ void add_weighted_dq_dq(DualQuat *dqsum, DualQuat *dq, float weight)
weight= -weight;
copy_m4_m4(wmat, dq->scale);
- mul_m4_fl((float*)wmat, weight);
+ mul_m4_fl(wmat, weight);
add_m4_m4m4(dqsum->scale, dqsum->scale, wmat);
dqsum->scale_weight += weight;
}
@@ -1445,7 +1440,7 @@ void normalize_dq(DualQuat *dq, float totweight)
dq->scale[3][3] += addweight;
}
- mul_m4_fl((float*)dq->scale, scale);
+ mul_m4_fl(dq->scale, scale);
dq->scale_weight= 1.0f;
}
}
@@ -1496,7 +1491,7 @@ void mul_v3m3_dq(float *co, float mat[][3],DualQuat *dq)
}
else
copy_m3_m3(mat, M);
- mul_m3_fl((float*)mat, len2);
+ mul_m3_fl(mat, len2);
}
}
diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c
index 8336b529da3..289d8818753 100644
--- a/source/blender/blenlib/intern/math_vector.c
+++ b/source/blender/blenlib/intern/math_vector.c
@@ -32,234 +32,11 @@
#include "BLI_math.h"
-/********************************** Init *************************************/
+//******************************* Interpolation *******************************/
-void zero_v2(float r[2])
+void interp_v2_v2v2(float *target, float *a, float *b, float t)
{
- r[0]= 0.0f;
- r[1]= 0.0f;
-}
-
-void zero_v3(float r[3])
-{
- r[0]= 0.0f;
- r[1]= 0.0f;
- r[2]= 0.0f;
-}
-
-void copy_v2_v2(float r[2], float a[2])
-{
- r[0]= a[0];
- r[1]= a[1];
-}
-
-void copy_v3_v3(float r[3], float a[3])
-{
- r[0]= a[0];
- r[1]= a[1];
- r[2]= a[2];
-}
-
-/********************************* Arithmetic ********************************/
-
-void add_v2_v2(float *r, float *a)
-{
- r[0] += a[0];
- r[1] += a[1];
-}
-
-void add_v2_v2v2(float *r, float *a, float *b)
-{
- r[0]= a[0] + b[0];
- r[1]= a[1] + b[1];
-}
-
-void add_v3_v3(float *r, float *a)
-{
- r[0] += a[0];
- r[1] += a[1];
- r[1] += a[1];
-}
-
-void add_v3_v3v3(float *r, float *a, float *b)
-{
- r[0]= a[0] + b[0];
- r[1]= a[1] + b[1];
- r[2]= a[2] + b[2];
-}
-
-void sub_v2_v2(float *r, float *a)
-{
- r[0] -= a[0];
- r[1] -= a[1];
-}
-
-void sub_v2_v2v2(float *r, float *a, float *b)
-{
- r[0]= a[0] - b[0];
- r[1]= a[1] - b[1];
-}
-
-void sub_v3_v3(float *r, float *a)
-{
- r[0] -= a[0];
- r[1] -= a[1];
- r[1] -= a[1];
-}
-
-void sub_v3_v3v3(float *r, float *a, float *b)
-{
- r[0]= a[0] - b[0];
- r[1]= a[1] - b[1];
- r[2]= a[2] - b[2];
-}
-
-void mul_v2_fl(float *v1, float f)
-{
- v1[0]*= f;
- v1[1]*= f;
-}
-
-void mul_v3_fl(float r[3], float f)
-{
- r[0] *= f;
- r[1] *= f;
- r[2] *= f;
-}
-
-void mul_v3_v3fl(float r[3], float a[3], float f)
-{
- r[0]= a[0]*f;
- r[1]= a[1]*f;
- r[2]= a[2]*f;
-}
-
-void mul_v3_v3(float r[3], float a[3])
-{
- r[0] *= a[0];
- r[1] *= a[1];
- r[2] *= a[2];
-}
-
-void mul_v3_v3v3(float *v, float *v1, float *v2)
-{
- v[0] = v1[0] * v2[0];
- v[1] = v1[1] * v2[1];
- v[2] = v1[2] * v2[2];
-}
-
-void negate_v3(float r[3])
-{
- r[0]= -r[0];
- r[1]= -r[1];
- r[2]= -r[2];
-}
-
-void negate_v3_v3(float r[3], float a[3])
-{
- r[0]= -a[0];
- r[1]= -a[1];
- r[2]= -a[2];
-}
-
-float dot_v2v2(float *a, float *b)
-{
- return a[0]*b[0] + a[1]*b[1];
-}
-
-float dot_v3v3(float a[3], float b[3])
-{
- return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
-}
-
-void cross_v3_v3v3(float r[3], float a[3], float b[3])
-{
- r[0]= a[1]*b[2] - a[2]*b[1];
- r[1]= a[2]*b[0] - a[0]*b[2];
- r[2]= a[0]*b[1] - a[1]*b[0];
-}
-
-void star_m3_v3(float mat[][3], float *vec)
-{
- mat[0][0]= mat[1][1]= mat[2][2]= 0.0;
- mat[0][1]= -vec[2];
- mat[0][2]= vec[1];
- mat[1][0]= vec[2];
- mat[1][2]= -vec[0];
- mat[2][0]= -vec[1];
- mat[2][1]= vec[0];
-
-}
-
-/*********************************** Length **********************************/
-
-float len_v2(float *v)
-{
- return (float)sqrt(v[0]*v[0] + v[1]*v[1]);
-}
-
-float len_v2v2(float *v1, float *v2)
-{
- float x, y;
-
- x = v1[0]-v2[0];
- y = v1[1]-v2[1];
- return (float)sqrt(x*x+y*y);
-}
-
-float len_v3(float a[3])
-{
- return sqrtf(dot_v3v3(a, a));
-}
-
-float len_v3v3(float a[3], float b[3])
-{
- float d[3];
-
- sub_v3_v3v3(d, b, a);
- return len_v3(d);
-}
-
-float normalize_v2(float n[2])
-{
- float d;
-
- d= n[0]*n[0]+n[1]*n[1];
-
- if(d>1.0e-35f) {
- d= (float)sqrt(d);
- n[0]/=d;
- n[1]/=d;
- } else {
- n[0]=n[1]= 0.0f;
- d= 0.0f;
- }
- return d;
-}
-
-float normalize_v3(float n[3])
-{
- float d= dot_v3v3(n, n);
-
- /* a larger value causes normalize errors in a
- scaled down models with camera xtreme close */
- if(d > 1.0e-35f) {
- d= sqrtf(d);
- mul_v3_fl(n, 1.0f/d);
- }
- else {
- zero_v3(n);
- d= 0.0f;
- }
-
- return d;
-}
-
-/******************************* Interpolation *******************************/
-
-void interp_v2_v2v2(float *target, const float *a, const float *b, const float t)
-{
- const float s = 1.0f-t;
+ float s = 1.0f-t;
target[0]= s*a[0] + t*b[0];
target[1]= s*a[1] + t*b[1];
@@ -267,17 +44,15 @@ void interp_v2_v2v2(float *target, const float *a, const float *b, const float t
/* weight 3 2D vectors,
* 'w' must be unit length but is not a vector, just 3 weights */
-void interp_v2_v2v2v2(float p[2], const float v1[2], const float v2[2], const float v3[2], const float w[3])
+void interp_v2_v2v2v2(float p[2], float v1[2], float v2[2], float v3[2], float w[3])
{
p[0] = v1[0]*w[0] + v2[0]*w[1] + v3[0]*w[2];
p[1] = v1[1]*w[0] + v2[1]*w[1] + v3[1]*w[2];
}
-
-
-void interp_v3_v3v3(float *target, const float *a, const float *b, const float t)
+void interp_v3_v3v3(float *target, float *a, float *b, float t)
{
- const float s = 1.0f-t;
+ float s = 1.0f-t;
target[0]= s*a[0] + t*b[0];
target[1]= s*a[1] + t*b[1];
@@ -286,18 +61,27 @@ void interp_v3_v3v3(float *target, const float *a, const float *b, const float t
/* weight 3 vectors,
* 'w' must be unit length but is not a vector, just 3 weights */
-void interp_v3_v3v3v3(float p[3], const float v1[3], const float v2[3], const float v3[3], const float w[3])
+void interp_v3_v3v3v3(float p[3], float v1[3], float v2[3], float v3[3], float w[3])
{
p[0] = v1[0]*w[0] + v2[0]*w[1] + v3[0]*w[2];
p[1] = v1[1]*w[0] + v2[1]*w[1] + v3[1]*w[2];
p[2] = v1[2]*w[0] + v2[2]*w[1] + v3[2]*w[2];
}
+/* weight 3 vectors,
+ * 'w' must be unit length but is not a vector, just 3 weights */
+void interp_v3_v3v3v3v3(float p[3], float v1[3], float v2[3], float v3[3], float v4[3], float w[4])
+{
+ p[0] = v1[0]*w[0] + v2[0]*w[1] + v3[0]*w[2] + v4[0]*w[3];
+ p[1] = v1[1]*w[0] + v2[1]*w[1] + v3[1]*w[2] + v4[1]*w[3];
+ p[2] = v1[2]*w[0] + v2[2]*w[1] + v3[2]*w[2] + v4[2]*w[3];
+}
+
void mid_v3_v3v3(float *v, float *v1, float *v2)
{
- v[0]= 0.5f*(v1[0]+ v2[0]);
- v[1]= 0.5f*(v1[1]+ v2[1]);
- v[2]= 0.5f*(v1[2]+ v2[2]);
+ v[0]= 0.5f*(v1[0] + v2[0]);
+ v[1]= 0.5f*(v1[1] + v2[1]);
+ v[2]= 0.5f*(v1[2] + v2[2]);
}
/********************************* Comparison ********************************/
@@ -508,20 +292,6 @@ void print_v4(char *str, float v[4])
printf("%s: %.3f %.3f %.3f %.3f\n", str, v[0], v[1], v[2], v[3]);
}
-void normal_short_to_float_v3(float *out, short *in)
-{
- out[0] = in[0]*(1.0f/32767.0f);
- out[1] = in[1]*(1.0f/32767.0f);
- out[2] = in[2]*(1.0f/32767.0f);
-}
-
-void normal_float_to_short_v3(short *out, float *in)
-{
- out[0] = (short)(in[0]*32767.0f);
- out[1] = (short)(in[1]*32767.0f);
- out[2] = (short)(in[2]*32767.0f);
-}
-
void minmax_v3_v3v3(float *min, float *max, float *vec)
{
if(min[0]>vec[0]) min[0]= vec[0];
diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c
new file mode 100644
index 00000000000..cb629312712
--- /dev/null
+++ b/source/blender/blenlib/intern/math_vector_inline.c
@@ -0,0 +1,313 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+
+ * The Original Code is: some of this file.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ * */
+
+#include "BLI_math.h"
+
+#ifndef BLI_MATH_VECTOR_INLINE
+#define BLI_MATH_VECTOR_INLINE
+
+/********************************** Init *************************************/
+
+MINLINE void zero_v2(float r[2])
+{
+ r[0]= 0.0f;
+ r[1]= 0.0f;
+}
+
+MINLINE void zero_v3(float r[3])
+{
+ r[0]= 0.0f;
+ r[1]= 0.0f;
+ r[2]= 0.0f;
+}
+
+MINLINE void copy_v2_v2(float r[2], float a[2])
+{
+ r[0]= a[0];
+ r[1]= a[1];
+}
+
+MINLINE void copy_v3_v3(float r[3], float a[3])
+{
+ r[0]= a[0];
+ r[1]= a[1];
+ r[2]= a[2];
+}
+
+MINLINE void swap_v2_v2(float a[2], float b[2])
+{
+ SWAP(float, a[0], b[0]);
+ SWAP(float, a[1], b[1]);
+}
+
+MINLINE void swap_v3_v3(float a[3], float b[3])
+{
+ SWAP(float, a[0], b[0]);
+ SWAP(float, a[1], b[1]);
+ SWAP(float, a[2], b[2]);
+}
+
+/********************************* Arithmetic ********************************/
+
+MINLINE void add_v2_v2(float *r, float *a)
+{
+ r[0] += a[0];
+ r[1] += a[1];
+}
+
+MINLINE void add_v2_v2v2(float *r, float *a, float *b)
+{
+ r[0]= a[0] + b[0];
+ r[1]= a[1] + b[1];
+}
+
+MINLINE void add_v3_v3(float *r, float *a)
+{
+ r[0] += a[0];
+ r[1] += a[1];
+ r[2] += a[2];
+}
+
+MINLINE void add_v3_v3v3(float *r, float *a, float *b)
+{
+ r[0]= a[0] + b[0];
+ r[1]= a[1] + b[1];
+ r[2]= a[2] + b[2];
+}
+
+MINLINE void sub_v2_v2(float *r, float *a)
+{
+ r[0] -= a[0];
+ r[1] -= a[1];
+}
+
+MINLINE void sub_v2_v2v2(float *r, float *a, float *b)
+{
+ r[0]= a[0] - b[0];
+ r[1]= a[1] - b[1];
+}
+
+MINLINE void sub_v3_v3(float *r, float *a)
+{
+ r[0] -= a[0];
+ r[1] -= a[1];
+ r[2] -= a[2];
+}
+
+MINLINE void sub_v3_v3v3(float *r, float *a, float *b)
+{
+ r[0]= a[0] - b[0];
+ r[1]= a[1] - b[1];
+ r[2]= a[2] - b[2];
+}
+
+MINLINE void mul_v2_fl(float *v1, float f)
+{
+ v1[0]*= f;
+ v1[1]*= f;
+}
+
+MINLINE void mul_v3_fl(float r[3], float f)
+{
+ r[0] *= f;
+ r[1] *= f;
+ r[2] *= f;
+}
+
+MINLINE void mul_v3_v3fl(float r[3], float a[3], float f)
+{
+ r[0]= a[0]*f;
+ r[1]= a[1]*f;
+ r[2]= a[2]*f;
+}
+
+MINLINE void mul_v3_v3(float r[3], float a[3])
+{
+ r[0] *= a[0];
+ r[1] *= a[1];
+ r[2] *= a[2];
+}
+
+MINLINE void madd_v3_v3fl(float r[3], float a[3], float f)
+{
+ r[0] += a[0]*f;
+ r[1] += a[1]*f;
+ r[2] += a[2]*f;
+}
+
+MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3])
+{
+ r[0] += a[0]*b[0];
+ r[1] += a[1]*b[1];
+ r[2] += a[2]*b[2];
+}
+
+MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f)
+{
+ r[0] = a[0] + b[0]*f;
+ r[1] = a[1] + b[1]*f;
+ r[2] = a[2] + b[2]*f;
+}
+
+MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3])
+{
+ r[0] = a[0] + b[0]*c[0];
+ r[1] = a[1] + b[1]*c[1];
+ r[2] = a[2] + b[2]*c[2];
+}
+
+MINLINE void mul_v3_v3v3(float *v, float *v1, float *v2)
+{
+ v[0] = v1[0] * v2[0];
+ v[1] = v1[1] * v2[1];
+ v[2] = v1[2] * v2[2];
+}
+
+MINLINE void negate_v3(float r[3])
+{
+ r[0]= -r[0];
+ r[1]= -r[1];
+ r[2]= -r[2];
+}
+
+MINLINE void negate_v3_v3(float r[3], float a[3])
+{
+ r[0]= -a[0];
+ r[1]= -a[1];
+ r[2]= -a[2];
+}
+
+MINLINE float dot_v2v2(float *a, float *b)
+{
+ return a[0]*b[0] + a[1]*b[1];
+}
+
+MINLINE float dot_v3v3(float a[3], float b[3])
+{
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
+}
+
+MINLINE float cross_v2v2(float a[2], float b[2])
+{
+ return a[0]*b[1] - a[1]*b[0];
+}
+
+MINLINE void cross_v3_v3v3(float r[3], float a[3], float b[3])
+{
+ r[0]= a[1]*b[2] - a[2]*b[1];
+ r[1]= a[2]*b[0] - a[0]*b[2];
+ r[2]= a[0]*b[1] - a[1]*b[0];
+}
+
+MINLINE void star_m3_v3(float mat[][3], float *vec)
+{
+ mat[0][0]= mat[1][1]= mat[2][2]= 0.0;
+ mat[0][1]= -vec[2];
+ mat[0][2]= vec[1];
+ mat[1][0]= vec[2];
+ mat[1][2]= -vec[0];
+ mat[2][0]= -vec[1];
+ mat[2][1]= vec[0];
+}
+
+/*********************************** Length **********************************/
+
+MINLINE float len_v2(float *v)
+{
+ return (float)sqrt(v[0]*v[0] + v[1]*v[1]);
+}
+
+MINLINE float len_v2v2(float *v1, float *v2)
+{
+ float x, y;
+
+ x = v1[0]-v2[0];
+ y = v1[1]-v2[1];
+ return (float)sqrt(x*x+y*y);
+}
+
+MINLINE float len_v3(float a[3])
+{
+ return sqrtf(dot_v3v3(a, a));
+}
+
+MINLINE float len_v3v3(float a[3], float b[3])
+{
+ float d[3];
+
+ sub_v3_v3v3(d, b, a);
+ return len_v3(d);
+}
+
+MINLINE float normalize_v2(float n[2])
+{
+ float d= dot_v2v2(n, n);
+
+ if(d > 1.0e-35f) {
+ d= sqrtf(d);
+ mul_v2_fl(n, 1.0f/d);
+ } else {
+ zero_v2(n);
+ d= 0.0f;
+ }
+ return d;
+}
+
+MINLINE float normalize_v3(float n[3])
+{
+ float d= dot_v3v3(n, n);
+
+ /* a larger value causes normalize errors in a
+ scaled down models with camera xtreme close */
+ if(d > 1.0e-35f) {
+ d= sqrtf(d);
+ mul_v3_fl(n, 1.0f/d);
+ }
+ else {
+ zero_v3(n);
+ d= 0.0f;
+ }
+
+ return d;
+}
+
+MINLINE void normal_short_to_float_v3(float *out, short *in)
+{
+ out[0] = in[0]*(1.0f/32767.0f);
+ out[1] = in[1]*(1.0f/32767.0f);
+ out[2] = in[2]*(1.0f/32767.0f);
+}
+
+MINLINE void normal_float_to_short_v3(short *out, float *in)
+{
+ out[0] = (short)(in[0]*32767.0f);
+ out[1] = (short)(in[1]*32767.0f);
+ out[2] = (short)(in[2]*32767.0f);
+}
+
+#endif /* BLI_MATH_VECTOR_INLINE */
+
diff --git a/source/blender/blenlib/intern/scanfill.c b/source/blender/blenlib/intern/scanfill.c
index bd9ed85efa2..e54382c9392 100644
--- a/source/blender/blenlib/intern/scanfill.c
+++ b/source/blender/blenlib/intern/scanfill.c
@@ -40,7 +40,7 @@
#include "DNA_listBase.h"
#include "DNA_mesh_types.h"
#include "BLI_editVert.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_scanfill.h"
#include "BLI_callbacks.h"
@@ -432,13 +432,13 @@ static void testvertexnearedge(void)
eed= filledgebase.first;
while(eed) {
if(eve!=eed->v1 && eve!=eed->v2 && eve->xs==eed->f1) {
- if(FloatCompare(eve->co,eed->v1->co, COMPLIMIT)) {
+ if(compare_v3v3(eve->co,eed->v1->co, COMPLIMIT)) {
ed1->v2= eed->v1;
eed->v1->h++;
eve->h= 0;
break;
}
- else if(FloatCompare(eve->co,eed->v2->co, COMPLIMIT)) {
+ else if(compare_v3v3(eve->co,eed->v2->co, COMPLIMIT)) {
ed1->v2= eed->v2;
eed->v2->h++;
eve->h= 0;
@@ -450,7 +450,7 @@ static void testvertexnearedge(void)
vec2[0]= eed->v2->co[cox];
vec2[1]= eed->v2->co[coy];
if(boundinsideEV(eed,eve)) {
- dist= DistVL2Dfl(vec1,vec2,vec3);
+ dist= dist_to_line_v2(vec1,vec2,vec3);
if(dist<COMPLIMIT) {
/* new edge */
ed1= BLI_addfilledge(eed->v1, eve);
@@ -819,12 +819,12 @@ int BLI_edgefill(int mode, int mat_nr)
eve= fillvertbase.first;
while(eve) {
if(v2) {
- if( FloatCompare(v2, eve->co, COMPLIMIT)==0) {
- len= CalcNormFloat(v1, v2, eve->co, norm);
+ if( compare_v3v3(v2, eve->co, COMPLIMIT)==0) {
+ len= normal_tri_v3( norm,v1, v2, eve->co);
if(len != 0.0) break;
}
}
- else if(FloatCompare(v1, eve->co, COMPLIMIT)==0) {
+ else if(compare_v3v3(v1, eve->co, COMPLIMIT)==0) {
v2= eve->co;
}
eve= eve->next;
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c
index 39afced92bc..5ff4dfe4e96 100644
--- a/source/blender/blenlib/intern/util.c
+++ b/source/blender/blenlib/intern/util.c
@@ -223,7 +223,7 @@ void BLI_newname(char *name, int add)
* defname: the name that should be used by default if none is specified already
* delim: the character which acts as a delimeter between parts of the name
*/
-void BLI_uniquename(ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len)
+void BLI_uniquename(ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len)
{
Link *link;
char tempname[128];
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 7cdcbff1dae..4437107f9ae 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -102,7 +102,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_storage_types.h" // for relname flags
#include "BKE_animsys.h"
@@ -1694,6 +1694,12 @@ static void lib_link_fmodifiers(FileData *fd, ID *id, ListBase *list)
data->script = newlibadr(fd, id->lib, data->script);
}
break;
+ case FMODIFIER_TYPE_SOUND:
+ {
+ FMod_Sound *data= (FMod_Sound *)fcm->data;
+ data->sound = newlibadr(fd, id->lib, data->sound);
+ }
+ break;
}
}
}
@@ -1702,6 +1708,9 @@ static void lib_link_fcurves(FileData *fd, ID *id, ListBase *list)
{
FCurve *fcu;
+ if (list == NULL)
+ return;
+
/* relink ID-block references... */
for (fcu= list->first; fcu; fcu= fcu->next) {
/* driver data */
@@ -1848,6 +1857,9 @@ static void lib_link_nladata_strips(FileData *fd, ID *id, ListBase *list)
/* check strip's children */
lib_link_nladata_strips(fd, id, &strip->strips);
+ /* check strip's F-Curves */
+ lib_link_fcurves(fd, id, &strip->fcurves);
+
/* reassign the counted-reference to action */
strip->act = newlibadr_us(fd, id->lib, strip->act);
}
@@ -1983,6 +1995,8 @@ static void lib_link_ntree(FileData *fd, ID *id, bNodeTree *ntree)
if(ntree->adt) lib_link_animdata(fd, &ntree->id, ntree->adt);
+ ntree->gpd= newlibadr_us(fd, id->lib, ntree->gpd);
+
for(node= ntree->nodes.first; node; node= node->next)
node->id= newlibadr_us(fd, id->lib, node->id);
}
@@ -2383,7 +2397,9 @@ static void direct_link_armature(FileData *fd, bArmature *arm)
link_list(fd, &arm->bonebase);
arm->edbo= NULL;
arm->sketch = NULL;
+
arm->adt= newdataadr(fd, arm->adt);
+ direct_link_animdata(fd, arm->adt);
bone=arm->bonebase.first;
while (bone) {
@@ -3779,6 +3795,8 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
if(clmd->sim_parms) {
if(clmd->sim_parms->presets > 10)
clmd->sim_parms->presets = 0;
+
+ clmd->sim_parms->reset = 0;
}
if(clmd->sim_parms->effector_weights)
@@ -3861,7 +3879,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
collmd->current_x = NULL;
collmd->current_xnew = NULL;
collmd->current_v = NULL;
- collmd->time = -1;
+ collmd->time = -1000;
collmd->numverts = 0;
collmd->bvhtree = NULL;
collmd->mfaces = NULL;
@@ -4199,11 +4217,6 @@ static void lib_link_scene(FileData *fd, Main *main)
MEM_freeN(base);
}
}
-
- if (sce->ed) {
- Editing *ed= sce->ed;
- ed->act_seq= NULL; // ed->act_seq= newlibadr(fd, ed->act_seq); // FIXME
- }
SEQ_BEGIN(sce->ed, seq) {
if(seq->ipo) seq->ipo= newlibadr_us(fd, sce->id.lib, seq->ipo);
@@ -4305,7 +4318,8 @@ static void direct_link_scene(FileData *fd, Scene *sce)
ListBase *old_seqbasep= &((Editing *)sce->ed)->seqbase;
ed= sce->ed= newdataadr(fd, sce->ed);
- ed->act_seq= NULL; // ed->act_seq= newdataadr(fd, ed->act_seq); // FIXME
+
+ ed->act_seq= newdataadr(fd, ed->act_seq);
/* recursive link sequences, lb will be correctly initialized */
link_recurs_seq(fd, &ed->seqbase);
@@ -5264,7 +5278,7 @@ static void lib_link_group(FileData *fd, Main *main)
go= go->next;
}
if(add_us) group->id.us++;
- rem_from_group(group, NULL); /* removes NULL entries */
+ rem_from_group(group, NULL, NULL, NULL); /* removes NULL entries */
}
group= group->id.next;
}
@@ -5993,13 +6007,38 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
ar->regiontype= RGN_TYPE_UI;
ar->alignment= RGN_ALIGN_TOP;
break;
+ case SPACE_VIEW3D:
+ /* toolbar */
+ ar= MEM_callocN(sizeof(ARegion), "toolbar for view3d");
+
+ BLI_addtail(lb, ar);
+ ar->regiontype= RGN_TYPE_UI;
+ ar->alignment= RGN_ALIGN_LEFT;
+ ar->flag = RGN_FLAG_HIDDEN;
+
+ /* tool properties */
+ ar= MEM_callocN(sizeof(ARegion), "tool properties for view3d");
+
+ BLI_addtail(lb, ar);
+ ar->regiontype= RGN_TYPE_UI;
+ ar->alignment= RGN_ALIGN_BOTTOM|RGN_SPLIT_PREV;
+ ar->flag = RGN_FLAG_HIDDEN;
+
+ /* buttons/list view */
+ ar= MEM_callocN(sizeof(ARegion), "buttons for view3d");
+
+ BLI_addtail(lb, ar);
+ ar->regiontype= RGN_TYPE_UI;
+ ar->alignment= RGN_ALIGN_RIGHT;
+ ar->flag = RGN_FLAG_HIDDEN;
#if 0
case SPACE_BUTS:
/* context UI region */
ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
BLI_addtail(lb, ar);
- ar->regiontype= RGN_TYPE_CHANNELS;
- ar->alignment= RGN_ALIGN_TOP;
+ ar->regiontype= RGN_TYPE_UI;
+ ar->alignment= RGN_ALIGN_RIGHT;
+
break;
#endif
}
@@ -8469,7 +8508,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
/* correctly initialise constinv matrix */
- Mat4One(ob->constinv);
+ unit_m4(ob->constinv);
if (ob->type == OB_ARMATURE) {
if (ob->pose) {
@@ -8499,7 +8538,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
/* correctly initialise constinv matrix */
- Mat4One(pchan->constinv);
+ unit_m4(pchan->constinv);
}
}
}
@@ -9904,7 +9943,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
/* Add default gravity to scenes */
for(sce= main->scene.first; sce; sce= sce->id.next) {
if((sce->physics_settings.flag & PHYS_GLOBAL_GRAVITY) == 0
- && VecLength(sce->physics_settings.gravity) == 0.0f) {
+ && len_v3(sce->physics_settings.gravity) == 0.0f) {
sce->physics_settings.gravity[0] = sce->physics_settings.gravity[1] = 0.0f;
sce->physics_settings.gravity[2] = -9.81f;
@@ -10035,11 +10074,45 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
{
Scene *sce= main->scene.first;
while(sce) {
+ Sequence *seq;
+
if(sce->r.frame_step==0)
sce->r.frame_step= 1;
+
+ if(sce->ed && sce->ed->seqbasep)
+ {
+ seq=sce->ed->seqbasep->first;
+ while(seq) {
+ seqUniqueName(sce->ed->seqbasep, seq);
+ seq=seq->next;
+ }
+ }
+
sce= sce->id.next;
}
}
+ {
+ /* ensure all nodes have unique names */
+ bNodeTree *ntree= main->nodetree.first;
+ while(ntree) {
+ bNode *node=ntree->nodes.first;
+
+ while(node) {
+ nodeUniqueName(ntree, node);
+ node= node->next;
+ }
+
+ ntree= ntree->id.next;
+ }
+ }
+ {
+ Object *ob=main->object.first;
+ while (ob) {
+ /* shaded mode disabled for now */
+ if (ob->dt == OB_SHADED) ob->dt = OB_TEXTURE;
+ ob=ob->id.next;
+ }
+ }
}
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
@@ -10380,15 +10453,63 @@ static void expand_constraint_channels(FileData *fd, Main *mainvar, ListBase *ch
}
}
-// XXX depreceated - old animation system
+static void expand_fmodifiers(FileData *fd, Main *mainvar, ListBase *list)
+{
+ FModifier *fcm;
+
+ for (fcm= list->first; fcm; fcm= fcm->next) {
+ /* library data for specific F-Modifier types */
+ switch (fcm->type) {
+ case FMODIFIER_TYPE_PYTHON:
+ {
+ FMod_Python *data= (FMod_Python *)fcm->data;
+
+ expand_doit(fd, mainvar, data->script);
+ }
+ break;
+ case FMODIFIER_TYPE_SOUND:
+ {
+ FMod_Sound *data= (FMod_Sound *)fcm->data;
+
+ expand_doit(fd, mainvar, data->sound);
+ }
+ break;
+ }
+ }
+}
+
+static void expand_fcurves(FileData *fd, Main *mainvar, ListBase *list)
+{
+ FCurve *fcu;
+
+ for (fcu= list->first; fcu; fcu= fcu->next) {
+ /* Driver targets if there is a driver */
+ if (fcu->driver) {
+ ChannelDriver *driver= fcu->driver;
+ DriverTarget *dtar;
+
+ for (dtar= driver->targets.first; dtar; dtar= dtar->next)
+ expand_doit(fd, mainvar, dtar->id);
+ }
+
+ /* F-Curve Modifiers */
+ expand_fmodifiers(fd, mainvar, &fcu->modifiers);
+ }
+}
+
static void expand_action(FileData *fd, Main *mainvar, bAction *act)
{
bActionChannel *chan;
+ // XXX depreceated - old animation system --------------
for (chan=act->chanbase.first; chan; chan=chan->next) {
expand_doit(fd, mainvar, chan->ipo);
expand_constraint_channels(fd, mainvar, &chan->constraintChannels);
}
+ // ---------------------------------------------------
+
+ /* F-Curves in Action */
+ expand_fcurves(fd, mainvar, &act->curves);
}
static void expand_keyingsets(FileData *fd, Main *mainvar, ListBase *list)
@@ -10412,6 +10533,12 @@ static void expand_animdata_nlastrips(FileData *fd, Main *mainvar, ListBase *lis
/* check child strips */
expand_animdata_nlastrips(fd, mainvar, &strip->strips);
+ /* check F-Curves */
+ expand_fcurves(fd, mainvar, &strip->fcurves);
+
+ /* check F-Modifiers */
+ expand_fmodifiers(fd, mainvar, &strip->modifiers);
+
/* relink referenced action */
expand_doit(fd, mainvar, strip->act);
}
@@ -10419,7 +10546,6 @@ static void expand_animdata_nlastrips(FileData *fd, Main *mainvar, ListBase *lis
static void expand_animdata(FileData *fd, Main *mainvar, AnimData *adt)
{
- FCurve *fcd;
NlaTrack *nlt;
/* own action */
@@ -10427,13 +10553,7 @@ static void expand_animdata(FileData *fd, Main *mainvar, AnimData *adt)
expand_doit(fd, mainvar, adt->tmpact);
/* drivers - assume that these F-Curves have driver data to be in this list... */
- for (fcd= adt->drivers.first; fcd; fcd= fcd->next) {
- ChannelDriver *driver= fcd->driver;
- DriverTarget *dtar;
-
- for (dtar= driver->targets.first; dtar; dtar= dtar->next)
- expand_doit(fd, mainvar, dtar->id);
- }
+ expand_fcurves(fd, mainvar, &adt->drivers);
/* nla-data - referenced actions */
for (nlt= adt->nla_tracks.first; nlt; nlt= nlt->next)
@@ -10474,6 +10594,9 @@ static void expand_nodetree(FileData *fd, Main *mainvar, bNodeTree *ntree)
if(ntree->adt)
expand_animdata(fd, mainvar, ntree->adt);
+
+ if(ntree->gpd)
+ expand_doit(fd, mainvar, ntree->gpd);
for(node= ntree->nodes.first; node; node= node->next)
if(node->id && node->type!=CMP_NODE_R_LAYERS)
diff --git a/source/blender/collada/CMakeLists.txt b/source/blender/collada/CMakeLists.txt
index f510e7ee9ad..a0a4fb78b9b 100644
--- a/source/blender/collada/CMakeLists.txt
+++ b/source/blender/collada/CMakeLists.txt
@@ -53,10 +53,10 @@ SET(INC
../makesrna
../editors/include
../../../intern/guardedalloc
- ${OPENCOLLADA}/COLLADAStreamWriter/include
- ${OPENCOLLADA}/COLLADABaseUtils/include
- ${OPENCOLLADA}/COLLADAFramework/include
- ${OPENCOLLADA}/COLLADASaxFrameworkLoader/include
+ ${OPENCOLLADA_INC}/COLLADAStreamWriter/include
+ ${OPENCOLLADA_INC}/COLLADABaseUtils/include
+ ${OPENCOLLADA_INC}/COLLADAFramework/include
+ ${OPENCOLLADA_INC}/COLLADASaxFrameworkLoader/include
)
ENDIF(APPLE)
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp
index b626635d021..c3550dfd408 100644
--- a/source/blender/collada/DocumentExporter.cpp
+++ b/source/blender/collada/DocumentExporter.cpp
@@ -37,7 +37,7 @@ extern "C"
#include "BKE_image.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_string.h"
#include "BLI_listbase.h"
@@ -87,7 +87,7 @@ extern "C"
// This function assumes that quat is normalized.
// The following document was used as reference:
// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm
-void QuatToAxisAngle(float *q, float *axis, float *angle)
+void quat_to_axis_angle( float *axis, float *angle,float *q)
{
// quat to axis angle
*angle = 2 * acos(q[0]);
@@ -666,14 +666,14 @@ protected:
if (parent_mat) {
float invpar[4][4];
- Mat4Invert(invpar, parent_mat);
- Mat4MulMat4(local, mat, invpar);
+ invert_m4_m4(invpar, parent_mat);
+ mul_m4_m4m4(local, mat, invpar);
}
else {
- Mat4CpyMat4(local, mat);
+ copy_m4_m4(local, mat);
}
- TransformBase::decompose(local, loc, rot, size);
+ TransformBase::decompose(local, loc, rot, NULL, size);
/*
// this code used to create a single <rotate> representing object rotation
@@ -681,9 +681,9 @@ protected:
float axis[3];
float angle;
double angle_deg;
- EulToQuat(rot, quat);
- NormalQuat(quat);
- QuatToAxisAngle(quat, axis, &angle);
+ eul_to_quat( quat,rot);
+ normalize_qt(quat);
+ quat_to_axis_angle( axis, &angle,quat);
angle_deg = angle * 180.0f / M_PI;
node.addRotate(axis[0], axis[1], axis[2], angle_deg);
*/
@@ -901,12 +901,12 @@ private:
bPoseChannel *parchan = get_pose_channel(ob_arm->pose, bone->parent->name);
float invpar[4][4];
- Mat4Invert(invpar, parchan->pose_mat);
- Mat4MulMat4(mat, pchan->pose_mat, invpar);
+ invert_m4_m4(invpar, parchan->pose_mat);
+ mul_m4_m4m4(mat, pchan->pose_mat, invpar);
}
else {
// get world-space from armature-space
- Mat4MulMat4(mat, pchan->pose_mat, ob_arm->obmat);
+ mul_m4_m4m4(mat, pchan->pose_mat, ob_arm->obmat);
}
TransformWriter::add_node_transform(node, mat, NULL);
@@ -1059,9 +1059,9 @@ private:
float inv_bind_mat[4][4];
// make world-space matrix, pose_mat is armature-space
- Mat4MulMat4(world, pchan->pose_mat, ob_arm->obmat);
+ mul_m4_m4m4(world, pchan->pose_mat, ob_arm->obmat);
- Mat4Invert(mat, world);
+ invert_m4_m4(mat, world);
converter.mat4_to_dae(inv_bind_mat, mat);
source.appendValues(inv_bind_mat);
@@ -1241,9 +1241,9 @@ public:
if (ob->type == OB_MESH && is_skinned_mesh)
// for skinned mesh we write obmat in <bind_shape_matrix>
- Mat4One(mat);
+ unit_m4(mat);
else
- Mat4CpyMat4(mat, ob->obmat);
+ copy_m4_m4(mat, ob->obmat);
TransformWriter::add_node_transform(node, mat, ob->parent ? ob->parent->obmat : NULL);
@@ -2048,7 +2048,7 @@ public:
float eul[3];
- QuatToEul(quat, eul);
+ quat_to_eul( eul,quat);
for (int k = 0; k < 3; k++)
create_bezt(eulcu[k], frame, eul[k]);
diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp
index 0aa69d11949..9ebcc8b191f 100644
--- a/source/blender/collada/DocumentImporter.cpp
+++ b/source/blender/collada/DocumentImporter.cpp
@@ -1,3 +1,7 @@
+// TODO:
+// * name imported objects
+// * import object rotation as euler
+
#include "COLLADAFWRoot.h"
#include "COLLADAFWIWriter.h"
#include "COLLADAFWStableHeaders.h"
@@ -50,7 +54,8 @@ extern "C"
#include "BKE_depsgraph.h"
#include "BLI_util.h"
#include "BKE_displist.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
+#include "BKE_scene.h"
}
#include "BKE_armature.h"
#include "BKE_mesh.h"
@@ -62,7 +67,7 @@ extern "C"
#include "BKE_utildefines.h"
#include "BKE_action.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
@@ -85,17 +90,16 @@ extern "C"
#include <string>
#include <map>
+#include <algorithm> // sort()
#include <math.h>
#include <float.h>
// #define COLLADA_DEBUG
+#define ARMATURE_TEST
char *CustomData_get_layer_name(const struct CustomData *data, int type, int n);
-// armature module internal func, it's not good to use it here? (Arystan)
-struct EditBone *addEditBone(struct bArmature *arm, char *name);
-
const char *primTypeToStr(COLLADAFW::MeshPrimitive::PrimitiveType type)
{
using namespace COLLADAFW;
@@ -131,8 +135,10 @@ const char *geomTypeToStr(COLLADAFW::Geometry::GeometryType type)
return "SPLINE";
case COLLADAFW::Geometry::GEO_TYPE_CONVEX_MESH:
return "CONVEX_MESH";
+ case COLLADAFW::Geometry::GEO_TYPE_UNKNOWN:
+ default:
+ return "UNKNOWN";
}
- return "UNKNOWN";
}
// works for COLLADAFW::Node, COLLADAFW::Geometry
@@ -186,7 +192,7 @@ public:
float cur[4][4];
float copy[4][4];
- Mat4One(mat);
+ unit_m4(mat);
for (int i = 0; i < node->getTransformations().getCount(); i++) {
@@ -195,41 +201,16 @@ public:
switch(type) {
case COLLADAFW::Transformation::TRANSLATE:
- {
- COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm;
- COLLADABU::Math::Vector3& t = tra->getTranslation();
-
- Mat4One(cur);
- cur[3][0] = (float)t[0];
- cur[3][1] = (float)t[1];
- cur[3][2] = (float)t[2];
- }
+ dae_translate_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::ROTATE:
- {
- COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm;
- COLLADABU::Math::Vector3& raxis = ro->getRotationAxis();
- float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f);
- float axis[] = {raxis[0], raxis[1], raxis[2]};
- float quat[4];
- float rot_copy[3][3];
- float mat[3][3];
- AxisAngleToQuat(quat, axis, angle);
-
- QuatToMat4(quat, cur);
- }
+ dae_rotate_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::SCALE:
- {
- COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale();
- float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
- SizeToMat4(size, cur);
- }
+ dae_scale_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::MATRIX:
- {
- unit_converter->mat4_from_dae(cur, ((COLLADAFW::Matrix*)tm)->getMatrix());
- }
+ dae_matrix_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::LOOKAT:
case COLLADAFW::Transformation::SKEW:
@@ -237,8 +218,8 @@ public:
break;
}
- Mat4CpyMat4(copy, mat);
- Mat4MulMat4(mat, cur, copy);
+ copy_m4_m4(copy, mat);
+ mul_m4_m4m4(mat, cur, copy);
if (animation_map) {
// AnimationList that drives this Transformation
@@ -250,6 +231,42 @@ public:
}
}
}
+
+ void dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm;
+ COLLADABU::Math::Vector3& axis = ro->getRotationAxis();
+ float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f);
+ float ax[] = {axis[0], axis[1], axis[2]};
+ // float quat[4];
+ // axis_angle_to_quat(quat, axis, angle);
+ // quat_to_mat4(m, quat);
+ axis_angle_to_mat4(m, ax, angle);
+ }
+
+ void dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm;
+ COLLADABU::Math::Vector3& t = tra->getTranslation();
+
+ unit_m4(m);
+
+ m[3][0] = (float)t[0];
+ m[3][1] = (float)t[1];
+ m[3][2] = (float)t[2];
+ }
+
+ void dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale();
+ float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
+ size_to_mat4(m, size);
+ }
+
+ void dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ unit_converter->dae_matrix_to_mat4(m, ((COLLADAFW::Matrix*)tm)->getMatrix());
+ }
};
// only for ArmatureImporter to "see" MeshImporter::get_object_by_geom_uid
@@ -263,7 +280,7 @@ public:
class AnimationImporterBase
{
public:
- virtual void change_eul_to_quat(Object *ob, bAction *act) = 0;
+ // virtual void change_eul_to_quat(Object *ob, bAction *act) = 0;
};
class ArmatureImporter : private TransformReader
@@ -346,7 +363,7 @@ private:
ob_arm(skin.ob_arm),
controller_uid(skin.controller_uid)
{
- Mat4CpyMat4(bind_shape_matrix, (float (*)[4])skin.bind_shape_matrix);
+ copy_m4_m4(bind_shape_matrix, (float (*)[4])skin.bind_shape_matrix);
transfer_uint_array_data_const(skin.joints_per_vertex, joints_per_vertex);
transfer_uint_array_data_const(skin.weight_indices, weight_indices);
@@ -389,7 +406,7 @@ private:
for (int i = 0; i < weight.getValuesCount(); i++)
weights.push_back(get_float_value(weight, i));
- unit_converter->mat4_from_dae(bind_shape_matrix, skin->getBindShapeMatrix());
+ unit_converter->dae_matrix_to_mat4(bind_shape_matrix, skin->getBindShapeMatrix());
}
void free()
@@ -406,7 +423,7 @@ private:
void add_joint(const COLLADABU::Math::Matrix4& matrix)
{
JointData jd;
- unit_converter->mat4_from_dae(jd.inv_bind_mat, matrix);
+ unit_converter->dae_matrix_to_mat4(jd.inv_bind_mat, matrix);
joint_data.push_back(jd);
}
@@ -438,7 +455,7 @@ private:
std::vector<JointData>::iterator it;
for (it = joint_data.begin(); it != joint_data.end(); it++) {
if ((*it).joint_uid == uid) {
- Mat4CpyMat4(inv_bind_mat, (*it).inv_bind_mat);
+ copy_m4_m4(inv_bind_mat, (*it).inv_bind_mat);
return true;
}
}
@@ -480,7 +497,7 @@ private:
void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
TransformReader *tm)
{
- tm->decompose(bind_shape_matrix, ob->loc, ob->rot, ob->size);
+ tm->decompose(bind_shape_matrix, ob->loc, ob->rot, NULL, ob->size);
ob->parent = ob_arm;
ob->partype = PARSKEL;
@@ -491,8 +508,8 @@ private:
// we need armature matrix here... where do we get it from I wonder...
// root node/joint? or node with <instance_controller>?
float parmat[4][4];
- Mat4One(parmat);
- Mat4Invert(ob->parentinv, parmat);
+ unit_m4(parmat);
+ invert_m4_m4(ob->parentinv, parmat);
// create all vertex groups
std::vector<JointData>::iterator it;
@@ -535,7 +552,7 @@ private:
}
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
}
@@ -574,7 +591,7 @@ private:
if (skin.get_joint_inv_bind_matrix(joint_inv_bind_mat, node)) {
// get original world-space matrix
- Mat4Invert(mat, joint_inv_bind_mat);
+ invert_m4_m4(mat, joint_inv_bind_mat);
}
// create a bone even if there's no joint data for it (i.e. it has no influence)
else {
@@ -585,33 +602,33 @@ private:
// get world-space
if (parent)
- Mat4MulMat4(mat, obmat, parent_mat);
+ mul_m4_m4m4(mat, obmat, parent_mat);
else
- Mat4CpyMat4(mat, obmat);
+ copy_m4_m4(mat, obmat);
}
// TODO rename from Node "name" attrs later
- EditBone *bone = addEditBone(arm, (char*)get_joint_name(node));
+ EditBone *bone = ED_armature_edit_bone_add(arm, (char*)get_joint_name(node));
totbone++;
if (parent) bone->parent = parent;
// set head
- VecCopyf(bone->head, mat[3]);
+ copy_v3_v3(bone->head, mat[3]);
// set tail, don't set it to head because 0-length bones are not allowed
float vec[3] = {0.0f, 0.5f, 0.0f};
- VecAddf(bone->tail, bone->head, vec);
+ add_v3_v3v3(bone->tail, bone->head, vec);
// set parent tail
if (parent && totchild == 1) {
- VecCopyf(parent->tail, bone->head);
+ copy_v3_v3(parent->tail, bone->head);
// XXX increase this to prevent "very" small bones?
const float epsilon = 0.000001f;
// derive leaf bone length
- float length = VecLenf(parent->head, parent->tail);
+ float length = len_v3v3(parent->head, parent->tail);
if ((length < leaf_bone_length || totbone == 0) && length > epsilon) {
leaf_bone_length = length;
}
@@ -625,20 +642,20 @@ private:
#if 0
// and which row in mat is bone direction
float vec[3];
- VecSubf(vec, parent->tail, parent->head);
+ sub_v3_v3v3(vec, parent->tail, parent->head);
#ifdef COLLADA_DEBUG
- printvecf("tail - head", vec);
- printmatrix4("matrix", parent_mat);
+ print_v3("tail - head", vec);
+ print_m4("matrix", parent_mat);
#endif
for (int i = 0; i < 3; i++) {
#ifdef COLLADA_DEBUG
char *axis_names[] = {"X", "Y", "Z"};
- printf("%s-axis length is %f\n", axis_names[i], VecLength(parent_mat[i]));
+ printf("%s-axis length is %f\n", axis_names[i], len_v3(parent_mat[i]));
#endif
- float angle = VecAngle2(vec, parent_mat[i]);
+ float angle = angle_v2v2(vec, parent_mat[i]);
if (angle < min_angle) {
#ifdef COLLADA_DEBUG
- printvecf("picking", parent_mat[i]);
+ print_v3("picking", parent_mat[i]);
printf("^ %s axis of %s's matrix\n", axis_names[i], get_dae_name(node));
#endif
bone_direction_row = i;
@@ -665,7 +682,7 @@ private:
LeafBone leaf;
leaf.bone = bone;
- Mat4CpyMat4(leaf.mat, mat);
+ copy_m4_m4(leaf.mat, mat);
BLI_strncpy(leaf.name, bone->name, sizeof(leaf.name));
leaf_bones.push_back(leaf);
@@ -682,10 +699,10 @@ private:
// pointing up
float vec[3] = {0.0f, 0.0f, 1.0f};
- VecMulf(vec, leaf_bone_length);
+ mul_v3_fl(vec, leaf_bone_length);
- VecCopyf(leaf.bone->tail, leaf.bone->head);
- VecAddf(leaf.bone->tail, leaf.bone->head, vec);
+ copy_v3_v3(leaf.bone->tail, leaf.bone->head);
+ add_v3_v3v3(leaf.bone->tail, leaf.bone->head, vec);
}
}
@@ -707,6 +724,7 @@ private:
}
}
+#if 0
void set_euler_rotmode()
{
// just set rotmode = ROT_MODE_EUL on pose channel for each joint
@@ -737,6 +755,7 @@ private:
}
}
}
+#endif
Object *get_empty_for_leaves()
{
@@ -819,7 +838,7 @@ private:
set_leaf_bone_shapes(ob_arm);
- set_euler_rotmode();
+ // set_euler_rotmode();
}
@@ -988,9 +1007,10 @@ public:
void get_rna_path_for_joint(COLLADAFW::Node *node, char *joint_path, size_t count)
{
- BLI_snprintf(joint_path, count, "pose.pose_channels[\"%s\"]", get_joint_name(node));
+ BLI_snprintf(joint_path, count, "pose.bones[\"%s\"]", get_joint_name(node));
}
+#if 0
void fix_animation()
{
/* Change Euler rotation to Quaternion for bone animation */
@@ -1001,6 +1021,23 @@ public:
anim_importer->change_eul_to_quat(ob, ob->adt->action);
}
}
+#endif
+
+ // gives a world-space mat
+ bool get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint)
+ {
+ std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it;
+ bool found = false;
+ for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) {
+ SkinInfo& skin = it->second;
+ if ((found = skin.get_joint_inv_bind_matrix(m, joint))) {
+ invert_m4(m);
+ break;
+ }
+ }
+
+ return found;
+ }
};
class MeshImporter : public MeshImporterBase
@@ -1079,6 +1116,9 @@ private:
}
break;
+ case COLLADAFW::MeshVertexData::DATA_TYPE_UNKNOWN:
+ default:
+ fprintf(stderr, "MeshImporter.getUV(): unknown data type\n");
}
}
};
@@ -1095,6 +1135,8 @@ private:
#endif
}
+ // not used anymore, test_index_face from blenkernel is better
+#if 0
// change face indices order so that v4 is not 0
void rotate_face_indices(MFace *mface) {
mface->v4 = mface->v1;
@@ -1102,6 +1144,7 @@ private:
mface->v2 = mface->v3;
mface->v3 = 0;
}
+#endif
void set_face_uv(MTFace *mtface, UVDataWrapper &uvs, int uv_set_index,
COLLADAFW::IndexList& index_list, unsigned int *tris_indices)
@@ -1263,9 +1306,9 @@ private:
}
}
- int triangulate(int *indices, int vcount, MVert *verts, std::vector<unsigned int>& tri)
+ int triangulate_poly(unsigned int *indices, int totvert, MVert *verts, std::vector<unsigned int>& tri)
{
- ListBase dispbase = {NULL, NULL};
+ ListBase dispbase;
DispList *dl;
float *vert;
int i = 0;
@@ -1273,31 +1316,39 @@ private:
dispbase.first = dispbase.last = NULL;
dl = (DispList*)MEM_callocN(sizeof(DispList), "poly disp");
- BLI_addtail(&dispbase, dl);
- dl->type = DL_INDEX3;
- dl->nr = vcount;
+ dl->nr = totvert;
dl->type = DL_POLY;
dl->parts = 1;
- dl->col = 0;
- dl->verts = vert = (float*)MEM_callocN( sizeof(float) * 3 * vcount, "dl verts");
- dl->index = (int*)MEM_callocN(sizeof(int) * 3 * vcount, "dl index");
+ dl->verts = vert = (float*)MEM_callocN(totvert * 3 * sizeof(float), "poly verts");
+ dl->index = (int*)MEM_callocN(sizeof(int) * 3 * totvert, "dl index");
+
+ BLI_addtail(&dispbase, dl);
- for (i = 0; i < vcount; ++i, vert += 3) {
- MVert *mvert = &verts[indices[i]];
- vert[0] = mvert->co[0];
- vert[1] = mvert->co[1];
- vert[2] = mvert->co[2];
- //fprintf(stderr, "%.1f %.1f %.1f \n", mvert->co[0], mvert->co[1], mvert->co[2]);
+ for (i = 0; i < totvert; i++) {
+ copy_v3_v3(vert, verts[indices[i]].co);
+ vert += 3;
}
filldisplist(&dispbase, &dispbase);
- dl = (DispList*)dispbase.first;
- int tottri = dl->parts;
- int *index = dl->index;
-
- for (i = 0; i < tottri * 3; i++, index++) {
- tri.push_back(*index);
+ int tottri = 0;
+ dl= (DispList*)dispbase.first;
+
+ if (dl->type == DL_INDEX3) {
+ tottri = dl->parts;
+
+ int *index = dl->index;
+ for (i= 0; i < tottri; i++) {
+ int t[3]= {*index, *(index + 1), *(index + 2)};
+
+ std::sort(t, t + 3);
+
+ tri.push_back(t[0]);
+ tri.push_back(t[1]);
+ tri.push_back(t[2]);
+
+ index += 3;
+ }
}
freedisplist(&dispbase);
@@ -1305,10 +1356,11 @@ private:
return tottri;
}
- int count_new_tris(COLLADAFW::Mesh *mesh, Mesh *me, int new_tris)
+ int count_new_tris(COLLADAFW::Mesh *mesh, Mesh *me)
{
COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives();
- int i, j, k;
+ int i, j;
+ int tottri = 0;
for (i = 0; i < prim_arr.getCount(); i++) {
@@ -1324,31 +1376,20 @@ private:
COLLADAFW::Polygons::VertexCountArray& vcounta = mpvc->getGroupedVerticesVertexCountArray();
for (j = 0; j < prim_totface; j++) {
-
int vcount = vcounta[j];
if (vcount > 4) {
- // create triangles using PolyFill
- int *temp_indices = (int*)MEM_callocN(sizeof(int) * vcount, "face_index");
-
- for (k = 0; k < vcount; k++) {
- temp_indices[k] = indices[k];
- }
-
std::vector<unsigned int> tri;
- int totri = triangulate(temp_indices, vcount, me->mvert, tri);
- new_tris += totri - 1;
- MEM_freeN(temp_indices);
- indices += vcount;
- }
- else if (vcount == 4 || vcount == 3) {
- indices += vcount;
+ // tottri += triangulate_poly(indices, vcount, me->mvert, tri) - 1; // XXX why - 1?!
+ tottri += triangulate_poly(indices, vcount, me->mvert, tri);
}
+
+ indices += vcount;
}
}
}
- return new_tris;
+ return tottri;
}
// TODO: import uv set names
@@ -1420,6 +1461,8 @@ private:
MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, k);
set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, false);
}
+
+ test_index_face(mface, &me->fdata, face_index, 3);
index += 3;
mface++;
@@ -1438,12 +1481,6 @@ private:
if (vcount == 3 || vcount == 4) {
set_face_indices(mface, indices, vcount == 4);
- indices += vcount;
-
- // do the trick if needed
- if (vcount == 4 && mface->v4 == 0)
- rotate_face_indices(mface);
-
// set mtface for each uv set
// it is assumed that all primitives have equal number of UV sets
@@ -1453,56 +1490,50 @@ private:
MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, k);
set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, mface->v4 != 0);
}
+
+ test_index_face(mface, &me->fdata, face_index, vcount);
- index += mface->v4 ? 4 : 3;
mface++;
face_index++;
prim.totface++;
}
else {
- // create triangles using PolyFill
- int *temp_indices = (int*)MEM_callocN(sizeof(int) *vcount, "face_index");
- int *temp_uv_indices = (int*)MEM_callocN(sizeof(int) *vcount, "uv_index");
-
- for (k = 0; k < vcount; k++) {
- temp_indices[k] = indices[k];
- temp_uv_indices[k] = index + k;
- }
-
std::vector<unsigned int> tri;
- int totri = triangulate(temp_indices, vcount, me->mvert, tri);
+ triangulate_poly(indices, vcount, me->mvert, tri);
for (k = 0; k < tri.size() / 3; k++) {
- unsigned int tris_indices[3];
- unsigned int uv_indices[3];
- tris_indices[0] = temp_indices[tri[k * 3]];
- tris_indices[1] = temp_indices[tri[k * 3 + 1]];
- tris_indices[2] = temp_indices[tri[k * 3 + 2]];
- uv_indices[0] = temp_uv_indices[tri[k * 3]];
- uv_indices[1] = temp_uv_indices[tri[k * 3 + 1]];
- uv_indices[2] = temp_uv_indices[tri[k * 3 + 2]];
- //fprintf(stderr, "%u %u %u \n", tris_indices[0], tris_indices[1], tris_indices[2]);
- set_face_indices(mface, tris_indices, false);
+ int v = k * 3;
+ unsigned int uv_indices[3] = {
+ index + tri[v],
+ index + tri[v + 1],
+ index + tri[v + 2]
+ };
+ unsigned int tri_indices[3] = {
+ indices[tri[v]],
+ indices[tri[v + 1]],
+ indices[tri[v + 2]]
+ };
+
+ set_face_indices(mface, tri_indices, false);
for (int l = 0; l < totuvset; l++) {
// get mtface by face index and uv set index
MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, l);
set_face_uv(&mtface[face_index], uvs, l, *index_list_array[l], uv_indices);
-
}
+
+ test_index_face(mface, &me->fdata, face_index, 3);
mface++;
face_index++;
prim.totface++;
}
-
- index += vcount;
- indices += vcount;
- MEM_freeN(temp_indices);
- MEM_freeN(temp_uv_indices);
}
+
+ index += vcount;
+ indices += vcount;
}
}
@@ -1718,11 +1749,11 @@ public:
read_vertices(mesh, me);
- new_tris = count_new_tris(mesh, me, new_tris);
+ new_tris = count_new_tris(mesh, me);
read_faces(mesh, me, new_tris);
- // make_edges(me, 0);
+ make_edges(me, 0);
mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL);
@@ -1738,11 +1769,14 @@ private:
ArmatureImporter *armature_importer;
Scene *scene;
- std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > uid_fcurve_map;
+ std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > curve_map;
std::map<COLLADAFW::UniqueId, TransformReader::Animation> uid_animated_map;
- std::map<bActionGroup*, std::vector<FCurve*> > fcurves_actionGroup_map;
+ // std::map<bActionGroup*, std::vector<FCurve*> > fcurves_actionGroup_map;
+ std::map<COLLADAFW::UniqueId, const COLLADAFW::AnimationList*> animlist_map;
+ std::vector<FCurve*> unused_curves;
+ std::map<COLLADAFW::UniqueId, Object*> joint_objects;
- FCurve *create_fcurve(int array_index, char *rna_path)
+ FCurve *create_fcurve(int array_index, const char *rna_path)
{
FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve");
@@ -1765,6 +1799,105 @@ private:
calchandles_fcurve(fcu);
}
+ // create one or several fcurves depending on the number of parameters being animated
+ void animation_to_fcurves(COLLADAFW::AnimationCurve *curve)
+ {
+ COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues();
+ COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues();
+ // COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues();
+ // COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues();
+ float fps = (float)FPS;
+ size_t dim = curve->getOutDimension();
+ int i;
+
+ std::vector<FCurve*>& fcurves = curve_map[curve->getUniqueId()];
+
+ if (dim == 1) {
+ FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve");
+
+ fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED);
+ // fcu->rna_path = BLI_strdupn(path, strlen(path));
+ fcu->array_index = 0;
+ //fcu->totvert = curve->getKeyCount();
+
+ // create beztriple for each key
+ for (i = 0; i < curve->getKeyCount(); i++) {
+ BezTriple bez;
+ memset(&bez, 0, sizeof(BezTriple));
+
+ // intangent
+ // bez.vec[0][0] = get_float_value(intan, i + i) * fps;
+ // bez.vec[0][1] = get_float_value(intan, i + i + 1);
+
+ // input, output
+ bez.vec[1][0] = get_float_value(input, i) * fps;
+ bez.vec[1][1] = get_float_value(output, i);
+
+ // outtangent
+ // bez.vec[2][0] = get_float_value(outtan, i + i) * fps;
+ // bez.vec[2][1] = get_float_value(outtan, i + i + 1);
+
+ bez.ipo = U.ipo_new; /* use default interpolation mode here... */
+ bez.f1 = bez.f2 = bez.f3 = SELECT;
+ bez.h1 = bez.h2 = HD_AUTO;
+ insert_bezt_fcurve(fcu, &bez, 0);
+ }
+
+ calchandles_fcurve(fcu);
+
+ fcurves.push_back(fcu);
+ }
+ else if(dim == 3) {
+ for (i = 0; i < dim; i++ ) {
+ FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve");
+
+ fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED);
+ // fcu->rna_path = BLI_strdupn(path, strlen(path));
+ fcu->array_index = 0;
+ //fcu->totvert = curve->getKeyCount();
+
+ // create beztriple for each key
+ for (int j = 0; j < curve->getKeyCount(); j++) {
+ BezTriple bez;
+ memset(&bez, 0, sizeof(BezTriple));
+
+ // intangent
+ // bez.vec[0][0] = get_float_value(intan, j * 6 + i + i) * fps;
+ // bez.vec[0][1] = get_float_value(intan, j * 6 + i + i + 1);
+
+ // input, output
+ bez.vec[1][0] = get_float_value(input, j) * fps;
+ bez.vec[1][1] = get_float_value(output, j * 3 + i);
+
+ // outtangent
+ // bez.vec[2][0] = get_float_value(outtan, j * 6 + i + i) * fps;
+ // bez.vec[2][1] = get_float_value(outtan, j * 6 + i + i + 1);
+
+ bez.ipo = U.ipo_new; /* use default interpolation mode here... */
+ bez.f1 = bez.f2 = bez.f3 = SELECT;
+ bez.h1 = bez.h2 = HD_AUTO;
+ insert_bezt_fcurve(fcu, &bez, 0);
+ }
+
+ calchandles_fcurve(fcu);
+
+ fcurves.push_back(fcu);
+ }
+ }
+
+ for (std::vector<FCurve*>::iterator it = fcurves.begin(); it != fcurves.end(); it++)
+ unused_curves.push_back(*it);
+ }
+
+ void fcurve_deg_to_rad(FCurve *cu)
+ {
+ for (int i = 0; i < cu->totvert; i++) {
+ // TODO convert handles too
+ cu->bezt[i].vec[1][1] *= M_PI / 180.0f;
+ }
+ }
+
+#if 0
void make_fcurves_from_animation(COLLADAFW::AnimationCurve *curve,
COLLADAFW::FloatOrDoubleArray& input,
COLLADAFW::FloatOrDoubleArray& output,
@@ -1773,7 +1906,7 @@ private:
{
int i;
// char *path = "location";
- std::vector<FCurve*>& fcurves = uid_fcurve_map[curve->getUniqueId()];
+ std::vector<FCurve*>& fcurves = curve_map[curve->getUniqueId()];
if (dim == 1) {
// create fcurve
@@ -1842,49 +1975,36 @@ private:
}
}
}
+#endif
void add_fcurves_to_object(Object *ob, std::vector<FCurve*>& curves, char *rna_path, int array_index, Animation *animated)
{
- ID *id = &ob->id;
bAction *act;
- bActionGroup *grp = NULL;
- if (!ob->adt || !ob->adt->action) act = verify_adt_action(id, 1);
- else act = verify_adt_action(id, 0);
-
- if (!ob->adt || !ob->adt->action) {
- fprintf(stderr, "Cannot create anim data or action for this object. \n");
- return;
- }
+ if (!ob->adt || !ob->adt->action) act = verify_adt_action((ID*)&ob->id, 1);
+ else act = ob->adt->action;
- FCurve *fcu;
std::vector<FCurve*>::iterator it;
- int i = 0;
+ int i;
+#if 0
char *p = strstr(rna_path, "rotation_euler");
bool is_rotation = p && *(p + strlen("rotation_euler")) == '\0';
+
+ // convert degrees to radians for rotation
+ if (is_rotation)
+ fcurve_deg_to_rad(fcu);
+#endif
- for (it = curves.begin(); it != curves.end(); it++) {
- fcu = *it;
+ for (it = curves.begin(), i = 0; it != curves.end(); it++, i++) {
+ FCurve *fcu = *it;
fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path));
if (array_index == -1) fcu->array_index = i;
else fcu->array_index = array_index;
-
- // convert degrees to radians for rotation
- if (is_rotation) {
- for(int j = 0; j < fcu->totvert; j++) {
- float rot_intan = fcu->bezt[j].vec[0][1];
- float rot_output = fcu->bezt[j].vec[1][1];
- float rot_outtan = fcu->bezt[j].vec[2][1];
- fcu->bezt[j].vec[0][1] = rot_intan * M_PI / 180.0f;
- fcu->bezt[j].vec[1][1] = rot_output * M_PI / 180.0f;
- fcu->bezt[j].vec[2][1] = rot_outtan * M_PI / 180.0f;
- }
- }
-
+
if (ob->type == OB_ARMATURE) {
- bAction *act = ob->adt->action;
+ bActionGroup *grp = NULL;
const char *bone_name = get_joint_name(animated->node);
if (bone_name) {
@@ -1897,7 +2017,7 @@ private:
grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup");
grp->flag = AGRP_SELECTED;
- BLI_snprintf(grp->name, sizeof(grp->name), bone_name);
+ BLI_strncpy(grp->name, bone_name, sizeof(grp->name));
BLI_addtail(&act->groups, grp);
BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64);
@@ -1907,15 +2027,18 @@ private:
action_groups_add_channel(act, grp, fcu);
}
+#if 0
if (is_rotation) {
fcurves_actionGroup_map[grp].push_back(fcu);
}
+#endif
}
else {
BLI_addtail(&act->curves, fcu);
}
- i++;
+ // curve is used, so remove it from unused_curves
+ unused_curves.erase(std::remove(unused_curves.begin(), unused_curves.end(), fcu), unused_curves.end());
}
}
public:
@@ -1923,13 +2046,20 @@ public:
AnimationImporter(UnitConverter *conv, ArmatureImporter *arm, Scene *scene) :
TransformReader(conv), armature_importer(arm), scene(scene) { }
- bool write_animation( const COLLADAFW::Animation* anim )
+ ~AnimationImporter()
{
- float fps = (float)FPS;
+ // free unused FCurves
+ for (std::vector<FCurve*>::iterator it = unused_curves.begin(); it != unused_curves.end(); it++)
+ free_fcurve(*it);
+
+ if (unused_curves.size())
+ fprintf(stderr, "removed %u unused curves\n", unused_curves.size());
+ }
+ bool write_animation(const COLLADAFW::Animation* anim)
+ {
if (anim->getAnimationType() == COLLADAFW::Animation::ANIMATION_CURVE) {
COLLADAFW::AnimationCurve *curve = (COLLADAFW::AnimationCurve*)anim;
- size_t dim = curve->getOutDimension();
// XXX Don't know if it's necessary
// Should we check outPhysicalDimension?
@@ -1938,11 +2068,6 @@ public:
return true;
}
- COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues();
- COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues();
- COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues();
- COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues();
-
// a curve can have mixed interpolation type,
// in this case curve->getInterpolationTypes returns a list of interpolation types per key
COLLADAFW::AnimationCurve::InterpolationType interp = curve->getInterpolationType();
@@ -1950,17 +2075,11 @@ public:
if (interp != COLLADAFW::AnimationCurve::INTERPOLATION_MIXED) {
switch (interp) {
case COLLADAFW::AnimationCurve::INTERPOLATION_LINEAR:
- // support this
- make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps);
- break;
case COLLADAFW::AnimationCurve::INTERPOLATION_BEZIER:
- // and this
- make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps);
+ animation_to_fcurves(curve);
break;
- case COLLADAFW::AnimationCurve::INTERPOLATION_CARDINAL:
- case COLLADAFW::AnimationCurve::INTERPOLATION_HERMITE:
- case COLLADAFW::AnimationCurve::INTERPOLATION_BSPLINE:
- case COLLADAFW::AnimationCurve::INTERPOLATION_STEP:
+ default:
+ // TODO there're also CARDINAL, HERMITE, BSPLINE and STEP types
fprintf(stderr, "CARDINAL, HERMITE, BSPLINE and STEP anim interpolation types not supported yet.\n");
break;
}
@@ -1978,19 +2097,22 @@ public:
}
// called on post-process stage after writeVisualScenes
- bool write_animation_list( const COLLADAFW::AnimationList* animationList )
+ bool write_animation_list(const COLLADAFW::AnimationList* animlist)
{
- const COLLADAFW::UniqueId& anim_list_id = animationList->getUniqueId();
+ const COLLADAFW::UniqueId& animlist_id = animlist->getUniqueId();
+
+ animlist_map[animlist_id] = animlist;
- // possible in case we cannot interpret some transform
- if (uid_animated_map.find(anim_list_id) == uid_animated_map.end()) {
+#if 0
+ // should not happen
+ if (uid_animated_map.find(animlist_id) == uid_animated_map.end()) {
return true;
}
- // for bones rna_path is like: pose.pose_channels["bone-name"].rotation
+ // for bones rna_path is like: pose.bones["bone-name"].rotation
// what does this AnimationList animate?
- Animation& animated = uid_animated_map[anim_list_id];
+ Animation& animated = uid_animated_map[animlist_id];
Object *ob = animated.ob;
char rna_path[100];
@@ -2011,26 +2133,28 @@ public:
is_joint = true;
}
- const COLLADAFW::AnimationList::AnimationBindings& bindings = animationList->getAnimationBindings();
+ const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings();
switch (animated.tm->getTransformationType()) {
case COLLADAFW::Transformation::TRANSLATE:
+ case COLLADAFW::Transformation::SCALE:
{
+ bool loc = animated.tm->getTransformationType() == COLLADAFW::Transformation::TRANSLATE;
if (is_joint)
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.location", joint_path);
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, loc ? "location" : "scale");
else
- BLI_strncpy(rna_path, "location", sizeof(rna_path));
+ BLI_strncpy(rna_path, loc ? "location" : "scale", sizeof(rna_path));
for (int i = 0; i < bindings.getCount(); i++) {
const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i];
COLLADAFW::UniqueId anim_uid = binding.animation;
- if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) {
+ if (curve_map.find(anim_uid) == curve_map.end()) {
fprintf(stderr, "Cannot find FCurve by animation UID.\n");
continue;
}
- std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid];
+ std::vector<FCurve*>& fcurves = curve_map[anim_uid];
switch (binding.animationClass) {
case COLLADAFW::AnimationList::POSITION_X:
@@ -2046,8 +2170,8 @@ public:
add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated);
break;
default:
- fprintf(stderr, "AnimationClass %d is not supported for TRANSLATE transformation.\n",
- binding.animationClass);
+ fprintf(stderr, "AnimationClass %d is not supported for %s.\n",
+ binding.animationClass, loc ? "TRANSLATE" : "SCALE");
}
}
}
@@ -2066,12 +2190,12 @@ public:
const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i];
COLLADAFW::UniqueId anim_uid = binding.animation;
- if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) {
+ if (curve_map.find(anim_uid) == curve_map.end()) {
fprintf(stderr, "Cannot find FCurve by animation UID.\n");
continue;
}
- std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid];
+ std::vector<FCurve*>& fcurves = curve_map[anim_uid];
switch (binding.animationClass) {
case COLLADAFW::AnimationList::ANGLE:
@@ -2094,51 +2218,13 @@ public:
}
}
break;
- case COLLADAFW::Transformation::SCALE:
- {
- if (is_joint)
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.scale", joint_path);
- else
- BLI_strncpy(rna_path, "scale", sizeof(rna_path));
-
- // same as for TRANSLATE
- for (int i = 0; i < bindings.getCount(); i++) {
- const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i];
- COLLADAFW::UniqueId anim_uid = binding.animation;
-
- if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) {
- fprintf(stderr, "Cannot find FCurve by animation UID.\n");
- continue;
- }
-
- std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid];
-
- switch (binding.animationClass) {
- case COLLADAFW::AnimationList::POSITION_X:
- add_fcurves_to_object(ob, fcurves, rna_path, 0, &animated);
- break;
- case COLLADAFW::AnimationList::POSITION_Y:
- add_fcurves_to_object(ob, fcurves, rna_path, 1, &animated);
- break;
- case COLLADAFW::AnimationList::POSITION_Z:
- add_fcurves_to_object(ob, fcurves, rna_path, 2, &animated);
- break;
- case COLLADAFW::AnimationList::POSITION_XYZ:
- add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated);
- break;
- default:
- fprintf(stderr, "AnimationClass %d is not supported for SCALE transformation.\n",
- binding.animationClass);
- }
- }
- }
- break;
case COLLADAFW::Transformation::MATRIX:
case COLLADAFW::Transformation::SKEW:
case COLLADAFW::Transformation::LOOKAT:
fprintf(stderr, "Animation of MATRIX, SKEW and LOOKAT transformations is not supported yet.\n");
break;
}
+#endif
return true;
}
@@ -2148,9 +2234,10 @@ public:
float mat[4][4];
TransformReader::get_node_mat(mat, node, &uid_animated_map, ob);
if (ob)
- TransformReader::decompose(mat, ob->loc, ob->rot, ob->size);
+ TransformReader::decompose(mat, ob->loc, ob->rot, NULL, ob->size);
}
+#if 0
virtual void change_eul_to_quat(Object *ob, bAction *act)
{
bActionGroup *grp;
@@ -2173,8 +2260,8 @@ public:
char joint_path[100];
char rna_path[100];
- BLI_snprintf(joint_path, sizeof(joint_path), "pose.pose_channels[\"%s\"]", grp->name);
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path);
+ BLI_snprintf(joint_path, sizeof(joint_path), "pose.bones[\"%s\"]", grp->name);
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_quaternion", joint_path);
FCurve *quatcu[4] = {
create_fcurve(0, rna_path),
@@ -2183,6 +2270,12 @@ public:
create_fcurve(3, rna_path)
};
+ bPoseChannel *chan = get_pose_channel(ob->pose, grp->name);
+
+ float m4[4][4], irest[3][3];
+ invert_m4_m4(m4, chan->bone->arm_mat);
+ copy_m3_m4(irest, m4);
+
for (i = 0; i < 3; i++) {
FCurve *cu = eulcu[i];
@@ -2198,9 +2291,17 @@ public:
eulcu[2] ? evaluate_fcurve(eulcu[2], frame) : 0.0f
};
- float quat[4];
+ // make eul relative to bone rest pose
+ float rot[3][3], rel[3][3], quat[4];
+
+ /*eul_to_mat3(rot, eul);
- EulToQuat(eul, quat);
+ mul_m3_m3m3(rel, irest, rot);
+
+ mat3_to_quat(quat, rel);
+ */
+
+ eul_to_quat(quat, eul);
for (int k = 0; k < 4; k++)
create_bezt(quatcu[k], frame, quat[k]);
@@ -2216,7 +2317,7 @@ public:
free_fcurve(eulcu[i]);
}
- get_pose_channel(ob->pose, grp->name)->rotmode = ROT_MODE_QUAT;
+ chan->rotmode = ROT_MODE_QUAT;
for (i = 0; i < 4; i++)
action_groups_add_channel(act, grp, quatcu[i]);
@@ -2226,7 +2327,581 @@ public:
for (pchan = (bPoseChannel*)ob->pose->chanbase.first; pchan; pchan = pchan->next) {
pchan->rotmode = ROT_MODE_QUAT;
}
- }
+ }
+#endif
+
+ // prerequisites:
+ // animlist_map - map animlist id -> animlist
+ // curve_map - map anim id -> curve(s)
+#ifdef ARMATURE_TEST
+ Object *translate_animation(COLLADAFW::Node *node,
+ std::map<COLLADAFW::UniqueId, Object*>& object_map,
+ std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& root_map,
+ COLLADAFW::Transformation::TransformationType tm_type,
+ Object *par_job = NULL)
+#else
+ void translate_animation(COLLADAFW::Node *node,
+ std::map<COLLADAFW::UniqueId, Object*>& object_map,
+ std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& root_map,
+ COLLADAFW::Transformation::TransformationType tm_type)
+#endif
+ {
+ bool is_rotation = tm_type == COLLADAFW::Transformation::ROTATE;
+ bool is_joint = node->getType() == COLLADAFW::Node::JOINT;
+ COLLADAFW::Node *root = root_map.find(node->getUniqueId()) == root_map.end() ? node : root_map[node->getUniqueId()];
+ Object *ob = is_joint ? armature_importer->get_armature_for_joint(node) : object_map[node->getUniqueId()];
+ const char *bone_name = is_joint ? get_joint_name(node) : NULL;
+
+ if (!ob) {
+ fprintf(stderr, "cannot find Object for Node with id=\"%s\"\n", node->getOriginalId().c_str());
+#ifdef ARMATURE_TEST
+ return NULL;
+#else
+ return;
+#endif
+ }
+
+ // frames at which to sample
+ std::vector<float> frames;
+
+ // for each <rotate>, <translate>, etc. there is a separate Transformation
+ const COLLADAFW::TransformationPointerArray& tms = node->getTransformations();
+
+ std::vector<FCurve*> old_curves;
+
+ int i;
+
+ // find frames at which to sample plus convert all keys to radians
+ for (i = 0; i < tms.getCount(); i++) {
+ COLLADAFW::Transformation *tm = tms[i];
+ COLLADAFW::Transformation::TransformationType type = tm->getTransformationType();
+
+ if (type == tm_type) {
+ const COLLADAFW::UniqueId& listid = tm->getAnimationList();
+
+ if (animlist_map.find(listid) != animlist_map.end()) {
+ const COLLADAFW::AnimationList *animlist = animlist_map[listid];
+ const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings();
+
+ if (bindings.getCount()) {
+ for (int j = 0; j < bindings.getCount(); j++) {
+ std::vector<FCurve*>& curves = curve_map[bindings[j].animation];
+ bool xyz = ((type == COLLADAFW::Transformation::TRANSLATE || type == COLLADAFW::Transformation::SCALE) && bindings[j].animationClass == COLLADAFW::AnimationList::POSITION_XYZ);
+
+ if ((!xyz && curves.size() == 1) || (xyz && curves.size() == 3)) {
+ std::vector<FCurve*>::iterator iter;
+
+ for (iter = curves.begin(); iter != curves.end(); iter++) {
+ FCurve *fcu = *iter;
+
+ if (is_rotation)
+ fcurve_deg_to_rad(fcu);
+
+ for (int k = 0; k < fcu->totvert; k++) {
+ float fra = fcu->bezt[k].vec[1][0];
+ if (std::find(frames.begin(), frames.end(), fra) == frames.end())
+ frames.push_back(fra);
+ }
+ }
+ }
+ else {
+ fprintf(stderr, "expected 1 or 3 curves, got %u\n", curves.size());
+ }
+
+ for (std::vector<FCurve*>::iterator it = curves.begin(); it != curves.end(); it++)
+ old_curves.push_back(*it);
+ }
+ }
+ }
+ }
+ }
+
+ sort(frames.begin(), frames.end());
+
+ float irest_dae[4][4];
+ float rest[4][4], irest[4][4];
+
+ if (is_joint) {
+ if (is_joint)
+ get_joint_rest_mat(irest_dae, root, node);
+ else
+ evaluate_transform_at_frame(irest_dae, node, 0.0f);
+ invert_m4(irest_dae);
+
+ Bone *bone = get_named_bone((bArmature*)ob->data, bone_name);
+ if (!bone) {
+ fprintf(stderr, "cannot find bone \"%s\"", bone_name);
+#ifdef ARMATURE_TEST
+ return NULL;
+#else
+ return;
+#endif
+ }
+
+ unit_m4(rest);
+ copy_m4_m4(rest, bone->arm_mat);
+ invert_m4_m4(irest, rest);
+ }
+
+ char rna_path[200];
+
+#ifdef ARMATURE_TEST
+ Object *job = get_joint_object(root, node, par_job);
+ FCurve *job_curves[4];
+#endif
+
+ if (frames.size() == 0) {
+#ifdef ARMATURE_TEST
+ return job;
+#else
+ return;
+#endif
+ }
+
+ const char *tm_str = NULL;
+ switch (tm_type) {
+ case COLLADAFW::Transformation::ROTATE:
+ tm_str = "rotation_quaternion";
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ tm_str = "scale";
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ tm_str = "location";
+ break;
+ default:
+#ifdef ARMATURE_TEST
+ return job;
+#else
+ return;
+#endif
+ }
+
+ if (is_joint) {
+ char joint_path[200];
+ armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path));
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str);
+ }
+ else {
+ strcpy(rna_path, tm_str);
+ }
+
+ // new curves
+ FCurve *newcu[4];
+ int totcu = is_rotation ? 4 : 3;
+
+ for (i = 0; i < totcu; i++) {
+ newcu[i] = create_fcurve(i, rna_path);
+#ifdef ARMATURE_TEST
+ job_curves[i] = create_fcurve(i, tm_str);
+#endif
+ }
+
+ std::vector<float>::iterator it;
+
+ // sample values at each frame
+ for (it = frames.begin(); it != frames.end(); it++) {
+ float fra = *it;
+
+ float mat[4][4];
+
+ unit_m4(mat);
+
+ // calc object-space mat
+ evaluate_transform_at_frame(mat, node, fra);
+
+ // for joints, we need a special matrix
+ if (is_joint) {
+ // special matrix: iR * M * iR_dae * R
+ // where R, iR are bone rest and inverse rest mats in world space (Blender bones),
+ // iR_dae is joint inverse rest matrix (DAE) and M is an evaluated joint world-space matrix (DAE)
+ float temp[4][4], par[4][4];
+
+ // calc M
+ calc_joint_parent_mat_rest(par, NULL, root, node);
+ mul_m4_m4m4(temp, mat, par);
+
+ // evaluate_joint_world_transform_at_frame(temp, NULL, , node, fra);
+
+ // calc special matrix
+ mul_serie_m4(mat, irest, temp, irest_dae, rest, NULL, NULL, NULL, NULL);
+ }
+
+ float val[4];
+
+ switch (tm_type) {
+ case COLLADAFW::Transformation::ROTATE:
+ mat4_to_quat(val, mat);
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ mat4_to_size(val, mat);
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ copy_v3_v3(val, mat[3]);
+ break;
+ default:
+ break;
+ }
+
+ // add 4 or 3 keys
+ for (i = 0; i < totcu; i++) {
+ add_bezt(newcu[i], fra, val[i]);
+ }
+
+#ifdef ARMATURE_TEST
+ if (is_joint) {
+ evaluate_transform_at_frame(mat, node, fra);
+
+ switch (tm_type) {
+ case COLLADAFW::Transformation::ROTATE:
+ mat4_to_quat(val, mat);
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ mat4_to_size(val, mat);
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ copy_v3_v3(val, mat[3]);
+ break;
+ default:
+ break;
+ }
+
+ for (i = 0; i < totcu; i++)
+ add_bezt(job_curves[i], fra, val[i]);
+ }
+#endif
+ }
+
+ verify_adt_action((ID*)&ob->id, 1);
+
+ ListBase *curves = &ob->adt->action->curves;
+ // no longer needed
+#if 0
+ // remove old curves
+ for (std::vector<FCurve*>::iterator it = old_curves.begin(); it != old_curves.end(); it++) {
+ if (is_joint)
+ action_groups_remove_channel(ob->adt->action, *it);
+ else
+ BLI_remlink(curves, *it);
+
+ // std::remove(unused_curves.begin(), unused_curves.end(), *it);
+ // free_fcurve(*it);
+ }
+#endif
+
+ // add curves
+ for (i = 0; i < totcu; i++) {
+ if (is_joint)
+ add_bone_fcurve(ob, node, newcu[i]);
+ else
+ BLI_addtail(curves, newcu[i]);
+
+#ifdef ARMATURE_TEST
+ if (is_joint)
+ BLI_addtail(&job->adt->action->curves, job_curves[i]);
+#endif
+ }
+
+ if (is_rotation) {
+ if (is_joint) {
+ bPoseChannel *chan = get_pose_channel(ob->pose, bone_name);
+ chan->rotmode = ROT_MODE_QUAT;
+ }
+ else {
+ ob->rotmode = ROT_MODE_QUAT;
+ }
+ }
+
+#ifdef ARMATURE_TEST
+ return job;
+#endif
+ }
+
+ // internal, better make it private
+ // warning: evaluates only rotation
+ // prerequisites: animlist_map, curve_map
+ void evaluate_transform_at_frame(float mat[4][4], COLLADAFW::Node *node, float fra)
+ {
+ const COLLADAFW::TransformationPointerArray& tms = node->getTransformations();
+
+ unit_m4(mat);
+
+ for (int i = 0; i < tms.getCount(); i++) {
+ COLLADAFW::Transformation *tm = tms[i];
+ COLLADAFW::Transformation::TransformationType type = tm->getTransformationType();
+ float m[4][4];
+
+ unit_m4(m);
+
+ if (!evaluate_animation(tm, m, fra)) {
+ switch (type) {
+ case COLLADAFW::Transformation::ROTATE:
+ dae_rotate_to_mat4(tm, m);
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ dae_translate_to_mat4(tm, m);
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ dae_scale_to_mat4(tm, m);
+ break;
+ case COLLADAFW::Transformation::MATRIX:
+ dae_matrix_to_mat4(tm, m);
+ break;
+ default:
+ fprintf(stderr, "unsupported transformation type %d\n", type);
+ }
+ }
+
+ float temp[4][4];
+ copy_m4_m4(temp, mat);
+
+ mul_m4_m4m4(mat, m, temp);
+ }
+ }
+
+ bool evaluate_animation(COLLADAFW::Transformation *tm, float mat[4][4], float fra)
+ {
+ const COLLADAFW::UniqueId& listid = tm->getAnimationList();
+
+ if (animlist_map.find(listid) != animlist_map.end()) {
+ const COLLADAFW::AnimationList *animlist = animlist_map[listid];
+ const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings();
+
+ if (bindings.getCount()) {
+ for (int j = 0; j < bindings.getCount(); j++) {
+ std::vector<FCurve*>& curves = curve_map[bindings[j].animation];
+ COLLADAFW::AnimationList::AnimationClass animclass = bindings[j].animationClass;
+ COLLADAFW::Transformation::TransformationType type = tm->getTransformationType();
+ bool xyz = ((type == COLLADAFW::Transformation::TRANSLATE || type == COLLADAFW::Transformation::SCALE) && bindings[j].animationClass == COLLADAFW::AnimationList::POSITION_XYZ);
+
+ if (type == COLLADAFW::Transformation::ROTATE) {
+ if (curves.size() != 1) {
+ fprintf(stderr, "expected 1 curve, got %u\n", curves.size());
+ }
+ else {
+ if (animclass == COLLADAFW::AnimationList::ANGLE) {
+ COLLADABU::Math::Vector3& axis = ((COLLADAFW::Rotate*)tm)->getRotationAxis();
+ float ax[3] = {axis[0], axis[1], axis[2]};
+ float angle = evaluate_fcurve(curves[0], fra);
+ axis_angle_to_mat4(mat, ax, angle);
+
+ return true;
+ }
+ else {
+ // TODO support other animclasses
+ fprintf(stderr, "<rotate> animclass %d is not supported yet\n", bindings[j].animationClass);
+ }
+ }
+ }
+ else if (type == COLLADAFW::Transformation::SCALE || type == COLLADAFW::Transformation::TRANSLATE) {
+ if ((!xyz && curves.size() == 1) || (xyz && curves.size() == 3)) {
+ bool animated = true;
+ bool scale = (type == COLLADAFW::Transformation::SCALE);
+
+ float vec[3] = {0.0f, 0.0f, 0.0f};
+ if (scale)
+ vec[0] = vec[1] = vec[2] = 1.0f;
+
+ switch (animclass) {
+ case COLLADAFW::AnimationList::POSITION_X:
+ vec[0] = evaluate_fcurve(curves[0], fra);
+ break;
+ case COLLADAFW::AnimationList::POSITION_Y:
+ vec[1] = evaluate_fcurve(curves[0], fra);
+ break;
+ case COLLADAFW::AnimationList::POSITION_Z:
+ vec[2] = evaluate_fcurve(curves[0], fra);
+ break;
+ case COLLADAFW::AnimationList::POSITION_XYZ:
+ vec[0] = evaluate_fcurve(curves[0], fra);
+ vec[1] = evaluate_fcurve(curves[1], fra);
+ vec[2] = evaluate_fcurve(curves[2], fra);
+ break;
+ default:
+ fprintf(stderr, "<%s> animclass %d is not supported yet\n", scale ? "scale" : "translate", animclass);
+ animated = false;
+ break;
+ }
+
+ if (animated) {
+ if (scale)
+ size_to_mat4(mat, vec);
+ else
+ copy_v3_v3(mat[3], vec);
+ }
+
+ return animated;
+ }
+ else {
+ fprintf(stderr, "expected 1 or 3 curves, got %u, animclass is %d\n", curves.size(), animclass);
+ }
+ }
+ else {
+ // not very useful for user
+ fprintf(stderr, "animation of transformation %d is not supported yet\n", type);
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ // gives a world-space mat of joint at rest position
+ void get_joint_rest_mat(float mat[4][4], COLLADAFW::Node *root, COLLADAFW::Node *node)
+ {
+ // if bind mat is not available,
+ // use "current" node transform, i.e. all those tms listed inside <node>
+ if (!armature_importer->get_joint_bind_mat(mat, node)) {
+ float par[4][4], m[4][4];
+
+ calc_joint_parent_mat_rest(par, NULL, root, node);
+ get_node_mat(m, node, NULL, NULL);
+ mul_m4_m4m4(mat, m, par);
+ }
+ }
+
+ // gives a world-space mat, end's mat not included
+ bool calc_joint_parent_mat_rest(float mat[4][4], float par[4][4], COLLADAFW::Node *node, COLLADAFW::Node *end)
+ {
+ float m[4][4];
+
+ if (node == end) {
+ par ? copy_m4_m4(mat, par) : unit_m4(mat);
+ return true;
+ }
+
+ // use bind matrix if available or calc "current" world mat
+ if (!armature_importer->get_joint_bind_mat(m, node)) {
+ float temp[4][4];
+ get_node_mat(temp, node, NULL, NULL);
+ mul_m4_m4m4(m, temp, par);
+ }
+
+ COLLADAFW::NodePointerArray& children = node->getChildNodes();
+ for (int i = 0; i < children.getCount(); i++) {
+ if (calc_joint_parent_mat_rest(mat, m, children[i], end))
+ return true;
+ }
+
+ return false;
+ }
+
+#ifdef ARMATURE_TEST
+ Object *get_joint_object(COLLADAFW::Node *root, COLLADAFW::Node *node, Object *par_job)
+ {
+ if (joint_objects.find(node->getUniqueId()) == joint_objects.end()) {
+ Object *job = add_object(scene, OB_EMPTY);
+
+ rename_id((ID*)&job->id, (char*)get_joint_name(node));
+
+ job->lay = object_in_scene(job, scene)->lay = 2;
+
+ mul_v3_fl(job->size, 0.5f);
+ job->recalc |= OB_RECALC_OB;
+
+ verify_adt_action((ID*)&job->id, 1);
+
+ job->rotmode = ROT_MODE_QUAT;
+
+ float mat[4][4];
+ get_joint_rest_mat(mat, root, node);
+
+ if (par_job) {
+ float temp[4][4], ipar[4][4];
+ invert_m4_m4(ipar, par_job->obmat);
+ copy_m4_m4(temp, mat);
+ mul_m4_m4m4(mat, temp, ipar);
+ }
+
+ TransformBase::decompose(mat, job->loc, NULL, job->quat, job->size);
+
+ if (par_job) {
+ job->parent = par_job;
+
+ par_job->recalc |= OB_RECALC_OB;
+ job->parsubstr[0] = 0;
+ }
+
+ where_is_object(scene, job);
+
+ // after parenting and layer change
+ DAG_scene_sort(scene);
+
+ joint_objects[node->getUniqueId()] = job;
+ }
+
+ return joint_objects[node->getUniqueId()];
+ }
+#endif
+
+#if 0
+ // recursively evaluates joint tree until end is found, mat then is world-space matrix of end
+ // mat must be identity on enter, node must be root
+ bool evaluate_joint_world_transform_at_frame(float mat[4][4], float par[4][4], COLLADAFW::Node *node, COLLADAFW::Node *end, float fra)
+ {
+ float m[4][4];
+ if (par) {
+ float temp[4][4];
+ evaluate_transform_at_frame(temp, node, node == end ? fra : 0.0f);
+ mul_m4_m4m4(m, temp, par);
+ }
+ else {
+ evaluate_transform_at_frame(m, node, node == end ? fra : 0.0f);
+ }
+
+ if (node == end) {
+ copy_m4_m4(mat, m);
+ return true;
+ }
+ else {
+ COLLADAFW::NodePointerArray& children = node->getChildNodes();
+ for (int i = 0; i < children.getCount(); i++) {
+ if (evaluate_joint_world_transform_at_frame(mat, m, children[i], end, fra))
+ return true;
+ }
+ }
+
+ return false;
+ }
+#endif
+
+ void add_bone_fcurve(Object *ob, COLLADAFW::Node *node, FCurve *fcu)
+ {
+ const char *bone_name = get_joint_name(node);
+ bAction *act = ob->adt->action;
+
+ /* try to find group */
+ bActionGroup *grp = action_groups_find_named(act, bone_name);
+
+ /* no matching groups, so add one */
+ if (grp == NULL) {
+ /* Add a new group, and make it active */
+ grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup");
+
+ grp->flag = AGRP_SELECTED;
+ BLI_strncpy(grp->name, bone_name, sizeof(grp->name));
+
+ BLI_addtail(&act->groups, grp);
+ BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64);
+ }
+
+ /* add F-Curve to group */
+ action_groups_add_channel(act, grp, fcu);
+ }
+
+ void add_bezt(FCurve *fcu, float fra, float value)
+ {
+ BezTriple bez;
+ memset(&bez, 0, sizeof(BezTriple));
+ bez.vec[1][0] = fra;
+ bez.vec[1][1] = value;
+ bez.ipo = U.ipo_new; /* use default interpolation mode here... */
+ bez.f1 = bez.f2 = bez.f3 = SELECT;
+ bez.h1 = bez.h2 = HD_AUTO;
+ insert_bezt_fcurve(fcu, &bez, 0);
+ calchandles_fcurve(fcu);
+ }
};
/*
@@ -2256,6 +2931,11 @@ private:
std::map<COLLADAFW::UniqueId, Camera*> uid_camera_map;
std::map<COLLADAFW::UniqueId, Lamp*> uid_lamp_map;
std::map<Material*, TexIndexTextureArrayMap> material_texture_mapping_map;
+ std::map<COLLADAFW::UniqueId, Object*> object_map;
+ std::vector<const COLLADAFW::VisualScene*> vscenes;
+
+ std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> root_map; // find root joint by child joint uid, for bone tree evaluation during resampling
+
// animation
// std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > uid_fcurve_map;
// Nodes don't share AnimationLists (Arystan)
@@ -2264,7 +2944,7 @@ private:
public:
/** Constructor. */
- Writer(bContext *C, const char *filename) : mContext(C), mFilename(filename),
+ Writer(bContext *C, const char *filename) : mFilename(filename), mContext(C),
armature_importer(&unit_converter, &mesh_importer, &anim_importer, CTX_data_scene(C)),
mesh_importer(&armature_importer, CTX_data_scene(C)),
anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C)) {}
@@ -2306,8 +2986,51 @@ public:
/** This method is called after the last write* method. No other methods will be called after this.*/
virtual void finish()
{
+#if 0
armature_importer.fix_animation();
+#endif
+
+ for (std::vector<const COLLADAFW::VisualScene*>::iterator it = vscenes.begin(); it != vscenes.end(); it++) {
+ const COLLADAFW::NodePointerArray& roots = (*it)->getRootNodes();
+
+ for (int i = 0; i < roots.getCount(); i++)
+ translate_anim_recursive(roots[i]);
+ }
+
+ }
+
+
+#ifdef ARMATURE_TEST
+ void translate_anim_recursive(COLLADAFW::Node *node, COLLADAFW::Node *par = NULL, Object *parob = NULL)
+ {
+ if (par && par->getType() == COLLADAFW::Node::JOINT) {
+ // par is root if there's no corresp. key in root_map
+ if (root_map.find(par->getUniqueId()) == root_map.end())
+ root_map[node->getUniqueId()] = par;
+ else
+ root_map[node->getUniqueId()] = root_map[par->getUniqueId()];
+ }
+
+ COLLADAFW::Transformation::TransformationType types[] = {
+ COLLADAFW::Transformation::ROTATE,
+ COLLADAFW::Transformation::SCALE,
+ COLLADAFW::Transformation::TRANSLATE
+ };
+
+ int i;
+ Object *ob;
+
+ for (i = 0; i < 3; i++)
+ ob = anim_importer.translate_animation(node, object_map, root_map, types[i]);
+
+ COLLADAFW::NodePointerArray &children = node->getChildNodes();
+ for (int i = 0; i < children.getCount(); i++) {
+ translate_anim_recursive(children[i], node, ob);
+ }
}
+#else
+
+#endif
/** When this method is called, the writer must write the global document asset.
@return The writer should return true, if writing succeeded, false otherwise.*/
@@ -2407,11 +3130,11 @@ public:
// check if object is not NULL
if (!ob) return;
+
+ object_map[node->getUniqueId()] = ob;
// if par was given make this object child of the previous
if (par && ob) {
- Object workob;
-
ob->parent = par;
// doing what 'set parent' operator does
@@ -2435,7 +3158,7 @@ public:
@return The writer should return true, if writing succeeded, false otherwise.*/
virtual bool writeVisualScene ( const COLLADAFW::VisualScene* visualScene )
{
- // This method is guaranteed to be called _after_ writeGeometry, writeMaterial, etc.
+ // this method called on post process after writeGeometry, writeMaterial, etc.
// for each <node> in <visual_scene>:
// create an Object
@@ -2445,15 +3168,15 @@ public:
// writeGeometry because <geometry> does not reference <node>,
// we link Objects with Meshes here
+ vscenes.push_back(visualScene);
+
// TODO: create a new scene except the selected <visual_scene> - use current blender
// scene for it
Scene *sce = CTX_data_scene(mContext);
+ const COLLADAFW::NodePointerArray& roots = visualScene->getRootNodes();
- for (int i = 0; i < visualScene->getRootNodes().getCount(); i++) {
- COLLADAFW::Node *node = visualScene->getRootNodes()[i];
- const COLLADAFW::Node::NodeType& type = node->getType();
-
- write_node(node, NULL, sce, NULL);
+ for (int i = 0; i < roots.getCount(); i++) {
+ write_node(roots[i], NULL, sce, NULL);
}
armature_importer.make_armatures(mContext);
@@ -2505,7 +3228,7 @@ public:
ma->mtex[i] = add_mtex();
ma->mtex[i]->texco = TEXCO_UV;
- ma->mtex[i]->tex = add_texture("texture");
+ ma->mtex[i]->tex = add_texture("Texture");
ma->mtex[i]->tex->type = TEX_IMAGE;
ma->mtex[i]->tex->imaflag &= ~TEX_USEALPHA;
ma->mtex[i]->tex->ima = uid_image_map[ima_uid];
@@ -2810,12 +3533,14 @@ public:
// this function is called only for animations that pass COLLADAFW::validate
virtual bool writeAnimation( const COLLADAFW::Animation* anim )
{
+ // return true;
return anim_importer.write_animation(anim);
}
// called on post-process stage after writeVisualScenes
virtual bool writeAnimationList( const COLLADAFW::AnimationList* animationList )
{
+ // return true;
return anim_importer.write_animation_list(animationList);
}
diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h
index c0d74505f72..278cd37ac66 100644
--- a/source/blender/collada/collada_internal.h
+++ b/source/blender/collada/collada_internal.h
@@ -26,7 +26,7 @@ public:
// TODO need also for angle conversion, time conversion...
- void mat4_from_dae(float out[][4], const COLLADABU::Math::Matrix4& in)
+ void dae_matrix_to_mat4(float out[][4], const COLLADABU::Math::Matrix4& in)
{
// in DAE, matrices use columns vectors, (see comments in COLLADABUMathMatrix4.h)
// so here, to make a blender matrix, we swap columns and rows
@@ -39,8 +39,8 @@ public:
void mat4_to_dae(float out[][4], float in[][4])
{
- Mat4CpyMat4(out, in);
- Mat4Transp(out);
+ copy_m4_m4(out, in);
+ transpose_m4(out);
}
void mat4_to_dae_double(double out[][4], float in[][4])
@@ -58,11 +58,14 @@ public:
class TransformBase
{
public:
- void decompose(float mat[][4], float *loc, float *rot, float *size)
+ void decompose(float mat[][4], float *loc, float eul[3], float quat[4], float *size)
{
- Mat4ToSize(mat, size);
- Mat4ToEul(mat, rot);
- VecCopyf(loc, mat[3]);
+ mat4_to_size(size, mat);
+ if (eul)
+ mat4_to_eul(eul, mat);
+ if (quat)
+ mat4_to_quat(quat, mat);
+ copy_v3_v3(loc, mat[3]);
}
};
diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt
index bba441fd2a7..71623093bfc 100644
--- a/source/blender/editors/CMakeLists.txt
+++ b/source/blender/editors/CMakeLists.txt
@@ -44,6 +44,8 @@ SET(INC ../windowmanager
../ikplugin
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
IF(WITH_GAMEENGINE)
ADD_DEFINITIONS(-DGAMEBLENDER)
ENDIF(WITH_GAMEENGINE)
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c
index e8bfbf7fe52..24a8fb445c7 100644
--- a/source/blender/editors/animation/anim_channels_defines.c
+++ b/source/blender/editors/animation/anim_channels_defines.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_listBase.h"
#include "DNA_anim_types.h"
@@ -55,6 +55,7 @@
#include "DNA_lamp_types.h"
#include "DNA_material_types.h"
#include "DNA_meta_types.h"
+#include "DNA_node_types.h"
#include "DNA_userdef_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_windowmanager_types.h"
@@ -1731,10 +1732,83 @@ static bAnimChannelType ACF_DSARM=
acf_dsarm_icon, /* icon */
acf_generic_dataexpand_setting_valid, /* has setting */
- acf_dsarm_setting_flag, /* flag for setting */
+ acf_dsarm_setting_flag, /* flag for setting */
acf_dsarm_setting_ptr /* pointer for setting */
};
+/* NodeTree Expander ------------------------------------------- */
+
+// TODO: just get this from RNA?
+static int acf_dsntree_icon(bAnimListElem *ale)
+{
+ return ICON_NODETREE;
+}
+
+/* get the appropriate flag(s) for the setting when it is valid */
+static int acf_dsntree_setting_flag(int setting, short *neg)
+{
+ /* clear extra return data first */
+ *neg= 0;
+
+ switch (setting) {
+ case ACHANNEL_SETTING_EXPAND: /* expanded */
+ return NTREE_DS_EXPAND;
+
+ case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
+ return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
+
+ case ACHANNEL_SETTING_SELECT: /* selected */
+ return ADT_UI_SELECTED;
+
+ default: /* unsupported */
+ return 0;
+ }
+}
+
+/* get pointer to the setting */
+static void *acf_dsntree_setting_ptr(bAnimListElem *ale, int setting, short *type)
+{
+ bNodeTree *ntree= (bNodeTree *)ale->data;
+
+ /* clear extra return data first */
+ *type= 0;
+
+ switch (setting) {
+ case ACHANNEL_SETTING_EXPAND: /* expanded */
+ GET_ACF_FLAG_PTR(ntree->flag);
+
+ case ACHANNEL_SETTING_SELECT: /* selected */
+ case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor only) */
+ if (ntree->adt)
+ GET_ACF_FLAG_PTR(ntree->adt->flag)
+ else
+ return NULL;
+
+ default: /* unsupported */
+ return NULL;
+ }
+}
+
+/* node tree expander type define */
+static bAnimChannelType ACF_DSNTREE=
+{
+ acf_generic_dataexpand_backdrop,/* backdrop */
+ acf_generic_indention_1, /* indent level */ // XXX this only works for compositing
+ acf_generic_basic_offset, /* offset */
+
+ acf_generic_idblock_name, /* name */
+ acf_dsntree_icon, /* icon */
+
+ acf_generic_dataexpand_setting_valid, /* has setting */
+ acf_dsntree_setting_flag, /* flag for setting */
+ acf_dsntree_setting_ptr /* pointer for setting */
+};
+
/* ShapeKey Entry ------------------------------------------- */
@@ -1867,7 +1941,7 @@ static void dummy_olddraw_gpencil ()
strcpy(treetype, "Material");
sprintf(name, "Nodes:%s", treetype);
- special= ICON_NODE;
+ special= ICON_NODETREE;
}
break;
case SPACE_SEQ:
@@ -1982,6 +2056,7 @@ void ANIM_init_channel_typeinfo_data (void)
animchannelTypeInfo[type++]= &ACF_DSCUR; /* Curve Channel */
animchannelTypeInfo[type++]= &ACF_DSSKEY; /* ShapeKey Channel */
animchannelTypeInfo[type++]= &ACF_DSWOR; /* World Channel */
+ animchannelTypeInfo[type++]= &ACF_DSNTREE; /* NodeTree Channel */
animchannelTypeInfo[type++]= &ACF_DSPART; /* Particle Channel */
animchannelTypeInfo[type++]= &ACF_DSMBALL; /* MetaBall Channel */
animchannelTypeInfo[type++]= &ACF_DSARM; /* Armature Channel */
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c
index 1e5f1eac867..01ab7bd530c 100644
--- a/source/blender/editors/animation/anim_channels_edit.c
+++ b/source/blender/editors/animation/anim_channels_edit.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_listBase.h"
#include "DNA_anim_types.h"
@@ -854,13 +854,16 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op)
* - Action
* - Drivers
* - TODO... some others?
+ *
+ * note: this isn't well tested, we could also try remove
+ * from all lists just to be safe - campbell
*/
if (fcu->grp)
action_groups_remove_channel(adt->action, fcu);
- else if (adt->action)
- BLI_remlink(&adt->action->curves, fcu);
else if (ac.datatype == ANIMCONT_DRIVERS)
BLI_remlink(&adt->drivers, fcu);
+ else if (adt->action)
+ BLI_remlink(&adt->action->curves, fcu);
/* free the F-Curve itself */
free_fcurve(fcu);
diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c
index 9d39911548b..7a96c3b32a3 100644
--- a/source/blender/editors/animation/anim_deps.c
+++ b/source/blender/editors/animation/anim_deps.c
@@ -55,20 +55,6 @@
#include "WM_api.h"
#include "WM_types.h"
-/* ***************** depsgraph calls and anim updates ************* */
-/* ***************** only these can be called from editors ******** */
-
-void ED_anim_dag_flush_update(const bContext *C)
-{
- DAG_ids_flush_update(0);
-}
-
-/* flushes changes from object to all relations in scene */
-void ED_anim_object_flush_update(const bContext *C, Object *ob)
-{
- DAG_id_update_flags(&ob->id);
-}
-
/* **************************** pose <-> action syncing ******************************** */
/* Summary of what needs to be synced between poses and actions:
* 1) Flags
diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c
index aa581a7d15a..3afe2bfad57 100644
--- a/source/blender/editors/animation/anim_draw.c
+++ b/source/blender/editors/animation/anim_draw.c
@@ -145,12 +145,12 @@ static void draw_cfra_number (Scene *scene, View2D *v2d, float cfra, short time)
y= 18;
/* draw green box around/behind text */
- UI_ThemeColorShadeAlpha(TH_CFRAME, 0, -100);
+ UI_ThemeColorShade(TH_CFRAME, 0);
glRectf(x, y, x+slen, y+15);
/* draw current frame number - black text */
UI_ThemeColor(TH_TEXT);
- UI_DrawString(x-5, y+3, str); // XXX may need to be updated for font stuff
+ UI_DrawString(x-5, y+3, str);
/* restore view transform */
glScalef(xscale, 1.0, 1.0);
@@ -343,6 +343,7 @@ short ANIM_headerUI_standard_buttons (const bContext *C, bDopeSheet *ads, uiBloc
uiBlockBeginAlign(block);
uiDefIconButBitI(block, TOGN, ADS_FILTER_NOSCE, B_REDR, ICON_SCENE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Scene Animation");
uiDefIconButBitI(block, TOGN, ADS_FILTER_NOWOR, B_REDR, ICON_WORLD_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display World Animation");
+ uiDefIconButBitI(block, TOGN, ADS_FILTER_NONTREE, B_REDR, ICON_NODETREE, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Node Tree Animation");
if (mainptr && mainptr->key.first)
uiDefIconButBitI(block, TOGN, ADS_FILTER_NOSHAPEKEYS, B_REDR, ICON_SHAPEKEY_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display ShapeKeys");
if (mainptr && mainptr->mat.first)
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index 8c4f10fb222..6586317b6dc 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -64,6 +64,7 @@
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meta_types.h"
+#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_particle_types.h"
#include "DNA_space_types.h"
@@ -599,6 +600,19 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
ale->adt= BKE_animdata_from_id(data);
}
break;
+ case ANIMTYPE_DSARM:
+ {
+ bArmature *arm= (bArmature *)data;
+ AnimData *adt= arm->adt;
+
+ ale->flag= FILTER_ARM_OBJD(arm);
+
+ ale->key_data= (adt) ? adt->action : NULL;
+ ale->datatype= ALE_ACT;
+
+ ale->adt= BKE_animdata_from_id(data);
+ }
+ break;
case ANIMTYPE_DSSKEY:
{
Key *key= (Key *)data;
@@ -625,6 +639,19 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
ale->adt= BKE_animdata_from_id(data);
}
break;
+ case ANIMTYPE_DSNTREE:
+ {
+ bNodeTree *ntree= (bNodeTree *)data;
+ AnimData *adt= ntree->adt;
+
+ ale->flag= FILTER_NTREE_SCED(ntree);
+
+ ale->key_data= (adt) ? adt->action : NULL;
+ ale->datatype= ALE_ACT;
+
+ ale->adt= BKE_animdata_from_id(data);
+ }
+ break;
case ANIMTYPE_DSPART:
{
ParticleSettings *part= (ParticleSettings*)ale->data;
@@ -707,7 +734,6 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
ale->flag= nlt->flag;
- // XXX or should this be done some other way?
ale->key_data= &nlt->strips;
ale->datatype= ALE_NLASTRIP;
}
@@ -728,12 +754,10 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
/* ----------------------------------------- */
-
-static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id)
+/* find the next F-Curve that is usable for inclusion */
+static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bActionGroup *grp, int filter_mode, ID *owner_id)
{
- bAnimListElem *ale = NULL;
- FCurve *fcu;
- int items = 0;
+ FCurve *fcu = NULL;
/* loop over F-Curves - assume that the caller of this has already checked that these should be included
* NOTE: we need to check if the F-Curves belong to the same group, as this gets called for groups too...
@@ -752,13 +776,13 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve
{
Object *ob= (Object *)owner_id;
- /* only consider if F-Curve involves pose_channels */
- if ((fcu->rna_path) && strstr(fcu->rna_path, "pose_channels")) {
+ /* only consider if F-Curve involves pose.bones */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "bones")) {
bPoseChannel *pchan;
char *bone_name;
/* get bone-name, and check if this bone is selected */
- bone_name= BLI_getQuotedStr(fcu->rna_path, "pose_channels[");
+ bone_name= BLI_getQuotedStr(fcu->rna_path, "bones[");
pchan= get_pose_channel(ob->pose, bone_name);
if (bone_name) MEM_freeN(bone_name);
@@ -776,18 +800,42 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve
if ( ANIMCHANNEL_SELOK(SEL_FCU(fcu)) && ANIMCHANNEL_SELEDITOK(SEL_FCU(fcu)) ) {
/* only include if this curve is active */
if (!(filter_mode & ANIMFILTER_ACTIVE) || (fcu->flag & FCURVE_ACTIVE)) {
- ale= make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id);
-
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
+ /* this F-Curve can be used, so return it */
+ return fcu;
}
}
}
}
}
+ /* no (more) F-Curves from the list are suitable... */
+ return NULL;
+}
+
+static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id)
+{
+ FCurve *fcu;
+ int items = 0;
+
+ /* loop over every F-Curve able to be included
+ * - this for-loop works like this:
+ * 1) the starting F-Curve is assigned to the fcu pointer so that we have a starting point to search from
+ * 2) the first valid F-Curve to start from (which may include the one given as 'first') in the remaining
+ * list of F-Curves is found, and verified to be non-null
+ * 3) the F-Curve referenced by fcu pointer is added to the list
+ * 4) the fcu pointer is set to the F-Curve after the one we just added, so that we can keep going through
+ * the rest of the F-Curve list without an eternal loop. Back to step 2 :)
+ */
+ for (fcu=first; ( (fcu = animdata_filter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu=fcu->next)
+ {
+ bAnimListElem *ale = make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id);
+
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
+ }
+ }
+
/* return the number of items added to the list */
return items;
}
@@ -802,50 +850,57 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction
/* loop over groups */
// TODO: in future, should we expect to need nested groups?
for (agrp= act->groups.first; agrp; agrp= agrp->next) {
- /* add this group as a channel first */
- if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) {
- /* check if filtering by selection */
- if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) {
- ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
- }
- }
+ FCurve *first_fcu;
/* store reference to last channel of group */
if (agrp->channels.last)
lastchan= agrp->channels.last;
+ /* get the first F-Curve in this group we can start to use,
+ * and if there isn't any F-Curve to start from, then don't
+ * this group at all...
+ */
+ first_fcu = animdata_filter_fcurve_next(ads, agrp->channels.first, agrp, filter_mode, owner_id);
- /* there are some situations, where only the channels of the action group should get considered */
- if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) {
- /* filters here are a bit convoulted...
- * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes
- * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed)
- *
- * cases when we should include F-Curves inside group:
- * - we don't care about visibility
- * - group is expanded
- * - we just need the F-Curves present
- */
- if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) )
- {
- /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter,
- * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing
- * all its sub-curves to be shown
+ if (first_fcu) {
+ /* add this group as a channel first */
+ if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) {
+ /* check if filtering by selection */
+ if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) {
+ ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
+ }
+ }
+ }
+
+ /* there are some situations, where only the channels of the action group should get considered */
+ if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) {
+ /* filters here are a bit convoulted...
+ * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes
+ * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed)
+ *
+ * cases when we should include F-Curves inside group:
+ * - we don't care about visibility
+ * - group is expanded
+ * - we just need the F-Curves present
*/
- if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) )
+ if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) )
{
- if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
- items += animdata_filter_fcurves(anim_data, ads, agrp->channels.first, agrp, owner, ownertype, filter_mode, owner_id);
+ /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter,
+ * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing
+ * all its sub-curves to be shown
+ */
+ if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) )
+ {
+ if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
+ items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, owner, ownertype, filter_mode, owner_id);
+ }
}
}
}
}
-
- // TODO: but we still need to deal with the case when the group may be closed, but it has no visible curves too
}
/* loop over un-grouped F-Curves (only if we're not only considering those channels in the animive group) */
@@ -1485,6 +1540,7 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B
static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode)
{
World *wo= sce->world;
+ bNodeTree *ntree= sce->nodetree;
AnimData *adt= NULL;
bAnimListElem *ale;
int items = 0;
@@ -1590,6 +1646,50 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads
}
)
}
+ /* nodetree */
+ if ((ntree && ntree->adt) && !(ads->filterflag & ADS_FILTER_NONTREE)) {
+ /* Action, Drivers, or NLA for Nodetree */
+ adt= ntree->adt;
+ ANIMDATA_FILTER_CASES(ntree,
+ { /* AnimData blocks - do nothing... */ },
+ { /* nla */
+ /* add NLA tracks */
+ items += animdata_filter_nla(anim_data, ads, adt, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree);
+ },
+ { /* drivers */
+ /* include nodetree-expand widget? */
+ if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
+ ale= make_new_animlistelem(ntree, ANIMTYPE_DSNTREE, sce, ANIMTYPE_SCENE, (ID *)ntree);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
+ }
+ }
+
+ /* add F-Curve channels (drivers are F-Curves) */
+ if (FILTER_NTREE_SCED(ntree)/*EXPANDED_DRVD(adt)*/ || !(filter_mode & ANIMFILTER_CHANNELS)) {
+ // XXX owner info is messed up now...
+ items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, ntree, ANIMTYPE_DSNTREE, filter_mode, (ID *)ntree);
+ }
+ },
+ { /* action */
+ /* include nodetree-expand widget? */
+ if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
+ ale= make_new_animlistelem(ntree, ANIMTYPE_DSNTREE, sce, ANIMTYPE_SCENE, (ID *)sce);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
+ }
+ }
+
+ /* add channels */
+ if (FILTER_NTREE_SCED(ntree) || (filter_mode & ANIMFILTER_CURVESONLY)) {
+ items += animdata_filter_action(anim_data, ads, adt->action, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree);
+ }
+ }
+ )
+ }
+
// TODO: scene compositing nodes (these aren't standard node-trees)
@@ -1616,7 +1716,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo
/* scene-linked animation */
// TODO: sequencer, composite nodes - are we to include those here too?
{
- short sceOk= 0, worOk= 0;
+ short sceOk= 0, worOk= 0, nodeOk=0;
/* check filtering-flags if ok */
ANIMDATA_FILTER_CASES(sce,
@@ -1643,17 +1743,30 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo
worOk= !(ads->filterflag & ADS_FILTER_NOWOR);,
worOk= !(ads->filterflag & ADS_FILTER_NOWOR);)
}
+ if (sce->nodetree) {
+ ANIMDATA_FILTER_CASES(sce->nodetree,
+ {
+ /* for the special AnimData blocks only case, we only need to add
+ * the block if it is valid... then other cases just get skipped (hence ok=0)
+ */
+ ANIMDATA_ADD_ANIMDATA(sce->nodetree);
+ nodeOk=0;
+ },
+ nodeOk= !(ads->filterflag & ADS_FILTER_NONTREE);,
+ nodeOk= !(ads->filterflag & ADS_FILTER_NONTREE);,
+ nodeOk= !(ads->filterflag & ADS_FILTER_NONTREE);)
+ }
/* if only F-Curves with visible flags set can be shown, check that
* datablocks haven't been set to invisible
*/
if (filter_mode & ANIMFILTER_CURVEVISIBLE) {
if ((sce->adt) && (sce->adt->flag & ADT_CURVES_NOT_VISIBLE))
- sceOk= worOk= 0;
+ sceOk= worOk= nodeOk= 0;
}
/* check if not all bad (i.e. so there is something to show) */
- if ( !(!sceOk && !worOk) ) {
+ if ( !(!sceOk && !worOk && !nodeOk) ) {
/* add scene data to the list of filtered channels */
items += animdata_filter_dopesheet_scene(anim_data, ads, sce, filter_mode);
}
diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h
index 0101e3d0ef7..bc4f528d43f 100644
--- a/source/blender/editors/animation/anim_intern.h
+++ b/source/blender/editors/animation/anim_intern.h
@@ -45,25 +45,25 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks
* These handle keyframes management from various spaces. They only make use of
* Keying Sets.
*/
-void ANIM_OT_insert_keyframe(struct wmOperatorType *ot);
-void ANIM_OT_delete_keyframe(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_insert(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_delete(struct wmOperatorType *ot);
/* Main Keyframe Management operators:
* These handle keyframes management from various spaces. They will handle the menus
* required for each space.
*/
-void ANIM_OT_insert_keyframe_menu(struct wmOperatorType *ot);
-void ANIM_OT_delete_keyframe_v3d(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_insert_menu(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_delete_v3d(struct wmOperatorType *ot);
/* Keyframe managment operators for UI buttons (RMB menu). */
-void ANIM_OT_insert_keyframe_button(struct wmOperatorType *ot);
-void ANIM_OT_delete_keyframe_button(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_insert_button(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_delete_button(struct wmOperatorType *ot);
/* .......... */
/* KeyingSet managment operators for UI buttons (RMB menu) */
-void ANIM_OT_add_keyingset_button(struct wmOperatorType *ot);
-void ANIM_OT_remove_keyingset_button(struct wmOperatorType *ot);
+void ANIM_OT_keyingset_button_add(struct wmOperatorType *ot);
+void ANIM_OT_keyingset_button_remove(struct wmOperatorType *ot);
/* KeyingSet management operators for RNA collections/UI buttons */
void ANIM_OT_keying_set_add(struct wmOperatorType *ot);
@@ -74,8 +74,8 @@ void ANIM_OT_keying_set_path_remove(struct wmOperatorType *ot);
/* .......... */
/* Driver management operators for UI buttons (RMB menu) */
-void ANIM_OT_add_driver_button(struct wmOperatorType *ot);
-void ANIM_OT_remove_driver_button(struct wmOperatorType *ot);
+void ANIM_OT_driver_button_add(struct wmOperatorType *ot);
+void ANIM_OT_driver_button_remove(struct wmOperatorType *ot);
void ANIM_OT_copy_driver_button(struct wmOperatorType *ot);
void ANIM_OT_paste_driver_button(struct wmOperatorType *ot);
diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c
index d707ea0a2c4..200c4eb3590 100644
--- a/source/blender/editors/animation/anim_ipo_utils.c
+++ b/source/blender/editors/animation/anim_ipo_utils.c
@@ -40,7 +40,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_key_types.h"
@@ -109,9 +109,9 @@ int getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
* - however, if we're showing subdata of bones (probably there will be other exceptions later)
* need to include that info too since it gets confusing otherwise
*/
- if (strstr(fcu->rna_path, "pose_channels") && strstr(fcu->rna_path, "constraints")) {
+ if (strstr(fcu->rna_path, "bones") && strstr(fcu->rna_path, "constraints")) {
/* perform string 'chopping' to get "Bone Name : Constraint Name" */
- char *pchanName= BLI_getQuotedStr(fcu->rna_path, "pose_channels[");
+ char *pchanName= BLI_getQuotedStr(fcu->rna_path, "bones[");
char *constName= BLI_getQuotedStr(fcu->rna_path, "constraints[");
/* assemble the string to display in the UI... */
diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c
index 33eed1ff2a4..6c8a982b323 100644
--- a/source/blender/editors/animation/anim_ops.c
+++ b/source/blender/editors/animation/anim_ops.c
@@ -260,6 +260,9 @@ static int previewrange_define_exec(bContext *C, wmOperator *op)
scene->r.psfra= (int)floor(sfra + 0.5f);
scene->r.pefra= (int)floor(efra + 0.5f);
+ /* send notifiers */
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
+
return OPERATOR_FINISHED;
}
@@ -399,24 +402,24 @@ void ED_operatortypes_anim(void)
WM_operatortype_append(ANIM_OT_previewrange_clear);
/* Entire UI --------------------------------------- */
- WM_operatortype_append(ANIM_OT_insert_keyframe);
- WM_operatortype_append(ANIM_OT_delete_keyframe);
- WM_operatortype_append(ANIM_OT_insert_keyframe_menu);
- WM_operatortype_append(ANIM_OT_delete_keyframe_v3d);
- WM_operatortype_append(ANIM_OT_insert_keyframe_button);
- WM_operatortype_append(ANIM_OT_delete_keyframe_button);
+ WM_operatortype_append(ANIM_OT_keyframe_insert);
+ WM_operatortype_append(ANIM_OT_keyframe_delete);
+ WM_operatortype_append(ANIM_OT_keyframe_insert_menu);
+ WM_operatortype_append(ANIM_OT_keyframe_delete_v3d);
+ WM_operatortype_append(ANIM_OT_keyframe_insert_button);
+ WM_operatortype_append(ANIM_OT_keyframe_delete_button);
- WM_operatortype_append(ANIM_OT_add_driver_button);
- WM_operatortype_append(ANIM_OT_remove_driver_button);
+ WM_operatortype_append(ANIM_OT_driver_button_add);
+ WM_operatortype_append(ANIM_OT_driver_button_remove);
WM_operatortype_append(ANIM_OT_copy_driver_button);
WM_operatortype_append(ANIM_OT_paste_driver_button);
WM_operatortype_append(ANIM_OT_copy_clipboard_button);
- WM_operatortype_append(ANIM_OT_add_keyingset_button);
- WM_operatortype_append(ANIM_OT_remove_keyingset_button);
+ WM_operatortype_append(ANIM_OT_keyingset_button_add);
+ WM_operatortype_append(ANIM_OT_keyingset_button_remove);
WM_operatortype_append(ANIM_OT_keying_set_add);
WM_operatortype_append(ANIM_OT_keying_set_remove);
diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c
index 13f38dae6ea..bc7005b82c4 100644
--- a/source/blender/editors/animation/drivers.c
+++ b/source/blender/editors/animation/drivers.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "DNA_anim_types.h"
@@ -53,6 +53,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
+#include "BKE_depsgraph.h"
#include "BKE_fcurve.h"
#include "BKE_utildefines.h"
#include "BKE_context.h"
@@ -147,7 +148,7 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla
PointerRNA id_ptr, ptr;
PropertyRNA *prop;
FCurve *fcu;
- int array_index_max = array_index+1;
+ int array_index_max;
int done = 0;
/* validate pointer first - exit if failure */
@@ -159,9 +160,15 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla
/* key entire array convenience method */
if (array_index == -1) {
+ array_index_max= RNA_property_array_length(&ptr, prop);
array_index= 0;
- array_index_max= RNA_property_array_length(&ptr, prop) + 1;
}
+ else
+ array_index_max= array_index;
+
+ /* maximum index should be greater than the start index */
+ if (array_index == array_index_max)
+ array_index_max += 1;
/* will only loop once unless the array index was -1 */
for (; array_index < array_index_max; array_index++) {
@@ -169,14 +176,17 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla
fcu= verify_driver_fcurve(id, rna_path, array_index, 1);
if (fcu && fcu->driver) {
- fcu->driver->type= type;
+ ChannelDriver *driver= fcu->driver;
+
+ /* set the type of the driver */
+ driver->type= type;
/* fill in current value for python */
if (type == DRIVER_TYPE_PYTHON) {
PropertyType proptype= RNA_property_type(prop);
int array= RNA_property_array_length(&ptr, prop);
- char *expression= fcu->driver->expression;
- int val, maxlen= sizeof(fcu->driver->expression);
+ char *expression= driver->expression;
+ int val, maxlen= sizeof(driver->expression);
float fval;
if (proptype == PROP_BOOLEAN) {
@@ -392,7 +402,7 @@ static int add_driver_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL); // XXX
@@ -401,11 +411,11 @@ static int add_driver_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_add_driver_button (wmOperatorType *ot)
+void ANIM_OT_driver_button_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Driver";
- ot->idname= "ANIM_OT_add_driver_button";
+ ot->idname= "ANIM_OT_driver_button_add";
ot->description= "Add driver(s) for the property(s) connected represented by the highlighted button.";
/* callbacks */
@@ -456,7 +466,7 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL); // XXX
@@ -465,11 +475,11 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_remove_driver_button (wmOperatorType *ot)
+void ANIM_OT_driver_button_remove (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove Driver";
- ot->idname= "ANIM_OT_remove_driver_button";
+ ot->idname= "ANIM_OT_driver_button_remove";
ot->description= "Remove the driver(s) for the property(s) connected represented by the highlighted button.";
/* callbacks */
diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c
index 65c73355ad7..35f7f424f85 100644
--- a/source/blender/editors/animation/fmodifier_ui.c
+++ b/source/blender/editors/animation/fmodifier_ui.c
@@ -47,7 +47,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -111,16 +111,6 @@ static void validate_fmodifier_cb (bContext *C, void *fcm_v, void *dummy)
fmi->verify_data(fcm);
}
-/* callback to set the active modifier */
-static void activate_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
-{
- ListBase *modifiers = (ListBase *)fmods_v;
- FModifier *fcm= (FModifier *)fcm_v;
-
- /* call API function to set the active modifier for active modifier-stack */
- set_active_fmodifier(modifiers, fcm);
-}
-
/* callback to remove the given modifier */
static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
{
@@ -129,6 +119,10 @@ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
/* remove the given F-Modifier from the active modifier-stack */
remove_fmodifier(modifiers, fcm);
+
+ /* send notifiers */
+ // XXX for now, this is the only way to get updates in all the right places... but would be nice to have a special one in this case
+ WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
}
/* --------------- */
@@ -247,7 +241,7 @@ static void draw_modifier__generator(uiLayout *layout, ID *id, FModifier *fcm, s
/* --------------- */
-/* draw settings for noise modifier */
+/* draw settings for generator modifier */
static void draw_modifier__fn_generator(uiLayout *layout, ID *id, FModifier *fcm, short width)
{
uiLayout *col;
@@ -327,6 +321,45 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short
/* --------------- */
+/* draw settings for sound modifier */
+static void draw_modifier__sound(const bContext *C, uiLayout *layout, ID *id, FModifier *fcm, short width)
+{
+ FMod_Sound *data= (FMod_Sound *)fcm->data;
+ PointerRNA ptr;
+
+ /* init the RNA-pointer */
+ RNA_pointer_create(id, &RNA_FModifierSound, fcm, &ptr);
+
+ /* sound */
+ uiTemplateID(layout, (bContext*)C, &ptr, "sound", NULL, "sound.open", NULL);
+
+ if (data->sound)
+ {
+ /* only sounds that are cached can be used, so display error if not cached */
+ if (data->sound->cache)
+ {
+ /* blending mode */
+ uiItemR(layout, NULL, 0, &ptr, "modification", 0);
+
+ /* settings */
+ uiItemR(layout, NULL, 0, &ptr, "strength", 0);
+ uiItemR(layout, NULL, 0, &ptr, "delay", 0);
+ }
+ else
+ {
+ PointerRNA id_ptr;
+
+ RNA_id_pointer_create((ID *)data->sound, &id_ptr);
+
+ /* error message with a button underneath allowing users to rectify the issue */
+ uiItemL(layout, "Sound must be cached.", ICON_ERROR);
+ uiItemR(layout, NULL, 0, &id_ptr, "caching", UI_ITEM_R_TOGGLE);
+ }
+ }
+}
+
+/* --------------- */
+
#define BINARYSEARCH_FRAMEEQ_THRESH 0.0001
/* Binary search algorithm for finding where to insert Envelope Data Point.
@@ -590,13 +623,17 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor
/* --------------- */
-void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm)
+void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm)
{
FModifierTypeInfo *fmi= fmodifier_get_typeinfo(fcm);
uiLayout *box, *row, *subrow;
uiBlock *block;
uiBut *but;
short width= 314;
+ PointerRNA ptr;
+
+ /* init the RNA-pointer */
+ RNA_pointer_create(id, &RNA_FModifierFunctionGenerator, fcm, &ptr);
/* draw header */
{
@@ -606,31 +643,33 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie
row= uiLayoutRow(box, 0);
block= uiLayoutGetBlock(row); // err...
- uiBlockSetEmboss(block, UI_EMBOSSN);
-
/* left-align -------------------------------------------- */
subrow= uiLayoutRow(row, 0);
uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
/* expand */
- uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_EXPANDED, B_REDR, ICON_TRIA_RIGHT, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is expanded.");
+ uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY);
/* checkbox for 'active' status (for now) */
- but= uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_ACTIVE, B_REDR, ICON_RADIOBUT_OFF, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is active one.");
- uiButSetFunc(but, activate_fmodifier_cb, modifiers, fcm);
+ uiItemR(subrow, "", 0, &ptr, "active", UI_ITEM_R_ICON_ONLY);
/* name */
if (fmi)
- uiDefBut(block, LABEL, 1, fmi->name, 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one.");
+ uiItemL(subrow, fmi->name, 0);
else
- uiDefBut(block, LABEL, 1, "<Unknown Modifier>", 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one.");
+ uiItemL(subrow, "<Unknown Modifier>", 0);
/* right-align ------------------------------------------- */
subrow= uiLayoutRow(row, 0);
uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
+
/* 'mute' button */
- uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_MUTED, B_REDR, ICON_MUTE_IPO_OFF, 0, 0, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is temporarily muted (not evaluated).");
+ uiItemR(subrow, "", 0, &ptr, "muted", UI_ITEM_R_ICON_ONLY);
+
+ uiBlockSetEmboss(block, UI_EMBOSSN);
/* delete button */
but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete F-Curve Modifier.");
@@ -665,11 +704,15 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie
case FMODIFIER_TYPE_LIMITS: /* Limits */
draw_modifier__limits(box, id, fcm, width);
break;
-
+
case FMODIFIER_TYPE_NOISE: /* Noise */
draw_modifier__noise(box, id, fcm, width);
break;
-
+
+ case FMODIFIER_TYPE_SOUND: /* Sound */
+ draw_modifier__sound(C, box, id, fcm, width);
+ break;
+
default: /* unknown type */
break;
}
diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c
index 019ece64132..512dc92de1d 100644
--- a/source/blender/editors/animation/keyframes_draw.c
+++ b/source/blender/editors/animation/keyframes_draw.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dlrbTree.h"
#include "DNA_listBase.h"
@@ -58,6 +58,7 @@
#include "DNA_lamp_types.h"
#include "DNA_material_types.h"
#include "DNA_meta_types.h"
+#include "DNA_node_types.h"
#include "DNA_particle_types.h"
#include "DNA_userdef_types.h"
#include "DNA_gpencil_types.h"
@@ -91,10 +92,44 @@
/* *************************** Keyframe Processing *************************** */
-/* Create a ActKeyColumn from a BezTriple */
-static ActKeyColumn *bezt_to_new_actkeycolumn(BezTriple *bezt)
+/* ActKeyColumns (Keyframe Columns) ------------------------------------------ */
+
+/* Comparator callback used for ActKeyColumns and cframe float-value pointer */
+// NOTE: this is exported to other modules that use the ActKeyColumns for finding keyframes
+short compare_ak_cfraPtr (void *node, void *data)
+{
+ ActKeyColumn *ak= (ActKeyColumn *)node;
+ float *cframe= data;
+
+ if (*cframe < ak->cfra)
+ return -1;
+ else if (*cframe > ak->cfra)
+ return 1;
+ else
+ return 0;
+}
+
+/* --------------- */
+
+/* Comparator callback used for ActKeyColumns and BezTriple */
+static short compare_ak_bezt (void *node, void *data)
+{
+ ActKeyColumn *ak= (ActKeyColumn *)node;
+ BezTriple *bezt= (BezTriple *)data;
+
+ if (bezt->vec[1][0] < ak->cfra)
+ return -1;
+ else if (bezt->vec[1][0] > ak->cfra)
+ return 1;
+ else
+ return 0;
+}
+
+/* New node callback used for building ActKeyColumns from BezTriples */
+static DLRBT_Node *nalloc_ak_bezt (void *data)
{
ActKeyColumn *ak= MEM_callocN(sizeof(ActKeyColumn), "ActKeyColumn");
+ BezTriple *bezt= (BezTriple *)data;
/* store settings based on state of BezTriple */
ak->cfra= bezt->vec[1][0];
@@ -104,69 +139,136 @@ static ActKeyColumn *bezt_to_new_actkeycolumn(BezTriple *bezt)
/* set 'modified', since this is used to identify long keyframes */
ak->modified = 1;
- return ak;
+ return (DLRBT_Node *)ak;
+}
+
+/* Node updater callback used for building ActKeyColumns from BezTriples */
+static void nupdate_ak_bezt (void *node, void *data)
+{
+ ActKeyColumn *ak= (ActKeyColumn *)node;
+ BezTriple *bezt= (BezTriple *)data;
+
+ /* set selection status and 'touched' status */
+ if (BEZSELECTED(bezt)) ak->sel = SELECT;
+ ak->modified += 1;
+
+ /* for keyframe type, 'proper' keyframes have priority over breakdowns (and other types for now) */
+ if (BEZKEYTYPE(bezt) == BEZT_KEYTYPE_KEYFRAME)
+ ak->key_type= BEZT_KEYTYPE_KEYFRAME;
}
+/* --------------- */
+
/* Add the given BezTriple to the given 'list' of Keyframes */
static void add_bezt_to_keycolumns_list(DLRBT_Tree *keys, BezTriple *bezt)
{
- ActKeyColumn *new_ak=NULL;
+ if ELEM(NULL, keys, bezt)
+ return;
+ else
+ BLI_dlrbTree_add(keys, compare_ak_bezt, nalloc_ak_bezt, nupdate_ak_bezt, bezt);
+}
+
+/* ActBeztColumns (Helpers for Long Keyframes) ------------------------------ */
+
+/* BezTriple Container Node */
+// NOTE: only used internally while building Long Keyframes for now, but may be useful externally?
+typedef struct ActBeztColumn {
+ /* Tree Node interface ---------------- */
+ /* ListBase linkage */
+ struct ActBeztColumn *next, *prev;
- if ELEM(NULL, keys, bezt) return;
+ /* sorting-tree linkage */
+ struct ActBeztColumn *left, *right; /* 'children' of this node, less than and greater than it (respectively) */
+ struct ActBeztColumn *parent; /* parent of this node in the tree */
+ char tree_col; /* DLRB_BLACK or DLRB_RED */
+ char pad;
- /* if there are no keys already, just add as root */
- if (keys->root == NULL) {
- /* just add this as the root, then call the tree-balancing functions to validate */
- new_ak= bezt_to_new_actkeycolumn(bezt);
- keys->root= (DLRBT_Node *)new_ak;
+ /* BezTriple Store -------------------- */
+ short numBezts; /* number of BezTriples on this frame */
+ float cfra; /* frame that the BezTriples occur on */
+
+ BezTriple *bezts[4]; /* buffer of pointers to BezTriples on the same frame */
+ //BezTriple **bezts_extra; /* secondary buffer of pointers if need be */
+} ActBeztColumn;
+
+/* --------------- */
+
+/* Comparator callback used for ActBeztColumns and BezTriple */
+static short compare_abk_bezt (void *node, void *data)
+{
+ ActBeztColumn *abk= (ActBeztColumn *)node;
+ BezTriple *bezt= (BezTriple *)data;
+
+ if (bezt->vec[1][0] < abk->cfra)
+ return -1;
+ else if (bezt->vec[1][0] > abk->cfra)
+ return 1;
+ else
+ return 0;
+}
+
+/* New node callback used for building ActBeztColumns from BezTriples */
+static DLRBT_Node *nalloc_abk_bezt (void *data)
+{
+ ActBeztColumn *abk= MEM_callocN(sizeof(ActBeztColumn), "ActKeyColumn");
+ BezTriple *bezt= (BezTriple *)data;
+
+ /* store the BeztTriple in the buffer, and keep track of its frame number */
+ abk->cfra= bezt->vec[1][0];
+ abk->bezts[abk->numBezts++]= bezt;
+
+ return (DLRBT_Node *)abk;
+}
+
+/* Node updater callback used for building ActBeztColumns from BezTriples */
+static void nupdate_abk_bezt (void *node, void *data)
+{
+ ActBeztColumn *abk= (ActBeztColumn *)node;
+ BezTriple *bezt= (BezTriple *)data;
+
+ /* just add the BezTriple to the buffer if there's space, or allocate a new one */
+ if (abk->numBezts >= sizeof(abk->bezts)/sizeof(BezTriple)) {
+ // TODO: need to allocate new array to cater...
+ //bezts_extra= MEM_callocN(...);
+ printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n");
}
else {
- ActKeyColumn *ak, *akp=NULL, *akn=NULL;
-
- /* traverse tree to find an existing entry to update the status of,
- * or a suitable point to add at
- */
- for (ak= keys->root; ak; akp= ak, ak= akn) {
- /* check if this is a match, or whether we go left or right */
- if (ak->cfra == bezt->vec[1][0]) {
- /* set selection status and 'touched' status */
- if (BEZSELECTED(bezt)) ak->sel = SELECT;
- ak->modified += 1;
-
- /* for keyframe type, 'proper' keyframes have priority over breakdowns (and other types for now) */
- if (BEZKEYTYPE(bezt) == BEZT_KEYTYPE_KEYFRAME)
- ak->key_type= BEZT_KEYTYPE_KEYFRAME;
-
- /* done... no need to insert */
- return;
- }
- else {
- ActKeyColumn **aknp= NULL;
-
- /* check if go left or right, but if not available, add new node */
- if (ak->cfra < bezt->vec[1][0])
- aknp= &ak->right;
- else
- aknp= &ak->left;
-
- /* if this does not exist, add a new node, otherwise continue... */
- if (*aknp == NULL) {
- /* add a new node representing this, and attach it to the relevant place */
- new_ak= bezt_to_new_actkeycolumn(bezt);
- new_ak->parent= ak;
- *aknp= new_ak;
- break;
- }
- else
- akn= *aknp;
- }
+ /* just store an extra one */
+ abk->bezts[abk->numBezts++]= bezt;
+ }
+}
+
+/* --------------- */
+
+/* Return the BezTriple in the given ActBeztColumn that matches the requested value */
+static BezTriple *abk_get_bezt_with_value (ActBeztColumn *abk, float value)
+{
+ BezTriple *bezt;
+ int i;
+
+ /* sanity checks */
+ if (abk == NULL)
+ return NULL;
+
+ /* look over each BezTriple in this container */
+ for (i = 0; i < abk->numBezts; i++) {
+ /* only do exact match for now... */
+ if (i >= sizeof(abk->bezts)/sizeof(BezTriple)) {
+ // TODO: this case needs special handling
+ }
+ else {
+ /* just use the default buffer */
+ bezt= abk->bezts[i];
+
+ if (bezt->vec[1][1] == value)
+ return bezt;
}
}
- /* now, balance the tree taking into account this newly added node */
- BLI_dlrbTree_insert(keys, (DLRBT_Node *)new_ak);
+ return NULL;
}
+/* ActKeyBlocks (Long Keyframes) ------------------------------------------ */
/* Create a ActKeyColumn for a pair of BezTriples */
static ActKeyBlock *bezts_to_new_actkeyblock(BezTriple *prev, BezTriple *beztn)
@@ -183,35 +285,18 @@ static ActKeyBlock *bezts_to_new_actkeyblock(BezTriple *prev, BezTriple *beztn)
return ab;
}
-static void add_bezt_to_keyblocks_list(DLRBT_Tree *blocks, FCurve *fcu, int index)
+static void add_bezt_to_keyblocks_list(DLRBT_Tree *blocks, DLRBT_Tree *beztTree, BezTriple *beztn)
{
ActKeyBlock *new_ab= NULL;
- BezTriple *beztn=NULL, *prev=NULL;
- BezTriple *bezt;
- int v;
-
- /* get beztriples */
- beztn= (fcu->bezt + index);
-
- /* we need to go through all beztriples, as they may not be in order (i.e. during transform) */
- // TODO: this seems to be a bit of a bottleneck
- for (v=0, bezt=fcu->bezt; v < fcu->totvert; v++, bezt++) {
- /* skip if beztriple is current */
- if (v != index) {
- /* check if beztriple is immediately before */
- if (beztn->vec[1][0] > bezt->vec[1][0]) {
- /* check if closer than previous was */
- if (prev) {
- if (prev->vec[1][0] < bezt->vec[1][0])
- prev= bezt;
- }
- else {
- prev= bezt;
- }
- }
- }
- }
+ ActBeztColumn *abk;
+ BezTriple *prev;
+ /* get the BezTriple immediately before the given one which has the same value */
+ /* the keyframes immediately before the ones containing the specified keyframe */
+ abk= (ActBeztColumn *)BLI_dlrbTree_search_prev(beztTree, compare_abk_bezt, beztn);
+ /* if applicable, the BezTriple with the same value */
+ prev= (abk) ? abk_get_bezt_with_value(abk, beztn->vec[1][1]) : NULL;
+
/* check if block needed - same value(s)?
* -> firstly, handles must have same central value as each other
* -> secondly, handles which control that section of the curve must be constant
@@ -316,47 +401,6 @@ static void set_touched_actkeyblock (ActKeyBlock *ab)
/* *************************** Keyframe Drawing *************************** */
-/* helper function - find actkeycolumn that occurs on cframe */
-ActKeyColumn *cfra_find_actkeycolumn (ActKeyColumn *ak, float cframe)
-{
- /* sanity checks */
- if (ak == NULL)
- return NULL;
-
- /* check if this is a match, or whether it is in some subtree */
- if (cframe < ak->cfra)
- return cfra_find_actkeycolumn(ak->left, cframe);
- else if (cframe > ak->cfra)
- return cfra_find_actkeycolumn(ak->right, cframe);
- else
- return ak; /* match */
-}
-
-/* helper function - find actkeycolumn that occurs on cframe, or the nearest one if not found */
-// FIXME: this is buggy... next() is ignored completely...
-ActKeyColumn *cfra_find_nearest_next_ak (ActKeyColumn *ak, float cframe, short next)
-{
- ActKeyColumn *akn= NULL;
-
- /* sanity checks */
- if (ak == NULL)
- return NULL;
-
- /* check if this is a match, or whether it is in some subtree */
- if (cframe < ak->cfra)
- akn= cfra_find_nearest_next_ak(ak->left, cframe, next);
- else if (cframe > ak->cfra)
- akn= cfra_find_nearest_next_ak(ak->right, cframe, next);
-
- /* if no match found (or found match), just use the current one */
- if (akn == NULL)
- return ak;
- else
- return akn;
-}
-
-/* -------- */
-
/* coordinates for diamond shape */
static const float _unit_diamond_shape[4][2] = {
{0.0f, 1.0f}, /* top vert */
@@ -470,10 +514,10 @@ static void draw_keylist(View2D *v2d, DLRBT_Tree *keys, DLRBT_Tree *blocks, floa
short startCurves, endCurves, totCurves;
/* find out how many curves occur at each keyframe */
- ak= cfra_find_actkeycolumn((ActKeyColumn *)keys->root, ab->start);
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_exact(keys, compare_ak_cfraPtr, &ab->start);
startCurves = (ak)? ak->totcurve: 0;
- ak= cfra_find_actkeycolumn((ActKeyColumn *)keys->root, ab->end);
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_exact(keys, compare_ak_cfraPtr, &ab->end);
endCurves = (ak)? ak->totcurve: 0;
/* only draw keyblock if it appears in at all of the keyframes at lowest end */
@@ -675,7 +719,6 @@ void scene_to_keylist(bDopeSheet *ads, Scene *sce, DLRBT_Tree *keys, DLRBT_Tree
if ((sce->adt) && !(filterflag & ADS_FILTER_NOSCE)) {
adt= sce->adt;
- // TODO: when we adapt NLA system, this needs to be the NLA-scaled version
if (adt->action)
action_to_keylist(adt, adt->action, keys, blocks);
}
@@ -684,7 +727,14 @@ void scene_to_keylist(bDopeSheet *ads, Scene *sce, DLRBT_Tree *keys, DLRBT_Tree
if ((sce->world) && (sce->world->adt) && !(filterflag & ADS_FILTER_NOWOR)) {
adt= sce->world->adt;
- // TODO: when we adapt NLA system, this needs to be the NLA-scaled version
+ if (adt->action)
+ action_to_keylist(adt, adt->action, keys, blocks);
+ }
+
+ /* nodetree animdata */
+ if ((sce->nodetree) && (sce->nodetree->adt) && !(filterflag & ADS_FILTER_NONTREE)) {
+ adt= sce->nodetree->adt;
+
if (adt->action)
action_to_keylist(adt, adt->action, keys, blocks);
}
@@ -783,6 +833,7 @@ void ob_to_keylist(bDopeSheet *ads, Object *ob, DLRBT_Tree *keys, DLRBT_Tree *bl
void fcurve_to_keylist(AnimData *adt, FCurve *fcu, DLRBT_Tree *keys, DLRBT_Tree *blocks)
{
+ DLRBT_Tree *beztTree = NULL;
BezTriple *bezt;
int v;
@@ -791,20 +842,38 @@ void fcurve_to_keylist(AnimData *adt, FCurve *fcu, DLRBT_Tree *keys, DLRBT_Tree
if (adt)
ANIM_nla_mapping_apply_fcurve(adt, fcu, 0, 1);
- /* loop through beztriples, making ActKeys and ActKeyBlocks */
- bezt= fcu->bezt;
+ /* if getting long keyframes too, grab the BezTriples in a BST for
+ * accelerated searching...
+ */
+ if (blocks) {
+ /* init new tree */
+ beztTree= BLI_dlrbTree_new();
+
+ /* populate tree with the BezTriples */
+ for (v=0, bezt=fcu->bezt; v < fcu->totvert; v++, bezt++)
+ BLI_dlrbTree_add(beztTree, compare_abk_bezt, nalloc_abk_bezt, nupdate_abk_bezt, bezt);
+
+ /* make sure that it is suitable for linked-list searching too */
+ BLI_dlrbTree_linkedlist_sync(beztTree);
+ }
- for (v=0; v < fcu->totvert; v++, bezt++) {
+ /* loop through beztriples, making ActKeysColumns and ActKeyBlocks */
+ for (v=0, bezt=fcu->bezt; v < fcu->totvert; v++, bezt++) {
add_bezt_to_keycolumns_list(keys, bezt);
- if (blocks) add_bezt_to_keyblocks_list(blocks, fcu, v);
+ if (blocks) add_bezt_to_keyblocks_list(blocks, beztTree, bezt);
}
/* update the number of curves that elements have appeared in */
- // FIXME: this is broken with the new tree structure for now...
if (keys)
set_touched_actkeycolumn(keys->root);
if (blocks)
set_touched_actkeyblock(blocks->root);
+
+ /* free temp data for building long keyframes */
+ if (blocks && beztTree) {
+ BLI_dlrbTree_free(beztTree);
+ MEM_freeN(beztTree);
+ }
/* unapply NLA-mapping if applicable */
ANIM_nla_mapping_apply_fcurve(adt, fcu, 1, 1);
diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c
index 7a167cb6c0c..83acfbee940 100644
--- a/source/blender/editors/animation/keyframes_edit.c
+++ b/source/blender/editors/animation/keyframes_edit.c
@@ -32,7 +32,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -44,6 +44,7 @@
#include "DNA_material_types.h"
#include "DNA_object_types.h"
#include "DNA_meta_types.h"
+#include "DNA_node_types.h"
#include "DNA_particle_types.h"
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
@@ -304,6 +305,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez
static short scene_keys_bezier_loop(BeztEditData *bed, Scene *sce, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag)
{
World *wo= (sce) ? sce->world : NULL;
+ bNodeTree *ntree= (sce) ? sce->nodetree : NULL;
/* sanity check */
if (sce == NULL)
@@ -321,6 +323,13 @@ static short scene_keys_bezier_loop(BeztEditData *bed, Scene *sce, BeztEditFunc
return 1;
}
+ /* NodeTree */
+ if (ntree && ntree->adt) {
+ if (adt_keys_bezier_loop(bed, ntree->adt, bezt_ok, bezt_cb, fcu_cb, filterflag))
+ return 1;
+ }
+
+
return 0;
}
@@ -373,7 +382,7 @@ short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, bAnimListElem *ale, B
case ALE_GROUP: /* action group */
return agrp_keys_bezier_loop(bed, (bActionGroup *)ale->data, bezt_ok, bezt_cb, fcu_cb);
case ALE_ACT: /* action */
- return act_keys_bezier_loop(bed, (bAction *)ale->data, bezt_ok, bezt_cb, fcu_cb);
+ return act_keys_bezier_loop(bed, (bAction *)ale->key_data, bezt_ok, bezt_cb, fcu_cb);
case ALE_OB: /* object */
return ob_keys_bezier_loop(bed, (Object *)ale->key_data, bezt_ok, bezt_cb, fcu_cb, filterflag);
diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c
index 3ad6ddf2c6f..9d3fc7a0fc4 100644
--- a/source/blender/editors/animation/keyframes_general.c
+++ b/source/blender/editors/animation/keyframes_general.c
@@ -33,7 +33,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index 0412ee89e51..8628e2c506a 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "DNA_anim_types.h"
@@ -53,6 +53,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
+#include "BKE_depsgraph.h"
#include "BKE_fcurve.h"
#include "BKE_nla.h"
#include "BKE_global.h"
@@ -501,7 +502,7 @@ static short visualkey_can_use (PointerRNA *ptr, PropertyRNA *prop)
/* get first constraint and determine type of keyframe constraints to check for
* - constraints can be on either Objects or PoseChannels, so we only check if the
- * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for
+ * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for
* those structs, allowing us to identify the owner of the data
*/
if (ptr->type == &RNA_Object) {
@@ -511,7 +512,7 @@ static short visualkey_can_use (PointerRNA *ptr, PropertyRNA *prop)
con= ob->constraints.first;
identifier= (char *)RNA_property_identifier(prop);
}
- else if (ptr->type == &RNA_PoseChannel) {
+ else if (ptr->type == &RNA_PoseBone) {
/* Pose Channel */
bPoseChannel *pchan= (bPoseChannel *)ptr->data;
@@ -599,7 +600,7 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_
/* handle for Objects or PoseChannels only
* - constraints can be on either Objects or PoseChannels, so we only check if the
- * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for
+ * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for
* those structs, allowing us to identify the owner of the data
* - assume that array_index will be sane
*/
@@ -617,12 +618,12 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_
else if (strstr(identifier, "rotation")) {
float eul[3];
- Mat4ToEul(ob->obmat, eul);
+ mat4_to_eul( eul,ob->obmat);
return eul[array_index];
}
}
}
- else if (ptr->type == &RNA_PoseChannel) {
+ else if (ptr->type == &RNA_PoseBone) {
Object *ob= (Object *)ptr->id.data; /* we assume that this is always set, and is an object */
bPoseChannel *pchan= (bPoseChannel *)ptr->data;
float tmat[4][4];
@@ -632,7 +633,7 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_
* be safe. Therefore, the active object is passed here, and in many cases, this
* will be what owns the pose-channel that is getting this anyway.
*/
- Mat4CpyMat4(tmat, pchan->pose_mat);
+ copy_m4_m4(tmat, pchan->pose_mat);
constraint_mat_convertspace(ob, pchan, tmat, CONSTRAINT_SPACE_POSE, CONSTRAINT_SPACE_LOCAL);
/* Loc, Rot/Quat keyframes are supported... */
@@ -647,14 +648,14 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_
float eul[3];
/* euler-rotation test before standard rotation, as standard rotation does quats */
- Mat4ToEulO(tmat, eul, pchan->rotmode);
+ mat4_to_eulO( eul, pchan->rotmode,tmat);
return eul[array_index];
}
else if (strstr(identifier, "rotation_quaternion")) {
float trimat[3][3], quat[4];
- Mat3CpyMat4(trimat, tmat);
- Mat3ToQuat_is_ok(trimat, quat);
+ copy_m3_m4(trimat, tmat);
+ mat3_to_quat_is_ok( quat,trimat);
return quat[array_index];
}
@@ -1003,11 +1004,18 @@ static int insert_key_exec (bContext *C, wmOperator *op)
if (G.f & G_DEBUG)
printf("KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success);
- /* report failure? */
- if (success == 0)
- BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes");
- else
+ /* report failure or do updates? */
+ if (success) {
+ /* if the appropriate properties have been set, make a note that we've inserted something */
+ if (RNA_boolean_get(op->ptr, "confirm_success"))
+ BKE_reportf(op->reports, RPT_INFO, "Successfully added %d Keyframes for KeyingSet '%s'", success, ks->name);
+
+ /* send notifiers that keyframes have been changed */
WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+ }
+ else
+ BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes");
+
/* free temp context-data if available */
if (dsources.first) {
@@ -1016,16 +1024,17 @@ static int insert_key_exec (bContext *C, wmOperator *op)
}
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
return OPERATOR_FINISHED;
}
-void ANIM_OT_insert_keyframe (wmOperatorType *ot)
+void ANIM_OT_keyframe_insert (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframe";
- ot->idname= "ANIM_OT_insert_keyframe";
+ ot->idname= "ANIM_OT_keyframe_insert";
+ ot->description= "Insert keyframes on the current frame for all properties in the specified Keying Set.";
/* callbacks */
ot->exec= insert_key_exec;
@@ -1034,19 +1043,22 @@ void ANIM_OT_insert_keyframe (wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /* settings */
+ /* keyingset to use
+ * - here the type is int not enum, since many of the indicies here are determined dynamically
+ */
RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+ /* confirm whether a keyframe was added by showing a popup
+ * - by default, this is enabled, since this operator is assumed to be called independently
+ */
+ RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
}
/* Insert Key Operator (With Menu) ------------------------ */
-
-/* XXX
- * This operator pops up a menu which sets gets the index of the keyingset to use,
- * setting the global settings, and calling the insert-keyframe operator using these
- * settings
+/* This operator checks if a menu should be shown for choosing the KeyingSet to use,
+ * then calls the
*/
-static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
+static void insert_key_menu_prompt (bContext *C)
{
Scene *scene= CTX_data_scene(C);
KeyingSet *ks;
@@ -1061,7 +1073,7 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
* - only include entry if it exists
*/
if (scene->active_keyingset) {
- uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_insert_keyframe_menu", "type", i++);
+ uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_keyframe_insert_menu", "type", i++);
uiItemS(layout);
}
else
@@ -1072,30 +1084,46 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
*/
if (scene->keyingsets.first) {
for (ks= scene->keyingsets.first; ks; ks= ks->next)
- uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i++);
+ uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i++);
uiItemS(layout);
}
/* builtin Keying Sets */
- // XXX polling the entire list may lag
i= -1;
for (ks= builtin_keyingsets.first; ks; ks= ks->next) {
/* only show KeyingSet if context is suitable */
if (keyingset_context_ok_poll(C, ks)) {
- uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i--);
+ uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i--);
}
}
uiPupMenuEnd(C, pup);
+}
+
+static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
+{
+ Scene *scene= CTX_data_scene(C);
- return OPERATOR_CANCELLED;
+ /* if prompting or no active Keying Set, show the menu */
+ if ((scene->active_keyingset == 0) || RNA_boolean_get(op->ptr, "always_prompt")) {
+ /* call the menu, which will call this operator again, hence the cancelled */
+ insert_key_menu_prompt(C);
+ return OPERATOR_CANCELLED;
+ }
+ else {
+ /* just call the exec() on the active keyingset */
+ RNA_int_set(op->ptr, "type", 0);
+ RNA_boolean_set(op->ptr, "confirm_success", 1);
+
+ return op->type->exec(C, op);
+ }
}
-void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot)
+void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframe Menu";
- ot->idname= "ANIM_OT_insert_keyframe_menu";
+ ot->idname= "ANIM_OT_keyframe_insert_menu";
/* callbacks */
ot->invoke= insert_key_menu_invoke;
@@ -1105,10 +1133,20 @@ void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /* properties
- * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically
+ /* keyingset to use
+ * - here the type is int not enum, since many of the indicies here are determined dynamically
*/
RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+ /* confirm whether a keyframe was added by showing a popup
+ * - by default, this is disabled so that if a menu is shown, this doesn't come up too
+ */
+ // XXX should this just be always on?
+ RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
+ /* whether the menu should always be shown
+ * - by default, the menu should only be shown when there is no active Keying Set (2.5 behaviour),
+ * although in some cases it might be useful to always shown (pre 2.5 behaviour)
+ */
+ RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", "");
}
/* Delete Key Operator ------------------------ */
@@ -1154,11 +1192,17 @@ static int delete_key_exec (bContext *C, wmOperator *op)
if (G.f & G_DEBUG)
printf("KeyingSet '%s' - Successfully removed %d Keyframes \n", ks->name, success);
- /* report failure? */
- if (success == 0)
- BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes");
- else
+ /* report failure or do updates? */
+ if (success) {
+ /* if the appropriate properties have been set, make a note that we've inserted something */
+ if (RNA_boolean_get(op->ptr, "confirm_success"))
+ BKE_reportf(op->reports, RPT_INFO, "Successfully removed %d Keyframes for KeyingSet '%s'", success, ks->name);
+
+ /* send notifiers that keyframes have been changed */
WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+ }
+ else
+ BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes");
/* free temp context-data if available */
if (dsources.first) {
@@ -1167,16 +1211,17 @@ static int delete_key_exec (bContext *C, wmOperator *op)
}
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
return OPERATOR_FINISHED;
}
-void ANIM_OT_delete_keyframe (wmOperatorType *ot)
+void ANIM_OT_keyframe_delete (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframe";
- ot->idname= "ANIM_OT_delete_keyframe";
+ ot->idname= "ANIM_OT_keyframe_delete";
+ ot->description= "Delete keyframes on the current frame for all properties in the specified Keying Set.";
/* callbacks */
ot->exec= delete_key_exec;
@@ -1185,10 +1230,14 @@ void ANIM_OT_delete_keyframe (wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /* properties
- * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically
+ /* keyingset to use
+ * - here the type is int not enum, since many of the indicies here are determined dynamically
*/
RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+ /* confirm whether a keyframe was added by showing a popup
+ * - by default, this is enabled, since this operator is assumed to be called independently
+ */
+ RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
}
/* Delete Key Operator ------------------------ */
@@ -1229,18 +1278,18 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op)
CTX_DATA_END;
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_KEYS, NULL);
return OPERATOR_FINISHED;
}
-void ANIM_OT_delete_keyframe_v3d (wmOperatorType *ot)
+void ANIM_OT_keyframe_delete_v3d (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframe";
- ot->idname= "ANIM_OT_delete_keyframe_v3d";
+ ot->idname= "ANIM_OT_keyframe_delete_v3d";
/* callbacks */
ot->invoke= WM_operator_confirm;
@@ -1319,7 +1368,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL);
@@ -1328,11 +1377,11 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_insert_keyframe_button (wmOperatorType *ot)
+void ANIM_OT_keyframe_insert_button (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframe (Buttons)";
- ot->idname= "ANIM_OT_insert_keyframe_button";
+ ot->idname= "ANIM_OT_keyframe_insert_button";
/* callbacks */
ot->exec= insert_key_button_exec;
@@ -1389,7 +1438,7 @@ static int delete_key_button_exec (bContext *C, wmOperator *op)
if(success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL);
@@ -1398,11 +1447,11 @@ static int delete_key_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_delete_keyframe_button (wmOperatorType *ot)
+void ANIM_OT_keyframe_delete_button (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframe (Buttons)";
- ot->idname= "ANIM_OT_delete_keyframe_button";
+ ot->idname= "ANIM_OT_keyframe_delete_button";
/* callbacks */
ot->exec= delete_key_button_exec;
diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c
index 0f4f29d0091..c3606a03d1e 100644
--- a/source/blender/editors/animation/keyingsets.c
+++ b/source/blender/editors/animation/keyingsets.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "DNA_anim_types.h"
@@ -53,6 +53,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
+#include "BKE_depsgraph.h"
#include "BKE_fcurve.h"
#include "BKE_utildefines.h"
#include "BKE_context.h"
@@ -366,7 +367,7 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL);
@@ -375,11 +376,11 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_add_keyingset_button (wmOperatorType *ot)
+void ANIM_OT_keyingset_button_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add to Keying Set";
- ot->idname= "ANIM_OT_add_keyingset_button";
+ ot->idname= "ANIM_OT_keyingset_button_add";
/* callbacks */
ot->exec= add_keyingset_button_exec;
@@ -444,7 +445,7 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL);
@@ -453,11 +454,11 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_remove_keyingset_button (wmOperatorType *ot)
+void ANIM_OT_keyingset_button_remove (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove from Keying Set";
- ot->idname= "ANIM_OT_remove_keyingset_button";
+ ot->idname= "ANIM_OT_keyingset_button_remove";
/* callbacks */
ot->exec= remove_keyingset_button_exec;
@@ -1219,7 +1220,7 @@ static short modifykey_get_context_v3d_data (bContext *C, ListBase *dsources, Ke
//}
#endif
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
/* add a new keying-source */
cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc");
@@ -1294,6 +1295,10 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet
int kflag=0, success= 0;
char *groupname= NULL;
+ /* sanity checks */
+ if (ks == NULL)
+ return 0;
+
/* get flags to use */
if (mode == MODIFYKEY_MODE_INSERT) {
/* use KeyingSet's flags as base */
@@ -1395,7 +1400,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet
// FIXME: this currently only works with a few hardcoded cases
if ((ksp->templates & KSP_TEMPLATE_PCHAN) && (cks->pchan)) {
/* add basic pose-channel path access */
- BLI_dynstr_append(pathds, "pose.pose_channels[\"");
+ BLI_dynstr_append(pathds, "pose.bones[\"");
BLI_dynstr_append(pathds, cks->pchan->name);
BLI_dynstr_append(pathds, "\"]");
diff --git a/source/blender/editors/armature/SConscript b/source/blender/editors/armature/SConscript
index a7fa9d7071f..fd4b885b730 100644
--- a/source/blender/editors/armature/SConscript
+++ b/source/blender/editors/armature/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' ../../render/extern/include #/intern/guardedalloc'
+incs += ' ../../render/extern/include'
incs += ' ../../gpu ../../makesrna #/intern/opennl/extern'
if env['OURPLATFORM'] == 'linux2':
diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h
index 012610bfd25..f53b70120d5 100644
--- a/source/blender/editors/armature/armature_intern.h
+++ b/source/blender/editors/armature/armature_intern.h
@@ -137,7 +137,6 @@ struct EditBone;
struct ListBase;
EditBone *make_boneList(struct ListBase *edbo, struct ListBase *bones, struct EditBone *parent, struct Bone *actBone);
-struct EditBone *addEditBone(struct bArmature *arm, char *name);
void BIF_sk_selectStroke(struct bContext *C, short mval[2], short extend);
/* duplicate method */
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index e49e3d99c49..e3c823283d1 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -39,7 +39,7 @@
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_context.h"
@@ -172,6 +172,14 @@ void ED_operatormacros_armature(void)
RNA_enum_set(otmacro->ptr, "forked", 0);
otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
+
+ // XXX would it be nicer to just be able to have standard extrude_move, but set the forked property separate?
+ // that would require fixing a properties bug 19733
+ ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_forked", "Extrude Forked", OPTYPE_UNDO|OPTYPE_REGISTER);
+ otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
+ RNA_enum_set(otmacro->ptr, "forked", 1);
+ otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ RNA_enum_set(otmacro->ptr, "proportional", 0);
}
void ED_keymap_armature(wmKeyConfig *keyconf)
@@ -207,8 +215,6 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "ARMATURE_OT_switch_direction", FKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_bone_primitive_add", AKEY, KM_PRESS, KM_SHIFT, 0);
- /* only the menu-version of subdivide is registered in keymaps for now */
- WM_keymap_add_item(keymap, "ARMATURE_OT_subdivide_multi", WKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0);
@@ -234,9 +240,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "ARMATURE_OT_delete", DELKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0);
- kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, KM_SHIFT, 0);
- // RNA_boolean_set(kmi->ptr, "forked", 1); // XXX this doesn't work ok for macros it seems...
- WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0);
@@ -261,6 +266,9 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
/* 2) set roll */
kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ROLL);
+
+ /* menus */
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_armature_specials", WKEY, KM_PRESS, 0, 0);
/* Pose ------------------------ */
/* only set in posemode, by space_view3d listener */
@@ -311,8 +319,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "POSE_OT_ik_add", IKEY, KM_PRESS, /*KM_CTRL|*/KM_SHIFT, 0);
WM_keymap_add_item(keymap, "POSE_OT_ik_clear", IKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", GKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_pose_group");
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_group", GKEY, KM_PRESS, KM_CTRL, 0);
/* set flags */
kmi= WM_keymap_add_item(keymap, "POSE_OT_flags_set", WKEY, KM_PRESS, KM_SHIFT, 0);
@@ -332,8 +339,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE);
// XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith
- WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0);
/* Pose -> PoseLib ------------- */
/* only set in posemode, by space_view3d listener */
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 6dad0b6e90f..95b743a7b27 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -33,6 +33,7 @@
#include "MEM_guardedalloc.h"
+#include "DNA_anim_types.h"
#include "DNA_action_types.h"
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
@@ -51,7 +52,7 @@
#include "DNA_curve_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_ghash.h"
@@ -83,6 +84,7 @@
#include "WM_types.h"
#include "ED_armature.h"
+#include "ED_keyframing.h"
#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_screen.h"
@@ -139,14 +141,35 @@ void ED_armature_validate_active(struct bArmature *arm)
}
}
-void free_edit_bone(bArmature *arm, EditBone *bone)
+static void bone_free(bArmature *arm, EditBone *bone)
{
if(arm->act_edbone==bone)
arm->act_edbone= NULL;
+ if(bone->prop) {
+ IDP_FreeProperty(bone->prop);
+ MEM_freeN(bone->prop);
+ }
+
BLI_freelinkN(arm->edbo, bone);
}
+void ED_armature_edit_bone_remove(bArmature *arm, EditBone* exBone)
+{
+ EditBone *curBone;
+
+ /* Find any bones that refer to this bone */
+ for (curBone=arm->edbo->first; curBone; curBone=curBone->next) {
+ if (curBone->parent==exBone) {
+ curBone->parent=exBone->parent;
+ curBone->flag &= ~BONE_CONNECTED;
+ }
+ }
+
+ bone_free(arm, exBone);
+}
+
+
/* converts Bones to EditBone list, used for tools as well */
EditBone *make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent, Bone *actBone)
{
@@ -185,13 +208,13 @@ EditBone *make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent, Bone
eBone->roll= 0.0f;
/* roll fixing */
- VecSubf(delta, eBone->tail, eBone->head);
+ sub_v3_v3v3(delta, eBone->tail, eBone->head);
vec_roll_to_mat3(delta, 0.0f, postmat);
- Mat3CpyMat4(premat, curBone->arm_mat);
+ copy_m3_m4(premat, curBone->arm_mat);
- Mat3Inv(imat, postmat);
- Mat3MulMat3(difmat, imat, premat);
+ invert_m3_m3(imat, postmat);
+ mul_m3_m3m3(difmat, imat, premat);
eBone->roll = (float)atan2(difmat[2][0], difmat[2][2]);
@@ -250,19 +273,19 @@ static void fix_bonelist_roll (ListBase *bonelist, ListBase *editbonelist)
if (ebone) {
/* Get the ebone premat */
- VecSubf(delta, ebone->tail, ebone->head);
+ sub_v3_v3v3(delta, ebone->tail, ebone->head);
vec_roll_to_mat3(delta, ebone->roll, premat);
/* Get the bone postmat */
- Mat3CpyMat4(postmat, curBone->arm_mat);
+ copy_m3_m4(postmat, curBone->arm_mat);
- Mat3Inv(imat, premat);
- Mat3MulMat3(difmat, imat, postmat);
+ invert_m3_m3(imat, premat);
+ mul_m3_m3m3(difmat, imat, postmat);
#if 0
printf ("Bone %s\n", curBone->name);
- printmatrix4("premat", premat);
- printmatrix4("postmat", postmat);
- printmatrix4("difmat", difmat);
+ print_m4("premat", premat);
+ print_m4("postmat", postmat);
+ print_m4("difmat", difmat);
printf ("Roll = %f\n", (-atan2(difmat[2][0], difmat[2][2]) * (180.0/M_PI)));
#endif
curBone->roll = (float)-atan2(difmat[2][0], difmat[2][2]);
@@ -287,7 +310,7 @@ void ED_armature_from_edit(Object *obedit)
/* remove zero sized bones, this gives instable restposes */
for (eBone=arm->edbo->first; eBone; eBone= neBone) {
- float len= VecLenf(eBone->head, eBone->tail);
+ float len= len_v3v3(eBone->head, eBone->tail);
neBone= eBone->next;
if (len <= 0.000001f) { /* FLT_EPSILON is too large? */
EditBone *fBone;
@@ -298,7 +321,7 @@ void ED_armature_from_edit(Object *obedit)
fBone->parent= eBone->parent;
}
printf("Warning: removed zero sized bone: %s\n", eBone->name);
- free_edit_bone(arm, eBone);
+ bone_free(arm, eBone);
}
}
@@ -311,7 +334,7 @@ void ED_armature_from_edit(Object *obedit)
memcpy(newBone->head, eBone->head, sizeof(float)*3);
memcpy(newBone->tail, eBone->tail, sizeof(float)*3);
newBone->flag= eBone->flag;
-
+
if (eBone == arm->act_edbone) {
newBone->flag |= BONE_SELECTED; /* important, editbones can be active with only 1 point selected */
arm->act_edbone= NULL;
@@ -330,7 +353,7 @@ void ED_armature_from_edit(Object *obedit)
newBone->rad_tail= eBone->rad_tail;
newBone->segments= eBone->segments;
newBone->layer = eBone->layer;
-
+
if(eBone->prop)
newBone->prop= IDP_CopyProperty(eBone->prop);
}
@@ -350,22 +373,22 @@ void ED_armature_from_edit(Object *obedit)
float delta[3];
/* Get the parent's matrix (rotation only) */
- VecSubf(delta, eBone->parent->tail, eBone->parent->head);
+ sub_v3_v3v3(delta, eBone->parent->tail, eBone->parent->head);
vec_roll_to_mat3(delta, eBone->parent->roll, M_parentRest);
/* Get this bone's matrix (rotation only) */
- VecSubf(delta, eBone->tail, eBone->head);
+ sub_v3_v3v3(delta, eBone->tail, eBone->head);
vec_roll_to_mat3(delta, eBone->roll, M_boneRest);
/* Invert the parent matrix */
- Mat3Inv(iM_parentRest, M_parentRest);
+ invert_m3_m3(iM_parentRest, M_parentRest);
/* Get the new head and tail */
- VecSubf(newBone->head, eBone->head, eBone->parent->tail);
- VecSubf(newBone->tail, eBone->tail, eBone->parent->tail);
+ sub_v3_v3v3(newBone->head, eBone->head, eBone->parent->tail);
+ sub_v3_v3v3(newBone->tail, eBone->tail, eBone->parent->tail);
- Mat3MulVecfl(iM_parentRest, newBone->head);
- Mat3MulVecfl(iM_parentRest, newBone->tail);
+ mul_m3_v3(iM_parentRest, newBone->head);
+ mul_m3_v3(iM_parentRest, newBone->tail);
}
}
/* ...otherwise add this bone to the armature's bonebase */
@@ -390,15 +413,15 @@ void ED_armature_apply_transform(Object *ob, float mat[4][4])
{
EditBone *ebone;
bArmature *arm= ob->data;
- float scale = Mat4ToScalef(mat); /* store the scale of the matrix here to use on envelopes */
+ float scale = mat4_to_scale(mat); /* store the scale of the matrix here to use on envelopes */
/* Put the armature into editmode */
ED_armature_to_edit(ob);
/* Do the rotations */
for (ebone = arm->edbo->first; ebone; ebone=ebone->next){
- Mat4MulVecfl(mat, ebone->head);
- Mat4MulVecfl(mat, ebone->tail);
+ mul_m4_v3(mat, ebone->head);
+ mul_m4_v3(mat, ebone->tail);
ebone->rad_head *= scale;
ebone->rad_tail *= scale;
@@ -429,8 +452,8 @@ void docenter_armature (Scene *scene, View3D *v3d, Object *ob, int centermode)
if (centermode == 2) {
float *fp= give_cursor(scene, v3d);
VECCOPY(cent, fp);
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulVecfl(ob->imat, cent);
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_m4_v3(ob->imat, cent);
}
else {
INIT_MINMAX(min, max);
@@ -447,8 +470,8 @@ void docenter_armature (Scene *scene, View3D *v3d, Object *ob, int centermode)
/* Do the adjustments */
for (ebone= arm->edbo->first; ebone; ebone=ebone->next) {
- VecSubf(ebone->head, ebone->head, cent);
- VecSubf(ebone->tail, ebone->tail, cent);
+ sub_v3_v3v3(ebone->head, ebone->head, cent);
+ sub_v3_v3v3(ebone->tail, ebone->tail, cent);
}
/* Turn the list into an armature */
@@ -456,9 +479,9 @@ void docenter_armature (Scene *scene, View3D *v3d, Object *ob, int centermode)
/* Adjust object location for new centerpoint */
if(centermode && obedit==NULL) {
- Mat3CpyMat4(omat, ob->obmat);
+ copy_m3_m4(omat, ob->obmat);
- Mat3MulVecfl(omat, cent);
+ mul_m3_v3(omat, cent);
ob->loc[0] += cent[0];
ob->loc[1] += cent[1];
ob->loc[2] += cent[2];
@@ -524,7 +547,7 @@ static void applyarmature_fix_boneparents (Scene *scene, Object *armob)
ED_object_apply_obmat(ob);
what_does_parent(scene, ob, &workob);
- Mat4Invert(ob->parentinv, workob.obmat);
+ invert_m4_m4(ob->parentinv, workob.obmat);
}
}
}
@@ -572,16 +595,16 @@ static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op)
float delta[3], eul[3];
/* obtain new auto y-rotation */
- VecSubf(delta, curbone->tail, curbone->head);
+ sub_v3_v3v3(delta, curbone->tail, curbone->head);
vec_roll_to_mat3(delta, 0.0f, premat);
- Mat3Inv(imat, premat);
+ invert_m3_m3(imat, premat);
/* get pchan 'visual' matrix */
- Mat3CpyMat4(pmat, pchan->pose_mat);
+ copy_m3_m4(pmat, pchan->pose_mat);
/* remove auto from visual and get euler rotation */
- Mat3MulMat3(tmat, imat, pmat);
- Mat3ToEul(tmat, eul);
+ mul_m3_m3m3(tmat, imat, pmat);
+ mat3_to_eul( eul,tmat);
/* just use this euler-y as new roll value */
curbone->roll= eul[1];
@@ -597,8 +620,9 @@ static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op)
curbone->flag |= BONE_UNKEYED;
}
- /* convert editbones back to bones */
+ /* convert editbones back to bones, and then free the edit-data */
ED_armature_from_edit(ob);
+ ED_armature_edit_free(ob);
/* flush positions of posebones */
where_is_pose(scene, ob);
@@ -769,8 +793,8 @@ int join_armature_exec(bContext *C, wmOperator *op)
//BASACT->flag &= ~OB_MODE_POSE;
/* Find the difference matrix */
- Mat4Invert(oimat, ob->obmat);
- Mat4MulMat4(mat, base->object->obmat, oimat);
+ invert_m4_m4(oimat, ob->obmat);
+ mul_m4_m4m4(mat, base->object->obmat, oimat);
/* Copy bones and posechannels from the object to the edit armature */
for (pchan=opose->chanbase.first; pchan; pchan=pchann) {
@@ -790,23 +814,23 @@ int join_armature_exec(bContext *C, wmOperator *op)
float delta[3];
/* Get the premat */
- VecSubf(delta, curbone->tail, curbone->head);
+ sub_v3_v3v3(delta, curbone->tail, curbone->head);
vec_roll_to_mat3(delta, curbone->roll, temp);
- Mat4One(premat); /* Mat4MulMat34 only sets 3x3 part */
- Mat4MulMat34(premat, temp, mat);
+ unit_m4(premat); /* Mat4MulMat34 only sets 3x3 part */
+ mul_m4_m3m4(premat, temp, mat);
- Mat4MulVecfl(mat, curbone->head);
- Mat4MulVecfl(mat, curbone->tail);
+ mul_m4_v3(mat, curbone->head);
+ mul_m4_v3(mat, curbone->tail);
/* Get the postmat */
- VecSubf(delta, curbone->tail, curbone->head);
+ sub_v3_v3v3(delta, curbone->tail, curbone->head);
vec_roll_to_mat3(delta, curbone->roll, temp);
- Mat4CpyMat3(postmat, temp);
+ copy_m4_m3(postmat, temp);
/* Find the roll */
- Mat4Invert(imat, premat);
- Mat4MulMat4(difmat, postmat, imat);
+ invert_m4_m4(imat, premat);
+ mul_m4_m4m4(difmat, postmat, imat);
curbone->roll -= (float)atan2(difmat[2][0], difmat[2][2]);
}
@@ -1025,11 +1049,10 @@ static void separate_armature_bones (Scene *scene, Object *ob, short sel)
}
/* free any of the extra-data this pchan might have */
- if (pchan->path) MEM_freeN(pchan->path);
- free_constraints(&pchan->constraints);
+ free_pose_channel(pchan);
/* get rid of unneeded bone */
- free_edit_bone(arm, curbone);
+ bone_free(arm, curbone);
BLI_freelinkN(&ob->pose->chanbase, pchan);
}
}
@@ -1294,7 +1317,7 @@ static int pose_setflag_exec (bContext *C, wmOperator *op)
int mode= RNA_enum_get(op->ptr, "mode");
/* loop over all selected pchans */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
{
bone_setflag(&pchan->bone->flag, flag, mode);
}
@@ -1665,22 +1688,6 @@ static EditBone *get_nearest_editbonepoint (ViewContext *vc, short mval[2], List
return NULL;
}
-/* warning, wont clear the active bone */
-static void delete_bone(bArmature *arm, EditBone* exBone)
-{
- EditBone *curBone;
-
- /* Find any bones that refer to this bone */
- for (curBone=arm->edbo->first; curBone; curBone=curBone->next) {
- if (curBone->parent==exBone) {
- curBone->parent=exBone->parent;
- curBone->flag &= ~BONE_CONNECTED;
- }
- }
-
- free_edit_bone(arm, exBone);
-}
-
/* context: editmode armature */
EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo)
{
@@ -1733,17 +1740,17 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op)
/* First erase any associated pose channel */
if (obedit->pose) {
- bPoseChannel *chan, *next;
- for (chan=obedit->pose->chanbase.first; chan; chan=next) {
- next= chan->next;
- curBone = editbone_name_exists(arm->edbo, chan->name);
+ bPoseChannel *pchan, *next;
+ for (pchan=obedit->pose->chanbase.first; pchan; pchan=next) {
+ next= pchan->next;
+ curBone = editbone_name_exists(arm->edbo, pchan->name);
if (curBone && (curBone->flag & BONE_SELECTED) && (arm->layer & curBone->layer)) {
- free_constraints(&chan->constraints);
- BLI_freelinkN (&obedit->pose->chanbase, chan);
+ free_pose_channel(pchan);
+ BLI_freelinkN (&obedit->pose->chanbase, pchan);
}
else {
- for (con= chan->constraints.first; con; con= con->next) {
+ for (con= pchan->constraints.first; con; con= con->next) {
bConstraintTypeInfo *cti= constraint_get_typeinfo(con);
ListBase targets = {NULL, NULL};
bConstraintTarget *ct;
@@ -1777,7 +1784,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op)
if (arm->layer & curBone->layer) {
if (curBone->flag & BONE_SELECTED) {
if(curBone==arm->act_edbone) arm->act_edbone= NULL;
- delete_bone(arm, curBone);
+ ED_armature_edit_bone_remove(arm, curBone);
}
}
}
@@ -1869,7 +1876,7 @@ void ED_armature_deselectall(Object *obedit, int toggle, int doundo)
/* context: editmode armature in view3d */
-void mouse_armature(bContext *C, short mval[2], int extend)
+int mouse_armature(bContext *C, short mval[2], int extend)
{
Object *obedit= CTX_data_edit_object(C);
bArmature *arm= obedit->data;
@@ -1940,7 +1947,10 @@ void mouse_armature(bContext *C, short mval[2], int extend)
}
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, vc.obedit);
+ return 1;
}
+
+ return 0;
}
void ED_armature_edit_free(struct Object *ob)
@@ -1997,16 +2007,16 @@ float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3])
float mat[3][3], nor[3], up_axis[3], vec[3];
float roll;
- VecSubf(nor, bone->tail, bone->head);
+ sub_v3_v3v3(nor, bone->tail, bone->head);
vec_roll_to_mat3(nor, 0, mat);
VECCOPY(up_axis, mat[2]);
- roll = NormalizedVecAngle2(new_up_axis, up_axis);
+ roll = angle_normalized_v3v3(new_up_axis, up_axis);
- Crossf(vec, up_axis, new_up_axis);
+ cross_v3_v3v3(vec, up_axis, new_up_axis);
- if (Inpf(vec, nor) < 0)
+ if (dot_v3v3(vec, nor) < 0)
{
roll = -roll;
}
@@ -2023,21 +2033,21 @@ void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone)
float targetmat[3][3], imat[3][3], diffmat[3][3];
/* Find the current bone matrix */
- VecSubf(delta, ebone->tail, ebone->head);
+ sub_v3_v3v3(delta, ebone->tail, ebone->head);
vec_roll_to_mat3(delta, 0.0f, curmat);
/* Make new matrix based on y axis & z-up */
VECCOPY(yaxis, curmat[1]);
- Mat3One(targetmat);
+ unit_m3(targetmat);
VECCOPY(targetmat[0], xaxis);
VECCOPY(targetmat[1], yaxis);
VECCOPY(targetmat[2], zaxis);
- Mat3Ortho(targetmat);
+ normalize_m3(targetmat);
/* Find the difference between the two matrices */
- Mat3Inv(imat, targetmat);
- Mat3MulMat3(diffmat, imat, curmat);
+ invert_m3_m3(imat, targetmat);
+ mul_m3_m3m3(diffmat, imat, curmat);
// old-method... let's see if using mat3_to_vec_roll is more accurate
//ebone->roll = atan2(diffmat[2][0], diffmat[2][2]);
@@ -2055,28 +2065,28 @@ void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone)
float vec[3];
/* find the current bone matrix as a 4x4 matrix (in Armature Space) */
- VecSubf(delta, ebone->tail, ebone->head);
+ sub_v3_v3v3(delta, ebone->tail, ebone->head);
vec_roll_to_mat3(delta, ebone->roll, curmat);
- Mat4CpyMat3(mat, curmat);
+ copy_m4_m3(mat, curmat);
VECCOPY(mat[3], ebone->head);
/* multiply bone-matrix by object matrix (so that bone-matrix is in WorldSpace) */
- Mat4MulMat4(tmat, mat, obedit->obmat);
- Mat4Invert(imat, tmat);
+ mul_m4_m4m4(tmat, mat, obedit->obmat);
+ invert_m4_m4(imat, tmat);
/* find position of cursor relative to bone */
- VecMat4MulVecfl(vec, imat, cursor);
+ mul_v3_m4v3(vec, imat, cursor);
/* check that cursor is in usable position */
if ((IS_EQ(vec[0], 0)==0) && (IS_EQ(vec[2], 0)==0)) {
/* Compute a rotation matrix around y */
rot[1] = (float)atan2(vec[0], vec[2]);
rot[0] = rot[2] = 0.0f;
- EulToMat4(rot, rmat);
+ eul_to_mat4( rmat,rot);
/* Multiply the bone matrix by rotation matrix. This should be new bone-matrix */
- Mat4MulMat4(tmat, rmat, mat);
- Mat3CpyMat4(curmat, tmat);
+ mul_m4_m4m4(tmat, rmat, mat);
+ copy_m3_m4(curmat, tmat);
/* Now convert from new bone-matrix, back to a roll value (in radians) */
mat3_to_vec_roll(curmat, delta, &ebone->roll);
@@ -2236,7 +2246,7 @@ void undo_push_armature(bContext *C, char *name)
/* *************** Adding stuff in editmode *************** */
/* default bone add, returns it selected, but without tail set */
-EditBone *addEditBone(bArmature *arm, char *name)
+EditBone *ED_armature_edit_bone_add(bArmature *arm, char *name)
{
EditBone *bone= MEM_callocN(sizeof(EditBone), "eBone");
@@ -2260,14 +2270,6 @@ EditBone *addEditBone(bArmature *arm, char *name)
return bone;
}
-/* default bone add, returns it selected, but without tail set */
-static EditBone *add_editbone(Object *obedit, char *name)
-{
- bArmature *arm= obedit->data;
-
- return addEditBone(arm, name);
-}
-
/* v3d and rv3d are allowed to be NULL */
void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d)
{
@@ -2278,28 +2280,28 @@ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d)
VECCOPY(curs, give_cursor(scene, v3d));
/* Get inverse point for head and orientation for tail */
- Mat4Invert(obedit->imat, obedit->obmat);
- Mat4MulVecfl(obedit->imat, curs);
+ invert_m4_m4(obedit->imat, obedit->obmat);
+ mul_m4_v3(obedit->imat, curs);
if (rv3d && (U.flag & USER_ADD_VIEWALIGNED))
- Mat3CpyMat4(obmat, rv3d->viewmat);
- else Mat3One(obmat);
+ copy_m3_m4(obmat, rv3d->viewmat);
+ else unit_m3(obmat);
- Mat3CpyMat4(viewmat, obedit->obmat);
- Mat3MulMat3(totmat, obmat, viewmat);
- Mat3Inv(imat, totmat);
+ copy_m3_m4(viewmat, obedit->obmat);
+ mul_m3_m3m3(totmat, obmat, viewmat);
+ invert_m3_m3(imat, totmat);
ED_armature_deselectall(obedit, 0, 0);
/* Create a bone */
- bone= add_editbone(obedit, "Bone");
+ bone= ED_armature_edit_bone_add(obedit->data, "Bone");
VECCOPY(bone->head, curs);
if (rv3d && (U.flag & USER_ADD_VIEWALIGNED))
- VecAddf(bone->tail, bone->head, imat[1]); // bone with unit length 1
+ add_v3_v3v3(bone->tail, bone->head, imat[1]); // bone with unit length 1
else
- VecAddf(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z
+ add_v3_v3v3(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z
}
@@ -2358,7 +2360,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *op)
}
}
- newbone= add_editbone(obedit, ebone->name);
+ newbone= ED_armature_edit_bone_add(arm, ebone->name);
arm->act_edbone= newbone;
if (to_root) {
@@ -2375,16 +2377,16 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *op)
curs= give_cursor(scene, v3d);
VECCOPY(newbone->tail, curs);
- VecSubf(newbone->tail, newbone->tail, obedit->obmat[3]);
+ sub_v3_v3v3(newbone->tail, newbone->tail, obedit->obmat[3]);
if (a==1)
newbone->tail[0]= -newbone->tail[0];
- Mat3CpyMat4(mat, obedit->obmat);
- Mat3Inv(imat, mat);
- Mat3MulVecfl(imat, newbone->tail);
+ copy_m3_m4(mat, obedit->obmat);
+ invert_m3_m3(imat, mat);
+ mul_m3_v3(imat, newbone->tail);
- newbone->length= VecLenf(newbone->head, newbone->tail);
+ newbone->length= len_v3v3(newbone->head, newbone->tail);
newbone->rad_tail= newbone->length*0.05f;
newbone->dist= newbone->length*0.25f;
@@ -2429,7 +2431,7 @@ static int armature_click_extrude_invoke(bContext *C, wmOperator *op, wmEvent *e
if(mval[0]!=IS_CLIPPED) {
window_to_3d_delta(ar, dvec, mval[0]-mx, mval[1]-my);
- VecSubf(fp, fp, dvec);
+ sub_v3_v3v3(fp, fp, dvec);
}
else {
@@ -2475,7 +2477,7 @@ static EditBone *add_points_bone (Object *obedit, float head[], float tail[])
{
EditBone *ebo;
- ebo= add_editbone(obedit, "Bone");
+ ebo= ED_armature_edit_bone_add(obedit->data, "Bone");
VECCOPY(ebo->head, head);
VECCOPY(ebo->tail, tail);
@@ -2522,12 +2524,12 @@ void updateDuplicateSubtargetObjects(EditBone *dupBone, ListBase *editbones, Obj
* they point to has also been duplicated
*/
EditBone *oldtarget, *newtarget;
- bPoseChannel *chan;
+ bPoseChannel *pchan;
bConstraint *curcon;
ListBase *conlist;
- if ( (chan = verify_pose_channel(dst_ob->pose, dupBone->name)) ) {
- if ( (conlist = &chan->constraints) ) {
+ if ( (pchan = verify_pose_channel(dst_ob->pose, dupBone->name)) ) {
+ if ( (conlist = &pchan->constraints) ) {
for (curcon = conlist->first; curcon; curcon=curcon->next) {
/* does this constraint have a subtarget in
* this armature?
@@ -2572,7 +2574,7 @@ void updateDuplicateSubtarget(EditBone *dupBone, ListBase *editbones, Object *ob
EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *editbones, Object *src_ob, Object *dst_ob)
{
- EditBone *eBone = MEM_callocN(sizeof(EditBone), "addup_editbone");
+ EditBone *eBone = MEM_mallocN(sizeof(EditBone), "addup_editbone");
/* Copy data from old bone to new bone */
memcpy(eBone, curBone, sizeof(EditBone));
@@ -2588,45 +2590,25 @@ EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *edit
unique_editbone_name(editbones, eBone->name, NULL);
BLI_addtail(editbones, eBone);
+ /* copy the ID property */
+ if(curBone->prop)
+ eBone->prop= IDP_CopyProperty(curBone->prop);
+
/* Lets duplicate the list of constraints that the
* current bone has.
*/
if (src_ob->pose) {
bPoseChannel *chanold, *channew;
- ListBase *listold, *listnew;
chanold = verify_pose_channel(src_ob->pose, curBone->name);
if (chanold) {
- listold = &chanold->constraints;
- if (listold) {
- /* WARNING: this creates a new posechannel, but there will not be an attached bone
- * yet as the new bones created here are still 'EditBones' not 'Bones'.
- */
- channew =
- verify_pose_channel(dst_ob->pose, eBone->name);
- if (channew) {
- /* copy transform locks */
- channew->protectflag = chanold->protectflag;
-
- /* copy bone group */
- channew->agrp_index= chanold->agrp_index;
-
- /* ik (dof) settings */
- channew->ikflag = chanold->ikflag;
- VECCOPY(channew->limitmin, chanold->limitmin);
- VECCOPY(channew->limitmax, chanold->limitmax);
- VECCOPY(channew->stiffness, chanold->stiffness);
- channew->ikstretch= chanold->ikstretch;
- channew->ikrotweight= chanold->ikrotweight;
- channew->iklinweight= chanold->iklinweight;
-
- /* constraints */
- listnew = &channew->constraints;
- copy_constraints(listnew, listold);
-
- /* custom shape */
- channew->custom= chanold->custom;
- }
+ /* WARNING: this creates a new posechannel, but there will not be an attached bone
+ * yet as the new bones created here are still 'EditBones' not 'Bones'.
+ */
+ channew= verify_pose_channel(dst_ob->pose, eBone->name);
+
+ if(channew) {
+ duplicate_pose_channel_data(channew, chanold);
}
}
}
@@ -2676,65 +2658,12 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op)
for (curBone=arm->edbo->first; curBone && curBone!=firstDup; curBone=curBone->next) {
if (EBONE_VISIBLE(arm, curBone)) {
if (curBone->flag & BONE_SELECTED) {
- eBone=MEM_callocN(sizeof(EditBone), "addup_editbone");
- eBone->flag |= BONE_SELECTED;
-
- /* Copy data from old bone to new bone */
- memcpy(eBone, curBone, sizeof(EditBone));
- curBone->temp = eBone;
- eBone->temp = curBone;
+ eBone= duplicateEditBone(curBone, curBone->name, arm->edbo, obedit);
- unique_editbone_name(arm->edbo, eBone->name, NULL);
- BLI_addtail(arm->edbo, eBone);
if (!firstDup)
firstDup=eBone;
- /* Lets duplicate the list of constraints that the
- * current bone has.
- */
- if (obedit->pose) {
- bPoseChannel *chanold, *channew;
- ListBase *listold, *listnew;
-
- chanold = verify_pose_channel(obedit->pose, curBone->name);
- if (chanold) {
- listold = &chanold->constraints;
- if (listold) {
- /* WARNING: this creates a new posechannel, but there will not be an attached bone
- * yet as the new bones created here are still 'EditBones' not 'Bones'.
- */
- channew =
- verify_pose_channel(obedit->pose, eBone->name);
- if (channew) {
- /* copy transform locks */
- channew->protectflag = chanold->protectflag;
-
- /* copy rotation mode */
- channew->rotmode = chanold->rotmode;
-
- /* copy bone group */
- channew->agrp_index= chanold->agrp_index;
-
- /* ik (dof) settings */
- channew->ikflag = chanold->ikflag;
- VECCOPY(channew->limitmin, chanold->limitmin);
- VECCOPY(channew->limitmax, chanold->limitmax);
- VECCOPY(channew->stiffness, chanold->stiffness);
- channew->ikstretch= chanold->ikstretch;
- channew->ikrotweight= chanold->ikrotweight;
- channew->iklinweight= chanold->iklinweight;
-
- /* constraints */
- listnew = &channew->constraints;
- copy_constraints(listnew, listold);
-
- /* custom shape */
- channew->custom= chanold->custom;
- }
- }
- }
- }
}
}
}
@@ -2885,7 +2814,7 @@ static void fill_add_joint (EditBone *ebo, short eb_tail, ListBase *points)
}
for (ebp= points->first; ebp; ebp= ebp->next) {
- if (VecEqual(ebp->vec, vec)) {
+ if (equals_v3v3(ebp->vec, vec)) {
if (eb_tail) {
if ((ebp->head_owner) && (ebp->head_owner->parent == ebo)) {
/* so this bone's tail owner is this bone */
@@ -2969,8 +2898,8 @@ static int armature_fill_bones_exec (bContext *C, wmOperator *op)
fp= give_cursor(scene, v3d);
VECCOPY (curs, fp);
- Mat4Invert(obedit->imat, obedit->obmat);
- Mat4MulVecfl(obedit->imat, curs);
+ invert_m4_m4(obedit->imat, obedit->obmat);
+ mul_m4_v3(obedit->imat, curs);
/* Create a bone */
newbone= add_points_bone(obedit, ebp->vec, curs);
@@ -3005,14 +2934,14 @@ static int armature_fill_bones_exec (bContext *C, wmOperator *op)
/* get cursor location */
VECCOPY(curs, fp);
- Mat4Invert(obedit->imat, obedit->obmat);
- Mat4MulVecfl(obedit->imat, curs);
+ invert_m4_m4(obedit->imat, obedit->obmat);
+ mul_m4_v3(obedit->imat, curs);
/* get distances */
- VecSubf(vecA, ebp->vec, curs);
- VecSubf(vecB, ebp2->vec, curs);
- distA= VecLength(vecA);
- distB= VecLength(vecB);
+ sub_v3_v3v3(vecA, ebp->vec, curs);
+ sub_v3_v3v3(vecB, ebp2->vec, curs);
+ distA= len_v3(vecA);
+ distB= len_v3(vecB);
/* compare distances - closer one therefore acts as direction for bone to go */
headtail= (distA < distB) ? 2 : 1;
@@ -3153,7 +3082,7 @@ static void bones_merge(Object *obedit, EditBone *start, EditBone *end, EditBone
/* step 3: delete all bones between and including start and end */
for (ebo= end; ebo; ebo= ebone) {
ebone= (ebo == start) ? (NULL) : (ebo->parent);
- free_edit_bone(arm, ebo);
+ bone_free(arm, ebo);
}
}
@@ -3494,28 +3423,28 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op)
VECCOPY(curs, give_cursor(CTX_data_scene(C),CTX_wm_view3d(C)));
/* Get inverse point for head and orientation for tail */
- Mat4Invert(obedit->imat, obedit->obmat);
- Mat4MulVecfl(obedit->imat, curs);
+ invert_m4_m4(obedit->imat, obedit->obmat);
+ mul_m4_v3(obedit->imat, curs);
if (rv3d && (U.flag & USER_ADD_VIEWALIGNED))
- Mat3CpyMat4(obmat, rv3d->viewmat);
- else Mat3One(obmat);
+ copy_m3_m4(obmat, rv3d->viewmat);
+ else unit_m3(obmat);
- Mat3CpyMat4(viewmat, obedit->obmat);
- Mat3MulMat3(totmat, obmat, viewmat);
- Mat3Inv(imat, totmat);
+ copy_m3_m4(viewmat, obedit->obmat);
+ mul_m3_m3m3(totmat, obmat, viewmat);
+ invert_m3_m3(imat, totmat);
ED_armature_deselectall(obedit, 0, 0);
/* Create a bone */
- bone= add_editbone(obedit, name);
+ bone= ED_armature_edit_bone_add(obedit->data, name);
VECCOPY(bone->head, curs);
if(rv3d && (U.flag & USER_ADD_VIEWALIGNED))
- VecAddf(bone->tail, bone->head, imat[1]); // bone with unit length 1
+ add_v3_v3v3(bone->tail, bone->head, imat[1]); // bone with unit length 1
else
- VecAddf(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z
+ add_v3_v3v3(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, obedit);
@@ -3748,7 +3677,7 @@ static int armature_switch_direction_exec(bContext *C, wmOperator *op)
* - connected flag is only set if points are coincidental
*/
ebo->parent= child;
- if ((child) && VecEqual(ebo->head, child->tail))
+ if ((child) && equals_v3v3(ebo->head, child->tail))
ebo->flag |= BONE_CONNECTED;
else
ebo->flag &= ~BONE_CONNECTED;
@@ -3834,12 +3763,12 @@ static void bone_connect_to_new_parent(ListBase *edbo, EditBone *selbone, EditBo
if (mode == ARM_PAR_CONNECT) {
/* Connected: Child bones will be moved to the parent tip */
selbone->flag |= BONE_CONNECTED;
- VecSubf(offset, actbone->tail, selbone->head);
+ sub_v3_v3v3(offset, actbone->tail, selbone->head);
VECCOPY(selbone->head, actbone->tail);
selbone->rad_head= actbone->rad_tail;
- VecAddf(selbone->tail, selbone->tail, offset);
+ add_v3_v3v3(selbone->tail, selbone->tail, offset);
/* offset for all its children */
for (ebone = edbo->first; ebone; ebone=ebone->next) {
@@ -3847,8 +3776,8 @@ static void bone_connect_to_new_parent(ListBase *edbo, EditBone *selbone, EditBo
for (par= ebone->parent; par; par= par->parent) {
if (par==selbone) {
- VecAddf(ebone->head, ebone->head, offset);
- VecAddf(ebone->tail, ebone->tail, offset);
+ add_v3_v3v3(ebone->head, ebone->head, offset);
+ add_v3_v3v3(ebone->tail, ebone->tail, offset);
break;
}
}
@@ -4199,13 +4128,13 @@ static void fix_connected_bone(EditBone *ebone)
{
float diff[3];
- if (!(ebone->parent) || !(ebone->flag & BONE_CONNECTED) || VecEqual(ebone->parent->tail, ebone->head))
+ if (!(ebone->parent) || !(ebone->flag & BONE_CONNECTED) || equals_v3v3(ebone->parent->tail, ebone->head))
return;
/* if the parent has moved we translate child's head and tail accordingly*/
- VecSubf(diff, ebone->parent->tail, ebone->head);
- VecAddf(ebone->head, ebone->head, diff);
- VecAddf(ebone->tail, ebone->tail, diff);
+ sub_v3_v3v3(diff, ebone->parent->tail, ebone->head);
+ add_v3_v3v3(ebone->head, ebone->head, diff);
+ add_v3_v3v3(ebone->tail, ebone->tail, diff);
return;
}
@@ -4227,14 +4156,14 @@ static void bone_align_to_bone(ListBase *edbo, EditBone *selbone, EditBone *actb
{
float selboneaxis[3], actboneaxis[3], length;
- VecSubf(actboneaxis, actbone->tail, actbone->head);
- Normalize(actboneaxis);
+ sub_v3_v3v3(actboneaxis, actbone->tail, actbone->head);
+ normalize_v3(actboneaxis);
- VecSubf(selboneaxis, selbone->tail, selbone->head);
- length = VecLength(selboneaxis);
+ sub_v3_v3v3(selboneaxis, selbone->tail, selbone->head);
+ length = len_v3(selboneaxis);
- VecMulf(actboneaxis, length);
- VecAddf(selbone->tail, selbone->head, actboneaxis);
+ mul_v3_fl(actboneaxis, length);
+ add_v3_v3v3(selbone->tail, selbone->head, actboneaxis);
selbone->roll = actbone->roll;
/* if the bone being aligned has connected descendants they must be moved
@@ -4720,10 +4649,10 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m
/* compute root and tip */
if (bbone) {
VECCOPY(root[j], bbone[segments].mat[3]);
- Mat4MulVecfl(bone->arm_mat, root[j]);
+ mul_m4_v3(bone->arm_mat, root[j]);
if ((segments+1) < bone->segments) {
VECCOPY(tip[j], bbone[segments+1].mat[3])
- Mat4MulVecfl(bone->arm_mat, tip[j]);
+ mul_m4_v3(bone->arm_mat, tip[j]);
}
else
VECCOPY(tip[j], bone->arm_tail)
@@ -4733,8 +4662,8 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m
VECCOPY(tip[j], bone->arm_tail);
}
- Mat4MulVecfl(par->obmat, root[j]);
- Mat4MulVecfl(par->obmat, tip[j]);
+ mul_m4_v3(par->obmat, root[j]);
+ mul_m4_v3(par->obmat, tip[j]);
/* set selected */
if (wpmode) {
@@ -4788,7 +4717,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m
for (i=0; i < mesh->totvert; i++) {
if (!vertsfilled)
VECCOPY(verts[i], mesh->mvert[i].co)
- Mat4MulVecfl(ob->obmat, verts[i]);
+ mul_m4_v3(ob->obmat, verts[i]);
}
/* compute the weights based on gathered vertices and bones */
@@ -4798,7 +4727,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m
}
else {
envelope_bone_weighting(ob, mesh, verts, numbones, bonelist, dgrouplist,
- dgroupflip, root, tip, selected, Mat4ToScalef(par->obmat));
+ dgroupflip, root, tip, selected, mat4_to_scale(par->obmat));
}
/* free the memory allocated */
@@ -4839,10 +4768,19 @@ void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par, int mod
static int pose_clear_scale_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
+ KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scaling");
+ bCommonKeySrc cks;
+ ListBase dsources = {&cks, &cks};
+
+ /* init common-key-source for use by KeyingSets */
+ memset(&cks, 0, sizeof(bCommonKeySrc));
+ cks.id= &ob->id;
+
/* only clear those channels that are not locked */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
if ((pchan->protectflag & OB_LOCK_SCALEX)==0)
pchan->size[0]= 1.0f;
if ((pchan->protectflag & OB_LOCK_SCALEY)==0)
@@ -4850,8 +4788,21 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op)
if ((pchan->protectflag & OB_LOCK_SCALEZ)==0)
pchan->size[2]= 1.0f;
- /* the current values from IPO's may not be zero, so tag as unkeyed */
- //pchan->bone->flag |= BONE_UNKEYED;
+ /* do auto-keyframing as appropriate */
+ if (autokeyframe_cfra_can_key(scene, &ob->id)) {
+ /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */
+ cks.pchan= pchan;
+ modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
+
+ /* clear any unkeyed tags */
+ if (pchan->bone)
+ pchan->bone->flag &= ~BONE_UNKEYED;
+ }
+ else {
+ /* add unkeyed tags */
+ if (pchan->bone)
+ pchan->bone->flag |= BONE_UNKEYED;
+ }
}
CTX_DATA_END;
@@ -4880,10 +4831,20 @@ void POSE_OT_scale_clear(wmOperatorType *ot)
static int pose_clear_loc_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
+ KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location");
+ bCommonKeySrc cks;
+ ListBase dsources = {&cks, &cks};
+
+ /* init common-key-source for use by KeyingSets */
+ memset(&cks, 0, sizeof(bCommonKeySrc));
+ cks.id= &ob->id;
+
/* only clear those channels that are not locked */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
+ /* clear location */
if ((pchan->protectflag & OB_LOCK_LOCX)==0)
pchan->loc[0]= 0.0f;
if ((pchan->protectflag & OB_LOCK_LOCY)==0)
@@ -4891,8 +4852,21 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op)
if ((pchan->protectflag & OB_LOCK_LOCZ)==0)
pchan->loc[2]= 0.0f;
- /* the current values from IPO's may not be zero, so tag as unkeyed */
- //pchan->bone->flag |= BONE_UNKEYED;
+ /* do auto-keyframing as appropriate */
+ if (autokeyframe_cfra_can_key(scene, &ob->id)) {
+ /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */
+ cks.pchan= pchan;
+ modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
+
+ /* clear any unkeyed tags */
+ if (pchan->bone)
+ pchan->bone->flag &= ~BONE_UNKEYED;
+ }
+ else {
+ /* add unkeyed tags */
+ if (pchan->bone)
+ pchan->bone->flag |= BONE_UNKEYED;
+ }
}
CTX_DATA_END;
@@ -4921,10 +4895,19 @@ void POSE_OT_loc_clear(wmOperatorType *ot)
static int pose_clear_rot_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
+ KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation");
+ bCommonKeySrc cks;
+ ListBase dsources = {&cks, &cks};
+
+ /* init common-key-source for use by KeyingSets */
+ memset(&cks, 0, sizeof(bCommonKeySrc));
+ cks.id= &ob->id;
+
/* only clear those channels that are not locked */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
if (pchan->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) {
/* check if convert to eulers for locking... */
if (pchan->protectflag & OB_LOCK_ROT4D) {
@@ -4969,10 +4952,10 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op)
if (pchan->rotmode == ROT_MODE_QUAT) {
QUATCOPY(quat1, pchan->quat);
- QuatToEul(pchan->quat, oldeul);
+ quat_to_eul( oldeul,pchan->quat);
}
else if (pchan->rotmode == ROT_MODE_AXISANGLE) {
- AxisAngleToEulO(pchan->rotAxis, pchan->rotAngle, oldeul, EULER_ORDER_DEFAULT);
+ axis_angle_to_eulO( oldeul, EULER_ORDER_DEFAULT,pchan->rotAxis, pchan->rotAngle);
}
else {
VECCOPY(oldeul, pchan->eul);
@@ -4988,14 +4971,14 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op)
eul[2]= oldeul[2];
if (pchan->rotmode == ROT_MODE_QUAT) {
- EulToQuat(eul, pchan->quat);
+ eul_to_quat( pchan->quat,eul);
/* quaternions flip w sign to accumulate rotations correctly */
if ((quat1[0]<0.0f && pchan->quat[0]>0.0f) || (quat1[0]>0.0f && pchan->quat[0]<0.0f)) {
- QuatMulf(pchan->quat, -1.0f);
+ mul_qt_fl(pchan->quat, -1.0f);
}
}
else if (pchan->rotmode == ROT_MODE_AXISANGLE) {
- EulOToAxisAngle(eul, EULER_ORDER_DEFAULT, pchan->rotAxis, &pchan->rotAngle);
+ eulO_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,eul, EULER_ORDER_DEFAULT);
}
else {
VECCOPY(pchan->eul, eul);
@@ -5017,8 +5000,21 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op)
}
}
- /* the current values from IPO's may not be zero, so tag as unkeyed */
- //pchan->bone->flag |= BONE_UNKEYED;
+ /* do auto-keyframing as appropriate */
+ if (autokeyframe_cfra_can_key(scene, &ob->id)) {
+ /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */
+ cks.pchan= pchan;
+ modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
+
+ /* clear any unkeyed tags */
+ if (pchan->bone)
+ pchan->bone->flag &= ~BONE_UNKEYED;
+ }
+ else {
+ /* add unkeyed tags */
+ if (pchan->bone)
+ pchan->bone->flag |= BONE_UNKEYED;
+ }
}
CTX_DATA_END;
@@ -5052,7 +5048,7 @@ static int pose_select_inverse_exec(bContext *C, wmOperator *op)
{
/* Set the flags */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) {
if ((pchan->bone->flag & BONE_UNSELECTABLE) == 0) {
pchan->bone->flag ^= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
}
@@ -5083,12 +5079,12 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op)
{
int sel=1;
- /* Determine if there are any selected bones
- And therefore whether we are selecting or deselecting */
- if (CTX_DATA_COUNT(C, selected_pchans) > 0) sel=0;
+ /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */
+ // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared...
+ if (CTX_DATA_COUNT(C, selected_pose_bones) > 1) sel=0;
/* Set the flags */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) {
/* select pchan only if selectable, but deselect works always */
if (sel==0) {
pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
@@ -5125,7 +5121,7 @@ static int pose_select_parent_exec(bContext *C, wmOperator *op)
bPoseChannel *pchan,*parent;
/* Determine if there is an active bone */
- pchan=CTX_data_active_pchan(C);
+ pchan=CTX_data_active_pose_bone(C);
if (pchan) {
bArmature *arm= ob->data;
parent=pchan->parent;
@@ -5411,7 +5407,7 @@ void ED_armature_bone_rename(bArmature *arm, char *oldnamep, char *newnamep)
// TODO: should we be using the database wide version instead (since drivers may break)
if (ob->adt) {
/* posechannels only... */
- BKE_animdata_fix_paths_rename(&ob->id, ob->adt, "pose.pose_channels", oldname, newname);
+ BKE_animdata_fix_paths_rename(&ob->id, ob->adt, "pose.bones", oldname, newname);
}
}
}
@@ -5599,7 +5595,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode
EditBone *root = NULL;
float angleLimit = (float)cos(scene->toolsettings->skgen_angle_limit * M_PI / 180.0f);
- parent = add_editbone(obedit, "Bone");
+ parent = ED_armature_edit_bone_add(arm, "Bone");
parent->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
VECCOPY(parent->head, head->p);
@@ -5618,17 +5614,17 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode
current = iter->p;
- VecSubf(vec1, previous, parent->head);
- VecSubf(vec2, current, previous);
+ sub_v3_v3v3(vec1, previous, parent->head);
+ sub_v3_v3v3(vec2, current, previous);
- len1 = Normalize(vec1);
- len2 = Normalize(vec2);
+ len1 = normalize_v3(vec1);
+ len2 = normalize_v3(vec2);
- if (len1 > 0.0f && len2 > 0.0f && Inpf(vec1, vec2) < angleLimit)
+ if (len1 > 0.0f && len2 > 0.0f && dot_v3v3(vec1, vec2) < angleLimit)
{
VECCOPY(parent->tail, previous);
- child = add_editbone(obedit, "Bone");
+ child = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(child->head, parent->tail);
child->parent = parent;
child->flag |= BONE_CONNECTED|BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
@@ -5644,7 +5640,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode
if (parent == root)
{
if(parent==arm->act_edbone) arm->act_edbone= NULL;
- delete_bone(arm, parent);
+ ED_armature_edit_bone_remove(arm, parent);
parent = NULL;
}
@@ -5685,18 +5681,18 @@ float arcLengthRatio(ReebArc *arc)
float embedLength = 0.0f;
int i;
- arcLength = VecLenf(arc->head->p, arc->tail->p);
+ arcLength = len_v3v3(arc->head->p, arc->tail->p);
if (arc->bcount > 0)
{
/* Add the embedding */
for ( i = 1; i < arc->bcount; i++)
{
- embedLength += VecLenf(arc->buckets[i - 1].p, arc->buckets[i].p);
+ embedLength += len_v3v3(arc->buckets[i - 1].p, arc->buckets[i].p);
}
/* Add head and tail -> embedding vectors */
- embedLength += VecLenf(arc->head->p, arc->buckets[0].p);
- embedLength += VecLenf(arc->tail->p, arc->buckets[arc->bcount - 1].p);
+ embedLength += len_v3v3(arc->head->p, arc->buckets[0].p);
+ embedLength += len_v3v3(arc->tail->p, arc->buckets[arc->bcount - 1].p);
}
else
{
@@ -5756,8 +5752,8 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg)
/* Copy orientation from source */
VECCOPY(dst->loc, src->obmat[3]);
- Mat4ToEul(src->obmat, dst->rot);
- Mat4ToSize(src->obmat, dst->size);
+ mat4_to_eul( dst->rot,src->obmat);
+ mat4_to_size( dst->size,src->obmat);
where_is_object(scene, obedit);
@@ -5834,7 +5830,7 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg)
if (lastBone == NULL)
{
EditBone *bone;
- bone = add_editbone(obedit, "Bone");
+ bone = ED_armature_edit_bone_add(obedit->data, "Bone");
bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
VECCOPY(bone->head, head->p);
diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c
index d327ed34839..41907cf06a3 100644
--- a/source/blender/editors/armature/editarmature_generate.c
+++ b/source/blender/editors/armature/editarmature_generate.c
@@ -39,7 +39,7 @@
#include "DNA_armature_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_graph.h"
#include "BKE_utildefines.h"
@@ -52,18 +52,18 @@
void setBoneRollFromNormal(EditBone *bone, float *no, float invmat[][4], float tmat[][3])
{
- if (no != NULL && !VecIsNull(no))
+ if (no != NULL && !is_zero_v3(no))
{
float tangent[3], vec[3], normal[3];
VECCOPY(normal, no);
- Mat3MulVecfl(tmat, normal);
+ mul_m3_v3(tmat, normal);
- VecSubf(tangent, bone->tail, bone->head);
- Projf(vec, tangent, normal);
- VecSubf(normal, normal, vec);
+ sub_v3_v3v3(tangent, bone->tail, bone->head);
+ project_v3_v3v3(vec, tangent, normal);
+ sub_v3_v3v3(normal, normal, vec);
- Normalize(normal);
+ normalize_v3(normal);
bone->roll = ED_rollBoneToVector(bone, normal);
}
@@ -86,11 +86,11 @@ float calcArcCorrelation(BArcIterator *iter, int start, int end, float v0[3], fl
float v[3];
IT_peek(iter, i);
- VecSubf(v, iter->p, v0);
- avg_t += Inpf(v, n);
+ sub_v3_v3v3(v, iter->p, v0);
+ avg_t += dot_v3v3(v, n);
}
- avg_t /= Inpf(n, n);
+ avg_t /= dot_v3v3(n, n);
avg_t += 1.0f; /* adding start (0) and end (1) values */
avg_t /= len;
@@ -101,14 +101,14 @@ float calcArcCorrelation(BArcIterator *iter, int start, int end, float v0[3], fl
float dt;
IT_peek(iter, i);
- VecSubf(v, iter->p, v0);
- Projf(d, v, n);
- VecSubf(v, v, d);
+ sub_v3_v3v3(v, iter->p, v0);
+ project_v3_v3v3(d, v, n);
+ sub_v3_v3v3(v, v, d);
- dt = VecLength(d) - avg_t;
+ dt = len_v3(d) - avg_t;
s_t += dt * dt;
- s_xyz += Inpf(v, v);
+ s_xyz += dot_v3v3(v, v);
}
/* adding start(0) and end(1) values to s_t */
@@ -143,7 +143,7 @@ int nextFixedSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int sta
IT_peek(iter, i);
v2 = iter->p;
- stroke_length += VecLenf(v1, v2);
+ stroke_length += len_v3v3(v1, v2);
v1 = v2;
}
@@ -165,7 +165,7 @@ int nextFixedSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int sta
IT_peek(iter, i);
v2 = iter->p;
- current_length += VecLenf(v1, v2);
+ current_length += len_v3v3(v1, v2);
if (current_length >= length_threshold)
{
@@ -194,7 +194,7 @@ int nextAdaptativeSubdivision(ToolSettings *toolsettings, BArcIterator *iter, in
{
/* Calculate normal */
IT_peek(iter, i);
- VecSubf(n, iter->p, head);
+ sub_v3_v3v3(n, iter->p, head);
if (calcArcCorrelation(iter, start, i, start_p, n) < correlation_threshold)
{
@@ -226,7 +226,7 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st
vec1 = iter->p;
/* If lengthLimit hits the current segment */
- if (VecLenf(vec1, head) > lengthLimit)
+ if (len_v3v3(vec1, head) > lengthLimit)
{
if (same == 0)
{
@@ -234,13 +234,13 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st
float a, b, c, f;
/* Solve quadratic distance equation */
- VecSubf(dv, vec1, vec0);
- a = Inpf(dv, dv);
+ sub_v3_v3v3(dv, vec1, vec0);
+ a = dot_v3v3(dv, dv);
- VecSubf(off, vec0, head);
- b = 2 * Inpf(dv, off);
+ sub_v3_v3v3(off, vec0, head);
+ b = 2 * dot_v3v3(dv, off);
- c = Inpf(off, off) - (lengthLimit * lengthLimit);
+ c = dot_v3v3(off, off) - (lengthLimit * lengthLimit);
f = (-b + (float)sqrt(b * b - 4 * a * c)) / (2 * a);
@@ -249,8 +249,8 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st
if (isnan(f) == 0 && f < 1.0f)
{
VECCOPY(p, dv);
- VecMulf(p, f);
- VecAddf(p, p, vec0);
+ mul_v3_fl(p, f);
+ add_v3_v3v3(p, p, vec0);
}
else
{
@@ -261,12 +261,12 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st
{
float dv[3];
- VecSubf(dv, vec1, vec0);
- Normalize(dv);
+ sub_v3_v3v3(dv, vec1, vec0);
+ normalize_v3(dv);
VECCOPY(p, dv);
- VecMulf(p, lengthLimit);
- VecAddf(p, p, head);
+ mul_v3_fl(p, lengthLimit);
+ add_v3_v3v3(p, p, head);
}
return i - 1; /* restart at lower bound */
@@ -294,7 +294,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
IT_head(iter);
- parent = addEditBone(arm, "Bone");
+ parent = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(parent->head, iter->p);
if (iter->size > 0)
@@ -309,7 +309,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
{
IT_peek(iter, index);
- child = addEditBone(arm, "Bone");
+ child = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(child->head, parent->tail);
child->parent = parent;
child->flag |= BONE_CONNECTED;
@@ -321,8 +321,8 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
}
/* going to next bone, fix parent */
- Mat4MulVecfl(invmat, parent->tail);
- Mat4MulVecfl(invmat, parent->head);
+ mul_m4_v3(invmat, parent->tail);
+ mul_m4_v3(invmat, parent->head);
setBoneRollFromNormal(parent, normal, invmat, tmat);
parent = child; // new child is next parent
@@ -342,8 +342,8 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
}
/* fix last bone */
- Mat4MulVecfl(invmat, parent->tail);
- Mat4MulVecfl(invmat, parent->head);
+ mul_m4_v3(invmat, parent->tail);
+ mul_m4_v3(invmat, parent->head);
setBoneRollFromNormal(parent, iter->no, invmat, tmat);
lastBone = parent;
diff --git a/source/blender/editors/armature/editarmature_retarget.c b/source/blender/editors/armature/editarmature_retarget.c
index 824e7be94d9..946b7398773 100644
--- a/source/blender/editors/armature/editarmature_retarget.c
+++ b/source/blender/editors/armature/editarmature_retarget.c
@@ -48,7 +48,7 @@
#include "DNA_view3d_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_ghash.h"
#include "BLI_graph.h"
@@ -162,7 +162,7 @@ void getEditBoneRollUpAxis(EditBone *bone, float roll, float up_axis[3])
{
float mat[3][3], nor[3];
- VecSubf(nor, bone->tail, bone->head);
+ sub_v3_v3v3(nor, bone->tail, bone->head);
vec_roll_to_mat3(nor, roll, mat);
VECCOPY(up_axis, mat[2]);
@@ -173,35 +173,35 @@ float rollBoneByQuatAligned(EditBone *bone, float old_up_axis[3], float qrot[4],
float nor[3], new_up_axis[3], x_axis[3], z_axis[3];
VECCOPY(new_up_axis, old_up_axis);
- QuatMulVecf(qrot, new_up_axis);
+ mul_qt_v3(qrot, new_up_axis);
- VecSubf(nor, bone->tail, bone->head);
+ sub_v3_v3v3(nor, bone->tail, bone->head);
- Crossf(x_axis, nor, aligned_axis);
- Crossf(z_axis, x_axis, nor);
+ cross_v3_v3v3(x_axis, nor, aligned_axis);
+ cross_v3_v3v3(z_axis, x_axis, nor);
- Normalize(new_up_axis);
- Normalize(x_axis);
- Normalize(z_axis);
+ normalize_v3(new_up_axis);
+ normalize_v3(x_axis);
+ normalize_v3(z_axis);
- if (Inpf(new_up_axis, x_axis) < 0)
+ if (dot_v3v3(new_up_axis, x_axis) < 0)
{
- VecMulf(x_axis, -1);
+ mul_v3_fl(x_axis, -1);
}
- if (Inpf(new_up_axis, z_axis) < 0)
+ if (dot_v3v3(new_up_axis, z_axis) < 0)
{
- VecMulf(z_axis, -1);
+ mul_v3_fl(z_axis, -1);
}
- if (NormalizedVecAngle2(x_axis, new_up_axis) < NormalizedVecAngle2(z_axis, new_up_axis))
+ if (angle_normalized_v3v3(x_axis, new_up_axis) < angle_normalized_v3v3(z_axis, new_up_axis))
{
- RotationBetweenVectorsToQuat(qroll, new_up_axis, x_axis); /* set roll rotation quat */
+ rotation_between_vecs_to_quat(qroll, new_up_axis, x_axis); /* set roll rotation quat */
return ED_rollBoneToVector(bone, x_axis);
}
else
{
- RotationBetweenVectorsToQuat(qroll, new_up_axis, z_axis); /* set roll rotation quat */
+ rotation_between_vecs_to_quat(qroll, new_up_axis, z_axis); /* set roll rotation quat */
return ED_rollBoneToVector(bone, z_axis);
}
}
@@ -220,11 +220,11 @@ float rollBoneByQuatJoint(RigEdge *edge, RigEdge *previous, float qrot[4], float
if (previous->bone)
{
- VecSubf(vec_first, previous->bone->tail, previous->bone->head);
+ sub_v3_v3v3(vec_first, previous->bone->tail, previous->bone->head);
}
else if (previous->prev->bone)
{
- VecSubf(vec_first, edge->bone->head, previous->prev->bone->tail);
+ sub_v3_v3v3(vec_first, edge->bone->head, previous->prev->bone->tail);
}
else
{
@@ -232,25 +232,25 @@ float rollBoneByQuatJoint(RigEdge *edge, RigEdge *previous, float qrot[4], float
return rollBoneByQuatAligned(edge->bone, edge->up_axis, qrot, qroll, up_axis);
}
- VecSubf(vec_second, edge->bone->tail, edge->bone->head);
+ sub_v3_v3v3(vec_second, edge->bone->tail, edge->bone->head);
- Normalize(vec_first);
- Normalize(vec_second);
+ normalize_v3(vec_first);
+ normalize_v3(vec_second);
- Crossf(normal, vec_first, vec_second);
- Normalize(normal);
+ cross_v3_v3v3(normal, vec_first, vec_second);
+ normalize_v3(normal);
- AxisAngleToQuat(qroll, vec_second, edge->up_angle);
+ axis_angle_to_quat(qroll, vec_second, edge->up_angle);
- QuatMulVecf(qroll, normal);
+ mul_qt_v3(qroll, normal);
VECCOPY(new_up_axis, edge->up_axis);
- QuatMulVecf(qrot, new_up_axis);
+ mul_qt_v3(qrot, new_up_axis);
- Normalize(new_up_axis);
+ normalize_v3(new_up_axis);
/* real qroll between normal and up_axis */
- RotationBetweenVectorsToQuat(qroll, new_up_axis, normal);
+ rotation_between_vecs_to_quat(qroll, new_up_axis, normal);
return ED_rollBoneToVector(edge->bone, normal);
}
@@ -261,9 +261,9 @@ float rollBoneByQuat(EditBone *bone, float old_up_axis[3], float qrot[4])
float new_up_axis[3];
VECCOPY(new_up_axis, old_up_axis);
- QuatMulVecf(qrot, new_up_axis);
+ mul_qt_v3(qrot, new_up_axis);
- Normalize(new_up_axis);
+ normalize_v3(new_up_axis);
return ED_rollBoneToVector(bone, new_up_axis);
}
@@ -431,7 +431,7 @@ static void RIG_appendEdgeToArc(RigArc *arc, RigEdge *edge)
RIG_calculateEdgeAngles(last_edge, edge);
}
- edge->length = VecLenf(edge->head, edge->tail);
+ edge->length = len_v3v3(edge->head, edge->tail);
arc->length += edge->length;
@@ -675,22 +675,22 @@ static void RIG_calculateEdgeAngles(RigEdge *edge_first, RigEdge *edge_second)
{
float vec_first[3], vec_second[3];
- VecSubf(vec_first, edge_first->tail, edge_first->head);
- VecSubf(vec_second, edge_second->tail, edge_second->head);
+ sub_v3_v3v3(vec_first, edge_first->tail, edge_first->head);
+ sub_v3_v3v3(vec_second, edge_second->tail, edge_second->head);
- Normalize(vec_first);
- Normalize(vec_second);
+ normalize_v3(vec_first);
+ normalize_v3(vec_second);
- edge_first->angle = NormalizedVecAngle2(vec_first, vec_second);
+ edge_first->angle = angle_normalized_v3v3(vec_first, vec_second);
if (edge_second->bone != NULL)
{
float normal[3];
- Crossf(normal, vec_first, vec_second);
- Normalize(normal);
+ cross_v3_v3v3(normal, vec_first, vec_second);
+ normalize_v3(normal);
- edge_second->up_angle = NormalizedVecAngle2(normal, edge_second->up_axis);
+ edge_second->up_angle = angle_normalized_v3v3(normal, edge_second->up_axis);
}
}
@@ -715,27 +715,27 @@ static int RIG_parentControl(RigControl *ctrl, EditBone *link)
float offset[3];
int flag = 0;
- VecSubf(offset, ctrl->bone->head, link->head);
+ sub_v3_v3v3(offset, ctrl->bone->head, link->head);
/* if root matches, check for direction too */
- if (Inpf(offset, offset) < 0.0001)
+ if (dot_v3v3(offset, offset) < 0.0001)
{
float vbone[3], vparent[3];
flag |= RIG_CTRL_FIT_ROOT;
- VecSubf(vbone, ctrl->bone->tail, ctrl->bone->head);
- VecSubf(vparent, link->tail, link->head);
+ sub_v3_v3v3(vbone, ctrl->bone->tail, ctrl->bone->head);
+ sub_v3_v3v3(vparent, link->tail, link->head);
/* test for opposite direction */
- if (Inpf(vbone, vparent) > 0)
+ if (dot_v3v3(vbone, vparent) > 0)
{
float nor[3];
float len;
- Crossf(nor, vbone, vparent);
+ cross_v3_v3v3(nor, vbone, vparent);
- len = Inpf(nor, nor);
+ len = dot_v3v3(nor, nor);
if (len < 0.0001)
{
flag |= RIG_CTRL_FIT_BONE;
@@ -869,8 +869,8 @@ static void RIG_reconnectControlBones(RigGraph *rg)
{
int fit = 0;
- fit = VecLenf(ctrl->bone->head, edge->bone->head) < 0.0001;
- fit = fit || VecLenf(ctrl->bone->tail, edge->bone->tail) < 0.0001;
+ fit = len_v3v3(ctrl->bone->head, edge->bone->head) < 0.0001;
+ fit = fit || len_v3v3(ctrl->bone->tail, edge->bone->tail) < 0.0001;
if (fit)
{
@@ -1026,13 +1026,13 @@ static void RIG_reconnectControlBones(RigGraph *rg)
/* don't link with parent */
if (bone->parent != ctrl->bone)
{
- if (VecLenf(ctrl->bone->tail, bone->head) < 0.01)
+ if (len_v3v3(ctrl->bone->tail, bone->head) < 0.01)
{
ctrl->tail_mode = TL_HEAD;
ctrl->link_tail = bone;
break;
}
- else if (VecLenf(ctrl->bone->tail, bone->tail) < 0.01)
+ else if (len_v3v3(ctrl->bone->tail, bone->tail) < 0.01)
{
ctrl->tail_mode = TL_TAIL;
ctrl->link_tail = bone;
@@ -1132,7 +1132,7 @@ static void RIG_removeUneededOffsets(RigGraph *rg)
if (first_edge->bone == NULL)
{
- if (first_edge->bone == NULL && VecLenf(first_edge->tail, arc->head->p) <= 0.001)
+ if (first_edge->bone == NULL && len_v3v3(first_edge->tail, arc->head->p) <= 0.001)
{
BLI_remlink(&arc->edges, first_edge);
MEM_freeN(first_edge);
@@ -1262,7 +1262,7 @@ static void RIG_removeUneededOffsets(RigGraph *rg)
if (last_edge->bone == NULL)
{
- if (VecLenf(last_edge->head, arc->tail->p) <= 0.001)
+ if (len_v3v3(last_edge->head, arc->tail->p) <= 0.001)
{
BLI_remlink(&arc->edges, last_edge);
MEM_freeN(last_edge);
@@ -1438,7 +1438,7 @@ void RIG_printNode(RigNode *node, char name[])
else if (node->symmetry_flag & SYM_RADIAL)
printf("Symmetry RADIAL\n");
- printvecf("symmetry axis", node->symmetry_axis);
+ print_v3("symmetry axis", node->symmetry_axis);
}
}
@@ -1464,7 +1464,7 @@ void RIG_printCtrl(RigControl *ctrl, char *indent)
printf("%sLink: %s\n", indent, ctrl->link ? ctrl->link->name : "!NONE!");
sprintf(text, "%soffset", indent);
- printvecf(text, ctrl->offset);
+ print_v3(text, ctrl->offset);
printf("%sFlag: %i\n", indent, ctrl->flag);
}
@@ -1761,15 +1761,15 @@ static void finalizeControl(RigGraph *rigg, RigControl *ctrl, float resize)
tail_vec = ctrl->link_tail->head;
}
- VecSubf(v1, ctrl->bone->tail, ctrl->bone->head);
- VecSubf(v2, tail_vec, ctrl->bone->head);
+ sub_v3_v3v3(v1, ctrl->bone->tail, ctrl->bone->head);
+ sub_v3_v3v3(v2, tail_vec, ctrl->bone->head);
VECCOPY(ctrl->bone->tail, tail_vec);
- RotationBetweenVectorsToQuat(qtail, v1, v2);
- QuatMul(ctrl->qrot, qtail, ctrl->qrot);
+ rotation_between_vecs_to_quat(qtail, v1, v2);
+ mul_qt_qtqt(ctrl->qrot, qtail, ctrl->qrot);
- resize = VecLength(v2) / VecLenf(ctrl->head, ctrl->tail);
+ resize = len_v3(v2) / len_v3v3(ctrl->head, ctrl->tail);
}
ctrl->bone->roll = rollBoneByQuat(ctrl->bone, ctrl->up_axis, ctrl->qrot);
@@ -1801,10 +1801,10 @@ static void repositionControl(RigGraph *rigg, RigControl *ctrl, float head[3], f
float parent_offset[3], tail_offset[3];
VECCOPY(parent_offset, ctrl->offset);
- VecMulf(parent_offset, resize);
- QuatMulVecf(qrot, parent_offset);
+ mul_v3_fl(parent_offset, resize);
+ mul_qt_v3(qrot, parent_offset);
- VecAddf(ctrl->bone->head, head, parent_offset);
+ add_v3_v3v3(ctrl->bone->head, head, parent_offset);
ctrl->flag |= RIG_CTRL_HEAD_DONE;
@@ -1812,11 +1812,11 @@ static void repositionControl(RigGraph *rigg, RigControl *ctrl, float head[3], f
if (ctrl->tail_mode == TL_NONE)
{
- VecSubf(tail_offset, ctrl->tail, ctrl->head);
- VecMulf(tail_offset, resize);
- QuatMulVecf(qrot, tail_offset);
+ sub_v3_v3v3(tail_offset, ctrl->tail, ctrl->head);
+ mul_v3_fl(tail_offset, resize);
+ mul_qt_v3(qrot, tail_offset);
- VecAddf(ctrl->bone->tail, ctrl->bone->head, tail_offset);
+ add_v3_v3v3(ctrl->bone->tail, ctrl->bone->head, tail_offset);
ctrl->flag |= RIG_CTRL_TAIL_DONE;
}
@@ -1835,20 +1835,20 @@ static void repositionBone(bContext *C, RigGraph *rigg, RigEdge *edge, float vec
bone = edge->bone;
- VecSubf(v1, edge->tail, edge->head);
- VecSubf(v2, vec1, vec0);
+ sub_v3_v3v3(v1, edge->tail, edge->head);
+ sub_v3_v3v3(v2, vec1, vec0);
- l1 = Normalize(v1);
- l2 = Normalize(v2);
+ l1 = normalize_v3(v1);
+ l2 = normalize_v3(v2);
resize = l2 / l1;
- RotationBetweenVectorsToQuat(qrot, v1, v2);
+ rotation_between_vecs_to_quat(qrot, v1, v2);
VECCOPY(bone->head, vec0);
VECCOPY(bone->tail, vec1);
- if (!VecIsNull(up_axis))
+ if (!is_zero_v3(up_axis))
{
float qroll[4];
@@ -1862,10 +1862,10 @@ static void repositionBone(bContext *C, RigGraph *rigg, RigEdge *edge, float vec
}
else
{
- QuatOne(qroll);
+ unit_qt(qroll);
}
- QuatMul(qrot, qroll, qrot);
+ mul_qt_qtqt(qrot, qroll, qrot);
}
else
{
@@ -1979,9 +1979,9 @@ static float costDistance(BArcIterator *iter, float *vec0, float *vec1, int i0,
if (distance_weight > 0)
{
- VecSubf(v1, vec0, vec1);
+ sub_v3_v3v3(v1, vec0, vec1);
- v1_inpf = Inpf(v1, v1);
+ v1_inpf = dot_v3v3(v1, v1);
if (v1_inpf > 0)
{
@@ -1992,11 +1992,11 @@ static float costDistance(BArcIterator *iter, float *vec0, float *vec1, int i0,
bucket = IT_peek(iter, j);
- VecSubf(v2, bucket->p, vec1);
+ sub_v3_v3v3(v2, bucket->p, vec1);
- Crossf(c, v1, v2);
+ cross_v3_v3v3(c, v1, v2);
- dist = Inpf(c, c) / v1_inpf;
+ dist = dot_v3v3(c, c) / v1_inpf;
max_dist = dist > max_dist ? dist : max_dist;
}
@@ -2020,9 +2020,9 @@ static float costAngle(float original_angle, float vec_first[3], float vec_secon
{
float current_angle;
- if (!VecIsNull(vec_first) && !VecIsNull(vec_second))
+ if (!is_zero_v3(vec_first) && !is_zero_v3(vec_second))
{
- current_angle = saacos(Inpf(vec_first, vec_second));
+ current_angle = saacos(dot_v3v3(vec_first, vec_second));
return angle_weight * fabs(current_angle - original_angle);
}
@@ -2056,8 +2056,8 @@ static float calcCostLengthDistance(BArcIterator *iter, float **vec_cache, RigEd
float vec[3];
float length;
- VecSubf(vec, vec2, vec1);
- length = Normalize(vec);
+ sub_v3_v3v3(vec, vec2, vec1);
+ length = normalize_v3(vec);
return costLength(edge->length, length) + costDistance(iter, vec1, vec2, i1, i2);
}
@@ -2069,15 +2069,15 @@ static float calcCostAngleLengthDistance(BArcIterator *iter, float **vec_cache,
float length2;
float new_cost = 0;
- VecSubf(vec_second, vec2, vec1);
- length2 = Normalize(vec_second);
+ sub_v3_v3v3(vec_second, vec2, vec1);
+ length2 = normalize_v3(vec_second);
/* Angle cost */
if (edge->prev)
{
- VecSubf(vec_first, vec1, vec0);
- Normalize(vec_first);
+ sub_v3_v3v3(vec_first, vec1, vec0);
+ normalize_v3(vec_first);
new_cost += costAngle(edge->prev->angle, vec_first, vec_second, angle_weight);
}
@@ -2352,13 +2352,13 @@ static void retargetArctoArcLength(bContext *C, RigGraph *rigg, RigArc *iarc, Ri
{
vec1 = bucket->p;
- embedding_length += VecLenf(vec0, vec1);
+ embedding_length += len_v3v3(vec0, vec1);
vec0 = vec1;
bucket = IT_next(iter);
}
- embedding_length += VecLenf(node_end->p, vec1);
+ embedding_length += len_v3v3(node_end->p, vec1);
/* fit bones */
initArcIterator(iter, earc, node_start);
@@ -2377,7 +2377,7 @@ static void retargetArctoArcLength(bContext *C, RigGraph *rigg, RigArc *iarc, Ri
while (bucket && new_bone_length > length)
{
- length += VecLenf(previous_vec, vec1);
+ length += len_v3v3(previous_vec, vec1);
bucket = IT_next(iter);
previous_vec = vec1;
vec1 = bucket->p;
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index b3dd8f35137..eee56070e91 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -39,7 +39,7 @@
#include "RNA_access.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_graph.h"
#include "BLI_ghash.h"
@@ -416,10 +416,10 @@ ReebNode *sk_pointToNode(SK_Point *pt, float imat[][4], float tmat[][3])
node = MEM_callocN(sizeof(ReebNode), "reeb node");
VECCOPY(node->p, pt->p);
- Mat4MulVecfl(imat, node->p);
+ mul_m4_v3(imat, node->p);
VECCOPY(node->no, pt->no);
- Mat3MulVecfl(tmat, node->no);
+ mul_m3_v3(tmat, node->no);
return node;
}
@@ -439,10 +439,10 @@ ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[][4], float tmat[][3])
for (i = 0; i < arc->bcount; i++)
{
VECCOPY(arc->buckets[i].p, stk->points[i + 1].p);
- Mat4MulVecfl(imat, arc->buckets[i].p);
+ mul_m4_v3(imat, arc->buckets[i].p);
VECCOPY(arc->buckets[i].no, stk->points[i + 1].no);
- Mat3MulVecfl(tmat, arc->buckets[i].no);
+ mul_m3_v3(tmat, arc->buckets[i].no);
}
return arc;
@@ -457,10 +457,10 @@ void sk_retargetStroke(bContext *C, SK_Stroke *stk)
ReebArc *arc;
RigGraph *rg;
- Mat4Invert(imat, obedit->obmat);
+ invert_m4_m4(imat, obedit->obmat);
- Mat3CpyMat4(tmat, obedit->obmat);
- Mat3Transp(tmat);
+ copy_m3_m4(tmat, obedit->obmat);
+ transpose_m3(tmat);
arc = sk_strokeToArc(stk, imat, tmat);
@@ -505,16 +505,16 @@ void sk_drawEdge(GLUquadric *quad, SK_Point *pt0, SK_Point *pt1, float size)
float vec1[3], vec2[3] = {0, 0, 1}, axis[3];
float angle, length;
- VecSubf(vec1, pt1->p, pt0->p);
- length = Normalize(vec1);
- Crossf(axis, vec2, vec1);
+ sub_v3_v3v3(vec1, pt1->p, pt0->p);
+ length = normalize_v3(vec1);
+ cross_v3_v3v3(axis, vec2, vec1);
- if (VecIsNull(axis))
+ if (is_zero_v3(axis))
{
axis[1] = 1;
}
- angle = NormalizedVecAngle2(vec2, vec1);
+ angle = angle_normalized_v3v3(vec2, vec1);
glRotatef(angle * 180 / M_PI + 180, axis[0], axis[1], axis[2]);
@@ -528,14 +528,14 @@ void sk_drawNormal(GLUquadric *quad, SK_Point *pt, float size, float height)
glPushMatrix();
- Crossf(axis, vec2, pt->no);
+ cross_v3_v3v3(axis, vec2, pt->no);
- if (VecIsNull(axis))
+ if (is_zero_v3(axis))
{
axis[1] = 1;
}
- angle = NormalizedVecAngle2(vec2, pt->no);
+ angle = angle_normalized_v3v3(vec2, pt->no);
glRotatef(angle * 180 / M_PI, axis[0], axis[1], axis[2]);
@@ -576,8 +576,8 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end)
float d_rgb[3] = {1, 1, 1};
VECCOPY(rgb, color);
- VecSubf(d_rgb, d_rgb, rgb);
- VecMulf(d_rgb, 1.0f / (float)stk->nb_points);
+ sub_v3_v3v3(d_rgb, d_rgb, rgb);
+ mul_v3_fl(d_rgb, 1.0f / (float)stk->nb_points);
for (i = 0; i < stk->nb_points; i++)
{
@@ -614,7 +614,7 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end)
glPopMatrix();
- VecAddf(rgb, rgb, d_rgb);
+ add_v3_v3v3(rgb, rgb, d_rgb);
}
}
@@ -756,7 +756,7 @@ SK_Point *sk_snapPointArmature(bContext *C, Object *ob, ListBase *ebones, short
if ((bone->flag & BONE_CONNECTED) == 0)
{
VECCOPY(vec, bone->head);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
project_short_noclip(ar, vec, pval);
pdist = ABS(pval[0] - mval[0]) + ABS(pval[1] - mval[1]);
@@ -772,7 +772,7 @@ SK_Point *sk_snapPointArmature(bContext *C, Object *ob, ListBase *ebones, short
VECCOPY(vec, bone->tail);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
project_short_noclip(ar, vec, pval);
pdist = ABS(pval[0] - mval[0]) + ABS(pval[1] - mval[1]);
@@ -977,13 +977,13 @@ float sk_distanceDepth(bContext *C, float p1[3], float p2[3])
float vec[3];
float distance;
- VecSubf(vec, p1, p2);
+ sub_v3_v3v3(vec, p1, p2);
- Projf(vec, vec, rv3d->viewinv[2]);
+ project_v3_v3v3(vec, vec, rv3d->viewinv[2]);
- distance = VecLength(vec);
+ distance = len_v3(vec);
- if (Inpf(rv3d->viewinv[2], vec) > 0)
+ if (dot_v3v3(rv3d->viewinv[2], vec) > 0)
{
distance *= -1;
}
@@ -1000,19 +1000,19 @@ void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end, float
float progress = 0;
int i;
- progress = VecLenf(stk->points[start].p, stk->points[start - 1].p);
+ progress = len_v3v3(stk->points[start].p, stk->points[start - 1].p);
for (i = start; i <= end; i++)
{
float ray_start[3], ray_normal[3];
- float delta = VecLenf(stk->points[i].p, stk->points[i + 1].p);
+ float delta = len_v3v3(stk->points[i].p, stk->points[i + 1].p);
float pval[2];
project_float(ar, stk->points[i].p, pval);
viewray(ar, v3d, pval, ray_start, ray_normal);
- VecMulf(ray_normal, distance * progress / length);
- VecAddf(stk->points[i].p, stk->points[i].p, ray_normal);
+ mul_v3_fl(ray_normal, distance * progress / length);
+ add_v3_v3v3(stk->points[i].p, stk->points[i].p, ray_normal);
progress += delta ;
}
@@ -1037,7 +1037,7 @@ void sk_projectDrawPoint(bContext *C, float vec[3], SK_Stroke *stk, SK_DrawData
/* method taken from editview.c - mouse_cursor() */
project_short_noclip(ar, fp, cval);
window_to_3d_delta(ar, dvec, cval[0] - dd->mval[0], cval[1] - dd->mval[1]);
- VecSubf(vec, fp, dvec);
+ sub_v3_v3v3(vec, fp, dvec);
}
int sk_getStrokeDrawPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd)
@@ -1132,9 +1132,9 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
{
p2->flag = 1;
- VecAddf(vec, p1->p, p2->p);
- VecMulf(vec, 0.5f);
- new_size = VecLenf(p1->p, p2->p);
+ add_v3_v3v3(vec, p1->p, p2->p);
+ mul_v3_fl(vec, 0.5f);
+ new_size = len_v3v3(p1->p, p2->p);
}
else
{
@@ -1149,7 +1149,7 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
break;
}
- new_dist = VecLenf(last_p, vec);
+ new_dist = len_v3v3(last_p, vec);
if (new_dist < dist)
{
@@ -1248,7 +1248,7 @@ int sk_addStrokeSnapPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_Dra
length = 0;
for (i = stk->nb_points - 2; i > 0; i--)
{
- length += VecLenf(stk->points[i].p, stk->points[i + 1].p);
+ length += len_v3v3(stk->points[i].p, stk->points[i + 1].p);
total++;
if (stk->points[i].mode == PT_SNAP || stk->points[i].type == PT_EXACT)
{
@@ -1494,10 +1494,10 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
head = NULL;
- Mat4Invert(invmat, obedit->obmat);
+ invert_m4_m4(invmat, obedit->obmat);
- Mat3CpyMat4(tmat, obedit->obmat);
- Mat3Transp(tmat);
+ copy_m3_m4(tmat, obedit->obmat);
+ transpose_m3(tmat);
for (i = 0; i < stk->nb_points; i++)
{
@@ -1538,13 +1538,13 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
if (bone == NULL)
{
- bone = addEditBone(arm, "Bone");
+ bone = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(bone->head, head->p);
VECCOPY(bone->tail, pt->p);
- Mat4MulVecfl(invmat, bone->head);
- Mat4MulVecfl(invmat, bone->tail);
+ mul_m4_v3(invmat, bone->head);
+ mul_m4_v3(invmat, bone->tail);
setBoneRollFromNormal(bone, head->no, invmat, tmat);
}
@@ -1624,7 +1624,7 @@ int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gesture)
project_float(ar, gesture->points[g_i].p, g_p1);
project_float(ar, gesture->points[g_i + 1].p, g_p2);
- if (LineIntersectLineStrict(s_p1, s_p2, g_p1, g_p2, vi, &lambda))
+ if (isect_line_line_strict_v3(s_p1, s_p2, g_p1, g_p2, vi, &lambda))
{
SK_Intersection *isect = MEM_callocN(sizeof(SK_Intersection), "Intersection");
@@ -1633,9 +1633,9 @@ int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gesture)
isect->after = s_i + 1;
isect->stroke = gesture;
- VecSubf(isect->p, gesture->points[s_i + 1].p, gesture->points[s_i].p);
- VecMulf(isect->p, lambda);
- VecAddf(isect->p, isect->p, gesture->points[s_i].p);
+ sub_v3_v3v3(isect->p, gesture->points[s_i + 1].p, gesture->points[s_i].p);
+ mul_v3_fl(isect->p, lambda);
+ add_v3_v3v3(isect->p, isect->p, gesture->points[s_i].p);
BLI_addtail(list, isect);
@@ -1711,7 +1711,7 @@ int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, SK_Strok
project_float(ar, gesture->points[g_i].p, g_p1);
project_float(ar, gesture->points[g_i + 1].p, g_p2);
- if (LineIntersectLineStrict(s_p1, s_p2, g_p1, g_p2, vi, &lambda))
+ if (isect_line_line_strict_v3(s_p1, s_p2, g_p1, g_p2, vi, &lambda))
{
SK_Intersection *isect = MEM_callocN(sizeof(SK_Intersection), "Intersection");
float ray_start[3], ray_end[3];
@@ -1727,7 +1727,7 @@ int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, SK_Strok
mval[1] = vi[1];
viewline(ar, v3d, mval, ray_start, ray_end);
- LineIntersectLine( stk->points[s_i].p,
+ isect_line_line_v3( stk->points[s_i].p,
stk->points[s_i + 1].p,
ray_start,
ray_end,
@@ -1768,7 +1768,7 @@ int sk_getSegments(SK_Stroke *segments, SK_Stroke *gesture)
float n[3];
/* Calculate normal */
- VecSubf(n, gesture->points[i].p, vec);
+ sub_v3_v3v3(n, gesture->points[i].p, vec);
if (calcArcCorrelation(iter, j, i, vec, n) < CORRELATION_THRESHOLD)
{
@@ -1818,10 +1818,10 @@ int sk_detectTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
float s1[3], s2[3];
float angle;
- VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
- VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
+ sub_v3_v3v3(s1, gest->segments->points[1].p, gest->segments->points[0].p);
+ sub_v3_v3v3(s2, gest->segments->points[2].p, gest->segments->points[1].p);
- angle = RAD2DEG(VecAngle2(s1, s2));
+ angle = RAD2DEG(angle_v2v2(s1, s2));
if (angle > 60 && angle < 120)
{
@@ -1837,7 +1837,7 @@ void sk_applyTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
SK_Intersection *isect;
float trim_dir[3];
- VecSubf(trim_dir, gest->segments->points[2].p, gest->segments->points[1].p);
+ sub_v3_v3v3(trim_dir, gest->segments->points[2].p, gest->segments->points[1].p);
for (isect = gest->intersections.first; isect; isect = isect->next)
{
@@ -1849,10 +1849,10 @@ void sk_applyTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
VECCOPY(pt.p, isect->p);
VECCOPY(pt.no, isect->stroke->points[isect->before].no);
- VecSubf(stroke_dir, isect->stroke->points[isect->after].p, isect->stroke->points[isect->before].p);
+ sub_v3_v3v3(stroke_dir, isect->stroke->points[isect->after].p, isect->stroke->points[isect->before].p);
/* same direction, trim end */
- if (Inpf(stroke_dir, trim_dir) > 0)
+ if (dot_v3v3(stroke_dir, trim_dir) > 0)
{
sk_replaceStrokePoint(isect->stroke, &pt, isect->after);
sk_trimStroke(isect->stroke, 0, isect->after);
@@ -1936,10 +1936,10 @@ int sk_detectDeleteGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
float s1[3], s2[3];
float angle;
- VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
- VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
+ sub_v3_v3v3(s1, gest->segments->points[1].p, gest->segments->points[0].p);
+ sub_v3_v3v3(s2, gest->segments->points[2].p, gest->segments->points[1].p);
- angle = RAD2DEG(VecAngle2(s1, s2));
+ angle = RAD2DEG(angle_v2v2(s1, s2));
if (angle > 120)
{
@@ -2062,16 +2062,16 @@ int sk_detectReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
if (isect->gesture_index < isect->next->gesture_index)
{
- VecSubf(start_v, isect->p, gest->stk->points[0].p);
- VecSubf(end_v, sk_lastStrokePoint(gest->stk)->p, isect->next->p);
+ sub_v3_v3v3(start_v, isect->p, gest->stk->points[0].p);
+ sub_v3_v3v3(end_v, sk_lastStrokePoint(gest->stk)->p, isect->next->p);
}
else
{
- VecSubf(start_v, isect->next->p, gest->stk->points[0].p);
- VecSubf(end_v, sk_lastStrokePoint(gest->stk)->p, isect->p);
+ sub_v3_v3v3(start_v, isect->next->p, gest->stk->points[0].p);
+ sub_v3_v3v3(end_v, sk_lastStrokePoint(gest->stk)->p, isect->p);
}
- angle = RAD2DEG(VecAngle2(start_v, end_v));
+ angle = RAD2DEG(angle_v2v2(start_v, end_v));
if (angle > 120)
{
diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c
index 9847bdc3283..2ad71881f47 100644
--- a/source/blender/editors/armature/meshlaplacian.c
+++ b/source/blender/editors/armature/meshlaplacian.c
@@ -40,7 +40,7 @@
#include "DNA_modifier_types.h"
#include "DNA_scene_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "BLI_memarena.h"
@@ -93,13 +93,16 @@ struct LaplacianSystem {
EdgeHash *edgehash; /* edge hash for construction */
struct HeatWeighting {
- Mesh *mesh;
+ MFace *mface;
+ int totvert;
+ int totface;
float (*verts)[3]; /* vertex coordinates */
float (*vnors)[3]; /* vertex normals */
float (*root)[3]; /* bone root */
float (*tip)[3]; /* bone tip */
- int numbones;
+ float (*source)[3]; /* vertex source */
+ int numsource;
float *H; /* diagonal H matrix */
float *p; /* values from all p vectors */
@@ -151,16 +154,16 @@ static float cotan_weight(float *v1, float *v2, float *v3)
{
float a[3], b[3], c[3], clen;
- VecSubf(a, v2, v1);
- VecSubf(b, v3, v1);
- Crossf(c, a, b);
+ sub_v3_v3v3(a, v2, v1);
+ sub_v3_v3v3(b, v3, v1);
+ cross_v3_v3v3(c, a, b);
- clen = VecLength(c);
+ clen = len_v3(c);
if (clen == 0.0f)
return 0.0f;
- return Inpf(a, b)/clen;
+ return dot_v3v3(a, b)/clen;
}
static void laplacian_triangle_area(LaplacianSystem *sys, int i1, int i2, int i3)
@@ -177,21 +180,21 @@ static void laplacian_triangle_area(LaplacianSystem *sys, int i1, int i2, int i3
t2= cotan_weight(v2, v3, v1);
t3= cotan_weight(v3, v1, v2);
- if(RAD2DEG(VecAngle3(v2, v1, v3)) > 90) obtuse= 1;
- else if(RAD2DEG(VecAngle3(v1, v2, v3)) > 90) obtuse= 2;
- else if(RAD2DEG(VecAngle3(v1, v3, v2)) > 90) obtuse= 3;
+ if(RAD2DEG(angle_v3v3v3(v2, v1, v3)) > 90) obtuse= 1;
+ else if(RAD2DEG(angle_v3v3v3(v1, v2, v3)) > 90) obtuse= 2;
+ else if(RAD2DEG(angle_v3v3v3(v1, v3, v2)) > 90) obtuse= 3;
if (obtuse > 0) {
- area= AreaT3Dfl(v1, v2, v3);
+ area= area_tri_v3(v1, v2, v3);
varea[i1] += (obtuse == 1)? area: area*0.5;
varea[i2] += (obtuse == 2)? area: area*0.5;
varea[i3] += (obtuse == 3)? area: area*0.5;
}
else {
- len1= VecLenf(v2, v3);
- len2= VecLenf(v1, v3);
- len3= VecLenf(v1, v2);
+ len1= len_v3v3(v2, v3);
+ len2= len_v3v3(v1, v3);
+ len3= len_v3v3(v1, v2);
t1 *= len1*len1;
t2 *= len2*len2;
@@ -394,38 +397,40 @@ float laplacian_system_get_solution(int v)
#define WEIGHT_LIMIT_END 0.025f
#define DISTANCE_EPSILON 1e-4f
-/* Raytracing for vertex to bone visibility */
+/* Raytracing for vertex to bone/vertex visibility */
static void heat_ray_tree_create(LaplacianSystem *sys)
{
- Mesh *me = sys->heat.mesh;
+ MFace *mface = sys->heat.mface;
+ int totface = sys->heat.totface;
+ int totvert = sys->heat.totvert;
int a;
- sys->heat.raytree = RE_rayobject_vbvh_create(me->totface);
- sys->heat.faces = MEM_callocN(sizeof(RayFace)*me->totface, "Heat RayFaces");
- sys->heat.vface = MEM_callocN(sizeof(MFace*)*me->totvert, "HeatVFaces");
+ sys->heat.raytree = RE_rayobject_vbvh_create(totface);
+ sys->heat.faces = MEM_callocN(sizeof(RayFace)*totface, "Heat RayFaces");
+ sys->heat.vface = MEM_callocN(sizeof(MFace*)*totvert, "HeatVFaces");
- for(a=0; a<me->totface; a++) {
+ for(a=0; a<totface; a++) {
- MFace *mface = me->mface+a;
+ MFace *mf = mface+a;
RayFace *rayface = sys->heat.faces+a;
RayObject *obj = RE_rayface_from_coords(
- rayface, me, mface,
- sys->heat.verts[mface->v1], sys->heat.verts[mface->v2],
- sys->heat.verts[mface->v3], mface->v4 ? sys->heat.verts[mface->v4] : 0
+ rayface, &sys->heat, mf,
+ sys->heat.verts[mf->v1], sys->heat.verts[mf->v2],
+ sys->heat.verts[mf->v3], mf->v4 ? sys->heat.verts[mf->v4] : 0
);
RE_rayobject_add(sys->heat.raytree, obj);
//Setup inverse pointers to use on isect.orig
- sys->heat.vface[mface->v1]= mface;
- sys->heat.vface[mface->v2]= mface;
- sys->heat.vface[mface->v3]= mface;
- if(mface->v4) sys->heat.vface[mface->v4]= mface;
+ sys->heat.vface[mf->v1]= mf;
+ sys->heat.vface[mf->v2]= mf;
+ sys->heat.vface[mf->v3]= mf;
+ if(mf->v4) sys->heat.vface[mf->v4]= mf;
}
RE_rayobject_done(sys->heat.raytree);
}
-static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone)
+static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source)
{
Isect isec;
MFace *mface;
@@ -440,33 +445,40 @@ static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone)
memset(&isec, 0, sizeof(isec));
isec.mode= RE_RAY_SHADOW;
isec.lay= -1;
- isec.orig.ob = sys->heat.mesh;
+ isec.orig.ob = &sys->heat;
isec.orig.face = mface;
isec.skip = RE_SKIP_CULLFACE;
+ copy_v3_v3(isec.start, sys->heat.verts[vertex]);
- VECCOPY(isec.start, sys->heat.verts[vertex]);
- PclosestVL3Dfl(end, isec.start, sys->heat.root[bone], sys->heat.tip[bone]);
+ if(sys->heat.root) /* bone */
+ closest_to_line_segment_v3(end, isec.start,
+ sys->heat.root[source], sys->heat.tip[source]);
+ else /* vertex */
+ copy_v3_v3(end, sys->heat.source[source]);
- VECSUB(isec.vec, end, isec.start);
+ sub_v3_v3v3(isec.vec, end, isec.start);
isec.labda = 1.0f - 1e-5;
- VECADDFAC( isec.start, isec.start, isec.vec, 1e-5);
+ madd_v3_v3v3fl(isec.start, isec.start, isec.vec, 1e-5);
visible= !RE_rayobject_raycast(sys->heat.raytree, &isec);
return visible;
}
-static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone)
+static float heat_source_distance(LaplacianSystem *sys, int vertex, int source)
{
float closest[3], d[3], dist, cosine;
/* compute euclidian distance */
- PclosestVL3Dfl(closest, sys->heat.verts[vertex],
- sys->heat.root[bone], sys->heat.tip[bone]);
+ if(sys->heat.root) /* bone */
+ closest_to_line_segment_v3(closest, sys->heat.verts[vertex],
+ sys->heat.root[source], sys->heat.tip[source]);
+ else /* vertex */
+ copy_v3_v3(closest, sys->heat.source[source]);
- VecSubf(d, sys->heat.verts[vertex], closest);
- dist= Normalize(d);
+ sub_v3_v3v3(d, sys->heat.verts[vertex], closest);
+ dist= normalize_v3(d);
/* if the vertex normal does not point along the bone, increase distance */
cosine= INPR(d, sys->heat.vnors[vertex]);
@@ -474,16 +486,16 @@ static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone)
return dist/(0.5f*(cosine + 1.001f));
}
-static int heat_bone_closest(LaplacianSystem *sys, int vertex, int bone)
+static int heat_source_closest(LaplacianSystem *sys, int vertex, int source)
{
float dist;
-
- dist= heat_bone_distance(sys, vertex, bone);
+
+ dist= heat_source_distance(sys, vertex, source);
if(dist <= sys->heat.mindist[vertex]*(1.0f + DISTANCE_EPSILON))
- if(heat_ray_bone_visible(sys, vertex, bone))
+ if(heat_ray_source_visible(sys, vertex, source))
return 1;
-
+
return 0;
}
@@ -495,8 +507,8 @@ static void heat_set_H(LaplacianSystem *sys, int vertex)
mindist= 1e10;
/* compute minimum distance */
- for(j=0; j<sys->heat.numbones; j++) {
- dist= heat_bone_distance(sys, vertex, j);
+ for(j=0; j<sys->heat.numsource; j++) {
+ dist= heat_source_distance(sys, vertex, j);
if(dist < mindist)
mindist= dist;
@@ -504,9 +516,9 @@ static void heat_set_H(LaplacianSystem *sys, int vertex)
sys->heat.mindist[vertex]= mindist;
- /* count number of bones with approximately this minimum distance */
- for(j=0; j<sys->heat.numbones; j++)
- if(heat_bone_closest(sys, vertex, j))
+ /* count number of sources with approximately this minimum distance */
+ for(j=0; j<sys->heat.numsource; j++)
+ if(heat_source_closest(sys, vertex, j))
numclosest++;
sys->heat.p[vertex]= (numclosest > 0)? 1.0f/numclosest: 0.0f;
@@ -536,45 +548,58 @@ void heat_calc_vnormals(LaplacianSystem *sys)
v2= (*face)[1];
v3= (*face)[2];
- CalcNormFloat(sys->verts[v1], sys->verts[v2], sys->verts[v3], fnor);
+ normal_tri_v3( fnor,sys->verts[v1], sys->verts[v2], sys->verts[v3]);
- VecAddf(sys->heat.vnors[v1], sys->heat.vnors[v1], fnor);
- VecAddf(sys->heat.vnors[v2], sys->heat.vnors[v2], fnor);
- VecAddf(sys->heat.vnors[v3], sys->heat.vnors[v3], fnor);
+ add_v3_v3v3(sys->heat.vnors[v1], sys->heat.vnors[v1], fnor);
+ add_v3_v3v3(sys->heat.vnors[v2], sys->heat.vnors[v2], fnor);
+ add_v3_v3v3(sys->heat.vnors[v3], sys->heat.vnors[v3], fnor);
}
for(a=0; a<sys->totvert; a++)
- Normalize(sys->heat.vnors[a]);
+ normalize_v3(sys->heat.vnors[a]);
}
static void heat_laplacian_create(LaplacianSystem *sys)
{
- Mesh *me = sys->heat.mesh;
- MFace *mface;
+ MFace *mface = sys->heat.mface, *mf;
+ int totface= sys->heat.totface;
+ int totvert= sys->heat.totvert;
int a;
/* heat specific definitions */
- sys->heat.mindist= MEM_callocN(sizeof(float)*me->totvert, "HeatMinDist");
- sys->heat.H= MEM_callocN(sizeof(float)*me->totvert, "HeatH");
- sys->heat.p= MEM_callocN(sizeof(float)*me->totvert, "HeatP");
+ sys->heat.mindist= MEM_callocN(sizeof(float)*totvert, "HeatMinDist");
+ sys->heat.H= MEM_callocN(sizeof(float)*totvert, "HeatH");
+ sys->heat.p= MEM_callocN(sizeof(float)*totvert, "HeatP");
/* add verts and faces to laplacian */
- for(a=0; a<me->totvert; a++)
+ for(a=0; a<totvert; a++)
laplacian_add_vertex(sys, sys->heat.verts[a], 0);
- for(a=0, mface=me->mface; a<me->totface; a++, mface++) {
- laplacian_add_triangle(sys, mface->v1, mface->v2, mface->v3);
- if(mface->v4)
- laplacian_add_triangle(sys, mface->v1, mface->v3, mface->v4);
+ for(a=0, mf=mface; a<totface; a++, mf++) {
+ laplacian_add_triangle(sys, mf->v1, mf->v2, mf->v3);
+ if(mf->v4)
+ laplacian_add_triangle(sys, mf->v1, mf->v3, mf->v4);
}
/* for distance computation in set_H */
heat_calc_vnormals(sys);
- for(a=0; a<me->totvert; a++)
+ for(a=0; a<totvert; a++)
heat_set_H(sys, a);
}
+static void heat_system_free(LaplacianSystem *sys)
+{
+ RE_rayobject_free(sys->heat.raytree);
+ MEM_freeN(sys->heat.vface);
+ MEM_freeN(sys->heat.faces);
+
+ MEM_freeN(sys->heat.mindist);
+ MEM_freeN(sys->heat.H);
+ MEM_freeN(sys->heat.p);
+ MEM_freeN(sys->heat.vnors);
+}
+
static float heat_limit_weight(float weight)
{
float t;
@@ -590,7 +615,7 @@ static float heat_limit_weight(float weight)
return weight;
}
-void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected)
+void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected)
{
LaplacianSystem *sys;
MFace *mface;
@@ -607,11 +632,13 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
/* create laplacian */
sys = laplacian_system_construct_begin(me->totvert, totface, 1);
- sys->heat.mesh= me;
+ sys->heat.mface= me->mface;
+ sys->heat.totface= me->totface;
+ sys->heat.totvert= me->totvert;
sys->heat.verts= verts;
sys->heat.root= root;
sys->heat.tip= tip;
- sys->heat.numbones= numbones;
+ sys->heat.numsource= numsource;
heat_ray_tree_create(sys);
heat_laplacian_create(sys);
@@ -625,12 +652,12 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
}
/* compute weights per bone */
- for(j=0; j<numbones; j++) {
+ for(j=0; j<numsource; j++) {
if(!selected[j])
continue;
firstsegment= (j == 0 || dgrouplist[j-1] != dgrouplist[j]);
- lastsegment= (j == numbones-1 || dgrouplist[j] != dgrouplist[j+1]);
+ lastsegment= (j == numsource-1 || dgrouplist[j] != dgrouplist[j+1]);
bbone= !(firstsegment && lastsegment);
/* clear weights */
@@ -646,7 +673,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
laplacian_begin_solve(sys, -1);
for(a=0; a<me->totvert; a++)
- if(heat_bone_closest(sys, a, j))
+ if(heat_source_closest(sys, a, j))
laplacian_add_right_hand_side(sys, a,
sys->heat.H[a]*sys->heat.p[a]);
@@ -716,14 +743,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
/* free */
if(vertsflipped) MEM_freeN(vertsflipped);
- RE_rayobject_free(sys->heat.raytree);
- MEM_freeN(sys->heat.vface);
- MEM_freeN(sys->heat.faces);
-
- MEM_freeN(sys->heat.mindist);
- MEM_freeN(sys->heat.H);
- MEM_freeN(sys->heat.p);
- MEM_freeN(sys->heat.vnors);
+ heat_system_free(sys);
laplacian_system_delete(sys);
}
@@ -746,8 +766,8 @@ static void rigid_add_half_edge_to_R(LaplacianSystem *sys, EditVert *v1, EditVer
float e[3], e_[3];
int i;
- VecSubf(e, sys->rigid.origco[v1->tmp.l], sys->rigid.origco[v2->tmp.l]);
- VecSubf(e_, v1->co, v2->co);
+ sub_v3_v3v3(e, sys->rigid.origco[v1->tmp.l], sys->rigid.origco[v2->tmp.l]);
+ sub_v3_v3v3(e_, v1->co, v2->co);
/* formula (5) */
for (i=0; i<3; i++) {
@@ -767,9 +787,9 @@ static void rigid_orthogonalize_R(float R[][3])
{
HMatrix M, Q, S;
- Mat4CpyMat3(M, R);
+ copy_m4_m3(M, R);
polar_decomp(M, Q, S);
- Mat3CpyMat4(R, Q);
+ copy_m3_m4(R, Q);
}
static void rigid_add_half_edge_to_rhs(LaplacianSystem *sys, EditVert *v1, EditVert *v2, float w)
@@ -780,15 +800,15 @@ static void rigid_add_half_edge_to_rhs(LaplacianSystem *sys, EditVert *v1, EditV
if (sys->vpinned[v1->tmp.l])
return;
- Mat3AddMat3(Rsum, sys->rigid.R[v1->tmp.l], sys->rigid.R[v2->tmp.l]);
- Mat3Transp(Rsum);
+ add_m3_m3m3(Rsum, sys->rigid.R[v1->tmp.l], sys->rigid.R[v2->tmp.l]);
+ transpose_m3(Rsum);
- VecSubf(rhs, sys->rigid.origco[v1->tmp.l], sys->rigid.origco[v2->tmp.l]);
- Mat3MulVecfl(Rsum, rhs);
- VecMulf(rhs, 0.5f);
- VecMulf(rhs, w);
+ sub_v3_v3v3(rhs, sys->rigid.origco[v1->tmp.l], sys->rigid.origco[v2->tmp.l]);
+ mul_m3_v3(Rsum, rhs);
+ mul_v3_fl(rhs, 0.5f);
+ mul_v3_fl(rhs, w);
- VecAddf(sys->rigid.rhs[v1->tmp.l], sys->rigid.rhs[v1->tmp.l], rhs);
+ add_v3_v3v3(sys->rigid.rhs[v1->tmp.l], sys->rigid.rhs[v1->tmp.l], rhs);
}
static void rigid_add_edge_to_rhs(LaplacianSystem *sys, EditVert *v1, EditVert *v2, float w)
@@ -916,7 +936,7 @@ void rigid_deform_begin(EditMesh *em)
sys->rigid.origco = MEM_callocN(sizeof(float)*3*totvert, "RigidDeformCo");
for(a=0, eve=em->verts.first; eve; eve=eve->next, a++)
- VecCopyf(sys->rigid.origco[a], eve->co);
+ copy_v3_v3(sys->rigid.origco[a], eve->co);
sys->areaweights= 0;
sys->storeweights= 1;
@@ -940,7 +960,7 @@ void rigid_deform_end(int cancel)
if(cancel)
for(a=0, eve=em->verts.first; eve; eve=eve->next, a++)
if(!eve->pinned)
- VecCopyf(eve->co, sys->rigid.origco[a]);
+ copy_v3_v3(eve->co, sys->rigid.origco[a]);
if(sys->rigid.R) MEM_freeN(sys->rigid.R);
if(sys->rigid.rhs) MEM_freeN(sys->rigid.rhs);
@@ -1027,14 +1047,14 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
float edge1[3], edge2[3], tvec[3], pvec[3], qvec[3];
float det,inv_det, u, v, dir[3], isectdir[3];
- VECSUB(dir, end, orig);
+ sub_v3_v3v3(dir, end, orig);
/* find vectors for two edges sharing vert0 */
- VECSUB(edge1, vert1, vert0);
- VECSUB(edge2, vert2, vert0);
+ sub_v3_v3v3(edge1, vert1, vert0);
+ sub_v3_v3v3(edge2, vert2, vert0);
/* begin calculating determinant - also used to calculate U parameter */
- Crossf(pvec, dir, edge2);
+ cross_v3_v3v3(pvec, dir, edge2);
/* if determinant is near zero, ray lies in plane of triangle */
det = INPR(edge1, pvec);
@@ -1044,7 +1064,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
inv_det = 1.0f / det;
/* calculate distance from vert0 to ray origin */
- VECSUB(tvec, orig, vert0);
+ sub_v3_v3v3(tvec, orig, vert0);
/* calculate U parameter and test bounds */
u = INPR(tvec, pvec) * inv_det;
@@ -1052,7 +1072,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
return 0;
/* prepare to test V parameter */
- Crossf(qvec, tvec, edge1);
+ cross_v3_v3v3(qvec, tvec, edge1);
/* calculate V parameter and test bounds */
v = INPR(dir, qvec) * inv_det;
@@ -1068,7 +1088,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
uvw[2]= v;
/* check if it is within the length of the line segment */
- VECSUB(isectdir, isectco, orig);
+ sub_v3_v3v3(isectdir, isectco, orig);
if(INPR(dir, isectdir) < -EPSILON)
return 0;
@@ -1149,29 +1169,29 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec)
VECADDFAC( end, isec->start, isec->vec, isec->labda );
for(f=0; f<totface; f++, mface++) {
- VECCOPY(face[0], mdb->cagecos[mface->v1]);
- VECCOPY(face[1], mdb->cagecos[mface->v2]);
- VECCOPY(face[2], mdb->cagecos[mface->v3]);
+ copy_v3_v3(face[0], mdb->cagecos[mface->v1]);
+ copy_v3_v3(face[1], mdb->cagecos[mface->v2]);
+ copy_v3_v3(face[2], mdb->cagecos[mface->v3]);
if(mface->v4) {
- VECCOPY(face[3], mdb->cagecos[mface->v4]);
+ copy_v3_v3(face[3], mdb->cagecos[mface->v4]);
hit = meshdeform_tri_intersect(isec->start, end, face[0], face[1], face[2], co, uvw);
if(hit) {
- CalcNormFloat(face[0], face[1], face[2], nor);
+ normal_tri_v3( nor,face[0], face[1], face[2]);
}
else {
hit= meshdeform_tri_intersect(isec->start, end, face[0], face[2], face[3], co, uvw);
- CalcNormFloat(face[0], face[2], face[3], nor);
+ normal_tri_v3( nor,face[0], face[2], face[3]);
}
}
else {
hit= meshdeform_tri_intersect(isec->start, end, face[0], face[1], face[2], co, uvw);
- CalcNormFloat(face[0], face[1], face[2], nor);
+ normal_tri_v3( nor,face[0], face[1], face[2]);
}
if(hit) {
- len= VecLenf(isec->start, co)/VecLenf(isec->start, end);
+ len= len_v3v3(isec->start, co)/len_v3v3(isec->start, end);
if(len < isec->labda) {
isec->labda= len;
isec->hit.face = mface;
@@ -1201,7 +1221,7 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float
VECADD(isec.start, co1, epsilon);
VECADD(end, co2, epsilon);
- VECSUB(isec.vec, end, isec.start);
+ sub_v3_v3v3(isec.vec, end, isec.start);
#if 0
/*if(RE_ray_tree_intersect(mdb->raytree, &isec)) {*/
@@ -1219,7 +1239,7 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float
isect->co[1]= co1[1] + isec.vec[1]*len;
isect->co[2]= co1[2] + isec.vec[2]*len;
- isect->len= VecLenf(co1, isect->co);
+ isect->len= len_v3v3(co1, isect->co);
if(isect->len < MESHDEFORM_LEN_THRESHOLD)
isect->len= MESHDEFORM_LEN_THRESHOLD;
@@ -1233,11 +1253,11 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float
/* compute mean value coordinates for interpolation */
cagecos= mdb->cagecos;
- VECCOPY(vert[0], cagecos[mface->v1]);
- VECCOPY(vert[1], cagecos[mface->v2]);
- VECCOPY(vert[2], cagecos[mface->v3]);
- if(mface->v4) VECCOPY(vert[3], cagecos[mface->v4]);
- MeanValueWeights(vert, isect->nvert, isect->co, isect->uvw);
+ copy_v3_v3(vert[0], cagecos[mface->v1]);
+ copy_v3_v3(vert[1], cagecos[mface->v2]);
+ copy_v3_v3(vert[2], cagecos[mface->v3]);
+ if(mface->v4) copy_v3_v3(vert[3], cagecos[mface->v4]);
+ interp_weights_poly_v3( isect->uvw,vert, isect->nvert, isect->co);
return isect;
}
@@ -1258,9 +1278,9 @@ static int meshdeform_inside_cage(MeshDeformBind *mdb, float *co)
outside[1] = co[1] + (mdb->max[1] - mdb->min[1] + 1.0f)*MESHDEFORM_OFFSET[i][1];
outside[2] = co[2] + (mdb->max[2] - mdb->min[2] + 1.0f)*MESHDEFORM_OFFSET[i][2];
- VECCOPY(start, co);
- VECSUB(dir, outside, start);
- Normalize(dir);
+ copy_v3_v3(start, co);
+ sub_v3_v3v3(dir, outside, start);
+ normalize_v3(dir);
isect = meshdeform_ray_tree_intersect(mdb, start, outside);
if(isect && !isect->facing)
@@ -1649,8 +1669,8 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb)
/* static bind : compute weights for each vertex */
for(b=0; b<mdb->totvert; b++) {
if(mdb->inside[b]) {
- VECCOPY(vec, mdb->vertexcos[b]);
- Mat4MulVecfl(mdb->cagemat, vec);
+ copy_v3_v3(vec, mdb->vertexcos[b]);
+ mul_m4_v3(mdb->cagemat, vec);
gridvec[0]= (vec[0] - mdb->min[0] - mdb->halfwidth[0])/mdb->width[0];
gridvec[1]= (vec[1] - mdb->min[1] - mdb->halfwidth[1])/mdb->width[1];
gridvec[2]= (vec[2] - mdb->min[2] - mdb->halfwidth[2])/mdb->width[2];
@@ -1698,148 +1718,123 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb)
nlDeleteContext(context);
}
-void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4])
+static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, MeshDeformBind *mdb)
{
- MeshDeformBind mdb;
MDefBindInfluence *inf;
MDefInfluence *mdinf;
MDefCell *cell;
- MVert *mvert;
float center[3], vec[3], maxwidth, totweight;
int a, b, x, y, z, totinside, offset;
- waitcursor(1);
- start_progress_bar();
-
- memset(&mdb, 0, sizeof(MeshDeformBind));
-
- /* get mesh and cage mesh */
- mdb.vertexcos= (float(*)[3])vertexcos;
- mdb.totvert= totvert;
-
- mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH);
- mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm);
- mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos");
- Mat4CpyMat4(mdb.cagemat, cagemat);
-
- mvert= mdb.cagedm->getVertArray(mdb.cagedm);
- for(a=0; a<mdb.totcagevert; a++)
- VECCOPY(mdb.cagecos[a], mvert[a].co)
-
/* compute bounding box of the cage mesh */
- INIT_MINMAX(mdb.min, mdb.max);
+ INIT_MINMAX(mdb->min, mdb->max);
- for(a=0; a<mdb.totcagevert; a++)
- DO_MINMAX(mdb.cagecos[a], mdb.min, mdb.max);
+ for(a=0; a<mdb->totcagevert; a++)
+ DO_MINMAX(mdb->cagecos[a], mdb->min, mdb->max);
/* allocate memory */
- mdb.size= (2<<(mmd->gridsize-1)) + 2;
- mdb.size3= mdb.size*mdb.size*mdb.size;
- mdb.tag= MEM_callocN(sizeof(int)*mdb.size3, "MeshDeformBindTag");
- mdb.phi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindPhi");
- mdb.totalphi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindTotalPhi");
- mdb.boundisect= MEM_callocN(sizeof(*mdb.boundisect)*mdb.size3, "MDefBoundIsect");
- mdb.semibound= MEM_callocN(sizeof(int)*mdb.size3, "MDefSemiBound");
+ mdb->size= (2<<(mmd->gridsize-1)) + 2;
+ mdb->size3= mdb->size*mdb->size*mdb->size;
+ mdb->tag= MEM_callocN(sizeof(int)*mdb->size3, "MeshDeformBindTag");
+ mdb->phi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindPhi");
+ mdb->totalphi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindTotalPhi");
+ mdb->boundisect= MEM_callocN(sizeof(*mdb->boundisect)*mdb->size3, "MDefBoundIsect");
+ mdb->semibound= MEM_callocN(sizeof(int)*mdb->size3, "MDefSemiBound");
- mdb.inside= MEM_callocN(sizeof(int)*mdb.totvert, "MDefInside");
+ mdb->inside= MEM_callocN(sizeof(int)*mdb->totvert, "MDefInside");
if(mmd->flag & MOD_MDEF_DYNAMIC_BIND)
- mdb.dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb.size3, "MDefDynGrid");
+ mdb->dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb->size3, "MDefDynGrid");
else
- mdb.weights= MEM_callocN(sizeof(float)*mdb.totvert*mdb.totcagevert, "MDefWeights");
+ mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights");
- mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
- BLI_memarena_use_calloc(mdb.memarena);
+ mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
+ BLI_memarena_use_calloc(mdb->memarena);
/* make bounding box equal size in all directions, add padding, and compute
* width of the cells */
maxwidth = -1.0f;
for(a=0; a<3; a++)
- if(mdb.max[a]-mdb.min[a] > maxwidth)
- maxwidth= mdb.max[a]-mdb.min[a];
+ if(mdb->max[a]-mdb->min[a] > maxwidth)
+ maxwidth= mdb->max[a]-mdb->min[a];
for(a=0; a<3; a++) {
- center[a]= (mdb.min[a]+mdb.max[a])*0.5f;
- mdb.min[a]= center[a] - maxwidth*0.5f;
- mdb.max[a]= center[a] + maxwidth*0.5f;
+ center[a]= (mdb->min[a]+mdb->max[a])*0.5f;
+ mdb->min[a]= center[a] - maxwidth*0.5f;
+ mdb->max[a]= center[a] + maxwidth*0.5f;
- mdb.width[a]= (mdb.max[a]-mdb.min[a])/(mdb.size-4);
- mdb.min[a] -= 2.1f*mdb.width[a];
- mdb.max[a] += 2.1f*mdb.width[a];
+ mdb->width[a]= (mdb->max[a]-mdb->min[a])/(mdb->size-4);
+ mdb->min[a] -= 2.1f*mdb->width[a];
+ mdb->max[a] += 2.1f*mdb->width[a];
- mdb.width[a]= (mdb.max[a]-mdb.min[a])/mdb.size;
- mdb.halfwidth[a]= mdb.width[a]*0.5f;
+ mdb->width[a]= (mdb->max[a]-mdb->min[a])/mdb->size;
+ mdb->halfwidth[a]= mdb->width[a]*0.5f;
}
progress_bar(0, "Setting up mesh deform system");
#if 0
/* create ray tree */
- meshdeform_ray_tree_create(&mdb);
+ meshdeform_ray_tree_create(mdb);
#endif
totinside= 0;
- for(a=0; a<mdb.totvert; a++) {
- VECCOPY(vec, mdb.vertexcos[a]);
- Mat4MulVecfl(mdb.cagemat, vec);
- mdb.inside[a]= meshdeform_inside_cage(&mdb, vec);
- if(mdb.inside[a])
+ for(a=0; a<mdb->totvert; a++) {
+ copy_v3_v3(vec, mdb->vertexcos[a]);
+ mul_m4_v3(mdb->cagemat, vec);
+ mdb->inside[a]= meshdeform_inside_cage(mdb, vec);
+ if(mdb->inside[a])
totinside++;
}
/* free temporary MDefBoundIsects */
- BLI_memarena_free(mdb.memarena);
- mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
+ BLI_memarena_free(mdb->memarena);
+ mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
/* start with all cells untyped */
- for(a=0; a<mdb.size3; a++)
- mdb.tag[a]= MESHDEFORM_TAG_UNTYPED;
+ for(a=0; a<mdb->size3; a++)
+ mdb->tag[a]= MESHDEFORM_TAG_UNTYPED;
/* detect intersections and tag boundary cells */
- for(z=0; z<mdb.size; z++)
- for(y=0; y<mdb.size; y++)
- for(x=0; x<mdb.size; x++)
- meshdeform_add_intersections(&mdb, x, y, z);
+ for(z=0; z<mdb->size; z++)
+ for(y=0; y<mdb->size; y++)
+ for(x=0; x<mdb->size; x++)
+ meshdeform_add_intersections(mdb, x, y, z);
#if 0
/* free ray tree */
- meshdeform_ray_tree_free(&mdb);
+ meshdeform_ray_tree_free(mdb);
#endif
/* compute exterior and interior tags */
- meshdeform_bind_floodfill(&mdb);
+ meshdeform_bind_floodfill(mdb);
- for(z=0; z<mdb.size; z++)
- for(y=0; y<mdb.size; y++)
- for(x=0; x<mdb.size; x++)
- meshdeform_check_semibound(&mdb, x, y, z);
+ for(z=0; z<mdb->size; z++)
+ for(y=0; y<mdb->size; y++)
+ for(x=0; x<mdb->size; x++)
+ meshdeform_check_semibound(mdb, x, y, z);
/* solve */
- meshdeform_matrix_solve(&mdb);
+ meshdeform_matrix_solve(mdb);
/* assign results */
- mmd->bindcos= (float*)mdb.cagecos;
- mmd->totvert= mdb.totvert;
- mmd->totcagevert= mdb.totcagevert;
- Mat4CpyMat4(mmd->bindmat, mmd->object->obmat);
-
if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) {
mmd->totinfluence= 0;
- for(a=0; a<mdb.size3; a++)
- for(inf=mdb.dyngrid[a]; inf; inf=inf->next)
+ for(a=0; a<mdb->size3; a++)
+ for(inf=mdb->dyngrid[a]; inf; inf=inf->next)
mmd->totinfluence++;
/* convert MDefBindInfluences to smaller MDefInfluences */
- mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb.size3, "MDefDynGrid");
+ mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb->size3, "MDefDynGrid");
mmd->dyninfluences= MEM_callocN(sizeof(MDefInfluence)*mmd->totinfluence, "MDefInfluence");
offset= 0;
- for(a=0; a<mdb.size3; a++) {
+ for(a=0; a<mdb->size3; a++) {
cell= &mmd->dyngrid[a];
cell->offset= offset;
totweight= 0.0f;
mdinf= mmd->dyninfluences + cell->offset;
- for(inf=mdb.dyngrid[a]; inf; inf=inf->next, mdinf++) {
+ for(inf=mdb->dyngrid[a]; inf; inf=inf->next, mdinf++) {
mdinf->weight= inf->weight;
mdinf->vertex= inf->vertex;
totweight += mdinf->weight;
@@ -1855,29 +1850,138 @@ void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float
offset += cell->totinfluence;
}
- mmd->dynverts= mdb.inside;
- mmd->dyngridsize= mdb.size;
- VECCOPY(mmd->dyncellmin, mdb.min);
- mmd->dyncellwidth= mdb.width[0];
- MEM_freeN(mdb.dyngrid);
+ mmd->dynverts= mdb->inside;
+ mmd->dyngridsize= mdb->size;
+ copy_v3_v3(mmd->dyncellmin, mdb->min);
+ mmd->dyncellwidth= mdb->width[0];
+ MEM_freeN(mdb->dyngrid);
}
else {
- mmd->bindweights= mdb.weights;
- MEM_freeN(mdb.inside);
+ mmd->bindweights= mdb->weights;
+ MEM_freeN(mdb->inside);
}
+ MEM_freeN(mdb->tag);
+ MEM_freeN(mdb->phi);
+ MEM_freeN(mdb->totalphi);
+ MEM_freeN(mdb->boundisect);
+ MEM_freeN(mdb->semibound);
+ BLI_memarena_free(mdb->memarena);
+}
+
+static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, MeshDeformBind *mdb)
+{
+ LaplacianSystem *sys;
+ MFace *mface= dm->getFaceArray(dm), *mf;
+ int totvert= dm->getNumVerts(dm);
+ int totface= dm->getNumFaces(dm);
+ float solution, weight;
+ int a, tottri, j, thrownerror = 0;
+
+ mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights");
+
+ /* count triangles */
+ for(tottri=0, a=0, mf=mface; a<totface; a++, mf++) {
+ tottri++;
+ if(mf->v4) tottri++;
+ }
+
+ /* create laplacian */
+ sys = laplacian_system_construct_begin(totvert, tottri, 1);
+
+ sys->heat.mface= mface;
+ sys->heat.totface= totface;
+ sys->heat.totvert= totvert;
+ sys->heat.verts= mdb->vertexcos;
+ sys->heat.source = mdb->cagecos;
+ sys->heat.numsource= mdb->totcagevert;
+
+ heat_ray_tree_create(sys);
+ heat_laplacian_create(sys);
+
+ laplacian_system_construct_end(sys);
+
+ /* compute weights per bone */
+ for(j=0; j<mdb->totcagevert; j++) {
+ /* fill right hand side */
+ laplacian_begin_solve(sys, -1);
+
+ for(a=0; a<totvert; a++)
+ if(heat_source_closest(sys, a, j))
+ laplacian_add_right_hand_side(sys, a,
+ sys->heat.H[a]*sys->heat.p[a]);
+
+ /* solve */
+ if(laplacian_system_solve(sys)) {
+ /* load solution into vertex groups */
+ for(a=0; a<totvert; a++) {
+ solution= laplacian_system_get_solution(a);
+
+ weight= heat_limit_weight(solution);
+ if(weight > 0.0f)
+ mdb->weights[a*mdb->totcagevert + j] = weight;
+ }
+ }
+ else if(!thrownerror) {
+ error("Mesh Deform Heat Weighting:"
+ " failed to find solution for one or more vertices");
+ thrownerror= 1;
+ break;
+ }
+ }
+
+ /* free */
+ heat_system_free(sys);
+ laplacian_system_delete(sys);
+
+ mmd->bindweights= mdb->weights;
+}
+
+void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4])
+{
+ MeshDeformBind mdb;
+ MVert *mvert;
+ int a;
+
+ waitcursor(1);
+ start_progress_bar();
+
+ memset(&mdb, 0, sizeof(MeshDeformBind));
+
+ /* get mesh and cage mesh */
+ mdb.vertexcos= MEM_callocN(sizeof(float)*3*totvert, "MeshDeformCos");
+ mdb.totvert= totvert;
+
+ mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH);
+ mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm);
+ mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos");
+ copy_m4_m4(mdb.cagemat, cagemat);
+
+ mvert= mdb.cagedm->getVertArray(mdb.cagedm);
+ for(a=0; a<mdb.totcagevert; a++)
+ copy_v3_v3(mdb.cagecos[a], mvert[a].co);
+ for(a=0; a<mdb.totvert; a++)
+ mul_v3_m4v3(mdb.vertexcos[a], mdb.cagemat, vertexcos + a*3);
+
+ /* solve */
+ if(mmd->mode == MOD_MDEF_VOLUME)
+ harmonic_coordinates_bind(scene, mmd, &mdb);
+ else
+ heat_weighting_bind(scene, dm, mmd, &mdb);
+
+ /* assign bind variables */
+ mmd->bindcos= (float*)mdb.cagecos;
+ mmd->totvert= mdb.totvert;
+ mmd->totcagevert= mdb.totcagevert;
+ copy_m4_m4(mmd->bindmat, mmd->object->obmat);
+
/* transform bindcos to world space */
for(a=0; a<mdb.totcagevert; a++)
- Mat4MulVecfl(mmd->object->obmat, mmd->bindcos+a*3);
+ mul_m4_v3(mmd->object->obmat, mmd->bindcos+a*3);
/* free */
mdb.cagedm->release(mdb.cagedm);
- MEM_freeN(mdb.tag);
- MEM_freeN(mdb.phi);
- MEM_freeN(mdb.totalphi);
- MEM_freeN(mdb.boundisect);
- MEM_freeN(mdb.semibound);
- BLI_memarena_free(mdb.memarena);
+ MEM_freeN(mdb.vertexcos);
end_progress_bar();
waitcursor(0);
diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h
index 1ee01561cd4..215a3579cab 100644
--- a/source/blender/editors/armature/meshlaplacian.h
+++ b/source/blender/editors/armature/meshlaplacian.h
@@ -78,7 +78,8 @@ void rigid_deform_end(int cancel);
/* Harmonic Coordinates */
-void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd,
+void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm,
+ struct MeshDeformModifierData *mmd,
float *vertexcos, int totvert, float cagemat[][4]);
#endif
diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c
index 1e0df79d0e6..7ceb50057ce 100644
--- a/source/blender/editors/armature/poseSlide.c
+++ b/source/blender/editors/armature/poseSlide.c
@@ -34,7 +34,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_dlrbTree.h"
@@ -178,7 +178,7 @@ static int pose_slide_init (bContext *C, wmOperator *op, short mode)
/* for each Pose-Channel which gets affected, get the F-Curves for that channel
* and set the relevant transform flags...
*/
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
ListBase curves = {NULL, NULL};
int transFlags = action_get_item_transforms(act, pso->ob, pchan, &curves);
@@ -195,7 +195,7 @@ static int pose_slide_init (bContext *C, wmOperator *op, short mode)
pfl->pchan= pchan;
/* get the RNA path to this pchan - this needs to be freed! */
- RNA_pointer_create((ID *)pso->ob, &RNA_PoseChannel, pchan, &ptr);
+ RNA_pointer_create((ID *)pso->ob, &RNA_PoseBone, pchan, &ptr);
pfl->pchan_path= RNA_path_from_ID_to_struct(&ptr);
/* add linkage data to operator data */
@@ -461,7 +461,7 @@ static void pose_slide_apply_quat (tPoseSlideOp *pso, tPChanFCurveLink *pfl)
/* perform blending */
if (pso->mode == POSESLIDE_BREAKDOWN) {
/* just perform the interpol between quat_prev and quat_next using pso->percentage as a guide */
- QuatInterpol(pchan->quat, quat_prev, quat_next, pso->percentage);
+ interp_qt_qtqt(pchan->quat, quat_prev, quat_next, pso->percentage);
}
else {
float quat_interp[4], quat_orig[4];
@@ -470,16 +470,16 @@ static void pose_slide_apply_quat (tPoseSlideOp *pso, tPChanFCurveLink *pfl)
/* perform this blending several times until a satisfactory result is reached */
while (iters-- > 0) {
/* calculate the interpolation between the endpoints */
- QuatInterpol(quat_interp, quat_prev, quat_next, (cframe-pso->prevFrame) / (pso->nextFrame-pso->prevFrame) );
+ interp_qt_qtqt(quat_interp, quat_prev, quat_next, (cframe-pso->prevFrame) / (pso->nextFrame-pso->prevFrame) );
/* make a copy of the original rotation */
QUATCOPY(quat_orig, pchan->quat);
/* tricky interpolations - mode-dependent blending between original and new */
if (pso->mode == POSESLIDE_RELAX) // xxx this was the original code, so should work fine
- QuatInterpol(pchan->quat, quat_orig, quat_interp, 1.0f/6.0f);
+ interp_qt_qtqt(pchan->quat, quat_orig, quat_interp, 1.0f/6.0f);
else // I'm just guessing here...
- QuatInterpol(pchan->quat, quat_orig, quat_interp, 6.0f/5.0f);
+ interp_qt_qtqt(pchan->quat, quat_orig, quat_interp, 6.0f/5.0f);
}
}
}
@@ -614,12 +614,12 @@ static int pose_slide_invoke_common (bContext *C, wmOperator *op, tPoseSlideOp *
ActKeyColumn *ak;
/* firstly, check if the current frame is a keyframe... */
- ak= cfra_find_actkeycolumn(pso->keys.root, pso->cframe);
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_exact(&pso->keys, compare_ak_cfraPtr, &pso->cframe);
if (ak == NULL) {
/* current frame is not a keyframe, so search */
- ActKeyColumn *pk= cfra_find_nearest_next_ak(pso->keys.root, pso->cframe, 0);
- ActKeyColumn *nk= cfra_find_nearest_next_ak(pso->keys.root, pso->cframe, 1);
+ ActKeyColumn *pk= (ActKeyColumn *)BLI_dlrbTree_search_prev(&pso->keys, compare_ak_cfraPtr, &pso->cframe);
+ ActKeyColumn *nk= (ActKeyColumn *)BLI_dlrbTree_search_next(&pso->keys, compare_ak_cfraPtr, &pso->cframe);
/* check if we found good keyframes */
if ((pk == nk) && (pk != NULL)) {
diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c
index 565a4782377..0837e9cb48a 100644
--- a/source/blender/editors/armature/poselib.c
+++ b/source/blender/editors/armature/poselib.c
@@ -34,7 +34,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_dlrbTree.h"
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index d7741c2a5ef..aeb42142abd 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -33,7 +33,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
@@ -241,10 +241,10 @@ void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob)
/* hack: for unsaved files, set OB_RECALC so that paths can get calculated */
if ((ob->recalc & OB_RECALC)==0) {
ob->recalc |= OB_RECALC;
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
}
else
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
/* calculate path over requested range */
for (CFRA=sfra; CFRA<=efra; CFRA++) {
@@ -279,7 +279,7 @@ void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob)
VECCOPY(fp, pchan->pose_tail);
}
- Mat4MulVecfl(ob->obmat, fp);
+ mul_m4_v3(ob->obmat, fp);
}
}
}
@@ -355,10 +355,10 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op)
/* hack: for unsaved files, set OB_RECALC so that paths can get calculated */
if ((ob->recalc & OB_RECALC)==0) {
ob->recalc |= OB_RECALC;
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
}
else
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
/* alloc the path cache arrays */
for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
@@ -405,7 +405,7 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op)
VECCOPY(fp, pchan->pose_tail);
}
- Mat4MulVecfl(ob->obmat, fp);
+ mul_m4_v3(ob->obmat, fp);
}
}
}
@@ -814,13 +814,13 @@ void pose_copy_menu(Scene *scene)
float tmp_quat[4];
/* need to convert to quat first (in temp var)... */
- Mat4ToQuat(delta_mat, tmp_quat);
- QuatToAxisAngle(tmp_quat, pchan->rotAxis, &pchan->rotAngle);
+ mat4_to_quat( tmp_quat,delta_mat);
+ quat_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,tmp_quat);
}
else if (pchan->rotmode == ROT_MODE_QUAT)
- Mat4ToQuat(delta_mat, pchan->quat);
+ mat4_to_quat( pchan->quat,delta_mat);
else
- Mat4ToEulO(delta_mat, pchan->eul, pchan->rotmode);
+ mat4_to_eulO( pchan->eul, pchan->rotmode,delta_mat);
}
break;
case 11: /* Visual Size */
@@ -828,7 +828,7 @@ void pose_copy_menu(Scene *scene)
float delta_mat[4][4], size[4];
armature_mat_pose_to_bone(pchan, pchanact->pose_mat, delta_mat);
- Mat4ToSize(delta_mat, size);
+ mat4_to_size( size,delta_mat);
VECCOPY(pchan->size, size);
}
}
@@ -1020,23 +1020,23 @@ static int pose_paste_exec (bContext *C, wmOperator *op)
else if (pchan->rotmode > 0) {
/* quat/axis-angle to euler */
if (chan->rotmode == ROT_MODE_AXISANGLE)
- AxisAngleToEulO(chan->rotAxis, chan->rotAngle, pchan->eul, pchan->rotmode);
+ axis_angle_to_eulO( pchan->eul, pchan->rotmode,chan->rotAxis, chan->rotAngle);
else
- QuatToEulO(chan->quat, pchan->eul, pchan->rotmode);
+ quat_to_eulO( pchan->eul, pchan->rotmode,chan->quat);
}
else if (pchan->rotmode == ROT_MODE_AXISANGLE) {
/* quat/euler to axis angle */
if (chan->rotmode > 0)
- EulOToAxisAngle(chan->eul, chan->rotmode, pchan->rotAxis, &pchan->rotAngle);
+ eulO_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,chan->eul, chan->rotmode);
else
- QuatToAxisAngle(chan->quat, pchan->rotAxis, &pchan->rotAngle);
+ quat_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,chan->quat);
}
else {
/* euler/axis-angle to quat */
if (chan->rotmode > 0)
- EulOToQuat(chan->eul, chan->rotmode, pchan->quat);
+ eulO_to_quat( pchan->quat,chan->eul, chan->rotmode);
else
- AxisAngleToQuat(pchan->quat, chan->rotAxis, pchan->rotAngle);
+ axis_angle_to_quat(pchan->quat, chan->rotAxis, pchan->rotAngle);
}
/* paste flipped pose? */
@@ -1051,10 +1051,10 @@ static int pose_paste_exec (bContext *C, wmOperator *op)
else if (pchan->rotmode == ROT_MODE_AXISANGLE) {
float eul[3];
- AxisAngleToEulO(pchan->rotAxis, pchan->rotAngle, eul, EULER_ORDER_DEFAULT);
+ axis_angle_to_eulO( eul, EULER_ORDER_DEFAULT,pchan->rotAxis, pchan->rotAngle);
eul[1]*= -1;
eul[2]*= -1;
- EulOToAxisAngle(eul, EULER_ORDER_DEFAULT, pchan->rotAxis, &pchan->rotAngle);
+ eulO_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,eul, EULER_ORDER_DEFAULT);
// experimental method (uncomment to test):
#if 0
@@ -1066,10 +1066,10 @@ static int pose_paste_exec (bContext *C, wmOperator *op)
else {
float eul[3];
- QuatToEul(pchan->quat, eul);
+ quat_to_eul( eul,pchan->quat);
eul[1]*= -1;
eul[2]*= -1;
- EulToQuat(eul, pchan->quat);
+ eul_to_quat( pchan->quat,eul);
}
}
@@ -1329,7 +1329,7 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op)
/* add selected bones to group then */
// NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined...
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
pchan->agrp_index= pose->active_group;
done= 1;
}
@@ -1388,7 +1388,7 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op)
/* add selected bones to ungroup then */
// NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined...
- // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) {
/* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */
// NOTE: sync this view3d_context() in space_view3d.c
@@ -1464,7 +1464,7 @@ static short pose_select_same_layer (Object *ob)
bPose *pose= (ob)? ob->pose : NULL;
bArmature *arm= (ob)? ob->data : NULL;
bPoseChannel *pchan;
- short layers= 0, changed= 0;
+ int layers= 0, changed= 0;
if (ELEM3(NULL, ob, pose, arm))
return 0;
@@ -1530,7 +1530,7 @@ static int pose_flip_names_exec (bContext *C, wmOperator *op)
arm= ob->data;
/* loop through selected bones, auto-naming them */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
BLI_strncpy(newname, pchan->name, sizeof(newname));
bone_flip_name(newname, 1); // 1 = do strip off number extensions
@@ -1577,7 +1577,7 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op)
arm= ob->data;
/* loop through selected bones, auto-naming them */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
BLI_strncpy(newname, pchan->name, sizeof(newname));
bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis]);
@@ -1670,7 +1670,7 @@ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev
Object *ob= CTX_data_active_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* sanity checking */
if (arm == NULL)
@@ -1691,7 +1691,7 @@ static int pose_armature_layers_exec (bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get the values set in the operator properties */
RNA_boolean_get_array(op->ptr, "layers", layers);
@@ -1723,7 +1723,7 @@ void POSE_OT_armature_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible");
}
void ARMATURE_OT_armature_layers (wmOperatorType *ot)
@@ -1742,7 +1742,7 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible");
}
/* ------------------- */
@@ -1750,17 +1750,17 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot)
/* Present a popup to get the layers that should be used */
static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt)
{
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get layers that are active already */
memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
{
short bit;
/* loop over the bits for this pchan's layers, adding layers where they're needed */
- for (bit= 0; bit < 16; bit++) {
+ for (bit= 0; bit < 32; bit++) {
if (pchan->bone->layer & (1<<bit))
layers[bit]= 1;
}
@@ -1780,13 +1780,13 @@ static int pose_bone_layers_exec (bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get the values set in the operator properties */
RNA_boolean_get_array(op->ptr, "layers", layers);
/* set layers of pchans based on the values set in the operator props */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
{
/* get pointer for pchan, and write flags this way */
RNA_pointer_create((ID *)arm, &RNA_Bone, pchan->bone, &ptr);
@@ -1816,7 +1816,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to");
}
/* ------------------- */
@@ -1824,7 +1824,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot)
/* Present a popup to get the layers that should be used */
static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt)
{
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get layers that are active already */
memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */
@@ -1834,7 +1834,7 @@ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev
short bit;
/* loop over the bits for this pchan's layers, adding layers where they're needed */
- for (bit= 0; bit < 16; bit++) {
+ for (bit= 0; bit < 32; bit++) {
if (ebone->layer & (1<<bit))
layers[bit]= 1;
}
@@ -1854,7 +1854,7 @@ static int armature_bone_layers_exec (bContext *C, wmOperator *op)
Object *ob= CTX_data_edit_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get the values set in the operator properties */
RNA_boolean_get_array(op->ptr, "layers", layers);
@@ -1890,7 +1890,7 @@ void ARMATURE_OT_bone_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to");
}
/* ********************************************** */
diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c
index 132d9edf8d0..05b0dc267ff 100644
--- a/source/blender/editors/armature/reeb.c
+++ b/source/blender/editors/armature/reeb.c
@@ -45,7 +45,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_edgehash.h"
#include "BLI_ghash.h"
@@ -498,12 +498,12 @@ void repositionNodes(ReebGraph *rg)
float p[3];
VECCOPY(p, ((ReebArc*)arc)->buckets[0].p);
- VecMulf(p, 1.0f / arc->head->degree);
- VecAddf(arc->head->p, arc->head->p, p);
+ mul_v3_fl(p, 1.0f / arc->head->degree);
+ add_v3_v3v3(arc->head->p, arc->head->p, p);
VECCOPY(p, ((ReebArc*)arc)->buckets[((ReebArc*)arc)->bcount - 1].p);
- VecMulf(p, 1.0f / arc->tail->degree);
- VecAddf(arc->tail->p, arc->tail->p, p);
+ mul_v3_fl(p, 1.0f / arc->tail->degree);
+ add_v3_v3v3(arc->tail->p, arc->tail->p, p);
}
}
}
@@ -634,15 +634,15 @@ void verifyMultiResolutionLinks(ReebGraph *rg, int level)
void addVertToBucket(EmbedBucket *b, float co[3])
{
b->nv++;
- VecLerpf(b->p, b->p, co, 1.0f / b->nv);
+ interp_v3_v3v3(b->p, b->p, co, 1.0f / b->nv);
}
void removeVertFromBucket(EmbedBucket *b, float co[3])
{
- VecMulf(b->p, (float)b->nv);
- VecSubf(b->p, b->p, co);
+ mul_v3_fl(b->p, (float)b->nv);
+ sub_v3_v3v3(b->p, b->p, co);
b->nv--;
- VecMulf(b->p, 1.0f / (float)b->nv);
+ mul_v3_fl(b->p, 1.0f / (float)b->nv);
}
void mergeBuckets(EmbedBucket *bDst, EmbedBucket *bSrc)
@@ -650,7 +650,7 @@ void mergeBuckets(EmbedBucket *bDst, EmbedBucket *bSrc)
if (bDst->nv > 0 && bSrc->nv > 0)
{
bDst->nv += bSrc->nv;
- VecLerpf(bDst->p, bDst->p, bSrc->p, (float)bSrc->nv / (float)(bDst->nv));
+ interp_v3_v3v3(bDst->p, bDst->p, bSrc->p, (float)bSrc->nv / (float)(bDst->nv));
}
else if (bSrc->nv > 0)
{
@@ -797,7 +797,7 @@ static void interpolateBuckets(ReebArc *arc, float *start_p, float *end_p, int s
{
EmbedBucket *empty = arc->buckets + j;
empty->nv = 1;
- VecLerpf(empty->p, start_p, end_p, (float)(j - start_index + 1) / total);
+ interp_v3_v3v3(empty->p, start_p, end_p, (float)(j - start_index + 1) / total);
}
}
@@ -873,20 +873,20 @@ static void ExtendArcBuckets(ReebArc *arc)
previous = iter->p, IT_next(iter)
)
{
- average_length += VecLenf(previous, iter->p);
+ average_length += len_v3v3(previous, iter->p);
}
average_length /= (arc->bcount - 1);
first_bucket = arc->buckets;
last_bucket = arc->buckets + (arc->bcount - 1);
- length = VecLenf(first_bucket->p, arc->head->p);
+ length = len_v3v3(first_bucket->p, arc->head->p);
if (length > 2 * average_length)
{
padding_head = (int)floor(length / average_length);
}
- length = VecLenf(last_bucket->p, arc->tail->p);
+ length = len_v3v3(last_bucket->p, arc->tail->p);
if (length > 2 * average_length)
{
padding_tail = (int)floor(length / average_length);
@@ -945,12 +945,12 @@ void calculateArcLength(ReebArc *arc)
{
vec1 = iter->p;
- arc->length += VecLenf(vec0, vec1);
+ arc->length += len_v3v3(vec0, vec1);
vec0 = vec1;
}
- arc->length += VecLenf(arc->tail->p, vec1);
+ arc->length += len_v3v3(arc->tail->p, vec1);
}
void calculateGraphLength(ReebGraph *rg)
@@ -982,8 +982,8 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count)
float normal[3];
int j = i + 1;
- VecAddf(tangent, ring[i].n, ring[j].n);
- Crossf(normal, tangent, axis);
+ add_v3_v3v3(tangent, ring[i].n, ring[j].n);
+ cross_v3_v3v3(normal, tangent, axis);
node1 = (ReebNode*)BLI_otherNode(ring[i].arc, root_node);
node2 = (ReebNode*)BLI_otherNode(ring[j].arc, root_node);
@@ -993,7 +993,7 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count)
/* mirror first node and mix with the second */
BLI_mirrorAlongAxis(node1->p, root_node->p, normal);
- VecLerpf(node2->p, node2->p, node1->p, 1.0f / (j + 1));
+ interp_v3_v3v3(node2->p, node2->p, node1->p, 1.0f / (j + 1));
/* Merge buckets
* there shouldn't be any null arcs here, but just to be safe
@@ -1030,7 +1030,7 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count)
/* mirror on axis */
BLI_mirrorAlongAxis(bucket1->p, root_node->p, normal);
/* add bucket2 in bucket1 */
- VecLerpf(bucket2->p, bucket2->p, bucket1->p, (float)bucket1->nv / (float)(bucket2->nv));
+ interp_v3_v3v3(bucket2->p, bucket2->p, bucket1->p, (float)bucket1->nv / (float)(bucket2->nv));
}
}
}
@@ -1044,8 +1044,8 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count)
float normal[3];
int j = i - 1;
- VecAddf(tangent, ring[i].n, ring[j].n);
- Crossf(normal, tangent, axis);
+ add_v3_v3v3(tangent, ring[i].n, ring[j].n);
+ cross_v3_v3v3(normal, tangent, axis);
node1 = (ReebNode*)BLI_otherNode(ring[i].arc, root_node);
node2 = (ReebNode*)BLI_otherNode(ring[j].arc, root_node);
@@ -1111,8 +1111,8 @@ void REEB_AxialSymmetry(BNode* root_node, BNode* node1, BNode* node2, struct BAr
BLI_mirrorAlongAxis(p, root_node->p, nor);
/* average with node1 */
- VecAddf(node1->p, node1->p, p);
- VecMulf(node1->p, 0.5f);
+ add_v3_v3v3(node1->p, node1->p, p);
+ mul_v3_fl(node1->p, 0.5f);
/* mirror back on node2 */
VECCOPY(node2->p, node1->p);
@@ -1153,7 +1153,7 @@ void REEB_AxialSymmetry(BNode* root_node, BNode* node1, BNode* node2, struct BAr
/* mirror on axis */
BLI_mirrorAlongAxis(bucket2->p, root_node->p, nor);
/* add bucket2 in bucket1 */
- VecLerpf(bucket1->p, bucket1->p, bucket2->p, (float)bucket2->nv / (float)(bucket1->nv));
+ interp_v3_v3v3(bucket1->p, bucket1->p, bucket2->p, (float)bucket2->nv / (float)(bucket1->nv));
/* copy and mirror back to bucket2 */
bucket2->nv = bucket1->nv;
@@ -1200,8 +1200,8 @@ void postprocessGraph(ReebGraph *rg, char mode)
for(index = 1; index < bcount - 1; index++)
{
- VecLerpf(buckets[index].p, buckets[index].p, buckets[index - 1].p, fac1 / (fac1 + fac2));
- VecLerpf(buckets[index].p, buckets[index].p, buckets[index + 1].p, fac3 / (fac1 + fac2 + fac3));
+ interp_v3_v3v3(buckets[index].p, buckets[index].p, buckets[index - 1].p, fac1 / (fac1 + fac2));
+ interp_v3_v3v3(buckets[index].p, buckets[index].p, buckets[index + 1].p, fac3 / (fac1 + fac2 + fac3));
}
}
}
@@ -1339,7 +1339,7 @@ int joinSubgraphsEnds(ReebGraph *rg, float threshold, int nb_subgraphs)
{
if (end_node->subgraph_index != subgraph)
{
- float distance = VecLenf(start_node->p, end_node->p);
+ float distance = len_v3v3(start_node->p, end_node->p);
if (distance < threshold && distance < min_distance)
{
@@ -1597,7 +1597,7 @@ void filterNullReebGraph(ReebGraph *rg)
blend = (float)newNode->degree / (float)(newNode->degree + removedNode->degree); // blending factors
- VecLerpf(newNode->p, removedNode->p, newNode->p, blend);
+ interp_v3_v3v3(newNode->p, removedNode->p, newNode->p, blend);
filterArc(rg, newNode, removedNode, arc, 0);
@@ -1808,16 +1808,16 @@ int filterSmartReebGraph(ReebGraph *rg, float threshold)
VECCOPY(midpoint, vec1);
- distance = VecLenf(midpoint, efa->cent);
+ distance = len_v3v3(midpoint, efa->cent);
if (min_distance == -1 || distance < min_distance)
{
min_distance = distance;
- VecSubf(tangent, vec1, vec0);
- Normalize(tangent);
+ sub_v3_v3v3(tangent, vec1, vec0);
+ normalize_v3(tangent);
- angle = Inpf(tangent, efa->n);
+ angle = dot_v3v3(tangent, efa->n);
}
previous = bucket;
@@ -1829,7 +1829,7 @@ int filterSmartReebGraph(ReebGraph *rg, float threshold)
efa->tmp.fp = saacos(fabs(angle));
#endif
#else
- VecAddf(avg_vec, avg_vec, efa->n);
+ add_v3_v3v3(avg_vec, avg_vec, efa->n);
#endif
}
@@ -1837,8 +1837,8 @@ int filterSmartReebGraph(ReebGraph *rg, float threshold)
#if 0
avg_angle /= total;
#else
- VecMulf(avg_vec, 1.0 / total);
- avg_angle = Inpf(avg_vec, avg_vec);
+ mul_v3_fl(avg_vec, 1.0 / total);
+ avg_angle = dot_v3v3(avg_vec, avg_vec);
#endif
arc->angle = avg_angle;
@@ -2064,8 +2064,8 @@ void REEB_exportGraph(ReebGraph *rg, int count)
fprintf(f, "b nv:%i %f %f %f\n", arc->buckets[i].nv, arc->buckets[i].p[0], arc->buckets[i].p[1], arc->buckets[i].p[2]);
}
- VecAddf(p, arc->tail->p, arc->head->p);
- VecMulf(p, 0.5f);
+ add_v3_v3v3(p, arc->tail->p, arc->head->p);
+ mul_v3_fl(p, 0.5f);
fprintf(f, "angle %0.3f %0.3f %0.3f %0.3f %i\n", p[0], p[1], p[2], arc->angle, BLI_ghash_size(arc->faces));
exportNode(f, "v2", arc->tail);
@@ -2501,7 +2501,7 @@ ReebEdge * createArc(ReebGraph *rg, ReebNode *node1, ReebNode *node2)
float co[3];
float f = (arc->buckets[i].val - offset) / len;
- VecLerpf(co, v1->p, v2->p, f);
+ interp_v3_v3v3(co, v1->p, v2->p, f);
addVertToBucket(&(arc->buckets[i]), co);
}
#endif
@@ -2690,16 +2690,16 @@ static float cotan_weight(float *v1, float *v2, float *v3)
{
float a[3], b[3], c[3], clen;
- VecSubf(a, v2, v1);
- VecSubf(b, v3, v1);
- Crossf(c, a, b);
+ sub_v3_v3v3(a, v2, v1);
+ sub_v3_v3v3(b, v3, v1);
+ cross_v3_v3v3(c, a, b);
- clen = VecLength(c);
+ clen = len_v3(c);
if (clen == 0.0f)
return 0.0f;
- return Inpf(a, b)/clen;
+ return dot_v3v3(a, b)/clen;
}
void addTriangle(EditVert *v1, EditVert *v2, EditVert *v3, int e1, int e2, int e3)
@@ -3077,7 +3077,7 @@ int weightFromDistance(EditMesh *em, EdgeIndex *indexed_edges)
{
if (eed->v1->h == 0 && eed->v2->h == 0)
{
- eed->tmp.fp = VecLenf(eed->v1->co, eed->v2->co);
+ eed->tmp.fp = len_v3v3(eed->v1->co, eed->v2->co);
}
}
@@ -3112,7 +3112,7 @@ int weightFromDistance(EditMesh *em, EdgeIndex *indexed_edges)
/* vertex is already processed and distance is smaller than current minimum */
if (closest_eve->f1 == 1)
{
- float distance = VecLenf(closest_eve->co, eve->co);
+ float distance = len_v3v3(closest_eve->co, eve->co);
if (distance < min_distance)
{
min_distance = distance;
@@ -3688,7 +3688,7 @@ void REEB_draw()
if (G.scene->toolsettings->skgen_options & SKGEN_DISP_INDEX)
{
- VecLerpf(vec, arc->head->p, arc->tail->p, 0.5f);
+ interp_v3_v3v3(vec, arc->head->p, arc->tail->p, 0.5f);
s += sprintf(s, "%i (%i-%i-%i) ", i, arc->symmetry_level, arc->symmetry_flag, arc->symmetry_group);
if (G.scene->toolsettings->skgen_options & SKGEN_DISP_WEIGHT)
diff --git a/source/blender/editors/curve/SConscript b/source/blender/editors/curve/SConscript
index 3a1930899d3..f72fc6c8863 100644
--- a/source/blender/editors/curve/SConscript
+++ b/source/blender/editors/curve/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #/intern/guardedalloc ../../gpu'
+incs += ' ../../gpu'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
env.BlenderLib ( 'bf_editors_curve', sources, Split(incs), [], libtype=['core'], priority=[45] )
diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c
index 929e3514990..15ff971b9cf 100644
--- a/source/blender/editors/curve/curve_ops.c
+++ b/source/blender/editors/curve/curve_ops.c
@@ -40,7 +40,7 @@
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_context.h"
@@ -164,6 +164,7 @@ void ED_operatortypes_curve(void)
void ED_keymap_curve(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
+// wmKeyMapItem *kmi;
keymap= WM_keymap_find(keyconf, "Font", 0, 0);
keymap->poll= ED_operator_editfont;
@@ -219,7 +220,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf)
keymap->poll= ED_operator_editsurfcurve;
WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
WM_keymap_add_item(keymap, "CURVE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0);
@@ -249,6 +250,9 @@ void ED_keymap_curve(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "CURVE_OT_specials_menu", WKEY, KM_PRESS, 0, 0);
+ /* menus */
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0);
+
ED_object_generic_keymap(keyconf, keymap, TRUE);
}
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index a58439051e9..e53b419c6ea 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "BLI_rand.h"
@@ -525,7 +525,7 @@ static void rotateflagNurb(ListBase *editnurb, short flag, float *cent, float ro
bp->vec[0]-=cent[0];
bp->vec[1]-=cent[1];
bp->vec[2]-=cent[2];
- Mat3MulVecfl(rotmat, bp->vec);
+ mul_m3_v3(rotmat, bp->vec);
bp->vec[0]+=cent[0];
bp->vec[1]+=cent[1];
bp->vec[2]+=cent[2];
@@ -549,9 +549,9 @@ static void translateflagNurb(ListBase *editnurb, short flag, float *vec)
a= nu->pntsu;
bezt= nu->bezt;
while(a--) {
- if(bezt->f1 & flag) VecAddf(bezt->vec[0], bezt->vec[0], vec);
- if(bezt->f2 & flag) VecAddf(bezt->vec[1], bezt->vec[1], vec);
- if(bezt->f3 & flag) VecAddf(bezt->vec[2], bezt->vec[2], vec);
+ if(bezt->f1 & flag) add_v3_v3v3(bezt->vec[0], bezt->vec[0], vec);
+ if(bezt->f2 & flag) add_v3_v3v3(bezt->vec[1], bezt->vec[1], vec);
+ if(bezt->f3 & flag) add_v3_v3v3(bezt->vec[2], bezt->vec[2], vec);
bezt++;
}
}
@@ -559,7 +559,7 @@ static void translateflagNurb(ListBase *editnurb, short flag, float *vec)
a= nu->pntsu*nu->pntsv;
bp= nu->bp;
while(a--) {
- if(bp->f1 & flag) VecAddf(bp->vec, bp->vec, vec);
+ if(bp->f1 & flag) add_v3_v3v3(bp->vec, bp->vec, vec);
bp++;
}
}
@@ -1868,18 +1868,18 @@ static int subdivide_exec(bContext *C, wmOperator *op)
memcpy(beztn, bezt, sizeof(BezTriple));
/* midpoint subdividing */
- VecMidf(vec, prevbezt->vec[1], prevbezt->vec[2]);
- VecMidf(vec+3, prevbezt->vec[2], bezt->vec[0]);
- VecMidf(vec+6, bezt->vec[0], bezt->vec[1]);
+ mid_v3_v3v3(vec, prevbezt->vec[1], prevbezt->vec[2]);
+ mid_v3_v3v3(vec+3, prevbezt->vec[2], bezt->vec[0]);
+ mid_v3_v3v3(vec+6, bezt->vec[0], bezt->vec[1]);
- VecMidf(vec+9, vec, vec+3);
- VecMidf(vec+12, vec+3, vec+6);
+ mid_v3_v3v3(vec+9, vec, vec+3);
+ mid_v3_v3v3(vec+12, vec+3, vec+6);
/* change handle of prev beztn */
VECCOPY((beztn-1)->vec[2], vec);
/* new point */
VECCOPY(beztn->vec[0], vec+9);
- VecMidf(beztn->vec[1], vec+9, vec+12);
+ mid_v3_v3v3(beztn->vec[1], vec+9, vec+12);
VECCOPY(beztn->vec[2], vec+12);
/* handle of next bezt */
if(a==0 && (nu->flagu & CU_CYCLIC)) {VECCOPY(beztnew->vec[0], vec+6);}
@@ -2662,10 +2662,10 @@ static void make_selection_list_nurb(ListBase *editnurb)
bp= nu->bp;
a= nu->pntsu;
while(a--) {
- VecAddf(nus->vec, nus->vec, bp->vec);
+ add_v3_v3v3(nus->vec, nus->vec, bp->vec);
bp++;
}
- VecMulf(nus->vec, 1.0/(float)nu->pntsu);
+ mul_v3_fl(nus->vec, 1.0/(float)nu->pntsu);
}
@@ -2684,13 +2684,13 @@ static void make_selection_list_nurb(ListBase *editnurb)
nustest= nbase.first;
while(nustest) {
- dist= VecLenf(nustest->vec, ((NurbSort *)nsortbase.first)->vec);
+ dist= len_v3v3(nustest->vec, ((NurbSort *)nsortbase.first)->vec);
if(dist<headdist) {
headdist= dist;
headdo= nustest;
}
- dist= VecLenf(nustest->vec, ((NurbSort *)nsortbase.last)->vec);
+ dist= len_v3v3(nustest->vec, ((NurbSort *)nsortbase.last)->vec);
if(dist<taildist) {
taildist= dist;
@@ -2774,7 +2774,7 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu
len1= 0.0;
for(v=0; v<nu1->pntsv; v++, bp1+=nu1->pntsu, bp2+=nu2->pntsu) {
- len1+= VecLenf(bp1->vec, bp2->vec);
+ len1+= len_v3v3(bp1->vec, bp2->vec);
}
bp1= nu1->bp + nu1->pntsu-1;
@@ -2782,7 +2782,7 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu
len2= 0.0;
for(v=0; v<nu1->pntsv; v++, bp1+=nu1->pntsu, bp2-=nu2->pntsu) {
- len2+= VecLenf(bp1->vec, bp2->vec);
+ len2+= len_v3v3(bp1->vec, bp2->vec);
}
/* merge */
@@ -3055,7 +3055,7 @@ void CURVE_OT_make_segment(wmOperatorType *ot)
/***************** pick select from 3d view **********************/
-void mouse_nurb(bContext *C, short mval[2], int extend)
+int mouse_nurb(bContext *C, short mval[2], int extend)
{
Object *obedit= CTX_data_edit_object(C);
Curve *cu= obedit->data;
@@ -3111,12 +3111,15 @@ void mouse_nurb(bContext *C, short mval[2], int extend)
}
- }
+ if(nu!=get_actNurb(obedit))
+ set_actNurb(obedit, nu);
- WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
+ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
+
+ return 1;
+ }
- if(nu!=get_actNurb(obedit))
- set_actNurb(obedit, nu);
+ return 0;
}
/******************** spin operator ***********************/
@@ -3136,13 +3139,13 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, sho
float persmat[3][3], persinv[3][3];
short a,ok, changed= 0;
- if(mode != 2 && rv3d) Mat3CpyMat4(persmat, rv3d->viewmat);
- else Mat3One(persmat);
- Mat3Inv(persinv, persmat);
+ if(mode != 2 && rv3d) copy_m3_m4(persmat, rv3d->viewmat);
+ else unit_m3(persmat);
+ invert_m3_m3(persinv, persmat);
/* imat and center and size */
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(imat, bmat);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(imat, bmat);
if(v3d) {
curs= give_cursor(scene, v3d);
@@ -3151,8 +3154,8 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, sho
else
cent[0]= cent[1]= cent[2]= 0.0f;
- VecSubf(cent, cent, obedit->obmat[3]);
- Mat3MulVecfl(imat,cent);
+ sub_v3_v3v3(cent, cent, obedit->obmat[3]);
+ mul_m3_v3(imat,cent);
if(dvec || mode==2 || !rv3d) {
n[0]=n[1]= 0.0;
@@ -3161,7 +3164,7 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, sho
n[0]= rv3d->viewinv[2][0];
n[1]= rv3d->viewinv[2][1];
n[2]= rv3d->viewinv[2][2];
- Normalize(n);
+ normalize_v3(n);
}
phi= M_PI/8.0;
@@ -3170,27 +3173,27 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, sho
q[1]= n[0]*si;
q[2]= n[1]*si;
q[3]= n[2]*si;
- QuatToMat3(q, cmat);
- Mat3MulMat3(tmat, cmat, bmat);
- Mat3MulMat3(rotmat, imat, tmat);
+ quat_to_mat3( cmat,q);
+ mul_m3_m3m3(tmat, cmat, bmat);
+ mul_m3_m3m3(rotmat, imat, tmat);
- Mat3One(scalemat1);
+ unit_m3(scalemat1);
scalemat1[0][0]= sqrt(2.0);
scalemat1[1][1]= sqrt(2.0);
- Mat3MulMat3(tmat,persmat,bmat);
- Mat3MulMat3(cmat,scalemat1,tmat);
- Mat3MulMat3(tmat,persinv,cmat);
- Mat3MulMat3(scalemat1,imat,tmat);
+ mul_m3_m3m3(tmat,persmat,bmat);
+ mul_m3_m3m3(cmat,scalemat1,tmat);
+ mul_m3_m3m3(tmat,persinv,cmat);
+ mul_m3_m3m3(scalemat1,imat,tmat);
- Mat3One(scalemat2);
+ unit_m3(scalemat2);
scalemat2[0][0]/= sqrt(2.0);
scalemat2[1][1]/= sqrt(2.0);
- Mat3MulMat3(tmat,persmat,bmat);
- Mat3MulMat3(cmat,scalemat2,tmat);
- Mat3MulMat3(tmat,persinv,cmat);
- Mat3MulMat3(scalemat2,imat,tmat);
+ mul_m3_m3m3(tmat,persmat,bmat);
+ mul_m3_m3m3(cmat,scalemat2,tmat);
+ mul_m3_m3m3(tmat,persinv,cmat);
+ mul_m3_m3m3(scalemat2,imat,tmat);
ok= 1;
@@ -3216,7 +3219,7 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, sho
}
}
if(dvec) {
- Mat3MulVecfl(bmat,dvec);
+ mul_m3_v3(bmat,dvec);
translateflagNurb(editnurb, 1,dvec);
}
}
@@ -3275,8 +3278,8 @@ static int addvert_Nurb(bContext *C, short mode, float location[3])
BPoint *bp, *newbp = NULL;
float mat[3][3],imat[3][3], temp[3];
- Mat3CpyMat4(mat, obedit->obmat);
- Mat3Inv(imat,mat);
+ copy_m3_m4(mat, obedit->obmat);
+ invert_m3_m3(imat,mat);
findselectedNurbvert(editnurb, &nu, &bezt, &bp);
if(bezt==0 && bp==0) return OPERATOR_CANCELLED;
@@ -3322,11 +3325,11 @@ static int addvert_Nurb(bContext *C, short mode, float location[3])
}
else {
VECCOPY(newbezt->vec[1], location);
- VecSubf(newbezt->vec[1],newbezt->vec[1], obedit->obmat[3]);
- Mat3MulVecfl(imat,newbezt->vec[1]);
- VecSubf(temp, newbezt->vec[1],temp);
- VecAddf(newbezt->vec[0], bezt->vec[0],temp);
- VecAddf(newbezt->vec[2], bezt->vec[2],temp);
+ sub_v3_v3v3(newbezt->vec[1],newbezt->vec[1], obedit->obmat[3]);
+ mul_m3_v3(imat,newbezt->vec[1]);
+ sub_v3_v3v3(temp, newbezt->vec[1],temp);
+ add_v3_v3v3(newbezt->vec[0], bezt->vec[0],temp);
+ add_v3_v3v3(newbezt->vec[2], bezt->vec[2],temp);
calchandlesNurb(nu);
}
}
@@ -3368,8 +3371,8 @@ static int addvert_Nurb(bContext *C, short mode, float location[3])
}
else {
VECCOPY(newbp->vec, location);
- VecSubf(newbp->vec, newbp->vec, obedit->obmat[3]);
- Mat3MulVecfl(imat,newbp->vec);
+ sub_v3_v3v3(newbp->vec, newbp->vec, obedit->obmat[3]);
+ mul_m3_v3(imat,newbp->vec);
newbp->vec[3]= 1.0;
}
}
@@ -4633,7 +4636,7 @@ int join_curve_exec(bContext *C, wmOperator *op)
tempbase.first= tempbase.last= 0;
/* trasnform all selected curves inverse in obact */
- Mat4Invert(imat, ob->obmat);
+ invert_m4_m4(imat, ob->obmat);
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
if(base->object->type==ob->type) {
@@ -4643,7 +4646,7 @@ int join_curve_exec(bContext *C, wmOperator *op)
if(cu->nurb.first) {
/* watch it: switch order here really goes wrong */
- Mat4MulMat4(cmat, base->object->obmat, imat);
+ mul_m4_m4m4(cmat, base->object->obmat, imat);
nu= cu->nurb.first;
while(nu) {
@@ -4653,16 +4656,16 @@ int join_curve_exec(bContext *C, wmOperator *op)
if( (bezt= newnu->bezt) ) {
a= newnu->pntsu;
while(a--) {
- Mat4MulVecfl(cmat, bezt->vec[0]);
- Mat4MulVecfl(cmat, bezt->vec[1]);
- Mat4MulVecfl(cmat, bezt->vec[2]);
+ mul_m4_v3(cmat, bezt->vec[0]);
+ mul_m4_v3(cmat, bezt->vec[1]);
+ mul_m4_v3(cmat, bezt->vec[2]);
bezt++;
}
}
if( (bp= newnu->bp) ) {
a= newnu->pntsu*nu->pntsv;
while(a--) {
- Mat4MulVecfl(cmat, bp->vec);
+ mul_m4_v3(cmat, bp->vec);
bp++;
}
}
@@ -4716,7 +4719,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
/* imat and center and size */
if(obedit) {
- Mat3CpyMat4(mat, obedit->obmat);
+ copy_m3_m4(mat, obedit->obmat);
if(v3d) {
curs= give_cursor(scene, v3d);
VECCOPY(cent, curs);
@@ -4730,16 +4733,16 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
if(rv3d) {
if (!newname && (U.flag & USER_ADD_VIEWALIGNED))
- Mat3CpyMat4(imat, rv3d->viewmat);
+ copy_m3_m4(imat, rv3d->viewmat);
else
- Mat3One(imat);
+ unit_m3(imat);
- Mat3MulVecfl(imat, cent);
- Mat3MulMat3(cmat, imat, mat);
- Mat3Inv(imat, cmat);
+ mul_m3_v3(imat, cent);
+ mul_m3_m3m3(cmat, imat, mat);
+ invert_m3_m3(imat, cmat);
}
else
- Mat3One(imat);
+ unit_m3(imat);
setflagsNurb(editnurb, 0);
}
@@ -4779,7 +4782,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bezt->vec[0][1]+= -0.5*grid;
bezt->vec[2][0]+= -0.5*grid;
bezt->vec[2][1]+= 0.5*grid;
- for(a=0;a<3;a++) Mat3MulVecfl(imat, bezt->vec[a]);
+ for(a=0;a<3;a++) mul_m3_v3(imat, bezt->vec[a]);
bezt++;
bezt->h1= bezt->h2= HD_ALIGN;
@@ -4790,7 +4793,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
VECCOPY(bezt->vec[a], cent);
}
bezt->vec[1][0]+= grid;
- for(a=0;a<3;a++) Mat3MulVecfl(imat, bezt->vec[a]);
+ for(a=0;a<3;a++) mul_m3_v3(imat, bezt->vec[a]);
calchandlesNurb(nu);
}
@@ -4821,7 +4824,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bp->vec[0]+= 1.5*grid;
bp= nu->bp;
- for(a=0;a<4;a++, bp++) Mat3MulVecfl(imat,bp->vec);
+ for(a=0;a<4;a++, bp++) mul_m3_v3(imat,bp->vec);
if(cutype==CU_NURBS) {
nu->knotsu= 0; /* makeknots allocates */
@@ -4856,7 +4859,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bp->vec[0]+= 2.0*grid;
bp= nu->bp;
- for(a=0;a<5;a++, bp++) Mat3MulVecfl(imat,bp->vec);
+ for(a=0;a<5;a++, bp++) mul_m3_v3(imat,bp->vec);
if(cutype==CU_NURBS) {
nu->knotsu= 0; /* makeknots allocates */
@@ -4883,7 +4886,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bezt->h1= bezt->h2= HD_AUTO;
bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][0]+= -grid;
- for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
+ for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
bezt++;
@@ -4893,7 +4896,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bezt->h1= bezt->h2= HD_AUTO;
bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][1]+= grid;
- for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
+ for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
bezt++;
@@ -4903,7 +4906,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bezt->h1= bezt->h2= HD_AUTO;
bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][0]+= grid;
- for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
+ for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
bezt++;
@@ -4913,7 +4916,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bezt->h1= bezt->h2= HD_AUTO;
bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][1]+= -grid;
- for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
+ for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
calchandlesNurb(nu);
@@ -4940,7 +4943,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
}
if(a & 1) bp->vec[3]= 0.25*sqrt(2.0);
else bp->vec[3]= 1.0;
- Mat3MulVecfl(imat,bp->vec);
+ mul_m3_v3(imat,bp->vec);
bp->radius = bp->weight = 1.0;
bp++;
@@ -4977,7 +4980,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
if(a==1 || a==2) if(b==1 || b==2) {
bp->vec[2]+= grid;
}
- Mat3MulVecfl(imat,bp->vec);
+ mul_m3_v3(imat,bp->vec);
bp->vec[3]= 1.0;
bp++;
}
@@ -5000,7 +5003,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
BLI_addtail(editnurb, nu); /* temporal for extrude and translate */
vec[0]=vec[1]= 0.0;
vec[2]= -grid;
- Mat3MulVecfl(imat, vec);
+ mul_m3_v3(imat, vec);
translateflagNurb(editnurb, 1, vec);
extrudeflagNurb(editnurb, 1);
vec[0]= -2*vec[0];
@@ -5042,7 +5045,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bp->vec[2]+= nurbcircle[a][1]*grid;
if(a & 1) bp->vec[3]= 0.5*sqrt(2.0);
else bp->vec[3]= 1.0;
- Mat3MulVecfl(imat,bp->vec);
+ mul_m3_v3(imat,bp->vec);
bp++;
}
nu->flagu= 4;
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index 6ebc9c8a1c9..b6b0289e871 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_curve_types.h"
#include "DNA_object_types.h"
@@ -541,7 +541,7 @@ void ED_text_to_object(bContext *C, Text *text, int split_lines)
offset[2] = 0;
if(rv3d)
- Mat4Mul3Vecfl(rv3d->viewinv, offset);
+ mul_mat3_m4_v3(rv3d->viewinv, offset);
txt_add_object(C, line, 1, offset);
diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c
index e6b06d4e2ae..d6cdfa31539 100644
--- a/source/blender/editors/datafiles/B.blend.c
+++ b/source/blender/editors/datafiles/B.blend.c
@@ -1,8584 +1,7437 @@
/* DataToC output of file <B_blend> */
-int datatoc_B_blend_size= 353324;
+int datatoc_B_blend_size= 316960;
char datatoc_B_blend[]= {
- 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48,
- 82, 69, 78, 68, 32, 0, 0, 0,176,166, 6,240,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0,
- 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0,
-208,167, 6,240,255,127, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 55, 7, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,
- 64, 46,187, 2, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50,
- 62, 0,255,255, 0, 0, 0, 0, 89,122,128,253,230,127, 0, 0,232, 10,194, 2, 0, 0, 0, 0, 32,170,156, 0,231,127, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1,129,128,253,230,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
-144, 58,130, 2, 0, 0, 0, 0,144,171, 6,240,255,127, 0, 0, 96,169, 6,240,255,127, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
-192,192,102, 0,231,127, 0, 0,136, 9,170, 1,231,127, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0,190,102, 7, 0, 0, 0, 0, 0,
-144,168, 6,240,255,127, 0, 0, 64,201, 60, 1, 0, 0, 0, 0,144,171, 6,240,255,127, 0, 0, 96,169, 6,240,255,127, 0, 0,
- 0, 16, 0, 0, 0, 0, 0, 0,128,153,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 71,139, 1,231,127, 0, 0,
- 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192,192,102, 0,231,127, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0,160,156,185, 2, 0, 0, 0, 0, 97, 1, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240,157,185, 2, 0, 0, 0, 0,240,157,185, 2, 0, 0, 0, 0,240,157,185, 2, 0, 0, 0, 0,
-240,157,185, 2, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,176,192, 2, 0, 0, 0, 0,112,176,192, 2, 0, 0, 0, 0,
-112,176,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,177,192, 2, 0, 0, 0, 0, 96,177,192, 2, 0, 0, 0, 0,
- 96,177,192, 2, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,240,157,185, 2, 0, 0, 0, 0, 98, 1, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,177,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 64, 46,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 30, 0,118, 7, 97, 4, 0, 0, 0, 0, 1, 0,238, 3,
- 0, 0, 1, 0, 0, 0, 0, 0, 0, 45,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160,163,229, 2, 0, 0, 0, 0,224,142,131, 3, 0, 0, 0, 0,224,142,131, 3, 0, 0, 0, 0,
- 80, 46,200, 2, 0, 0, 0, 0,208, 47,200, 2, 0, 0, 0, 0, 80, 49,200, 2, 0, 0, 0, 0, 80, 49,200, 2, 0, 0, 0, 0,
-240, 50,200, 2, 0, 0, 0, 0,128,117,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 83, 78, 0, 0,208, 0, 0, 0, 16,159,185, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,208,121,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,
-105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32,160,185, 2, 0, 0, 0, 0,128,166,185, 2, 0, 0, 0, 0,224,166,185, 2, 0, 0, 0, 0, 32,179,185, 2, 0, 0, 0, 0,
-144,179,185, 2, 0, 0, 0, 0, 16,103,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,160,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-128,160,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,128,160,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,160,185, 2, 0, 0, 0, 0,
- 32,160,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-224,160,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,161,185, 2, 0, 0, 0, 0,128,160,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,161,185, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,160,161,185, 2, 0, 0, 0, 0,224,160,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,161,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 0,162,185, 2, 0, 0, 0, 0, 64,161,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 0,162,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96,162,185, 2, 0, 0, 0, 0,
-160,161,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 96,162,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192,162,185, 2, 0, 0, 0, 0, 0,162,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,162,185, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 32,163,185, 2, 0, 0, 0, 0, 96,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,163,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-128,163,185, 2, 0, 0, 0, 0,192,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,192, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,128,163,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,163,185, 2, 0, 0, 0, 0,
- 32,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-224,163,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0,128,163,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,160,164,185, 2, 0, 0, 0, 0,224,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 6,116, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,164,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 0,165,185, 2, 0, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,116, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 0,165,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96,165,185, 2, 0, 0, 0, 0,
-160,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 96,165,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0, 0,165,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 32,166,185, 2, 0, 0, 0, 0, 96,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-156, 2, 52, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,166,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-128,166,185, 2, 0, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 52, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,128,166,185, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 52, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-224,166,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,167,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,160,185, 2, 0, 0, 0, 0,224,160,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 80,167,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,167,185, 2, 0, 0, 0, 0,224,166,185, 2, 0, 0, 0, 0,
-128,160,185, 2, 0, 0, 0, 0,160,161,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-192,167,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,168,185, 2, 0, 0, 0, 0, 80,167,185, 2, 0, 0, 0, 0,
-224,160,185, 2, 0, 0, 0, 0, 0,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 48,168,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,168,185, 2, 0, 0, 0, 0,192,167,185, 2, 0, 0, 0, 0,
-160,161,185, 2, 0, 0, 0, 0, 0,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-160,168,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,169,185, 2, 0, 0, 0, 0, 48,168,185, 2, 0, 0, 0, 0,
- 32,160,185, 2, 0, 0, 0, 0, 96,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 16,169,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,169,185, 2, 0, 0, 0, 0,160,168,185, 2, 0, 0, 0, 0,
- 64,161,185, 2, 0, 0, 0, 0, 96,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-128,169,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,169,185, 2, 0, 0, 0, 0, 16,169,185, 2, 0, 0, 0, 0,
- 0,162,185, 2, 0, 0, 0, 0,192,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-240,169,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,170,185, 2, 0, 0, 0, 0,128,169,185, 2, 0, 0, 0, 0,
- 96,162,185, 2, 0, 0, 0, 0, 32,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 96,170,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,170,185, 2, 0, 0, 0, 0,240,169,185, 2, 0, 0, 0, 0,
- 64,161,185, 2, 0, 0, 0, 0,128,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-208,170,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,171,185, 2, 0, 0, 0, 0, 96,170,185, 2, 0, 0, 0, 0,
- 32,163,185, 2, 0, 0, 0, 0,128,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,171,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,171,185, 2, 0, 0, 0, 0,208,170,185, 2, 0, 0, 0, 0,
- 32,160,185, 2, 0, 0, 0, 0,224,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,171,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,172,185, 2, 0, 0, 0, 0, 64,171,185, 2, 0, 0, 0, 0,
-192,162,185, 2, 0, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 32,172,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,172,185, 2, 0, 0, 0, 0,176,171,185, 2, 0, 0, 0, 0,
- 96,162,185, 2, 0, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-144,172,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,173,185, 2, 0, 0, 0, 0, 32,172,185, 2, 0, 0, 0, 0,
-224,163,185, 2, 0, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 0,173,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,173,185, 2, 0, 0, 0, 0,144,172,185, 2, 0, 0, 0, 0,
-224,163,185, 2, 0, 0, 0, 0,160,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-112,173,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,173,185, 2, 0, 0, 0, 0, 0,173,185, 2, 0, 0, 0, 0,
- 64,164,185, 2, 0, 0, 0, 0,160,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-224,173,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,174,185, 2, 0, 0, 0, 0,112,173,185, 2, 0, 0, 0, 0,
-160,161,185, 2, 0, 0, 0, 0, 0,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 80,174,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,174,185, 2, 0, 0, 0, 0,224,173,185, 2, 0, 0, 0, 0,
-192,162,185, 2, 0, 0, 0, 0, 0,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-192,174,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,175,185, 2, 0, 0, 0, 0, 80,174,185, 2, 0, 0, 0, 0,
-160,164,185, 2, 0, 0, 0, 0, 0,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 48,175,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,175,185, 2, 0, 0, 0, 0,192,174,185, 2, 0, 0, 0, 0,
-224,163,185, 2, 0, 0, 0, 0, 96,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-160,175,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,176,185, 2, 0, 0, 0, 0, 48,175,185, 2, 0, 0, 0, 0,
-160,164,185, 2, 0, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 16,176,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,176,185, 2, 0, 0, 0, 0,160,175,185, 2, 0, 0, 0, 0,
- 96,165,185, 2, 0, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-128,176,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,176,185, 2, 0, 0, 0, 0, 16,176,185, 2, 0, 0, 0, 0,
- 32,163,185, 2, 0, 0, 0, 0, 32,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-240,176,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,177,185, 2, 0, 0, 0, 0,128,176,185, 2, 0, 0, 0, 0,
-192,162,185, 2, 0, 0, 0, 0, 32,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 96,177,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,177,185, 2, 0, 0, 0, 0,240,176,185, 2, 0, 0, 0, 0,
- 0,162,185, 2, 0, 0, 0, 0,128,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-208,177,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,178,185, 2, 0, 0, 0, 0, 96,177,185, 2, 0, 0, 0, 0,
-128,163,185, 2, 0, 0, 0, 0,128,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,178,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,178,185, 2, 0, 0, 0, 0,208,177,185, 2, 0, 0, 0, 0,
- 32,166,185, 2, 0, 0, 0, 0,128,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,178,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,179,185, 2, 0, 0, 0, 0, 64,178,185, 2, 0, 0, 0, 0,
-160,161,185, 2, 0, 0, 0, 0, 96,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 32,179,185, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,178,185, 2, 0, 0, 0, 0,
- 0,165,185, 2, 0, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-144,179,185, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,183,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160,161,185, 2, 0, 0, 0, 0,128,160,185, 2, 0, 0, 0, 0,224,160,185, 2, 0, 0, 0, 0, 0,162,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0,
- 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,121,186, 2, 0, 0, 0, 0, 64,121,186, 2, 0, 0, 0, 0,
-112,180,185, 2, 0, 0, 0, 0,224,181,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,180,185, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224,181,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,181,185, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,180,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69,
- 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0,
- 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0,
- 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 49, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80,183,185, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 48,233,185, 2, 0, 0, 0, 0,144,179,185, 2, 0, 0, 0, 0, 96,162,185, 2, 0, 0, 0, 0,
- 32,163,185, 2, 0, 0, 0, 0,128,163,185, 2, 0, 0, 0, 0, 64,161,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 4, 4, 80, 1,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,112,224,185, 2, 0, 0, 0, 0,208,231,185, 2, 0, 0, 0, 0, 48,184,185, 2, 0, 0, 0, 0,
-160,185,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,184,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160,185,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 80, 1, 31, 0, 80, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,161, 1, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,185,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48,184,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0,128,199,195, 0, 0, 0, 0,
- 0, 0, 0, 0, 1,128,159, 67, 1,128,199,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,160, 1, 0, 0,
- 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,160, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0, 80, 1,161, 1, 63, 1,143, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,161, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,112,224,185, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
-208,231,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,176,225,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,227,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1,
- 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32,227,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-176,225,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,228,185, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0,144,228,185, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,208,231,185, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,224,185, 2, 0, 0, 0, 0,176,225,185, 2, 0, 0, 0, 0,
- 32,227,185, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,233,185, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-128,245,185, 2, 0, 0, 0, 0, 80,183,185, 2, 0, 0, 0, 0, 32,160,185, 2, 0, 0, 0, 0,224,163,185, 2, 0, 0, 0, 0,
- 64,164,185, 2, 0, 0, 0, 0, 96,162,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,
- 0, 0, 0, 0,115, 0, 0, 0, 15, 15, 48, 6,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240,236,185, 2, 0, 0, 0, 0, 32,244,185, 2, 0, 0, 0, 0, 16,234,185, 2, 0, 0, 0, 0,128,235,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16,234,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,235,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6,
- 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,128,235,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16,234,185, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0, 89, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6,
- 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 6, 0, 0, 26, 0, 0, 0,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 6, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0,240,236,185, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 32,244,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0,238,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,239,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6,
- 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112,239,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,238,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,240,185, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0,224,240,185, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 32,244,185, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,236,185, 2, 0, 0, 0, 0, 0,238,185, 2, 0, 0, 0, 0,
-112,239,185, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,245,185, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-176, 7,186, 2, 0, 0, 0, 0, 48,233,185, 2, 0, 0, 0, 0, 32,163,185, 2, 0, 0, 0, 0, 32,166,185, 2, 0, 0, 0, 0,
-128,166,185, 2, 0, 0, 0, 0,128,163,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,
-193, 1, 0, 0, 51, 3, 0, 0, 3, 3, 80, 1,115, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64,249,185, 2, 0, 0, 0, 0, 80, 6,186, 2, 0, 0, 0, 0, 96,246,185, 2, 0, 0, 0, 0,208,247,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96,246,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,247,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,168, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65,
- 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 1,
- 26, 0, 80, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 6, 0, 0,128, 7, 0, 0, 26, 3, 0, 0, 51, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,208,247,185, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,246,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67,
- 0,128,163,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0, 88, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0, 88, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 80, 1,
- 89, 1, 63, 1, 71, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 6, 0, 0,128, 7, 0, 0,193, 1, 0, 0, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1, 89, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 64,249,185, 2, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,240,254,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,250,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 68, 65, 84, 65, 16, 0, 0, 0,176,250,185, 2, 0, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
- 0,251,185, 2, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 0,251,185, 2, 0, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 20, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,113,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,123,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16,119,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 48, 95,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,252,185, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,128,253,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,253,185, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,252,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67,
- 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0,
- 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,240,254,185, 2, 0, 0, 0, 0,
-162, 0, 0, 0, 1, 0, 0, 0, 80, 6,186, 2, 0, 0, 0, 0, 64,249,185, 2, 0, 0, 0, 0, 16,252,185, 2, 0, 0, 0, 0,
-128,253,185, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0,224,236,191, 95,255,127, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 55,
+ 7, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, 96, 4,155, 26, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 16, 0, 0,
+128, 32, 4, 0, 60,109,101,109,111,114,121, 50, 62, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,224,237,191, 95,
+255,127, 0, 0, 84,192, 21, 4, 1, 0, 0, 0,112,237,191, 95,255,127, 0, 0,178,153,120, 0, 1, 0, 0, 0, 80,237,191, 95,
+255,127, 0, 0,208, 70, 23, 4, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0,144,213,158, 26, 1, 0, 0, 0,144,237,191, 95,
+255,127, 0, 0, 48,192, 21, 4, 1, 0, 0, 0,192,237,191, 95,255,127, 0, 0, 41,156,120, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68,144,213,158, 26, 1, 0, 0, 0, 82, 69, 78, 68,
+ 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,232,237,191, 95,255,127, 0, 0, 16,238,191, 95,
+255,127, 0, 0, 38,163,120, 0, 1, 0, 0, 0, 16,173,153, 26, 1, 0, 0, 0,144,213,158, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0, 48,176,153, 26,
+ 1, 0, 0, 0, 97, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0,128,177,153, 26,
+ 1, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 94, 3,
+ 1, 0, 0, 0, 0,230, 94, 3, 1, 0, 0, 0, 0,230, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 23,158, 26,
+ 1, 0, 0, 0, 32, 23,158, 26, 1, 0, 0, 0, 32, 23,158, 26, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,128,177,153, 26,
+ 1, 0, 0, 0, 98, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,110, 86, 23,
+ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,
+101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 66, 4, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,240,100, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,161,150, 26, 1, 0, 0, 0,176,213,149, 26,
+ 1, 0, 0, 0,176,213,149, 26, 1, 0, 0, 0,192, 23,158, 26, 1, 0, 0, 0,128, 24,158, 26, 1, 0, 0, 0, 64, 25,158, 26,
+ 1, 0, 0, 0, 64, 25,158, 26, 1, 0, 0, 0,192,218, 93, 3, 1, 0, 0, 0, 32, 25,159, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,160,178,153, 26, 1, 0, 0, 0,190, 0, 0, 0,
+ 1, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,240, 70, 95, 3,
+ 1, 0, 0, 0,112,189,153, 26, 1, 0, 0, 0,208,189,153, 26, 1, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 60, 48, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,174,150, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 12, 94, 3,
+ 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,144,170,150, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 35, 95, 3,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 73,224, 25,
+ 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 64,225,149, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 28,224, 25,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 6,200, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,200, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,192,149, 26,
+ 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0,176,181,150, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,112, 90, 3,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,156, 2,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 39, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 46, 95, 3,
+ 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 1, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0,176,166,224, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,124, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,202,224, 25,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 6, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 70, 95, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,216,224, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,216,224, 25, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,179,153, 26,
+ 1, 0, 0, 0,240, 70, 95, 3, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,179,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,180,153, 26,
+ 1, 0, 0, 0,192,216,224, 25, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,180,153, 26,
+ 1, 0, 0, 0,176,179,153, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,180,153, 26,
+ 1, 0, 0, 0, 16,180,153, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,181,153, 26,
+ 1, 0, 0, 0,112,180,153, 26, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,181,153, 26,
+ 1, 0, 0, 0,208,180,153, 26, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,181,153, 26,
+ 1, 0, 0, 0, 48,181,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,182,153, 26,
+ 1, 0, 0, 0,144,181,153, 26, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,182,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,182,153, 26,
+ 1, 0, 0, 0,240,181,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,182,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,183,153, 26,
+ 1, 0, 0, 0, 80,182,153, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,183,153, 26,
+ 1, 0, 0, 0,176,182,153, 26, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,183,153, 26,
+ 1, 0, 0, 0, 16,183,153, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,184,153, 26,
+ 1, 0, 0, 0,112,183,153, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,184,153, 26,
+ 1, 0, 0, 0,208,183,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,184,153, 26,
+ 1, 0, 0, 0, 48,184,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,185,153, 26,
+ 1, 0, 0, 0,144,184,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,185,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,185,153, 26,
+ 1, 0, 0, 0,240,184,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,185,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,186,153, 26,
+ 1, 0, 0, 0, 80,185,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,186,153, 26,
+ 1, 0, 0, 0,176,185,153, 26, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,186,153, 26,
+ 1, 0, 0, 0, 16,186,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,187,153, 26,
+ 1, 0, 0, 0,112,186,153, 26, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,187,153, 26,
+ 1, 0, 0, 0,208,186,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,187,153, 26,
+ 1, 0, 0, 0, 48,187,153, 26, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,188,153, 26,
+ 1, 0, 0, 0,144,187,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,188,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,188,153, 26,
+ 1, 0, 0, 0,240,187,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,188,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,189,153, 26,
+ 1, 0, 0, 0, 80,188,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,189,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,189,153, 26,
+ 1, 0, 0, 0,176,188,153, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,189,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,189,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,189,153, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,193,153, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,144,170,150, 26,
+ 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0,
+ 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, 1, 0, 0, 0, 64,105,154, 26,
+ 1, 0, 0, 0, 64,105,154, 26, 1, 0, 0, 0,176,190,153, 26, 1, 0, 0, 0, 16,192,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,125, 88, 23, 1, 0, 0, 0, 0, 98,159, 25, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,176,190,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,192,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 16,192,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,190,153, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192,
+ 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0,112,193,153, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,227,153, 26, 1, 0, 0, 0,208,189,153, 26,
+ 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 16, 12, 94, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,199, 1, 0, 0, 4, 4, 80, 1,
+200, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,240,218,153, 26, 1, 0, 0, 0, 32,226,153, 26,
+ 1, 0, 0, 0, 80,194,153, 26, 1, 0, 0, 0,176,195,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,157,193, 25, 1, 0, 0, 0,192,212,193, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,194,153, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,195,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 1, 31, 0, 80, 1, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,169, 1, 0, 0,
+199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,195,153, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,194,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,159, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 1,128,159, 67, 2,128,203,195, 0, 0, 0, 0, 63, 1, 0, 0,
+ 80, 1, 0, 0, 18, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 62, 1, 0, 0, 18, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 80, 1,169, 1, 63, 1,151, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 70, 94, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+168, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,169, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,197,153, 26, 1, 0, 0, 0, 96,217,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,197,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,198,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13, 82, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 63, 1, 36, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,198,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,200,153, 26,
+ 1, 0, 0, 0, 16,197,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
+ 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
+ 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,
+101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,
+ 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,200,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,201,153, 26, 1, 0, 0, 0,160,198,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,255, 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,201,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,203,153, 26,
+ 1, 0, 0, 0, 48,200,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
+ 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
+ 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,
+110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254,
+ 63, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 0,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160, 1,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 1,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 3,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16, 3,186, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
-237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 80, 6,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,254,185, 2, 0, 0, 0, 0,
- 48, 0,186, 2, 0, 0, 0, 0,160, 1,186, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 7,186, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,240, 38,186, 2, 0, 0, 0, 0,128,245,185, 2, 0, 0, 0, 0,160,164,185, 2, 0, 0, 0, 0,
- 0,165,185, 2, 0, 0, 0, 0,192,162,185, 2, 0, 0, 0, 0, 64,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-157, 2, 0, 0, 47, 6, 0, 0,117, 0, 0, 0, 21, 4, 0, 0, 1, 1,147, 3,161, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160, 33,186, 2, 0, 0, 0, 0,224, 37,186, 2, 0, 0, 0, 0,144, 8,186, 2, 0, 0, 0, 0,
-240, 28,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 8,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 10,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0,192,100, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,147, 3, 26, 0,147, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,117, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 10,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176, 14,186, 2, 0, 0, 0, 0,144, 8,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,143, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,135, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80,203,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,204,153, 26, 1, 0, 0, 0,192,201,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 14,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-192, 17,186, 2, 0, 0, 0, 0, 0, 10,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,143, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 17,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-240, 28,186, 2, 0, 0, 0, 0,176, 14,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 97,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 97,196, 0, 0,136,195,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,136, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,136, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,137, 2,163, 0,119, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,143, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 28,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,192, 17,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,254, 63, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,143, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,147, 3,135, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,204,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,206,153, 26,
+ 1, 0, 0, 0, 80,203,153, 26, 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
+101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,
+ 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 30,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 30,186, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,220,141, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-178,157,229, 62, 46,247,227,190,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 97,195, 91, 62, 9, 46,185, 62, 35, 44,185, 62,
-145,180,109,188,100,241,125, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,160, 32,182,197,149,185,190,137,232, 50, 62, 52,191, 78, 63, 0,128,213, 53,
-215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-178,157,229, 62, 46,247,227,190,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 97,195, 91, 62, 9, 46,185, 62, 35, 44,185, 62,
-145,180,109,188,100,241,125, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-190,200, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,200, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,190,200, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 60,248, 2, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,206,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,208,153, 26, 1, 0, 0, 0,224,204,153, 26, 1, 0, 0, 0,176,131,159, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
-160, 33,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224, 37,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 35,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,112, 36,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 36,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,186, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,224, 37,186, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 33,186, 2, 0, 0, 0, 0, 0, 35,186, 2, 0, 0, 0, 0,
-112, 36,186, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240, 38,186, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 48, 68,186, 2, 0, 0, 0, 0,176, 7,186, 2, 0, 0, 0, 0,224,163,185, 2, 0, 0, 0, 0,
- 96,165,185, 2, 0, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0,160,164,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,155, 2, 0, 0,117, 0, 0, 0, 51, 2, 0, 0, 2, 2,156, 2,191, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,144, 45,186, 2, 0, 0, 0, 0, 32, 67,186, 2, 0, 0, 0, 0,208, 39,186, 2, 0, 0, 0, 0,
- 32, 44,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 39,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64, 41,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,156, 2, 26, 0,156, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,117, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 41,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176, 42,186, 2, 0, 0, 0, 0,208, 39,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 72, 67, 0,128,201,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,164, 1, 0, 0,
- 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,164, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3,
- 0, 0, 0, 4, 6, 0,217, 0,165, 1,200, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,143, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,217, 0,165, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 42,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 32, 44,186, 2, 0, 0, 0, 0, 64, 41,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,155, 2, 0, 0,143, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 44,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 42,186, 2, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,164, 1, 0, 0,
- 18, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,164, 1, 0, 0,
-111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 0, 0,195, 1,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,155, 2, 0, 0,143, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,195, 1,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 45,186, 2, 0, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0,
-128, 51,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 46,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-208, 46,186, 2, 0, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 47,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,160, 48,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 48,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 16, 50,186, 2, 0, 0, 0, 0, 48, 47,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67,
- 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0,
- 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0,
- 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 50,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 48,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67,
- 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0,
- 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,128, 51,186, 2, 0, 0, 0, 0,
-167, 0, 0, 0, 1, 0, 0, 0,224, 62,186, 2, 0, 0, 0, 0,144, 45,186, 2, 0, 0, 0, 0, 48, 47,186, 2, 0, 0, 0, 0,
- 16, 50,186, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 52,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224, 53,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 53,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 80, 55,186, 2, 0, 0, 0, 0,112, 52,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 55,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192, 56,186, 2, 0, 0, 0, 0,224, 53,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 56,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48, 58,186, 2, 0, 0, 0, 0, 80, 55,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 58,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160, 59,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,160, 59,186, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,
-166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,
-248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62,
- 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62,
- 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,
-205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62,
- 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,224, 62,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 32, 67,186, 2, 0, 0, 0, 0,
-128, 51,186, 2, 0, 0, 0, 0,112, 52,186, 2, 0, 0, 0, 0, 48, 58,186, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 64, 64,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 65,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-176, 65,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,186, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
- 32, 67,186, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 62,186, 2, 0, 0, 0, 0,
- 64, 64,186, 2, 0, 0, 0, 0,176, 65,186, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
- 48, 68,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,103,186, 2, 0, 0, 0, 0,240, 38,186, 2, 0, 0, 0, 0,
- 96,165,185, 2, 0, 0, 0, 0,160,161,185, 2, 0, 0, 0, 0, 0,165,185, 2, 0, 0, 0, 0,192,165,185, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 53, 2, 0, 0, 21, 4, 0, 0, 12, 12,156, 2,225, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 73,186, 2, 0, 0, 0, 0, 0,102,186, 2, 0, 0, 0, 0,
- 16, 69,186, 2, 0, 0, 0, 0,240, 71,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 69,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,128, 70,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,156, 2, 26, 0,156, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 53, 2, 0, 0, 78, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,208,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,209,153, 26,
+ 1, 0, 0, 0,112,206,153, 26, 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,
+110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254,
+ 63, 1,178, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 70,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,240, 71,186, 2, 0, 0, 0, 0, 16, 69,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67,
- 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0,192,244,195, 0, 0, 82,194, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0,
- 18, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 8, 0, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,199, 1,200, 0,181, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 79, 2, 0, 0, 21, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,199, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,209,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,211,153, 26, 1, 0, 0, 0, 0,208,153, 26, 1, 0, 0, 0,112,138,159, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,
+110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,
+110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 71,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 70,186, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68,
- 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,192,244,195, 0, 0, 82,194,195, 1, 0, 0,212, 1, 0, 0,
- 18, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0,
- 18, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66,
- 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,212, 1,199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,155, 2, 0, 0, 79, 2, 0, 0, 21, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 96, 73,186, 2, 0, 0, 0, 0,
- 21, 1, 0, 0, 1, 0, 0, 0,112, 80,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 74,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32, 76,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 49, 2, 0, 0, 74, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 76,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,144, 77,186, 2, 0, 0, 0, 0,176, 74,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67,
- 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,219,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0,
- 18, 0, 0, 0,199, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0,
- 18, 0, 0, 0,199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,200, 1,200, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,200, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 77,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 79,186, 2, 0, 0, 0, 0, 32, 76,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 79,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 77,186, 2, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67,
- 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,199, 1, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,198, 2, 0, 0,
- 18, 0, 0, 0,199, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,
-105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 80,186, 2, 0, 0, 0, 0,
-161, 0, 0, 0, 1, 0, 0, 0, 96, 86,186, 2, 0, 0, 0, 0, 96, 73,186, 2, 0, 0, 0, 0,176, 74,186, 2, 0, 0, 0, 0,
- 0, 79,186, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 81,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,176, 81,186, 2, 0, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 16, 82,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 83,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,
- 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-128, 83,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 84,186, 2, 0, 0, 0, 0, 16, 82,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,
-172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 63, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240, 84,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,211,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,212,153, 26,
+ 1, 0, 0, 0,144,209,153, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,
+105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253,
+ 63, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,212,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,214,153, 26, 1, 0, 0, 0, 32,211,153, 26, 1, 0, 0, 0, 48,145,159, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,
- 96, 86,186, 2, 0, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,192, 97,186, 2, 0, 0, 0, 0,112, 80,186, 2, 0, 0, 0, 0,
- 16, 82,186, 2, 0, 0, 0, 0,240, 84,186, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 80, 87,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 88,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
- 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 63, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192, 88,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 90,186, 2, 0, 0, 0, 0, 80, 87,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,214,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,215,153, 26,
+ 1, 0, 0, 0,176,212,153, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,
+111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253,
+ 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48, 90,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 91,186, 2, 0, 0, 0, 0,192, 88,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
-111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160, 91,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 93,186, 2, 0, 0, 0, 0, 48, 90,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,215,153, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,217,153, 26, 1, 0, 0, 0, 64,214,153, 26, 1, 0, 0, 0,224,152,159, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
+115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
+115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 16, 93,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 91,186, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,217,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,215,153, 26, 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,
+112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,253,
+ 63, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,240,218,153, 26,
+ 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 32,226,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 94,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
-128, 94,186, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0,
- 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,
-164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,
-253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,
-195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194,
- 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,
-253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,112,190, 95, 3, 1, 0, 0, 0,255, 21, 0, 0,
+160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,220,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,144,221,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,221,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,220,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 97,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
- 0,102,186, 2, 0, 0, 0, 0, 96, 86,186, 2, 0, 0, 0, 0, 80, 87,186, 2, 0, 0, 0, 0, 16, 93,186, 2, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32, 99,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,100,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144,100,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 99,186, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,222,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,222,153, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,
+129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0, 0,102,186, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 97,186, 2, 0, 0, 0, 0, 32, 99,186, 2, 0, 0, 0, 0,144,100,186, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 16,103,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 68,186, 2, 0, 0, 0, 0, 32,166,185, 2, 0, 0, 0, 0,192,162,185, 2, 0, 0, 0, 0, 0,162,185, 2, 0, 0, 0, 0,
-128,166,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 53, 3, 0, 0, 21, 4, 0, 0,
- 1, 1, 80, 1,225, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,110,186, 2, 0, 0, 0, 0,
- 0,120,186, 2, 0, 0, 0, 0,240,103,186, 2, 0, 0, 0, 0, 96,105,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240,103,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,105,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 32,226,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,218,153, 26,
+ 1, 0, 0, 0, 48,220,153, 26, 1, 0, 0, 0,144,221,153, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,227,153, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,239,153, 26, 1, 0, 0, 0,112,193,153, 26, 1, 0, 0, 0,224,174,150, 26,
+ 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 15, 15, 48, 6,120, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,236, 81, 3, 1, 0, 0, 0, 32,231,153, 26, 1, 0, 0, 0, 16,238,153, 26, 1, 0, 0, 0, 96,228,153, 26,
+ 1, 0, 0, 0,192,229,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 38,231, 28,
+ 1, 0, 0, 0,240, 91, 87, 23, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,228,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192,229,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,229,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,228,153, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0,
+ 93, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 26, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 32,231,153, 26, 1, 0, 0, 0,172, 0, 0, 0,
+ 1, 0, 0, 0, 16,238,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,232,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,128,233,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,233,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,232,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,234,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,234,153, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,
+129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,
- 53, 3, 0, 0, 53, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96,105,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,103,186, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 16,238,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,231,153, 26,
+ 1, 0, 0, 0, 32,232,153, 26, 1, 0, 0, 0,128,233,153, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,239,153, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,128,227,153, 26, 1, 0, 0, 0, 96, 28,224, 25,
+ 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,201, 1, 0, 0, 67, 3, 0, 0, 3, 3, 80, 1,123, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0, 16,243,153, 26, 1, 0, 0, 0,112,255,153, 26, 1, 0, 0, 0, 80,240,153, 26,
+ 1, 0, 0, 0,176,241,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,244,137, 26,
+ 1, 0, 0, 0,176, 35,137, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,240,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,176,241,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 1, 26, 0, 80, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 42, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,241,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,240,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0,128,167,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,
+ 96, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,
+ 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 80, 1, 97, 1, 63, 1, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,201, 1, 0, 0, 41, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 97, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,243,153, 26, 1, 0, 0, 0,166, 0, 0, 0,
+ 1, 0, 0, 0, 64,248,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 59,152, 26, 1, 0, 0, 0, 96, 59,152, 26,
+ 1, 0, 0, 0,112, 43,152, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,112, 43,152, 26, 1, 0, 0, 0,218, 0, 0, 0,
+ 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,112,244,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,112,244,153, 26,
+ 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0,
+ 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128,245,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,246,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,
+247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,
- 53, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,225, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,224,246,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,245,153, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196,
+ 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,
+156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,
+247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,106,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
-208,106,186, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 12, 84, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0,
- 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0,
- 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0,
- 88,126,162,190,229,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,
-110,101,239, 64,151, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 3,201,194, 63,111,152,134,191,244,250, 39,191, 8,165, 39,191,
-143,164,206, 63, 72,132,132, 63,180,164, 28, 63,149, 84, 28, 63,180,153,196,188, 23,219, 61, 64, 10,108,228,190, 52,247,227,190,
- 82, 21, 64,191, 30,193,159,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,192,206,159,187, 0, 0,168,180,
-110, 44,196,189,214, 36,193, 61,191, 91,138, 62, 0, 0, 28, 51,211,120, 21,194,145, 5, 2, 66, 7,136,213,193,193,214,159,192,
-219, 38, 19, 66,197,173,255,193,155,101,210, 65,173, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0,
- 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0,
- 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63, 3,201,194, 63,111,152,134,191,244,250, 39,191, 8,165, 39,191,
-143,164,206, 63, 72,132,132, 63,180,164, 28, 63,149, 84, 28, 63,180,153,196,188, 23,219, 61, 64, 10,108,228,190, 52,247,227,190,
- 82, 21, 64,191, 30,193,159,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 1, 0, 0, 64,248,153, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,112,255,153, 26, 1, 0, 0, 0, 16,243,153, 26,
+ 1, 0, 0, 0,128,245,153, 26, 1, 0, 0, 0,224,246,153, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 3, 35,171,190,
- 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,210, 47, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 7, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16,110,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
- 80,114,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,249,153, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,250,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112,111,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,112,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65,
- 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 1,
- 26, 0,132, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-253, 5, 0, 0,128, 7, 0, 0,249, 3, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-132, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,250,153, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,249,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,224,112,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,111,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,185, 67,
- 0, 0, 62,195, 0, 0, 0, 0,115, 1, 0, 0,132, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,132, 1,
-208, 0,115, 1,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-253, 5, 0, 0,128, 7, 0, 0, 41, 3, 0, 0,248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-132, 1,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 80,114,186, 2, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0,120,186, 2, 0, 0, 0, 0,
- 16,110,186, 2, 0, 0, 0, 0,112,111,186, 2, 0, 0, 0, 0,224,112,186, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0,
+ 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,252,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64,252,153, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0,
+ 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,115,186, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 68, 65, 84, 65, 16, 0, 0, 0,192,115,186, 2, 0, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
- 16,116,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16,116,186, 2, 0, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 20, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,113,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,123,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16,119,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 48, 95,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,117,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,144,118,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,118,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,117,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67,
- 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0,
- 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,112,255,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,248,153, 26, 1, 0, 0, 0,128,249,153, 26, 1, 0, 0, 0,224,250,153, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 0,120,186, 2, 0, 0, 0, 0,
-162, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,186, 2, 0, 0, 0, 0, 32,117,186, 2, 0, 0, 0, 0,
-144,118,186, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,112,239,153, 26,
+ 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 64,192,149, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,121, 0, 0, 0, 38, 4, 0, 0, 1, 1,147, 3,
+174, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 32, 21,154, 26, 1, 0, 0, 0, 64, 25,154, 26,
+ 1, 0, 0, 0,176, 1,154, 26, 1, 0, 0, 0,144, 16,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,200,197, 25, 1, 0, 0, 0, 80,186,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 1,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 3,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,192,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,100, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+146, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,147, 3, 26, 0,147, 3, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,121, 0, 0, 0,
+146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 3,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 4,154, 26, 1, 0, 0, 0,176, 1,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,
+160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,147, 0, 0, 0,
+ 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,148, 3, 0, 0, 5, 0, 3, 0, 1, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 4,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 5,154, 26, 1, 0, 0, 0, 16, 3,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,
+160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,147, 0, 0, 0,
+147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 5,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 16,154, 26, 1, 0, 0, 0,112, 4,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,
+180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,147, 0, 0, 0,
+ 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 7,154, 26, 1, 0, 0, 0,208,163,129, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 7,154, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 8,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 8,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 10,154, 26,
+ 1, 0, 0, 0, 48, 7,154, 26, 1, 0, 0, 0, 64,242, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,
+115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,
+163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 10,154, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 11,154, 26, 1, 0, 0, 0,192, 8,154, 26, 1, 0, 0, 0,176,203,199, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,
+112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,
+112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,208,121,186, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,
- 64, 46,187, 2, 0, 0, 0, 0, 16,159,185, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,224,122,186, 2, 0, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0, 32,128,186, 2, 0, 0, 0, 0,
- 80,137,186, 2, 0, 0, 0, 0,192,137,186, 2, 0, 0, 0, 0, 16, 14,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,122,186, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 64,123,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,123,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-160,123,186, 2, 0, 0, 0, 0,224,122,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,160,123,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0,124,186, 2, 0, 0, 0, 0,
- 64,123,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 0,124,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0,160,123,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0, 0,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 32,125,186, 2, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 32,125,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0,
-192,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-128,125,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0, 32,125,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 28, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-160,126,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0,
- 64,126,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 0,127,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 32,128,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,128,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64,123,186, 2, 0, 0, 0, 0,160,123,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,144,128,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,129,186, 2, 0, 0, 0, 0,
- 32,128,186, 2, 0, 0, 0, 0, 64,123,186, 2, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 0,129,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,129,186, 2, 0, 0, 0, 0,
-144,128,186, 2, 0, 0, 0, 0,160,123,186, 2, 0, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,112,129,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,129,186, 2, 0, 0, 0, 0,
- 0,129,186, 2, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,224,129,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,130,186, 2, 0, 0, 0, 0,
-112,129,186, 2, 0, 0, 0, 0, 0,124,186, 2, 0, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 80,130,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,130,186, 2, 0, 0, 0, 0,
-224,129,186, 2, 0, 0, 0, 0, 32,125,186, 2, 0, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,192,130,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,131,186, 2, 0, 0, 0, 0,
- 80,130,186, 2, 0, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 48,131,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,131,186, 2, 0, 0, 0, 0,
-192,130,186, 2, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,160,131,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,132,186, 2, 0, 0, 0, 0,
- 48,131,186, 2, 0, 0, 0, 0, 32,125,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 16,132,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,132,186, 2, 0, 0, 0, 0,
-160,131,186, 2, 0, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,128,132,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,132,186, 2, 0, 0, 0, 0,
- 16,132,186, 2, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,240,132,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,133,186, 2, 0, 0, 0, 0,
-128,132,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 96,133,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,133,186, 2, 0, 0, 0, 0,
-240,132,186, 2, 0, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,208,133,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,134,186, 2, 0, 0, 0, 0,
- 96,133,186, 2, 0, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 64,134,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,134,186, 2, 0, 0, 0, 0,
-208,133,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,176,134,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,135,186, 2, 0, 0, 0, 0,
- 64,134,186, 2, 0, 0, 0, 0,224,122,186, 2, 0, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 32,135,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,135,186, 2, 0, 0, 0, 0,
-176,134,186, 2, 0, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,144,135,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,136,186, 2, 0, 0, 0, 0,
- 32,135,186, 2, 0, 0, 0, 0, 0,124,186, 2, 0, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 0,136,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,136,186, 2, 0, 0, 0, 0,
-144,135,186, 2, 0, 0, 0, 0, 32,125,186, 2, 0, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,112,136,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,136,186, 2, 0, 0, 0, 0,
- 0,136,186, 2, 0, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,224,136,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,137,186, 2, 0, 0, 0, 0,
-112,136,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 80,137,186, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224,136,186, 2, 0, 0, 0, 0,224,122,186, 2, 0, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0,192,137,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,141,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0, 64,123,186, 2, 0, 0, 0, 0,160,123,186, 2, 0, 0, 0, 0,
-192,124,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0,
- 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 45,187, 2, 0, 0, 0, 0,
-176, 45,187, 2, 0, 0, 0, 0,160,138,186, 2, 0, 0, 0, 0, 16,140,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160,138,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,140,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 16,140,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,138,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,
-112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-128,141,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,153,186, 2, 0, 0, 0, 0,192,137,186, 2, 0, 0, 0, 0,
-192,127,186, 2, 0, 0, 0, 0, 32,125,186, 2, 0, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0, 0,124,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 15, 15,100, 1, 88, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,145,186, 2, 0, 0, 0, 0,112,152,186, 2, 0, 0, 0, 0,
- 96,142,186, 2, 0, 0, 0, 0,208,143,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,142,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,208,143,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,178, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 26, 0,100, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,143,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,142,186, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0,
- 18, 0, 0, 0, 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,100, 1, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 87, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64,145,186, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0,112,152,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,146,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192,147,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,147,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,146,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48,149,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 48,149,186, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0,
- 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 11,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 13,154, 26,
+ 1, 0, 0, 0, 80, 10,154, 26, 1, 0, 0, 0, 16,206,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,
+108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,252,
+163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 13,154, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,224, 11,154, 26, 1, 0, 0, 0,144,215,199, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100,
+ 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100,
+ 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,112,152,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64,145,186, 2, 0, 0, 0, 0, 80,146,186, 2, 0, 0, 0, 0,192,147,186, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,163,129, 26,
+ 1, 0, 0, 0,112, 13,154, 26, 1, 0, 0, 0,240,217,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,
+115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,163,252,
+163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
-159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-208,153,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,207,186, 2, 0, 0, 0, 0,128,141,186, 2, 0, 0, 0, 0,
- 32,125,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0,192,124,186, 2, 0, 0, 0, 0,128,125,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 89, 0, 0, 0, 21, 4, 0, 0, 4, 4,100, 1,189, 3, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,193,186, 2, 0, 0, 0, 0, 48,206,186, 2, 0, 0, 0, 0,
-176,154,186, 2, 0, 0, 0, 0, 32,156,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,154,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32,156,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,178, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0,
- 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 31, 0,100, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0,247, 3, 0, 0, 21, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,163,129, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,112,208,199, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,
+101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,
+101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,156,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,154,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67,
- 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,255,255, 98,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0,
- 18, 0, 0, 0,157, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0,
- 18, 0, 0, 0,157, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,100, 1,158, 3, 83, 1,140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 89, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,158, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 80,193,186, 2, 0, 0, 0, 0,
-162, 0, 0, 0, 1, 0, 0, 0,224,198,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 16,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208, 5,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,194,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0,196,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,147, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,147, 3,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 17,154, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240, 17,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 43, 39,140, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 74,215, 76,190, 0, 0, 0,128, 68,239,209, 62,
+ 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62,
+ 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63,
+ 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,240,221,229, 62,
+208,249,224,190, 48,180, 81,191,184,158, 81,191,229,161,127, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 18,247,109,188,
+206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 40,187,191, 62,
+177, 56, 85, 63,144,122, 70,188, 0, 0,132, 51,191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194,
+185,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 61,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62,
+ 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,240,221,229, 62,
+208,249,224,190, 48,180, 81,191,184,158, 81,191,229,161,127, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 18,247,109,188,
+206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,144,160, 15, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,160, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144,160, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63,
+ 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,163,211, 2, 59,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,196,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-112,197,186, 2, 0, 0, 0, 0,144,194,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 32, 21,154, 26,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64, 25,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 1, 28,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 22,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,224, 23,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,197,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,196,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0,
- 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 23,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 22,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,224,198,186, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
- 48,206,186, 2, 0, 0, 0, 0, 80,193,186, 2, 0, 0, 0, 0,144,194,186, 2, 0, 0, 0, 0,112,197,186, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64, 25,154, 26, 1, 0, 0, 0,172, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 21,154, 26, 1, 0, 0, 0,128, 22,154, 26, 1, 0, 0, 0,224, 23,154, 26,
+ 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,200,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,128,201,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 96, 54,154, 26, 1, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0,176,166,224, 25,
+ 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+155, 2, 0, 0,121, 0, 0, 0,123, 1, 0, 0, 2, 2,156, 2, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,247, 81, 3,
+ 1, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0, 96, 53,154, 26, 1, 0, 0, 0, 32, 27,154, 26, 1, 0, 0, 0, 64, 31,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,130,138, 26, 1, 0, 0, 0,208, 79,229, 28,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 27,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 28,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68,
+ 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,156, 2, 26, 0,156, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,121, 0, 0, 0,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,249, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 28,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 29,154, 26,
+ 1, 0, 0, 0, 32, 27,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 72, 67, 0, 0, 87,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0,
+199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4,
+ 6, 0,217, 0,233, 0,200, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0,233, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,250, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,201,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,200,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 29,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 31,154, 26,
+ 1, 0, 0, 0,128, 28,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,155, 2, 0, 0,155, 2, 0, 0,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,251, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 31,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224, 29,154, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,232, 0, 0, 0, 18, 0, 0, 0,
+194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,232, 0, 0, 0,111, 18,131, 58,
+111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0,195, 1,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0, 0, 0,155, 2, 0, 0,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,195, 1,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,248, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240,202,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,202,186, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0,
- 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, 80, 38,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 33,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 33,154, 26,
+ 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 34,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,144, 35,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0, 48,206,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224,198,186, 2, 0, 0, 0, 0, 16,200,186, 2, 0, 0, 0, 0,128,201,186, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
-159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-144,207,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,243,186, 2, 0, 0, 0, 0,208,153,186, 2, 0, 0, 0, 0,
- 96,127,186, 2, 0, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0,192,127,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,147, 1, 0, 0, 1, 1, 27, 3,148, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,228,186, 2, 0, 0, 0, 0,160,242,186, 2, 0, 0, 0, 0,
-112,208,186, 2, 0, 0, 0, 0,240,223,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,208,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224,209,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 3, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 27, 3, 26, 0, 27, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,209,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 80,211,186, 2, 0, 0, 0, 0,112,208,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,147, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,122, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,211,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192,212,186, 2, 0, 0, 0, 0,224,209,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,212,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,240,223,186, 2, 0, 0, 0, 0, 80,211,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0, 0,124,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,124,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 14, 1,163, 0,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,147, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,223,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,212,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,147, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,225,186, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96,225,186, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 71,114, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
- 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,
-149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190,
-152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0, 88,126,162,190,229,251,159, 62,
- 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192,
- 78,255,170, 64, 0, 0,128, 63, 4, 6,158, 63, 4,201,153,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,253,104,151, 63,
-180,164, 28, 63,149, 84, 28, 63, 2,127,159,188,156,236, 88, 64, 10,108,228,190, 52,247,227,190,222,212, 27,191,248,135,182,191,
-216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179, 7,178,171,189, 46, 11,169, 61,
-217, 47,114, 62, 0, 0, 12,179,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,
-217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,
-149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190,
-152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63, 4,201,153,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,253,104,151, 63,
-180,164, 28, 63,149, 84, 28, 63, 2,127,159,188,156,236, 88, 64, 10,108,228,190, 52,247,227,190,222,212, 27,191,248,135,182,191,
-216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 3, 35,171,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 35,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,240, 36,154, 26, 1, 0, 0, 0, 48, 34,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,
+163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,
+163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 36,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 35,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,
+164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,160,228,186, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224,232,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0,230,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,231,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,239, 2, 26, 0,239, 2, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112,231,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230,186, 2, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,146,211, 11, 68,174,122,214, 66, 82, 97,202, 67,
-222, 2, 0, 0,239, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,221, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,
-205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,239, 2,122, 1,222, 2,104, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0,
- 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2,122, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 80, 38,154, 26, 1, 0, 0, 0,167, 0, 0, 0,
+ 1, 0, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0, 48, 34,154, 26, 1, 0, 0, 0,240, 36,154, 26,
+ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
-224,232,186, 2, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,144,238,186, 2, 0, 0, 0, 0,160,228,186, 2, 0, 0, 0, 0,
- 0,230,186, 2, 0, 0, 0, 0,112,231,186, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 39,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,144, 40,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 40,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,240, 41,154, 26, 1, 0, 0, 0, 48, 39,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 41,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 80, 43,154, 26, 1, 0, 0, 0,144, 40,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,199, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,234,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,176,235,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67,
- 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 43,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,176, 44,154, 26, 1, 0, 0, 0,240, 41,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,235,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32,237,186, 2, 0, 0, 0, 0, 64,234,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 44,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 43,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,237,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,235,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0,
- 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,
-105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 46,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16, 46,154, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
+ 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
+ 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62,
+ 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63,
+ 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,
+151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62,
+ 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,144,238,186, 2, 0, 0, 0, 0,
-163, 0, 0, 0, 1, 0, 0, 0,160,242,186, 2, 0, 0, 0, 0,224,232,186, 2, 0, 0, 0, 0, 64,234,186, 2, 0, 0, 0, 0,
- 32,237,186, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96, 53,154, 26, 1, 0, 0, 0, 80, 38,154, 26,
+ 1, 0, 0, 0, 48, 39,154, 26, 1, 0, 0, 0,176, 44,154, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 50,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 52,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,
+126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 52,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 50,154, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96, 53,154, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,160, 50,154, 26,
+ 1, 0, 0, 0, 0, 52,154, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192,239,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,241,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48,241,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,239,186, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 54,154, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,176,166,224, 25,
+ 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,125, 1, 0, 0, 38, 4, 0, 0, 12, 12,156, 2,170, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 29, 82, 3, 1, 0, 0, 0, 96, 59,154, 26, 1, 0, 0, 0,224, 86,154, 26, 1, 0, 0, 0, 64, 55,154, 26,
+ 1, 0, 0, 0, 0, 58,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 64,230, 28,
+ 1, 0, 0, 0,240, 36, 38, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 55,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,160, 56,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,156, 2, 26, 0,156, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,125, 1, 0, 0,150, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 31, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
-160,242,186, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,238,186, 2, 0, 0, 0, 0,
-192,239,186, 2, 0, 0, 0, 0, 48,241,186, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 56,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 58,154, 26, 1, 0, 0, 0, 64, 55,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0,128, 31,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,
+143, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,144, 2,200, 0,126, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0,151, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,144, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 31, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 58,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 56,154, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,128, 31,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0,
+143, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,
+143, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,212, 1,144, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,155, 2, 0, 0,151, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,144, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 30, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 96, 59,154, 26, 1, 0, 0, 0, 21, 1, 0, 0,
+ 1, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-176,243,186, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 14,187, 2, 0, 0, 0, 0,144,207,186, 2, 0, 0, 0, 0,
- 64,126,186, 2, 0, 0, 0, 0, 96,124,186, 2, 0, 0, 0, 0,224,125,186, 2, 0, 0, 0, 0,160,126,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,149, 1, 0, 0, 21, 4, 0, 0, 16, 16, 28, 6,129, 2, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,247,186, 2, 0, 0, 0, 0, 0, 13,187, 2, 0, 0, 0, 0,
-144,244,186, 2, 0, 0, 0, 0, 0,246,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,244,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0,246,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 6, 26, 0, 28, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,246,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,244,186, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 80, 64,199,195, 40,160, 99, 68,192, 3, 91, 64,248, 73,254, 67, 11, 6, 0, 0, 28, 6, 0, 0,
- 18, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0,
- 18, 0, 0, 0,102, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 28, 6,103, 2, 11, 6, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,175, 1, 0, 0, 21, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,103, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 60,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 62,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 49, 2, 0, 0, 74, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,112,247,186, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0, 32,253,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 62,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96, 63,154, 26, 1, 0, 0, 0,160, 60,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,219,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,
+199, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,
+199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,200, 1,200, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,200, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 63,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192, 64,154, 26, 1, 0, 0, 0, 0, 62,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 66, 86, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,248,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64,250,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,250,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176,251,186, 2, 0, 0, 0, 0,208,248,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 64,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 63,154, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192,
+ 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+199, 1, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 18, 0, 0, 0,
+199, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0,161, 0, 0, 0,
+ 1, 0, 0, 0,208, 71,154, 26, 1, 0, 0, 0, 96, 59,154, 26, 1, 0, 0, 0,160, 60,154, 26, 1, 0, 0, 0,192, 64,154, 26,
+ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,251,186, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64,250,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 32,253,186, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
-192, 8,187, 2, 0, 0, 0, 0,112,247,186, 2, 0, 0, 0, 0,208,248,186, 2, 0, 0, 0, 0,176,251,186, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 67,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 80, 67,154, 26, 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 67,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 69,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,
+110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 69,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 70,154, 26, 1, 0, 0, 0,176, 67,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,
+189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,254,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192,255,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,255,186, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48, 1,187, 2, 0, 0, 0, 0, 80,254,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 1,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,160, 2,187, 2, 0, 0, 0, 0,192,255,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 2,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 16, 4,187, 2, 0, 0, 0, 0, 48, 1,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 4,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 2,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 5,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 5,187, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,
-166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,
-248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,
-170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,
-205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 70,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,192, 8,187, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 13,187, 2, 0, 0, 0, 0,
- 32,253,186, 2, 0, 0, 0, 0, 80,254,186, 2, 0, 0, 0, 0, 16, 4,187, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32, 10,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 11,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 11,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10,187, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,208, 71,154, 26,
+ 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,192, 82,154, 26, 1, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0,176, 67,154, 26,
+ 1, 0, 0, 0,112, 70,154, 26, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 72,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 74,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,
+110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 74,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 75,154, 26, 1, 0, 0, 0,176, 72,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,
+160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 75,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 76,154, 26, 1, 0, 0, 0, 16, 74,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,
+160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 76,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 78,154, 26, 1, 0, 0, 0,112, 75,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,
+180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 78,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 76,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 79,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 79,154, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,
+143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,
+142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,
+111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,
+140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,
+191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,
+159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,
+143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,
+140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
- 0, 13,187, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 8,187, 2, 0, 0, 0, 0,
- 32, 10,187, 2, 0, 0, 0, 0,144, 11,187, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 82,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224, 86,154, 26,
+ 1, 0, 0, 0,208, 71,154, 26, 1, 0, 0, 0,176, 72,154, 26, 1, 0, 0, 0, 48, 78,154, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
- 16, 14,187, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,243,186, 2, 0, 0, 0, 0,
-224,122,186, 2, 0, 0, 0, 0, 64,126,186, 2, 0, 0, 0, 0, 0,127,186, 2, 0, 0, 0, 0, 96,127,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,147, 1, 0, 0, 6, 6, 0, 3,148, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 19,187, 2, 0, 0, 0, 0,160, 44,187, 2, 0, 0, 0, 0,
-240, 14,187, 2, 0, 0, 0, 0,208, 17,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 14,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 96, 16,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32, 84,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 85,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128, 85,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 84,154, 26,
+ 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
+ 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 16,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,208, 17,187, 2, 0, 0, 0, 0,240, 14,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+200, 0, 0, 0,224, 86,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 82,154, 26,
+ 1, 0, 0, 0, 32, 84,154, 26, 1, 0, 0, 0,128, 85,154, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,147, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 17,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 16,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67,
- 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 54,154, 26,
+ 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 45, 91, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 38, 4, 0, 0, 1, 1, 80, 1,
+226, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0,176, 94,154, 26, 1, 0, 0, 0, 0,104,154, 26,
+ 1, 0, 0, 0,192, 88,154, 26, 1, 0, 0, 0, 32, 90,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,187,199, 25, 1, 0, 0, 0, 80, 42,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 88,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 90,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,
+ 69, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 90,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 88,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 64, 19,187, 2, 0, 0, 0, 0,
-167, 0, 0, 0, 1, 0, 0, 0, 16, 23,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 20,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,160, 21,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 21,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 20,187, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0,
- 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0,
- 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,
+ 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,226, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 91,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 91,154, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 28, 83, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,
+225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,
+254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,
+228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,
+151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 3,201,194, 63,247,255,133,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63,
+ 43,238,131, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 6, 4, 61, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,
+ 37, 12,159,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180,117, 11,197,189,
+112, 0,194, 61, 52,249,138, 62, 0, 0,174, 51,211,120, 21,194,145, 5, 2, 66, 6,136,213,193,193,214,159,192,219, 38, 19, 66,
+197,173,255,193,154,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,
+225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,
+254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 3,201,194, 63,247,255,133,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63,
+ 43,238,131, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 6, 4, 61, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,
+ 37, 12,159,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16, 23,187, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0,192, 28,187, 2, 0, 0, 0, 0, 64, 19,187, 2, 0, 0, 0, 0, 48, 20,187, 2, 0, 0, 0, 0,
-160, 21,187, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,210, 47, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 24,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-224, 25,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,176, 94,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208, 98,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 16, 96,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 97,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 1, 26, 0,132, 1,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,
+128, 7, 0, 0,249, 3, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1, 26, 0,
+ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 25,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 80, 27,187, 2, 0, 0, 0, 0,112, 24,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,112, 97,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 96,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,185, 67, 0, 0, 62,195,
+ 0, 0, 0, 0,115, 1, 0, 0,132, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,132, 1,208, 0,115, 1,
+190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,
+128, 7, 0, 0, 41, 3, 0, 0,248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1,208, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,208, 98,154, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0,104,154, 26, 1, 0, 0, 0,176, 94,154, 26,
+ 1, 0, 0, 0, 16, 96,154, 26, 1, 0, 0, 0,112, 97,154, 26, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 27,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,224, 25,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 6, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,192, 28,187, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
- 96, 40,187, 2, 0, 0, 0, 0, 16, 23,187, 2, 0, 0, 0, 0,112, 24,187, 2, 0, 0, 0, 0, 80, 27,187, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,
+ 16, 0, 0, 0,192, 6, 94, 3, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,100,154, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,100,154, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0,
+ 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,101,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,160,102,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,102,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,101,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196,
+ 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,
+155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0,
+ 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 29,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 96, 31,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 31,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,208, 32,187, 2, 0, 0, 0, 0,240, 29,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 32,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 64, 34,187, 2, 0, 0, 0, 0, 96, 31,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 34,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,176, 35,187, 2, 0, 0, 0, 0,208, 32,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 35,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 34,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32, 37,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 32, 37,187, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,
-166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,
-248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,
-170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,
-205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 0,104,154, 26, 1, 0, 0, 0,162, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 98,154, 26, 1, 0, 0, 0, 64,101,154, 26, 1, 0, 0, 0,160,102,154, 26,
+ 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0, 96, 40,187, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160, 44,187, 2, 0, 0, 0, 0,
-192, 28,187, 2, 0, 0, 0, 0,240, 29,187, 2, 0, 0, 0, 0,176, 35,187, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192, 41,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 43,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 96, 4,155, 26,
+ 1, 0, 0, 0,160,178,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,
+109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 16,112,154, 26, 1, 0, 0, 0,240,119,154, 26,
+ 1, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0, 96,229,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 60, 48, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,107,154, 26,
+ 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 48,107,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,107,154, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,109,154, 26,
+ 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0,176,108,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,109,154, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 39, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,110,154, 26,
+ 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 48,110,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,110,154, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 16,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,112,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,112,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,112,154, 26, 1, 0, 0, 0, 16,112,154, 26,
+ 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,208,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,113,154, 26, 1, 0, 0, 0,112,112,154, 26,
+ 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 48,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,113,154, 26, 1, 0, 0, 0,208,112,154, 26,
+ 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,144,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,113,154, 26, 1, 0, 0, 0, 48,113,154, 26,
+ 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,240,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,114,154, 26, 1, 0, 0, 0,144,113,154, 26,
+ 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 80,114,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,114,154, 26, 1, 0, 0, 0,240,113,154, 26,
+ 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,176,114,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,115,154, 26, 1, 0, 0, 0, 80,114,154, 26,
+ 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 16,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,115,154, 26, 1, 0, 0, 0,176,114,154, 26,
+ 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,112,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,115,154, 26, 1, 0, 0, 0, 16,115,154, 26,
+ 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,208,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,116,154, 26, 1, 0, 0, 0,112,115,154, 26,
+ 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 48,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,116,154, 26, 1, 0, 0, 0,208,115,154, 26,
+ 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,144,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,116,154, 26, 1, 0, 0, 0, 48,116,154, 26,
+ 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,240,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,117,154, 26, 1, 0, 0, 0,144,116,154, 26,
+ 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 80,117,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,117,154, 26, 1, 0, 0, 0,240,116,154, 26,
+ 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,176,117,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,118,154, 26, 1, 0, 0, 0, 80,117,154, 26,
+ 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 16,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,118,154, 26, 1, 0, 0, 0,176,117,154, 26,
+ 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,112,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,118,154, 26, 1, 0, 0, 0, 16,118,154, 26,
+ 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,208,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,119,154, 26, 1, 0, 0, 0,112,118,154, 26,
+ 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 48,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,119,154, 26, 1, 0, 0, 0,208,118,154, 26,
+ 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,144,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,119,154, 26, 1, 0, 0, 0, 48,119,154, 26,
+ 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,240,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,119,154, 26,
+ 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,123,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,176,108,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7,
+ 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, 1, 0, 0, 0,224, 3,155, 26, 1, 0, 0, 0,224, 3,155, 26,
+ 1, 0, 0, 0, 48,121,154, 26, 1, 0, 0, 0,144,122,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 67,229, 28, 1, 0, 0, 0, 32,178,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,121,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,122,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0,
+ 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,122,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,121,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,
+129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0,
+ 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240,123,154, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,135,154, 26, 1, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0,176,111,154, 26,
+ 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 15, 15,100, 1, 92, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 16,236, 81, 3, 1, 0, 0, 0,144,127,154, 26, 1, 0, 0, 0,128,134,154, 26, 1, 0, 0, 0,208,124,154, 26,
+ 1, 0, 0, 0, 48,126,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217,199, 25,
+ 1, 0, 0, 0,208, 96,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,124,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 48,126,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 94, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0,221, 67, 0,128, 71, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 26, 0,100, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,126,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,124,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 18, 0, 0, 0,
+ 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,100, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144,127,154, 26, 1, 0, 0, 0,172, 0, 0, 0,
+ 1, 0, 0, 0,128,134,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,128,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,240,129,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,129,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,128,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,131,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,131,154, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,
+129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48, 43,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 41,187, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
-160, 44,187, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 40,187, 2, 0, 0, 0, 0,
-192, 41,187, 2, 0, 0, 0, 0, 48, 43,187, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,
- 64, 46,187, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,160,175,187, 2, 0, 0, 0, 0,208,121,186, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 47,187, 2, 0, 0, 0, 0,
-112, 51,187, 2, 0, 0, 0, 0,208, 51,187, 2, 0, 0, 0, 0, 64, 59,187, 2, 0, 0, 0, 0,176, 59,187, 2, 0, 0, 0, 0,
-208,143,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,208, 80,113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 80, 47,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 47,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-176, 47,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 48,187, 2, 0, 0, 0, 0, 80, 47,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 48,187, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,112, 48,187, 2, 0, 0, 0, 0,176, 47,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-118, 7, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 48,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-208, 48,187, 2, 0, 0, 0, 0, 16, 48,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0,
-112, 48,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 48, 49,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 80, 50,187, 2, 0, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 70, 4, 1, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0,
-240, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 92, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-176, 50,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 51,187, 2, 0, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 92, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 51,187, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 96, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 51,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 96, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,208, 51,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 52,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 47,187, 2, 0, 0, 0, 0, 16, 48,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 64, 52,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 52,187, 2, 0, 0, 0, 0,
-208, 51,187, 2, 0, 0, 0, 0,176, 47,187, 2, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,176, 52,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 53,187, 2, 0, 0, 0, 0,
- 64, 52,187, 2, 0, 0, 0, 0, 16, 48,187, 2, 0, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 32, 53,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 53,187, 2, 0, 0, 0, 0,
-176, 52,187, 2, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,144, 53,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 54,187, 2, 0, 0, 0, 0,
- 32, 53,187, 2, 0, 0, 0, 0, 80, 47,187, 2, 0, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 0, 54,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 54,187, 2, 0, 0, 0, 0,
-144, 53,187, 2, 0, 0, 0, 0,112, 48,187, 2, 0, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,112, 54,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 54,187, 2, 0, 0, 0, 0,
- 0, 54,187, 2, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,224, 54,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 55,187, 2, 0, 0, 0, 0,
-112, 54,187, 2, 0, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 80, 55,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 55,187, 2, 0, 0, 0, 0,
-224, 54,187, 2, 0, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,192, 55,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 56,187, 2, 0, 0, 0, 0,
- 80, 55,187, 2, 0, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 48, 56,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 56,187, 2, 0, 0, 0, 0,
-192, 55,187, 2, 0, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,160, 56,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 57,187, 2, 0, 0, 0, 0,
- 48, 56,187, 2, 0, 0, 0, 0,112, 48,187, 2, 0, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 16, 57,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 57,187, 2, 0, 0, 0, 0,
-160, 56,187, 2, 0, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,128, 57,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 57,187, 2, 0, 0, 0, 0,
- 16, 57,187, 2, 0, 0, 0, 0, 80, 47,187, 2, 0, 0, 0, 0, 16, 51,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,240, 57,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 58,187, 2, 0, 0, 0, 0,
-128, 57,187, 2, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0, 16, 51,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 96, 58,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 58,187, 2, 0, 0, 0, 0,
-240, 57,187, 2, 0, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,208, 58,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 59,187, 2, 0, 0, 0, 0,
- 96, 58,187, 2, 0, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 64, 59,187, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208, 58,187, 2, 0, 0, 0, 0, 16, 51,187, 2, 0, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0,176, 59,187, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 63,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0,176, 47,187, 2, 0, 0, 0, 0, 16, 48,187, 2, 0, 0, 0, 0,
- 48, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 71, 4, 0, 0, 97, 4, 0, 0,
- 7, 7,119, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,240,105,162, 2, 0, 0, 0, 0, 16,175,187, 2, 0, 0, 0, 0,
- 16,175,187, 2, 0, 0, 0, 0,144, 60,187, 2, 0, 0, 0, 0, 0, 62,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,201,201, 2, 0, 0, 0, 0, 0, 56,230, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 60,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 62,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,238, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,119, 7, 26, 0,119, 7, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0,
- 71, 4, 0, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 7, 26, 0, 2, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,107,162, 2, 0, 0, 0, 0,112,113,131, 3, 0, 0, 0, 0,
-112,113,131, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 55,200, 2, 0, 0, 0, 0,
-208, 56,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0, 62,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 60,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,
-112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 97, 4, 0, 0, 97, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,106,162, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59,200, 2, 0, 0, 0, 0,
- 64, 61,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-112, 63,187, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,113,187, 2, 0, 0, 0, 0,176, 59,187, 2, 0, 0, 0, 0,
-144, 49,187, 2, 0, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0,112, 48,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 91, 3, 0, 0, 4, 4,118, 1, 92, 3, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64,102,162, 2, 0, 0, 0, 0,144,104,187, 2, 0, 0, 0, 0,240,111,187, 2, 0, 0, 0, 0,
- 80, 64,187, 2, 0, 0, 0, 0,192, 65,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 61,230, 2, 0, 0, 0, 0,240, 71,230, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 64,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192, 65,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,187, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 1, 0, 0,
- 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,118, 1, 31, 0,118, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,118, 7, 0, 0, 61, 3, 0, 0, 91, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 1, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16,105,162, 2, 0, 0, 0, 0, 64, 93,133, 3, 0, 0, 0, 0, 64, 93,133, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64,200, 2, 0, 0, 0, 0, 48, 67,200, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 65,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 64,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,178, 67,
- 0,128, 74,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,178, 67,252,191, 74,196, 0, 0, 0, 0,101, 1, 0, 0,118, 1, 0, 0,
- 18, 0, 0, 0, 60, 3, 0, 0, 0, 0, 0, 0,100, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,100, 1, 0, 0,
- 18, 0, 0, 0, 60, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,118, 1, 61, 3,101, 1, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,131,131, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 60, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 1, 61, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48,103,162, 2, 0, 0, 0, 0, 0,211,133, 3, 0, 0, 0, 0, 32,183,132, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 69,200, 2, 0, 0, 0, 0, 96, 72,200, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,144,104,187, 2, 0, 0, 0, 0,
-162, 0, 0, 0, 1, 0, 0, 0,240,111,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 48, 92,133, 3, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,105,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64,107,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,107,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,208,105,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-176,108,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,176,108,187, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
-237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0,128,134,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,127,154, 26,
+ 1, 0, 0, 0,144,128,154, 26, 1, 0, 0, 0,240,129,154, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,135,154, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,169,154, 26, 1, 0, 0, 0,240,123,154, 26, 1, 0, 0, 0, 16,109,154, 26,
+ 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, 38, 4, 0, 0, 4, 4,100, 1,202, 3, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0, 32,155,154, 26, 1, 0, 0, 0,160,167,154, 26, 1, 0, 0, 0,192,136,154, 26,
+ 1, 0, 0, 0, 32,138,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,104,155, 25,
+ 1, 0, 0, 0, 32,153,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,136,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32,138,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,178, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0,
+ 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 31, 0,100, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 8, 4, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,138,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,136,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 0,102,196,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,254, 63,102,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0,
+170, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0,
+170, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,100, 1,171, 3, 83, 1,153, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180,157, 25,
+ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,139,154, 26,
+ 1, 0, 0, 0,144,153,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,139,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 16,141,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,220,255, 82, 1, 36, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 16,141,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,142,154, 26, 1, 0, 0, 0,128,139,154, 26,
+ 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,
+110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,
+110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
-240,111,187, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,104,187, 2, 0, 0, 0, 0,
-208,105,187, 2, 0, 0, 0, 0, 64,107,187, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 82, 1, 61, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80,113,187, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,160,125,187, 2, 0, 0, 0, 0,112, 63,187, 2, 0, 0, 0, 0, 80, 47,187, 2, 0, 0, 0, 0,
- 16, 51,187, 2, 0, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0,144, 49,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 15, 15, 0, 6, 96, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 72,162, 2, 0, 0, 0, 0, 16,117,187, 2, 0, 0, 0, 0, 64,124,187, 2, 0, 0, 0, 0, 48,114,187, 2, 0, 0, 0, 0,
-160,115,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 77,230, 2, 0, 0, 0, 0,
- 32, 88,230, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,114,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160,115,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,192, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 0, 6, 26, 0, 0, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 0, 6, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 74,162, 2, 0, 0, 0, 0, 80, 23,134, 3, 0, 0, 0, 0, 80, 23,134, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 76,200, 2, 0, 0, 0, 0,144, 77,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,115,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48,114,187, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,
-112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 18, 0, 0, 0, 69, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2,
- 4, 0, 0, 4, 8, 0, 0, 6, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 26, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 70, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 73,162, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,192, 79,200, 2, 0, 0, 0, 0, 0, 85,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16,117,187, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,
- 64,124,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,142,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48,144,154, 26, 1, 0, 0, 0, 16,141,154, 26, 1, 0, 0, 0,176,131,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,118,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-144,119,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,111,255, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,119,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32,118,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 48,144,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,145,154, 26, 1, 0, 0, 0,160,142,154, 26,
+ 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,
+109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,
+109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 82, 1,178, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,145,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80,147,154, 26, 1, 0, 0, 0, 48,144,154, 26, 1, 0, 0, 0,112,138,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,121,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 0,121,187, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,
- 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
-161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
- 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 64,124,187, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,117,187, 2, 0, 0, 0, 0,
- 32,118,187, 2, 0, 0, 0, 0,144,119,187, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,125,187, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,208,143,187, 2, 0, 0, 0, 0, 80,113,187, 2, 0, 0, 0, 0, 80, 50,187, 2, 0, 0, 0, 0,
-240, 49,187, 2, 0, 0, 0, 0, 48, 49,187, 2, 0, 0, 0, 0,176, 50,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 6, 0, 0,118, 7, 0, 0, 93, 3, 0, 0, 69, 4, 0, 0, 3, 3,118, 1,233, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224, 69,162, 2, 0, 0, 0, 0, 96,129,187, 2, 0, 0, 0, 0,112,142,187, 2, 0, 0, 0, 0,128,126,187, 2, 0, 0, 0, 0,
-240,127,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 93,230, 2, 0, 0, 0, 0,
-208,104,230, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,126,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-240,127,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,187, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,118, 1, 26, 0,118, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,118, 7, 0, 0, 44, 4, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,118, 1, 26, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-176, 71,162, 2, 0, 0, 0, 0,240,163,138, 3, 0, 0, 0, 0,240,163,138, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 88,200, 2, 0, 0, 0, 0,112, 89,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,127,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128,126,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,178, 67, 0, 0, 61,195, 0, 0, 0, 0,101, 1, 0, 0,118, 1, 0, 0, 18, 0, 0, 0,206, 0, 0, 0,
- 0, 0, 0, 0,100, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,100, 1, 0, 0, 18, 0, 0, 0,206, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3,
- 0, 0, 0, 4, 6, 0,118, 1,207, 0,101, 1,189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,118, 7, 0, 0, 93, 3, 0, 0, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,118, 1,207, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208, 70,162, 2, 0, 0, 0, 0, 0,173,138, 3, 0, 0, 0, 0, 0,173,138, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160, 91,200, 2, 0, 0, 0, 0,224, 93,200, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,129,187, 2, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,
- 16,135,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,190,138, 3, 0, 0, 0, 0, 16,190,138, 3, 0, 0, 0, 0,
-208,130,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,208,130,187, 2, 0, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0,
- 13, 0, 0, 0, 13, 0, 0, 0, 32,131,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 32,131,187, 2, 0, 0, 0, 0,
-217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-144,113,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-240,123,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 16,119,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 95,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48,132,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,133,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0,
- 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 83,254, 82, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160,133,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,132,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0,
- 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 80,147,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,148,154, 26, 1, 0, 0, 0,192,145,154, 26,
+ 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104,
+ 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104,
+ 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 82, 1,102, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,
- 16,135,187, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,112,142,187, 2, 0, 0, 0, 0, 96,129,187, 2, 0, 0, 0, 0,
- 48,132,187, 2, 0, 0, 0, 0,160,133,187, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,148,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112,150,154, 26, 1, 0, 0, 0, 80,147,154, 26, 1, 0, 0, 0, 48,145,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 84,253, 82, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,136,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192,137,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,112,150,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,152,154, 26, 1, 0, 0, 0,224,148,154, 26,
+ 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,
+114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,
+114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,137,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,136,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 82, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,152,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,144,153,154, 26, 1, 0, 0, 0,112,150,154, 26, 1, 0, 0, 0,224,152,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 36,253, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48,139,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 48,139,187, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0,
- 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,144,153,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,154, 26,
+ 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116,
+ 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116,
+ 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,253, 82, 1, 0, 0, 20, 0, 0, 0,
+ 4, 0, 3, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 32,155,154, 26, 1, 0, 0, 0,162, 0, 0, 0,
+ 1, 0, 0, 0,128,160,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,112,142,187, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16,135,187, 2, 0, 0, 0, 0, 80,136,187, 2, 0, 0, 0, 0,192,137,187, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
-159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-208,143,187, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,125,187, 2, 0, 0, 0, 0,
- 16, 51,187, 2, 0, 0, 0, 0,208, 48,187, 2, 0, 0, 0, 0,240, 49,187, 2, 0, 0, 0, 0,112, 51,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 97, 0, 0, 0, 69, 4, 0, 0, 1, 1, 0, 6,229, 3, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 75,162, 2, 0, 0, 0, 0,192,169,187, 2, 0, 0, 0, 0, 0,174,187, 2, 0, 0, 0, 0,
-176,144,187, 2, 0, 0, 0, 0, 16,165,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,110,230, 2, 0, 0, 0, 0,128,190,230, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,144,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32,146,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 6, 26, 0, 0, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 97, 0, 0, 0,122, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 83,162, 2, 0, 0, 0, 0,144,249,138, 3, 0, 0, 0, 0,144,249,138, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 99,200, 2, 0, 0, 0, 0, 16,102,200, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,146,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,208,150,187, 2, 0, 0, 0, 0,176,144,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 80,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 82, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 83, 3,143, 0, 65, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,243, 0, 0, 0, 69, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 83, 3, 11, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 79,162, 2, 0, 0, 0, 0, 0,159,139, 3, 0, 0, 0, 0,224,152,139, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,104,200, 2, 0, 0, 0, 0,128,106,200, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,150,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224,153,187, 2, 0, 0, 0, 0, 32,146,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,123, 0, 0, 0,242, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 12, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,208, 81,162, 2, 0, 0, 0, 0,112, 20,140, 3, 0, 0, 0, 0,112, 20,140, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 31,200, 2, 0, 0, 0, 0,192,116,200, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,153,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 16,165,187, 2, 0, 0, 0, 0,208,150,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0,192, 77,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 34,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0,156, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0,156, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,157, 2,163, 0,139, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0,255, 5, 0, 0,123, 0, 0, 0, 69, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 16, 77,162, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,165,187, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,153,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,255, 5, 0, 0,123, 0, 0, 0, 69, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 5,203, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48, 76,162, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 23,200, 2, 0, 0, 0, 0,144,138,200, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128,166,187, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128,166,187, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,100,198, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,
-166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,
-248,209,213, 64, 0, 0,128, 63,180,157,229, 62,250,103, 31,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63,173,171,153, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188, 43,146,177, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,208,246, 70,188, 0,128, 32,182, 36,180,132,190,211,219,255, 61,
- 70,213, 19, 63, 0,128,101, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,
-205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63,180,157,229, 62,250,103, 31,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63,173,171,153, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188, 43,146,177, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,155, 46,174, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,176, 12,158, 25, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,156,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,157,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
+ 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67,
+ 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,192,169,187, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0,174,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32,171,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,172,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,157,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,159,154, 26,
+ 1, 0, 0, 0, 96,156,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144,172,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,171,187, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
- 0,174,187, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,169,187, 2, 0, 0, 0, 0,
- 32,171,187, 2, 0, 0, 0, 0,144,172,187, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,
-160,175,187, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0,150,188, 2, 0, 0, 0, 0, 64, 46,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48,
- 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,176,187, 2, 0, 0, 0, 0,
-144,181,187, 2, 0, 0, 0, 0,240,181,187, 2, 0, 0, 0, 0,176,190,187, 2, 0, 0, 0, 0, 32,191,187, 2, 0, 0, 0, 0,
- 96,117,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,176,176,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,177,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 16,177,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,177,187, 2, 0, 0, 0, 0,176,176,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,177,187, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,208,177,187, 2, 0, 0, 0, 0, 16,177,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,177,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 48,178,187, 2, 0, 0, 0, 0,112,177,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,178,187, 2, 0, 0, 0, 0,
-208,177,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-144,178,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 80,179,187, 2, 0, 0, 0, 0,144,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,179,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-176,179,187, 2, 0, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,148, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,176,179,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,180,187, 2, 0, 0, 0, 0,
- 80,179,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 16,180,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,180,187, 2, 0, 0, 0, 0,176,179,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,180,187, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,208,180,187, 2, 0, 0, 0, 0, 16,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 56, 5,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,180,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 48,181,187, 2, 0, 0, 0, 0,112,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 22, 4, 1, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 48,181,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,181,187, 2, 0, 0, 0, 0,
-208,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-144,181,187, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,181,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,181,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 96,182,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,177,187, 2, 0, 0, 0, 0,
-112,177,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,182,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,208,182,187, 2, 0, 0, 0, 0,240,181,187, 2, 0, 0, 0, 0, 16,177,187, 2, 0, 0, 0, 0,
- 48,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,182,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 64,183,187, 2, 0, 0, 0, 0, 96,182,187, 2, 0, 0, 0, 0,112,177,187, 2, 0, 0, 0, 0,
-144,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,183,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,176,183,187, 2, 0, 0, 0, 0,208,182,187, 2, 0, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,
-144,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,183,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 32,184,187, 2, 0, 0, 0, 0, 64,183,187, 2, 0, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,
-240,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,184,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,144,184,187, 2, 0, 0, 0, 0,176,183,187, 2, 0, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0,
- 80,179,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,184,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 0,185,187, 2, 0, 0, 0, 0, 32,184,187, 2, 0, 0, 0, 0,208,177,187, 2, 0, 0, 0, 0,
-176,179,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,185,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,112,185,187, 2, 0, 0, 0, 0,144,184,187, 2, 0, 0, 0, 0, 80,179,187, 2, 0, 0, 0, 0,
-176,179,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,185,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,224,185,187, 2, 0, 0, 0, 0, 0,185,187, 2, 0, 0, 0, 0,176,176,187, 2, 0, 0, 0, 0,
-240,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,185,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 80,186,187, 2, 0, 0, 0, 0,112,185,187, 2, 0, 0, 0, 0,176,176,187, 2, 0, 0, 0, 0,
-176,179,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,186,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,192,186,187, 2, 0, 0, 0, 0,224,185,187, 2, 0, 0, 0, 0,144,178,187, 2, 0, 0, 0, 0,
- 16,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,186,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 48,187,187, 2, 0, 0, 0, 0, 80,186,187, 2, 0, 0, 0, 0,208,177,187, 2, 0, 0, 0, 0,
- 16,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,187,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,160,187,187, 2, 0, 0, 0, 0,192,186,187, 2, 0, 0, 0, 0, 80,179,187, 2, 0, 0, 0, 0,
- 16,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,187,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 16,188,187, 2, 0, 0, 0, 0, 48,187,187, 2, 0, 0, 0, 0,112,180,187, 2, 0, 0, 0, 0,
-208,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,188,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,128,188,187, 2, 0, 0, 0, 0,160,187,187, 2, 0, 0, 0, 0,144,178,187, 2, 0, 0, 0, 0,
-208,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,188,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,240,188,187, 2, 0, 0, 0, 0, 16,188,187, 2, 0, 0, 0, 0, 16,180,187, 2, 0, 0, 0, 0,
-112,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,188,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 96,189,187, 2, 0, 0, 0, 0,128,188,187, 2, 0, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0,
- 48,181,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,189,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,208,189,187, 2, 0, 0, 0, 0,240,188,187, 2, 0, 0, 0, 0,112,180,187, 2, 0, 0, 0, 0,
- 48,181,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,189,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 64,190,187, 2, 0, 0, 0, 0, 96,189,187, 2, 0, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,
-144,181,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,190,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,176,190,187, 2, 0, 0, 0, 0,208,189,187, 2, 0, 0, 0, 0,208,180,187, 2, 0, 0, 0, 0,
-144,181,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,190,187, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,190,187, 2, 0, 0, 0, 0, 48,181,187, 2, 0, 0, 0, 0,
-144,181,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32,191,187, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,224,194,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,
- 16,177,187, 2, 0, 0, 0, 0,112,177,187, 2, 0, 0, 0, 0,144,178,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,112,149,188, 2, 0, 0, 0, 0,112,149,188, 2, 0, 0, 0, 0, 0,192,187, 2, 0, 0, 0, 0,
-112,193,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,192,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-112,193,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,193,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,192,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0,
- 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,194,187, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-192, 13,188, 2, 0, 0, 0, 0, 32,191,187, 2, 0, 0, 0, 0,176,179,187, 2, 0, 0, 0, 0, 80,179,187, 2, 0, 0, 0, 0,
- 16,180,187, 2, 0, 0, 0, 0,208,177,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0,147, 1, 0, 0, 4, 4, 96, 1,148, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,255,187, 2, 0, 0, 0, 0, 96, 12,188, 2, 0, 0, 0, 0,192,195,187, 2, 0, 0, 0, 0, 48,197,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,192,195,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,197,187, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,176, 67,
- 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65,
- 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 96, 1,
- 31, 0, 96, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 33, 6, 0, 0,128, 7, 0, 0,117, 1, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48,197,187, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192,195,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,
-254,127,177,195, 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 96, 1,
-117, 1, 79, 1, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 1,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 1, 0, 0,128,255,187, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 16, 5,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192, 0,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 2,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,159,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,157,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,
+227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,
- 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48, 2,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 3,188, 2, 0, 0, 0, 0,192, 0,188, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,128,160,154, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,160,167,154, 26,
+ 1, 0, 0, 0, 32,155,154, 26, 1, 0, 0, 0, 96,156,154, 26, 1, 0, 0, 0, 32,159,154, 26, 1, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,
-112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160, 3,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66,
- 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,
-112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,161,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 16,163,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,
- 16, 5,188, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 96, 12,188, 2, 0, 0, 0, 0,128,255,187, 2, 0, 0, 0, 0,
-192, 0,188, 2, 0, 0, 0, 0,160, 3,188, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,163,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,161,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 64, 6,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 7,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1,
- 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,164,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112,164,154, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,
+129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193,
+ 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65,
+ 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,176, 7,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 6,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0,160,167,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,160,154, 26,
+ 1, 0, 0, 0,176,161,154, 26, 1, 0, 0, 0, 16,163,154, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0,169,154, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,224,135,154, 26, 1, 0, 0, 0, 80,111,154, 26,
+ 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,155, 1, 0, 0, 1, 1, 27, 3,156, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 80,189,154, 26, 1, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,224,169,154, 26,
+ 1, 0, 0, 0,192,184,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,101,199, 25,
+ 1, 0, 0, 0, 96,109,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,169,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 64,171,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 3, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 27, 3, 26, 0, 27, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,171,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,160,172,154, 26, 1, 0, 0, 0,224,169,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,130, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,172,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0,174,154, 26, 1, 0, 0, 0, 64,171,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,174,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192,184,154, 26, 1, 0, 0, 0,160,172,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,175,154, 26,
+ 1, 0, 0, 0,144,191,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,175,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,240,176,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 9,188, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0, 32, 9,188, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,240,176,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,178,154, 26, 1, 0, 0, 0, 96,175,154, 26,
+ 1, 0, 0, 0, 64,242, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
+101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
+101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,
+108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236,253,163, 0, 58, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,178,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 16,180,154, 26, 1, 0, 0, 0,240,176,154, 26, 1, 0, 0, 0,176,203,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96, 12,188, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5,188, 2, 0, 0, 0, 0, 64, 6,188, 2, 0, 0, 0, 0,
-176, 7,188, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,153,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 13,188, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-224, 51,188, 2, 0, 0, 0, 0,224,194,187, 2, 0, 0, 0, 0,176,176,187, 2, 0, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0,
- 80,179,187, 2, 0, 0, 0, 0,176,179,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,
- 0, 0, 0, 0,147, 1, 0, 0, 17, 17, 32, 6,148, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 20,188, 2, 0, 0, 0, 0,208, 50,188, 2, 0, 0, 0, 0,160, 14,188, 2, 0, 0, 0, 0, 32, 19,188, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 16,180,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,181,154, 26, 1, 0, 0, 0,128,178,154, 26,
+ 1, 0, 0, 0, 16,206,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,160, 14,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 16,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65,
- 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 6,
- 26, 0, 32, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 6, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16, 16,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 19,188, 2, 0, 0, 0, 0,
-160, 14,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,180,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67,
- 0, 0,180,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,
-122, 1,203, 0,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-220, 0,122, 1, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,181,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48,183,154, 26, 1, 0, 0, 0, 16,180,154, 26, 1, 0, 0, 0,144,215,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32, 19,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 16,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67,228, 46, 44,195,220,133,181, 68,
- 10, 89,199,194, 66,214,169, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5,
-122, 1, 51, 5,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-220, 0, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 5,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,105,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 72, 0, 0, 0,144, 20,188, 2, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,112, 25,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32, 21,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 22,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65,
- 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3,
- 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 48,183,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,191,158, 26, 1, 0, 0, 0,160,181,154, 26,
+ 1, 0, 0, 0,240,217,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
+ 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
+ 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,
+105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 7, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144, 22,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 24,188, 2, 0, 0, 0, 0,
- 32, 21,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,191,158, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,183,154, 26, 1, 0, 0, 0,112,208,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0, 24,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 22,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64,
- 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,192,184,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,
+ 27, 6, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,130, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,168, 0, 0, 0,112, 25,188, 2, 0, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 64, 29,188, 2, 0, 0, 0, 0,
-144, 20,188, 2, 0, 0, 0, 0, 32, 21,188, 2, 0, 0, 0, 0, 0, 24,188, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,186,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0, 32,186,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 90, 66,109, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63,
+ 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62,
+ 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188,
+ 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62,
+ 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63, 18,153,150,191,244,250, 39,191,
+ 8,165, 39,191,170,164,167, 63,166, 69,148, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,171,109, 84, 64, 8,108,228,190,
+ 50,247,227,190,222,212, 27,191,129,191,178,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 64,237,196,187,
+ 0, 0, 96,179, 19, 84,175,189,227,158,172, 61, 24, 80,119, 62, 0, 0,144, 50,254,120, 21,194,182, 5, 2, 66, 69,136,213,193,
+239,214,159,192, 5, 39, 19, 66, 15,174,255,193,216,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63,
+ 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62,
+ 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63, 18,153,150,191,244,250, 39,191,
+ 8,165, 39,191,170,164,167, 63,166, 69,148, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,171,109, 84, 64, 8,108,228,190,
+ 50,247,227,190,222,212, 27,191,129,191,178,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96, 26,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 27,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65,
- 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3,
- 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190,
+ 3, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,208, 27,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 26,188, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,
-176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,
-122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0, 64, 29,188, 2, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240, 34,188, 2, 0, 0, 0, 0,
-112, 25,188, 2, 0, 0, 0, 0, 96, 26,188, 2, 0, 0, 0, 0,208, 27,188, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190,
+ 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,189,154, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0,112,193,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 5,159, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,190,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,192,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0,192, 59, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
+ 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,239, 2, 26, 0,239, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,239, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,192,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176,190,154, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,
+146,211, 11, 68,174,122,214, 66, 82, 97,202, 67,222, 2, 0, 0,239, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,
+221, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4,
+ 0, 0,239, 2,122, 1,222, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,239, 2,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,112,193,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240,198,154, 26,
+ 1, 0, 0, 0, 80,189,154, 26, 1, 0, 0, 0,176,190,154, 26, 1, 0, 0, 0, 16,192,154, 26, 1, 0, 0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160, 30,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 32,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 16, 32,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 33,188, 2, 0, 0, 0, 0,160, 30,188, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+242,199, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,208,194,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,196,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
+ 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68,
+ 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5,
+ 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 48,196,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,197,154, 26, 1, 0, 0, 0,208,194,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,
-112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-128, 33,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 32,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66,
- 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
-112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,
-240, 34,188, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,144, 46,188, 2, 0, 0, 0, 0, 64, 29,188, 2, 0, 0, 0, 0,
-160, 30,188, 2, 0, 0, 0, 0,128, 33,188, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144,197,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,196,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
+ 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32, 36,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 37,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4,
- 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+240, 0, 0, 0,240,198,154, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,112,193,154, 26,
+ 1, 0, 0, 0,208,194,154, 26, 1, 0, 0, 0,144,197,154, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144, 37,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 39,188, 2, 0, 0, 0, 0,
- 32, 36,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
-255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0,
- 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0, 39,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 40,188, 2, 0, 0, 0, 0,
-144, 37,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,
-120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112, 40,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 41,188, 2, 0, 0, 0, 0,
- 0, 39,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,
-122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,200,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,201,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
+ 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,224, 41,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112, 40,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,201,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,200,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
+ 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
+ 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,198,154, 26, 1, 0, 0, 0, 32,200,154, 26, 1, 0, 0, 0,128,201,154, 26, 1, 0, 0, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 43,188, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0, 80, 43,188, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,
-184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63,
- 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,
-176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190,
- 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,
-222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,
-129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,
-224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67,
- 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,
-184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63,
- 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,
-222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,
-129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,
-237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,229,154, 26,
+ 1, 0, 0, 0, 0,169,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,208,109,154, 26,
+ 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,157, 1, 0, 0,
+ 38, 4, 0, 0, 16, 16, 28, 6,138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 82, 3, 1, 0, 0, 0,128,207,154, 26,
+ 1, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0,192,204,154, 26, 1, 0, 0, 0, 32,206,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 34,228, 28, 1, 0, 0, 0,128,207,199, 25, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,192,204,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,206,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,195, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 6, 26, 0, 28, 6,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 6, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 7, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32,206,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,204,154, 26,
+ 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68, 0,108,197,190,
+174, 24, 0, 68, 11, 6, 0, 0, 28, 6, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
+ 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 28, 6,112, 2, 11, 6,
+ 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 6, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,112, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0,128,207,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0,213,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144, 46,188, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0,208, 50,188, 2, 0, 0, 0, 0,240, 34,188, 2, 0, 0, 0, 0, 32, 36,188, 2, 0, 0, 0, 0,
-224, 41,188, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 47,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 96, 49,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,208,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,210,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 49,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 47,188, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,
-112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2,
- 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,208, 50,188, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,144, 46,188, 2, 0, 0, 0, 0,240, 47,188, 2, 0, 0, 0, 0, 96, 49,188, 2, 0, 0, 0, 0,
- 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,210,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,211,154, 26, 1, 0, 0, 0,224,208,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224, 51,188, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
- 64, 81,188, 2, 0, 0, 0, 0,192, 13,188, 2, 0, 0, 0, 0,112,180,187, 2, 0, 0, 0, 0,208,180,187, 2, 0, 0, 0, 0,
-144,178,187, 2, 0, 0, 0, 0, 16,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,
-149, 1, 0, 0, 21, 4, 0, 0, 9, 9, 72, 2,129, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160, 55,188, 2, 0, 0, 0, 0,224, 79,188, 2, 0, 0, 0, 0,192, 52,188, 2, 0, 0, 0, 0, 48, 54,188, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,192, 52,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 54,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 18, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65,
- 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 72, 2,
- 26, 0, 72, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 57, 5, 0, 0,128, 7, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,211,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,210,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
+ 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48, 54,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 52,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68,
- 0, 0, 0, 0,176,222, 8, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 2, 0, 0, 0, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 72, 2,
-103, 2, 72, 2,103, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 57, 5, 0, 0,128, 7, 0, 0,175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 2,103, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 0,213,154, 26,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,224,154, 26, 1, 0, 0, 0,128,207,154, 26, 1, 0, 0, 0,224,208,154, 26,
+ 1, 0, 0, 0,160,211,154, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,144, 2, 0, 0,160, 55,188, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 80, 61,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 48,214,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,215,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144,215,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,216,154, 26, 1, 0, 0, 0, 48,214,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0,
+ 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2,
+ 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,240,216,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,218,154, 26, 1, 0, 0, 0,144,215,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,
+102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 80,218,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,219,154, 26, 1, 0, 0, 0,240,216,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196,
+ 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,
+104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,176,219,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,218,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,221,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0, 16,221,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188,
+ 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62,
+ 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,
+184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188,
+ 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,
+136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,
+184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190,
+ 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 58,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-224, 59,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,182, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,161, 67, 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,108, 1, 26, 0,108, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,108, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 64,224,154, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0, 0,213,154, 26, 1, 0, 0, 0, 48,214,154, 26, 1, 0, 0, 0,176,219,154, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 59,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,112, 58,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,173, 67, 0, 0,210,195, 0, 0, 0, 0, 91, 1, 0, 0,108, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0,
- 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3,
- 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1,164, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,108, 1,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,225,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,227,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
+ 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 61,188, 2, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,
- 0, 67,188, 2, 0, 0, 0, 0,160, 55,188, 2, 0, 0, 0, 0,112, 58,188, 2, 0, 0, 0, 0,224, 59,188, 2, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,227,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160,225,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
+ 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
+ 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,224,154, 26, 1, 0, 0, 0,160,225,154, 26, 1, 0, 0, 0, 0,227,154, 26, 1, 0, 0, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 62,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,192, 62,188, 2, 0, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0,
- 13, 0, 0, 0, 13, 0, 0, 0, 16, 63,188, 2, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16, 63,188, 2, 0, 0, 0, 0,
-217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-144,113,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-240,123,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 16,119,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 95,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32, 64,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 65,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,162, 67, 0, 0, 0, 0, 0, 0,240, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,229,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,240,110,154, 26,
+ 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,
+155, 1, 0, 0, 6, 6, 0, 3,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,255, 81, 3, 1, 0, 0, 0, 96,234,154, 26,
+ 1, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0, 64,230,154, 26, 1, 0, 0, 0, 0,233,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,190,228, 28, 1, 0, 0, 0, 32,210,229, 28, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 64,230,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,231,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 68, 1, 30, 0, 68, 1, 30, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0,
-252, 3, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,160,231,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,233,154, 26, 1, 0, 0, 0, 64,230,154, 26,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 65,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,153, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,254,127,153, 67,253,127,198,195, 0, 0, 0, 0,
- 51, 1, 0, 0, 68, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 50, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 68, 1,159, 1, 51, 1,141, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0,
- 93, 2, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,159, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,
- 0, 67,188, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144, 72,188, 2, 0, 0, 0, 0, 80, 61,188, 2, 0, 0, 0, 0,
- 32, 64,188, 2, 0, 0, 0, 0,144, 65,188, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 1, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 0,233,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,231,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,130,190,
+ 0,128,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255, 2, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,130, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 68,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,176, 69,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67,
- 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0,
- 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+168, 0, 0, 0, 96,234,154, 26, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 0,238,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 64,235,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,236,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,160,236,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,235,154, 26,
+ 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66,
+ 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
+ 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,
+104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 69,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32, 71,188, 2, 0, 0, 0, 0, 64, 68,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 0,238,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,128,243,154, 26, 1, 0, 0, 0, 96,234,154, 26,
+ 1, 0, 0, 0, 64,235,154, 26, 1, 0, 0, 0,160,236,154, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 71,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 69,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0,
- 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,
-105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,239,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,240,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,144, 72,188, 2, 0, 0, 0, 0,
-163, 0, 0, 0, 1, 0, 0, 0,224, 79,188, 2, 0, 0, 0, 0, 0, 67,188, 2, 0, 0, 0, 0, 64, 68,188, 2, 0, 0, 0, 0,
- 32, 71,188, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,240,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,242,154, 26, 1, 0, 0, 0, 96,239,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192, 73,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 75,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48, 75,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 73,188, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,242,154, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
+ 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,128,243,154, 26,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,192,254,154, 26, 1, 0, 0, 0, 0,238,154, 26, 1, 0, 0, 0, 96,239,154, 26,
+ 1, 0, 0, 0, 32,242,154, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0,
- 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 76,188, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
-160, 76,188, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194,
- 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,176,244,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,246,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 16,246,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,247,154, 26, 1, 0, 0, 0,176,244,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0,
+ 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2,
+ 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,112,247,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,248,154, 26, 1, 0, 0, 0, 16,246,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,
+102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,208,248,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,250,154, 26, 1, 0, 0, 0,112,247,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196,
+ 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,
+104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,224, 79,188, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,144, 72,188, 2, 0, 0, 0, 0,192, 73,188, 2, 0, 0, 0, 0, 48, 75,188, 2, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 48,250,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,248,154, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 64, 81,188, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,117,188, 2, 0, 0, 0, 0,
-224, 51,188, 2, 0, 0, 0, 0, 48,181,187, 2, 0, 0, 0, 0,144,181,187, 2, 0, 0, 0, 0,208,180,187, 2, 0, 0, 0, 0,
-112,180,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,149, 1, 0, 0, 21, 4, 0, 0,
- 1, 1,251, 3,129, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,102,188, 2, 0, 0, 0, 0,
- 80,116,188, 2, 0, 0, 0, 0, 32, 82,188, 2, 0, 0, 0, 0,160, 97,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32, 82,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 83,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,126, 68, 0, 0, 0, 0, 0, 0,208, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,250, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 3, 26, 0,251, 3, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,
-149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 83,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 85,188, 2, 0, 0, 0, 0, 32, 82,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0,
-175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,103, 2, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0, 85,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 86,188, 2, 0, 0, 0, 0,144, 83,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,
-175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112, 86,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 97,188, 2, 0, 0, 0, 0, 0, 85,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,254,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,209,195, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,180, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,180, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,181, 1,163, 0,163, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0,
-175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160, 97,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 86,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,
-175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,103, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 99,188, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
- 16, 99,188, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,248, 2,131, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,248, 2,131, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,130, 29,122, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,248, 2,131, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,221, 57, 80, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,251,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0,144,251,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188,
+ 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62,
+ 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,
+184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188,
+ 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,
+136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,
+184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190,
+ 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
- 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,102,188, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
-144,106,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,176,103,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,105,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65,
- 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6,
- 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192,254,154, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0,128,243,154, 26, 1, 0, 0, 0,176,244,154, 26, 1, 0, 0, 0, 48,250,154, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 0,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 1,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
+ 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32,105,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-176,103,188, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,
-160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,
-107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 1,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 0,155, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
+ 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
+ 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,144,106,188, 2, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 64,112,188, 2, 0, 0, 0, 0,
- 80,102,188, 2, 0, 0, 0, 0,176,103,188, 2, 0, 0, 0, 0, 32,105,188, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,254,154, 26, 1, 0, 0, 0, 32, 0,155, 26, 1, 0, 0, 0,128, 1,155, 26, 1, 0, 0, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,192,112,155, 26,
+ 1, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,
+102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0, 80, 16,155, 26,
+ 1, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 60, 48, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 6,155, 26,
+ 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,208, 5,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 6,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 7,155, 26,
+ 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 80, 7,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 8,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 36, 6, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,208, 8,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 68, 3,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 8,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 9,155, 26,
+ 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,208, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 9,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 36, 6, 96, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0, 48, 6,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0,240, 6,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,176, 7,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,176, 7,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 16, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0, 16, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,112, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0,112, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,208, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,208, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,208, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 48, 9,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 48, 9,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0,144, 9,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80, 16,155, 26, 1, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,144, 9,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 16,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,144, 9,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 80, 20,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0,208, 5,155, 26,
+ 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3,
+ 1, 0, 0, 0, 64,112,155, 26, 1, 0, 0, 0, 64,112,155, 26, 1, 0, 0, 0,144, 17,155, 26, 1, 0, 0, 0,240, 18,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89,158, 26, 1, 0, 0, 0,240, 94,158, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 17,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 18,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3,
+ 1, 0, 0, 0, 16,248,158, 26, 1, 0, 0, 0, 16,248,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 79,158, 26, 1, 0, 0, 0,240, 9,152, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 18,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144, 17,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240,107,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,109,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80, 20,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 48,155, 26,
+ 1, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,208, 8,155, 26,
+ 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+ 67, 3, 0, 0, 4, 4, 92, 1, 68, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,144, 39,155, 26,
+ 1, 0, 0, 0,192, 46,155, 26, 1, 0, 0, 0, 48, 21,155, 26, 1, 0, 0, 0,144, 22,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,158, 26, 1, 0, 0, 0, 48,221, 93, 3, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 48, 21,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 22,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 67, 0, 0, 0, 0,
+ 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 92, 1, 31, 0, 92, 1,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,
+128, 7, 0, 0, 37, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 31, 0,
+ 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0,112,205, 0, 28,
+ 1, 0, 0, 0,112,205, 0, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,158, 26,
+ 1, 0, 0, 0,208, 84,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144, 22,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 67, 0,128, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,252,191, 68,196,
+ 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 92, 1, 37, 3, 75, 1,
+ 19, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 70,224, 25, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,
+128, 7, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 37, 3,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0,240,156,158, 26,
+ 1, 0, 0, 0, 32, 1, 1, 28, 1, 0, 0, 0,240, 23,155, 26, 1, 0, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,240, 86,158, 26,
+ 1, 0, 0, 0,128,215,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,240, 23,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 25,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 13, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
+111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
+111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 74, 1, 36, 0, 0, 0, 0, 0,
+ 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 25,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,240, 23,155, 26, 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,135,255, 74, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96,109,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,110,188, 2, 0, 0, 0, 0,240,107,188, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 28,155, 26, 1, 0, 0, 0,128, 25,155, 26,
+ 1, 0, 0, 0,176,131,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,
+121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,
+121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 74, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 28,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48, 30,155, 26, 1, 0, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,
-112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-208,110,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,109,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66,
- 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
-112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,165,254, 74, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,
- 64,112,188, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 80,116,188, 2, 0, 0, 0, 0,144,106,188, 2, 0, 0, 0, 0,
-240,107,188, 2, 0, 0, 0, 0,208,110,188, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 48, 30,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 31,155, 26, 1, 0, 0, 0,160, 28,155, 26,
+ 1, 0, 0, 0,112,138,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
+116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
+116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,
+103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 74, 1, 58, 0, 20, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 31,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80, 33,155, 26, 1, 0, 0, 0, 48, 30,155, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112,113,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,114,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,213,253, 74, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,224,114,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,113,188, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 80, 33,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 34,155, 26, 1, 0, 0, 0,192, 31,155, 26,
+ 1, 0, 0, 0, 48,145,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,
+116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,
+116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0, 80,116,188, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64,112,188, 2, 0, 0, 0, 0,112,113,188, 2, 0, 0, 0, 0,224,114,188, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 74, 1,105, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 34,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112, 36,155, 26, 1, 0, 0, 0, 80, 33,155, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 96,117,188, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 81,188, 2, 0, 0, 0, 0,240,178,187, 2, 0, 0, 0, 0, 48,178,187, 2, 0, 0, 0, 0,144,181,187, 2, 0, 0, 0, 0,
- 48,181,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,149, 1, 0, 0, 21, 4, 0, 0,
- 3, 3, 60, 1,129, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,121,188, 2, 0, 0, 0, 0,
- 96,148,188, 2, 0, 0, 0, 0, 64,118,188, 2, 0, 0, 0, 0,176,119,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 64,118,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,119,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,158, 67, 0, 0, 0, 0, 0, 0,208, 65,
+ 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 60, 1, 26, 0, 60, 1, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,
-149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 60,253, 74, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-176,119,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,118,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,149, 67, 0, 64, 21,196, 0, 0, 0, 0,
- 43, 1, 0, 0, 60, 1, 0, 0, 18, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 42, 1, 0, 0, 18, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,103, 2, 43, 1, 85, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,
-175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,103, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,112, 36,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,224, 34,155, 26,
+ 1, 0, 0, 0,224,152,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
+115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
+115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,
+105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 74, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32,121,188, 2, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 96,134,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 36,155, 26, 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 12,253, 74, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,122,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,
-144,122,188, 2, 0, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,224,122,188, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,208, 0, 0, 0,224,122,188, 2, 0, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,113,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,123,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16,119,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 48, 95,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,123,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 96,125,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 68, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 1, 0, 0,144, 39,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,192, 46,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,125,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-208,126,188, 2, 0, 0, 0, 0,240,123,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,182, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,126,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64,128,188, 2, 0, 0, 0, 0, 96,125,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,192, 88,158, 26,
+ 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 40,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 42,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,128,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176,129,188, 2, 0, 0, 0, 0,208,126,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,129,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64,128,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 42,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 40,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,212, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0,
+ 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32,131,188, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 32,131,188, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 43,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 43,155, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 15,150, 72, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0,
+ 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
-159, 55,242, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 46,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144, 39,155, 26, 1, 0, 0, 0,208, 40,155, 26, 1, 0, 0, 0, 48, 42,155, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 96,134,188, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160,138,188, 2, 0, 0, 0, 0, 32,121,188, 2, 0, 0, 0, 0,
-240,123,188, 2, 0, 0, 0, 0,176,129,188, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,135,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48,137,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0, 32, 48,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0, 80, 20,155, 26,
+ 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,176, 7,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 15, 15, 36, 6,
+ 96, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,236, 81, 3, 1, 0, 0, 0,192, 51,155, 26, 1, 0, 0, 0,176, 58,155, 26,
+ 1, 0, 0, 0, 0, 49,155, 26, 1, 0, 0, 0, 96, 50,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 93,158, 26, 1, 0, 0, 0, 0,210, 0, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 49,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 50,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 36, 6, 26, 0, 36, 6, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0,163,158, 26, 1, 0, 0, 0, 0,163,158, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,217,158, 26, 1, 0, 0, 0,144, 37,159, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 50,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,155, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 35, 6, 0, 0, 18, 0, 0, 0, 69, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 36, 6, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 26, 0, 0, 0,
+ 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 70, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 39,159, 26, 1, 0, 0, 0,240, 94, 1, 28,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192, 51,155, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,176, 58,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,137,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,135,188, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160,138,188, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0, 80,144,188, 2, 0, 0, 0, 0, 96,134,188, 2, 0, 0, 0, 0,192,135,188, 2, 0, 0, 0, 0,
- 48,137,188, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 52,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 54,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,140,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-112,141,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 54,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 52,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,141,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-224,142,188, 2, 0, 0, 0, 0, 0,140,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 55,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 55,155, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0,
+ 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,142,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,112,141,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 80,144,188, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
- 96,148,188, 2, 0, 0, 0, 0,160,138,188, 2, 0, 0, 0, 0, 0,140,188, 2, 0, 0, 0, 0,224,142,188, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,176, 58,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 51,155, 26, 1, 0, 0, 0,192, 52,155, 26, 1, 0, 0, 0, 32, 54,155, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,145,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,240,146,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0, 32, 48,155, 26,
+ 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,208, 8,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 38, 4, 0, 0, 3, 3, 92, 1,
+226, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0,176, 63,155, 26, 1, 0, 0, 0, 16, 76,155, 26,
+ 1, 0, 0, 0,240, 60,155, 26, 1, 0, 0, 0, 80, 62,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176, 95, 1, 28, 1, 0, 0, 0,144, 96, 1, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 60,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 62,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 91, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 92, 1, 26, 0, 92, 1, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 13, 4, 0, 0,
+ 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 96,168,130, 26, 1, 0, 0, 0, 96,168,130, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 98, 1, 28, 1, 0, 0, 0, 32, 99, 1, 28,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 62,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 60,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,165, 67, 0, 0, 54,195, 0, 0, 0, 0, 75, 1, 0, 0,
+ 92, 1, 0, 0, 18, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 74, 1, 0, 0, 18, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 92, 1,200, 0, 75, 1,182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,
+ 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,200, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0,160, 4,131, 26, 1, 0, 0, 0,160, 4,131, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,101, 1, 28, 1, 0, 0, 0,192,233,158, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 63,155, 26,
+ 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,224, 68,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 51, 39, 26,
+ 1, 0, 0, 0,192, 51, 39, 26, 1, 0, 0, 0, 80, 80, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 80, 80, 94, 3,
+ 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16, 65,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+208, 0, 0, 0, 16, 65,155, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 66,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 67,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55,
+ 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67,
+ 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 67,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 66,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,
+205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4,
+ 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,224, 68,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 16, 76,155, 26,
+ 1, 0, 0, 0,176, 63,155, 26, 1, 0, 0, 0, 32, 66,155, 26, 1, 0, 0, 0,128, 67,155, 26, 1, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32, 70,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 71,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,
+108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128, 71,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 70,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,146,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,145,188, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,148,188, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,144,188, 2, 0, 0, 0, 0,128,145,188, 2, 0, 0, 0, 0,
-240,146,188, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,
+108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 72,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0,224, 72,155, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,
+115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 0,150,188, 2, 0, 0, 0, 0,
-190, 0, 0, 0, 1, 0, 0, 0,176,226,189, 2, 0, 0, 0, 0,160,175,187, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 80,114,111,112,101,114,116,105,101,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,151,188, 2, 0, 0, 0, 0,176,156,188, 2, 0, 0, 0, 0,
- 16,157,188, 2, 0, 0, 0, 0, 96,165,188, 2, 0, 0, 0, 0,208,165,188, 2, 0, 0, 0, 0,208,155,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 16,151,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,151,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,151,188, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,208,151,188, 2, 0, 0, 0, 0, 16,151,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,151,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 48,152,188, 2, 0, 0, 0, 0,112,151,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 48,152,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,152,188, 2, 0, 0, 0, 0,
-208,151,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-144,152,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0, 48,152,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 80,153,188, 2, 0, 0, 0, 0,144,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,153,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-176,153,188, 2, 0, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 6, 24, 4, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,176,153,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,154,188, 2, 0, 0, 0, 0,
- 80,153,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 16,154,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,154,188, 2, 0, 0, 0, 0,176,153,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,154,188, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,208,154,188, 2, 0, 0, 0, 0, 16,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-104, 1, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,154,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 48,155,188, 2, 0, 0, 0, 0,112,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 48,155,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,155,188, 2, 0, 0, 0, 0,
-208,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-144,155,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,155,188, 2, 0, 0, 0, 0, 48,155,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,136, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,155,188, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 80,156,188, 2, 0, 0, 0, 0,144,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-136, 4, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,156,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-176,156,188, 2, 0, 0, 0, 0,240,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,176,156,188, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 16,157,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,157,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,151,188, 2, 0, 0, 0, 0,208,151,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-128,157,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,157,188, 2, 0, 0, 0, 0, 16,157,188, 2, 0, 0, 0, 0,
-112,151,188, 2, 0, 0, 0, 0,144,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-240,157,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,158,188, 2, 0, 0, 0, 0,128,157,188, 2, 0, 0, 0, 0,
-208,151,188, 2, 0, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 96,158,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,158,188, 2, 0, 0, 0, 0,240,157,188, 2, 0, 0, 0, 0,
-144,152,188, 2, 0, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-208,158,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,159,188, 2, 0, 0, 0, 0, 96,158,188, 2, 0, 0, 0, 0,
- 16,151,188, 2, 0, 0, 0, 0,144,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,159,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,159,188, 2, 0, 0, 0, 0,208,158,188, 2, 0, 0, 0, 0,
- 48,152,188, 2, 0, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,159,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,160,188, 2, 0, 0, 0, 0, 64,159,188, 2, 0, 0, 0, 0,
- 16,151,188, 2, 0, 0, 0, 0, 16,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 32,160,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,160,188, 2, 0, 0, 0, 0,176,159,188, 2, 0, 0, 0, 0,
-144,152,188, 2, 0, 0, 0, 0,112,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-144,160,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,161,188, 2, 0, 0, 0, 0, 32,160,188, 2, 0, 0, 0, 0,
- 16,154,188, 2, 0, 0, 0, 0,112,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 0,161,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,161,188, 2, 0, 0, 0, 0,144,160,188, 2, 0, 0, 0, 0,
- 16,154,188, 2, 0, 0, 0, 0,208,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-112,161,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,161,188, 2, 0, 0, 0, 0, 0,161,188, 2, 0, 0, 0, 0,
-112,154,188, 2, 0, 0, 0, 0, 48,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-224,161,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,162,188, 2, 0, 0, 0, 0,112,161,188, 2, 0, 0, 0, 0,
-208,154,188, 2, 0, 0, 0, 0, 48,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 80,162,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,162,188, 2, 0, 0, 0, 0,224,161,188, 2, 0, 0, 0, 0,
-208,154,188, 2, 0, 0, 0, 0,144,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-192,162,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,163,188, 2, 0, 0, 0, 0, 80,162,188, 2, 0, 0, 0, 0,
- 48,155,188, 2, 0, 0, 0, 0,240,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 48,163,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,163,188, 2, 0, 0, 0, 0,192,162,188, 2, 0, 0, 0, 0,
-144,155,188, 2, 0, 0, 0, 0,240,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-160,163,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,164,188, 2, 0, 0, 0, 0, 48,163,188, 2, 0, 0, 0, 0,
-144,155,188, 2, 0, 0, 0, 0, 80,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 16,164,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,164,188, 2, 0, 0, 0, 0,160,163,188, 2, 0, 0, 0, 0,
-240,155,188, 2, 0, 0, 0, 0,176,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-128,164,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,164,188, 2, 0, 0, 0, 0, 16,164,188, 2, 0, 0, 0, 0,
- 80,156,188, 2, 0, 0, 0, 0,176,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-240,164,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,165,188, 2, 0, 0, 0, 0,128,164,188, 2, 0, 0, 0, 0,
-240,152,188, 2, 0, 0, 0, 0,176,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 96,165,188, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,164,188, 2, 0, 0, 0, 0,
- 48,152,188, 2, 0, 0, 0, 0, 80,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-208,165,188, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,169,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144,152,188, 2, 0, 0, 0, 0,112,151,188, 2, 0, 0, 0, 0,208,151,188, 2, 0, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0,
- 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,226,189, 2, 0, 0, 0, 0, 32,226,189, 2, 0, 0, 0, 0,
-176,166,188, 2, 0, 0, 0, 0, 32,168,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,166,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32,168,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,168,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,166,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69,
- 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0,
- 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0,
- 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 49, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,169,188, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 64,225,188, 2, 0, 0, 0, 0,208,165,188, 2, 0, 0, 0, 0, 80,156,188, 2, 0, 0, 0, 0,
-176,156,188, 2, 0, 0, 0, 0,240,152,188, 2, 0, 0, 0, 0, 48,152,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 25, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,104, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,208,192,188, 2, 0, 0, 0, 0, 48,224,188, 2, 0, 0, 0, 0,112,170,188, 2, 0, 0, 0, 0,
-224,171,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,170,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-224,171,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65,
- 0, 0, 0, 0, 0, 0,180, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,104, 1, 31, 0,104, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 25, 6, 0, 0,128, 7, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,171,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,112,170,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,171, 67, 0, 64,121,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 3,128,171, 67, 5, 64,121,196, 0, 0, 0, 0, 87, 1, 0, 0,104, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 86, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,104, 1,247, 3, 87, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 25, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,104, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,208,192,188, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
-240,196,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 6, 0, 0, 0,
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16,194,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,195,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65,
- 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1,
- 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16, 76,155, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 68,155, 26, 1, 0, 0, 0, 32, 70,155, 26, 1, 0, 0, 0,128, 71,155, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 16, 8,155, 26,
+ 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 97, 0, 0, 0,
+ 38, 4, 0, 0, 1, 1, 36, 6,198, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 32,107,155, 26,
+ 1, 0, 0, 0, 64,111,155, 26, 1, 0, 0, 0, 80, 78,155, 26, 1, 0, 0, 0,144,102,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,137, 77, 3, 1, 0, 0, 0, 32,137, 77, 3, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 80, 78,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 79,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 36, 6, 26, 0, 36, 6,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 6, 0, 0, 97, 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 26, 0,
+ 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0,128,177, 88, 23,
+ 1, 0, 0, 0,128,177, 88, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,164,156, 25,
+ 1, 0, 0, 0, 64, 11,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,176, 79,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 87,155, 26, 1, 0, 0, 0, 80, 78,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 72,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 72,196,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 51, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 51, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 52, 3,143, 0,
+ 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+159, 0, 0, 0,243, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 52, 3,
+ 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0,128,250, 88, 23,
+ 1, 0, 0, 0, 32,117, 82, 23, 1, 0, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,192, 85,155, 26, 1, 0, 0, 0, 96, 76, 78, 3,
+ 1, 0, 0, 0,160, 15,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 82,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,244, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0,
+ 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 82,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48, 84,155, 26, 1, 0, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,176,118,200, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,128,195,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16,194,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67,
- 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1,
- 0, 4,144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 48, 84,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 85,155, 26, 1, 0, 0, 0,160, 82,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+111,108,115, 95,109,101,115,104,101,100,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+111,108,115, 95,109,101,115,104,101,100,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,101,115,104, 32, 84,111,111,108,115, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252,143, 0,244, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,144, 2, 0, 0,240,196,188, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 48,210,188, 2, 0, 0, 0, 0,
-208,192,188, 2, 0, 0, 0, 0, 16,194,188, 2, 0, 0, 0, 0,128,195,188, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 85,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 84,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,
+105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,
+105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77,101,115,104, 32, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,124,252,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 80, 87,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 90,155, 26, 1, 0, 0, 0,176, 79,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,
+102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+159, 0, 0, 0,123, 0, 0, 0,242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0,
+ 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 16,212,130, 26,
+ 1, 0, 0, 0, 16,212,130, 26, 1, 0, 0, 0,176, 88,155, 26, 1, 0, 0, 0,176, 88,155, 26, 1, 0, 0, 0,160,217,205, 25,
+ 1, 0, 0, 0, 0, 20,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,176, 88,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,
+115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,
+115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0,116, 32, 77,
+111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0,
+ 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 90,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,144,102,155, 26, 1, 0, 0, 0, 80, 87,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,143,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,102,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+171, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,172, 3,163, 0,154, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 35, 6, 0, 0,123, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 91,155, 26,
+ 1, 0, 0, 0,144, 56,136, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 91,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48, 93,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 48, 93,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 94,155, 26, 1, 0, 0, 0,160, 91,155, 26,
+ 1, 0, 0, 0, 64,242, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
+101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
+101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,
+108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,251,163, 0, 58, 0, 0, 0, 0, 0,
+ 4, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 94,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80, 96,155, 26, 1, 0, 0, 0, 48, 93,155, 26, 1, 0, 0, 0,176,203,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 80, 96,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 97,155, 26, 1, 0, 0, 0,192, 94,155, 26,
+ 1, 0, 0, 0, 16,206,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,251,163, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 97,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112, 99,155, 26, 1, 0, 0, 0, 80, 96,155, 26, 1, 0, 0, 0,144,215,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,199,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 48,201,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,184,251,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,201,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160,202,188, 2, 0, 0, 0, 0,192,199,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,112, 99,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,101,155, 26, 1, 0, 0, 0,224, 97,155, 26,
+ 1, 0, 0, 0,240,217,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
+ 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
+ 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,
+105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,251,163, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 7, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,202,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 16,204,188, 2, 0, 0, 0, 0, 48,201,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,101,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,144, 56,136, 26, 1, 0, 0, 0,112, 99,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115,112,108, 97,121,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115,112,108, 97,121,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,204,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-128,205,188, 2, 0, 0, 0, 0,160,202,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77,101,115,104, 32, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 23,252,163, 0,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,205,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16,204,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,144, 56,136, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101,155, 26,
+ 1, 0, 0, 0,112,208,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0,
+ 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,102,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 90,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 35, 6, 0, 0,123, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 5,172, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 26,159, 26, 1, 0, 0, 0, 0,239,158, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,103,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,103,155, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76,210, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 74,215, 76,190,
+ 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
+ 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
+ 0, 0,128, 63,180,157,229, 62,161,248, 40,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63, 59,228,162, 62, 26, 63,185, 62,
+ 35, 44,185, 62,147,180,109,188,219, 57,188, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,
+214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 48,185, 70,188, 0, 0, 80,180,129,100,122,190, 36, 98,241, 61,159,118, 11, 63,
+ 0, 0,140, 51, 67,108,117,194,185,204,216, 65,105,156, 5,194,212,247,159,192,235, 62,114, 66, 61,254,213,193,158,225, 3, 66,
+ 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63,180,157,229, 62,161,248, 40,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63, 59,228,162, 62, 26, 63,185, 62,
+ 35, 44,185, 62,147,180,109,188,219, 57,188, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0,188,189,169, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 32,107,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64,111,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240,206,188, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,206,188, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53,
-215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 17, 39, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,108,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,109,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,
+126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 34,153, 65, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,109,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,108,155, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64,111,155, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,107,155, 26, 1, 0, 0, 0,128,108,155, 26,
+ 1, 0, 0, 0,224,109,155, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 48,210,188, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,112,214,188, 2, 0, 0, 0, 0,240,196,188, 2, 0, 0, 0, 0,
-192,199,188, 2, 0, 0, 0, 0,128,205,188, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,211,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0,213,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,192,112,155, 26,
+ 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,176,118,155, 26,
+ 1, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,128, 7,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,109, 60, 48, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,114,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,115,155, 26,
+ 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0,240,114,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,115,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,116,155, 26,
+ 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,156, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0,112,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,117,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,156, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,118,155, 26,
+ 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,118,155, 26, 1, 0, 0, 0,240,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,118,155, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 60, 1, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0,144,114,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 80,115,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,176,115,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,115,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 16,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,112,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0,208,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,208,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 16,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,208,116,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 48,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 48,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0, 48,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,240,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0,240,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0,144,117,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,118,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 80,118,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,118,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,176,118,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,176,118,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 48,114,155, 26,
+ 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3,
+ 1, 0, 0, 0, 48, 38,156, 26, 1, 0, 0, 0, 48, 38,156, 26, 1, 0, 0, 0,208,127,155, 26, 1, 0, 0, 0, 48,129,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,255,197, 25, 1, 0, 0, 0, 64,229,228, 28,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,127,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,129,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,213,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,211,188, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,129,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,127,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,163,155, 26,
+ 1, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0, 48,117,155, 26,
+ 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+155, 1, 0, 0, 4, 4, 96, 1,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,208,149,155, 26,
+ 1, 0, 0, 0, 80,162,155, 26, 1, 0, 0, 0,112,131,155, 26, 1, 0, 0, 0,208,132,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,228, 28, 1, 0, 0, 0, 48, 64,192, 25, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,112,131,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,132,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,176, 67, 0, 0, 0, 0,
+ 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 96, 1, 31, 0, 96, 1,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,
+128, 7, 0, 0,125, 1, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 31, 0,
+ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,112,214,188, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0, 32,220,188, 2, 0, 0, 0, 0, 48,210,188, 2, 0, 0, 0, 0,144,211,188, 2, 0, 0, 0, 0,
- 0,213,188, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,208,132,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,131,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,181,195,
+ 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 96, 1,125, 1, 79, 1,
+107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,156, 25, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,
+128, 7, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1,125, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,134,155, 26, 1, 0, 0, 0, 64,148,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 48,134,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,135,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 13, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
+111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
+111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 78, 1, 36, 0, 0, 0, 0, 0,
+ 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,135,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80,137,155, 26, 1, 0, 0, 0, 48,134,155, 26, 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,215,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64,217,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,217,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176,218,188, 2, 0, 0, 0, 0,208,215,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,135,255, 78, 1, 61, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 80,137,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,138,155, 26, 1, 0, 0, 0,192,135,155, 26,
+ 1, 0, 0, 0,176,131,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,
+121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,
+121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 78, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,138,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112,140,155, 26, 1, 0, 0, 0, 80,137,155, 26, 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,218,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64,217,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 32,220,188, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
- 48,224,188, 2, 0, 0, 0, 0,112,214,188, 2, 0, 0, 0, 0,208,215,188, 2, 0, 0, 0, 0,176,218,188, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,165,254, 78, 1,178, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,112,140,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,142,155, 26, 1, 0, 0, 0,224,138,155, 26,
+ 1, 0, 0, 0,112,138,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
+116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
+116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,
+103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 78, 1, 58, 0, 20, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,221,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192,222,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,222,188, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,221,188, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48,224,188, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,220,188, 2, 0, 0, 0, 0, 80,221,188, 2, 0, 0, 0, 0,
-192,222,188, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,225,188, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,176, 21,189, 2, 0, 0, 0, 0,144,169,188, 2, 0, 0, 0, 0, 16,151,188, 2, 0, 0, 0, 0,
-144,152,188, 2, 0, 0, 0, 0,112,154,188, 2, 0, 0, 0, 0, 16,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,104, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64,245,188, 2, 0, 0, 0, 0,160, 20,189, 2, 0, 0, 0, 0, 32,226,188, 2, 0, 0, 0, 0,
-144,227,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,226,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-144,227,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65,
- 0, 0, 0, 0, 0, 0,180, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,104, 1, 31, 0,104, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,227,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32,226,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171, 67, 0, 0,121,196, 0, 0, 0, 0,
- 0, 0, 0, 0,255,127,171, 67,255, 63,121,196, 0, 0, 0, 0, 87, 1, 0, 0,104, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 86, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,104, 1,247, 3, 87, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,104, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 64,245,188, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
- 96,249,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,142,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,144,143,155, 26, 1, 0, 0, 0,112,140,155, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,213,253, 78, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,128,246,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,247,188, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65,
- 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1,
- 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,144,143,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,145,155, 26, 1, 0, 0, 0, 0,142,155, 26,
+ 1, 0, 0, 0, 48,145,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,
+116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,
+116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 78, 1,105, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,240,247,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,246,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67,
- 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1,
- 0, 4,144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,145,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,176,146,155, 26, 1, 0, 0, 0,144,143,155, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,144, 2, 0, 0, 96,249,188, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,160, 6,189, 2, 0, 0, 0, 0,
- 64,245,188, 2, 0, 0, 0, 0,128,246,188, 2, 0, 0, 0, 0,240,247,188, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 60,253, 78, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,176,146,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,148,155, 26, 1, 0, 0, 0, 32,145,155, 26,
+ 1, 0, 0, 0,224,152,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
+115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
+115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,
+105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 78, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,148,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,146,155, 26, 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 12,253, 78, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 1, 0, 0,208,149,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 48,155,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 8,155, 25,
+ 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,151,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,152,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,252,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160,253,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,152,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,153,155, 26, 1, 0, 0, 0, 16,151,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,253,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 16,255,188, 2, 0, 0, 0, 0, 48,252,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,255,188, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-128, 0,189, 2, 0, 0, 0, 0,160,253,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,
+235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 0,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-240, 1,189, 2, 0, 0, 0, 0, 16,255,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,153,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,152,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
+ 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,
+235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 1,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 0,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 48,155,155, 26,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 80,162,155, 26, 1, 0, 0, 0,208,149,155, 26, 1, 0, 0, 0, 16,151,155, 26,
+ 1, 0, 0, 0,208,153,155, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 3,189, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 3,189, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53,
-215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 96,156,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,157,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,
+108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,192,157,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 34,153, 65, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,
+108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,159,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0, 32,159,155, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,
+115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
-160, 6,189, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224, 10,189, 2, 0, 0, 0, 0, 96,249,188, 2, 0, 0, 0, 0,
- 48,252,188, 2, 0, 0, 0, 0,240, 1,189, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 8,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,112, 9,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 9,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,189, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,224, 10,189, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0,144, 16,189, 2, 0, 0, 0, 0,160, 6,189, 2, 0, 0, 0, 0, 0, 8,189, 2, 0, 0, 0, 0,
-112, 9,189, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,162,155, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,155,155, 26, 1, 0, 0, 0, 96,156,155, 26, 1, 0, 0, 0,192,157,155, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,163,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,200,155, 26,
+ 1, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,112,116,155, 26,
+ 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,
+155, 1, 0, 0, 17, 17, 32, 6,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 52, 82, 3, 1, 0, 0, 0, 64,170,155, 26,
+ 1, 0, 0, 0, 96,199,155, 26, 1, 0, 0, 0,144,164,155, 26, 1, 0, 0, 0,224,168,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,192,199, 25, 1, 0, 0, 0,160, 88,199, 25, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144,164,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,165,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 6, 26, 0, 32, 6,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 55, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,240,165,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,168,155, 26, 1, 0, 0, 0,144,164,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,184,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,184,195,
+ 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,130, 1,203, 0,
+112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+219, 0, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,130, 1,
+ 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 54, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,167,155, 26, 1, 0, 0, 0, 80,167,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 80,167,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 49,194, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,
+112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,
+112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,112,101,114,116,105,101,115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0,
+ 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 12,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176, 13,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,168,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,165,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0,
+ 0, 0,112, 67,228, 46, 44,195,220,133,181, 68,107, 28,209,194, 26, 71,172, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,
+129, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,
+129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5,130, 1, 51, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 53, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0, 64,170,155, 26, 1, 0, 0, 0,174, 0, 0, 0,
+ 1, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,170,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32,172,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 13,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 32, 15,189, 2, 0, 0, 0, 0, 64, 12,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,172,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,128,173,155, 26, 1, 0, 0, 0,192,170,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 15,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 13,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,173,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,172,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,144, 16,189, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
-160, 20,189, 2, 0, 0, 0, 0,224, 10,189, 2, 0, 0, 0, 0, 64, 12,189, 2, 0, 0, 0, 0, 32, 15,189, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0,167, 0, 0, 0,
+ 1, 0, 0, 0,128,178,155, 26, 1, 0, 0, 0, 64,170,155, 26, 1, 0, 0, 0,192,170,155, 26, 1, 0, 0, 0,128,173,155, 26,
+ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,175,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32,177,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 17,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48, 19,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 19,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 17,189, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,160, 20,189, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 16,189, 2, 0, 0, 0, 0,192, 17,189, 2, 0, 0, 0, 0,
- 48, 19,189, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 21,189, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 96, 90,189, 2, 0, 0, 0, 0, 64,225,188, 2, 0, 0, 0, 0, 16,154,188, 2, 0, 0, 0, 0,
-112,154,188, 2, 0, 0, 0, 0, 48,155,188, 2, 0, 0, 0, 0,208,154,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-105, 1, 0, 0,247, 2, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,143, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 57,189, 2, 0, 0, 0, 0, 80, 89,189, 2, 0, 0, 0, 0,144, 22,189, 2, 0, 0, 0, 0,
- 0, 24,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 22,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 24,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65,
- 0, 0, 0, 0, 0,128,199, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,143, 1, 31, 0,143, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,105, 1, 0, 0,247, 2, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 24,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,144, 22,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,190, 67, 0, 0,121,196, 0, 0, 0, 0,
- 0, 0, 0, 0,251,255,190, 67,250, 63,121,196, 0, 0, 0, 0,126, 1, 0, 0,143, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0,125, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,143, 1,247, 3,126, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,105, 1, 0, 0,247, 2, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,240, 57,189, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
- 16, 62,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,177,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,175,155, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
+ 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,
+121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,
+121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128,178,155, 26, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 0,184,155, 26, 1, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0,192,175,155, 26, 1, 0, 0, 0, 32,177,155, 26,
+ 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48, 59,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 60,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65,
- 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1,
- 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,160, 60,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 59,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67,
- 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1,
- 0, 4,144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,179,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,181,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
+ 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68,
+ 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,144, 2, 0, 0, 16, 62,189, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 80, 75,189, 2, 0, 0, 0, 0,
-240, 57,189, 2, 0, 0, 0, 0, 48, 59,189, 2, 0, 0, 0, 0,160, 60,189, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,181,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,182,155, 26,
+ 1, 0, 0, 0,224,179,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,182,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,181,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 0,184,155, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,195,155, 26,
+ 1, 0, 0, 0,128,178,155, 26, 1, 0, 0, 0,224,179,155, 26, 1, 0, 0, 0,160,182,155, 26, 1, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,185,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,144,186,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,186,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,240,187,155, 26, 1, 0, 0, 0, 48,185,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,187,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 80,189,155, 26, 1, 0, 0, 0,144,186,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,189,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,176,190,155, 26, 1, 0, 0, 0,240,187,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,190,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,189,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,192,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,192,155, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
+ 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
+ 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62,
+ 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62,
+ 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,
+151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62,
+ 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 64,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 80, 66,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 64,195,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96,199,155, 26, 1, 0, 0, 0, 0,184,155, 26,
+ 1, 0, 0, 0, 48,185,155, 26, 1, 0, 0, 0,176,190,155, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,196,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,198,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 66,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-192, 67,189, 2, 0, 0, 0, 0,224, 64,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,
+126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 67,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 48, 69,189, 2, 0, 0, 0, 0, 80, 66,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,198,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,196,155, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 69,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160, 70,189, 2, 0, 0, 0, 0,192, 67,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,199,155, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,195,155, 26, 1, 0, 0, 0,160,196,155, 26,
+ 1, 0, 0, 0, 0,198,155, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 70,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48, 69,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,200,155, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,228,155, 26, 1, 0, 0, 0,176,163,155, 26, 1, 0, 0, 0,144,117,155, 26,
+ 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 9, 9, 72, 2,138, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112, 45, 82, 3, 1, 0, 0, 0, 0,204,155, 26, 1, 0, 0, 0, 64,227,155, 26, 1, 0, 0, 0, 64,201,155, 26,
+ 1, 0, 0, 0,160,202,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,124,199, 25,
+ 1, 0, 0, 0,128,140,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,201,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,160,202,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 18, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 72, 2, 26, 0, 72, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 48, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,202,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,201,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0,
+ 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,116,223, 10, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 2, 0, 0, 0, 0, 0, 0,
+111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0,
+ 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 72, 2,112, 2, 72, 2,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 46, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 0,204,155, 26, 1, 0, 0, 0,169, 0, 0, 0,
+ 1, 0, 0, 0,144,209,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 72,189, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16, 72,189, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53,
-215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 34,153, 65, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 80, 75,189, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,144, 79,189, 2, 0, 0, 0, 0, 16, 62,189, 2, 0, 0, 0, 0,
-224, 64,189, 2, 0, 0, 0, 0,160, 70,189, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 76,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 32, 78,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 78,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 76,189, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144, 79,189, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0, 64, 85,189, 2, 0, 0, 0, 0, 80, 75,189, 2, 0, 0, 0, 0,176, 76,189, 2, 0, 0, 0, 0,
- 32, 78,189, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,206,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,208,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,182, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 80,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 96, 82,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+107, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,161, 67, 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 1, 26, 0,108, 1, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 41, 1, 0, 0,
+ 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 82,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-208, 83,189, 2, 0, 0, 0, 0,240, 80,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,208,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,206,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 67, 0, 0,210,195, 0, 0, 0, 0, 91, 1, 0, 0,
+108, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 90, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1,164, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 67, 1, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1,182, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,209,155, 26,
+ 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,192,214,155, 26, 1, 0, 0, 0, 0,204,155, 26, 1, 0, 0, 0,208,206,155, 26,
+ 1, 0, 0, 0, 48,208,155, 26, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 83,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96, 82,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,158,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 64, 85,189, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
- 80, 89,189, 2, 0, 0, 0, 0,144, 79,189, 2, 0, 0, 0, 0,240, 80,189, 2, 0, 0, 0, 0,208, 83,189, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,192,158,224, 25,
+ 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,240,210,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+208, 0, 0, 0,240,210,155, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,212,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,213,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,162, 67, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,128,137, 67,
+ 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0, 68, 1, 30, 0, 68, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0,252, 3, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,213,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,212,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,
+254,127,153, 67,253,127,198,195, 0, 0, 0, 0, 51, 1, 0, 0, 68, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0,
+ 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0, 68, 1,159, 1, 51, 1,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0, 93, 2, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 1,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 86,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224, 87,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 87,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 86,189, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 80, 89,189, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,189, 2, 0, 0, 0, 0,112, 86,189, 2, 0, 0, 0, 0,
-224, 87,189, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 90,189, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,208,155,189, 2, 0, 0, 0, 0,176, 21,189, 2, 0, 0, 0, 0,208,154,188, 2, 0, 0, 0, 0,
- 48,155,188, 2, 0, 0, 0, 0,240,155,188, 2, 0, 0, 0, 0,144,155,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-249, 2, 0, 0,135, 4, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,143, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,123,189, 2, 0, 0, 0, 0,192,154,189, 2, 0, 0, 0, 0, 64, 91,189, 2, 0, 0, 0, 0,
-176, 92,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 91,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176, 92,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65,
- 0, 0, 0, 0, 0,128,199, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,143, 1, 31, 0,143, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,135, 4, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 92,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 91,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 64,121,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,191, 67, 4, 64,121,196, 0, 0, 0, 0,126, 1, 0, 0,143, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0,125, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,143, 1,247, 3,126, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,135, 4, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 96,123,189, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
-128,127,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,192,214,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 32,220,155, 26,
+ 1, 0, 0, 0,144,209,155, 26, 1, 0, 0, 0, 0,212,155, 26, 1, 0, 0, 0, 96,213,155, 26, 1, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0,
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,160,124,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,126,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65,
- 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1,
- 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 0,216,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,217,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0,
+ 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67,
+ 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1,
+ 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,
+128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16,126,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160,124,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67,
- 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1,
- 0, 4,144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 96,217,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,218,155, 26, 1, 0, 0, 0, 0,216,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,144, 2, 0, 0,128,127,189, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,192,140,189, 2, 0, 0, 0, 0,
- 96,123,189, 2, 0, 0, 0, 0,160,124,189, 2, 0, 0, 0, 0, 16,126,189, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
+128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,192,218,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,217,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
+ 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,
+128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+240, 0, 0, 0, 32,220,155, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,227,155, 26, 1, 0, 0, 0,192,214,155, 26,
+ 1, 0, 0, 0, 0,216,155, 26, 1, 0, 0, 0,192,218,155, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,221,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,222,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,222,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,221,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,224,155, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,224,155, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 64,227,155, 26,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,220,155, 26, 1, 0, 0, 0, 80,221,155, 26,
+ 1, 0, 0, 0,176,222,155, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,228,155, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,128, 7,156, 26, 1, 0, 0, 0, 96,200,155, 26, 1, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,176,118,155, 26,
+ 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0,
+ 55, 5, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 1, 1,251, 3,138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3,
+ 1, 0, 0, 0,240,248,155, 26, 1, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0,128,229,155, 26, 1, 0, 0, 0, 96,244,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,140,228, 28, 1, 0, 0, 0,192,207,198, 25,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,229,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,230,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0,192,126, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,251, 3, 26, 0,251, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,130,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-192,131,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,230,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,232,155, 26,
+ 1, 0, 0, 0,128,229,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0,112, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,232,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,233,155, 26,
+ 1, 0, 0, 0,224,230,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,183, 1, 0, 0,183, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,131,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 48,133,189, 2, 0, 0, 0, 0, 80,130,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,233,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,244,155, 26,
+ 1, 0, 0, 0, 64,232,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,240, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,155, 26, 1, 0, 0, 0, 0,190,158, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,235,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,236,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,
+115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,
+163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,133,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160,134,189, 2, 0, 0, 0, 0,192,131,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,236,155, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,238,155, 26, 1, 0, 0, 0, 0,235,155, 26, 1, 0, 0, 0, 64,242, 81, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,134,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 16,136,189, 2, 0, 0, 0, 0, 48,133,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236,253,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,136,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160,134,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,238,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,239,155, 26,
+ 1, 0, 0, 0,144,236,155, 26, 1, 0, 0, 0,176,203,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,252,
+163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,239,155, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,241,155, 26, 1, 0, 0, 0, 32,238,155, 26, 1, 0, 0, 0, 16,206,199, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,
+112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,
+112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,137,189, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128,137,189, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53,
-215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,241,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,242,155, 26,
+ 1, 0, 0, 0,176,239,155, 26, 1, 0, 0, 0,144,215,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,
+103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,252,
+163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 34,153, 65, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,242,155, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,190,158, 26, 1, 0, 0, 0, 64,241,155, 26, 1, 0, 0, 0,240,217,199, 25,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,
+111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,
+111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,
+110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,190,158, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,242,155, 26, 1, 0, 0, 0,112,208,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,
+163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
-192,140,189, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0,145,189, 2, 0, 0, 0, 0,128,127,189, 2, 0, 0, 0, 0,
- 80,130,189, 2, 0, 0, 0, 0, 16,136,189, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,142,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,144,143,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,244,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,233,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,143,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,142,189, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 0,145,189, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0,176,150,189, 2, 0, 0, 0, 0,192,140,189, 2, 0, 0, 0, 0, 32,142,189, 2, 0, 0, 0, 0,
-144,143,189, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,183, 1, 0, 0,
+ 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,112, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,245,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192,245,155, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 31,129, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 31,129, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+134,198,125, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 31,129, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,221, 57, 80, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,146,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-208,147,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,147,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64,149,189, 2, 0, 0, 0, 0, 96,146,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240,248,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 16,253,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 81,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 80,250,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,251,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,176,251,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,250,155, 26,
+ 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,
+110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
+ 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6,
+ 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 16,253,155, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,144, 2,156, 26, 1, 0, 0, 0,240,248,155, 26,
+ 1, 0, 0, 0, 80,250,155, 26, 1, 0, 0, 0,176,251,155, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,149,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,208,147,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,176,150,189, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
-192,154,189, 2, 0, 0, 0, 0, 0,145,189, 2, 0, 0, 0, 0, 96,146,189, 2, 0, 0, 0, 0, 64,149,189, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,254,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,255,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,151,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 80,153,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,153,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,151,189, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192,154,189, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,150,189, 2, 0, 0, 0, 0,224,151,189, 2, 0, 0, 0, 0,
- 80,153,189, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,155,189, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 90,189, 2, 0, 0, 0, 0,144,155,188, 2, 0, 0, 0, 0,
-240,155,188, 2, 0, 0, 0, 0,176,156,188, 2, 0, 0, 0, 0, 80,156,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-137, 4, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,143, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176,193,189, 2, 0, 0, 0, 0, 16,225,189, 2, 0, 0, 0, 0,176,156,189, 2, 0, 0, 0, 0,
- 32,158,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,156,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 32,158,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65,
- 0, 0, 0, 0, 0,128,199, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,143, 1, 31, 0,143, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,137, 4, 0, 0, 23, 6, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,158,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176,156,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 64,121,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,191, 67, 0, 64,121,196, 0, 0, 0, 0,126, 1, 0, 0,143, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0,125, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,143, 1,247, 3,126, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,137, 4, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,176,193,189, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
-208,197,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,255,155, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 1,156, 26, 1, 0, 0, 0,112,254,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 5, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,240,194,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,196,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65,
- 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1,
- 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96,196,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240,194,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67,
- 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1,
- 0, 4,144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 1,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,255,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
+ 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,144, 2, 0, 0,208,197,189, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 16,211,189, 2, 0, 0, 0, 0,
-176,193,189, 2, 0, 0, 0, 0,240,194,189, 2, 0, 0, 0, 0, 96,196,189, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,144, 2,156, 26,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0, 16,253,155, 26, 1, 0, 0, 0,112,254,155, 26,
+ 1, 0, 0, 0, 48, 1,156, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,192, 3,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 5,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32, 5,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 3,156, 26,
+ 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
+ 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+200, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 2,156, 26,
+ 1, 0, 0, 0,192, 3,156, 26, 1, 0, 0, 0, 32, 5,156, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0,128, 7,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,228,155, 26,
+ 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,118,155, 26, 1, 0, 0, 0, 80,118,155, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 3, 3, 60, 1,
+138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0, 32, 11,156, 26, 1, 0, 0, 0, 48, 37,156, 26,
+ 1, 0, 0, 0, 96, 8,156, 26, 1, 0, 0, 0,192, 9,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,173,199, 25, 1, 0, 0, 0,144,144,197, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 8,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 9,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,158, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 59, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 60, 1, 26, 0, 60, 1, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,157, 1, 0, 0,
+182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 9,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 8,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,149, 67, 0,128, 23,196, 0, 0, 0, 0, 43, 1, 0, 0,
+ 60, 1, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 42, 1, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,112, 2, 43, 1, 94, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,183, 1, 0, 0,
+ 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,112, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 11,156, 26,
+ 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,160, 23,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,159, 26,
+ 1, 0, 0, 0, 64, 41,159, 26, 1, 0, 0, 0,160,221, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,160,221, 89, 3,
+ 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,128, 12,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+208, 0, 0, 0,128, 12,156, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 13,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 14,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 68, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 14,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 16,156, 26,
+ 1, 0, 0, 0,144, 13,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0,182, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 16,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 17,156, 26,
+ 1, 0, 0, 0,240, 14,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 17,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 19,156, 26,
+ 1, 0, 0, 0, 80, 16,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,211, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 19,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176, 17,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,212, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 20,156, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 20,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,121, 92,163, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,
+ 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,121, 92,163, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 15,150, 72, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,121, 92,163, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,159, 55,242, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63,
+ 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160, 23,156, 26,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,192, 27,156, 26, 1, 0, 0, 0, 32, 11,156, 26, 1, 0, 0, 0,144, 13,156, 26,
+ 1, 0, 0, 0, 16, 19,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 25,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96, 26,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,200,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 16,202,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 26,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,156, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
+ 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,
+106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,
+106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,202,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-128,203,189, 2, 0, 0, 0, 0,160,200,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 27,156, 26, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,160, 23,156, 26, 1, 0, 0, 0, 0, 25,156, 26, 1, 0, 0, 0, 96, 26,156, 26,
+ 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,203,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-240,204,189, 2, 0, 0, 0, 0, 16,202,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,204,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 96,206,189, 2, 0, 0, 0, 0,128,203,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 29,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 30,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
+ 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68,
+ 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,206,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240,204,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 30,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 31,156, 26,
+ 1, 0, 0, 0, 32, 29,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208,207,189, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,208,207,189, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53,
-215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,
-191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 31,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 30,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 34,153, 65, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48, 37,156, 26,
+ 1, 0, 0, 0,192, 27,156, 26, 1, 0, 0, 0, 32, 29,156, 26, 1, 0, 0, 0,224, 31,156, 26, 1, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 16,211,189, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 80,215,189, 2, 0, 0, 0, 0,208,197,189, 2, 0, 0, 0, 0,
-160,200,189, 2, 0, 0, 0, 0, 96,206,189, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,212,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224,213,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 34,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,208, 35,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,213,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,212,189, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
- 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 35,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 34,156, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,215,189, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0, 0,221,189, 2, 0, 0, 0, 0, 16,211,189, 2, 0, 0, 0, 0,112,212,189, 2, 0, 0, 0, 0,
-224,213,189, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48, 37,156, 26, 1, 0, 0, 0,172, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,112, 34,156, 26, 1, 0, 0, 0,208, 35,156, 26,
+ 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,216,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 32,218,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0,190, 0, 0, 0,
+ 1, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0,192,112,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 45,156, 26,
+ 1, 0, 0, 0,224, 52,156, 26, 1, 0, 0, 0, 64, 53,156, 26, 1, 0, 0, 0, 48,192,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 39,156, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 40,156, 26,
+ 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,128, 40,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 41,156, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 42,156, 26,
+ 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 42,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 42,156, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,168, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 43,156, 26,
+ 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,128, 43,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,168, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 44,156, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 16, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 16, 3,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 45,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 45,156, 26,
+ 1, 0, 0, 0, 0, 45,156, 26, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 46,156, 26,
+ 1, 0, 0, 0, 96, 45,156, 26, 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 46,156, 26,
+ 1, 0, 0, 0,192, 45,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 46,156, 26,
+ 1, 0, 0, 0, 32, 46,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 47,156, 26,
+ 1, 0, 0, 0,128, 46,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 47,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 47,156, 26,
+ 1, 0, 0, 0,224, 46,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 47,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 48,156, 26,
+ 1, 0, 0, 0, 64, 47,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 48,156, 26,
+ 1, 0, 0, 0,160, 47,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 48,156, 26,
+ 1, 0, 0, 0, 0, 48,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 49,156, 26,
+ 1, 0, 0, 0, 96, 48,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 49,156, 26,
+ 1, 0, 0, 0,192, 48,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 49,156, 26,
+ 1, 0, 0, 0, 32, 49,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 50,156, 26,
+ 1, 0, 0, 0,128, 49,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 50,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 50,156, 26,
+ 1, 0, 0, 0,224, 49,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 50,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 51,156, 26,
+ 1, 0, 0, 0, 64, 50,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 51,156, 26,
+ 1, 0, 0, 0,160, 50,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 51,156, 26,
+ 1, 0, 0, 0, 0, 51,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 52,156, 26,
+ 1, 0, 0, 0, 96, 51,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 52,156, 26,
+ 1, 0, 0, 0,192, 51,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 52,156, 26,
+ 1, 0, 0, 0, 32, 52,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 52,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 53,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 56,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,128, 40,156, 26,
+ 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0,
+ 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,214,156, 26,
+ 1, 0, 0, 0,224,214,156, 26, 1, 0, 0, 0, 32, 54,156, 26, 1, 0, 0, 0,128, 55,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32, 54,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 55,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128, 55,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 54,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192,
+ 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,218,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-144,219,189, 2, 0, 0, 0, 0,176,216,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0,224, 56,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0, 64, 53,156, 26,
+ 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,224, 40,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 4, 4,144, 1,
+ 16, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 76,156, 26, 1, 0, 0, 0,160, 88,156, 26,
+ 1, 0, 0, 0,192, 57,156, 26, 1, 0, 0, 0, 32, 59,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 57,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 59,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+143, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, 31, 0,144, 1, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0,241, 2, 0, 0,
+ 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 59,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 57,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,191, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,191, 67,255,191, 55,196, 0, 0, 0, 0,127, 1, 0, 0,
+144, 1, 0, 0, 18, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+126, 1, 0, 0, 18, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,144, 1,241, 2,127, 1,223, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,241, 2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 60,156, 26, 1, 0, 0, 0,144, 74,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 60,156, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 62,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,219,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32,218,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 0,221,189, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
- 16,225,189, 2, 0, 0, 0, 0, 80,215,189, 2, 0, 0, 0, 0,176,216,189, 2, 0, 0, 0, 0,144,219,189, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16, 62,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 63,156, 26,
+ 1, 0, 0, 0,128, 60,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
+101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,
+126, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,222,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,160,223,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 63,156, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 65,156, 26, 1, 0, 0, 0, 16, 62,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,223,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,222,189, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16,225,189, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221,189, 2, 0, 0, 0, 0, 48,222,189, 2, 0, 0, 0, 0,
-160,223,189, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 65,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 66,156, 26,
+ 1, 0, 0, 0,160, 63,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,
+110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254,
+126, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 66,156, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 68,156, 26, 1, 0, 0, 0, 48, 65,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,
+110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,
+110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,176,226,189, 2, 0, 0, 0, 0,
-190, 0, 0, 0, 1, 0, 0, 0,128,112,190, 2, 0, 0, 0, 0, 0,150,188, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 81,117, 97,100, 32, 86,105,101,119, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,227,189, 2, 0, 0, 0, 0,224,231,189, 2, 0, 0, 0, 0,
- 64,232,189, 2, 0, 0, 0, 0,176,239,189, 2, 0, 0, 0, 0, 32,240,189, 2, 0, 0, 0, 0,160, 66,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-192,227,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,228,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,228,189, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,128,228,189, 2, 0, 0, 0, 0,192,227,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,228,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-224,228,189, 2, 0, 0, 0, 0, 32,228,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,224,228,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,229,189, 2, 0, 0, 0, 0,
-128,228,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 64,229,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160,229,189, 2, 0, 0, 0, 0,224,228,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,229,189, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 0,230,189, 2, 0, 0, 0, 0, 64,229,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,230,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 96,230,189, 2, 0, 0, 0, 0,160,229,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 96,230,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192,230,189, 2, 0, 0, 0, 0,
- 0,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-192,230,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0, 96,230,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,128,231,189, 2, 0, 0, 0, 0,192,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,231,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-224,231,189, 2, 0, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,224,231,189, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,232,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,232,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32,228,189, 2, 0, 0, 0, 0,128,228,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,232,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,233,189, 2, 0, 0, 0, 0, 64,232,189, 2, 0, 0, 0, 0,
- 32,228,189, 2, 0, 0, 0, 0, 64,229,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 32,233,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,233,189, 2, 0, 0, 0, 0,176,232,189, 2, 0, 0, 0, 0,
-128,228,189, 2, 0, 0, 0, 0,160,229,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-144,233,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,234,189, 2, 0, 0, 0, 0, 32,233,189, 2, 0, 0, 0, 0,
- 64,229,189, 2, 0, 0, 0, 0,160,229,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 0,234,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,234,189, 2, 0, 0, 0, 0,144,233,189, 2, 0, 0, 0, 0,
-192,227,189, 2, 0, 0, 0, 0, 0,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-112,234,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,234,189, 2, 0, 0, 0, 0, 0,234,189, 2, 0, 0, 0, 0,
-224,228,189, 2, 0, 0, 0, 0, 0,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-224,234,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,235,189, 2, 0, 0, 0, 0,112,234,189, 2, 0, 0, 0, 0,
- 64,229,189, 2, 0, 0, 0, 0, 96,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 80,235,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,235,189, 2, 0, 0, 0, 0,224,234,189, 2, 0, 0, 0, 0,
-160,229,189, 2, 0, 0, 0, 0, 96,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-192,235,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,236,189, 2, 0, 0, 0, 0, 80,235,189, 2, 0, 0, 0, 0,
- 0,230,189, 2, 0, 0, 0, 0,192,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 48,236,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,236,189, 2, 0, 0, 0, 0,192,235,189, 2, 0, 0, 0, 0,
- 96,230,189, 2, 0, 0, 0, 0,192,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-160,236,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,237,189, 2, 0, 0, 0, 0, 48,236,189, 2, 0, 0, 0, 0,
-160,229,189, 2, 0, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 16,237,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,237,189, 2, 0, 0, 0, 0,160,236,189, 2, 0, 0, 0, 0,
-224,228,189, 2, 0, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-128,237,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,237,189, 2, 0, 0, 0, 0, 16,237,189, 2, 0, 0, 0, 0,
-192,230,189, 2, 0, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-240,237,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,238,189, 2, 0, 0, 0, 0,128,237,189, 2, 0, 0, 0, 0,
-192,227,189, 2, 0, 0, 0, 0,128,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 96,238,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,238,189, 2, 0, 0, 0, 0,240,237,189, 2, 0, 0, 0, 0,
- 64,229,189, 2, 0, 0, 0, 0,128,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-208,238,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,239,189, 2, 0, 0, 0, 0, 96,238,189, 2, 0, 0, 0, 0,
- 96,230,189, 2, 0, 0, 0, 0,224,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,239,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,239,189, 2, 0, 0, 0, 0,208,238,189, 2, 0, 0, 0, 0,
- 0,230,189, 2, 0, 0, 0, 0,224,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,239,189, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,239,189, 2, 0, 0, 0, 0,
-128,231,189, 2, 0, 0, 0, 0,224,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
- 32,240,189, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,243,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64,229,189, 2, 0, 0, 0, 0, 32,228,189, 2, 0, 0, 0, 0,128,228,189, 2, 0, 0, 0, 0,160,229,189, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0,
- 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,111,190, 2, 0, 0, 0, 0,240,111,190, 2, 0, 0, 0, 0,
- 0,241,189, 2, 0, 0, 0, 0,112,242,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,241,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,112,242,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,242,189, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69,
- 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0,
- 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0,
- 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 49, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,243,189, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 32, 36,190, 2, 0, 0, 0, 0, 32,240,189, 2, 0, 0, 0, 0, 0,230,189, 2, 0, 0, 0, 0,
-192,230,189, 2, 0, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0,224,228,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 67, 3, 0, 0, 4, 4,128, 1, 68, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96, 27,190, 2, 0, 0, 0, 0,192, 34,190, 2, 0, 0, 0, 0,192,244,189, 2, 0, 0, 0, 0,
- 48,246,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,244,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 48,246,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,192, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,128, 1, 31, 0,128, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,128, 7, 0, 0, 37, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,246,189, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,192,244,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183, 67, 0,128, 68,196, 0, 0, 0, 0,
- 0, 0, 0, 0,253,127,183, 67,253,191, 68,196, 0, 0, 0, 0,111, 1, 0, 0,128, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0,
- 0, 0, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,128, 1, 37, 3,111, 1, 19, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 37, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 96, 27,190, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
-192, 34,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254,126, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 68,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 69,156, 26,
+ 1, 0, 0, 0,192, 66,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,
+105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253,
+126, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 69,156, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 71,156, 26, 1, 0, 0, 0, 80, 68,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,160, 28,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 30,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1,
- 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16, 30,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160, 28,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 31,190, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0,128, 31,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253,126, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 34,190, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 27,190, 2, 0, 0, 0, 0,160, 28,190, 2, 0, 0, 0, 0,
- 16, 30,190, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 36,190, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-112, 48,190, 2, 0, 0, 0, 0,224,243,189, 2, 0, 0, 0, 0,192,227,189, 2, 0, 0, 0, 0,128,231,189, 2, 0, 0, 0, 0,
-224,231,189, 2, 0, 0, 0, 0, 0,230,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0,
- 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 0, 6, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224, 39,190, 2, 0, 0, 0, 0, 16, 47,190, 2, 0, 0, 0, 0, 0, 37,190, 2, 0, 0, 0, 0,112, 38,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0, 37,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 38,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 6,
- 26, 0, 0, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112, 38,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 37,190, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 0, 6,
- 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 5, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0,224, 39,190, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 16, 47,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,240, 40,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 42,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6,
- 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96, 42,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 40,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 43,190, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0,208, 43,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 71,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 73,156, 26,
+ 1, 0, 0, 0,224, 69,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,
+111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253,
+126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 73,156, 26,
+ 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 74,156, 26, 1, 0, 0, 0,112, 71,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
+115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
+115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16, 47,190, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 39,190, 2, 0, 0, 0, 0,240, 40,190, 2, 0, 0, 0, 0,
- 96, 42,190, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 74,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,
+112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,253,
+126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112, 48,190, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-160, 66,190, 2, 0, 0, 0, 0, 32, 36,190, 2, 0, 0, 0, 0,192,230,189, 2, 0, 0, 0, 0, 96,230,189, 2, 0, 0, 0, 0,
-160,229,189, 2, 0, 0, 0, 0, 32,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,128, 7, 0, 0,
- 69, 3, 0, 0, 21, 4, 0, 0, 3, 3,128, 1,209, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 52,190, 2, 0, 0, 0, 0, 64, 65,190, 2, 0, 0, 0, 0, 80, 49,190, 2, 0, 0, 0, 0,192, 50,190, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 32, 76,156, 26,
+ 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 80, 49,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 50,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65,
- 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,128, 1,
- 26, 0,128, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 6, 0, 0,128, 7, 0, 0,252, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,192, 50,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 49,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,183, 67,
- 0, 0, 37,195, 0, 0, 0, 0,111, 1, 0, 0,128, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0,110, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,128, 1,
-183, 0,111, 1,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48, 52,190, 2, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,224, 57,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,
+160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 77,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192, 78,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0,
+ 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0,
+ 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 78,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32, 80,156, 26, 1, 0, 0, 0, 96, 77,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 53,190, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 68, 65, 84, 65, 16, 0, 0, 0,160, 53,190, 2, 0, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
-240, 53,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,240, 53,190, 2, 0, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 20, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,113,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,123,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16,119,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 48, 95,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 55,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,112, 56,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 56,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67,
- 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0,
- 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 80,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 78,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,
+123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,224, 57,190, 2, 0, 0, 0, 0,
-162, 0, 0, 0, 1, 0, 0, 0, 64, 65,190, 2, 0, 0, 0, 0, 48, 52,190, 2, 0, 0, 0, 0, 0, 55,190, 2, 0, 0, 0, 0,
-112, 56,190, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0,163, 0, 0, 0,
+ 1, 0, 0, 0,160, 88,156, 26, 1, 0, 0, 0, 32, 76,156, 26, 1, 0, 0, 0, 96, 77,156, 26, 1, 0, 0, 0, 32, 80,156, 26,
+ 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 82,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 84,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 59,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-144, 60,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 60,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32, 59,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 84,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 82,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0,
+ 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 62,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 0, 62,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 85,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 85,156, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
-237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0,
+ 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0,
+ 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 64, 65,190, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 57,190, 2, 0, 0, 0, 0,
- 32, 59,190, 2, 0, 0, 0, 0,144, 60,190, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160, 66,190, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 48,190, 2, 0, 0, 0, 0,128,231,189, 2, 0, 0, 0, 0,
- 64,229,189, 2, 0, 0, 0, 0, 96,230,189, 2, 0, 0, 0, 0,224,231,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 5, 0, 0, 85, 0, 0, 0, 21, 4, 0, 0, 1, 1, 0, 6,193, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160,106,190, 2, 0, 0, 0, 0,224,110,190, 2, 0, 0, 0, 0,128, 67,190, 2, 0, 0, 0, 0,
-240,101,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 67,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-240, 68,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,192, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 0, 6, 26, 0, 0, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 68,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-160, 73,190, 2, 0, 0, 0, 0,128, 67,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 71,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 71,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 47, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 47, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 48, 3,143, 0, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,167, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160, 88,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0,176, 82,156, 26, 1, 0, 0, 0, 16, 84,156, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,224, 56,156, 26,
+ 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 96, 42,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,167, 1, 0, 0, 18, 18,255, 2,
+168, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 93,156, 26, 1, 0, 0, 0,144,124,156, 26,
+ 1, 0, 0, 0,224, 90,156, 26, 1, 0, 0, 0, 64, 92,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 90,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 92,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 63, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 73,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176, 76,190, 2, 0, 0, 0, 0,240, 68,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+254, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 2, 26, 0,255, 2, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 76,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-224, 87,190, 2, 0, 0, 0, 0,160, 73,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 77,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 35,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,160, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,160, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,161, 2,163, 0,143, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0,255, 5, 0, 0,111, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 92,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 90,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,199, 67,238, 2, 0, 0,
+255, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+237, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,255, 2,142, 1,238, 2,142, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,
+167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2,142, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 87,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-144, 92,190, 2, 0, 0, 0, 0,176, 76,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,160, 93,156, 26,
+ 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0, 32, 98,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0,111, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,212, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 89,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80, 89,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 55,224, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,128,174, 2, 19, 51,255,255,127,191, 0, 0, 0, 0,
- 0, 0, 0, 0,255,255,127, 63,174, 2, 19, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 2, 19, 51, 1, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,128,191,176, 2, 19, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,194,128, 49,110, 18,131, 59, 0, 0, 0, 0,
- 0, 0, 0, 0, 65, 55,224, 61,234,137, 22,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,217,167, 52, 24, 37, 18, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,122, 67,160,144, 15,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 2, 19, 51,255,255,127,191, 0, 0, 0, 0,
- 0, 0, 0, 0,255,255,127, 63,174, 2, 19, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,194,128, 49,110, 18,131, 59, 0, 0, 0, 0,
- 0, 0, 0, 0, 65, 55,224, 61,234,137, 22,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-243, 4, 53, 63,243, 4, 53,191, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
-143,226, 31, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 95,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 96,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 92,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 97,190, 2, 0, 0, 0, 0,224, 87,190, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 96,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,
+155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 32, 98,156, 26,
+ 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,176,103,156, 26, 1, 0, 0, 0,160, 93,156, 26, 1, 0, 0, 0, 96, 95,156, 26,
+ 1, 0, 0, 0,192, 96,156, 26, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0,
- 67, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,211, 1, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
- 0, 94,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 45,178,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 45,178,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 37,213, 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 45,178,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,143,226, 31, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 97,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-240,101,190, 2, 0, 0, 0, 0,144, 92,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,255, 5, 0, 0,111, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,212, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-176, 98,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,176, 98,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 55,224, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128,165, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 11, 0, 0,128, 63, 0, 0,128, 37, 0, 0, 0, 0, 0, 0,128, 37, 0, 0,128, 11, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 37, 0, 0,128, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-173,161,136,163, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,173,161,136, 61, 66, 55,224,163, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 55,224, 61,111, 18,131, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-215,211,111, 13,214,211,111, 65,214,211,111, 39, 0, 0, 0, 0, 23, 37, 18, 39, 23, 37, 18, 13, 23, 37, 18, 65, 0, 0, 0, 0,
-255,255,121,195,255,255,121,169,255,255,121,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128,165, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-173,161,136,163, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,173,161,136, 61, 66, 55,224,163, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 55,224, 61,111, 18,131, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,191,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
-143,226, 31, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,240,100,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,102,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 80,102,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,100,156, 26,
+ 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,
+116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
+ 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,
+112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240,101,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 97,190, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0,176,103,156, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 48,109,156, 26, 1, 0, 0, 0, 32, 98,156, 26,
+ 1, 0, 0, 0,240,100,156, 26, 1, 0, 0, 0, 80,102,156, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,255, 5, 0, 0,
- 67, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,211, 1, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,103,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
- 96,103,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,209,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 59,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0,
- 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0,
- 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0,
- 88,126,162,190,229,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,
-110,101,239, 64,151, 62,208,192, 78,255,170, 64, 0, 0,128, 63,169, 11, 64, 63,150, 35, 18,191,244,250, 39,191, 8,165, 39,191,
-131,188, 75, 63,203,225, 15, 63,180,164, 28, 63,149, 84, 28, 63,209,213, 65,188,135, 35,206, 63, 10,108,228,190, 52,247,227,190,
-179, 97,189,190,167,116, 45,191,216, 49, 49, 65,152, 9, 52, 65,215,136, 32, 63,101, 79, 42, 63, 96, 26, 34,188, 0, 0, 92,181,
-225,172, 52,190,162,226, 49, 62, 22,220,254, 62, 0, 0,209, 52,168,120, 21,194,107, 5, 2, 66,204,135,213,193,147,214,159,192,
-177, 38, 19, 66,124,173,255,193, 97,101,210, 65,128, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0,
- 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0,
- 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63,169, 11, 64, 63,150, 35, 18,191,244,250, 39,191, 8,165, 39,191,
-131,188, 75, 63,203,225, 15, 63,180,164, 28, 63,149, 84, 28, 63,209,213, 65,188,135, 35,206, 63, 10,108,228,190, 52,247,227,190,
-179, 97,189,190,167,116, 45,191,216, 49, 49, 65,152, 9, 52, 65,128,248, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128,248, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,248, 15, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,241, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 3, 35,171,190,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,243, 9, 28, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160,106,190, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
-224,110,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0,108,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,109,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112,109,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,108,190, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0,224,110,190, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160,106,190, 2, 0, 0, 0, 0, 0,108,190, 2, 0, 0, 0, 0,112,109,190, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 83, 78, 0, 0,208, 0, 0, 0,128,112,190, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 32, 59,191, 2, 0, 0, 0, 0,
-176,226,189, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,
-105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144,113,190, 2, 0, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0,208,118,190, 2, 0, 0, 0, 0, 0,128,190, 2, 0, 0, 0, 0,
-112,128,190, 2, 0, 0, 0, 0,224, 34,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,113,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-240,113,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,240,113,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,114,190, 2, 0, 0, 0, 0,
-144,113,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 80,114,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,114,190, 2, 0, 0, 0, 0,240,113,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,114,190, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 16,115,190, 2, 0, 0, 0, 0, 80,114,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,115,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-112,115,190, 2, 0, 0, 0, 0,176,114,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,112,115,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,115,190, 2, 0, 0, 0, 0,
- 16,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-208,115,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,116,190, 2, 0, 0, 0, 0,112,115,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,116,190, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,144,116,190, 2, 0, 0, 0, 0,208,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,116,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-240,116,190, 2, 0, 0, 0, 0, 48,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,240,116,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,117,190, 2, 0, 0, 0, 0,
-144,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,160, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 80,117,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,117,190, 2, 0, 0, 0, 0,240,116,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,117,190, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 16,118,190, 2, 0, 0, 0, 0, 80,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 2,160, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,118,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-112,118,190, 2, 0, 0, 0, 0,176,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 4, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16,118,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-208,118,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,119,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240,113,190, 2, 0, 0, 0, 0, 80,114,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,119,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,119,190, 2, 0, 0, 0, 0,208,118,190, 2, 0, 0, 0, 0,
-240,113,190, 2, 0, 0, 0, 0, 16,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,119,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,120,190, 2, 0, 0, 0, 0, 64,119,190, 2, 0, 0, 0, 0,
- 80,114,190, 2, 0, 0, 0, 0,112,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 32,120,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,120,190, 2, 0, 0, 0, 0,176,119,190, 2, 0, 0, 0, 0,
- 16,115,190, 2, 0, 0, 0, 0,112,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-144,120,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,121,190, 2, 0, 0, 0, 0, 32,120,190, 2, 0, 0, 0, 0,
-112,115,190, 2, 0, 0, 0, 0,208,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 0,121,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,121,190, 2, 0, 0, 0, 0,144,120,190, 2, 0, 0, 0, 0,
- 16,115,190, 2, 0, 0, 0, 0,208,115,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-112,121,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,121,190, 2, 0, 0, 0, 0, 0,121,190, 2, 0, 0, 0, 0,
-176,114,190, 2, 0, 0, 0, 0, 48,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-224,121,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,122,190, 2, 0, 0, 0, 0,112,121,190, 2, 0, 0, 0, 0,
-144,113,190, 2, 0, 0, 0, 0,144,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 80,122,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,122,190, 2, 0, 0, 0, 0,224,121,190, 2, 0, 0, 0, 0,
- 16,115,190, 2, 0, 0, 0, 0,144,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-192,122,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,123,190, 2, 0, 0, 0, 0, 80,122,190, 2, 0, 0, 0, 0,
-208,115,190, 2, 0, 0, 0, 0,240,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 48,123,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,123,190, 2, 0, 0, 0, 0,192,122,190, 2, 0, 0, 0, 0,
- 48,116,190, 2, 0, 0, 0, 0,240,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-160,123,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,124,190, 2, 0, 0, 0, 0, 48,123,190, 2, 0, 0, 0, 0,
-144,116,190, 2, 0, 0, 0, 0,240,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 16,124,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,124,190, 2, 0, 0, 0, 0,160,123,190, 2, 0, 0, 0, 0,
-144,113,190, 2, 0, 0, 0, 0, 80,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-128,124,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,124,190, 2, 0, 0, 0, 0, 16,124,190, 2, 0, 0, 0, 0,
- 48,116,190, 2, 0, 0, 0, 0, 80,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-240,124,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,125,190, 2, 0, 0, 0, 0,128,124,190, 2, 0, 0, 0, 0,
-144,116,190, 2, 0, 0, 0, 0,176,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 96,125,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,125,190, 2, 0, 0, 0, 0,240,124,190, 2, 0, 0, 0, 0,
-240,116,190, 2, 0, 0, 0, 0,176,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-208,125,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,126,190, 2, 0, 0, 0, 0, 96,125,190, 2, 0, 0, 0, 0,
- 80,117,190, 2, 0, 0, 0, 0,176,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 64,126,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,126,190, 2, 0, 0, 0, 0,208,125,190, 2, 0, 0, 0, 0,
- 48,116,190, 2, 0, 0, 0, 0, 16,118,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-176,126,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,127,190, 2, 0, 0, 0, 0, 64,126,190, 2, 0, 0, 0, 0,
-208,115,190, 2, 0, 0, 0, 0, 16,118,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 32,127,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,127,190, 2, 0, 0, 0, 0,176,126,190, 2, 0, 0, 0, 0,
-112,115,190, 2, 0, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
-144,127,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,128,190, 2, 0, 0, 0, 0, 32,127,190, 2, 0, 0, 0, 0,
-176,114,190, 2, 0, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,
- 0,128,190, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,127,190, 2, 0, 0, 0, 0,
- 16,118,190, 2, 0, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-112,128,190, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,132,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16,115,190, 2, 0, 0, 0, 0,240,113,190, 2, 0, 0, 0, 0, 80,114,190, 2, 0, 0, 0, 0,112,115,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0,
- 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 58,191, 2, 0, 0, 0, 0,144, 58,191, 2, 0, 0, 0, 0,
- 80,129,190, 2, 0, 0, 0, 0,192,130,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,129,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,192,130,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,130,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,129,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69,
- 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0,
- 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0,
- 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 49, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,132,190, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,144,187,190, 2, 0, 0, 0, 0,112,128,190, 2, 0, 0, 0, 0, 48,116,190, 2, 0, 0, 0, 0,
- 16,118,190, 2, 0, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0,176,114,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4,144, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80,173,190, 2, 0, 0, 0, 0, 48,186,190, 2, 0, 0, 0, 0, 16,133,190, 2, 0, 0, 0, 0,
-128,134,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,133,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-128,134,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,144, 1, 31, 0,144, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,134,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16,133,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 0, 62,196, 0, 0, 0, 0,
- 0, 0, 0, 0,255,127,191, 67,255,191, 52,196, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0,228, 2, 0, 0,
- 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0,228, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,144, 1,229, 2,127, 1,211, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,144, 1,229, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 80,173,190, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,
-224,178,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,105,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,106,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144,174,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,176,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67,
- 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65,
- 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1,
- 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,106,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,107,156, 26, 1, 0, 0, 0, 16,105,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0,176,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,177,190, 2, 0, 0, 0, 0,
-144,174,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,107,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
+ 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112,177,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,176,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64,
- 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,
-124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 48,109,156, 26,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,112,120,156, 26, 1, 0, 0, 0,176,103,156, 26, 1, 0, 0, 0, 16,105,156, 26,
+ 1, 0, 0, 0,208,107,156, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,240, 0, 0, 0,224,178,190, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48,186,190, 2, 0, 0, 0, 0,
- 80,173,190, 2, 0, 0, 0, 0,144,174,190, 2, 0, 0, 0, 0,112,177,190, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 96,110,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,111,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,192,111,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,113,156, 26, 1, 0, 0, 0, 96,110,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0,
+ 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2,
+ 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,180,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-128,181,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32,113,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,114,156, 26, 1, 0, 0, 0,192,111,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,
+102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128,114,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,115,156, 26, 1, 0, 0, 0, 32,113,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196,
+ 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,
+104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,181,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16,180,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,224,115,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,114,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,
+128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,117,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0, 64,117,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188,
+ 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62,
+ 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,
+184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188,
+ 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,
+136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,
+184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240,182,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,182,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
-237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,
-103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 48,186,190, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,178,190, 2, 0, 0, 0, 0,
- 16,180,190, 2, 0, 0, 0, 0,128,181,190, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,187,190, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0, 48,223,190, 2, 0, 0, 0, 0, 48,132,190, 2, 0, 0, 0, 0, 80,117,190, 2, 0, 0, 0, 0,
-176,117,190, 2, 0, 0, 0, 0,240,116,190, 2, 0, 0, 0, 0, 48,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,159, 1, 0, 0, 18, 18,255, 2,160, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80,191,190, 2, 0, 0, 0, 0, 32,222,190, 2, 0, 0, 0, 0,112,188,190, 2, 0, 0, 0, 0,
-224,189,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,188,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-224,189,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0,192, 63, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,255, 2, 26, 0,255, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,189,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,112,188,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 48, 65,
- 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,195, 67,238, 2, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,133, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,237, 2, 0, 0, 0, 0, 0, 0,133, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3,
- 2, 0, 0, 4, 10, 0,255, 2,134, 1,238, 2,134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255, 2,134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 0, 0, 0, 80,191,190, 2, 0, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0,
-224,194,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,192,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,112,193,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,193,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68,
- 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68,
- 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190,
+ 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,224,194,190, 2, 0, 0, 0, 0,
-169, 0, 0, 0, 1, 0, 0, 0,144,200,190, 2, 0, 0, 0, 0, 80,191,190, 2, 0, 0, 0, 0, 0,192,190, 2, 0, 0, 0, 0,
-112,193,190, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,112,120,156, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0,144,124,156, 26, 1, 0, 0, 0, 48,109,156, 26, 1, 0, 0, 0, 96,110,156, 26, 1, 0, 0, 0,224,115,156, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,121,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,123,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
+ 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,123,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,121,156, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
+ 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
+ 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144,124,156, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,120,156, 26, 1, 0, 0, 0,208,121,156, 26, 1, 0, 0, 0, 48,123,156, 26, 1, 0, 0, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,156,156, 26,
+ 1, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26,
+ 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,169, 1, 0, 0,
+ 38, 4, 0, 0, 9, 9,240, 5,126, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,129,156, 26,
+ 1, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0,112,126,156, 26, 1, 0, 0, 0,208,127,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,112,126,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,127,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0,169, 1, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,208,127,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,126,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,170, 86,234, 67, 86, 74,131, 68,206,103, 56, 67,
+ 25, 76,209, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 99, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,100, 2,240, 5,
+100, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0,195, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+144, 2, 0, 0, 48,129,156, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,192,134,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-176,197,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,199,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65,
+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32,199,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,197,190, 2, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,
-223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,
-205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
-144,200,190, 2, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 64,206,190, 2, 0, 0, 0, 0,224,194,190, 2, 0, 0, 0, 0,
-176,197,190, 2, 0, 0, 0, 0, 32,199,190, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,201,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 96,203,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67,
- 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,203,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,208,204,190, 2, 0, 0, 0, 0,240,201,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,132,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,133,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
+ 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,204,190, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,203,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0,
- 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,
-105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,133,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,132,156, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,
+194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,
+222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4,
+ 0, 0,240, 5, 92, 2,223, 5, 74, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,183, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 92, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 64,206,190, 2, 0, 0, 0, 0,
-163, 0, 0, 0, 1, 0, 0, 0,224,217,190, 2, 0, 0, 0, 0,144,200,190, 2, 0, 0, 0, 0,240,201,190, 2, 0, 0, 0, 0,
-208,204,190, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192,134,156, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 64,140,156, 26,
+ 1, 0, 0, 0, 48,129,156, 26, 1, 0, 0, 0, 0,132,156, 26, 1, 0, 0, 0, 96,133,156, 26, 1, 0, 0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112,207,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,208,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,
-225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 57, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32,136,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,137,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
+ 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68,
+ 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5,
+ 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-224,208,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,210,190, 2, 0, 0, 0, 0,112,207,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,
-251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 80,210,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,211,190, 2, 0, 0, 0, 0,224,208,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,
-251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192,211,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,213,190, 2, 0, 0, 0, 0, 80,210,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,
-251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48,213,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,211,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,
-251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,214,190, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
-160,214,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0,
- 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,
-164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,
-118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182,
- 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194,
- 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,
-118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,224,217,190, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
- 32,222,190, 2, 0, 0, 0, 0, 64,206,190, 2, 0, 0, 0, 0,112,207,190, 2, 0, 0, 0, 0, 48,213,190, 2, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 64,219,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,220,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,176,220,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64,219,190, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0, 32,222,190, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224,217,190, 2, 0, 0, 0, 0, 64,219,190, 2, 0, 0, 0, 0,176,220,190, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 48,223,190, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,255,190, 2, 0, 0, 0, 0,
-144,187,190, 2, 0, 0, 0, 0,144,116,190, 2, 0, 0, 0, 0, 16,115,190, 2, 0, 0, 0, 0,208,115,190, 2, 0, 0, 0, 0,
-240,116,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,161, 1, 0, 0, 21, 4, 0, 0,
- 9, 9,240, 5,117, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,226,190, 2, 0, 0, 0, 0,
- 48,254,190, 2, 0, 0, 0, 0, 16,224,190, 2, 0, 0, 0, 0,128,225,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 16,224,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,225,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128,137,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,138,156, 26, 1, 0, 0, 0, 32,136,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
-161, 1, 0, 0,186, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-128,225,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,224,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,170, 86,234, 67, 86, 74,131, 68,162, 32, 58, 67,175,111,208, 67,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5, 91, 2,240, 5, 91, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
-187, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 91, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,
-240,226,190, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,160,232,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,224,138,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
+ 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+240, 0, 0, 0, 64,140,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,151,156, 26, 1, 0, 0, 0,192,134,156, 26,
+ 1, 0, 0, 0, 32,136,156, 26, 1, 0, 0, 0,224,138,156, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,141,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,142,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,142,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,144,156, 26,
+ 1, 0, 0, 0,112,141,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,144,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,145,156, 26,
+ 1, 0, 0, 0,208,142,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,192,229,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,231,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65,
- 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5,
- 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,145,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,146,156, 26,
+ 1, 0, 0, 0, 48,144,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48,231,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192,229,190, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,194, 68, 91, 68,
-112,158, 93, 65, 8, 19,249, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,222, 5, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,
- 92, 2,223, 5, 74, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0,183, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 5, 92, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,146,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144,145,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,160,232,190, 2, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 80,238,190, 2, 0, 0, 0, 0,
-240,226,190, 2, 0, 0, 0, 0,192,229,190, 2, 0, 0, 0, 0, 48,231,190, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,148,156, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,148,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62,
+ 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62,
+ 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63,
+ 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,
+169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,
+102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62,
+ 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,
+135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62,
+ 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,
+169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,
+102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63,
+ 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 52, 81, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0,234,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,235,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112,235,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,236,190, 2, 0, 0, 0, 0, 0,234,190, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128,151,156, 26,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0, 64,140,156, 26, 1, 0, 0, 0,112,141,156, 26,
+ 1, 0, 0, 0,240,146,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,152,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 64,154,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,
-112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,154,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,152,156, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-224,236,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,235,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66,
- 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
-112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0,172, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,151,156, 26, 1, 0, 0, 0,224,152,156, 26, 1, 0, 0, 0, 64,154,156, 26,
+ 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,
- 80,238,190, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,240,249,190, 2, 0, 0, 0, 0,160,232,190, 2, 0, 0, 0, 0,
- 0,234,190, 2, 0, 0, 0, 0,224,236,190, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,156,156, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 48,192,156, 26, 1, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,192, 42,156, 26,
+ 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 2, 0, 0, 0, 0, 0, 0,167, 1, 0, 0, 18, 18,240, 2,168, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,160,156, 26, 1, 0, 0, 0, 48,191,156, 26, 1, 0, 0, 0,128,157,156, 26, 1, 0, 0, 0,224,158,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,157,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,158,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 60, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
+ 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,240, 2, 26, 0,240, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,158,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,157,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0,
+ 1,192, 55, 68, 0, 0, 0, 0, 0, 0,199, 67,223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4,
+ 10, 0,240, 2,142, 1,223, 2,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 26, 0, 0, 0,167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 2,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0, 64,160,156, 26, 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0,192,164,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,128,239,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,240,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4,
- 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,240,240,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,242,190, 2, 0, 0, 0, 0,
-128,239,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
-255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0,
- 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96,242,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,243,190, 2, 0, 0, 0, 0,
-240,240,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,
-120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,162,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,163,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
+ 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,208,243,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,245,190, 2, 0, 0, 0, 0,
- 96,242,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,
-122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,163,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,162,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,
+254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4,
+ 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 64,245,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208,243,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,192,164,156, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 80,170,156, 26,
+ 1, 0, 0, 0, 64,160,156, 26, 1, 0, 0, 0, 0,162,156, 26, 1, 0, 0, 0, 96,163,156, 26, 1, 0, 0, 0, 9, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,246,190, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0,176,246,190, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,
-184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63,
- 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,
-176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190,
- 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,
-222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,
-129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,
-224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67,
- 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,
-184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63,
- 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,
-222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,
-129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,
-237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240,249,190, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 48,254,190, 2, 0, 0, 0, 0, 80,238,190, 2, 0, 0, 0, 0,128,239,190, 2, 0, 0, 0, 0,
- 64,245,190, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,251,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-192,252,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,252,190, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80,251,190, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,
-112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2,
- 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48,254,190, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240,249,190, 2, 0, 0, 0, 0, 80,251,190, 2, 0, 0, 0, 0,192,252,190, 2, 0, 0, 0, 0,
- 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,167,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,240,168,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,255,190, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
-224, 34,191, 2, 0, 0, 0, 0, 48,223,190, 2, 0, 0, 0, 0,144,113,190, 2, 0, 0, 0, 0,144,116,190, 2, 0, 0, 0, 0,
-176,117,190, 2, 0, 0, 0, 0, 80,117,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0,
- 0, 0, 0, 0,159, 1, 0, 0, 18, 18,240, 2,160, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3,191, 2, 0, 0, 0, 0,208, 33,191, 2, 0, 0, 0, 0, 32, 0,191, 2, 0, 0, 0, 0,144, 1,191, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,168,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,167,156, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
+ 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,
+129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,
+129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32, 0,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 1,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 60, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65,
- 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 2,
- 26, 0,240, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,170,156, 26, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0,208,175,156, 26, 1, 0, 0, 0,192,164,156, 26, 1, 0, 0, 0,144,167,156, 26, 1, 0, 0, 0,240,168,156, 26,
+ 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144, 1,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 0,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 9, 67, 0, 0, 0, 0, 0,192, 55, 68,
- 0, 0, 0, 0, 0, 0,195, 67,223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,133, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,133, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,240, 2,
-134, 1,223, 2,134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,239, 2, 0, 0, 26, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240, 2,134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,112, 0, 0, 0, 0, 3,191, 2, 0, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0,144, 6,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 62, 62, 32, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 3,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 32, 5,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,171,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,173,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
+ 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68,
+ 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 5,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 3,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67,
- 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0,
- 0, 0, 0, 4, 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,173,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,174,156, 26,
+ 1, 0, 0, 0,176,171,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,144, 6,191, 2, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,
- 64, 12,191, 2, 0, 0, 0, 0, 0, 3,191, 2, 0, 0, 0, 0,176, 3,191, 2, 0, 0, 0, 0, 32, 5,191, 2, 0, 0, 0, 0,
- 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,174,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,173,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,
+239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65,
+ 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,208,175,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 16,187,156, 26,
+ 1, 0, 0, 0, 80,170,156, 26, 1, 0, 0, 0,176,171,156, 26, 1, 0, 0, 0,112,174,156, 26, 1, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,177,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96,178,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,178,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192,179,156, 26, 1, 0, 0, 0, 0,177,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,179,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32,181,156, 26, 1, 0, 0, 0, 96,178,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,181,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,128,182,156, 26, 1, 0, 0, 0,192,179,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,182,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,181,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,183,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,183,156, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
+ 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
+ 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62,
+ 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62,
+ 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,
+151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62,
+ 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 16,187,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,191,156, 26, 1, 0, 0, 0,208,175,156, 26,
+ 1, 0, 0, 0, 0,177,156, 26, 1, 0, 0, 0,128,182,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,188,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,189,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,
+126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,189,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,188,156, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48,191,156, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,187,156, 26, 1, 0, 0, 0,112,188,156, 26,
+ 1, 0, 0, 0,208,189,156, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,192,156, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,156,156, 26, 1, 0, 0, 0, 64, 44,156, 26,
+ 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 17, 3, 0, 0, 38, 4, 0, 0, 3, 3,144, 1, 22, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,195,156, 26, 1, 0, 0, 0,128,213,156, 26, 1, 0, 0, 0, 16,193,156, 26,
+ 1, 0, 0, 0,112,194,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,193,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,112,194,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 17, 3, 0, 0, 42, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,194,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,193,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,191, 67, 0, 0,106,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0,
+251, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0,
+251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,144, 1,252, 0,127, 1,234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 43, 3, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,195,156, 26, 1, 0, 0, 0,166, 0, 0, 0,
+ 1, 0, 0, 0, 0,201,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,183,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 80,183,149, 26, 1, 0, 0, 0,218, 0, 0, 0,
+ 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,197,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,197,156, 26,
+ 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0,
+ 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 64,198,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,199,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0,
+ 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 44, 1, 31, 0, 44, 1,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,
+160, 5, 0, 0,218, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 31, 0,
+ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,160,199,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,198,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,246,194,
+ 0, 0, 0, 0, 27, 1, 0, 0, 44, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 44, 1,141, 0, 27, 1,
+123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,
+160, 5, 0, 0, 77, 2, 0, 0,217, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1,141, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 9,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,208, 10,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 1, 0, 0, 0,201,156, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 96,206,156, 26, 1, 0, 0, 0,208,195,156, 26,
+ 1, 0, 0, 0, 64,198,156, 26, 1, 0, 0, 0,160,199,156, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 10,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 9,191, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68,
- 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0,
- 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0,
- 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63,
- 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 64, 12,191, 2, 0, 0, 0, 0,
-173, 0, 0, 0, 1, 0, 0, 0,240, 17,191, 2, 0, 0, 0, 0,144, 6,191, 2, 0, 0, 0, 0, 96, 9,191, 2, 0, 0, 0, 0,
-208, 10,191, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,202,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,203,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,
+111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 13,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 16, 15,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65,
- 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
- 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,203,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,205,156, 26, 1, 0, 0, 0, 64,202,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 15,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-128, 16,191, 2, 0, 0, 0, 0,160, 13,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,
+235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,205,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,203,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
+ 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,
+235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 16,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 15,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 96,206,156, 26,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,213,156, 26, 1, 0, 0, 0, 0,201,156, 26, 1, 0, 0, 0, 64,202,156, 26,
+ 1, 0, 0, 0, 0,205,156, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,240, 17,191, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,
-144, 29,191, 2, 0, 0, 0, 0, 64, 12,191, 2, 0, 0, 0, 0,160, 13,191, 2, 0, 0, 0, 0,128, 16,191, 2, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 19,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,144, 20,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 20,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 22,191, 2, 0, 0, 0, 0, 32, 19,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 22,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,112, 23,191, 2, 0, 0, 0, 0,144, 20,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 23,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224, 24,191, 2, 0, 0, 0, 0, 0, 22,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 24,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 23,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 26,191, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80, 26,191, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,
-166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,
-248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,
-170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,
-205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62,
- 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144,207,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,208,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,
+108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,240,208,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,207,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,
+108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0,144, 29,191, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208, 33,191, 2, 0, 0, 0, 0,
-240, 17,191, 2, 0, 0, 0, 0, 32, 19,191, 2, 0, 0, 0, 0,224, 24,191, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240, 30,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 32,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96, 32,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 30,191, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,210,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0, 80,210,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,
+115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
-208, 33,191, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 29,191, 2, 0, 0, 0, 0,
-240, 30,191, 2, 0, 0, 0, 0, 96, 32,191, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-224, 34,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,255,190, 2, 0, 0, 0, 0,
- 16,118,190, 2, 0, 0, 0, 0,208,115,190, 2, 0, 0, 0, 0,112,115,190, 2, 0, 0, 0, 0,112,118,190, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 5, 3, 0, 0, 21, 4, 0, 0, 3, 3,144, 1, 17, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 38,191, 2, 0, 0, 0, 0, 48, 57,191, 2, 0, 0, 0, 0,
-192, 35,191, 2, 0, 0, 0, 0, 48, 37,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 35,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48, 37,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 5, 3, 0, 0, 30, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128,213,156, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,206,156, 26, 1, 0, 0, 0,144,207,156, 26, 1, 0, 0, 0,240,208,156, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,112, 24,157, 26,
+ 1, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86,
+ 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0, 48,223,156, 26,
+ 1, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,208,249,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,217,156, 26,
+ 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0,208,216,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,217,156, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,218,156, 26,
+ 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0, 80,218,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,219,156, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0, 48,217,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0,240,217,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 80,218,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 80,218,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,176,218,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 16,219,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,240,217,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 16,219,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,176,218,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,223,156, 26, 1, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 16,219,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,223,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 80,218,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,208,216,156, 26,
+ 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 23,157, 26, 1, 0, 0, 0,240, 23,157, 26, 1, 0, 0, 0,112,224,156, 26, 1, 0, 0, 0,208,225,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,224,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,225,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,225,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,224,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,249,156, 26,
+ 1, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,176,218,156, 26,
+ 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0,
+ 38, 4, 0, 0, 6, 6,196, 3, 39, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,233,156, 26,
+ 1, 0, 0, 0,208,248,156, 26, 1, 0, 0, 0, 16,228,156, 26, 1, 0, 0, 0, 96,232,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 16,228,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,229,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,113, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,196, 3, 26, 0,196, 3,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+195, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,112,229,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,232,156, 26, 1, 0, 0, 0, 16,228,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4, 67,254,191,126,196,
+ 0, 0, 0, 0,133, 0, 0, 0,150, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,150, 0, 13, 4,133, 0,
+251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+149, 0, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 0, 13, 4,
+ 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,230,156, 26, 1, 0, 0, 0,208,230,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,208,230,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,
+110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,
+110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,
+108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,132, 0, 36, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,232,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,229,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0,128, 67,154,153, 69,191,205,204,226, 63,102,102,143,191, 51,179, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 3, 0, 0, 0, 0, 0, 0,
+ 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 3, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,192,233,156, 26, 1, 0, 0, 0,167, 0, 0, 0,
+ 1, 0, 0, 0,176,244,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,234,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0,236,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,236,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96,237,156, 26, 1, 0, 0, 0,160,234,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,237,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192,238,156, 26, 1, 0, 0, 0, 0,236,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,238,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32,240,156, 26, 1, 0, 0, 0, 96,237,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,240,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,238,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,241,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128,241,156, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
+ 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
+ 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62,
+ 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63,
+ 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,
+151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62,
+ 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 37,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 35,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67,
- 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,191, 67, 0, 0,101,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0,
- 18, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0,
- 18, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,144, 1,247, 0,127, 1,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 31, 3, 0, 0, 21, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 38,191, 2, 0, 0, 0, 0,
-166, 0, 0, 0, 1, 0, 0, 0, 80, 44,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0,176,244,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208,248,156, 26, 1, 0, 0, 0,192,233,156, 26,
+ 1, 0, 0, 0,160,234,156, 26, 1, 0, 0, 0, 32,240,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,246,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,247,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,
+126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,247,156, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,246,156, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,208,248,156, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,244,156, 26, 1, 0, 0, 0, 16,246,156, 26,
+ 1, 0, 0, 0,112,247,156, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,249,156, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0, 16,219,156, 26,
+ 1, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 38, 4, 0, 0, 1, 1,188, 3, 39, 4, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 18,157, 26, 1, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0,176,250,156, 26,
+ 1, 0, 0, 0, 64, 14,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,250,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 16,252,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,111, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 3, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,188, 3, 26, 0,188, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,252,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,144, 0,157, 26, 1, 0, 0, 0,176,250,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 96,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 96,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+148, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,149, 3,143, 0,131, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,149, 3, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,253,156, 26,
+ 1, 0, 0, 0, 0,255,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,253,156, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0,255,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 0,255,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,253,156, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 40,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 0,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,128, 3,157, 26, 1, 0, 0, 0, 16,252,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,100, 4, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 1,157, 26,
+ 1, 0, 0, 0,240, 1,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 1,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 16, 40,191, 2, 0, 0, 0, 0,
-218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 96, 40,191, 2, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,
- 96, 40,191, 2, 0, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 19, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 21, 0, 1, 0, 1, 0, 1, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,160,100,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,144,113,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,163,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,240,123,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80,145,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 16,119,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 16, 96,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 95,192, 2, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112, 41,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 42,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,150, 67,
- 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65,
- 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 44, 1,
- 31, 0, 44, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-117, 4, 0, 0,160, 5, 0, 0,218, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 44, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77,111,118,101, 32,116,111, 32, 76, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,224, 42,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112, 41,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67,
- 0, 0,246,194, 0, 0, 0, 0, 27, 1, 0, 0, 44, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 44, 1,
-141, 0, 27, 1,123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-117, 4, 0, 0,160, 5, 0, 0, 77, 2, 0, 0,217, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 44, 1,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,166,255,144, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 1, 0, 0, 80, 44,191, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,224, 49,191, 2, 0, 0, 0, 0,
-160, 38,191, 2, 0, 0, 0, 0,112, 41,191, 2, 0, 0, 0, 0,224, 42,191, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,128, 3,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 14,157, 26, 1, 0, 0, 0,144, 0,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196,
+ 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,
+251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
+128, 7, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 4,157, 26, 1, 0, 0, 0,176, 12,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,224, 4,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 6,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,
+106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,
+106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122,254,163, 0,110, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 6,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 8,157, 26, 1, 0, 0, 0,224, 4,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 45,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 47,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,
- 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0, 47,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 48,191, 2, 0, 0, 0, 0,144, 45,191, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 40,254,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 0, 8,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 9,157, 26, 1, 0, 0, 0,112, 6,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,252,163, 0, 59, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,
-112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 9,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 32, 11,157, 26, 1, 0, 0, 0, 0, 8,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112, 48,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66,
- 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,
-112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,
-224, 49,191, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48, 57,191, 2, 0, 0, 0, 0, 80, 44,191, 2, 0, 0, 0, 0,
-144, 45,191, 2, 0, 0, 0, 0,112, 48,191, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,189,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 32, 11,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 12,157, 26, 1, 0, 0, 0,144, 9,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97,
+ 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97,
+ 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,
+109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,252,163, 0, 0, 0, 20, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 12,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 11,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,
+105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,
+105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16, 51,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 52,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1,
- 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,141,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,128, 52,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 51,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 64, 14,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 3,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, 0, 0,
+128, 7, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 13, 4,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 53,191, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0,240, 53,191, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 15,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0,160, 15,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 14, 99,182, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 74,215, 76,190, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188,
+ 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62,
+ 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 85,145, 21, 63,206,249,224,190, 48,180, 81,191,
+184,158, 81,191, 34, 85,166, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 67,214,154,188,204,156,122, 63,138, 84,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 80, 85,147, 62,241,216, 35, 63, 96,133, 24,188,
+ 0, 0,224, 51,195, 15,188,190,130, 75, 53, 62,218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 15,173,201, 64,182,148,248,192,
+203,247,159,192,233, 74, 87, 65,245, 46,190,192, 89,106,234, 64, 45, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 85,145, 21, 63,206,249,224,190, 48,180, 81,191,
+184,158, 81,191, 34, 85,166, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 67,214,154,188,204,156,122, 63,138, 84,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 48, 57,191, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 49,191, 2, 0, 0, 0, 0, 16, 51,191, 2, 0, 0, 0, 0,
-128, 52,191, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 32, 59,191, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,
- 16,232,191, 2, 0, 0, 0, 0,128,112,190, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 48, 60,191, 2, 0, 0, 0, 0, 80, 64,191, 2, 0, 0, 0, 0,176, 64,191, 2, 0, 0, 0, 0,
-144, 72,191, 2, 0, 0, 0, 0, 0, 73,191, 2, 0, 0, 0, 0, 32,183,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48, 60,191, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,144, 60,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 60,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-240, 60,191, 2, 0, 0, 0, 0, 48, 60,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,240, 60,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80, 61,191, 2, 0, 0, 0, 0,
-144, 60,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 80, 61,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0,240, 60,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 16, 62,191, 2, 0, 0, 0, 0, 80, 61,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 62,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-112, 62,191, 2, 0, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,112, 62,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208, 62,191, 2, 0, 0, 0, 0,
- 16, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 80, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-208, 62,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0,112, 62,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,144, 63,191, 2, 0, 0, 0, 0,208, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-140, 4, 80, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 63,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-240, 63,191, 2, 0, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,240, 63,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80, 64,191, 2, 0, 0, 0, 0,
-144, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 80, 64,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 63,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 80, 1, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 64,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 32, 65,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 60,191, 2, 0, 0, 0, 0,
-240, 60,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 65,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,144, 65,191, 2, 0, 0, 0, 0,176, 64,191, 2, 0, 0, 0, 0,144, 60,191, 2, 0, 0, 0, 0,
-176, 61,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 65,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 0, 66,191, 2, 0, 0, 0, 0, 32, 65,191, 2, 0, 0, 0, 0,240, 60,191, 2, 0, 0, 0, 0,
- 16, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 66,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,112, 66,191, 2, 0, 0, 0, 0,144, 65,191, 2, 0, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0,
- 16, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 66,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,224, 66,191, 2, 0, 0, 0, 0, 0, 66,191, 2, 0, 0, 0, 0, 16, 62,191, 2, 0, 0, 0, 0,
-112, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 66,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 80, 67,191, 2, 0, 0, 0, 0,112, 66,191, 2, 0, 0, 0, 0, 80, 61,191, 2, 0, 0, 0, 0,
-112, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 67,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,192, 67,191, 2, 0, 0, 0, 0,224, 66,191, 2, 0, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0,
-208, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 67,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 48, 68,191, 2, 0, 0, 0, 0, 80, 67,191, 2, 0, 0, 0, 0,208, 62,191, 2, 0, 0, 0, 0,
- 48, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 68,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,160, 68,191, 2, 0, 0, 0, 0,192, 67,191, 2, 0, 0, 0, 0, 48, 60,191, 2, 0, 0, 0, 0,
-144, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 68,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 16, 69,191, 2, 0, 0, 0, 0, 48, 68,191, 2, 0, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0,
-144, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 69,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,128, 69,191, 2, 0, 0, 0, 0,160, 68,191, 2, 0, 0, 0, 0, 48, 60,191, 2, 0, 0, 0, 0,
-176, 61,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 69,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,240, 69,191, 2, 0, 0, 0, 0, 16, 69,191, 2, 0, 0, 0, 0,208, 62,191, 2, 0, 0, 0, 0,
-144, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 69,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 96, 70,191, 2, 0, 0, 0, 0,128, 69,191, 2, 0, 0, 0, 0,112, 62,191, 2, 0, 0, 0, 0,
- 48, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 70,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,208, 70,191, 2, 0, 0, 0, 0,240, 69,191, 2, 0, 0, 0, 0, 16, 62,191, 2, 0, 0, 0, 0,
-208, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 70,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 64, 71,191, 2, 0, 0, 0, 0, 96, 70,191, 2, 0, 0, 0, 0,144, 63,191, 2, 0, 0, 0, 0,
-240, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 71,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,176, 71,191, 2, 0, 0, 0, 0,208, 70,191, 2, 0, 0, 0, 0, 80, 61,191, 2, 0, 0, 0, 0,
-240, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 71,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 32, 72,191, 2, 0, 0, 0, 0, 64, 71,191, 2, 0, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0,
- 80, 64,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 72,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0,144, 72,191, 2, 0, 0, 0, 0,176, 71,191, 2, 0, 0, 0, 0,112, 62,191, 2, 0, 0, 0, 0,
- 80, 64,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 72,191, 2, 0, 0, 0, 0,
-192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 72,191, 2, 0, 0, 0, 0,240, 63,191, 2, 0, 0, 0, 0,
- 80, 64,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0, 73,191, 2, 0, 0, 0, 0,
-194, 0, 0, 0, 1, 0, 0, 0,192, 76,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0,
-144, 60,191, 2, 0, 0, 0, 0,240, 60,191, 2, 0, 0, 0, 0, 16, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128,231,191, 2, 0, 0, 0, 0,128,231,191, 2, 0, 0, 0, 0,224, 73,191, 2, 0, 0, 0, 0,
- 80, 75,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 73,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 80, 75,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 75,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,224, 73,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0,
- 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 76,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
- 96,128,191, 2, 0, 0, 0, 0, 0, 73,191, 2, 0, 0, 0, 0,240, 63,191, 2, 0, 0, 0, 0, 80, 64,191, 2, 0, 0, 0, 0,
-112, 62,191, 2, 0, 0, 0, 0, 80, 61,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 79, 1, 0, 0, 4, 4,116, 1, 80, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,111,191, 2, 0, 0, 0, 0, 80,127,191, 2, 0, 0, 0, 0,160, 77,191, 2, 0, 0, 0, 0, 16, 79,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,160, 77,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 79,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,192, 65, 0, 0,144, 65, 0, 0,149, 67,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 61, 68, 0, 0,184, 65,
- 0,192, 61, 68, 0, 0,184, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 24, 1,
- 26, 0, 24, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 6, 0, 0,128, 7, 0, 0, 79, 1, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 16, 79,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160, 77,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, 0, 0, 12,196, 0, 0, 0, 0, 0, 0, 0, 0,182,145,178, 67,
- 47,245,159,195, 0, 0, 0, 0, 99, 1, 0, 0,116, 1, 0, 0, 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 98, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 98, 1, 0, 0, 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,116, 1,
- 80, 1, 99, 1, 62, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-116, 1, 80, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 1, 0, 0, 96,111,191, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 16,123,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190,
+ 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,126, 31,231, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 6, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-160,112,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,114,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,211, 67, 0, 0, 0, 0, 0, 0,208, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,208, 18,157, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 1, 26, 0,167, 1, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0,
- 17, 1, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 1, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 20,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 21,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
+ 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 16,114,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,115,191, 2, 0, 0, 0, 0,160,112,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0,141, 2, 0, 0,
- 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,189, 0, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-128,115,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,116,191, 2, 0, 0, 0, 0, 16,114,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0,
- 43, 1, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240,116,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,118,191, 2, 0, 0, 0, 0,128,115,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 4, 0, 0, 51, 4, 0, 0,
- 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96,118,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,116,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0,
- 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 1,189, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,191, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
-208,119,191, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,169,170, 28, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0,
- 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,
-164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 53,194,123,191,222,160, 81,191,184,158, 81,191,
-115, 90,127, 63, 63,179,242, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 56,117, 85, 63,240,246, 70,188, 0,224, 32,182,
- 42, 13, 40,190, 78, 1,162, 61,203, 52,187, 62, 0, 0,149, 52,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194,
- 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62, 53,194,123,191,222,160, 81,191,184,158, 81,191,
-115, 90,127, 63, 63,179,242, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,208,166,141, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16,123,191, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
- 80,127,191, 2, 0, 0, 0, 0, 96,111,191, 2, 0, 0, 0, 0,160,112,191, 2, 0, 0, 0, 0, 96,118,191, 2, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112,124,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,125,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,224,125,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,124,191, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0, 80,127,191, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16,123,191, 2, 0, 0, 0, 0,112,124,191, 2, 0, 0, 0, 0,224,125,191, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 96,128,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,151,191, 2, 0, 0, 0, 0,
-192, 76,191, 2, 0, 0, 0, 0, 48, 60,191, 2, 0, 0, 0, 0,176, 61,191, 2, 0, 0, 0, 0,208, 62,191, 2, 0, 0, 0, 0,
-144, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139, 4, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,
- 6, 6,140, 4, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,135,191, 2, 0, 0, 0, 0,
-208,150,191, 2, 0, 0, 0, 0, 64,129,191, 2, 0, 0, 0, 0,192,133,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 64,129,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,130,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,145, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,139, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,140, 4, 26, 0,140, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-176,130,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,133,191, 2, 0, 0, 0, 0, 64,129,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 75, 67, 0,128,122,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 1,128,122,196, 0, 0, 0, 0,
-203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,251, 3, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,252, 3,203, 0,234, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0,
- 26, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,252, 3, 0, 0, 4, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 21,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 20,157, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
+ 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
+ 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192,133,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,130,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,154,153,121,191,205,204,252, 63, 0, 0,140,191, 0, 0, 6, 64,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,176, 3, 0, 0, 0, 0, 0, 0,252, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208, 18,157, 26, 1, 0, 0, 0, 48, 20,157, 26, 1, 0, 0, 0,144, 21,157, 26, 1, 0, 0, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,139, 4, 0, 0,
- 26, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 3,252, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,
- 48,135,191, 2, 0, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,144,146,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32,136,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,137,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,112, 24,157, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,
+100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0, 96, 36,157, 26,
+ 1, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0, 48,107,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 26,157, 26,
+ 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0,224, 25,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 26,157, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 27,157, 26,
+ 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0, 96, 27,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 28,157, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 39, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 29,157, 26,
+ 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0,224, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 29,157, 26,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 64, 26,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 0, 27,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 96, 27,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 96, 27,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,192, 27,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 32, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,128, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,224, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,160, 29,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0,160, 29,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,160, 29,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,160, 26,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,128, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 96, 36,157, 26, 1, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,224, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 36,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,224, 28,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,224, 25,157, 26,
+ 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144,128,157, 26, 1, 0, 0, 0,144,128,157, 26, 1, 0, 0, 0,160, 37,157, 26, 1, 0, 0, 0, 0, 39,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 37,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 39,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 39,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 37,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 52,157, 26,
+ 1, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,160, 29,157, 26,
+ 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+ 91, 0, 0, 0, 15, 15,129, 7, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,157, 26,
+ 1, 0, 0, 0,240, 50,157, 26, 1, 0, 0, 0, 64, 41,157, 26, 1, 0, 0, 0,160, 42,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 64, 41,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 42,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
- 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,160, 42,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,157, 26,
+ 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
+ 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,129, 7, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144,137,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,139,191, 2, 0, 0, 0, 0, 32,136,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
+128, 7, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0,139,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,140,191, 2, 0, 0, 0, 0,144,137,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
-111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112,140,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,141,191, 2, 0, 0, 0, 0, 0,139,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-224,141,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,140,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,
-111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,143,191, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
- 80,143,191, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0,
- 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,
-164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,
-253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,
-195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194,
- 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,
-253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144,146,191, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
-208,150,191, 2, 0, 0, 0, 0, 48,135,191, 2, 0, 0, 0, 0, 32,136,191, 2, 0, 0, 0, 0,224,141,191, 2, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,240,147,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,149,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96,149,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-240,147,191, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0,208,150,191, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144,146,191, 2, 0, 0, 0, 0,240,147,191, 2, 0, 0, 0, 0, 96,149,191, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0,224,151,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,183,191, 2, 0, 0, 0, 0,
- 96,128,191, 2, 0, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0,208, 62,191, 2, 0, 0, 0, 0, 16, 62,191, 2, 0, 0, 0, 0,
-112, 62,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,128, 7, 0, 0, 81, 1, 0, 0, 21, 4, 0, 0,
- 1, 1,244, 2,197, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,177,191, 2, 0, 0, 0, 0,
- 16,182,191, 2, 0, 0, 0, 0,192,152,191, 2, 0, 0, 0, 0, 32,173,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-192,152,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,154,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 61, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,243, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,244, 2, 26, 0,244, 2, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,128, 7, 0, 0,
- 81, 1, 0, 0,106, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 2, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+200, 0, 0, 0, 0, 44,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,240, 50,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 48,154,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,158,191, 2, 0, 0, 0, 0,192,152,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,141, 4, 0, 0,
-107, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,171, 2, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-224,158,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,161,191, 2, 0, 0, 0, 0, 48,154,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,128, 7, 0, 0,
-107, 1, 0, 0,107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240,161,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,173,191, 2, 0, 0, 0, 0,224,158,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 77,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,235,195, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,232, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,232, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,233, 1,163, 0,215, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,
-107, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 32,173,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,161,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,128, 7, 0, 0,
-107, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 2,171, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,174,191, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
-144,174,191, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,160,246,154, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0,
- 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,
-188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63,178,157,229, 62,131, 5,249,190,222,160, 81,191,184,158, 81,191,
-117, 90,127, 63,195, 15,112, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,251,178,138, 63,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0,154,211, 93, 64, 0, 25, 95, 64, 52,240,191, 62,121,116, 85, 63,112,188, 70,188, 0, 0,180,181,
-162,230,169,190,175,201, 35, 62,102, 67, 61, 63, 0, 0, 90, 53, 37,182, 14,195,119, 34,124, 66, 49, 99,155,194,199,253, 71,194,
-254,229, 13, 67,182,178,122,194,141,128,154, 66,213,255, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63,178,157,229, 62,131, 5,249,190,222,160, 81,191,184,158, 81,191,
-117, 90,127, 63,195, 15,112, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,251,178,138, 63,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0,154,211, 93, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
- 0, 25, 95, 64,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,208,131, 30, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,208,177,191, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
- 16,182,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48,179,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,180,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,160,180,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48,179,191, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0, 16,182,191, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208,177,191, 2, 0, 0, 0, 0, 48,179,191, 2, 0, 0, 0, 0,160,180,191, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 32,183,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224,151,191, 2, 0, 0, 0, 0,144, 63,191, 2, 0, 0, 0, 0, 48, 63,191, 2, 0, 0, 0, 0, 80, 64,191, 2, 0, 0, 0, 0,
-240, 63,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0, 11, 6, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0,
- 4, 4,127, 1, 80, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,214,191, 2, 0, 0, 0, 0,
-112,230,191, 2, 0, 0, 0, 0, 0,184,191, 2, 0, 0, 0, 0,112,185,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0,184,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,185,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,192, 65, 0, 0, 0, 0, 0,128,133, 67, 0, 0, 0, 0, 0, 0,192, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,192, 61, 68, 0, 0,184, 65, 0,192, 61, 68, 0, 0,184, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 11, 1, 24, 0, 11, 1, 24, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0, 11, 6, 0, 0,
- 79, 1, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
- 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112,185,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,184, 67, 0, 0,179,195, 0, 0, 0, 0, 0, 0, 0, 0, 91, 26,184, 67, 83,245,159,195, 0, 0, 0, 0,
-110, 1, 0, 0,127, 1, 0, 0, 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0,109, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,109, 1, 0, 0, 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,127, 1, 80, 1,110, 1, 62, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0, 11, 6, 0, 0,
- 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 1, 80, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,
-128,214,191, 2, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 48,226,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 0, 45,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 46,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 96, 46,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,215,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48,217,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,211, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 1, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 1, 26, 0,167, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0, 17, 1, 0, 0, 42, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,217,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,160,218,191, 2, 0, 0, 0, 0,192,215,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
- 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0,141, 2, 0, 0, 43, 1, 0, 0,231, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,189, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 47,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
+248, 2, 0, 0,192, 47,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,
+115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191,
+ 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,218,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 16,220,191, 2, 0, 0, 0, 0, 48,217,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0, 43, 1, 0, 0, 43, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,220,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,128,221,191, 2, 0, 0, 0, 0,160,218,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 4, 0, 0, 51, 4, 0, 0, 43, 1, 0, 0,231, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,221,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,220,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240, 50,157, 26, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,157, 26, 1, 0, 0, 0, 0, 45,157, 26, 1, 0, 0, 0, 96, 46,157, 26,
+ 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80, 52,157, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 73,157, 26,
+ 1, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0,192, 27,157, 26,
+ 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 93, 0, 0, 0,
+247, 1, 0, 0, 8, 8,129, 7,155, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 57,157, 26,
+ 1, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0, 48, 53,157, 26, 1, 0, 0, 0,240, 55,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 48, 53,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 54,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 31, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144, 54,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 55,157, 26, 1, 0, 0, 0, 48, 53,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,183,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,183,195,
+ 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,129, 1,203, 0,
+111, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6, 0, 0,
+128, 7, 0, 0,119, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,129, 1,
+ 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,240, 55,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 54,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
+ 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,165, 6,129, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+164, 6, 0, 0,119, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,129, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0, 43, 1, 0, 0,231, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 1,189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+240, 0, 0, 0, 80, 57,157, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,144, 68,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240,222,191, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,222,191, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,170, 28, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,
-166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,
-248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 53,194,123,191,222,160, 81,191,184,158, 81,191,115, 90,127, 63, 63,179,242, 62,
- 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65,217,236,191, 62, 56,117, 85, 63,240,246, 70,188, 0,224, 32,182, 42, 13, 40,190, 78, 1,162, 61,
-203, 52,187, 62, 0, 0,149, 52,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,
-205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62,
- 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-214,211,111,193, 0, 0,128, 63,177,157,229, 62, 53,194,123,191,222,160, 81,191,184,158, 81,191,115, 90,127, 63, 63,179,242, 62,
- 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,
- 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,208,166,141, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 58,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 59,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0,128,191, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
+ 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0,252, 5, 26, 0,252, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,252, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0, 48,226,191, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,112,230,191, 2, 0, 0, 0, 0,
-128,214,191, 2, 0, 0, 0, 0,192,215,191, 2, 0, 0, 0, 0,128,221,191, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144,227,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,229,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 59,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 61,157, 26,
+ 1, 0, 0, 0,128, 58,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0,113, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0,229,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,227,191, 2, 0, 0, 0, 0,
- 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,
-205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
-127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,
-112,230,191, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,226,191, 2, 0, 0, 0, 0,
-144,227,191, 2, 0, 0, 0, 0, 0,229,191, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,
- 16,232,191, 2, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 59,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,233,191, 2, 0, 0, 0, 0,
- 64,237,191, 2, 0, 0, 0, 0,160,237,191, 2, 0, 0, 0, 0, 16,245,191, 2, 0, 0, 0, 0,128,245,191, 2, 0, 0, 0, 0,
-144, 62,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 32,233,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128,233,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-128,233,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,233,191, 2, 0, 0, 0, 0, 32,233,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,233,191, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 64,234,191, 2, 0, 0, 0, 0,128,233,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,234,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
-160,234,191, 2, 0, 0, 0, 0,224,233,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0,235,191, 2, 0, 0, 0, 0,
- 64,234,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
- 0,235,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0,192,235,191, 2, 0, 0, 0, 0, 0,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7,240, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,235,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 32,236,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0,
-192,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,
-128,236,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0,
-191, 0, 0, 0, 1, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 3,240, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 88, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,160,237,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,238,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128,233,191, 2, 0, 0, 0, 0,224,233,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 16,238,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,238,191, 2, 0, 0, 0, 0,
-160,237,191, 2, 0, 0, 0, 0,128,233,191, 2, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,128,238,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,238,191, 2, 0, 0, 0, 0,
- 16,238,191, 2, 0, 0, 0, 0,224,233,191, 2, 0, 0, 0, 0, 0,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,240,238,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,239,191, 2, 0, 0, 0, 0,
-128,238,191, 2, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0, 0,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 96,239,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,239,191, 2, 0, 0, 0, 0,
-240,238,191, 2, 0, 0, 0, 0, 0,235,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,208,239,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,240,191, 2, 0, 0, 0, 0,
- 96,239,191, 2, 0, 0, 0, 0, 32,233,191, 2, 0, 0, 0, 0,192,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 64,240,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,240,191, 2, 0, 0, 0, 0,
-208,239,191, 2, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,176,240,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,241,191, 2, 0, 0, 0, 0,
- 64,240,191, 2, 0, 0, 0, 0,192,235,191, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 32,241,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,241,191, 2, 0, 0, 0, 0,
-176,240,191, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,144,241,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,242,191, 2, 0, 0, 0, 0,
- 32,241,191, 2, 0, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 0,242,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,242,191, 2, 0, 0, 0, 0,
-144,241,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,112,242,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,242,191, 2, 0, 0, 0, 0,
- 0,242,191, 2, 0, 0, 0, 0, 64,234,191, 2, 0, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,224,242,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,243,191, 2, 0, 0, 0, 0,
-112,242,191, 2, 0, 0, 0, 0,192,235,191, 2, 0, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 80,243,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,243,191, 2, 0, 0, 0, 0,
-224,242,191, 2, 0, 0, 0, 0, 32,233,191, 2, 0, 0, 0, 0, 64,234,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,192,243,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,244,191, 2, 0, 0, 0, 0,
- 80,243,191, 2, 0, 0, 0, 0, 0,235,191, 2, 0, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 48,244,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,244,191, 2, 0, 0, 0, 0,
-192,243,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,160,244,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,245,191, 2, 0, 0, 0, 0,
- 48,244,191, 2, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 16,245,191, 2, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160,244,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0,128,245,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,249,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0,128,233,191, 2, 0, 0, 0, 0,224,233,191, 2, 0, 0, 0, 0,
- 0,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0,
- 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 84,192, 2, 0, 0, 0, 0,
-176, 84,192, 2, 0, 0, 0, 0, 96,246,191, 2, 0, 0, 0, 0,208,247,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96,246,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,247,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-208,247,191, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,246,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,
-112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 61,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 62,157, 26,
+ 1, 0, 0, 0,224, 59,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
+ 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
- 64,249,191, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 5,192, 2, 0, 0, 0, 0,128,245,191, 2, 0, 0, 0, 0,
- 32,233,191, 2, 0, 0, 0, 0,192,235,191, 2, 0, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0, 64,234,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 15, 15,129, 7, 88, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253,191, 2, 0, 0, 0, 0, 48, 4,192, 2, 0, 0, 0, 0,
- 32,250,191, 2, 0, 0, 0, 0,144,251,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,250,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,144,251,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 62,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 64,157, 26,
+ 1, 0, 0, 0, 64, 61,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
+ 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,251, 5, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,251,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,250,191, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 18, 0, 0, 0, 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,129, 7, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 87, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 64,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 62,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 0,253,191, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 48, 4,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,252, 5,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 65,157, 26,
+ 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 65,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 79,145, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62,
+ 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62,
+ 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63,
+ 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,
+241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,
+119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,112,240,191, 62,
+108,116, 85, 63, 80,184, 70,188, 0, 0, 46,180,159, 49,181,189,125,172, 46, 61, 7,213, 73, 62, 0, 64,143,180,182,107, 25,196,
+ 13,135,135, 67, 70, 12,167,195, 71, 0, 72,194,225, 56, 25, 68, 38, 90,135,195,237,212,166, 67, 84, 2, 72, 66, 68,239,209, 62,
+ 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,
+241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,
+119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,254,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,128,255,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63,
+ 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 13,114,156, 58,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,255,191, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,254,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144, 68,157, 26,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0, 80, 57,157, 26, 1, 0, 0, 0,128, 58,157, 26,
+ 1, 0, 0, 0, 0, 64,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 69,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 80, 71,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 0,192, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240, 0,192, 2, 0, 0, 0, 0,
-156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,
-226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0,
- 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,
-184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 71,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 69,157, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0,172, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 68,157, 26, 1, 0, 0, 0,240, 69,157, 26, 1, 0, 0, 0, 80, 71,157, 26,
+ 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 32, 1, 0, 0, 48, 4,192, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,253,191, 2, 0, 0, 0, 0, 16,254,191, 2, 0, 0, 0, 0,128,255,191, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,
-159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,
-144, 5,192, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 27,192, 2, 0, 0, 0, 0, 64,249,191, 2, 0, 0, 0, 0,
-192,235,191, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0, 64,237,191, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 89, 0, 0, 0,239, 1, 0, 0, 8, 8,129, 7,151, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 10,192, 2, 0, 0, 0, 0,160, 26,192, 2, 0, 0, 0, 0,
-112, 6,192, 2, 0, 0, 0, 0, 80, 9,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 6,192, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0,224, 7,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 31, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 89, 0, 0, 0,114, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 73,157, 26, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 48,107,157, 26, 1, 0, 0, 0, 80, 52,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 0, 27,157, 26,
+ 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 3, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 2, 2, 80, 3, 46, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0, 48,106,157, 26, 1, 0, 0, 0,144, 74,157, 26, 1, 0, 0, 0,176, 78,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 74,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 75,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 84, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68,
+ 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
+ 10, 0, 80, 3, 26, 0, 80, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0,249, 1, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 7,192, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 80, 9,192, 2, 0, 0, 0, 0,112, 6,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67,
- 0,128,181,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,181,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0,
- 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0,
- 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
- 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,125, 1,203, 0,107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6, 0, 0,128, 7, 0, 0,115, 0, 0, 0,239, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,125, 1, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 75,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 77,157, 26,
+ 1, 0, 0, 0,144, 74,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 72, 67, 0,128, 0,196, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0, 0, 0, 0, 0,
+199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4,
+ 6, 0,217, 0, 20, 2,200, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0, 20, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 9,192, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 7,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,124, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0,
- 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,
-105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,165, 6,125, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, 6, 0, 0,115, 0, 0, 0,239, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,125, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 77,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 78,157, 26,
+ 1, 0, 0, 0,240, 75,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,192, 10,192, 2, 0, 0, 0, 0,
-163, 0, 0, 0, 1, 0, 0, 0, 96, 22,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 3, 0, 0, 79, 3, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 78,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 77,157, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0, 18, 0, 0, 0,
+118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0,111, 18,131, 58,
+111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0,119, 2, 20, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0, 0, 0, 79, 3, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,119, 2, 20, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-240, 11,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 13,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,191, 68, 0, 0, 0, 0, 0, 0,208, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,251, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,252, 5, 26, 0,252, 5, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,
- 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 5, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0,192, 85,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96, 13,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 14,192, 2, 0, 0, 0, 0,240, 11,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,113, 1, 0, 0, 5, 0,
- 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-208, 14,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 16,192, 2, 0, 0, 0, 0, 96, 13,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
-143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,
-111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,
- 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 64, 16,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 17,192, 2, 0, 0, 0, 0,208, 14,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,
-163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,251, 5, 0, 0,
-111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-176, 17,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,
-111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 5,113, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 19,192, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,
- 32, 19,192, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,200, 79,145, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0,
- 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,
-164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,
-117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,112,240,191, 62,108,116, 85, 63, 80,184, 70,188, 0, 0, 46,180,
-159, 49,181,189,125,172, 46, 61, 7,213, 73, 62, 0, 64,143,180,182,107, 25,196, 13,135,135, 67, 70, 12,167,195, 71, 0, 72,194,
-225, 56, 25, 68, 38, 90,135,195,237,212,166, 67, 84, 2, 72, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0,
- 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,
-117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,
-214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 13,114,156, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96, 22,192, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,
-160, 26,192, 2, 0, 0, 0, 0,192, 10,192, 2, 0, 0, 0, 0,240, 11,192, 2, 0, 0, 0, 0,176, 17,192, 2, 0, 0, 0, 0,
- 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,192, 23,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 25,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65,
- 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4,
- 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 48, 25,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 23,192, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67,
- 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66,
- 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,
-122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,200, 0, 0, 0,160, 26,192, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 22,192, 2, 0, 0, 0, 0,192, 23,192, 2, 0, 0, 0, 0, 48, 25,192, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0,176, 27,192, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 62,192, 2, 0, 0, 0, 0,
-144, 5,192, 2, 0, 0, 0, 0,128,236,191, 2, 0, 0, 0, 0,160,234,191, 2, 0, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0,
-224,236,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0,241, 1, 0, 0, 21, 4, 0, 0,
- 2, 2, 80, 3, 37, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 34,192, 2, 0, 0, 0, 0,
-128, 61,192, 2, 0, 0, 0, 0,144, 28,192, 2, 0, 0, 0, 0,224, 32,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-144, 28,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 30,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 3, 26, 0, 80, 3, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0,
-241, 1, 0, 0, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 26, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 0, 30,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 31,192, 2, 0, 0, 0, 0,144, 28,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0,128,252,195, 0, 0, 0, 0,
-200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 11, 2,200, 0,249, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,
- 11, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 11, 2, 0, 0, 2, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-112, 31,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 32,192, 2, 0, 0, 0, 0, 0, 30,192, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 81,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 81,157, 26,
+ 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 81,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 83,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 38, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 2, 26, 0,152, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 83,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96, 84,157, 26, 1, 0, 0, 0,160, 81,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 67, 0,128, 4,196, 0, 0, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+ 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,181, 0, 24, 2,181, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 24, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 79, 3, 0, 0,
- 11, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0,
- 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 84,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,157, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,128, 4,196, 0, 0, 64,193,210, 1, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,
+ 23, 2, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 18, 0, 0, 0,
+ 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,227, 1, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 0, 0,151, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
-224, 32,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 31,192, 2, 0, 0, 0, 0,
- 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71,
- 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,119, 2, 11, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 79, 3, 0, 0,
- 11, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 2, 11, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,192, 85,157, 26, 1, 0, 0, 0, 21, 1, 0, 0,
+ 1, 0, 0, 0, 32, 91,157, 26, 1, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0,160, 81,157, 26, 1, 0, 0, 0, 96, 84,157, 26,
+ 1, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,
- 80, 34,192, 2, 0, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, 64, 40,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 87,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96, 88,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-144, 35,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 35,192, 2, 0, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0,
- 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,240, 35,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 37,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 38, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65,
- 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 2,
- 26, 0,152, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 2, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-152, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 88,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192, 89,157, 26, 1, 0, 0, 0, 0, 87,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,
+163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,
+163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 96, 37,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 38,192, 2, 0, 0, 0, 0,
-240, 35,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 67,
- 0,128, 4,196, 0, 0, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 0, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,181, 0,
- 24, 2,181, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,180, 0, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-181, 0, 24, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 89,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 88,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,
+164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,208, 38,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 37,192, 2, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68,
- 0,128, 4,196, 0, 0, 64,193,210, 1, 0, 0,227, 1, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0,209, 1, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,227, 1,
- 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-181, 0, 0, 0,151, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-227, 1, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 32, 91,157, 26, 1, 0, 0, 0,167, 0, 0, 0,
+ 1, 0, 0, 0, 16,102,157, 26, 1, 0, 0, 0,192, 85,157, 26, 1, 0, 0, 0, 0, 87,157, 26, 1, 0, 0, 0,192, 89,157, 26,
+ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 8, 1, 0, 0, 64, 40,192, 2, 0, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0,224, 45,192, 2, 0, 0, 0, 0,
- 80, 34,192, 2, 0, 0, 0, 0,240, 35,192, 2, 0, 0, 0, 0,208, 38,192, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 92,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 96, 93,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 93,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192, 94,157, 26, 1, 0, 0, 0, 0, 92,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+ 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 94,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32, 96,157, 26, 1, 0, 0, 0, 96, 93,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 96,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,128, 97,157, 26, 1, 0, 0, 0,192, 94,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
+121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 97,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 96,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 85,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144, 41,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 43,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65,
- 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3,
- 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 0, 43,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 44,192, 2, 0, 0, 0, 0,
-144, 41,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67,
- 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,
-164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224, 98,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224, 98,157, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188,
+ 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
+ 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
+ 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62,
+ 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63,
+ 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,
+151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
+ 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62,
+ 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112, 44,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64,
- 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 1, 0, 0, 16,102,157, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,106,157, 26, 1, 0, 0, 0, 32, 91,157, 26,
+ 1, 0, 0, 0, 0, 92,157, 26, 1, 0, 0, 0,128, 97,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
+ 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,103,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,104,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,
+126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,168, 0, 0, 0,224, 45,192, 2, 0, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 64, 57,192, 2, 0, 0, 0, 0,
- 64, 40,192, 2, 0, 0, 0, 0,144, 41,192, 2, 0, 0, 0, 0,112, 44,192, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,104,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,103,157, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,
+248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,208, 46,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 48,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65,
- 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2,
- 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 64, 48,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 49,192, 2, 0, 0, 0, 0,
-208, 46,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,
-255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0,
- 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,176, 49,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 51,192, 2, 0, 0, 0, 0,
- 64, 48,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,
- 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,
-120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 32, 51,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 52,192, 2, 0, 0, 0, 0,
-176, 49,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,
- 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,
-122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,144, 52,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 51,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,192, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,248, 2, 0, 0, 0, 54,192, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,
-184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63,
- 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,
-176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190,
- 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,
-222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,
-129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,
-224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67,
- 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,
-184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63,
- 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,
-222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,
-129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,
-237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48,106,157, 26,
+ 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,102,157, 26, 1, 0, 0, 0,112,103,157, 26,
+ 1, 0, 0, 0,208,104,157, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 64, 57,192, 2, 0, 0, 0, 0,
-157, 0, 0, 0, 1, 0, 0, 0,128, 61,192, 2, 0, 0, 0, 0,224, 45,192, 2, 0, 0, 0, 0,208, 46,192, 2, 0, 0, 0, 0,
-144, 52,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,
-176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,107,157, 26,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 73,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
+ 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 8, 8, 48, 4, 46, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0,144,127,157, 26, 1, 0, 0, 0, 16,108,157, 26,
+ 1, 0, 0, 0,208,110,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,108,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,112,109,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 4, 0, 0, 0, 0, 0, 0,
+ 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, 0,224,156, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 56, 4, 24, 0, 56, 4, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 58,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 16, 60,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,109,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,208,110,157, 26, 1, 0, 0, 0, 16,108,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 60,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,160, 58,192, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,
-112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2,
- 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,128, 61,192, 2, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 57,192, 2, 0, 0, 0, 0,160, 58,192, 2, 0, 0, 0, 0, 16, 60,192, 2, 0, 0, 0, 0,
- 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,110,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,109,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 45, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0,
+ 45, 2, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 48, 4, 46, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 46, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144, 62,192, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176, 27,192, 2, 0, 0, 0, 0,224,236,191, 2, 0, 0, 0, 0, 32,236,191, 2, 0, 0, 0, 0,
- 0,235,191, 2, 0, 0, 0, 0, 96,235,191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,
-241, 1, 0, 0, 21, 4, 0, 0, 8, 8, 48, 4, 37, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 67,192, 2, 0, 0, 0, 0,160, 83,192, 2, 0, 0, 0, 0,112, 63,192, 2, 0, 0, 0, 0, 80, 66,192, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0,163, 0, 0, 0,
+ 1, 0, 0, 0,112,123,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,112, 63,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 64,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68,
- 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 4, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65,
- 0,224,156, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 56, 4,
- 24, 0, 56, 4, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 3, 0, 0,128, 7, 0, 0,241, 1, 0, 0,241, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0,224, 64,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 66,192, 2, 0, 0, 0, 0,
-112, 63,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,113,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,114,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,
+250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,114,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,116,157, 26, 1, 0, 0, 0, 96,113,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,
+160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,116,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,117,157, 26, 1, 0, 0, 0,192,114,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,
+160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,
+251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,117,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,118,157, 26, 1, 0, 0, 0, 32,116,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,
+180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,118,157, 26,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,
+ 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,120,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64,120,157, 26,
+ 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128,
+ 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,
+143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,
+142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,
+111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63,
+ 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,
+250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,
+160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,
+143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63,
+ 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,
+214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0,128, 7, 0, 0,241, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 80, 66,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-224, 64,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 36, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0, 36, 2, 0, 0, 0, 0, 32, 65, 0, 0,128, 64,
- 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 48, 4,
- 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 3, 0, 0,128, 7, 0, 0,241, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 4, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,112,123,157, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,144,127,157, 26,
+ 1, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0, 96,113,157, 26, 1, 0, 0, 0,224,118,157, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60,
+ 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
+ 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,208,124,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,126,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0,
+ 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
+ 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0,
+ 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,240, 0, 0, 0,192, 67,192, 2, 0, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 96, 79,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 48,126,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,124,157, 26,
+ 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
+ 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
+ 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+200, 0, 0, 0,144,127,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,123,157, 26,
+ 1, 0, 0, 0,208,124,157, 26, 1, 0, 0, 0, 48,126,157, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 68,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 96, 70,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65,
- 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
- 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3,
- 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 70,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-208, 71,192, 2, 0, 0, 0, 0,240, 68,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0,
+ 0, 6, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0,154, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101,
+ 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0,208,129,157, 26, 1, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,130,157, 26, 1, 0, 0, 0, 80,104,158, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 25, 0,141, 0,128, 7,
+ 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 0, 0,200, 66,
+ 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 71,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 64, 73,192, 2, 0, 0, 0, 0, 96, 70,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0,
- 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 73,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
-176, 74,192, 2, 0, 0, 0, 0,208, 71,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0,
- 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 74,192, 2, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 64, 73,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 76,192, 2, 0, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 32, 76,192, 2, 0, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,
- 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
- 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,
-185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,
-180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,
-147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
-217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,
-215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66,
- 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,
-162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,
-180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,
-147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,
-218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,
+205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 6, 0, 0, 0,
+ 16, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,
+180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68,
+ 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67,
+ 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 94, 3,
+ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,129,157, 26,
+ 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,112,129,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0, 0, 0,194, 2,214, 1, 48, 86, 25, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,129,157, 26,
+ 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,208,129,157, 26, 1, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 2, 0, 0, 0, 0, 4, 0, 0,144, 3, 18, 3, 48,160, 26, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,129,157, 26,
+ 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,129,157, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 3, 0, 0, 0, 0, 4, 0, 0,156, 0, 54, 2, 48, 80, 25, 4, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0, 48,130,157, 26,
+ 1, 0, 0, 0,150, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,
+205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0,
+ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0,
+ 5, 0,255,255, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0,
+ 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0,
+ 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,152, 0, 0, 0,112,132,157, 26,
+ 1, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 63,145,137, 68, 66,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 64,133,157, 26, 1, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,
+111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65,
+ 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,112,135,157, 26, 1, 0, 0, 0, 2, 0, 0, 0,
+ 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,
- 96, 79,192, 2, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160, 83,192, 2, 0, 0, 0, 0,192, 67,192, 2, 0, 0, 0, 0,
-240, 68,192, 2, 0, 0, 0, 0,176, 74,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 7, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 80,192, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 48, 82,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68,
- 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,137,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,135,157, 26,
+ 1, 0, 0, 0, 74, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,224,136,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 82,192, 2, 0, 0, 0, 0,
-195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 80,192, 2, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67,
- 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,
- 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65,
- 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,160, 83,192, 2, 0, 0, 0, 0,
-172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 79,192, 2, 0, 0, 0, 0,192, 80,192, 2, 0, 0, 0, 0,
- 48, 82,192, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,136,157, 26, 1, 0, 0, 0, 72, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,137,157, 26,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,216, 1, 0, 0,144,137,157, 26,
+ 1, 0, 0, 0,130, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 0, 0, 0, 0,205,204,204, 61,205,204,204, 61,205,204,204, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,
+ 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0, 0, 6, 0, 0, 64, 85,192, 2, 0, 0, 0, 0,
-154, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,108,192, 2, 0, 0, 0, 0,
-160,100,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 91,192, 2, 0, 0, 0, 0,
- 96, 92,192, 2, 0, 0, 0, 0,128, 91,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208, 92,192, 2, 0, 0, 0, 0,208,207,131, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0,
- 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 25, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0,
- 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
- 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 94,192, 2, 0, 0, 0, 0,
-144, 94,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 0, 0,200, 66, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0,160,139,157, 26, 1, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 84,101,
+120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0,144,140,157, 26,
+ 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 74, 25, 4, 1, 0, 0, 0,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0, 25, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,214,152, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0, 64,214,152, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0,
+ 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+112,132,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,
+192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188,
+ 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62,
+ 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179,
+ 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63,
+ 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52,
+ 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63,
+ 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0,
+ 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,
+143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 6, 0, 0, 0, 16, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
-173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,248,133, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0,
- 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0,
- 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 5, 0,128, 7, 56, 4, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 91,192, 2, 0, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,
-240, 91,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,176, 2,229, 1,
-144,113,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 91,192, 2, 0, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,
- 96, 92,192, 2, 0, 0, 0, 0,128, 91,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,121, 3, 24, 3,
- 16,119,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 92,192, 2, 0, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 91,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,152, 0, 67, 2,
-176,108,192, 2, 0, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0,208, 92,192, 2, 0, 0, 0, 0,150, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0, 1, 0,
-205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0,
- 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 50, 0, 10, 0, 0, 0,
- 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0,
- 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,
-102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0,
-144, 94,192, 2, 0, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 32, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,152, 0, 0, 0, 48, 95,192, 2, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,145,137, 68, 66,205,204,204, 61,
- 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0,
- 16, 96,192, 2, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0,
+ 48, 86, 25, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,160, 26, 4, 1, 0, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0,128, 63, 80, 98,192, 2, 0, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66,
- 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0,
- 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48,100,192, 2, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 80, 98,192, 2, 0, 0, 0, 0, 74, 1, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,
-242, 4, 53,191,243, 4, 53, 63,208, 99,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 12, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,150, 90, 3, 1, 0, 0, 0,
+208,161, 89, 3, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-208, 99,192, 2, 0, 0, 0, 0, 72, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,100,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,216, 1, 0, 0,160,100,192, 2, 0, 0, 0, 0,130, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,128, 62,
- 0, 0,128, 62, 0, 0, 0, 0,205,204,204, 61,205,204,204, 61,205,204,204, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
-205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,
- 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61,
- 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0,
-192,102,192, 2, 0, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 84,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 1, 0, 0, 0,176,103,192, 2, 0, 0, 0, 0,176,103,192, 2, 0, 0, 0, 0,176,103,192, 2, 0, 0, 0, 0,
-176,103,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,104,192, 2, 0, 0, 0, 0,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0,176,103,192, 2, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32,104,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70,
- 68, 65, 84, 65, 4, 0, 0, 0, 32,104,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,
-152, 4, 0, 0,176,108,192, 2, 0, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0,144,113,192, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,
-114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 95,192, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62,
- 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192,
- 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63,
- 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41,
- 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63,
- 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39,
- 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,
-187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0,144,113,192, 2, 0, 0, 0, 0,119, 0, 0, 0,
- 1, 0, 0, 0, 16,119,192, 2, 0, 0, 0, 0,176,108,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,112,115,140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,176,163,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,118,192, 2, 0, 0, 0, 0,192,118,192, 2, 0, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,
-179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191,
- 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62,
- 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63,
+ 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64,
+ 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60,
+ 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 18,140, 3, 0, 0, 0, 0,192,107,140, 3,
- 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 8, 0, 0, 0,112,118,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 4, 0, 0, 0,192,118,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0,
- 16,119,192, 2, 0, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,113,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 33, 0, 28, 1, 0, 0, 0, 80, 40, 0, 28, 1, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 80,150, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,208,161, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,160, 26, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,
+109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 96,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,133,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63,
- 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39,
- 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62,
- 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192,
- 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60,
- 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,
+183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,
+229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,
+221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,
+154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0,
+ 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128,
+ 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,
+208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0,
+ 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0,
+ 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0,240,123,192, 2, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 3, 67, 0, 0, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63, 80,127,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0,240,140,157, 26,
+ 1, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0,
+ 1, 0, 50, 0,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0,
+ 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63,
+ 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 3, 67, 0, 0, 3,
+ 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61,
+ 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 80,144,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,128,192, 2, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 63,
-205,204, 76, 63,205,204, 76, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 16, 1, 0, 0, 80,127,192, 2, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80,145,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,145,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 80,144,157, 26, 1, 0, 0, 0, 32, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,144, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63,
0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0,160,128,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0,
- 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16,129,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 16,129,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51, 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153,
- 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255, 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255,
- 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51,
- 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255, 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255,
- 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7,102, 19, 19, 19,204,
- 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255, 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255,
- 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255,
- 10, 10, 10,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255,
- 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255, 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255,
- 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255,
- 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255,
- 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255, 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255,
- 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255, 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255,
- 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 41, 41, 41,255, 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255,
- 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255, 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255,
- 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255, 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255,
- 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36,204, 53, 53, 53,255, 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255,
- 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255, 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255,
- 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255, 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255,
- 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255, 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255,
- 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255, 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255,
- 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255, 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255,
- 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255, 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255, 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255,
- 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255, 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255,
- 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255, 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255,
- 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255, 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255, 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255,
- 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255, 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255,
- 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255, 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255,
- 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255, 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0,
- 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255, 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255,
- 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255, 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255,
- 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255,
- 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255, 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0,
- 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,100,100,100,255,102,102,102,255,102,102,102,255,
-103,103,103,255,102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255, 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255,
- 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255, 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255,
- 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255, 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102,
- 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,107,107,107,255,109,109,109,255,109,109,109,255,
-109,109,109,255,109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,100,100,100,255, 97, 97, 97,255, 94, 94, 94,255,
- 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255, 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255,
- 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255, 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153,
- 29, 29, 29,102, 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,114,114,114,255,116,116,116,255,116,116,116,255,
-116,116,116,255,115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,107,107,107,255,104,104,104,255,100,100,100,255,
- 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255,
- 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255, 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204,
- 46, 46, 46,153, 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,121,121,121,255,122,122,122,255,123,123,123,255,
-123,123,123,255,122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,114,114,114,255,110,110,110,255,106,106,106,255,
-101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255,
- 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255, 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204,
- 47, 47, 47,153,101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,127,127,127,255,129,129,129,255,130,130,130,255,
-130,130,130,255,131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,125,125,125,255,120,120,120,255,113,113,113,255,
-108,108,108,255,103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255,
- 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255, 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204,
- 48, 48, 48,153,106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,134,134,134,255,135,135,135,255,137,137,137,255,
-138,138,138,255,142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,142,142,142,255,133,133,133,255,124,124,124,255,
-115,115,115,255,108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255,
- 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255, 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153,
- 32, 32, 32,102,109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,140,140,140,255,142,142,142,255,144,144,144,255,
-148,148,148,255,156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,168,168,168,255,153,153,153,255,137,137,137,255,
-124,124,124,255,114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255, 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255,
- 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255, 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153,
- 17, 17, 17, 51,110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,145,145,145,255,148,148,148,255,151,151,151,255,
-159,159,159,255,174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,204,204,204,255,179,179,179,255,154,154,154,255,
-135,135,135,255,121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255, 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255,
- 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255, 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102,
- 0, 0, 0, 0,107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,150,150,150,255,153,153,153,255,158,158,158,255,
-169,169,169,255,191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,237,237,237,255,204,204,204,255,170,170,170,255,
-145,145,145,255,127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255, 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255,
- 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255, 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51,
- 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,154,154,154,255,157,157,157,255,163,163,163,255,
-176,176,176,255,199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,255,255,255,255,220,220,220,255,181,181,181,255,
-151,151,151,255,132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,100,100,100,255, 94, 94, 94,255, 87, 87, 87,255,
- 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255, 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0,
- 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,157,157,157,255,161,161,161,255,165,165,165,255,
-177,177,177,255,198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,250,250,250,255,217,217,217,255,181,181,181,255,
-153,153,153,255,135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,103,103,103,255, 96, 96, 96,255, 89, 89, 89,255,
- 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255, 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,159,159,159,255,163,163,163,255,167,167,167,255,
-174,174,174,255,188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,224,224,224,255,200,200,200,255,173,173,173,255,
-151,151,151,255,136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,105,105,105,255, 98, 98, 98,255, 91, 91, 91,255,
- 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255, 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,160,160,160,255,164,164,164,255,167,167,167,255,
-171,171,171,255,178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,195,195,195,255,180,180,180,255,163,163,163,255,
-148,148,148,255,137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255,
- 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,157,157,157,255,164,164,164,255,167,167,167,255,
-170,170,170,255,172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,174,174,174,255,165,165,165,255,155,155,155,255,
-145,145,145,255,137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255,
- 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,149,149,149,255,160,160,160,255,166,166,166,255,
-168,168,168,255,169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,164,164,164,255,158,158,158,255,151,151,151,255,
-144,144,144,255,137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,106,106,106,255, 98, 98, 98,255, 89, 89, 89,255,
- 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 80,153,150,150,150,255,160,160,160,255,
-165,165,165,255,167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,160,160,160,255,155,155,155,255,149,149,149,255,
-143,143,143,255,137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,105,105,105,255, 96, 96, 96,255, 86, 86, 86,255,
- 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,
-157,157,157,255,161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,157,157,157,255,152,152,152,255,147,147,147,255,
-141,141,141,255,135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,101,101,101,255, 91, 91, 91,255, 80, 80, 80,255,
- 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-134,134,134,255,148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,152,152,152,255,147,147,147,255,142,142,142,255,
-136,136,136,255,130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255, 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204,
- 22, 22, 22,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,140,140,140,255,137,137,137,255,133,133,133,255,
-127,127,127,255,120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255, 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102, 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204,
- 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 84, 69, 0, 0,104, 1, 0, 0, 80,145,192, 2, 0, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,147,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 0, 0, 0, 0,147,192, 2, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
- 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,112,147,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 16, 0, 0,112,147,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0,160,145,157, 26,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 48,166, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,166, 26, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51,
+ 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255,
+ 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255,
+ 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255,
+ 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255,
+ 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 7, 7,102, 19, 19, 19,204, 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255,
+ 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255,
+ 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255,
+ 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255,
+ 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102,
+ 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255,
+ 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255,
+ 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 41, 41, 41,255,
+ 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255,
+ 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255,
+ 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,102,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36,204, 53, 53, 53,255,
+ 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255,
+ 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255,
+ 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255,
+ 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255,
+ 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255,
+ 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255,
+ 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255,
+ 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255,
+ 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255,
+ 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255,
+ 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255,
+ 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255,
+ 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255,
+ 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255,
+ 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255,
+ 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255,
+ 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255,
+ 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255,
+ 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255,
+ 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,
+100,100,100,255,102,102,102,255,102,102,102,255,103,103,103,255,102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255,
+ 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255,
+ 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255,
+ 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,
+107,107,107,255,109,109,109,255,109,109,109,255,109,109,109,255,109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,
+100,100,100,255, 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255,
+ 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255,
+ 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102, 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,
+114,114,114,255,116,116,116,255,116,116,116,255,116,116,116,255,115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,
+107,107,107,255,104,104,104,255,100,100,100,255, 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255,
+ 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255,
+ 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153, 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,
+121,121,121,255,122,122,122,255,123,123,123,255,123,123,123,255,122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,
+114,114,114,255,110,110,110,255,106,106,106,255,101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255,
+ 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255,
+ 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153,101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,
+127,127,127,255,129,129,129,255,130,130,130,255,130,130,130,255,131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,
+125,125,125,255,120,120,120,255,113,113,113,255,108,108,108,255,103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255,
+ 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255,
+ 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153,106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,
+134,134,134,255,135,135,135,255,137,137,137,255,138,138,138,255,142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,
+142,142,142,255,133,133,133,255,124,124,124,255,115,115,115,255,108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255,
+ 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255,
+ 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102,109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,
+140,140,140,255,142,142,142,255,144,144,144,255,148,148,148,255,156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,
+168,168,168,255,153,153,153,255,137,137,137,255,124,124,124,255,114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255,
+ 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255,
+ 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51,110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,
+145,145,145,255,148,148,148,255,151,151,151,255,159,159,159,255,174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,
+204,204,204,255,179,179,179,255,154,154,154,255,135,135,135,255,121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255,
+ 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255,
+ 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0,107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,
+150,150,150,255,153,153,153,255,158,158,158,255,169,169,169,255,191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,
+237,237,237,255,204,204,204,255,170,170,170,255,145,145,145,255,127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255,
+ 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255,
+ 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,
+154,154,154,255,157,157,157,255,163,163,163,255,176,176,176,255,199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,
+255,255,255,255,220,220,220,255,181,181,181,255,151,151,151,255,132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,
+100,100,100,255, 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255,
+ 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,
+157,157,157,255,161,161,161,255,165,165,165,255,177,177,177,255,198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,
+250,250,250,255,217,217,217,255,181,181,181,255,153,153,153,255,135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,
+103,103,103,255, 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255,
+ 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,
+159,159,159,255,163,163,163,255,167,167,167,255,174,174,174,255,188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,
+224,224,224,255,200,200,200,255,173,173,173,255,151,151,151,255,136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,
+105,105,105,255, 98, 98, 98,255, 91, 91, 91,255, 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255,
+ 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,
+160,160,160,255,164,164,164,255,167,167,167,255,171,171,171,255,178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,
+195,195,195,255,180,180,180,255,163,163,163,255,148,148,148,255,137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,
+107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255,
+ 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,
+157,157,157,255,164,164,164,255,167,167,167,255,170,170,170,255,172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,
+174,174,174,255,165,165,165,255,155,155,155,255,145,145,145,255,137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,
+107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,
+149,149,149,255,160,160,160,255,166,166,166,255,168,168,168,255,169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,
+164,164,164,255,158,158,158,255,151,151,151,255,144,144,144,255,137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,
+106,106,106,255, 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 80, 80, 80,153,150,150,150,255,160,160,160,255,165,165,165,255,167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,
+160,160,160,255,155,155,155,255,149,149,149,255,143,143,143,255,137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,
+105,105,105,255, 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,157,157,157,255,161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,
+157,157,157,255,152,152,152,255,147,147,147,255,141,141,141,255,135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,
+101,101,101,255, 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255,148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,
+152,152,152,255,147,147,147,255,142,142,142,255,136,136,136,255,130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255,
+ 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,
+140,140,140,255,137,137,137,255,133,133,133,255,127,127,127,255,120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255,
+ 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102,
+ 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,104, 1, 0, 0, 0,146,157, 26, 1, 0, 0, 0, 39, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,147,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,147,157, 26, 1, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 48,184, 26, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,184, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
@@ -8706,95 +7559,90 @@ char datatoc_B_blend[]= {
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
- 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0,
-176,163,192, 2, 0, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,165,192, 2, 0, 0, 0, 0,176,172,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,167,192, 2, 0, 0, 0, 0, 48,170,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-208,165,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128,168,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,171,192, 2, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180,
- 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 67, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 8, 0, 0, 0,128,165,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,240,123,192, 2, 0, 0, 0, 0,
- 68, 65, 84, 65,104, 1, 0, 0,208,165,192, 2, 0, 0, 0, 0, 77, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,167,192, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0, 0,148,157, 26, 1, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117,
+ 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,163, 89, 3, 1, 0, 0, 0,128,156,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,151,157, 26, 1, 0, 0, 0, 16,154,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,149,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,152,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,154,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 64,163, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0,240,140,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,208,149,157, 26, 1, 0, 0, 0, 77, 1, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,151,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,192, 0, 0, 0,128,167,192, 2, 0, 0, 0, 0, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63,
- 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182,
- 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,
-250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63,
- 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,
-230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,
-255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,
-128,168,192, 2, 0, 0, 0, 0, 77, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,170,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,112,151,157, 26, 1, 0, 0, 0, 60, 0, 0, 0,
+ 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63,
+ 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191,
+ 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127,
+ 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63,
+ 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63,
+ 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127,
+ 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,112,152,157, 26, 1, 0, 0, 0, 77, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,154,157, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,
- 48,170,192, 2, 0, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0,
- 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0,
- 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0,
- 68, 65, 84, 65,104, 1, 0, 0, 0,171,192, 2, 0, 0, 0, 0, 77, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,172,192, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 16,154,157, 26, 1, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0,
+ 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,224,154,157, 26, 1, 0, 0, 0, 77, 1, 0, 0,
+ 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,156,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,120, 0, 0, 0,176,172,192, 2, 0, 0, 0, 0, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0,
- 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 85, 83, 69, 82,160, 11, 0, 0, 32,136,128, 1, 0, 0, 0, 0,
-189, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 0, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110,
- 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,
-112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,128,156,157, 26, 1, 0, 0, 0, 56, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0,
+ 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2,
+ 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 85, 83, 69, 82,
+160, 11, 0, 0,160,150,242, 1, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 0, 63, 2, 0, 0, 5, 0, 0, 0,
+ 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,
+105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -8809,915 +7657,922 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0,
- 48, 52, 6, 1, 0, 0, 0, 0, 5, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 80,185,192, 2, 0, 0, 0, 0,112,207,192, 2, 0, 0, 0, 0,
- 80,139,200, 2, 0, 0, 0, 0, 80,139,200, 2, 0, 0, 0, 0,240,254,200, 2, 0, 0, 0, 0,240,254,200, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63,
- 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190,
- 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,
-144, 31, 15, 0, 6, 0, 15, 0, 8, 0, 10, 0,250, 0, 0, 0,100, 0,100, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 5, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0,
+ 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 48,214, 26, 4,
+ 1, 0, 0, 0, 48,238, 26, 4, 1, 0, 0, 0,192, 20, 78, 3, 1, 0, 0, 0,192, 20, 78, 3, 1, 0, 0, 0,128, 43,138, 26,
+ 1, 0, 0, 0,128, 43,138, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
+ 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,
+205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0,
+ 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 15, 0, 8, 0, 10, 0,250, 0, 0, 0,100, 0,100, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 21, 0, 0, 80,185,192, 2, 0, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0,
-112,207,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255,
- 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255,
- 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255,
- 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,
-255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,
- 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255,
- 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255,
- 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255,
- 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,
-255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255,
- 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,
-160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,
-255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255,
- 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255,
- 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255,
- 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,
-180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,
-250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,
-114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,
-124,137,150,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,
-116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,
-109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,
-128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255,
- 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,
-255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255,
- 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,
-255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,
-255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,
-247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0,
- 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0,
- 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0,
- 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0,
- 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,
-108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,
-131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 21, 0, 0,
-112,207,192, 2, 0, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,185,192, 2, 0, 0, 0, 0,
- 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, 32, 84,104,101,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
- 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 25, 0,231,255, 0, 0,
- 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0,
- 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0,
- 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0,
- 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0,
- 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0,
- 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0,
- 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0,
- 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,175,175,175, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
- 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255,
- 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,
-255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,
-255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-107,107,107,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,100,143,143,143,100, 96,192, 64,255, 94, 94, 94,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,255,255,255,
-255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,
-124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-255,255,255,255,255,130, 0,255, 2, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 21, 0, 0, 48,214, 26, 4,
+ 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 48,238, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,
+117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,
+153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,
+153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,
+153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 25, 25, 25,255,
+140,140,140,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,
+ 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255,
+ 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,
+153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,
+180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,
+180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255,
+ 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255,
+ 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255,
+ 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255,
+ 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,
+128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180,
+ 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,
+ 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255,
+ 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255,
+ 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,
+255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,
+112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,
+135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,
+255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255,
+ 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,
+255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,
+162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,255,255,255, 10,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,
+172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,
+104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,
+241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255,
+ 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255,
+ 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255,
+ 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,
+189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255,
+ 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,
+193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255,
+ 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,
+238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,
+152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,
+176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255,
+ 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,248, 21, 0, 0, 48,238, 26, 4, 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,214, 26, 4, 1, 0, 0, 0, 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, 32, 84,104,101,
+109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,
+255,255,255,255, 1, 0, 25, 0,231,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,
+255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255,
+ 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,
+255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,
+255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,
+255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,
+204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255,
+ 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255,255,255,255,255,
+ 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255,
+ 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,175,175,175, 51,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,
+102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255,
+ 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 79,101, 73,255,135,177,125,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,143,143,143,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,255,255,255,170,255, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,
-126,126, 80,255,162, 95,111,255,109,145,131,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
-255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,100,
+143,143,143,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,
+135,177,125,255,255,255,255,255,255,255,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,130, 0,255, 2, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,153,153,153,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 88, 88, 88,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,
+127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,112,255,255,255,255,112,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,143,143,143,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,
+178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,255,
+255,255,170,255, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,130, 0,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255,
+ 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,153,153,153,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,
+198,119,119,255,255, 0, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255,
+ 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255,
+ 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,150,150,150,255,129,131,144,255,
-127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
- 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255,
- 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,
-255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,
-255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
-165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0,
- 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,
-169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0,
- 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,
-244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,
-111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,
-141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0,
- 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49, 8,228, 0, 0,224,115,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 83, 68, 78, 65, 78, 65, 77, 69, 39, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,
-105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,
-110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,
-121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,
-100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,
-109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100,
- 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,
-108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93,
- 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116,
- 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49,
- 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,
-121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,
-107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,
-105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,
-111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,
-115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120,
- 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,
-122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,
-104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,
-116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,
-101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,
-115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,
-117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,
-101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 97,110,103,108,101, 0, 99,108,105,112,115,116, 97, 0,
- 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,
-101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 89, 70, 95, 97,112,
-101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95, 98,107,104, 98,105, 97,115, 0, 89, 70, 95,
- 98,107,104,114,111,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,
-102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,
-105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105,
- 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0,115,111,117,114, 99,
-101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,
-101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,
-112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0, 42,114,101,110,100,
-101,114, 95,116,101,120,116, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,
-115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0,
- 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,
-121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,
-120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,
-101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,
-116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,
-117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0,
- 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99,
- 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,
-102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,
-116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97,
- 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,
-111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,
-102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99,
- 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,
-102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,
-111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102,
- 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110,
- 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116,
- 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116,
- 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,
-111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91,
- 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,
-108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108,
- 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,
-116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,
-110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,
-111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,
-116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,
-105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51,
- 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,
-114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116,
- 0,101,120,116,101,110,100, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,
-109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0,110,111,105,
-115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102,
- 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,
-108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,
-109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,
-118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,
-118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,
-111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,
-105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109,
- 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,
-101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,
-115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,
-118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52,
- 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,
-100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,
-105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116,
- 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0,
- 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93,
- 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101,
- 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,
-109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97,
- 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97,
- 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,
-104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101,
- 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,
-103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,
-110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,
-110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,
-116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97,
- 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,
-100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101,
- 0,112, 97,100, 52, 0, 89, 70, 95,110,117,109,112,104,111,116,111,110,115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104,
- 0, 89, 70, 95,112,104,100,101,112,116,104, 0, 89, 70, 95,117,115,101,113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101,
- 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99, 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,
-117,115, 0, 89, 70, 95,103,108,111,119,105,110,116, 0, 89, 70, 95,103,108,111,119,111,102,115, 0, 89, 70, 95,103,108,111,119,
-116,121,112,101, 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,
-101, 0,112, 97,100, 91, 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,
-114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,
-116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,
-111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102,
- 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108,
- 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,
-110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,
-109,115, 95,115,116,101,112,115, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101,
- 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98,
- 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,
-109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,
-116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,
-115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,
-114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,
-114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100,
- 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112,
- 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,
-116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,
-111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,
-115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,
-105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,
-105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100,
- 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,
-115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,
-110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,
-108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97,
- 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,
-112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,
-109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,
-112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,
-109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,
-115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,
-101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,
-100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115,
- 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,
-108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99,
- 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115,
- 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,103,112,117,109, 97,116,101,114,105,
- 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,
-107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,
-101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,
-101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103,
- 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,
-101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,
-103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109,
- 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,
-111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,
-117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,
-101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114,
- 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101,
- 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,
-111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,112, 97,116,104,108,101,110, 0,
- 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,
-114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 98,112, 0,
-115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114,
- 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,
-120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115,
- 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,
-111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,
-105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,
-101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,
-102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,
-101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,
-115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,
-116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101,
- 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101,
- 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,
-114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,
-111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118,
- 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,
-114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50,
- 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112,
- 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115,
- 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,
-108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,
-118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,
-101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0,
- 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0,
- 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,
-114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115,
- 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111,
- 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101,
- 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51,
- 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,
-101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111,
- 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,
-115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,
-100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,
-111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,
-116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,
-106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,
-112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,
-106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,112,101,114, 99,101,110,116, 0,
-102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,
-101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,
-112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,
-105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117,
- 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116,
- 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,
-116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0,
- 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,
-120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,
-117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,
-101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,
-110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42,
- 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116,
- 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,
-116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91,
- 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 40, 42,
- 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,
-109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,
-112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0,
- 42,117,110,100,111, 95,118,101,114,116,115, 0,117,110,100,111, 95,118,101,114,116,115, 95,116,111,116, 0,117,110,100,111, 95,
-115,105,103,110, 97,108, 0,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116,
- 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93,
- 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,
-112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102,
- 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,112,110,116,115,119, 0,
-111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118,
- 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108,
- 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,
-116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49,
- 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0,
- 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0,
- 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 99,111,110,115,
-116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115,
- 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,
-111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,
-113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,
-111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,
-110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108,
- 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,
-110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115,
- 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102,
- 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,
-110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,
-110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,
-115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,
-112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,
-105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,
-114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,
-101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,
-116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,
-115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,
-101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,
-109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,
-102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109,
- 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100,
- 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116,
- 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,
-114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,
-105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,
-116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107,
- 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,
-112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,
-109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,
-112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,
-100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0, 97, 98,115,111,114,112,116,105,111,110,
- 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,
-102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113,
- 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,
-120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,
-103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,
-105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116,
- 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,
-102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120,
- 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91,
- 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,
-102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,
-111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,
-116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107,
- 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75,
- 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68,
- 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,
-107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,
-116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0,
- 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,
-108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114,
- 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,
-101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108,
- 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100,
- 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,
-110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,
-101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0,
- 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0,
- 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,
-111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,
-104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,
-108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0,
- 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0, 42,102,
-109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,
-111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105,
- 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,
-115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,
-115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,
-110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101,
- 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,
-104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80,
- 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,
-112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,
-116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,
-101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,
-111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,
-102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,
-105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,
-116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,
-111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,
-118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,
-114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,
-104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,
-110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,
-112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,
-116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,
-110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,
-103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,
-115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114,
- 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,
-109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,
-102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116,
- 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,
-101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,
-116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,
-114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,
-111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,
-111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,
-108,101,115, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,
-114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99,
- 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,
-121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,
-101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42,
- 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91,
- 49, 50, 56, 93, 0, 99,111,100,101, 99, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,
-114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101,
- 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,
-116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,
-120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109,
- 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,
-114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,
-108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103,
- 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97,
- 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,112,115,102,114, 97, 0,
-112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114,
- 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66,
- 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121,
- 0, 97,116,116,114,105, 98, 0,114,116, 49, 0,114,116, 50, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,
-115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,
-120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,
-112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101,
- 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,
-116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,
-114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,
-103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,
-101,114,115, 0, 97, 99,116,108, 97,121, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,
-101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97,
- 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,
-121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101,
- 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,
-101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,
-105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97, 99,
-104,101, 0, 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0, 89,
- 70, 95, 65, 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,108,
- 97,109,112,114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,116,
-104, 0, 71, 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,110,
-116, 0, 71, 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89, 70,
- 95,114, 97,121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,
-101,115, 0,121,102,112, 97,100, 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114,101,102,105,
-110,101,109,101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, 70, 95,103,
- 97,109,109, 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, 70, 95, 65,
- 65,112,105,120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99,107, 98,117,
-102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116,
- 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93,
- 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,
-109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,
-114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,
-116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,
-114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,
-109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,
-115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,
-108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,
-101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,
-116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,100,111,109,101,
- 0,115,116,101,114,101,111,102,108, 97,103, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,
-115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,
-111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,116,111,111,
-108, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0, 42,112, 97,105,110,116,
- 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121,
- 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,
-115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,
-100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,
-111,116, 91, 51, 93, 0,116, 97, 98,108,101,116, 95,115,105,122,101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,
-104, 0,103, 97,109,109, 97, 0,109,117,108, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116,
- 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,
-103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,
-114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,
-108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,
-110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99,
- 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108,
- 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,
-112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,
-108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,
-101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,
-108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,
-104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,
-112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,
-105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,
-108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,
-105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,
-101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,
-116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,
-110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,
-108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110,
- 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116,
- 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,
-101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115,
- 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,
-115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,
-109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101,
- 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,
-116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110,
- 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116,
- 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110,
- 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,
-100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,
-105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,
-110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,
-111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,
-101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0, 42, 99, 97,109,101,
-114, 97, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,
-100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93,
- 0,116,119,109, 97,120, 91, 51, 93, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,
-116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0,115,111,117,110,100, 95,
-104, 97,110,100,108,101,115, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108,
- 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,102,114, 97,109,101, 95,115,116,101,112, 0, 97, 99,116,105,118,101, 95,
-107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,
-115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93,
- 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,
-115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,
-111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52,
- 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,
-121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,114,102,108, 97,103, 0,
-118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0,118,105,101,119, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 42,
- 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119,
- 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114,
- 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,114,101,103,105,111,
-110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,
-104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42,
- 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,108, 97,121, 97, 99,116, 0,
-100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,
-108, 97,115,116, 0,103,114,105,100, 0,103,114,105,100,118,105,101,119, 0,112, 97,100,102, 0,110,101, 97,114, 0,102, 97,114,
- 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,
-111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101,
- 0,116,119,102,108, 97,103, 0,116,119,100,114, 97,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,
-115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,
-110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,
-101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,
-111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,
-116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,
-119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,
-116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,
-101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112,
- 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,
-114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,
-105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,
-110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,
-102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,
-112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101,
- 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,109,101,110,117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,
-117,112,109,101,110,117, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,
-114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101,
- 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,
-110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114,
- 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,
-102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42,
- 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,
-107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0,
- 99,101,110,116,120, 0, 99,101,110,116,121, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,
-108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,
-115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120,
- 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,
-101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,
-117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53,
- 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110,
- 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,
-105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,
-114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,
-101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121,
- 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,
-105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,
-107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,
-111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,
-117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41,
- 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103,
- 50, 0, 42,109,101,110,117,112, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,
-112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,
-116, 91, 56, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,
+127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
+ 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,
+217,217,217,255, 0, 0, 0, 40,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, 0, 0, 0,255,255,130, 0,255,
+ 0, 0, 0,255,255,255,255,255,230,150, 50,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255,
+ 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0,150,150,150,255,129,131,144,255,127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,
+127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,
+102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255,
+ 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,
+246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255,
+ 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255,
+ 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,
+106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255,
+ 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,
+127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,
+139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49, 60,229, 0, 0, 48,174, 15, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 44, 11, 0, 0, 42,110,101,120,116, 0, 42,112,
+114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,
+109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,
+112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,
+101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,
+101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,
+114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,
+110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0,
+ 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100,
+ 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,
+114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116,
+ 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114,
+ 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,
+120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,
+101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,
+112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,
+105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,
+114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,
+116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110,
+ 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93,
+ 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108,
+ 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,
+117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,
+116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 97,110,
+103,108,101, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115,
+ 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,
+111,102,100,105,115,116, 0, 89, 70, 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70,
+ 95, 98,107,104, 98,105, 97,115, 0, 89, 70, 95, 98,107,104,114,111,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,
+110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121,
+ 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,
+117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,
+105,109, 0, 42,114,114, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,
+103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0,
+ 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,
+114,101,118,105,101,119, 0, 42,114,101,110,100,101,114, 95,116,101,120,116, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108,
+ 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,
+110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,
+116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110,
+ 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,
+103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,
+111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,
+112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101,
+ 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118,
+ 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,
+115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99,
+ 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,
+102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0,
+ 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115,
+ 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,
+102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,
+100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,
+112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,
+119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101,
+ 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,
+114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,
+105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98,
+ 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,
+117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,
+116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,
+112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101,
+ 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,
+111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95,
+ 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,
+116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,
+105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95,
+ 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,
+115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101,
+ 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,105,110,116, 95,109,117,108,116,105,112,108,105,
+101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0,
+ 42,100, 97,116, 97,115,101,116, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116,
+ 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,
+105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,
+115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,
+110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110,
+ 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,
+110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,
+110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,
+112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,
+114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,
+105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,
+110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,
+114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,
+111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,
+112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,
+110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,
+104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,
+114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,
+115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121,
+ 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,
+109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101,
+ 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,
+114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,
+116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101,
+ 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,
+114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100,
+ 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,
+116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,
+120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97,
+ 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,
+121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 0, 89, 70, 95,110,117,109,112,104,111,116,111,110,115, 0,
+ 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104, 0, 89, 70, 95,117,115,101,113,109,
+ 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99, 98,108,
+117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,110,116, 0, 89, 70, 95,103,108,111,
+119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49,
+ 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 91, 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,
+115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,
+115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,
+114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,
+100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,
+116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,
+104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,
+115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,116,101,112,115, 0,109, 97,116,101,114,105, 97,108, 95,116,121,
+112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,
+105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,
+115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101,
+ 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,
+115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,
+114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116,
+ 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,
+116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,
+111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,
+115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,
+101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114,
+ 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108,
+ 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108,
+ 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,
+100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114,
+ 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,
+100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,
+108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,
+114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,
+105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115,
+ 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114,
+ 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,
+109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,
+100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,
+108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,
+104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,
+101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,
+114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97,
+ 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,
+115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,
+101,100, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,
+106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,
+117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115,
+ 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,
+115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,
+110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93,
+ 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,
+105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,
+115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,
+102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,
+112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,
+117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0,
+ 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,
+102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,
+111,116,104, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,
+101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117,
+ 0, 42,108, 97,115,116,115,101,108, 98,112, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,
+110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,
+111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,
+116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52,
+ 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,
+105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116,
+ 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,
+102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0,
+ 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105,
+ 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,
+115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,
+102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103,
+ 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,
+117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,
+101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,
+119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,
+119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51,
+ 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91,
+ 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100,
+ 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,
+101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,
+110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,
+117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,
+115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115,
+ 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,
+105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67,
+ 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,
+109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,
+100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,
+116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,
+101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110,
+ 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,
+114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0,
+ 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109,
+ 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,
+114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,
+112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50,
+ 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,
+109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101,
+ 99,116,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116,
+ 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,
+103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,
+109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105,
+ 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,
+118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,
+120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0,
+ 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,
+115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42,
+ 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,
+118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,
+102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,
+101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115,
+ 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,
+110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101,
+ 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,
+109, 97,116, 91, 52, 93, 91, 52, 93, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,
+116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,
+116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,
+111,117,112, 0,112,114,111,116,101, 99,116, 0, 42,117,110,100,111, 95,118,101,114,116,115, 0,117,110,100,111, 95,118,101,114,
+116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110, 97,108, 0,108,118,108, 0,116,111,116,108,118,108, 0,115,105,
+109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,
+111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101,
+ 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,
+108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,
+110, 79,112,116,115, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119,
+ 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,
+118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93,
+ 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,
+112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114,
+ 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0,
+ 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,
+115,101, 0, 42,103,112,100, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,
+115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,
+116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91,
+ 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,
+114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,
+109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108,
+ 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,
+102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,
+105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,
+100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,
+115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100,
+ 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95,
+ 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,
+100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93,
+ 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,
+115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,
+115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103,
+ 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105,
+ 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,
+111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,
+114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,
+104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,
+112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,
+111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,
+116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,
+100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,
+121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114,
+ 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,
+101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,
+114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,
+119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,
+120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112,
+ 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,
+116, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,
+105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,
+111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112,
+ 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101,
+ 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93,
+ 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,
+120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,
+109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,
+114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,
+109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97,
+ 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,
+102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,
+116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,
+115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82,
+ 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76,
+ 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77,
+ 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,
+108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,
+103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103,
+ 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71,
+ 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,
+116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,
+114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,
+116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,
+121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,
+112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,
+115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,
+101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,
+108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,
+115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,
+105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,
+116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,
+114, 95,119,101,105,103,104,116,115, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,
+111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,
+114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,
+115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,
+116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,
+114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0,103,115,116,
+ 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105,
+ 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104,
+ 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0,
+ 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,
+101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,
+103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,
+115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,
+115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,
+104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115,
+ 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,
+105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,
+102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,
+104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114,
+ 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,
+122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108,
+ 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97,
+ 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,
+121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,
+105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109,
+ 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,
+109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,
+116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,
+114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,
+111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0,
+ 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,
+111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,
+100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95,
+ 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,
+104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,
+112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112,
+ 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115,
+ 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,
+101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,
+119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101,
+ 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,
+113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 0, 97,117,100,105,111, 95, 99,111,100,
+101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,
+117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,
+122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,
+102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,
+116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,
+111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,
+116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,
+109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42,
+ 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,102,102, 99,111,100,101,
+ 99,100, 97,116, 97, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,
+111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82,
+ 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,
+108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,
+101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109,
+ 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115,
+ 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,
+113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,
+115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,
+101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,
+109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0,
+ 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,120, 97,
+115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114,
+ 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,
+115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,
+107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,
+107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0,
+ 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,
+112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97, 99,104,101, 0, 71, 73,109,101,116,104,111,100, 0, 71,
+ 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0, 89, 70, 95, 65, 65, 0, 89, 70,101,120,112,111,114,116,
+120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,108, 97,109,112,114,103, 98, 0,121,102,112, 97,100, 49,
+ 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,116,104, 0, 71, 73,112,105,120,101,108,115,112,101,114,
+115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,110,116, 0, 71, 73,109,105,120,112,104,111,116,111,110,
+115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89, 70, 95,114, 97,121,100,101,112,116,104, 0, 89, 70, 95,
+ 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,101,115, 0,121,102,112, 97,100, 50, 0, 71, 73,115,
+104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114,101,102,105,110,101,109,101,110,116, 0, 71, 73,112,111,119,101,
+114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, 70, 95,103, 97,109,109, 97, 0, 89, 70, 95,101,120,112,111,115,
+117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,105,120,101,108,115,105,122,101, 0, 89, 70,
+ 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54,
+ 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,
+116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,
+115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,
+115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,
+105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,
+107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,
+116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,
+103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,
+116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,
+114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,
+114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109,
+ 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108,
+ 97,103, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0,
+ 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95,
+ 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,116,111,111,108, 0,115,101, 97,109, 95, 98,108,
+101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,
+118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,
+101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,
+101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115,
+ 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,
+108,101,116, 95,115,105,122,101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0,103, 97,109,109, 97, 0,109,
+117,108, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112,
+ 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,
+114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,
+101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,
+109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115,
+ 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,
+115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,
+117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118,
+ 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,
+117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,
+110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,
+108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121,
+ 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,
+101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,
+101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117,
+ 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110,
+ 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,
+111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,
+115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,
+105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,
+101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116,
+ 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,
+103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110,
+ 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,
+115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110,
+ 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,
+101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,
+103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,
+117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116,
+ 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,
+101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,
+110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,
+108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,
+112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,
+111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,
+111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,
+115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0, 42, 99, 97,109,101,114, 97, 0, 42,119,111,114,108,100,
+ 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,
+114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93,
+ 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,
+116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0,115,111,117,110,100, 95,104, 97,110,100,108,101,115, 0, 42,
+116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,
+114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,
+103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,
+108,101,110,100, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,
+118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,
+105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,
+116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52,
+ 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,
+111,109, 0,118,105,101,119, 98,117,116, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0,
+118,105,101,119, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100,
+ 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,
+115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,
+112,101,114,115,112, 0,108,118,105,101,119, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101,
+ 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,
+117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101,
+ 95, 98,111,110,101, 91, 51, 50, 93, 0,108, 97,121, 97, 99,116, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,
+111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,103,114,105,100,118,
+105,101,119, 0,112, 97,100,102, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,
+102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108,
+ 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0,116,119,100,114, 97,119,102,
+108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,
+117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,
+112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,
+110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,
+108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,
+101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,
+100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,
+110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,
+115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110,
+ 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,
+105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,
+100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,
+116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,
+102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,
+107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,
+109,101,110,117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,117,112,109,101,110,117, 0, 42,112, 97,114, 97,109,115, 0,
+ 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,
+120,116, 0, 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,
+114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,
+101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,
+101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,
+110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,
+116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105,
+ 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0, 42,116,101,
+120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,
+108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,
+110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101,
+ 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116,
+ 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50,
+ 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121,
+ 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,
+108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115,
+ 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115,
+ 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101,
+ 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,
+116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121,
+ 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115,
+ 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,
+112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,
+116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,
+114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,105,109,103, 0,108,
+101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98,
+ 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101,
+ 91, 51, 50, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116,
95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99,
0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,
108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,
@@ -9732,1317 +8587,1326 @@ char datatoc_B_blend[]= {
105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,
110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,
105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114,
- 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,
-119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109,
- 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,
-117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117,
- 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,
-108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48,
- 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101,
- 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,
-101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91,
- 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52,
- 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116,
- 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116,
- 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112,
- 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104,
- 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100,
- 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,
-116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93,
- 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,
-101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,
-101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,
-102, 97, 99,101,115,101,108, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52,
- 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,
-105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,
-112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108,
- 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101,
- 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93,
- 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52,
- 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115,
- 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,
-110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,
-101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104,
- 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,
-114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 51, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116,
- 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,
-116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116,
- 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,
-114,101,102, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 0,
-115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114,
- 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48,
- 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,
-112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,
-111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,
-114,115,105,111,110,115, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108,
- 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,
-111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114,
- 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,
-105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,
-108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,
-115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91,
- 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104,
- 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114,
- 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98,
- 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,
-116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,
-120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,
-116,104,111,100, 0,119,109,112, 97,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,
-104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95,
- 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,
-105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,
-103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0,
- 99,117,114,115,115,105,122,101, 0,105,112,111, 95,110,101,119, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48,
- 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98,
- 97, 95,119,101,105,103,104,116, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98,
- 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119,
- 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,
-114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,
-119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,
-110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101,
- 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110,
- 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97,
- 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112,
- 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97,
- 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116,
- 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91,
- 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,
-101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,
-105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,
-101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,
-101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,
-116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110,
- 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,
-101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,
-105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,
-114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93,
- 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114,
- 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,
-115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,
-114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,
-115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97,
- 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102,
- 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97,
- 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,
-114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,
-110,100,100,105,115,112, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,
-114,105,112, 0,102, 97, 99,102, 48, 0,102, 97, 99,102, 49, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113,
- 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115,111,117,110,100, 95,104, 97,110,100,108,101, 0,108,
-101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100,
- 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,
-101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112,
- 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,
-116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,
-100,100,105,114, 91, 50, 53, 54, 93, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,
-116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100,
- 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121,
- 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,
-110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,
-111,108, 97,116,105,111,110, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,
-115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97,
- 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,
-101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101,
- 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52,
- 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116,
- 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,
-120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,
-101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,
-102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,
-116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,
-103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101,
- 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110,
- 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,
-110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,
-115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,
-111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,
-121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,
-116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,
-117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56,
- 93, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,
-105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97,
- 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,
-121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,
-103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 49, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,
-109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 50, 91, 49, 93, 0, 42,109,101, 0,108,105,
-110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,
-108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,
-102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,
-103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0, 98,117,116,115,
-116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,
-112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,
-109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,
-111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103,
- 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,
-111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111,
- 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0,
- 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,
-112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,
-108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0, 42,115,111,117,114, 99,101, 0,102,114, 97,109,101,115,107,
-105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,
-110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,
-101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,
-101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,
-105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,
-115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,
-106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,
-101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91,
- 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,
-109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,
-101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101,
- 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,
-114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,
-116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,
-116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,
-115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0, 99,111,110,115,116,102,108, 97,
-103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42,
- 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0,
- 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,
-108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91,
- 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,
-105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51,
- 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,
-103,104,116, 0, 42, 99,117,115,116,111,109, 0, 99,104, 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,121,101,114,
- 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91,
- 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114,
- 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,
-112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,
-107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,
-115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,
-105,118,101, 95,109, 97,114,107,101,114, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,110,114, 0,
- 97, 99,116,119,105,100,116,104, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,
-101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,
-104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,
-114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,
-114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101,
- 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,
-114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,
-103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110,
- 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50,
- 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,
-108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,
-108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0,
- 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,
-101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112,
- 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93,
- 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,120, 0,112,
- 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,
-114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100,
- 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,
-116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50,
- 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111,
- 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,
-107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,
-111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,
-111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,117,115,101,114,110, 97,109,101, 91, 51, 50, 93,
- 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,
-104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109,
- 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,
-114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,
-111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,
-105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116,
- 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,
-121,112,101, 0, 42,115,101,108,105,110, 0, 42,115,101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41,
- 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41,
- 40, 41, 0, 42,116, 98,104, 0, 42,116, 99,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115,
- 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,
-121, 0, 98,111,107,101,104, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109,
- 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,
-115,112,105,110, 0,105,116,101,114, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97,
- 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,
-104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110,
- 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111,
- 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,
-116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,
-101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,104,111,
-114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,
-101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,
-116, 97, 98,108,101, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,
-119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,111,102,102,115,
-101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101,
- 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,
-101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0, 97, 99,116,105,118,101, 95,114,110,100, 0,
- 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115,
- 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108,
- 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,
-110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,
-118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104,
- 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 97,108,
-105,118,101, 0,108,111,111,112, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 42, 98,111,105,100,115, 0,100,105,115,116,114,
- 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,
-119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,
-110, 95, 97,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,
-112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,
-105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0,
- 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0,
- 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,
-102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,
-121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,
-105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,
-102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116,
- 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97,
- 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102,
- 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114,
- 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,
-104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,
-115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114,
- 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,
-103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,
-104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,
-112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,
-116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,
-116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,
-117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42,
- 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,
-116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,
-102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110,
- 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,
-116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,
-101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,
-107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93,
- 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,
-116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0,
- 67,100,105,115, 0, 67,118,105, 0, 91, 51, 93, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,
-109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,
-103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101,
- 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,
-108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101,
- 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,
-101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112,
- 95,115,116,114,117, 99,116, 0,112,114,101,115,101,116,115, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,
-101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,
-110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,
-115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109,
- 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,
-101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,
-116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108,
- 0,115,116,111,114,101,108,101,118,101,108, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,
-105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,
-101,100, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,
-112, 97,105,110,116, 99,117,114,115,111,114,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116,
- 99,111,110,102, 0,100,101,102, 97,117,108,116, 97, 99,116,109, 97,112, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115,
- 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,
-114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,
-116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,
-118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,
-114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100,
- 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,
-110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,
-116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114,
- 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0, 40, 42,112,111,108,108, 41, 40,
- 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,
-101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111,
- 0, 42,111,112,109, 0,109,118, 97,108, 91, 50, 93, 0,112,114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,
-101, 0, 97,115, 99,105,105, 0, 42,107,101,121,109, 97,112, 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,
-115,116,111,109,100, 97,116, 97,102,114,101,101, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,
-111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114,
- 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,
-101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,
-111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,
-115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105,
- 99, 97,116,105,111,110, 0, 42,114,110, 97, 95,112, 97,116,104, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0,105,100,116,
-121,112,101, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0,
- 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111,
- 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,
-114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,
-109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,116,101,109,112,108, 97,116,101,115, 0,103,114,111,117,112,109,111,
-100,101, 0,112, 97,116,104,115, 0,107,101,121,105,110,103,102,108, 97,103, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0,
- 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,
-118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116,
- 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,
-112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,
-107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,
-114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,
-114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116,
- 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,
-105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,
-103,114,101,115,115,105,111,110, 0, 97, 99, 99,117,114, 97, 99,121, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0,
- 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,
-120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,
-109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120,
- 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,
-115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,
-109,100, 0, 42,102,108,117,105,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,
-117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,
-111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0,
- 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,
-101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,
-115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 42,112,111,
-105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,
-121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,
-108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,
-112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0,
- 84, 89, 80, 69,196, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,
-105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100,
- 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101,
- 99, 50,105, 0,118,101, 99, 50,102, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,
-100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68,
- 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,
-114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,
-101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,
-112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,
-120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,
-101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71,
- 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120,
- 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0,
- 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68,
- 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,
-114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77,
- 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,
-116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104,
- 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120,
- 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,
-101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77,
- 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,
-116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,
-101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,
-111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,
-121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0,
- 77, 68,105,115,112,115, 0, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60,
- 49, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,
-101, 32, 77, 69, 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71,
- 69, 82, 69, 78, 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69,
- 68, 71, 69, 32, 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32,
- 40, 49, 60, 60, 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32,
- 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95,
- 70, 76, 73, 80, 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,
-102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74,
- 88, 89, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,
-110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50,
- 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95,
- 86, 51, 86, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101,
- 32, 77, 69, 95, 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32,
- 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32,
- 77, 69, 95, 86, 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,
-105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84,
- 32, 49, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101,
- 32, 84, 70, 95, 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,
-102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32,
- 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32,
- 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82,
- 84, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95,
- 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54,
- 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101,
- 32, 84, 70, 95, 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79,
- 65, 82, 68, 32, 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,
-100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101,
- 32, 84, 70, 95, 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79,
- 65, 82, 68, 50, 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57,
- 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,
-110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,
-100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73,
- 80, 32, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32,
- 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82,
- 69, 67, 65, 84, 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51,
- 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,
-105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51,
- 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95,
- 80, 73, 78, 52, 32, 49, 50, 56, 32, 35,101,110,100,105,102, 32, 32, 99,104, 97,114, 32,117,115,101, 95, 99,111,108, 44, 32,102,
-108, 97,103, 59, 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,
-104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,
-114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9,
- 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,
-108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,
-116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,
-112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123,
- 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,
-116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,
-105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,
-110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10,
- 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,
-100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,
-101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,
-105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69,
- 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,
-100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77,
- 69, 95, 72, 73, 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71,
- 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69,
- 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49,
- 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,
-100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47,
- 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,
-105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,
-101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, 77,
- 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83,
- 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120,110,
-111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117,109,
-101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,101, 32,116,104,105,115,
- 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110,101,
- 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9,
- 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32,
- 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9,
- 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100,
- 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9,
- 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32,
- 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10,
- 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102,
- 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,
-101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,
-108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111,111,
- 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110,101,
- 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,
-102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, 32,
- 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70,
- 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,
-108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42,
- 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,
-116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,
-110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49,
- 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70,
- 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95,
- 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,
-101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65,
- 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,
-101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70,
- 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76,
- 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,
-112,114,101, 99, 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68,
- 9, 50, 53, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,
-102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32,
- 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79,
- 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,
-105,110,116, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,
-100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97,
- 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32,
- 97,115, 32,102,108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95,
- 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,
-110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10,
- 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76,
- 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,
-112,104, 97, 32, 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,
-115, 32,110,111,116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,
-114,102, 97, 99,101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9,
- 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,
-101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69,
- 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69,
- 68, 51, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,
-101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70,
- 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32,
- 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10,
- 35,101,110,100,105,102, 10, 39,115, 79, 67, 75, 33, 32,116,101,120,116,117,114,101, 32,104,101,114,193,109, 0, 77,117,108,116,
-105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115,
- 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0,
- 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97,
- 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,
-101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,
-105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,
-111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114,
- 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,
-102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101,
- 68,111,109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115,
- 0, 83,109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,
-105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,
- 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,
-114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,
-105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,
-107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,
-116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104,
- 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,
-105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,
- 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,
-101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,
-100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,
-108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,
-101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,
-101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0,
- 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,
-102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,
-117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,
-114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,
-104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,
-111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98,
- 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116,
- 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,
-101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,
-101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,
-116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,
-101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116,
- 97, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,
-101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,
-111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68,
- 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101,
- 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0,
- 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,
-105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,
-105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115,
- 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,
-111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,
-110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,
-111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97,
- 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0,
- 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112,
- 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,
-101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116,
- 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,
-101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116,
- 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112,
- 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,
-111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,
-114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101,
- 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,
-111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101,
- 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0,
- 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,
-117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,
-111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,
-108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114,
- 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,
-114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,
-111,117,110,100, 0, 83,111,117,110,100, 72, 97,110,100,108,101, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86,
- 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100,
- 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,
-116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101,
- 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101,
- 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,
-115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,
-115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,
-114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,
-121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101,
- 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,
-116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,
-111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,
-116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,
-111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98,
- 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0,
- 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,
-109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114,
- 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0,
- 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98,
- 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,
-116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,
-117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,
-114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98,
- 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 77,111,116,105,111,110,
- 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 80,111,115,101, 67,104, 97,110,110,
-101,108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0,
- 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,
-116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,
-114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,
-105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,
-116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,
-101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,
-114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,
-101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,
-111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,
-115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,
-116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,
-110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0,
- 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,
-115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116,
- 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114,
- 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,
-107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0,
- 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,
-107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119,
- 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109,
- 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101,
- 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,
-101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115,
- 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101,
- 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116,
- 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,
-101,110,115, 68,105,115,116, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,
-105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,
-116, 97, 76, 97,121,101,114, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100,
- 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0,
- 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,
-104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115,
- 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75,
- 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0,
- 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0,
- 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0,119,109, 87,105,
-110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103,
- 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,
-109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,
-119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,
-110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70,
- 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,
-111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,
-115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 67,104, 97,110,110,101,
-108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,
-114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75,
- 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100,
- 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,
-108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,
-105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,
-103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0,
- 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0,
- 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0,
- 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,152, 4,112, 0,
- 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, 0, 6,184, 1, 0, 0, 0, 0,
- 0, 0, 16, 1,104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,232, 0,136, 0,248, 1, 56, 1, 80, 0, 88, 0,
- 32, 3,104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,144, 1, 20, 0,
- 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0,
- 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, 96, 0,112, 0,120, 0, 88, 0,
-120, 0,152, 0, 88, 0, 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, 80, 0,112, 0,128, 0,216, 0,
-128, 0,240, 0, 72, 0,128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, 0, 0, 88, 0, 8, 0, 8, 0,
- 16, 1,104, 0,240, 1, 96, 0, 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, 48, 0, 0, 0,144, 0, 88, 0,
-104, 0,120, 0,152, 0, 32, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,216, 1, 40, 0,
-184, 0,152, 0, 64, 0, 24, 0, 88, 0, 24, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0, 40, 1, 48, 0, 8, 0,112, 0,
- 88, 0, 56, 0, 72, 0,120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 1, 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0, 0, 0,152, 0, 0, 0, 40, 1,
- 16, 0, 16, 0,168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,112, 0, 40, 0, 24, 1, 32, 0,
-232, 0, 32, 0, 32, 0, 80, 2, 16, 1, 16, 0,216, 21, 56, 0,160, 11, 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0,
- 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1, 8, 1, 48, 1, 64, 0, 32, 0, 12, 0,
- 24, 0, 48, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0, 48, 0, 72, 0,104, 0, 40, 0,
- 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0, 80, 0, 16, 0, 96, 0, 72, 0,
- 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0, 4, 0, 24, 0, 16, 0, 8, 0,
- 88, 0, 40, 0,224, 0, 40, 0, 32, 1,176, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,120, 0, 8, 1, 88, 0, 56, 0,
- 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0,
- 16, 0,112, 0, 96, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0,144, 0, 56, 0, 8, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0,
- 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 8, 2,104, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,168, 0, 72, 0, 0, 0, 0, 0,
-120, 0, 0, 0,120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0,112, 0, 32, 1, 16, 0,
-104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,104, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0,
- 0, 0, 0, 0, 83, 84, 82, 67,138, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0,
- 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0,
- 14, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0,
- 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0,
- 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0,
- 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0,
- 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0,
- 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0,
- 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0,
- 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0,
- 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0,
- 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0,
- 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0,
- 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 48, 0, 33, 0, 21, 0,
- 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0,
- 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0,
- 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0,
- 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0,
- 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, 4, 0, 69, 0, 4, 0, 70, 0,
- 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 13, 0, 27, 0, 31, 0,
- 39, 0, 75, 0, 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, 36, 0, 80, 0, 27, 0, 81, 0,
- 2, 0, 17, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 84, 0,
- 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 87, 0, 4, 0, 88, 0,
- 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0,
- 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0,
- 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0,
- 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0,
- 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0,
- 7, 0,117, 0, 7, 0,118, 0, 2, 0,119, 0, 2, 0,120, 0, 7, 0,121, 0, 36, 0, 80, 0, 32, 0,122, 0, 45, 0, 13, 0,
- 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 2, 0, 19, 0, 2, 0,129, 0,
- 2, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 2, 0,133, 0, 46, 0,134, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0,
- 12, 0,135, 0, 48, 0,136, 0, 49, 0,137, 0, 50, 0,138, 0, 2, 0,129, 0, 2, 0, 19, 0, 2, 0,139, 0, 2, 0, 17, 0,
- 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 2, 0,145, 0,
- 2, 0,146, 0, 4, 0,147, 0, 4, 0,148, 0, 43, 0,149, 0, 30, 0,150, 0, 0, 0,151, 0, 7, 0,152, 0, 4, 0,153, 0,
- 2, 0,154, 0, 2, 0,155, 0, 2, 0,156, 0, 2, 0,157, 0, 7, 0,158, 0, 7, 0,159, 0, 51, 0, 63, 0, 2, 0,160, 0,
- 2, 0,161, 0, 2, 0,162, 0, 2, 0,163, 0, 32, 0,164, 0, 52, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 0, 0,168, 0,
- 0, 0,169, 0, 0, 0,170, 0, 7, 0,171, 0, 7, 0,172, 0, 7, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0,
- 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0,
- 7, 0,185, 0, 7, 0,186, 0, 7, 0, 57, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0,
- 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0,
- 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0,
- 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0,
- 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0, 53, 0, 15, 0, 0, 0,222, 0,
- 9, 0,223, 0, 0, 0,224, 0, 0, 0,225, 0, 4, 0,226, 0, 4, 0,227, 0, 9, 0,228, 0, 7, 0,229, 0, 7, 0,230, 0,
- 7, 0,231, 0, 4, 0,232, 0, 9, 0,233, 0, 9, 0,234, 0, 4, 0,235, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,182, 0,
- 7, 0,183, 0, 7, 0,184, 0, 7, 0,236, 0, 7, 0, 67, 0, 4, 0, 64, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0,
- 2, 0, 64, 0, 2, 0,237, 0, 54, 0,231, 0, 56, 0, 17, 0, 32, 0,164, 0, 47, 0,238, 0, 57, 0,239, 0, 7, 0,240, 0,
- 7, 0,241, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,243, 0, 4, 0,244, 0, 2, 0,245, 0,
- 2, 0,246, 0, 4, 0,129, 0, 4, 0,140, 0, 2, 0,247, 0, 2, 0,248, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,249, 0,
- 7, 0,250, 0, 7, 0,251, 0, 2, 0,139, 0, 2, 0,252, 0, 4, 0,253, 0, 4, 0,254, 0, 32, 0,164, 0, 4, 0,255, 0,
- 2, 0, 0, 1, 2, 0, 1, 1, 9, 0, 2, 1, 7, 0, 3, 1, 7, 0, 4, 1, 2, 0, 5, 1, 2, 0, 6, 1, 2, 0, 7, 1,
- 2, 0, 8, 1, 7, 0, 9, 1, 7, 0, 10, 1, 55, 0, 11, 1, 59, 0, 11, 0, 4, 0, 12, 1, 4, 0, 13, 1, 2, 0, 14, 1,
- 2, 0, 19, 0, 2, 0, 15, 1, 2, 0, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, 4, 0, 17, 1, 0, 0, 18, 1, 7, 0, 19, 1,
- 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1,
- 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1,
- 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1,
- 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0,
- 2, 0,242, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1,
- 2, 0, 54, 1, 2, 0, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 7, 0, 55, 1,
- 7, 0, 56, 1, 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,238, 0, 53, 0, 59, 1, 55, 0, 11, 1,
- 56, 0, 60, 1, 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,181, 0, 61, 0, 8, 0, 7, 0, 64, 1,
- 7, 0, 65, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 45, 0, 62, 0, 84, 0,
- 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,175, 0, 2, 0, 70, 1, 7, 0,182, 0,
- 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1,
- 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,249, 0,
- 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1,
- 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1,
- 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1,
- 2, 0, 43, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1,
- 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1,
- 7, 0,119, 1, 2, 0,120, 1, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, 2, 0,124, 1, 2, 0,125, 1, 2, 0,126, 1,
- 2, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 2, 0,132, 1, 2, 0,133, 1, 36, 0, 80, 0,
- 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0,
- 7, 0,137, 1, 7, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 7, 0,143, 1, 7, 0,144, 1,
- 7, 0,145, 1, 7, 0,146, 1, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1,
- 7, 0,153, 1, 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,155, 1, 2, 0, 19, 0, 7, 0,182, 0,
- 7, 0,183, 0, 7, 0,184, 0, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1,
- 7, 0,162, 1, 7, 0,163, 1, 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1,
- 7, 0,170, 1, 7, 0,171, 1, 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1, 65, 0,176, 1, 7, 0,177, 1,
- 7, 0,178, 1, 7, 0,179, 1, 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 2, 0,184, 1, 2, 0,185, 1,
- 2, 0,186, 1, 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 2, 0,191, 1, 2, 0,192, 1, 7, 0,193, 1,
- 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, 4, 0, 69, 1, 4, 0,199, 1, 2, 0,200, 1,
- 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 7, 0,206, 1, 7, 0,207, 1, 7, 0,208, 1,
- 7, 0,209, 1, 7, 0,210, 1, 7, 0,211, 1, 7, 0,212, 1, 7, 0,213, 1, 0, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1,
- 7, 0,217, 1, 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, 0, 0, 63, 1, 2, 0,221, 1, 2, 0,222, 1,
- 2, 0,135, 1, 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 7, 0,229, 1,
- 7, 0,230, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, 0, 0,233, 1, 0, 0,234, 1, 0, 0,235, 1,
- 0, 0,236, 1, 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 51, 0,134, 1, 60, 0, 58, 1, 36, 0, 80, 0,
- 67, 0,241, 1, 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1, 7, 0,246, 1, 2, 0,247, 1,
- 2, 0, 70, 0, 7, 0,248, 1, 7, 0,249, 1, 7, 0,250, 1, 7, 0,251, 1, 7, 0,252, 1, 7, 0,253, 1, 7, 0,254, 1,
- 7, 0,255, 1, 7, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, 4, 0,121, 1, 12, 0, 4, 2, 68, 0, 4, 0,
- 27, 0, 31, 0, 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0, 6, 2,
- 4, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2, 2, 0, 17, 0, 2, 0, 19, 0,
- 2, 0, 13, 2, 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 15, 2, 7, 0, 16, 2, 7, 0, 17, 2,
- 7, 0, 18, 2, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 23, 0, 7, 0, 22, 2, 7, 0, 23, 2, 72, 0, 20, 0,
- 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, 12, 0, 26, 2, 36, 0, 80, 0, 66, 0, 27, 2,
- 0, 0, 19, 0, 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1,
- 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, 7, 0, 34, 2, 7, 0, 35, 2, 7, 0, 36, 2,
- 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 42, 2,
- 34, 0, 7, 0, 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, 2, 0, 42, 2, 7, 0,251, 0, 7, 0, 37, 0,
- 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 44, 2, 2, 0, 42, 2, 2, 0, 19, 0, 2, 0, 45, 2,
- 2, 0, 46, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2, 2, 0, 52, 2, 7, 0, 53, 2,
- 7, 0, 54, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, 4, 0, 57, 2, 74, 0, 5, 0, 2, 0, 58, 2,
- 2, 0, 44, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0,
- 7, 0, 59, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 60, 2, 12, 0, 25, 2, 12, 0, 61, 2,
- 32, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, 38, 0, 66, 2, 66, 0, 27, 2, 12, 0, 67, 2,
- 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 68, 2, 2, 0, 69, 2, 2, 0, 70, 2,
- 7, 0, 71, 2, 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, 2, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2,
- 7, 0, 76, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, 4, 0, 79, 2, 34, 0, 80, 2, 2, 0, 23, 0,
- 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 81, 2, 7, 0, 82, 2, 7, 0, 83, 2, 7, 0, 84, 2, 7, 0, 85, 2, 7, 0, 86, 2,
- 7, 0, 87, 2, 7, 0, 88, 2, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 91, 2, 0, 0, 92, 2, 78, 0, 93, 2, 79, 0, 94, 2,
- 0, 0, 95, 2, 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 4, 0,100, 2, 7, 0,101, 2, 4, 0,102, 2,
- 4, 0,103, 2, 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, 74, 0,108, 2, 80, 0, 40, 0, 27, 0, 31, 0,
- 71, 0, 6, 2, 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, 81, 0,110, 2, 82, 0,111, 2, 83, 0,112, 2,
- 84, 0,113, 2, 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, 80, 0,118, 2, 89, 0,119, 2, 90, 0,120, 2,
- 91, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, 4, 0,125, 2, 4, 0,126, 2, 4, 0,127, 2,
- 2, 0,174, 0, 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0,129, 2, 4, 0, 68, 2, 2, 0,130, 2,
- 2, 0, 19, 0, 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, 92, 0,134, 2, 93, 0,135, 2, 83, 0, 8, 0,
- 9, 0,136, 2, 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2,
- 81, 0, 7, 0, 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 2, 0, 44, 2, 0, 0,146, 2, 0, 0, 19, 0,
- 85, 0, 5, 0, 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,149, 2,
- 7, 0, 36, 2, 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,152, 2, 2, 0,153, 2,
- 2, 0, 44, 2, 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 2, 87, 0, 4, 0, 0, 0,236, 0, 0, 0,182, 0, 0, 0,183, 0,
- 0, 0,184, 0, 95, 0, 6, 0, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2,
- 96, 0, 1, 0, 7, 0,154, 2, 97, 0, 5, 0, 0, 0,236, 0, 0, 0,182, 0, 0, 0,183, 0, 0, 0,184, 0, 4, 0, 37, 0,
- 88, 0, 1, 0, 7, 0,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,137, 2, 47, 0,136, 2,
- 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 98, 0, 1, 0, 7, 0,157, 2, 99, 0, 1, 0,
- 4, 0,158, 2,100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,102, 0, 3, 0, 4, 0,160, 2, 0, 0, 92, 0,
- 7, 0,161, 2,104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0,105, 0, 1, 0,104, 0,138, 2,
-106, 0, 5, 0, 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, 0, 0, 70, 2,107, 0, 2, 0, 4, 0,164, 2,
- 4, 0,163, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,105, 0,166, 2,107, 0,167, 2, 4, 0, 54, 0,
- 4, 0,125, 2, 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, 12, 0,169, 2, 84, 0,168, 2, 0, 0,170, 2,
- 0, 0,171, 2, 0, 0,172, 2, 0, 0,173, 2, 0, 0,174, 2, 0, 0,175, 2, 0, 0,176, 2, 0, 0, 19, 0, 91, 0,121, 2,
- 91, 0,123, 2, 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, 4, 0,180, 2, 81, 0,181, 2, 85, 0,182, 2,
- 4, 0,125, 2, 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,109, 0, 0, 0,109, 0, 1, 0, 4, 0, 17, 0,
- 4, 0, 69, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,109, 0,184, 2, 2, 0,185, 2, 2, 0,169, 2,
- 2, 0,186, 2, 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0,
-112, 0, 5, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, 0, 0,190, 2,113, 0, 5, 0,109, 0,184, 2,
- 7, 0, 88, 0, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,109, 0,184, 2, 32, 0,194, 2, 0, 0, 72, 0,
- 4, 0, 69, 1, 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, 32, 0,196, 2, 32, 0,197, 2, 32, 0,198, 2,
- 7, 0,199, 2, 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, 4, 0,203, 2, 4, 0, 90, 0, 4, 0,204, 2,
-116, 0, 5, 0,109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, 32, 0,207, 2,117, 0, 3, 0,109, 0,184, 2,
- 7, 0,208, 2, 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, 4, 0,210, 2, 4, 0, 37, 0, 2, 0, 90, 0,
- 2, 0,211, 2, 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,119, 0, 3, 0,109, 0,184, 2, 7, 0, 37, 0,
- 4, 0, 17, 0,120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,123, 0,218, 2, 7, 0,219, 2, 4, 0, 17, 0,
-124, 0, 11, 0,109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, 0, 0,215, 2, 7, 0,223, 2, 4, 0,224, 2,
- 32, 0,225, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,109, 0,184, 2, 32, 0,228, 2, 47, 0,229, 2,
- 4, 0, 90, 0, 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,126, 0, 3, 0,
-109, 0,184, 2, 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, 7, 0,235, 2, 0, 0,215, 2, 2, 0, 19, 0,
- 2, 0,236, 2,128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, 7, 0,251, 0, 7, 0,106, 0, 0, 0,215, 2,
- 2, 0, 19, 0, 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, 0, 0,215, 2, 52, 0,220, 2, 32, 0,225, 2,
- 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2,
- 7, 0,243, 2, 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, 7, 0,245, 2, 7, 0,246, 2, 7, 0, 43, 0,
-130, 0, 7, 0,109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, 32, 0,164, 0, 7, 0,249, 2, 0, 0,215, 2,
-131, 0, 10, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, 7, 0,252, 2, 7, 0,244, 2, 4, 0,253, 2,
- 4, 0,254, 2, 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,133, 0, 7, 0,109, 0,184, 2, 46, 0,134, 0,
-134, 0, 0, 3,135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,138, 0, 13, 0,109, 0,184, 2, 84, 0, 5, 3,
- 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 81, 0, 11, 3, 4, 0, 12, 3, 4, 0, 13, 3,
- 7, 0,219, 2, 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 15, 3,141, 0, 16, 3,
-142, 0, 14, 3, 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, 32, 0,164, 0, 4, 0, 18, 3, 4, 0, 37, 0,
-144, 0, 2, 0, 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, 4, 0, 20, 3,146, 0, 20, 0,109, 0,184, 2,
- 32, 0,164, 0, 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 70, 2, 7, 0, 22, 3, 7, 0, 23, 3, 4, 0, 54, 0,
- 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, 4, 0, 28, 3, 4, 0, 29, 3, 4, 0, 20, 3, 7, 0, 30, 3,
- 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,109, 0,184, 2,148, 0, 34, 3,141, 0, 16, 3, 4, 0, 35, 3,
- 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,149, 0, 8, 0,109, 0,184, 2, 32, 0, 45, 0, 2, 0,255, 0,
- 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, 7, 0, 39, 3,150, 0, 5, 0,109, 0,184, 2, 4, 0, 40, 3,
- 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,109, 0,184, 2, 84, 0, 43, 3, 4, 0, 44, 3, 0, 0, 45, 3,
- 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,109, 0,184, 2,153, 0, 49, 3,137, 0, 3, 3,154, 0, 10, 0,
-109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, 7, 0, 53, 3, 2, 0, 54, 3, 2, 0, 55, 3, 0, 0, 56, 3,
- 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 58, 3, 0, 0, 52, 3, 7, 0, 59, 3, 7, 0, 60, 3,
- 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2,157, 0, 27, 0, 27, 0, 31, 0,
- 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, 2, 0, 63, 3, 2, 0, 64, 3, 2, 0, 65, 3, 2, 0, 70, 0,
- 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 69, 3, 7, 0, 70, 3, 7, 0, 71, 3,
- 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, 36, 0, 80, 0, 38, 0, 66, 2, 86, 0,115, 2, 7, 0, 76, 3,
- 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 79, 3,
- 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 80, 3, 2, 0, 17, 0, 2, 0, 81, 3,
- 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, 32, 0, 38, 0, 32, 0, 86, 3, 32, 0, 87, 3, 32, 0, 88, 3,
- 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,160, 0, 90, 3,160, 0, 91, 3,161, 0, 92, 3, 9, 0, 2, 0,
-162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 95, 3, 12, 0, 96, 3, 4, 0, 69, 1, 4, 0, 97, 3,
- 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, 7, 0, 64, 1, 7, 0,100, 3, 7, 0,101, 3, 7, 0,172, 0,
- 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, 7, 0,104, 3, 7, 0,105, 3, 7, 0,106, 3, 7, 0,107, 3,
- 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, 7, 0,240, 0, 4, 0,111, 3, 2, 0, 19, 0, 2, 0,112, 3,
- 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 2, 0,116, 3, 2, 0,117, 3, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3,
- 2, 0,121, 3, 2, 0,122, 3, 4, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3, 7, 0,127, 3, 7, 0,101, 2,
- 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,215, 0, 7, 0,133, 3, 7, 0,134, 3,
- 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3, 0, 0,141, 3, 7, 0,142, 3,
- 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 7, 0,148, 3, 2, 0,156, 2, 2, 0,149, 3,
- 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, 2, 0,153, 3, 2, 0,247, 0, 7, 0,154, 3, 12, 0,155, 3,
- 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,165, 0,159, 3, 67, 0,160, 3, 2, 0,161, 3, 2, 0,162, 3,
- 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, 2, 0,166, 3,153, 0,167, 3,141, 0,168, 3,141, 0,169, 3,
- 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, 12, 0,173, 3, 12, 0,174, 3, 12, 0,175, 3,166, 0, 14, 0,
-166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, 7, 0, 66, 1, 7, 0,252, 2, 7, 0,244, 2, 0, 0, 20, 0,
- 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, 2, 0,177, 3, 7, 0,255, 2,167, 0, 12, 0,167, 0, 0, 0,
-167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, 4, 0,179, 3, 4, 0, 17, 0, 4, 0,180, 3, 7, 0, 66, 1,
- 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, 4, 0, 19, 0, 2, 0,183, 3, 2, 0,184, 3, 2, 0,244, 2,
- 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 7, 0,190, 3, 7, 0,191, 3, 7, 0,192, 3,
- 7, 0,193, 3, 7, 0,194, 3, 7, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3,
- 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0, 37, 0, 7, 0,206, 3, 7, 0,207, 3,
- 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3,
- 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,169, 0, 5, 0, 67, 0,241, 1, 7, 0,218, 3, 7, 0,219, 3,
- 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,170, 0, 1, 0, 4, 0,221, 3, 4, 0,222, 3, 4, 0,223, 3,
- 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,137, 0, 19, 0,137, 0, 0, 0,137, 0, 1, 0, 4, 0, 19, 0,
- 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3, 4, 0,222, 3, 4, 0,156, 2,
- 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 12, 0,237, 3,171, 0,238, 3, 9, 0,239, 3,
-172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, 7, 0,240, 3, 7, 0,241, 3, 7, 0,242, 3, 4, 0,243, 3,
- 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 7, 0,250, 3, 7, 0,251, 3,
- 7, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4,
- 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 4, 0, 9, 4, 4, 0, 10, 4, 7, 0, 11, 4,
- 7, 0,133, 3,165, 0, 50, 0, 4, 0,222, 3, 4, 0, 12, 4,173, 0, 13, 4,174, 0, 14, 4, 0, 0, 37, 0, 0, 0, 15, 4,
- 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4, 7, 0, 22, 4, 7, 0, 23, 4,
- 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 2, 0, 28, 4, 0, 0, 29, 4, 2, 0, 30, 4, 7, 0, 31, 4,
- 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, 4, 0, 35, 4, 2, 0, 36, 4, 2, 0, 37, 4,172, 0, 38, 4,
- 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, 2, 0, 44, 4, 2, 0, 45, 4,
- 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4,175, 0, 52, 4, 7, 0, 53, 4,
- 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4,153, 0, 49, 0,152, 0, 57, 4, 2, 0, 17, 0, 2, 0, 58, 4,
- 2, 0, 59, 4, 2, 0, 60, 4, 7, 0, 61, 4, 2, 0, 62, 4, 2, 0, 63, 4, 7, 0, 64, 4, 2, 0, 65, 4, 2, 0, 66, 4,
- 7, 0, 67, 4, 7, 0, 68, 4, 7, 0, 69, 4, 7, 0, 70, 4, 7, 0, 71, 4, 7, 0, 72, 4, 4, 0, 73, 4, 7, 0, 74, 4,
- 7, 0, 75, 4, 7, 0, 76, 4, 80, 0, 77, 4, 80, 0, 78, 4, 80, 0, 79, 4, 0, 0, 80, 4, 7, 0, 81, 4, 7, 0, 82, 4,
- 36, 0, 80, 0, 2, 0, 83, 4, 0, 0, 84, 4, 0, 0, 85, 4, 7, 0, 86, 4, 4, 0, 87, 4, 7, 0, 88, 4, 7, 0, 89, 4,
- 4, 0, 90, 4, 4, 0, 19, 0, 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 84, 0, 94, 4, 7, 0, 95, 4, 7, 0, 96, 4,
- 7, 0, 97, 4, 7, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 4, 0,102, 4,176, 0, 73, 0, 27, 0, 31, 0,
- 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4,
- 7, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,162, 1, 7, 0,164, 1, 7, 0,163, 1,
- 7, 0,112, 4, 4, 0,113, 4, 7, 0,114, 4, 7, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4,
- 7, 0,120, 4, 2, 0,121, 4, 2, 0, 69, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4, 2, 0,125, 4, 2, 0,126, 4,
- 2, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 7, 0,134, 4,
- 7, 0,135, 4, 7, 0,136, 4, 7, 0,137, 4, 7, 0,138, 4, 7, 0,139, 4, 2, 0,140, 4, 2, 0,141, 4, 2, 0,142, 4,
- 2, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 2, 0,148, 4, 2, 0,149, 4, 2, 0,150, 4,
- 2, 0,151, 4, 7, 0,152, 4, 7, 0,153, 4, 7, 0,154, 4, 7, 0,155, 4, 2, 0,156, 4, 2, 0,157, 4, 2, 0,158, 4,
- 2, 0, 19, 0, 7, 0,159, 4, 7, 0,160, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0,
-177, 0, 8, 0,177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,161, 4, 4, 0, 19, 0, 2, 0,162, 4, 2, 0,163, 4,
- 32, 0,164, 0,178, 0, 13, 0, 9, 0,164, 4, 9, 0,165, 4, 4, 0,166, 4, 4, 0,167, 4, 4, 0,168, 4, 4, 0,169, 4,
- 4, 0,170, 4, 4, 0,171, 4, 4, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0, 37, 0, 0, 0,175, 4,179, 0, 5, 0,
- 9, 0,176, 4, 9, 0,177, 4, 4, 0,178, 4, 4, 0, 70, 0, 0, 0,179, 4,180, 0, 15, 0, 4, 0, 17, 0, 4, 0,180, 4,
- 4, 0,181, 4, 4, 0,182, 4, 4, 0,183, 4, 4, 0,184, 4, 7, 0,185, 4, 4, 0,186, 4, 4, 0, 90, 0, 4, 0,187, 4,
- 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 26, 0, 30, 0,181, 0, 7, 0, 4, 0,192, 4, 7, 0,193, 4,
- 7, 0,194, 4, 7, 0,195, 4, 4, 0,196, 4, 2, 0, 19, 0, 2, 0, 37, 0,182, 0, 11, 0,182, 0, 0, 0,182, 0, 1, 0,
- 0, 0, 20, 0, 66, 0,197, 4, 67, 0,198, 4, 4, 0,111, 3, 4, 0,199, 4, 4, 0,200, 4, 4, 0, 37, 0, 4, 0,201, 4,
- 4, 0,202, 4,183, 0,134, 0,178, 0,203, 4,179, 0,204, 4,180, 0,205, 4, 4, 0, 17, 3, 4, 0,126, 0, 4, 0, 34, 4,
- 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 2, 0, 19, 0, 2, 0,210, 4, 7, 0,101, 2, 7, 0,211, 4,
- 7, 0,212, 4, 7, 0,213, 4, 7, 0,214, 4, 7, 0,215, 4, 2, 0,216, 4, 2, 0,217, 4, 2, 0,218, 4, 2, 0,219, 4,
- 2, 0,246, 0, 2, 0,220, 4, 2, 0,221, 4, 2, 0,222, 4, 2, 0,223, 4, 2, 0,224, 4, 2, 0, 91, 1, 2, 0,106, 0,
- 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 2, 0,229, 4, 2, 0,230, 4, 2, 0,231, 4, 2, 0,232, 4,
- 2, 0,233, 4, 2, 0, 92, 1, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,237, 4, 4, 0,238, 4, 4, 0, 69, 1,
- 4, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,121, 1, 2, 0,243, 4, 2, 0,244, 4, 2, 0,245, 4,
- 2, 0,246, 4, 24, 0,247, 4, 24, 0,248, 4, 23, 0,249, 4, 12, 0,250, 4, 2, 0,251, 4, 2, 0, 37, 0, 7, 0,252, 4,
- 7, 0,253, 4, 7, 0,254, 4, 7, 0,255, 4, 4, 0, 0, 5, 7, 0, 1, 5, 7, 0, 2, 5, 7, 0, 3, 5, 7, 0, 4, 5,
- 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 7, 0, 11, 5, 7, 0, 12, 5,
- 7, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 2, 0, 18, 5, 2, 0, 19, 5, 2, 0, 20, 5,
- 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 4, 0, 24, 5, 4, 0, 25, 5, 4, 0, 26, 5, 4, 0, 27, 5, 4, 0, 28, 5,
- 7, 0, 29, 5, 4, 0, 30, 5, 4, 0, 31, 5, 4, 0, 32, 5, 4, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, 7, 0, 36, 5,
- 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 7, 0, 42, 5, 0, 0, 43, 5, 0, 0, 44, 5,
- 4, 0, 45, 5, 2, 0, 46, 5, 2, 0,238, 1, 0, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 4, 0, 50, 5, 4, 0, 51, 5,
- 7, 0, 52, 5, 7, 0, 53, 5, 2, 0, 54, 5, 2, 0, 55, 5, 7, 0, 56, 5, 2, 0, 57, 5, 2, 0, 58, 5, 4, 0, 59, 5,
- 2, 0, 60, 5, 2, 0, 61, 5, 2, 0, 62, 5, 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 70, 0, 42, 0, 65, 5, 0, 0, 66, 5,
-184, 0, 9, 0,184, 0, 0, 0,184, 0, 1, 0, 0, 0, 20, 0, 2, 0, 67, 5, 2, 0, 68, 5, 2, 0, 69, 5, 2, 0, 43, 0,
- 7, 0, 70, 5, 7, 0, 70, 0,185, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0, 2, 0, 71, 5, 7, 0, 72, 5,
- 7, 0, 70, 0, 42, 0, 73, 5,186, 0, 5, 0, 7, 0, 74, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,238, 1,
-187, 0, 26, 0, 7, 0,119, 4, 7, 0,120, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 75, 5, 2, 0,136, 1, 2, 0,122, 4,
- 2, 0,123, 4, 2, 0,124, 4, 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4,186, 0, 76, 5, 2, 0,216, 4, 2, 0,217, 4,
- 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0,221, 4, 2, 0,222, 4,185, 0, 77, 5, 2, 0, 78, 5,
- 2, 0,223, 4, 2, 0,226, 4, 2, 0,227, 4,188, 0, 5, 0,188, 0, 0, 0,188, 0, 1, 0, 4, 0,221, 3, 0, 0,233, 3,
- 4, 0, 19, 0,189, 0, 6, 0,190, 0, 79, 5, 4, 0, 80, 5, 4, 0, 81, 5, 9, 0, 82, 5, 0, 0, 83, 5, 4, 0, 37, 0,
-191, 0, 6, 0,189, 0, 84, 5, 2, 0, 19, 0, 2, 0, 85, 5, 2, 0, 86, 5, 2, 0, 87, 5, 9, 0, 88, 5,192, 0, 4, 0,
- 2, 0,106, 0, 2, 0,221, 2, 2, 0,227, 3, 2, 0, 89, 5,193, 0, 14, 0, 2, 0, 19, 0, 2, 0, 90, 5, 2, 0, 91, 5,
- 2, 0, 92, 5,192, 0, 93, 5, 9, 0, 88, 5, 7, 0, 94, 5, 7, 0, 57, 0, 4, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5,
- 4, 0, 98, 5, 46, 0,134, 0, 32, 0,164, 0,194, 0, 4, 0,194, 0, 0, 0,194, 0, 1, 0, 0, 0, 99, 5, 7, 0,100, 5,
-195, 0, 6, 0,189, 0, 84, 5, 7, 0,101, 5, 4, 0, 90, 0, 0, 0,102, 5, 0, 0,103, 5, 0, 0,190, 2,196, 0, 9, 0,
-189, 0, 84, 5, 7, 0,104, 5, 7, 0,105, 5, 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,106, 5, 86, 0,107, 5,
- 9, 0, 88, 5,197, 0, 74, 0,196, 0,108, 5,196, 0,109, 5,195, 0, 80, 3, 7, 0,110, 5, 2, 0,111, 5, 2, 0,112, 5,
- 7, 0,113, 5, 7, 0,114, 5, 2, 0,227, 3, 2, 0,115, 5, 7, 0,116, 5, 7, 0,117, 5, 7, 0,118, 5, 2, 0,119, 5,
- 2, 0, 95, 5, 2, 0,120, 5, 2, 0,121, 5, 2, 0,122, 5, 2, 0,123, 5, 7, 0,124, 5, 7, 0,125, 5, 7, 0,126, 5,
- 2, 0,127, 5, 2, 0,128, 5, 2, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 2, 0,132, 5, 2, 0,133, 5,191, 0,134, 5,
-193, 0,135, 5, 7, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 2, 0,139, 5, 2, 0,140, 5, 0, 0,141, 5, 0, 0,142, 5,
- 0, 0,143, 5, 0, 0,144, 5, 0, 0,145, 5, 0, 0,146, 5, 2, 0,147, 5, 7, 0,148, 5, 7, 0,149, 5, 7, 0,150, 5,
- 7, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, 7, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5, 2, 0,158, 5,
- 0, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 32, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5,
- 0, 0,167, 5, 0, 0,168, 5, 0, 0,169, 5, 0, 0,170, 5, 0, 0,171, 5, 2, 0,172, 5, 2, 0,173, 5, 2, 0,174, 5,
- 2, 0,175, 5, 2, 0,176, 5, 4, 0,177, 5, 4, 0,178, 5,198, 0, 8, 0, 4, 0,179, 5, 4, 0,180, 5, 4, 0,181, 5,
- 4, 0,182, 5, 4, 0,183, 5, 4, 0,184, 5, 4, 0, 54, 0, 4, 0,125, 2,199, 0, 3, 0, 7, 0,185, 5, 2, 0,186, 5,
- 2, 0, 19, 0,200, 0, 2, 0, 7, 0,187, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,188, 5,
-176, 0,189, 5, 46, 0,190, 5, 47, 0,238, 0, 12, 0,191, 5,177, 0,192, 5, 32, 0,193, 5, 7, 0,194, 5, 7, 0,195, 5,
- 7, 0,196, 5, 7, 0,197, 5, 4, 0,111, 3, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,201, 0,198, 5,197, 0,199, 5,
-202, 0,200, 5,183, 0,182, 0,181, 0,201, 5, 12, 0,100, 0, 12, 0,202, 5, 12, 0,203, 5,203, 0,204, 5, 2, 0,205, 5,
- 2, 0,206, 5, 2, 0,247, 0, 2, 0,207, 5, 4, 0,208, 5, 4, 0,209, 5, 12, 0,210, 5,186, 0, 76, 5,187, 0,211, 5,
-199, 0,212, 5,162, 0, 93, 3,200, 0,213, 5,204, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1, 7, 0, 89, 2, 7, 0, 90, 2,
- 7, 0,106, 0, 7, 0,214, 5,205, 0, 35, 0, 7, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5,
- 7, 0,220, 5, 7, 0,221, 5, 7, 0,222, 5, 7, 0,223, 5, 7, 0, 76, 1, 7, 0,224, 5, 7, 0,225, 5, 7, 0,226, 5,
- 7, 0,227, 5, 7, 0,171, 0, 2, 0,228, 5, 2, 0,229, 5, 2, 0, 70, 2, 2, 0,230, 5, 2, 0,231, 5, 2, 0,232, 5,
- 2, 0,233, 5, 7, 0,234, 5, 71, 0,235, 5,162, 0, 93, 3,205, 0,236, 5,206, 0,237, 5,207, 0,238, 5,208, 0,239, 5,
-209, 0,240, 5,210, 0,241, 5, 7, 0,242, 5, 2, 0,243, 5, 2, 0,244, 5, 4, 0,238, 1,211, 0, 54, 0,212, 0, 0, 0,
-212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5, 7, 0,223, 5, 7, 0, 76, 1, 7, 0, 43, 0,
- 4, 0,249, 5, 2, 0,232, 5, 2, 0,233, 5, 32, 0,188, 5, 32, 0,250, 5,204, 0,251, 5,211, 0,236, 5, 0, 0,252, 5,
- 4, 0,111, 3, 4, 0,253, 5, 2, 0,254, 5, 2, 0, 70, 0, 2, 0,255, 5, 2, 0, 0, 6, 2, 0,238, 1, 2, 0, 19, 0,
- 2, 0, 28, 2, 2, 0, 1, 6, 7, 0,112, 0, 7, 0, 2, 6, 7, 0, 3, 6, 7, 0, 4, 6, 7, 0, 5, 6, 7, 0, 6, 6,
- 7, 0,171, 0, 7, 0,194, 5, 2, 0, 7, 6, 2, 0,121, 1, 2, 0, 8, 6, 2, 0, 9, 6, 2, 0, 10, 6, 2, 0, 11, 6,
- 2, 0, 12, 6, 2, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 4, 0, 16, 6, 12, 0, 17, 6, 2, 0, 18, 6, 2, 0,139, 2,
- 2, 0, 19, 6, 0, 0, 20, 6, 0, 0, 21, 6, 9, 0, 22, 6,162, 0, 93, 3,213, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0,
- 23, 0, 23, 6, 23, 0, 24, 6, 23, 0, 25, 6, 7, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6, 2, 0, 30, 6,
- 2, 0, 31, 6, 2, 0, 32, 6, 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 19, 0, 2, 0, 35, 6, 2, 0, 36, 6, 2, 0, 37, 6,
- 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 0, 6, 7, 0, 40, 6, 7, 0, 41, 6, 4, 0, 42, 6, 4, 0, 43, 6,212, 0, 6, 0,
-212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,214, 0, 8, 0,212, 0, 0, 0,
-212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,215, 0, 44, 6, 46, 0,134, 0,216, 0, 14, 0,
-212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,213, 0, 45, 6,217, 0, 46, 6,
- 12, 0, 47, 6, 2, 0, 69, 1, 2, 0, 48, 6, 4, 0, 19, 0, 7, 0, 49, 6, 4, 0, 0, 6,218, 0, 20, 0,212, 0, 0, 0,
-212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,206, 0,237, 5,213, 0, 45, 6, 2, 0, 50, 6,
- 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 53, 6, 2, 0, 35, 6, 2, 0, 54, 6, 0, 0, 19, 0, 0, 0,136, 1, 9, 0, 65, 2,
- 4, 0, 55, 6, 4, 0, 56, 6, 27, 0, 57, 6,219, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5,
- 7, 0,247, 5, 2, 0,248, 5,213, 0, 45, 6, 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 50, 6, 2, 0, 58, 6, 2, 0, 59, 6,
- 2, 0, 60, 6, 4, 0, 19, 0, 7, 0, 61, 6,162, 0, 93, 3,220, 0, 16, 0, 0, 0, 62, 6, 0, 0, 63, 6, 0, 0, 64, 6,
- 0, 0, 65, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 66, 6, 2, 0, 67, 6, 2, 0,181, 1, 2, 0, 68, 6, 4, 0, 69, 6,
- 4, 0, 70, 6, 2, 0, 71, 6, 2, 0, 72, 6, 0, 0, 73, 6, 0, 0, 74, 6,221, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0,
- 12, 0,245, 5, 4, 0,246, 5, 4, 0, 37, 0,220, 0, 75, 6,222, 0, 76, 6, 12, 0, 77, 6, 12, 0, 78, 6,223, 0, 79, 6,
-210, 0, 80, 6,224, 0, 81, 6, 2, 0, 82, 6, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0, 70, 0,225, 0, 17, 0,212, 0, 0, 0,
-212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,213, 0, 45, 6, 12, 0, 85, 6,226, 0, 86, 6,
- 0, 0, 87, 6,227, 0, 88, 6, 4, 0, 89, 6, 4, 0, 90, 6, 2, 0, 19, 0, 2, 0, 91, 6, 2, 0, 92, 6, 2, 0, 37, 0,
-228, 0, 29, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5, 47, 0,229, 2,
- 45, 0, 57, 1, 63, 0, 93, 6, 2, 0,133, 0, 2, 0, 94, 6, 2, 0, 70, 0, 2, 0, 95, 6, 4, 0, 19, 0, 2, 0, 96, 6,
- 2, 0, 97, 6, 2, 0, 98, 6, 2, 0,238, 1, 0, 0, 99, 6, 0, 0,100, 6, 0, 0,101, 6, 0, 0, 0, 6, 7, 0, 89, 2,
- 7, 0, 90, 2, 7, 0, 61, 6, 7, 0,121, 1, 7, 0,102, 6, 7, 0,103, 6,162, 0, 93, 3,229, 0, 11, 0,212, 0, 0, 0,
-212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5, 2, 0, 48, 6, 2, 0, 19, 0, 4, 0, 37, 0,
-217, 0, 46, 6,213, 0, 45, 6,230, 0, 27, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5,
- 2, 0,248, 5, 42, 0,104, 6, 4, 0,105, 6, 4, 0,106, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,107, 6, 0, 0,108, 6,
- 0, 0,109, 6, 4, 0,110, 6, 4, 0,111, 6, 4, 0,112, 6, 4, 0,113, 6, 2, 0,114, 6, 2, 0,115, 6, 7, 0,116, 6,
- 23, 0,117, 6, 23, 0,118, 6, 4, 0,119, 6, 4, 0,120, 6, 0, 0,121, 6, 0, 0,122, 6,231, 0, 10, 0, 27, 0, 31, 0,
- 9, 0,123, 6, 9, 0,124, 6, 9, 0,125, 6, 9, 0,126, 6, 9, 0,127, 6, 4, 0, 90, 0, 4, 0,128, 6, 0, 0,129, 6,
- 0, 0,130, 6,232, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5,231, 0,131, 6,
- 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,132, 6,233, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5,
- 4, 0,246, 5, 7, 0,247, 5,213, 0, 45, 6, 4, 0, 19, 0, 4, 0,133, 6,234, 0, 23, 0,212, 0, 0, 0,212, 0, 1, 0,
- 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,213, 0, 45, 6, 27, 0,134, 6, 27, 0, 81, 0, 2, 0, 19, 0,
- 2, 0,133, 0, 7, 0,135, 6, 9, 0,136, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,137, 6, 7, 0,138, 6, 60, 0, 58, 1,
- 60, 0,139, 6, 4, 0,140, 6, 2, 0,141, 6, 2, 0, 37, 0,162, 0, 93, 3,235, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0,
- 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5, 2, 0, 19, 0, 2, 0,120, 3, 4, 0, 37, 0,162, 0, 93, 3,
-236, 0, 42, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,213, 0, 45, 6,
-222, 0, 76, 6, 0, 0, 62, 6, 0, 0, 63, 6, 0, 0, 64, 6, 2, 0, 17, 0, 2, 0, 72, 6, 2, 0, 19, 0, 2, 0, 66, 6,
- 9, 0,136, 6, 4, 0, 69, 6, 4, 0,142, 6, 4, 0,143, 6, 4, 0, 70, 6, 23, 0,144, 6, 23, 0,145, 6, 7, 0,146, 6,
- 7, 0,147, 6, 7, 0,148, 6, 7, 0,135, 6, 2, 0,149, 6, 2, 0,237, 0, 2, 0,181, 1, 2, 0, 68, 6, 2, 0, 37, 0,
- 2, 0, 43, 0, 2, 0,150, 6, 2, 0,151, 6, 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 9, 0,156, 6,
- 2, 0,157, 6, 0, 0, 74, 6, 57, 0,158, 6,237, 0, 7, 0,237, 0, 0, 0,237, 0, 1, 0, 4, 0,159, 6, 4, 0, 23, 0,
- 0, 0, 84, 0, 4, 0,160, 6, 4, 0, 17, 0,238, 0, 13, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5,
- 7, 0,247, 5, 2, 0,248, 5, 4, 0, 17, 0, 4, 0,161, 6, 4, 0, 19, 0, 4, 0,107, 6, 12, 0,162, 6, 12, 0,163, 6,
- 0, 0,164, 6,239, 0, 5, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 4, 0, 37, 0,240, 0, 7, 0,
-240, 0, 0, 0,240, 0, 1, 0, 0, 0,165, 6, 2, 0,166, 6, 2, 0,167, 6, 2, 0,168, 6, 2, 0, 37, 0,241, 0, 12, 0,
- 2, 0,167, 6, 2, 0,169, 6, 2, 0,170, 6, 0, 0,190, 2, 2, 0,171, 6, 2, 0,172, 6, 2, 0,173, 6, 2, 0,174, 6,
- 2, 0,175, 6, 2, 0, 35, 6, 7, 0,176, 6, 7, 0,177, 6,242, 0, 18, 0,242, 0, 0, 0,242, 0, 1, 0, 0, 0,233, 3,
-241, 0,178, 6,241, 0,179, 6,241, 0,180, 6,241, 0,181, 6, 7, 0,182, 6, 2, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6,
- 2, 0,186, 6, 2, 0,187, 6, 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6,243, 0, 10, 0,
- 0, 0,193, 6, 0, 0,194, 6, 0, 0,195, 6, 0, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 2, 0,199, 6, 2, 0,200, 6,
- 2, 0,201, 6, 2, 0, 37, 0,244, 0, 8, 0, 0, 0,202, 6, 0, 0,203, 6, 0, 0,204, 6, 0, 0,205, 6, 0, 0,206, 6,
- 0, 0,207, 6, 7, 0,214, 5, 7, 0, 37, 0,245, 0, 17, 0,243, 0,208, 6,243, 0,209, 6,243, 0,210, 6,243, 0,211, 6,
-243, 0,212, 6,243, 0,213, 6,243, 0,214, 6,243, 0,215, 6,243, 0,216, 6,243, 0,217, 6,243, 0,218, 6,243, 0,219, 6,
-243, 0,220, 6,243, 0,221, 6,243, 0,222, 6,244, 0,223, 6, 0, 0,224, 6,246, 0, 71, 0, 0, 0,225, 6, 0, 0,226, 6,
- 0, 0,197, 6, 0, 0,227, 6, 0, 0,228, 6, 0, 0,229, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6,
- 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6, 0, 0,241, 6,
- 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, 0, 0,249, 6,
- 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6, 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7, 0, 0, 1, 7,
- 0, 0, 2, 7, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7,
- 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7,
- 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7,
- 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7,
- 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 92, 0,247, 0, 5, 0, 0, 0, 38, 7, 0, 0,249, 6,
- 0, 0,251, 6, 2, 0, 19, 0, 2, 0, 37, 0,248, 0, 24, 0,248, 0, 0, 0,248, 0, 1, 0, 0, 0, 20, 0,245, 0, 39, 7,
-246, 0, 40, 7,246, 0, 41, 7,246, 0, 42, 7,246, 0, 43, 7,246, 0, 44, 7,246, 0, 45, 7,246, 0, 46, 7,246, 0, 47, 7,
-246, 0, 48, 7,246, 0, 49, 7,246, 0, 50, 7,246, 0, 51, 7,246, 0, 52, 7,246, 0, 53, 7,246, 0, 54, 7,246, 0, 55, 7,
-246, 0, 56, 7,247, 0, 57, 7, 4, 0, 58, 7, 4, 0, 37, 0,249, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2,
- 7, 0, 59, 7, 7, 0, 43, 2,250, 0, 73, 0, 4, 0, 19, 0, 4, 0, 60, 7, 4, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7,
- 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 2, 0, 71, 7,
- 2, 0, 37, 0, 4, 0, 72, 7, 4, 0, 73, 7, 4, 0, 74, 7, 4, 0, 75, 7, 2, 0, 76, 7, 2, 0, 77, 7, 4, 0, 78, 7,
- 4, 0, 79, 7, 4, 0, 80, 7, 4, 0, 81, 7, 4, 0, 82, 7, 4, 0,162, 6, 4, 0, 83, 7, 2, 0, 84, 7, 2, 0, 85, 7,
- 2, 0, 86, 7, 2, 0, 87, 7, 12, 0, 88, 7, 12, 0, 89, 7, 12, 0, 90, 7, 12, 0, 91, 7, 0, 0, 92, 7, 2, 0, 93, 7,
- 2, 0, 94, 7, 2, 0, 95, 7, 2, 0, 96, 7, 2, 0, 97, 7, 2, 0, 98, 7, 2, 0, 99, 7, 2, 0,100, 7,249, 0,101, 7,
- 2, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, 2, 0,105, 7, 2, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7, 2, 0,109, 7,
- 4, 0,110, 7, 4, 0,111, 7, 2, 0,112, 7, 2, 0,113, 7, 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, 2, 0,117, 7,
- 2, 0,118, 7, 2, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7,
- 7, 0,126, 7, 2, 0,139, 5, 2, 0,140, 5, 55, 0,127, 7,215, 0, 21, 0, 27, 0, 31, 0, 12, 0,128, 7, 12, 0,129, 7,
- 12, 0,130, 7, 12, 0,245, 5, 46, 0,134, 0, 46, 0,131, 7, 2, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7,
- 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0, 37, 0, 2, 0,139, 7, 2, 0,140, 7, 4, 0, 70, 0,210, 0,141, 7,
- 9, 0,142, 7, 2, 0,143, 7,251, 0, 5, 0,251, 0, 0, 0,251, 0, 1, 0,251, 0,144, 7, 13, 0,145, 7, 4, 0, 19, 0,
-252, 0, 7, 0,252, 0, 0, 0,252, 0, 1, 0,251, 0,146, 7,251, 0,147, 7, 2, 0,248, 4, 2, 0, 19, 0, 4, 0, 37, 0,
-253, 0, 25, 0,253, 0, 0, 0,253, 0, 1, 0,254, 0,148, 7,255, 0, 81, 6, 0, 0,149, 7, 0, 0,150, 7, 0, 0,151, 7,
- 2, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,157, 7,
- 2, 0,158, 7, 2, 0,159, 7, 4, 0,160, 7,253, 0,161, 7, 9, 0,162, 7, 4, 0,163, 7, 4, 0,164, 7, 4, 0,165, 7,
- 4, 0,166, 7, 0, 0,167, 7, 0, 1, 22, 0, 0, 1, 0, 0, 0, 1, 1, 0,251, 0,146, 7,251, 0,147, 7,251, 0,168, 7,
-251, 0,169, 7,215, 0,170, 7, 23, 0, 52, 0, 0, 0,246, 5, 0, 0,171, 7, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0,172, 7,
- 2, 0, 37, 0, 2, 0,135, 7, 2, 0,160, 6, 2, 0, 19, 0, 1, 1,148, 7, 12, 0,173, 7, 12, 0,245, 5, 12, 0,174, 7,
- 12, 0,175, 7, 2, 1, 21, 0, 2, 1, 0, 0, 2, 1, 1, 0,213, 0, 45, 6, 23, 0,176, 7, 23, 0,177, 7, 2, 0, 36, 6,
- 2, 0, 37, 6, 2, 0,178, 7, 2, 0,179, 7, 2, 0,180, 7, 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,134, 7, 2, 0,138, 7,
- 4, 0, 43, 0, 3, 1,148, 7, 12, 0,181, 7, 12, 0,182, 7, 12, 0,174, 7, 0, 0,183, 7, 9, 0,184, 7, 4, 1, 12, 0,
- 0, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,235, 4, 2, 0,230, 4,215, 0,190, 7,
- 46, 0,191, 7, 4, 0,192, 7, 4, 0,193, 7, 0, 0, 35, 0, 5, 1, 1, 0, 0, 0,194, 7, 6, 1, 8, 0, 57, 0,195, 7,
- 57, 0,196, 7, 6, 1,197, 7, 6, 1,198, 7, 6, 1,199, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,200, 7, 7, 1, 4, 0,
- 4, 0,105, 6, 4, 0,201, 7, 4, 0,110, 6, 4, 0,202, 7, 8, 1, 2, 0, 4, 0,203, 7, 4, 0,204, 7, 9, 1, 7, 0,
- 7, 0,205, 7, 7, 0,206, 7, 7, 0,207, 7, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,114, 4, 7, 0,208, 7, 10, 1, 6, 0,
- 0, 0,209, 7, 0, 0, 64, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0,234, 4, 4, 0, 37, 0, 11, 1, 21, 0, 11, 1, 0, 0,
- 11, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,210, 7, 4, 0,211, 7, 4, 0,212, 7, 5, 1,213, 7,
- 0, 0,209, 7, 4, 0,214, 7, 4, 0,215, 7, 10, 1, 87, 3, 7, 1,216, 7, 8, 1,217, 7, 9, 1,218, 7, 6, 1,219, 7,
- 6, 1,220, 7, 6, 1,221, 7, 57, 0,222, 7, 57, 0,223, 7, 12, 1, 12, 0, 0, 0, 5, 2, 9, 0,223, 0, 0, 0,224, 0,
- 4, 0,227, 0, 4, 0,235, 0, 9, 0,228, 0, 7, 0,230, 0, 7, 0,231, 0, 9, 0,224, 7, 9, 0,225, 7, 9, 0,232, 0,
- 9, 0,234, 0, 13, 1, 43, 0, 13, 1, 0, 0, 13, 1, 1, 0, 9, 0,226, 7, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0,
- 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0,227, 7, 4, 0,228, 7, 4, 0,211, 7, 4, 0,212, 7, 4, 0,229, 7,
- 4, 0,246, 0, 4, 0,230, 7, 4, 0,231, 7, 7, 0,105, 5, 7, 0,232, 7, 4, 0,126, 0, 4, 0,233, 7, 11, 1,234, 7,
- 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0,235, 7, 7, 0,236, 7, 12, 1, 59, 1, 13, 1,237, 7, 13, 1,238, 7,
- 13, 1,239, 7, 12, 0,240, 7, 14, 1,241, 7, 15, 1,242, 7, 7, 0,243, 7, 7, 0,244, 7, 4, 0,245, 7, 7, 0,246, 7,
- 9, 0,247, 7, 4, 0,248, 7, 4, 0,249, 7, 4, 0,250, 7, 7, 0,251, 7, 16, 1, 4, 0, 16, 1, 0, 0, 16, 1, 1, 0,
- 12, 0,252, 7, 13, 1,253, 7,201, 0, 6, 0, 12, 0,254, 7, 12, 0,240, 7, 12, 0,255, 7, 13, 1, 0, 8, 0, 0, 1, 8,
- 0, 0, 2, 8, 17, 1, 4, 0, 7, 0, 3, 8, 7, 0,109, 0, 2, 0, 4, 8, 2, 0, 5, 8, 18, 1, 6, 0, 7, 0, 6, 8,
- 7, 0, 7, 8, 7, 0, 8, 8, 7, 0, 9, 8, 4, 0, 10, 8, 4, 0, 11, 8, 19, 1, 12, 0, 7, 0, 12, 8, 7, 0, 13, 8,
- 7, 0, 14, 8, 7, 0, 15, 8, 7, 0, 16, 8, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 20, 8, 7, 0, 21, 8,
- 4, 0,233, 2, 4, 0, 22, 8, 20, 1, 2, 0, 7, 0, 74, 5, 7, 0, 37, 0, 21, 1, 5, 0, 7, 0, 23, 8, 7, 0, 24, 8,
- 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 25, 8, 22, 1, 6, 0, 22, 1, 0, 0, 22, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0,
- 2, 0, 26, 8, 2, 0, 57, 0, 23, 1, 8, 0, 23, 1, 0, 0, 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 26, 8,
- 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 24, 1, 45, 0, 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0,
- 2, 0, 26, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 27, 8, 7, 0, 28, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 29, 8,
- 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8,
- 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 37, 0, 7, 0, 38, 8, 7, 0, 39, 8, 7, 0, 40, 8,
- 2, 0, 41, 8, 2, 0, 42, 8, 2, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 2, 0, 46, 8, 2, 0, 47, 8, 2, 0, 48, 8,
- 2, 0, 28, 2, 2, 0, 49, 8, 2, 0, 25, 2, 2, 0, 50, 8, 0, 0, 51, 8, 0, 0, 52, 8, 7, 0,240, 0, 25, 1, 53, 8,
- 67, 0,241, 1, 26, 1, 16, 0, 26, 1, 0, 0, 26, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 26, 8, 2, 0,242, 0,
- 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0, 54, 8, 7, 0,243, 2,
- 7, 0,245, 2, 7, 0,246, 2,227, 0, 5, 0, 2, 0, 17, 0, 2, 0,200, 7, 2, 0, 19, 0, 2, 0, 55, 8, 27, 0,134, 6,
-226, 0, 3, 0, 4, 0, 69, 0, 4, 0, 56, 8,227, 0, 2, 0, 27, 1, 7, 0, 27, 1, 0, 0, 27, 1, 1, 0, 0, 0, 20, 0,
- 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 57, 8, 28, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 58, 8,
- 4, 0, 59, 8, 4, 0, 37, 0, 29, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 30, 1, 4, 0,
- 0, 0, 20, 0, 66, 0, 60, 8, 7, 0, 76, 1, 7, 0, 37, 0, 31, 1, 6, 0, 2, 0, 61, 8, 2, 0, 62, 8, 2, 0, 17, 0,
- 2, 0, 63, 8, 0, 0, 64, 8, 0, 0, 65, 8, 32, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 66, 8,
- 0, 0, 67, 8, 33, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 34, 1, 4, 0, 2, 0, 68, 8, 2, 0, 69, 8,
- 2, 0, 19, 0, 2, 0, 37, 0, 35, 1, 6, 0, 0, 0, 20, 0, 0, 0, 70, 8, 2, 0, 71, 8, 2, 0,243, 2, 2, 0, 69, 1,
- 2, 0, 70, 0, 36, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,116, 4, 2, 0, 19, 0, 2, 0,205, 2, 37, 1, 3, 0,
- 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 68, 8, 38, 1, 7, 0, 0, 0, 20, 0, 7, 0,116, 4, 0, 0, 72, 8, 0, 0, 73, 8,
- 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 74, 8, 39, 1, 4, 0, 0, 0, 75, 8, 0, 0, 76, 8, 4, 0, 17, 0, 7, 0,209, 2,
- 40, 1, 3, 0, 32, 0, 77, 8, 0, 0, 78, 8, 0, 0, 79, 8, 41, 1, 18, 0, 41, 1, 0, 0, 41, 1, 1, 0, 2, 0, 17, 0,
- 2, 0, 80, 8, 2, 0, 19, 0, 2, 0, 81, 8, 2, 0, 82, 8, 2, 0, 83, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0,
- 9, 0, 2, 0, 42, 1, 84, 8, 32, 0, 45, 0, 2, 0, 89, 5, 2, 0,243, 7, 2, 0, 85, 8, 2, 0, 37, 0, 43, 1, 11, 0,
- 0, 0, 20, 0, 0, 0, 17, 0, 0, 0, 86, 8, 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8,
- 4, 0, 90, 8, 4, 0, 91, 8, 4, 0, 92, 8, 44, 1, 1, 0, 0, 0, 93, 8, 45, 1, 4, 0, 42, 0,104, 6, 0, 0, 94, 8,
- 4, 0, 69, 1, 4, 0, 19, 0, 42, 1, 18, 0, 42, 1, 0, 0, 42, 1, 1, 0, 42, 1, 95, 8, 2, 0, 17, 0, 2, 0, 19, 0,
- 2, 0, 96, 8, 2, 0, 83, 8, 2, 0, 80, 8, 2, 0, 97, 8, 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0,
- 46, 1, 84, 8, 41, 1, 98, 8, 2, 0, 15, 0, 2, 0, 99, 8, 4, 0,100, 8, 47, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0,
- 32, 0, 45, 0, 48, 1, 12, 0,160, 0,101, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 28, 8, 4, 0, 89, 0, 0, 0, 20, 0,
- 0, 0,102, 8, 2, 0,103, 8, 2, 0,104, 8, 2, 0,105, 8, 2, 0,106, 8, 7, 0,107, 8, 49, 1, 13, 0, 2, 0, 19, 0,
- 2, 0,108, 8, 4, 0, 28, 8, 4, 0, 89, 0, 2, 0,109, 8, 7, 0,242, 3, 7, 0,110, 8, 14, 1,241, 7, 50, 1,111, 8,
- 2, 0, 17, 0, 2, 0,112, 8, 2, 0,113, 8, 2, 0,114, 8, 51, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0,
- 32, 0, 45, 0, 80, 0,115, 8, 0, 0, 20, 0, 7, 0,116, 8, 7, 0,117, 8, 7, 0,128, 3, 2, 0,118, 8, 2, 0,119, 8,
- 52, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, 32, 0,188, 5, 53, 1, 5, 0, 4, 0, 19, 0,
- 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 66, 8, 32, 0, 45, 0, 54, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 80, 8,
- 2, 0,129, 3, 7, 0,120, 8, 7, 0,121, 8, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,100, 3, 7, 0,103, 3, 7, 0,122, 8,
- 7, 0,123, 8, 32, 0,124, 8, 55, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 28, 8, 4, 0, 89, 0, 0, 0, 20, 0,
- 0, 0,102, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,125, 8, 2, 0,126, 8, 56, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2,
- 7, 0,127, 8, 7, 0,128, 8, 7, 0,235, 2, 2, 0, 19, 0, 2, 0,205, 2, 7, 0,129, 8, 57, 1, 12, 0, 2, 0, 17, 0,
- 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2, 2, 0,130, 8, 4, 0, 37, 0, 7, 0,131, 8, 7, 0,132, 8,
- 7, 0,133, 8, 7, 0,134, 8, 0, 0,135, 8, 58, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 28, 8, 4, 0, 89, 0,
- 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,125, 8, 2, 0,126, 8, 59, 1, 7, 0, 4, 0,193, 2, 4, 0,136, 8,
- 4, 0,137, 8, 4, 0,138, 8, 7, 0,139, 8, 7, 0,140, 8, 0, 0, 72, 8, 60, 1, 7, 0, 0, 0,141, 8, 32, 0,142, 8,
- 0, 0, 78, 8, 2, 0,143, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0, 79, 8, 61, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0,
- 4, 0, 28, 8, 4, 0, 89, 0, 0, 0,144, 8, 0, 0,145, 8, 62, 1, 1, 0, 4, 0, 19, 0, 63, 1, 6, 0, 0, 0, 92, 0,
- 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,146, 8, 7, 0,147, 8, 42, 0,104, 6, 64, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0,
- 4, 0, 17, 0, 32, 0, 45, 0, 65, 1, 2, 0, 4, 0, 17, 0, 4, 0, 25, 6, 66, 1, 6, 0, 0, 0, 75, 8, 0, 0, 76, 8,
- 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,148, 8, 46, 1, 10, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1, 95, 8,
- 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 80, 8, 2, 0,149, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 67, 1, 10, 0,
- 7, 0,128, 3, 7, 0,150, 8, 7, 0,151, 8, 7, 0,152, 8, 7, 0,153, 8, 4, 0, 19, 0, 7, 0,130, 8, 7, 0,154, 8,
- 7, 0,155, 8, 7, 0, 37, 0, 15, 1, 12, 0, 15, 1, 0, 0, 15, 1, 1, 0, 14, 1,156, 8, 9, 0,223, 0, 4, 0,171, 3,
- 4, 0,229, 3, 4, 0,230, 3, 4, 0,157, 8, 4, 0,158, 8, 4, 0,159, 8, 7, 0,242, 3, 7, 0, 37, 0, 50, 1, 8, 0,
- 7, 0,160, 8, 7, 0,161, 8, 7, 0,162, 8, 7, 0,163, 8, 7, 0,164, 8, 7, 0,165, 8, 7, 0,166, 8, 7, 0,167, 8,
- 14, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, 43, 0,168, 8, 36, 0, 80, 0, 7, 0,242, 3,
- 7, 0,169, 8, 7, 0,110, 8, 7, 0,160, 8, 7, 0,161, 8, 7, 0,170, 8, 4, 0, 90, 0, 4, 0,159, 8, 9, 0,171, 8,
- 68, 1, 15, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 0, 1,172, 8,213, 0, 45, 6,
- 14, 1,241, 7, 2, 0, 69, 1, 2, 0,108, 8, 2, 0, 89, 2, 2, 0, 90, 2, 2, 0, 19, 0, 2, 0, 97, 6, 4, 0, 70, 0,
- 69, 1, 6, 0, 69, 1, 0, 0, 69, 1, 1, 0, 32, 0, 45, 0, 9, 0,173, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0,
- 27, 0, 31, 0, 12, 0,174, 8, 4, 0,131, 0, 7, 0,175, 8, 70, 1, 26, 0, 70, 1, 0, 0, 70, 1, 1, 0, 26, 0,176, 8,
- 70, 1, 38, 0, 12, 0,177, 8, 0, 0, 20, 0, 7, 0,178, 8, 7, 0,179, 8, 7, 0,180, 8, 7, 0,181, 8, 4, 0, 19, 0,
- 7, 0,182, 8, 7, 0,183, 8, 7, 0,184, 8, 7, 0, 76, 1, 7, 0, 36, 2, 7, 0,185, 8, 7, 0,191, 2, 7, 0,186, 8,
- 7, 0,187, 8, 7, 0,188, 8, 7, 0,189, 8, 7, 0,190, 8, 7, 0,172, 0, 2, 0,131, 0, 2, 0,120, 5, 71, 1, 22, 0,
- 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,191, 8, 12, 0,192, 8, 12, 0,193, 8, 9, 0,194, 8, 4, 0, 19, 0, 4, 0,254, 5,
- 2, 0,247, 2, 2, 0, 55, 6, 2, 0,131, 0, 2, 0,195, 8, 2, 0,196, 8, 2, 0,197, 8, 2, 0,198, 8, 2, 0,199, 8,
- 4, 0,200, 8, 4, 0,201, 8, 4, 0,202, 8, 4, 0,203, 8, 4, 0,204, 8, 4, 0,205, 8, 72, 1, 2, 0, 7, 0,152, 2,
- 4, 0, 19, 0, 73, 1, 5, 0, 72, 1,206, 8, 4, 0,191, 2, 4, 0,207, 8, 4, 0,208, 8, 4, 0, 19, 0, 74, 1, 6, 0,
- 4, 0, 37, 0, 4, 0, 55, 6, 4, 0,202, 8, 4, 0,203, 8, 4, 0,204, 8, 4, 0,205, 8, 75, 1, 42, 0, 75, 1, 0, 0,
- 75, 1, 1, 0, 26, 0,176, 8, 12, 0,155, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,209, 8, 2, 0,210, 8, 2, 0,211, 8,
- 2, 0,114, 3, 2, 0,212, 8, 4, 0, 72, 2, 4, 0,202, 8, 4, 0,203, 8, 70, 1,213, 8, 75, 1, 38, 0, 75, 1,214, 8,
- 12, 0,215, 8, 9, 0,216, 8, 9, 0,217, 8, 9, 0,218, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,219, 8, 7, 0, 15, 2,
- 7, 0,105, 3, 7, 0,107, 3, 2, 0,137, 3, 2, 0, 37, 0, 7, 0,220, 8, 7, 0,221, 8, 7, 0,110, 3, 7, 0,222, 8,
- 7, 0,223, 8, 7, 0,224, 8, 7, 0,225, 8, 7, 0,226, 8, 7, 0,227, 8, 7, 0,228, 8, 7, 0,229, 8, 7, 0, 65, 2,
- 32, 0,230, 8,161, 0, 11, 0, 12, 0,231, 8, 2, 0, 19, 0, 2, 0,232, 8, 7, 0,101, 2, 7, 0,233, 8, 7, 0,234, 8,
- 12, 0,235, 8, 4, 0,236, 8, 4, 0,237, 8, 9, 0,238, 8, 9, 0,239, 8, 76, 1, 1, 0, 4, 0,237, 8, 77, 1, 12, 0,
- 4, 0,237, 8, 7, 0, 92, 8, 2, 0,240, 8, 2, 0,241, 8, 7, 0,242, 8, 7, 0,243, 8, 2, 0,244, 8, 2, 0, 19, 0,
- 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 78, 1, 7, 0, 78, 1, 0, 0, 78, 1, 1, 0, 12, 0,249, 8,
- 4, 0, 19, 0, 4, 0,250, 8, 0, 0,233, 3,247, 0,251, 8,160, 0, 7, 0, 27, 0, 31, 0, 12, 0,252, 8, 12, 0,231, 8,
- 12, 0,253, 8, 12, 0,100, 0, 4, 0, 19, 0, 4, 0,254, 8,217, 0, 4, 0, 27, 0,156, 8, 12, 0,231, 8, 4, 0,255, 8,
- 4, 0, 19, 0, 79, 1, 17, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,245, 5, 4, 0,246, 5, 7, 0,247, 5, 2, 0,248, 5,
-213, 0, 45, 6,160, 0, 90, 3,217, 0, 0, 9, 0, 0, 69, 1, 0, 0, 48, 6, 2, 0, 19, 0, 2, 0, 1, 9, 2, 0, 98, 6,
- 2, 0, 97, 6, 2, 0, 2, 9, 7, 0, 3, 9, 80, 1, 8, 0, 80, 1, 0, 0, 80, 1, 1, 0, 78, 1, 4, 9, 36, 0, 80, 0,
- 12, 0, 94, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 5, 9, 81, 1, 5, 0, 81, 1, 0, 0, 81, 1, 1, 0, 36, 0, 80, 0,
- 2, 0, 19, 0, 0, 0, 6, 9, 82, 1, 14, 0, 82, 1, 0, 0, 82, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0,
- 0, 0, 7, 9, 0, 0, 8, 9, 0, 0, 6, 9, 7, 0, 9, 9, 7, 0, 10, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 11, 9,
- 7, 0, 12, 9, 83, 1, 9, 0, 83, 1, 0, 0, 83, 1, 1, 0, 32, 0, 13, 9, 0, 0,250, 2, 7, 0, 14, 9, 2, 0, 15, 9,
- 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 16, 9, 84, 1, 7, 0, 42, 0,104, 6, 26, 0,176, 8, 4, 0, 19, 0, 4, 0, 17, 9,
- 12, 0, 18, 9, 32, 0, 13, 9, 0, 0,250, 2, 85, 1, 15, 0, 32, 0, 13, 9, 2, 0, 19, 9, 2, 0, 19, 0, 2, 0, 20, 9,
- 2, 0, 21, 9, 0, 0,250, 2, 32, 0, 22, 9, 0, 0, 23, 9, 7, 0, 24, 9, 7, 0, 36, 2, 7, 0, 25, 9, 7, 0, 26, 9,
- 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 86, 1, 6, 0, 32, 0, 13, 9, 7, 0,206, 8, 2, 0, 27, 9, 2, 0, 28, 9,
- 2, 0, 19, 0, 2, 0, 29, 9, 87, 1, 6, 0, 32, 0, 13, 9, 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 90, 0, 4, 0, 37, 0,
- 0, 0,250, 2, 88, 1, 4, 0, 32, 0, 13, 9, 4, 0, 19, 0, 4, 0, 30, 9, 0, 0,250, 2, 89, 1, 4, 0, 32, 0, 13, 9,
- 4, 0, 19, 0, 4, 0, 30, 9, 0, 0,250, 2, 90, 1, 10, 0, 32, 0, 13, 9, 4, 0, 32, 9, 7, 0,125, 0, 4, 0, 19, 0,
- 2, 0,100, 6, 2, 0, 33, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 34, 9, 0, 0,250, 2, 91, 1, 4, 0, 32, 0, 13, 9,
- 4, 0, 19, 0, 4, 0, 30, 9, 0, 0,250, 2, 92, 1, 10, 0, 32, 0, 13, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0,
- 4, 0, 89, 0, 7, 0,127, 8, 7, 0,128, 8, 4, 0, 37, 0,160, 0,101, 8, 0, 0,250, 2, 93, 1, 4, 0, 32, 0, 13, 9,
- 4, 0,115, 3, 4, 0, 35, 9, 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 13, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2,
- 95, 1, 5, 0, 32, 0, 13, 9, 7, 0,125, 0, 4, 0, 36, 9, 4, 0,115, 3, 4, 0,116, 3, 96, 1, 6, 0, 32, 0, 13, 9,
- 4, 0, 37, 9, 4, 0, 38, 9, 7, 0, 39, 9, 7, 0, 40, 9, 0, 0,250, 2, 97, 1, 16, 0, 32, 0, 13, 9, 32, 0,214, 8,
- 4, 0, 17, 0, 7, 0, 41, 9, 7, 0, 42, 9, 7, 0, 43, 9, 7, 0, 44, 9, 7, 0, 45, 9, 7, 0, 46, 9, 7, 0, 47, 9,
- 7, 0, 48, 9, 7, 0, 49, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 98, 1, 3, 0, 32, 0, 13, 9,
- 4, 0, 19, 0, 4, 0, 28, 2, 99, 1, 5, 0, 32, 0, 13, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 50, 9, 0, 0,250, 2,
-100, 1, 10, 0, 32, 0, 13, 9, 0, 0,250, 2, 2, 0, 51, 9, 2, 0, 52, 9, 0, 0, 53, 9, 0, 0, 54, 9, 7, 0, 55, 9,
- 7, 0, 56, 9, 7, 0, 57, 9, 7, 0, 58, 9,101, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0,
- 7, 0, 59, 9, 7, 0, 60, 9, 2, 0, 19, 0, 2, 0, 28, 2,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0,
- 7, 0, 12, 0, 7, 0, 59, 9, 7, 0, 60, 9, 2, 0, 19, 0, 2, 0, 28, 2,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0,
- 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 59, 9, 7, 0, 60, 9, 2, 0, 19, 0, 2, 0, 28, 2,104, 1, 7, 0, 32, 0, 13, 9,
- 0, 0,250, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,105, 1, 5, 0, 32, 0, 50, 3,
- 7, 0, 76, 1, 2, 0, 54, 3, 0, 0, 56, 3, 0, 0, 61, 9,106, 1, 10, 0,106, 1, 0, 0,106, 1, 1, 0, 2, 0, 17, 0,
- 2, 0, 19, 0, 0, 0, 62, 9, 7, 0, 20, 1, 7, 0, 21, 1, 2, 0,249, 8, 2, 0, 63, 9, 32, 0, 45, 0,107, 1, 22, 0,
-107, 1, 0, 0,107, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 64, 9, 2, 0, 65, 9, 36, 0, 80, 0,160, 0,101, 8,
- 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0,236, 2,
- 7, 0, 70, 9, 7, 0,103, 8, 7, 0, 71, 9, 0, 0, 72, 9, 0, 0, 73, 9, 12, 0, 96, 3,108, 1, 8, 0, 7, 0, 43, 2,
- 7, 0,127, 8, 7, 0,128, 8, 9, 0, 2, 0, 2, 0, 74, 9, 2, 0, 75, 9, 2, 0, 76, 9, 2, 0, 77, 9,109, 1, 18, 0,
-109, 1, 0, 0,109, 1, 1, 0,109, 1, 78, 9, 0, 0, 20, 0,108, 1, 79, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 80, 9,
- 2, 0, 81, 9, 2, 0, 82, 9, 2, 0, 83, 9, 4, 0, 43, 0, 7, 0, 84, 9, 7, 0, 85, 9, 4, 0, 86, 9, 4, 0, 87, 9,
-109, 1, 88, 9,110, 1, 89, 9,111, 1, 34, 0,111, 1, 0, 0,111, 1, 1, 0,111, 1, 90, 9, 0, 0, 20, 0, 0, 0, 91, 9,
- 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,210, 7, 2, 0,243, 7, 2, 0, 92, 9, 2, 0,133, 0, 2, 0, 81, 9, 2, 0,200, 7,
- 12, 0, 96, 8, 12, 0, 93, 9, 27, 0,134, 6, 9, 0, 94, 9, 7, 0, 84, 9, 7, 0, 85, 9, 7, 0, 74, 2, 7, 0, 95, 9,
- 2, 0, 96, 9, 2, 0, 97, 9, 7, 0, 98, 9, 7, 0, 99, 9, 2, 0,100, 9, 2, 0,101, 9, 9, 0,102, 9, 24, 0,103, 9,
- 24, 0,104, 9, 24, 0,105, 9,112, 1,150, 0,113, 1,106, 9,114, 1,107, 9,110, 1, 8, 0,110, 1, 0, 0,110, 1, 1, 0,
-111, 1,108, 9,111, 1,109, 9,109, 1,110, 9,109, 1, 88, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 20, 0, 27, 0, 31, 0,
- 39, 0, 75, 0, 12, 0,111, 9, 12, 0,112, 9,108, 1,113, 9, 12, 0,114, 9, 4, 0, 17, 0, 4, 0,115, 9, 4, 0,116, 9,
- 4, 0,117, 9, 12, 0,118, 9,114, 1,119, 9,109, 1,120, 9,109, 1,121, 9, 9, 0,122, 9, 9, 0,123, 9, 4, 0,124, 9,
- 9, 0,125, 9, 9, 0,126, 9, 9, 0,127, 9,115, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,200, 7, 0, 0,128, 9,
- 0, 0,129, 9, 2, 0, 37, 0,116, 1, 16, 0, 2, 0,154, 7, 2, 0,155, 7, 2, 0,130, 9, 2, 0,151, 8, 2, 0,131, 9,
- 2, 0, 68, 0, 7, 0,235, 2, 7, 0,132, 9, 7, 0,133, 9, 2, 0, 91, 1, 0, 0,134, 9, 0, 0,104, 5, 2, 0,135, 9,
- 2, 0, 37, 0, 4, 0,136, 9, 4, 0,137, 9,117, 1, 9, 0, 7, 0,138, 9, 7, 0,139, 9, 7, 0,170, 8, 7, 0,109, 0,
- 7, 0,140, 9, 7, 0, 61, 6, 2, 0,141, 9, 0, 0,142, 9, 0, 0, 37, 0,118, 1, 4, 0, 7, 0,143, 9, 7, 0,144, 9,
- 2, 0,141, 9, 2, 0, 37, 0,119, 1, 3, 0, 7, 0,145, 9, 7, 0,146, 9, 7, 0, 15, 0,120, 1, 7, 0, 0, 0, 5, 2,
- 2, 0,232, 4, 2, 0,233, 4, 2, 0,234, 4, 2, 0,180, 4, 4, 0,126, 0, 4, 0, 34, 4,121, 1, 7, 0, 7, 0,147, 9,
- 7, 0,148, 9, 7, 0,149, 9, 7, 0, 85, 2, 7, 0,150, 9, 7, 0,151, 9, 7, 0,152, 9,122, 1, 4, 0, 2, 0,153, 9,
- 2, 0,154, 9, 2, 0,155, 9, 2, 0,156, 9,123, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,124, 1, 2, 0, 0, 0,166, 0,
- 0, 0,157, 9,125, 1, 1, 0, 0, 0, 20, 0,126, 1, 10, 0, 0, 0,158, 9, 0, 0,159, 9, 0, 0, 54, 6, 0, 0,160, 9,
- 2, 0,130, 9, 2, 0,161, 9, 7, 0,162, 9, 7, 0,163, 9, 7, 0,164, 9, 7, 0, 70, 9,127, 1, 2, 0, 9, 0,165, 9,
- 9, 0,166, 9,128, 1, 11, 0, 0, 0,234, 4, 0, 0, 17, 0, 0, 0,141, 9, 0, 0,109, 0, 0, 0,167, 9, 0, 0,106, 0,
- 0, 0, 70, 2, 7, 0,168, 9, 7, 0,169, 9, 7, 0,170, 9, 7, 0,171, 9,129, 1, 8, 0, 7, 0, 61, 8, 7, 0,125, 0,
- 7, 0,104, 5, 7, 0,157, 2, 7, 0,172, 9, 7, 0,236, 0, 7, 0,173, 9, 4, 0, 17, 0,130, 1, 4, 0, 2, 0,174, 9,
- 2, 0,175, 9, 2, 0,176, 9, 2, 0, 37, 0,131, 1, 1, 0, 0, 0, 20, 0,132, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0,
- 2, 0, 19, 0, 2, 0,177, 9,133, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,116, 4, 7, 0,178, 9, 7, 0,179, 9,
- 7, 0,180, 9, 7, 0,181, 9,132, 1,182, 9,132, 1,183, 9,132, 1,184, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0,
- 24, 0,185, 9, 24, 0,186, 9,133, 1,187, 9, 7, 0,188, 9, 7, 0,189, 9, 7, 0,190, 9, 7, 0,191, 9,134, 1, 4, 0,
- 47, 0,229, 2, 7, 0,192, 9, 7, 0,170, 1, 7, 0, 37, 0,190, 0, 17, 0, 27, 0, 31, 0,134, 1,193, 9, 63, 0,182, 9,
- 51, 0,134, 1, 2, 0, 19, 0, 2, 0,214, 5, 4, 0,106, 0, 7, 0,194, 9, 7, 0, 82, 2, 4, 0,195, 9, 7, 0,196, 9,
- 7, 0,197, 9, 7, 0,198, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,199, 9, 0, 0,192, 6,135, 1, 10, 0, 4, 0, 17, 0,
- 4, 0,125, 0, 4, 0, 19, 0, 4, 0,177, 3, 4, 0,200, 9, 4, 0,201, 9, 4, 0,202, 9, 0, 0, 92, 0, 0, 0, 20, 0,
- 9, 0, 2, 0, 91, 0, 6, 0,135, 1,203, 9, 4, 0,204, 9, 4, 0,205, 9, 4, 0,206, 9, 4, 0, 37, 0, 9, 0,207, 9,
+ 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,116,111,111,108, 98, 97,
+114, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,
+103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,
+108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98,
+ 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108,
+ 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,
+101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,
+116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,
+101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,
+104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0,
+ 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93,
+ 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116,
+ 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,
+101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,
+116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,
+105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91,
+ 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,
+111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,
+120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,
+103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,
+104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,
+102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,
+108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,
+115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91,
+ 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52,
+ 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91,
+ 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98,
+ 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91,
+ 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,
+102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,
+109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,
+101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116,
+ 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 51, 93, 0,115,
+111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,
+111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97,
+ 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,
+116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101,
+ 95,116,104,101,109,101, 95,103,114,111,117,112, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,
+101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,
+114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,
+103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,
+104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,121,102,101,120,112,111,
+114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,
+101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,
+101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,
+100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,
+105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,
+115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,
+116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0,
+107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,
+101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,
+101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98,
+ 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51,
+ 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,
+122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,
+114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0,109,101,109, 99, 97, 99,104,101,
+108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,
+112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,
+114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,
+109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110,
+ 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0,105,112,111, 95,110,101,119, 0,118,101,
+114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108,
+ 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118,101,114,116, 98, 97,115,101, 0,101,
+100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,
+119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119,
+ 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,115,119, 97,
+112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,
+114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0,
+ 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110,
+ 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,
+105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103,
+ 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97,
+ 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,
+105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101,
+ 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,
+117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97,
+ 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,
+119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116,
+ 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,
+105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,
+100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,
+115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,
+108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101,
+ 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115,
+ 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,115,
+ 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,
+108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42,
+ 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,
+116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,
+108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,
+114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101,
+ 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,
+100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,
+101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,
+109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0,102, 97, 99,102, 48, 0,102, 97, 99,102, 49, 0, 42,115,101,
+113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115,
+111,117,110,100, 95,104, 97,110,100,108,101, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,115,116,
+114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,
+110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,
+105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,
+109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91,
+ 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,101,100,103,101, 87,105,100,116,104,
+ 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102,
+ 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,
+108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,
+121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,
+114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,
+108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,
+101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,
+102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,
+101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,
+117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,
+101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,
+109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,
+112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91,
+ 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,
+112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,
+117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78,
+ 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,
+101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100,
+ 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50,
+ 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,
+114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50,
+ 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,
+105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,
+105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,
+105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0, 42,109,121,110,101,119,
+ 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,
+115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,
+101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,
+120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 49, 91, 50, 93, 0,112,
+105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112,
+ 97,100, 50, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,
+111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110,
+ 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,
+101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,
+101,102,101,114,101,110, 99,101, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118,
+105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91,
+ 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51,
+ 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,
+103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,
+111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,
+108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,
+114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,
+108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,
+120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0, 42,115,
+111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 0,109,105,110,
+ 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,
+101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,
+110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0,
+ 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,
+116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42, 97,114,101, 97,
+ 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,
+112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108,
+ 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,
+114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,
+122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,
+116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97,
+ 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,
+114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,
+111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102,
+ 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,
+105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0, 99,111,110,115,116,
+102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,
+120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,
+116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115,
+ 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91,
+ 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,
+108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,
+115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,
+119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 99,104, 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,
+121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,
+101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,
+118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,109,
+115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100,
+ 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,
+110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0,
+ 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,
+110,114, 0, 97, 99,116,119,105,100,116,104, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,
+110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114,
+ 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0,
+ 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114,
+ 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,
+111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117,
+ 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,
+104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,
+108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,
+101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111,
+ 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,
+111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,
+120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91,
+ 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,
+109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120,
+ 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,
+120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115,
+ 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,
+101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,
+100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101,
+ 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101,
+ 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,
+116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,
+116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,
+116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,
+112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0,
+ 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101,
+ 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,
+114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,
+110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,
+107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,
+114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0, 42,115,101,108,105,110,
+ 0, 42,115,101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40, 41, 0, 40, 42,115,116, 97,116,115,
+ 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,116,
+ 99,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,
+115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0, 99,117,
+114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,
+103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,105,116,101,114, 0,
+119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101,
+ 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,
+101,121, 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,
+116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,
+112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,
+103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,
+101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,
+108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93,
+ 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0, 99,117,114,114,
+ 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,
+119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,
+101, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,
+111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115,
+ 99,117,108,112,116, 95,116,111,111,108, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,
+110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,
+109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0,118,101,108, 91, 51, 93, 0,114,111,
+116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,
+109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,
+101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,
+100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 97,108,105,118,101, 0,108,111,111,112, 0,104,
+ 97,105,114, 95,105,110,100,101,120, 0, 42, 98,111,105,100,115, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0,
+ 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,
+100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,114,101,110, 95,115,
+116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,
+103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114,
+ 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98,
+ 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,
+108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,
+109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,
+112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,
+114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,
+100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101,
+ 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99,
+ 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,
+101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,
+110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,
+114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,
+101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108,
+ 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,
+111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,
+111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104,
+ 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119,
+ 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,
+105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,
+115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50,
+ 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42,
+ 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97,
+ 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,
+111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,
+102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,
+100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,
+115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50,
+ 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,
+111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0, 91,
+ 51, 93, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109,
+ 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,
+101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102,
+ 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,
+121, 95,115,109,111,111,116,104, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109,
+ 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,
+101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,112,114,
+101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,
+108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,
+108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,
+101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,
+116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,
+105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,
+115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,
+114,101,108,101,118,101,108, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,
+119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,
+112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,
+116, 99,117,114,115,111,114,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102,
+ 0,100,101,102, 97,117,108,116, 97, 99,116,109, 97,112, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,
+105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,
+110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,
+111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,
+101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,
+101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,
+110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101,
+ 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,
+107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,
+109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,
+111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,
+112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,
+109, 0,109,118, 97,108, 91, 50, 93, 0,112,114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115,
+ 99,105,105, 0, 42,107,101,121,109, 97,112, 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,
+100, 97,116, 97,102,114,101,101, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,
+105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,
+108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,
+102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,
+109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,
+116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,
+111,110, 0, 42,114,110, 97, 95,112, 97,116,104, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 0,
+101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 99,111,108,111,
+114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56,
+ 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115,
+ 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101,
+ 0,103,114,111,117,112, 91, 54, 52, 93, 0,116,101,109,112,108, 97,116,101,115, 0,103,114,111,117,112,109,111,100,101, 0,112,
+ 97,116,104,115, 0,107,101,121,105,110,103,102,108, 97,103, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112,
+ 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115,
+ 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,
+101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,
+110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,
+101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,
+101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,
+115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,
+101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108,
+ 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,
+115,105,111,110, 0, 97, 99, 99,117,114, 97, 99,121, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,
+109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,
+101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,
+112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99,
+ 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,
+101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,
+102,108,117,105,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,
+119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112,
+ 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97,
+ 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,
+110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,
+100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 42,112,111,105,110,116, 95,
+ 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93,
+ 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,
+118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,
+116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 84, 89, 80, 69,
+196, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,
+108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,
+107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,105, 0,
+118,101, 99, 50,102, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101,
+ 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,
+101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,
+105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79,
+ 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0,
+ 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,
+110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,
+109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,
+120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120,
+ 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77,
+ 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0,
+ 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77,
+ 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,
+105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,
+101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,
+102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,
+116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,
+101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,
+107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,
+117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,
+109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,
+108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,
+116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,
+112,115, 0, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,
+100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69,
+ 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78,
+ 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32,
+ 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60,
+ 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,
+102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80,
+ 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101,
+ 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49,
+ 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77,
+ 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,
+100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49,
+ 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95,
+ 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,
+105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86,
+ 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32,
+ 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32,
+ 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95,
+ 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101,
+ 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,
+100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68,
+ 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32,
+ 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82,
+ 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,
+102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95,
+ 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32,
+ 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,
+110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95,
+ 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50,
+ 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,
+101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84,
+ 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,
+110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32,
+ 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68,
+ 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84,
+ 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,
+100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32,
+ 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,
+101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52,
+ 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, 99,104, 97,114, 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59,
+ 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32,
+ 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,
+118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,
+111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115,
+ 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,
+115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,
+102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,
+115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,
+112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32,
+ 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120,
+ 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97,
+ 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115,
+ 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101,
+ 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,
+105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32,
+ 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105,
+110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73,
+ 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9,
+ 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84,
+ 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41,
+ 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105,
+110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101,
+115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32,
+ 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69,
+ 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69,
+ 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80,
+ 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97,
+108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102,
+108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10,
+ 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95,
+ 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,
+100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80,
+ 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10,
+ 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101,
+ 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10,
+ 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86,
+ 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102,
+105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41,
+ 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110,
+101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32,
+ 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32,
+ 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95,
+ 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101,
+ 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35,
+100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32,
+104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98,
+101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100,
+101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33,
+ 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84,
+ 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100,
+101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68,
+ 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69,
+ 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65,
+ 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71,
+ 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10,
+ 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99,
+ 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54,
+ 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101,
+ 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79,
+ 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50,
+ 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32,
+ 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,
+110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,
+116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,
+108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32,
+ 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84,
+ 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,
+105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9,
+ 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32,
+ 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,
+116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,
+101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10,
+ 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70,
+ 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67,
+ 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52,
+ 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78,
+ 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54,
+ 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,
+105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, 32,105,110, 32,110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105,
+110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, 32,101,100,105,116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101,
+100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111,105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10,
+ 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,
+105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101,109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97,
+ 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32,115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,
+114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32,117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116,
+ 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97,116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69,
+ 69,216, 24, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0,
+ 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,
+101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,
+102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,
+118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97,
+ 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68,
+ 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116,
+ 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,
+ 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,
+116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119,
+ 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108,
+ 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,
+114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,
+104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87,
+ 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114,
+ 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,
+100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,
+116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,
+116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,
+116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,
+111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101,
+ 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97,
+ 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,
+105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,
+105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,
+105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,
+114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,
+112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,
+105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98,
+ 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 66,117,108,108,101,116, 83,111,102,116, 66,
+111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0,
+ 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0,
+ 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0,
+ 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,
+111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101,
+ 67,111,100,101, 99, 68, 97,116, 97, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68,
+ 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0,
+ 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,
+110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,
+115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,
+117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,
+110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0,
+ 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115,
+ 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116,
+ 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68,
+ 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,
+101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,
+101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0,
+ 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,
+101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0,
+ 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,
+108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,
+101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,
+112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,
+101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101,
+ 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0,
+ 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101,
+ 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116,
+ 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,
+104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 83,111,108,105,100, 76,105,103,104,116, 0,
+ 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,
+110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,
+112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,
+108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112,
+ 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,
+101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,
+117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 83,111,117,110,100, 72, 97,110,100,108,101, 0, 77,101,116, 97, 83,116, 97,
+ 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,
+114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,
+114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105,
+ 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,
+114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121,
+ 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,
+117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,
+105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,
+110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0,
+ 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,
+101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,
+110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,
+101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,
+110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,
+116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65,
+ 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117,
+ 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116,
+ 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65,
+ 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,
+116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68,
+ 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98,
+ 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0,
+ 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,
+116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116,
+ 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 80,
+111,115,101, 67,104, 97,110,110,101,108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,
+111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,
+101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,
+116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,
+114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,
+110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,
+116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,
+105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0,
+ 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,
+114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112,
+ 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,
+114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,
+100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,
+115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,
+115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,
+105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,
+105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,
+116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,
+111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0,
+ 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,
+101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,
+109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68,
+ 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,
+101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,
+100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,
+116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,
+100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109,
+ 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,
+114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0,
+ 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101,
+ 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80,
+ 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,
+117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101,
+ 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97,
+ 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,
+105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71,
+ 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,
+105,115,116, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,
+101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,
+101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,
+109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114,
+ 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,
+101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,
+101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,
+111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 68,114,105,118,101,114, 84, 97,114,103,101,
+116, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,
+105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108,
+ 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,
+114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,
+100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,
+105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,
+117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,
+105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 0,
+ 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0,
+ 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0,
+ 40, 0,144, 0,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0,
+ 0, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0,
+248, 1, 56, 1, 80, 0, 88, 0, 32, 3,104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0,
+ 0, 0, 0, 0,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0,
+ 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0,
+ 96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0,
+ 80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0,128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0,
+ 0, 0, 88, 0, 8, 0, 8, 0, 16, 1,104, 0,240, 1, 96, 0, 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0,
+ 48, 0, 0, 0,144, 0, 88, 0,104, 0,120, 0,152, 0, 32, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0,216, 1, 40, 0,184, 0,152, 0, 64, 0, 24, 0, 88, 0, 24, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0,
+ 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 72, 0,120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,248, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0,
+ 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,
+136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2, 16, 1, 16, 0,248, 21, 56, 0,160, 11, 32, 0, 40, 0, 88, 1,
+ 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1, 8, 1,
+ 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0,
+ 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0,
+ 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0,
+ 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,224, 0, 40, 0, 32, 1,192, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,
+120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0,
+ 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0,144, 0,
+ 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0,
+ 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0,
+ 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,
+168, 0, 72, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0,
+ 20, 0,112, 0, 32, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,104, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,
+104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 83, 84, 82, 67,138, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0,
+ 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0,
+ 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,
+ 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0,
+ 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0,
+ 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0,
+ 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0,
+ 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0,
+ 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0,
+ 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0,
+ 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0,
+ 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0,
+ 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0,
+ 2, 0, 43, 0, 4, 0, 44, 0, 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0,
+ 0, 0, 48, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0,
+ 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0,
+ 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0,
+ 27, 0, 31, 0, 12, 0, 63, 0, 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0,
+ 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0,
+ 4, 0, 69, 0, 4, 0, 70, 0, 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0,
+ 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 75, 0, 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0,
+ 36, 0, 80, 0, 27, 0, 81, 0, 2, 0, 17, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0,
+ 40, 0, 1, 0, 0, 0, 84, 0, 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0,
+ 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0,
+ 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0,
+ 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0,
+ 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0,
+ 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0,
+ 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,118, 0, 2, 0,119, 0, 2, 0,120, 0, 7, 0,121, 0, 36, 0, 80, 0,
+ 32, 0,122, 0, 45, 0, 13, 0, 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0,
+ 2, 0, 19, 0, 2, 0,129, 0, 2, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 2, 0,133, 0, 46, 0,134, 0, 47, 0, 32, 0,
+ 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,135, 0, 48, 0,136, 0, 49, 0,137, 0, 50, 0,138, 0, 2, 0,129, 0, 2, 0, 19, 0,
+ 2, 0,139, 0, 2, 0, 17, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0,
+ 2, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 4, 0,147, 0, 4, 0,148, 0, 43, 0,149, 0, 30, 0,150, 0, 0, 0,151, 0,
+ 7, 0,152, 0, 4, 0,153, 0, 2, 0,154, 0, 2, 0,155, 0, 2, 0,156, 0, 2, 0,157, 0, 7, 0,158, 0, 7, 0,159, 0,
+ 51, 0, 63, 0, 2, 0,160, 0, 2, 0,161, 0, 2, 0,162, 0, 2, 0,163, 0, 32, 0,164, 0, 52, 0,165, 0, 0, 0,166, 0,
+ 0, 0,167, 0, 0, 0,168, 0, 0, 0,169, 0, 0, 0,170, 0, 7, 0,171, 0, 7, 0,172, 0, 7, 0,173, 0, 2, 0,174, 0,
+ 2, 0,175, 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 7, 0,182, 0,
+ 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0, 57, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0,
+ 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0,
+ 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0,
+ 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0,
+ 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0,
+ 53, 0, 15, 0, 0, 0,222, 0, 9, 0,223, 0, 0, 0,224, 0, 0, 0,225, 0, 4, 0,226, 0, 4, 0,227, 0, 9, 0,228, 0,
+ 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 4, 0,232, 0, 9, 0,233, 0, 9, 0,234, 0, 4, 0,235, 0, 4, 0, 37, 0,
+ 54, 0, 6, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,236, 0, 7, 0, 67, 0, 4, 0, 64, 0, 55, 0, 5, 0,
+ 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,237, 0, 54, 0,231, 0, 56, 0, 17, 0, 32, 0,164, 0, 47, 0,238, 0,
+ 57, 0,239, 0, 7, 0,240, 0, 7, 0,241, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,243, 0,
+ 4, 0,244, 0, 2, 0,245, 0, 2, 0,246, 0, 4, 0,129, 0, 4, 0,140, 0, 2, 0,247, 0, 2, 0,248, 0, 58, 0, 22, 0,
+ 2, 0, 19, 0, 2, 0,249, 0, 7, 0,250, 0, 7, 0,251, 0, 2, 0,139, 0, 2, 0,252, 0, 4, 0,253, 0, 4, 0,254, 0,
+ 32, 0,164, 0, 4, 0,255, 0, 2, 0, 0, 1, 2, 0, 1, 1, 9, 0, 2, 1, 7, 0, 3, 1, 7, 0, 4, 1, 2, 0, 5, 1,
+ 2, 0, 6, 1, 2, 0, 7, 1, 2, 0, 8, 1, 7, 0, 9, 1, 7, 0, 10, 1, 55, 0, 11, 1, 59, 0, 11, 0, 4, 0, 12, 1,
+ 4, 0, 13, 1, 2, 0, 14, 1, 2, 0, 19, 0, 2, 0, 15, 1, 2, 0, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, 4, 0, 17, 1,
+ 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1,
+ 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1,
+ 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1,
+ 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1,
+ 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1,
+ 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0,
+ 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,238, 0,
+ 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,181, 0,
+ 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1,
+ 32, 0, 45, 0, 62, 0, 84, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,175, 0,
+ 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1,
+ 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1,
+ 63, 0, 82, 1, 2, 0,249, 0, 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1,
+ 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1,
+ 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1,
+ 7, 0,102, 1, 2, 0,103, 1, 2, 0, 43, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1,
+ 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1,
+ 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, 2, 0,124, 1,
+ 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 2, 0,132, 1,
+ 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0,
+ 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, 7, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1,
+ 7, 0,143, 1, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1,
+ 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,155, 1,
+ 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1,
+ 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1,
+ 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1,
+ 65, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 7, 0,179, 1, 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1,
+ 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 2, 0,191, 1,
+ 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, 4, 0, 69, 1,
+ 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 7, 0,206, 1,
+ 7, 0,207, 1, 7, 0,208, 1, 7, 0,209, 1, 7, 0,210, 1, 7, 0,211, 1, 7, 0,212, 1, 7, 0,213, 1, 0, 0,214, 1,
+ 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, 0, 0, 63, 1,
+ 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, 7, 0,227, 1,
+ 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, 0, 0,233, 1,
+ 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 51, 0,134, 1,
+ 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1,
+ 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, 7, 0,248, 1, 7, 0,249, 1, 7, 0,250, 1, 7, 0,251, 1, 7, 0,252, 1,
+ 7, 0,253, 1, 7, 0,254, 1, 7, 0,255, 1, 7, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, 4, 0,121, 1,
+ 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0,
+ 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2,
+ 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 15, 2,
+ 7, 0, 16, 2, 7, 0, 17, 2, 7, 0, 18, 2, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 23, 0, 7, 0, 22, 2,
+ 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, 12, 0, 26, 2,
+ 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 64, 1,
+ 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, 7, 0, 34, 2,
+ 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2,
+ 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, 2, 0, 42, 2,
+ 7, 0,251, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 44, 2, 2, 0, 42, 2,
+ 2, 0, 19, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2,
+ 2, 0, 52, 2, 7, 0, 53, 2, 7, 0, 54, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, 4, 0, 57, 2,
+ 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, 7, 0, 5, 0,
+ 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 59, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 60, 2,
+ 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, 38, 0, 66, 2,
+ 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 68, 2,
+ 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, 2, 0, 73, 2,
+ 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, 4, 0, 79, 2,
+ 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 81, 2, 7, 0, 82, 2, 7, 0, 83, 2, 7, 0, 84, 2,
+ 7, 0, 85, 2, 7, 0, 86, 2, 7, 0, 87, 2, 7, 0, 88, 2, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 91, 2, 0, 0, 92, 2,
+ 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 4, 0,100, 2,
+ 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, 74, 0,108, 2,
+ 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, 81, 0,110, 2,
+ 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, 80, 0,118, 2,
+ 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, 4, 0,125, 2,
+ 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0,129, 2,
+ 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, 92, 0,134, 2,
+ 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1,
+ 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 2, 0, 44, 2,
+ 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, 2, 0, 19, 0,
+ 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, 84, 0, 6, 0,
+ 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 2, 87, 0, 4, 0, 0, 0,236, 0,
+ 0, 0,182, 0, 0, 0,183, 0, 0, 0,184, 0, 95, 0, 6, 0, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1,
+ 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, 7, 0,154, 2, 97, 0, 5, 0, 0, 0,236, 0, 0, 0,182, 0, 0, 0,183, 0,
+ 0, 0,184, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, 82, 0, 7, 0,
+ 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 98, 0, 1, 0,
+ 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2,100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,102, 0, 3, 0,
+ 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2,104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0,
+105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, 0, 0, 70, 2,
+107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,105, 0,166, 2,
+107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, 12, 0,169, 2,
+ 84, 0,168, 2, 0, 0,170, 2, 0, 0,171, 2, 0, 0,172, 2, 0, 0,173, 2, 0, 0,174, 2, 0, 0,175, 2, 0, 0,176, 2,
+ 0, 0, 19, 0, 91, 0,121, 2, 91, 0,123, 2, 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, 4, 0,180, 2,
+ 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,109, 0, 0, 0,
+109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,109, 0,184, 2,
+ 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,109, 0,184, 2,
+ 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, 0, 0,190, 2,
+113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,109, 0,184, 2,
+ 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, 32, 0,196, 2,
+ 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, 4, 0,203, 2,
+ 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0,109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, 32, 0,207, 2,
+117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, 4, 0,210, 2,
+ 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,119, 0, 3, 0,
+109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0,120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,123, 0,218, 2,
+ 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0,109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, 0, 0,215, 2,
+ 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,109, 0,184, 2,
+ 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, 4, 0,227, 2,
+ 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, 7, 0,235, 2,
+ 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2,128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, 7, 0,251, 0,
+ 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, 0, 0,215, 2,
+ 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2,
+ 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, 7, 0,245, 2,
+ 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0,109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, 32, 0,164, 0,
+ 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, 7, 0,252, 2,
+ 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,133, 0, 7, 0,
+109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3,135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,138, 0, 13, 0,
+109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 81, 0, 11, 3,
+ 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, 84, 0, 5, 3,
+ 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, 32, 0,164, 0,
+ 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, 4, 0, 20, 3,
+146, 0, 20, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 70, 2, 7, 0, 22, 3,
+ 7, 0, 23, 3, 4, 0, 54, 0, 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, 4, 0, 28, 3, 4, 0, 29, 3,
+ 4, 0, 20, 3, 7, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,109, 0,184, 2,148, 0, 34, 3,
+141, 0, 16, 3, 4, 0, 35, 3, 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,149, 0, 8, 0,109, 0,184, 2,
+ 32, 0, 45, 0, 2, 0,255, 0, 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, 7, 0, 39, 3,150, 0, 5, 0,
+109, 0,184, 2, 4, 0, 40, 3, 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,109, 0,184, 2, 84, 0, 43, 3,
+ 4, 0, 44, 3, 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,109, 0,184, 2,153, 0, 49, 3,
+137, 0, 3, 3,154, 0, 10, 0,109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, 7, 0, 53, 3, 2, 0, 54, 3,
+ 2, 0, 55, 3, 0, 0, 56, 3, 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 58, 3, 0, 0, 52, 3,
+ 7, 0, 59, 3, 7, 0, 60, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2,
+157, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, 2, 0, 63, 3, 2, 0, 64, 3,
+ 2, 0, 65, 3, 2, 0, 70, 0, 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 69, 3,
+ 7, 0, 70, 3, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, 36, 0, 80, 0, 38, 0, 66, 2,
+ 86, 0,115, 2, 7, 0, 76, 3, 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0,
+ 71, 0, 3, 0, 7, 0, 79, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 80, 3,
+ 2, 0, 17, 0, 2, 0, 81, 3, 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, 32, 0, 38, 0, 32, 0, 86, 3,
+ 32, 0, 87, 3, 32, 0, 88, 3, 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,160, 0, 90, 3,160, 0, 91, 3,
+161, 0, 92, 3, 9, 0, 2, 0,162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 95, 3, 12, 0, 96, 3,
+ 4, 0, 69, 1, 4, 0, 97, 3, 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, 7, 0, 64, 1, 7, 0,100, 3,
+ 7, 0,101, 3, 7, 0,172, 0, 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, 7, 0,104, 3, 7, 0,105, 3,
+ 7, 0,106, 3, 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, 7, 0,240, 0, 4, 0,111, 3,
+ 2, 0, 19, 0, 2, 0,112, 3, 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 2, 0,116, 3, 2, 0,117, 3, 2, 0,118, 3,
+ 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 4, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3,
+ 7, 0,127, 3, 7, 0,101, 2, 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,215, 0,
+ 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3,
+ 0, 0,141, 3, 7, 0,142, 3, 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 7, 0,148, 3,
+ 2, 0,156, 2, 2, 0,149, 3, 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, 2, 0,153, 3, 2, 0,247, 0,
+ 7, 0,154, 3, 12, 0,155, 3, 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,165, 0,159, 3, 67, 0,160, 3,
+ 2, 0,161, 3, 2, 0,162, 3, 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, 2, 0,166, 3,153, 0,167, 3,
+141, 0,168, 3,141, 0,169, 3, 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, 12, 0,173, 3, 12, 0,174, 3,
+ 12, 0,175, 3,166, 0, 14, 0,166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, 7, 0, 66, 1, 7, 0,252, 2,
+ 7, 0,244, 2, 0, 0, 20, 0, 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, 2, 0,177, 3, 7, 0,255, 2,
+167, 0, 12, 0,167, 0, 0, 0,167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, 4, 0,179, 3, 4, 0, 17, 0,
+ 4, 0,180, 3, 7, 0, 66, 1, 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, 4, 0, 19, 0, 2, 0,183, 3,
+ 2, 0,184, 3, 2, 0,244, 2, 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 7, 0,190, 3,
+ 7, 0,191, 3, 7, 0,192, 3, 7, 0,193, 3, 7, 0,194, 3, 7, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3,
+ 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0, 37, 0,
+ 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3,
+ 7, 0,214, 3, 7, 0,215, 3, 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,169, 0, 5, 0, 67, 0,241, 1,
+ 7, 0,218, 3, 7, 0,219, 3, 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,170, 0, 1, 0, 4, 0,221, 3,
+ 4, 0,222, 3, 4, 0,223, 3, 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,137, 0, 19, 0,137, 0, 0, 0,
+137, 0, 1, 0, 4, 0, 19, 0, 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3,
+ 4, 0,222, 3, 4, 0,156, 2, 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 12, 0,237, 3,
+171, 0,238, 3, 9, 0,239, 3,172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, 7, 0,240, 3, 7, 0,241, 3,
+ 7, 0,242, 3, 4, 0,243, 3, 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3,
+ 7, 0,250, 3, 7, 0,251, 3, 7, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4,
+ 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 4, 0, 9, 4,
+ 4, 0, 10, 4, 7, 0, 11, 4, 7, 0,133, 3,165, 0, 50, 0, 4, 0,222, 3, 4, 0, 12, 4,173, 0, 13, 4,174, 0, 14, 4,
+ 0, 0, 37, 0, 0, 0, 15, 4, 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4,
+ 7, 0, 22, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 2, 0, 28, 4, 0, 0, 29, 4,
+ 2, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, 4, 0, 35, 4, 2, 0, 36, 4,
+ 2, 0, 37, 4,172, 0, 38, 4, 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4,
+ 2, 0, 44, 4, 2, 0, 45, 4, 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4,
+175, 0, 52, 4, 7, 0, 53, 4, 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4,153, 0, 49, 0,152, 0, 57, 4,
+ 2, 0, 17, 0, 2, 0, 58, 4, 2, 0, 59, 4, 2, 0, 60, 4, 7, 0, 61, 4, 2, 0, 62, 4, 2, 0, 63, 4, 7, 0, 64, 4,
+ 2, 0, 65, 4, 2, 0, 66, 4, 7, 0, 67, 4, 7, 0, 68, 4, 7, 0, 69, 4, 7, 0, 70, 4, 7, 0, 71, 4, 7, 0, 72, 4,
+ 4, 0, 73, 4, 7, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 80, 0, 77, 4, 80, 0, 78, 4, 80, 0, 79, 4, 0, 0, 80, 4,
+ 7, 0, 81, 4, 7, 0, 82, 4, 36, 0, 80, 0, 2, 0, 83, 4, 0, 0, 84, 4, 0, 0, 85, 4, 7, 0, 86, 4, 4, 0, 87, 4,
+ 7, 0, 88, 4, 7, 0, 89, 4, 4, 0, 90, 4, 4, 0, 19, 0, 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 84, 0, 94, 4,
+ 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 4, 0,102, 4,
+176, 0, 73, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,103, 4, 7, 0,104, 4,
+ 7, 0,105, 4, 7, 0,106, 4, 7, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,162, 1,
+ 7, 0,164, 1, 7, 0,163, 1, 7, 0,112, 4, 4, 0,113, 4, 7, 0,114, 4, 7, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4,
+ 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 2, 0,121, 4, 2, 0, 69, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4,
+ 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4,
+ 7, 0,133, 4, 7, 0,134, 4, 7, 0,135, 4, 7, 0,136, 4, 7, 0,137, 4, 7, 0,138, 4, 7, 0,139, 4, 2, 0,140, 4,
+ 2, 0,141, 4, 2, 0,142, 4, 2, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 2, 0,148, 4,
+ 2, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 7, 0,152, 4, 7, 0,153, 4, 7, 0,154, 4, 7, 0,155, 4, 2, 0,156, 4,
+ 2, 0,157, 4, 2, 0,158, 4, 2, 0, 19, 0, 7, 0,159, 4, 7, 0,160, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1,
+ 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0,177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,161, 4, 4, 0, 19, 0,
+ 2, 0,162, 4, 2, 0,163, 4, 32, 0,164, 0,178, 0, 13, 0, 9, 0,164, 4, 9, 0,165, 4, 4, 0,166, 4, 4, 0,167, 4,
+ 4, 0,168, 4, 4, 0,169, 4, 4, 0,170, 4, 4, 0,171, 4, 4, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0, 37, 0,
+ 0, 0,175, 4,179, 0, 5, 0, 9, 0,176, 4, 9, 0,177, 4, 4, 0,178, 4, 4, 0, 70, 0, 0, 0,179, 4,180, 0, 15, 0,
+ 4, 0, 17, 0, 4, 0,180, 4, 4, 0,181, 4, 4, 0,182, 4, 4, 0,183, 4, 4, 0,184, 4, 7, 0,185, 4, 4, 0,186, 4,
+ 4, 0, 90, 0, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 26, 0, 30, 0,181, 0, 7, 0,
+ 4, 0,192, 4, 7, 0,193, 4, 7, 0,194, 4, 7, 0,195, 4, 4, 0,196, 4, 2, 0, 19, 0, 2, 0, 37, 0,182, 0, 11, 0,
+182, 0, 0, 0,182, 0, 1, 0, 0, 0, 20, 0, 66, 0,197, 4, 67, 0,198, 4, 4, 0,111, 3, 4, 0,199, 4, 4, 0,200, 4,
+ 4, 0, 37, 0, 4, 0,201, 4, 4, 0,202, 4,183, 0,134, 0,178, 0,203, 4,179, 0,204, 4,180, 0,205, 4, 4, 0, 17, 3,
+ 4, 0,126, 0, 4, 0, 34, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 2, 0, 19, 0, 2, 0,210, 4,
+ 7, 0,101, 2, 7, 0,211, 4, 7, 0,212, 4, 7, 0,213, 4, 7, 0,214, 4, 7, 0,215, 4, 2, 0,216, 4, 2, 0,217, 4,
+ 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0,221, 4, 2, 0,222, 4, 2, 0,223, 4, 2, 0,224, 4,
+ 2, 0, 91, 1, 2, 0,106, 0, 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 2, 0,229, 4, 2, 0,230, 4,
+ 2, 0,231, 4, 2, 0,232, 4, 2, 0,233, 4, 2, 0, 92, 1, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,237, 4,
+ 4, 0,238, 4, 4, 0, 69, 1, 4, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,121, 1, 2, 0,243, 4,
+ 2, 0,244, 4, 2, 0,245, 4, 2, 0,246, 4, 24, 0,247, 4, 24, 0,248, 4, 23, 0,249, 4, 12, 0,250, 4, 2, 0,251, 4,
+ 2, 0, 37, 0, 7, 0,252, 4, 7, 0,253, 4, 7, 0,254, 4, 7, 0,255, 4, 4, 0, 0, 5, 7, 0, 1, 5, 7, 0, 2, 5,
+ 7, 0, 3, 5, 7, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5,
+ 7, 0, 11, 5, 7, 0, 12, 5, 7, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 2, 0, 18, 5,
+ 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 4, 0, 24, 5, 4, 0, 25, 5, 4, 0, 26, 5,
+ 4, 0, 27, 5, 4, 0, 28, 5, 7, 0, 29, 5, 4, 0, 30, 5, 4, 0, 31, 5, 4, 0, 32, 5, 4, 0, 33, 5, 7, 0, 34, 5,
+ 7, 0, 35, 5, 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 7, 0, 42, 5,
+ 0, 0, 43, 5, 0, 0, 44, 5, 4, 0, 45, 5, 2, 0, 46, 5, 2, 0,238, 1, 0, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5,
+ 4, 0, 50, 5, 4, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 2, 0, 54, 5, 2, 0, 55, 5, 7, 0, 56, 5, 2, 0, 57, 5,
+ 2, 0, 58, 5, 4, 0, 59, 5, 2, 0, 60, 5, 2, 0, 61, 5, 2, 0, 62, 5, 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 70, 0,
+ 42, 0, 65, 5, 0, 0, 66, 5,184, 0, 9, 0,184, 0, 0, 0,184, 0, 1, 0, 0, 0, 20, 0, 2, 0, 67, 5, 2, 0, 68, 5,
+ 2, 0, 69, 5, 2, 0, 43, 0, 7, 0, 70, 5, 7, 0, 70, 0,185, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0,
+ 2, 0, 71, 5, 7, 0, 72, 5, 7, 0, 70, 0, 42, 0, 73, 5,186, 0, 5, 0, 7, 0, 74, 5, 0, 0, 17, 0, 0, 0, 43, 0,
+ 0, 0, 70, 0, 0, 0,238, 1,187, 0, 26, 0, 7, 0,119, 4, 7, 0,120, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 75, 5,
+ 2, 0,136, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4, 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4,186, 0, 76, 5,
+ 2, 0,216, 4, 2, 0,217, 4, 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0, 77, 5, 2, 0,221, 4,
+185, 0, 78, 5, 2, 0, 79, 5, 2, 0,223, 4, 2, 0,226, 4, 2, 0,227, 4,188, 0, 5, 0,188, 0, 0, 0,188, 0, 1, 0,
+ 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0,189, 0, 6, 0,190, 0, 80, 5, 4, 0, 81, 5, 4, 0, 82, 5, 9, 0, 83, 5,
+ 0, 0, 84, 5, 4, 0, 37, 0,191, 0, 6, 0,189, 0, 85, 5, 2, 0, 19, 0, 2, 0, 86, 5, 2, 0, 87, 5, 2, 0, 88, 5,
+ 9, 0, 89, 5,192, 0, 4, 0, 2, 0,106, 0, 2, 0,221, 2, 2, 0,227, 3, 2, 0, 90, 5,193, 0, 14, 0, 2, 0, 19, 0,
+ 2, 0, 91, 5, 2, 0, 92, 5, 2, 0, 93, 5,192, 0, 94, 5, 9, 0, 89, 5, 7, 0, 95, 5, 7, 0, 57, 0, 4, 0, 96, 5,
+ 4, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, 46, 0,134, 0, 32, 0,164, 0,194, 0, 4, 0,194, 0, 0, 0,194, 0, 1, 0,
+ 0, 0,100, 5, 7, 0,101, 5,195, 0, 6, 0,189, 0, 85, 5, 7, 0,102, 5, 4, 0, 90, 0, 0, 0,103, 5, 0, 0,104, 5,
+ 0, 0,190, 2,196, 0, 9, 0,189, 0, 85, 5, 7, 0,105, 5, 7, 0,106, 5, 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0,
+ 4, 0,107, 5, 86, 0,108, 5, 9, 0, 89, 5,197, 0, 74, 0,196, 0,109, 5,196, 0,110, 5,195, 0, 80, 3, 7, 0,111, 5,
+ 2, 0,112, 5, 2, 0,113, 5, 7, 0,114, 5, 7, 0,115, 5, 2, 0,227, 3, 2, 0,116, 5, 7, 0,117, 5, 7, 0,118, 5,
+ 7, 0,119, 5, 2, 0,120, 5, 2, 0, 96, 5, 2, 0,121, 5, 2, 0,122, 5, 2, 0,123, 5, 2, 0,124, 5, 7, 0,125, 5,
+ 7, 0,126, 5, 7, 0,127, 5, 2, 0,128, 5, 2, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 2, 0,132, 5, 2, 0,133, 5,
+ 2, 0,134, 5,191, 0,135, 5,193, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5,
+ 0, 0,142, 5, 0, 0,143, 5, 0, 0,144, 5, 0, 0,145, 5, 0, 0,146, 5, 0, 0,147, 5, 2, 0,148, 5, 7, 0,149, 5,
+ 7, 0,150, 5, 7, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, 7, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5,
+ 7, 0,158, 5, 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 32, 0,164, 5, 0, 0,165, 5,
+ 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 0, 0,169, 5, 0, 0,170, 5, 0, 0,171, 5, 0, 0,172, 5, 2, 0,173, 5,
+ 2, 0,174, 5, 2, 0,175, 5, 2, 0,176, 5, 2, 0,177, 5, 4, 0,178, 5, 4, 0,179, 5,198, 0, 8, 0, 4, 0,180, 5,
+ 4, 0,181, 5, 4, 0,182, 5, 4, 0,183, 5, 4, 0,184, 5, 4, 0,185, 5, 4, 0, 54, 0, 4, 0,125, 2,199, 0, 3, 0,
+ 7, 0,186, 5, 2, 0,187, 5, 2, 0, 19, 0,200, 0, 2, 0, 7, 0,188, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0,
+ 39, 0, 75, 0, 32, 0,189, 5,176, 0,190, 5, 46, 0,191, 5, 47, 0,238, 0, 12, 0,192, 5,177, 0,193, 5, 32, 0,194, 5,
+ 7, 0,195, 5, 7, 0,196, 5, 7, 0,197, 5, 7, 0,198, 5, 4, 0,111, 3, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,
+201, 0,199, 5,197, 0,200, 5,202, 0,201, 5,183, 0,182, 0,181, 0,202, 5, 12, 0,100, 0, 12, 0,203, 5, 12, 0,204, 5,
+203, 0,205, 5, 2, 0,206, 5, 2, 0,207, 5, 2, 0,247, 0, 2, 0,208, 5, 4, 0,209, 5, 4, 0,210, 5, 12, 0,211, 5,
+186, 0, 76, 5,187, 0,212, 5,199, 0,213, 5,162, 0, 93, 3,200, 0,214, 5,204, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1,
+ 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,106, 0, 7, 0,215, 5,205, 0, 35, 0, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5,
+ 7, 0,219, 5, 7, 0,220, 5, 7, 0,221, 5, 7, 0,222, 5, 7, 0,223, 5, 7, 0,224, 5, 7, 0, 76, 1, 7, 0,225, 5,
+ 7, 0,226, 5, 7, 0,227, 5, 7, 0,228, 5, 7, 0,171, 0, 2, 0,229, 5, 2, 0,230, 5, 2, 0, 70, 2, 2, 0,231, 5,
+ 2, 0,232, 5, 2, 0,233, 5, 2, 0,234, 5, 7, 0,235, 5, 71, 0,236, 5,162, 0, 93, 3,205, 0,237, 5,206, 0,238, 5,
+207, 0,239, 5,208, 0,240, 5,209, 0,241, 5,210, 0,242, 5, 7, 0,243, 5, 2, 0,244, 5, 2, 0,245, 5, 4, 0,238, 1,
+211, 0, 54, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 7, 0,224, 5,
+ 7, 0, 76, 1, 7, 0, 43, 0, 4, 0,250, 5, 2, 0,233, 5, 2, 0,234, 5, 32, 0,189, 5, 32, 0,251, 5,204, 0,252, 5,
+211, 0,237, 5, 0, 0,253, 5, 4, 0,111, 3, 4, 0,254, 5, 2, 0,255, 5, 2, 0, 70, 0, 2, 0, 0, 6, 2, 0, 1, 6,
+ 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 2, 6, 7, 0,112, 0, 7, 0, 3, 6, 7, 0, 4, 6, 7, 0, 5, 6,
+ 7, 0, 6, 6, 7, 0, 7, 6, 7, 0,171, 0, 7, 0,195, 5, 2, 0, 8, 6, 2, 0,121, 1, 2, 0, 9, 6, 2, 0, 10, 6,
+ 2, 0, 11, 6, 2, 0, 12, 6, 2, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 2, 0, 16, 6, 4, 0, 17, 6, 12, 0, 18, 6,
+ 2, 0, 19, 6, 2, 0,139, 2, 2, 0, 20, 6, 0, 0, 21, 6, 0, 0, 22, 6, 9, 0, 23, 6,162, 0, 93, 3,213, 0, 25, 0,
+ 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 24, 6, 23, 0, 25, 6, 23, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6,
+ 7, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 19, 0, 2, 0, 36, 6,
+ 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 1, 6, 7, 0, 41, 6, 7, 0, 42, 6, 4, 0, 43, 6,
+ 4, 0, 44, 6,212, 0, 6, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,
+214, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,215, 0, 45, 6,
+ 46, 0,134, 0,216, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,
+213, 0, 46, 6,217, 0, 47, 6, 12, 0, 48, 6, 2, 0, 69, 1, 2, 0, 49, 6, 4, 0, 19, 0, 7, 0, 50, 6, 4, 0, 1, 6,
+218, 0, 20, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,206, 0,238, 5,
+213, 0, 46, 6, 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 36, 6, 2, 0, 55, 6, 0, 0, 19, 0,
+ 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 56, 6, 4, 0, 57, 6, 27, 0, 58, 6,219, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0,
+ 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 51, 6,
+ 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 4, 0, 19, 0, 7, 0, 62, 6,162, 0, 93, 3,220, 0, 16, 0, 0, 0, 63, 6,
+ 0, 0, 64, 6, 0, 0, 65, 6, 0, 0, 66, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0,181, 1,
+ 2, 0, 69, 6, 4, 0, 70, 6, 4, 0, 71, 6, 2, 0, 72, 6, 2, 0, 73, 6, 0, 0, 74, 6, 0, 0, 75, 6,221, 0, 16, 0,
+212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 4, 0, 37, 0,220, 0, 76, 6,222, 0, 77, 6, 12, 0, 78, 6,
+ 12, 0, 79, 6,223, 0, 80, 6,210, 0, 81, 6,224, 0, 82, 6, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 70, 0,
+225, 0, 17, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,
+ 12, 0, 86, 6,226, 0, 87, 6, 0, 0, 88, 6,227, 0, 89, 6, 4, 0, 90, 6, 4, 0, 91, 6, 2, 0, 19, 0, 2, 0, 92, 6,
+ 2, 0, 93, 6, 2, 0, 37, 0,228, 0, 29, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,
+ 2, 0,249, 5, 47, 0,229, 2, 45, 0, 57, 1, 63, 0, 94, 6, 2, 0,133, 0, 2, 0, 95, 6, 2, 0, 70, 0, 2, 0, 96, 6,
+ 4, 0, 19, 0, 2, 0, 97, 6, 2, 0, 98, 6, 2, 0, 99, 6, 2, 0,238, 1, 0, 0,100, 6, 0, 0,101, 6, 0, 0,102, 6,
+ 0, 0, 1, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 62, 6, 7, 0,121, 1, 7, 0,103, 6, 7, 0,104, 6,162, 0, 93, 3,
+229, 0, 11, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 49, 6,
+ 2, 0, 19, 0, 4, 0, 37, 0,217, 0, 47, 6,213, 0, 46, 6,230, 0, 27, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5,
+ 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 42, 0,105, 6, 4, 0,106, 6, 4, 0,107, 6, 2, 0, 90, 0, 2, 0,133, 0,
+ 2, 0,108, 6, 0, 0,109, 6, 0, 0,110, 6, 4, 0,111, 6, 4, 0,112, 6, 4, 0,113, 6, 4, 0,114, 6, 2, 0,115, 6,
+ 2, 0,116, 6, 7, 0,117, 6, 23, 0,118, 6, 23, 0,119, 6, 4, 0,120, 6, 4, 0,121, 6, 0, 0,122, 6, 0, 0,123, 6,
+231, 0, 10, 0, 27, 0, 31, 0, 9, 0,124, 6, 9, 0,125, 6, 9, 0,126, 6, 9, 0,127, 6, 9, 0,128, 6, 4, 0, 90, 0,
+ 4, 0,129, 6, 0, 0,130, 6, 0, 0,131, 6,232, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5,
+ 7, 0,248, 5,231, 0,132, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,133, 6,233, 0, 8, 0,212, 0, 0, 0,
+212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,213, 0, 46, 6, 4, 0, 19, 0, 4, 0,134, 6,234, 0, 23, 0,
+212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 27, 0,135, 6,
+ 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,136, 6, 9, 0,137, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,138, 6,
+ 7, 0,139, 6, 60, 0, 58, 1, 60, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0, 37, 0,162, 0, 93, 3,235, 0, 10, 0,
+212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 19, 0, 2, 0,120, 3,
+ 4, 0, 37, 0,162, 0, 93, 3,236, 0, 42, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,
+ 2, 0,249, 5,213, 0, 46, 6,222, 0, 77, 6, 0, 0, 63, 6, 0, 0, 64, 6, 0, 0, 65, 6, 2, 0, 17, 0, 2, 0, 73, 6,
+ 2, 0, 19, 0, 2, 0, 67, 6, 9, 0,137, 6, 4, 0, 70, 6, 4, 0,143, 6, 4, 0,144, 6, 4, 0, 71, 6, 23, 0,145, 6,
+ 23, 0,146, 6, 7, 0,147, 6, 7, 0,148, 6, 7, 0,149, 6, 7, 0,136, 6, 2, 0,150, 6, 2, 0,237, 0, 2, 0,181, 1,
+ 2, 0, 69, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,151, 6, 2, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6,
+ 9, 0,156, 6, 9, 0,157, 6, 2, 0,158, 6, 0, 0, 75, 6, 57, 0,159, 6,237, 0, 7, 0,237, 0, 0, 0,237, 0, 1, 0,
+ 4, 0,160, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,161, 6, 4, 0, 17, 0,238, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0,
+ 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 4, 0, 17, 0, 4, 0,162, 6, 4, 0, 19, 0, 4, 0,108, 6,
+ 12, 0,163, 6, 12, 0,164, 6, 0, 0,165, 6, 0, 0,166, 6,239, 0, 5, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5,
+ 4, 0,247, 5, 4, 0, 37, 0,240, 0, 7, 0,240, 0, 0, 0,240, 0, 1, 0, 0, 0,167, 6, 2, 0,168, 6, 2, 0,169, 6,
+ 2, 0,170, 6, 2, 0, 37, 0,241, 0, 12, 0, 2, 0,169, 6, 2, 0,171, 6, 2, 0,172, 6, 0, 0,190, 2, 2, 0,173, 6,
+ 2, 0,174, 6, 2, 0,175, 6, 2, 0,176, 6, 2, 0,177, 6, 2, 0, 36, 6, 7, 0,178, 6, 7, 0,179, 6,242, 0, 18, 0,
+242, 0, 0, 0,242, 0, 1, 0, 0, 0,233, 3,241, 0,180, 6,241, 0,181, 6,241, 0,182, 6,241, 0,183, 6, 7, 0,184, 6,
+ 2, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6,
+ 2, 0,193, 6, 2, 0,194, 6,243, 0, 10, 0, 0, 0,195, 6, 0, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 0, 0,199, 6,
+ 0, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0, 37, 0,244, 0, 8, 0, 0, 0,204, 6, 0, 0,205, 6,
+ 0, 0,206, 6, 0, 0,207, 6, 0, 0,208, 6, 0, 0,209, 6, 7, 0,215, 5, 7, 0, 37, 0,245, 0, 18, 0,243, 0,210, 6,
+243, 0,211, 6,243, 0,212, 6,243, 0,213, 6,243, 0,214, 6,243, 0,215, 6,243, 0,216, 6,243, 0,217, 6,243, 0,218, 6,
+243, 0,219, 6,243, 0,220, 6,243, 0,221, 6,243, 0,222, 6,243, 0,223, 6,243, 0,224, 6,243, 0,225, 6,244, 0,226, 6,
+ 0, 0,227, 6,246, 0, 71, 0, 0, 0,228, 6, 0, 0,229, 6, 0, 0,199, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6,
+ 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6,
+ 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6,
+ 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6, 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7,
+ 0, 0, 1, 7, 0, 0, 2, 7, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7,
+ 0, 0, 9, 7, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7,
+ 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7,
+ 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7,
+ 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7,
+ 0, 0, 92, 0,247, 0, 5, 0, 0, 0, 41, 7, 0, 0,252, 6, 0, 0,254, 6, 2, 0, 19, 0, 2, 0, 37, 0,248, 0, 24, 0,
+248, 0, 0, 0,248, 0, 1, 0, 0, 0, 20, 0,245, 0, 42, 7,246, 0, 43, 7,246, 0, 44, 7,246, 0, 45, 7,246, 0, 46, 7,
+246, 0, 47, 7,246, 0, 48, 7,246, 0, 49, 7,246, 0, 50, 7,246, 0, 51, 7,246, 0, 52, 7,246, 0, 53, 7,246, 0, 54, 7,
+246, 0, 55, 7,246, 0, 56, 7,246, 0, 57, 7,246, 0, 58, 7,246, 0, 59, 7,247, 0, 60, 7, 4, 0, 61, 7, 4, 0, 37, 0,
+249, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 62, 7, 7, 0, 43, 2,250, 0, 73, 0, 4, 0, 19, 0,
+ 4, 0, 63, 7, 4, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7,
+ 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 2, 0, 74, 7, 2, 0, 37, 0, 4, 0, 75, 7, 4, 0, 76, 7, 4, 0, 77, 7,
+ 4, 0, 78, 7, 2, 0, 79, 7, 2, 0, 80, 7, 4, 0, 81, 7, 4, 0, 82, 7, 4, 0, 83, 7, 4, 0, 84, 7, 4, 0, 85, 7,
+ 4, 0,163, 6, 4, 0, 86, 7, 2, 0, 87, 7, 2, 0, 88, 7, 2, 0, 89, 7, 2, 0, 90, 7, 12, 0, 91, 7, 12, 0, 92, 7,
+ 12, 0, 93, 7, 12, 0, 94, 7, 0, 0, 95, 7, 2, 0, 96, 7, 2, 0, 97, 7, 2, 0, 98, 7, 2, 0, 99, 7, 2, 0,100, 7,
+ 2, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7,249, 0,104, 7, 2, 0,105, 7, 2, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7,
+ 2, 0,109, 7, 2, 0,110, 7, 2, 0,111, 7, 2, 0,112, 7, 4, 0,113, 7, 4, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7,
+ 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7,
+ 2, 0,125, 7, 2, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 7, 0,129, 7, 2, 0,140, 5, 2, 0,141, 5, 55, 0,130, 7,
+215, 0, 21, 0, 27, 0, 31, 0, 12, 0,131, 7, 12, 0,132, 7, 12, 0,133, 7, 12, 0,246, 5, 46, 0,134, 0, 46, 0,134, 7,
+ 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, 2, 0,141, 7, 2, 0, 37, 0,
+ 2, 0,142, 7, 2, 0,143, 7, 4, 0, 70, 0,210, 0,144, 7, 9, 0,145, 7, 2, 0,146, 7,251, 0, 5, 0,251, 0, 0, 0,
+251, 0, 1, 0,251, 0,147, 7, 13, 0,148, 7, 4, 0, 19, 0,252, 0, 7, 0,252, 0, 0, 0,252, 0, 1, 0,251, 0,149, 7,
+251, 0,150, 7, 2, 0,248, 4, 2, 0, 19, 0, 4, 0, 37, 0,253, 0, 25, 0,253, 0, 0, 0,253, 0, 1, 0,254, 0,151, 7,
+255, 0, 82, 6, 0, 0,152, 7, 0, 0,153, 7, 0, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0,157, 7, 2, 0,158, 7,
+ 2, 0,159, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,160, 7, 2, 0,161, 7, 2, 0,162, 7, 4, 0,163, 7,253, 0,164, 7,
+ 9, 0,165, 7, 4, 0,166, 7, 4, 0,167, 7, 4, 0,168, 7, 4, 0,169, 7, 0, 0,170, 7, 0, 1, 22, 0, 0, 1, 0, 0,
+ 0, 1, 1, 0,251, 0,149, 7,251, 0,150, 7,251, 0,171, 7,251, 0,172, 7,215, 0,173, 7, 23, 0, 52, 0, 0, 0,247, 5,
+ 0, 0,174, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,175, 7, 2, 0, 37, 0, 2, 0,138, 7, 2, 0,161, 6, 2, 0, 19, 0,
+ 1, 1,151, 7, 12, 0,176, 7, 12, 0,246, 5, 12, 0,177, 7, 12, 0,178, 7, 2, 1, 21, 0, 2, 1, 0, 0, 2, 1, 1, 0,
+213, 0, 46, 6, 23, 0,179, 7, 23, 0,180, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7,
+ 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,137, 7, 2, 0,141, 7, 4, 0, 43, 0, 3, 1,151, 7, 12, 0,184, 7, 12, 0,185, 7,
+ 12, 0,177, 7, 0, 0,186, 7, 9, 0,187, 7, 4, 1, 12, 0, 0, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7,
+ 2, 0,192, 7, 2, 0,235, 4, 2, 0,230, 4,215, 0,193, 7, 46, 0,194, 7, 4, 0,195, 7, 4, 0,196, 7, 0, 0, 35, 0,
+ 5, 1, 1, 0, 0, 0,197, 7, 6, 1, 8, 0, 57, 0,198, 7, 57, 0,199, 7, 6, 1,200, 7, 6, 1,201, 7, 6, 1,202, 7,
+ 2, 0,129, 0, 2, 0, 19, 0, 4, 0,203, 7, 7, 1, 4, 0, 4, 0,106, 6, 4, 0,204, 7, 4, 0,111, 6, 4, 0,205, 7,
+ 8, 1, 2, 0, 4, 0,206, 7, 4, 0,207, 7, 9, 1, 7, 0, 7, 0,208, 7, 7, 0,209, 7, 7, 0,210, 7, 4, 0, 19, 0,
+ 4, 0, 37, 0, 7, 0,114, 4, 7, 0,211, 7, 10, 1, 6, 0, 0, 0,212, 7, 0, 0, 65, 6, 49, 0,137, 0, 2, 0,106, 0,
+ 2, 0,234, 4, 4, 0, 37, 0, 11, 1, 21, 0, 11, 1, 0, 0, 11, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0,
+ 4, 0,213, 7, 4, 0,214, 7, 4, 0,215, 7, 5, 1,216, 7, 0, 0,212, 7, 4, 0,217, 7, 4, 0,218, 7, 10, 1, 87, 3,
+ 7, 1,219, 7, 8, 1,220, 7, 9, 1,221, 7, 6, 1,222, 7, 6, 1,223, 7, 6, 1,224, 7, 57, 0,225, 7, 57, 0,226, 7,
+ 12, 1, 12, 0, 0, 0, 5, 2, 9, 0,223, 0, 0, 0,224, 0, 4, 0,227, 0, 4, 0,235, 0, 9, 0,228, 0, 7, 0,230, 0,
+ 7, 0,231, 0, 9, 0,227, 7, 9, 0,228, 7, 9, 0,232, 0, 9, 0,234, 0, 13, 1, 43, 0, 13, 1, 0, 0, 13, 1, 1, 0,
+ 9, 0,229, 7, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0,230, 7,
+ 4, 0,231, 7, 4, 0,214, 7, 4, 0,215, 7, 4, 0,232, 7, 4, 0,246, 0, 4, 0,233, 7, 4, 0,234, 7, 7, 0,106, 5,
+ 7, 0,235, 7, 4, 0,126, 0, 4, 0,236, 7, 11, 1,237, 7, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0,238, 7,
+ 7, 0,239, 7, 12, 1, 59, 1, 13, 1,240, 7, 13, 1,241, 7, 13, 1,242, 7, 12, 0,243, 7, 14, 1,244, 7, 15, 1,245, 7,
+ 7, 0,246, 7, 7, 0,247, 7, 4, 0,248, 7, 7, 0,249, 7, 9, 0,250, 7, 4, 0,251, 7, 4, 0,252, 7, 4, 0,253, 7,
+ 7, 0,254, 7, 16, 1, 4, 0, 16, 1, 0, 0, 16, 1, 1, 0, 12, 0,255, 7, 13, 1, 0, 8,201, 0, 6, 0, 12, 0, 1, 8,
+ 12, 0,243, 7, 12, 0, 2, 8, 13, 1, 3, 8, 0, 0, 4, 8, 0, 0, 5, 8, 17, 1, 4, 0, 7, 0, 6, 8, 7, 0,109, 0,
+ 2, 0, 7, 8, 2, 0, 8, 8, 18, 1, 6, 0, 7, 0, 9, 8, 7, 0, 10, 8, 7, 0, 11, 8, 7, 0, 12, 8, 4, 0, 13, 8,
+ 4, 0, 14, 8, 19, 1, 12, 0, 7, 0, 15, 8, 7, 0, 16, 8, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 20, 8,
+ 7, 0, 21, 8, 7, 0, 22, 8, 7, 0, 23, 8, 7, 0, 24, 8, 4, 0,233, 2, 4, 0, 25, 8, 20, 1, 2, 0, 7, 0, 74, 5,
+ 7, 0, 37, 0, 21, 1, 5, 0, 7, 0, 26, 8, 7, 0, 27, 8, 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 28, 8, 22, 1, 6, 0,
+ 22, 1, 0, 0, 22, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0, 57, 0, 23, 1, 8, 0, 23, 1, 0, 0,
+ 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 24, 1, 45, 0,
+ 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 30, 8,
+ 7, 0, 31, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 32, 8, 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 33, 8, 7, 0, 34, 8,
+ 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 39, 8, 7, 0, 40, 8,
+ 7, 0, 37, 0, 7, 0, 41, 8, 7, 0, 42, 8, 7, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 2, 0, 46, 8, 2, 0, 47, 8,
+ 2, 0, 48, 8, 2, 0, 49, 8, 2, 0, 50, 8, 2, 0, 51, 8, 2, 0, 28, 2, 2, 0, 52, 8, 2, 0, 25, 2, 2, 0, 53, 8,
+ 0, 0, 54, 8, 0, 0, 55, 8, 7, 0,240, 0, 25, 1, 56, 8, 67, 0,241, 1, 26, 1, 16, 0, 26, 1, 0, 0, 26, 1, 1, 0,
+ 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0,242, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2,
+ 7, 0,241, 2, 7, 0,242, 2, 7, 0, 57, 8, 7, 0,243, 2, 7, 0,245, 2, 7, 0,246, 2,227, 0, 5, 0, 2, 0, 17, 0,
+ 2, 0,203, 7, 2, 0, 19, 0, 2, 0, 58, 8, 27, 0,135, 6,226, 0, 3, 0, 4, 0, 69, 0, 4, 0, 59, 8,227, 0, 2, 0,
+ 27, 1, 7, 0, 27, 1, 0, 0, 27, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 60, 8,
+ 28, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 61, 8, 4, 0, 62, 8, 4, 0, 37, 0, 29, 1, 4, 0, 2, 0, 17, 0,
+ 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 30, 1, 4, 0, 0, 0, 20, 0, 66, 0, 63, 8, 7, 0, 76, 1, 7, 0, 37, 0,
+ 31, 1, 6, 0, 2, 0, 64, 8, 2, 0, 65, 8, 2, 0, 17, 0, 2, 0, 66, 8, 0, 0, 67, 8, 0, 0, 68, 8, 32, 1, 5, 0,
+ 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 69, 8, 0, 0, 70, 8, 33, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0,
+ 0, 0, 20, 0, 34, 1, 4, 0, 2, 0, 71, 8, 2, 0, 72, 8, 2, 0, 19, 0, 2, 0, 37, 0, 35, 1, 6, 0, 0, 0, 20, 0,
+ 0, 0, 73, 8, 2, 0, 74, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, 36, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0,
+ 7, 0,116, 4, 2, 0, 19, 0, 2, 0,205, 2, 37, 1, 3, 0, 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 71, 8, 38, 1, 7, 0,
+ 0, 0, 20, 0, 7, 0,116, 4, 0, 0, 75, 8, 0, 0, 76, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 77, 8, 39, 1, 4, 0,
+ 0, 0, 78, 8, 0, 0, 79, 8, 4, 0, 17, 0, 7, 0,209, 2, 40, 1, 3, 0, 32, 0, 80, 8, 0, 0, 81, 8, 0, 0, 82, 8,
+ 41, 1, 18, 0, 41, 1, 0, 0, 41, 1, 1, 0, 2, 0, 17, 0, 2, 0, 83, 8, 2, 0, 19, 0, 2, 0, 84, 8, 2, 0, 85, 8,
+ 2, 0, 86, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 42, 1, 87, 8, 32, 0, 45, 0, 2, 0, 90, 5,
+ 2, 0,246, 7, 2, 0, 88, 8, 2, 0, 37, 0, 43, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0, 89, 8, 2, 0, 19, 0,
+ 2, 0,205, 2, 2, 0, 90, 8, 4, 0, 91, 8, 4, 0, 92, 8, 4, 0, 93, 8, 4, 0, 94, 8, 4, 0, 95, 8, 44, 1, 1, 0,
+ 0, 0, 96, 8, 45, 1, 4, 0, 42, 0,105, 6, 0, 0, 97, 8, 4, 0, 69, 1, 4, 0, 19, 0, 42, 1, 18, 0, 42, 1, 0, 0,
+ 42, 1, 1, 0, 42, 1, 98, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 99, 8, 2, 0, 86, 8, 2, 0, 83, 8, 2, 0,100, 8,
+ 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 46, 1, 87, 8, 41, 1,101, 8, 2, 0, 15, 0, 2, 0,102, 8,
+ 4, 0,103, 8, 47, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, 48, 1, 12, 0,160, 0,104, 8, 2, 0, 17, 0,
+ 2, 0, 19, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,105, 8, 2, 0,106, 8, 2, 0,107, 8, 2, 0,108, 8,
+ 2, 0,109, 8, 7, 0,110, 8, 49, 1, 13, 0, 2, 0, 19, 0, 2, 0,111, 8, 4, 0, 31, 8, 4, 0, 89, 0, 2, 0,112, 8,
+ 7, 0,242, 3, 7, 0,113, 8, 14, 1,244, 7, 50, 1,114, 8, 2, 0, 17, 0, 2, 0,115, 8, 2, 0,116, 8, 2, 0,117, 8,
+ 51, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,118, 8, 0, 0, 20, 0, 7, 0,119, 8,
+ 7, 0,120, 8, 7, 0,128, 3, 2, 0,121, 8, 2, 0,122, 8, 52, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0,
+ 46, 0,134, 0, 32, 0,189, 5, 53, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 69, 8, 32, 0, 45, 0,
+ 54, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 83, 8, 2, 0,129, 3, 7, 0,123, 8, 7, 0,124, 8, 7, 0, 64, 1,
+ 7, 0, 65, 1, 7, 0,100, 3, 7, 0,103, 3, 7, 0,125, 8, 7, 0,126, 8, 32, 0,127, 8, 55, 1, 10, 0, 2, 0, 19, 0,
+ 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,105, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,128, 8,
+ 2, 0,129, 8, 56, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,130, 8, 7, 0,131, 8, 7, 0,235, 2, 2, 0, 19, 0,
+ 2, 0,205, 2, 7, 0,132, 8, 57, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2,
+ 2, 0,133, 8, 4, 0, 37, 0, 7, 0,134, 8, 7, 0,135, 8, 7, 0,136, 8, 7, 0,137, 8, 0, 0,138, 8, 58, 1, 9, 0,
+ 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,128, 8,
+ 2, 0,129, 8, 59, 1, 7, 0, 4, 0,193, 2, 4, 0,139, 8, 4, 0,140, 8, 4, 0,141, 8, 7, 0,142, 8, 7, 0,143, 8,
+ 0, 0, 75, 8, 60, 1, 7, 0, 0, 0,144, 8, 32, 0,145, 8, 0, 0, 81, 8, 2, 0,146, 8, 2, 0, 43, 0, 4, 0, 70, 0,
+ 0, 0, 82, 8, 61, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0,147, 8, 0, 0,148, 8,
+ 62, 1, 1, 0, 4, 0, 19, 0, 63, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,149, 8, 7, 0,150, 8,
+ 42, 0,105, 6, 64, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 65, 1, 2, 0, 4, 0, 17, 0,
+ 4, 0, 26, 6, 66, 1, 6, 0, 0, 0, 78, 8, 0, 0, 79, 8, 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,151, 8,
+ 46, 1, 10, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1, 98, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 83, 8, 2, 0,152, 8,
+ 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 67, 1, 10, 0, 7, 0,128, 3, 7, 0,153, 8, 7, 0,154, 8, 7, 0,155, 8,
+ 7, 0,156, 8, 4, 0, 19, 0, 7, 0,133, 8, 7, 0,157, 8, 7, 0,158, 8, 7, 0, 37, 0, 15, 1, 12, 0, 15, 1, 0, 0,
+ 15, 1, 1, 0, 14, 1,159, 8, 9, 0,223, 0, 4, 0,171, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,160, 8, 4, 0,161, 8,
+ 4, 0,162, 8, 7, 0,242, 3, 7, 0, 37, 0, 50, 1, 8, 0, 7, 0,163, 8, 7, 0,164, 8, 7, 0,165, 8, 7, 0,166, 8,
+ 7, 0,167, 8, 7, 0,168, 8, 7, 0,169, 8, 7, 0,170, 8, 14, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0,
+ 9, 0,223, 0, 43, 0,171, 8, 36, 0, 80, 0, 7, 0,242, 3, 7, 0,172, 8, 7, 0,113, 8, 7, 0,163, 8, 7, 0,164, 8,
+ 7, 0,173, 8, 4, 0, 90, 0, 4, 0,162, 8, 9, 0,174, 8, 68, 1, 15, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5,
+ 4, 0,247, 5, 7, 0,248, 5, 0, 1,175, 8,213, 0, 46, 6, 14, 1,244, 7, 2, 0, 69, 1, 2, 0,111, 8, 2, 0, 89, 2,
+ 2, 0, 90, 2, 2, 0, 19, 0, 2, 0, 98, 6, 4, 0, 70, 0, 69, 1, 6, 0, 69, 1, 0, 0, 69, 1, 1, 0, 32, 0, 45, 0,
+ 9, 0,176, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,177, 8, 4, 0,131, 0, 7, 0,178, 8,
+ 70, 1, 26, 0, 70, 1, 0, 0, 70, 1, 1, 0, 26, 0,179, 8, 70, 1, 38, 0, 12, 0,180, 8, 0, 0, 20, 0, 7, 0,181, 8,
+ 7, 0,182, 8, 7, 0,183, 8, 7, 0,184, 8, 4, 0, 19, 0, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, 7, 0, 76, 1,
+ 7, 0, 36, 2, 7, 0,188, 8, 7, 0,191, 2, 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 7, 0,192, 8, 7, 0,193, 8,
+ 7, 0,172, 0, 2, 0,131, 0, 2, 0,121, 5, 71, 1, 24, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,194, 8, 12, 0,195, 8,
+ 12, 0,196, 8, 70, 1,197, 8, 9, 0,198, 8, 9, 0,199, 8, 4, 0, 19, 0, 4, 0,255, 5, 2, 0,247, 2, 2, 0, 56, 6,
+ 2, 0,131, 0, 2, 0,200, 8, 2, 0,201, 8, 2, 0,202, 8, 2, 0,203, 8, 2, 0,204, 8, 4, 0,205, 8, 4, 0,206, 8,
+ 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 4, 0,210, 8, 72, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, 73, 1, 5, 0,
+ 72, 1,211, 8, 4, 0,191, 2, 4, 0,212, 8, 4, 0,213, 8, 4, 0, 19, 0, 74, 1, 6, 0, 4, 0, 37, 0, 4, 0, 56, 6,
+ 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 4, 0,210, 8, 75, 1, 42, 0, 75, 1, 0, 0, 75, 1, 1, 0, 26, 0,179, 8,
+ 12, 0,155, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,214, 8, 2, 0,215, 8, 2, 0,216, 8, 2, 0,114, 3, 2, 0,217, 8,
+ 4, 0, 72, 2, 4, 0,207, 8, 4, 0,208, 8, 70, 1,218, 8, 75, 1, 38, 0, 75, 1,219, 8, 12, 0,220, 8, 9, 0,221, 8,
+ 9, 0,222, 8, 9, 0,223, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,224, 8, 7, 0, 15, 2, 7, 0,105, 3, 7, 0,107, 3,
+ 2, 0,137, 3, 2, 0, 37, 0, 7, 0,225, 8, 7, 0,226, 8, 7, 0,110, 3, 7, 0,227, 8, 7, 0,228, 8, 7, 0,229, 8,
+ 7, 0,230, 8, 7, 0,231, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,234, 8, 7, 0, 65, 2, 32, 0,235, 8,161, 0, 11, 0,
+ 12, 0,236, 8, 2, 0, 19, 0, 2, 0,237, 8, 7, 0,101, 2, 7, 0,238, 8, 7, 0,239, 8, 12, 0,240, 8, 4, 0,241, 8,
+ 4, 0,242, 8, 9, 0,243, 8, 9, 0,244, 8, 76, 1, 1, 0, 4, 0,242, 8, 77, 1, 12, 0, 4, 0,242, 8, 7, 0, 95, 8,
+ 2, 0,245, 8, 2, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 2, 0,249, 8, 2, 0, 19, 0, 7, 0,250, 8, 7, 0,251, 8,
+ 7, 0,252, 8, 7, 0,253, 8, 78, 1, 7, 0, 78, 1, 0, 0, 78, 1, 1, 0, 12, 0,254, 8, 4, 0, 19, 0, 4, 0,255, 8,
+ 0, 0,233, 3,247, 0, 0, 9,160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 1, 9, 12, 0,236, 8, 12, 0, 2, 9, 12, 0,100, 0,
+ 4, 0, 19, 0, 4, 0, 3, 9,217, 0, 4, 0, 27, 0,159, 8, 12, 0,236, 8, 4, 0, 4, 9, 4, 0, 19, 0, 79, 1, 17, 0,
+212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,160, 0, 90, 3,
+217, 0, 5, 9, 0, 0, 69, 1, 0, 0, 49, 6, 2, 0, 19, 0, 2, 0, 6, 9, 2, 0, 99, 6, 2, 0, 98, 6, 2, 0, 7, 9,
+ 7, 0, 8, 9, 80, 1, 8, 0, 80, 1, 0, 0, 80, 1, 1, 0, 78, 1, 9, 9, 36, 0, 80, 0, 12, 0, 94, 3, 4, 0, 19, 0,
+ 0, 0, 20, 0, 4, 0, 10, 9, 81, 1, 5, 0, 81, 1, 0, 0, 81, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 11, 9,
+ 82, 1, 14, 0, 82, 1, 0, 0, 82, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 12, 9, 0, 0, 13, 9,
+ 0, 0, 11, 9, 7, 0, 14, 9, 7, 0, 15, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 16, 9, 7, 0, 17, 9, 83, 1, 9, 0,
+ 83, 1, 0, 0, 83, 1, 1, 0, 32, 0, 18, 9, 0, 0,250, 2, 7, 0, 19, 9, 2, 0, 20, 9, 2, 0, 19, 0, 2, 0, 17, 0,
+ 2, 0, 21, 9, 84, 1, 7, 0, 42, 0,105, 6, 26, 0,179, 8, 4, 0, 19, 0, 4, 0, 22, 9, 12, 0, 23, 9, 32, 0, 18, 9,
+ 0, 0,250, 2, 85, 1, 15, 0, 32, 0, 18, 9, 2, 0, 24, 9, 2, 0, 19, 0, 2, 0, 25, 9, 2, 0, 26, 9, 0, 0,250, 2,
+ 32, 0, 27, 9, 0, 0, 28, 9, 7, 0, 29, 9, 7, 0, 36, 2, 7, 0, 30, 9, 7, 0, 31, 9, 2, 0, 17, 0, 2, 0, 69, 1,
+ 7, 0, 76, 1, 86, 1, 6, 0, 32, 0, 18, 9, 7, 0,211, 8, 2, 0, 32, 9, 2, 0, 33, 9, 2, 0, 19, 0, 2, 0, 34, 9,
+ 87, 1, 6, 0, 32, 0, 18, 9, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, 88, 1, 4, 0,
+ 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9, 0, 0,250, 2, 89, 1, 4, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9,
+ 0, 0,250, 2, 90, 1, 10, 0, 32, 0, 18, 9, 4, 0, 37, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,101, 6, 2, 0, 38, 9,
+ 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 39, 9, 0, 0,250, 2, 91, 1, 4, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9,
+ 0, 0,250, 2, 92, 1, 10, 0, 32, 0, 18, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,130, 8,
+ 7, 0,131, 8, 4, 0, 37, 0,160, 0,104, 8, 0, 0,250, 2, 93, 1, 4, 0, 32, 0, 18, 9, 4, 0,115, 3, 4, 0, 40, 9,
+ 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 18, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 95, 1, 5, 0, 32, 0, 18, 9,
+ 7, 0,125, 0, 4, 0, 41, 9, 4, 0,115, 3, 4, 0,116, 3, 96, 1, 6, 0, 32, 0, 18, 9, 4, 0, 42, 9, 4, 0, 43, 9,
+ 7, 0, 44, 9, 7, 0, 45, 9, 0, 0,250, 2, 97, 1, 16, 0, 32, 0, 18, 9, 32, 0,219, 8, 4, 0, 17, 0, 7, 0, 46, 9,
+ 7, 0, 47, 9, 7, 0, 48, 9, 7, 0, 49, 9, 7, 0, 50, 9, 7, 0, 51, 9, 7, 0, 52, 9, 7, 0, 53, 9, 7, 0, 54, 9,
+ 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 98, 1, 3, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 28, 2,
+ 99, 1, 5, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 55, 9, 0, 0,250, 2,100, 1, 10, 0, 32, 0, 18, 9,
+ 0, 0,250, 2, 2, 0, 56, 9, 2, 0, 57, 9, 0, 0, 58, 9, 0, 0, 59, 9, 7, 0, 60, 9, 7, 0, 61, 9, 7, 0, 62, 9,
+ 7, 0, 63, 9,101, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 64, 9, 7, 0, 65, 9,
+ 2, 0, 19, 0, 2, 0, 28, 2,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 64, 9,
+ 7, 0, 65, 9, 2, 0, 19, 0, 2, 0, 28, 2,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0,
+ 7, 0, 64, 9, 7, 0, 65, 9, 2, 0, 19, 0, 2, 0, 28, 2,104, 1, 7, 0, 32, 0, 18, 9, 0, 0,250, 2, 7, 0, 76, 1,
+ 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,105, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, 2, 0, 54, 3,
+ 0, 0, 56, 3, 0, 0, 66, 9,106, 1, 10, 0,106, 1, 0, 0,106, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 67, 9,
+ 7, 0, 20, 1, 7, 0, 21, 1, 2, 0,254, 8, 2, 0, 68, 9, 32, 0, 45, 0,107, 1, 22, 0,107, 1, 0, 0,107, 1, 1, 0,
+ 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 69, 9, 2, 0, 70, 9, 36, 0, 80, 0,160, 0,104, 8, 32, 0,164, 0, 7, 0, 88, 0,
+ 7, 0, 89, 0, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 73, 9, 7, 0, 74, 9, 7, 0,236, 2, 7, 0, 75, 9, 7, 0,106, 8,
+ 7, 0, 76, 9, 0, 0, 77, 9, 0, 0, 78, 9, 12, 0, 96, 3,108, 1, 8, 0, 7, 0, 43, 2, 7, 0,130, 8, 7, 0,131, 8,
+ 9, 0, 2, 0, 2, 0, 79, 9, 2, 0, 80, 9, 2, 0, 81, 9, 2, 0, 82, 9,109, 1, 18, 0,109, 1, 0, 0,109, 1, 1, 0,
+109, 1, 83, 9, 0, 0, 20, 0,108, 1, 84, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 85, 9, 2, 0, 86, 9, 2, 0, 87, 9,
+ 2, 0, 88, 9, 4, 0, 43, 0, 7, 0, 89, 9, 7, 0, 90, 9, 4, 0, 91, 9, 4, 0, 92, 9,109, 1, 93, 9,110, 1, 94, 9,
+111, 1, 33, 0,111, 1, 0, 0,111, 1, 1, 0,111, 1, 95, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,213, 7,
+ 2, 0,246, 7, 2, 0, 96, 9, 2, 0,133, 0, 2, 0, 86, 9, 2, 0,203, 7, 12, 0, 99, 8, 12, 0, 97, 9, 27, 0,135, 6,
+ 9, 0, 98, 9, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0, 74, 2, 7, 0, 99, 9, 2, 0,100, 9, 2, 0,101, 9, 7, 0,102, 9,
+ 7, 0,103, 9, 2, 0,104, 9, 2, 0,105, 9, 9, 0,106, 9, 24, 0,107, 9, 24, 0,108, 9, 24, 0,109, 9,112, 1,150, 0,
+113, 1,110, 9,114, 1,111, 9,110, 1, 8, 0,110, 1, 0, 0,110, 1, 1, 0,111, 1,112, 9,111, 1,113, 9,109, 1,114, 9,
+109, 1, 93, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, 12, 0,115, 9,
+ 12, 0,116, 9,108, 1,117, 9, 12, 0,118, 9, 4, 0, 17, 0, 4, 0,119, 9, 4, 0,120, 9, 4, 0,121, 9, 4, 0, 19, 0,
+ 4, 0, 37, 0, 12, 0,122, 9,114, 1,123, 9,109, 1,124, 9,109, 1,125, 9, 9, 0,126, 9, 9, 0,127, 9, 4, 0,128, 9,
+ 9, 0,129, 9, 9, 0,130, 9, 9, 0,131, 9,115, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,203, 7, 0, 0,132, 9,
+ 0, 0,133, 9, 2, 0, 37, 0,116, 1, 16, 0, 2, 0,157, 7, 2, 0,158, 7, 2, 0,134, 9, 2, 0,154, 8, 2, 0,135, 9,
+ 2, 0, 68, 0, 7, 0,235, 2, 7, 0,136, 9, 7, 0,137, 9, 2, 0, 91, 1, 0, 0,138, 9, 0, 0,105, 5, 2, 0,139, 9,
+ 2, 0, 37, 0, 4, 0,140, 9, 4, 0,141, 9,117, 1, 9, 0, 7, 0,142, 9, 7, 0,143, 9, 7, 0,173, 8, 7, 0,109, 0,
+ 7, 0,144, 9, 7, 0, 62, 6, 2, 0,145, 9, 0, 0,146, 9, 0, 0, 37, 0,118, 1, 4, 0, 7, 0,147, 9, 7, 0,148, 9,
+ 2, 0,145, 9, 2, 0, 37, 0,119, 1, 3, 0, 7, 0,149, 9, 7, 0,150, 9, 7, 0, 15, 0,120, 1, 7, 0, 0, 0, 5, 2,
+ 2, 0,232, 4, 2, 0,233, 4, 2, 0,234, 4, 2, 0,180, 4, 4, 0,126, 0, 4, 0, 34, 4,121, 1, 7, 0, 7, 0,151, 9,
+ 7, 0,152, 9, 7, 0,153, 9, 7, 0, 85, 2, 7, 0,154, 9, 7, 0,155, 9, 7, 0,156, 9,122, 1, 4, 0, 2, 0,157, 9,
+ 2, 0,158, 9, 2, 0,159, 9, 2, 0,160, 9,123, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,124, 1, 2, 0, 0, 0,166, 0,
+ 0, 0,161, 9,125, 1, 1, 0, 0, 0, 20, 0,126, 1, 10, 0, 0, 0,162, 9, 0, 0,163, 9, 0, 0, 55, 6, 0, 0,164, 9,
+ 2, 0,134, 9, 2, 0,165, 9, 7, 0,166, 9, 7, 0,167, 9, 7, 0,168, 9, 7, 0, 75, 9,127, 1, 2, 0, 9, 0,169, 9,
+ 9, 0,170, 9,128, 1, 11, 0, 0, 0,234, 4, 0, 0, 17, 0, 0, 0,145, 9, 0, 0,109, 0, 0, 0,171, 9, 0, 0,106, 0,
+ 0, 0, 70, 2, 7, 0,172, 9, 7, 0,173, 9, 7, 0,174, 9, 7, 0,175, 9,129, 1, 8, 0, 7, 0, 64, 8, 7, 0,125, 0,
+ 7, 0,105, 5, 7, 0,157, 2, 7, 0,176, 9, 7, 0,236, 0, 7, 0,177, 9, 4, 0, 17, 0,130, 1, 4, 0, 2, 0,178, 9,
+ 2, 0,179, 9, 2, 0,180, 9, 2, 0, 37, 0,131, 1, 1, 0, 0, 0, 20, 0,132, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0,
+ 2, 0, 19, 0, 2, 0,181, 9,133, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,116, 4, 7, 0,182, 9, 7, 0,183, 9,
+ 7, 0,184, 9, 7, 0,185, 9,132, 1,186, 9,132, 1,187, 9,132, 1,188, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0,
+ 24, 0,189, 9, 24, 0,190, 9,133, 1,191, 9, 7, 0,192, 9, 7, 0,193, 9, 7, 0,194, 9, 7, 0,195, 9,134, 1, 4, 0,
+ 47, 0,229, 2, 7, 0,196, 9, 7, 0,170, 1, 7, 0, 37, 0,190, 0, 17, 0, 27, 0, 31, 0,134, 1,197, 9, 63, 0,186, 9,
+ 51, 0,134, 1, 2, 0, 19, 0, 2, 0,215, 5, 4, 0,106, 0, 7, 0,198, 9, 7, 0, 82, 2, 4, 0,199, 9, 7, 0,200, 9,
+ 7, 0,201, 9, 7, 0,202, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,203, 9, 0, 0,194, 6,135, 1, 10, 0, 4, 0, 17, 0,
+ 4, 0,125, 0, 4, 0, 19, 0, 4, 0,177, 3, 4, 0,204, 9, 4, 0,205, 9, 4, 0,206, 9, 0, 0, 92, 0, 0, 0, 20, 0,
+ 9, 0, 2, 0, 91, 0, 6, 0,135, 1,207, 9, 4, 0,208, 9, 4, 0,209, 9, 4, 0,210, 9, 4, 0, 37, 0, 9, 0,211, 9,
136, 1, 5, 0, 7, 0,152, 2, 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,137, 1, 5, 0, 7, 0,152, 2,
- 7, 0,208, 9, 7, 0,209, 9, 7, 0,210, 9, 7, 0,219, 2,138, 1, 5, 0, 32, 0,211, 9,139, 1, 22, 0, 7, 0,187, 5,
- 7, 0,212, 9, 7, 0, 57, 0,140, 1, 7, 0, 4, 0,213, 9, 4, 0,214, 9, 4, 0,215, 9, 7, 0,216, 9, 7, 0,217, 9,
- 7, 0,218, 9, 7, 0, 57, 0,141, 1, 8, 0,141, 1, 0, 0,141, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0,
- 2, 0, 69, 1, 7, 0,219, 2, 7, 0, 69, 8,142, 1, 6, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2,
- 2, 0, 19, 0, 2, 0,219, 9,143, 1, 18, 0,137, 1,171, 3,137, 1,220, 9,136, 1,221, 9,137, 1, 53, 8,138, 1,222, 9,
- 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0,223, 9, 4, 0,213, 9, 4, 0,224, 9, 7, 0,217, 9, 7, 0,218, 9,
- 7, 0,106, 0, 2, 0, 19, 0, 2, 0,225, 9, 2, 0,226, 9, 2, 0,227, 9,144, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,
-145, 1,228, 9,169, 0, 56, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 51, 9, 2, 0,229, 9, 2, 0,230, 9, 2, 0,137, 3,
- 2, 0,231, 9, 2, 0,232, 9, 2, 0,233, 9, 2, 0,234, 9, 2, 0,235, 9, 2, 0,236, 9, 2, 0,237, 9, 2, 0,222, 4,
- 2, 0, 97, 5, 2, 0,238, 9, 2, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9, 2, 0,242, 9, 2, 0, 25, 2, 2, 0, 46, 8,
- 2, 0, 22, 8, 2, 0,243, 9, 2, 0,244, 9, 2, 0,187, 3, 2, 0,188, 3, 2, 0,245, 9, 2, 0,246, 9, 2, 0,247, 9,
- 2, 0,248, 9, 7, 0,249, 9, 7, 0,250, 9, 7, 0,251, 9, 2, 0,252, 9, 2, 0,253, 9, 7, 0,254, 9, 7, 0,255, 9,
- 7, 0, 0, 10, 7, 0, 28, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 34, 8, 7, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10,
- 4, 0, 29, 8, 4, 0, 27, 8, 4, 0, 4, 10, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 5, 10, 7, 0, 6, 10,
- 7, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10, 7, 0, 57, 0, 7, 0, 10, 10, 7, 0, 11, 10, 7, 0, 12, 10, 7, 0, 13, 10,
- 7, 0,128, 3, 7, 0,106, 0, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, 7, 0, 18, 10, 7, 0, 19, 10,
- 7, 0, 20, 10, 4, 0, 21, 10, 4, 0, 22, 10, 7, 0, 23, 10, 7, 0, 24, 10, 7, 0, 25, 10, 7, 0, 26, 10, 7, 0, 27, 10,
- 7, 0,210, 0, 7, 0, 28, 10, 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10,
- 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10,
- 7, 0, 40, 10, 7, 0, 41, 10, 4, 0, 42, 10, 4, 0, 43, 10, 67, 0,160, 3, 12, 0, 44, 10, 67, 0, 45, 10, 32, 0, 46, 10,
- 32, 0, 47, 10, 36, 0, 80, 0,164, 0, 61, 1,164, 0, 48, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,144, 1, 49, 10,
-143, 1, 50, 10,140, 1,214, 8,171, 0,238, 3, 9, 0,239, 3,146, 1, 51, 10,146, 1, 52, 10, 12, 0, 53, 10, 12, 0, 54, 10,
-133, 0, 55, 10,141, 0, 56, 10,141, 0, 57, 10, 32, 0, 58, 10, 32, 0, 59, 10, 32, 0, 38, 0, 12, 0, 18, 9, 0, 0, 20, 0,
- 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 60, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 29, 8, 4, 0, 61, 10,
- 4, 0, 62, 10, 4, 0, 63, 10, 2, 0,247, 0, 2, 0, 64, 10, 2, 0, 65, 10, 2, 0, 66, 10, 0, 0, 67, 10, 2, 0, 68, 10,
- 2, 0, 69, 10, 2, 0, 70, 10, 9, 0, 71, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 72, 10,147, 1, 73, 10,148, 1, 74, 10,
- 7, 0, 75, 10,135, 0, 35, 0,149, 1,171, 8, 7, 0, 25, 4, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0,119, 4, 7, 0, 78, 10,
- 7, 0,138, 3, 7, 0,128, 3, 7, 0, 79, 10, 7, 0, 84, 2, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 82, 10, 7, 0, 83, 10,
- 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 26, 4, 7, 0, 86, 10, 7, 0, 87, 10, 7, 0, 88, 10, 7, 0, 27, 4, 7, 0, 23, 4,
- 7, 0, 24, 4, 7, 0, 89, 10, 4, 0, 90, 10, 4, 0, 90, 0, 4, 0, 91, 10, 4, 0, 92, 10, 2, 0, 93, 10, 2, 0, 94, 10,
- 2, 0, 95, 10, 2, 0, 96, 10, 2, 0, 97, 10, 2, 0, 37, 0,169, 0, 56, 4,136, 0, 8, 0,149, 1, 98, 10, 7, 0, 99, 10,
- 7, 0,100, 10, 7, 0,242, 1, 7, 0,101, 10, 4, 0, 90, 0, 2, 0,102, 10, 2, 0,103, 10,150, 1, 4, 0, 7, 0, 5, 0,
- 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,104, 10,151, 1, 6, 0,151, 1, 0, 0,151, 1, 1, 0,150, 1,206, 8, 4, 0,253, 0,
- 2, 0,105, 10, 2, 0, 19, 0,152, 1, 5, 0,152, 1, 0, 0,152, 1, 1, 0, 12, 0,106, 10, 4, 0,107, 10, 4, 0, 19, 0,
-153, 1, 9, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,124, 0,152, 1,108, 10, 4, 0, 19, 0, 2, 0,105, 10, 2, 0,109, 10,
- 7, 0, 91, 0, 0, 0,110, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0,250, 4, 4, 0, 19, 0, 2, 0,111, 10, 2, 0,112, 10,
- 9, 0,113, 10,154, 1, 7, 0,154, 1, 0, 0,154, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,114, 10,
- 0, 0,115, 10,155, 1, 5, 0, 12, 0,116, 10, 4, 0,117, 10, 4, 0,118, 10, 4, 0, 19, 0, 4, 0, 37, 0,156, 1, 18, 0,
- 27, 0, 31, 0,157, 1,119, 10,157, 1,120, 10, 12, 0,121, 10, 4, 0,122, 10, 2, 0,123, 10, 2, 0, 37, 0, 12, 0,124, 10,
- 12, 0,125, 10,155, 1,126, 10, 12, 0,127, 10, 12, 0,128, 10, 12, 0,129, 10,158, 1,130, 10, 4, 0,131, 10, 4, 0, 70, 0,
- 12, 0,132, 10,210, 0,133, 10,157, 1, 30, 0,157, 1, 0, 0,157, 1, 1, 0, 9, 0,134, 10, 4, 0,133, 7, 4, 0, 37, 0,
-215, 0, 44, 6,215, 0,135, 10, 0, 0,136, 10, 2, 0,137, 10, 2, 0,138, 10, 2, 0,154, 7, 2, 0,155, 7, 2, 0,139, 10,
- 2, 0,140, 10, 2, 0,177, 3, 2, 0,160, 6, 2, 0,141, 10, 2, 0,142, 10, 4, 0,238, 1,159, 1,143, 10,160, 1,144, 10,
-161, 1,145, 10, 4, 0,146, 10, 4, 0,147, 10, 9, 0,148, 10, 12, 0,125, 10, 12, 0,174, 7, 12, 0,149, 10, 12, 0,150, 10,
- 12, 0,151, 10,162, 1, 16, 0,162, 1, 0, 0,162, 1, 1, 0, 0, 0,152, 10, 26, 0, 30, 0, 2, 0,153, 10, 2, 0, 17, 0,
- 2, 0, 15, 0, 2, 0,154, 10, 2, 0,155, 10, 2, 0,156, 10, 2, 0,157, 10, 2, 0,158, 10, 2, 0, 19, 0, 2, 0,159, 10,
- 2, 0, 70, 2,163, 1,160, 10,164, 1, 10, 0,164, 1, 0, 0,164, 1, 1, 0, 12, 0,161, 10, 0, 0,152, 10, 2, 0,162, 10,
- 2, 0,163, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,164, 10, 9, 0,165, 10,158, 1, 7, 0,158, 1, 0, 0,158, 1, 1, 0,
- 0, 0,152, 10, 0, 0,166, 10, 12, 0, 91, 7, 4, 0,167, 10, 4, 0, 19, 0,223, 0, 12, 0,223, 0, 0, 0,223, 0, 1, 0,
- 0, 0,152, 10, 26, 0, 30, 0,165, 1,148, 7, 9, 0,168, 10,163, 1,160, 10,155, 1,169, 10, 12, 0,170, 10,223, 0,171, 10,
+ 7, 0,212, 9, 7, 0,213, 9, 7, 0,214, 9, 7, 0,219, 2,138, 1, 5, 0, 32, 0,215, 9,139, 1, 22, 0, 7, 0,188, 5,
+ 7, 0,216, 9, 7, 0, 57, 0,140, 1, 7, 0, 4, 0,217, 9, 4, 0,218, 9, 4, 0,219, 9, 7, 0,220, 9, 7, 0,221, 9,
+ 7, 0,222, 9, 7, 0, 57, 0,141, 1, 8, 0,141, 1, 0, 0,141, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0,
+ 2, 0, 69, 1, 7, 0,219, 2, 7, 0, 72, 8,142, 1, 6, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2,
+ 2, 0, 19, 0, 2, 0,223, 9,143, 1, 18, 0,137, 1,171, 3,137, 1,224, 9,136, 1,225, 9,137, 1, 56, 8,138, 1,226, 9,
+ 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0,227, 9, 4, 0,217, 9, 4, 0,228, 9, 7, 0,221, 9, 7, 0,222, 9,
+ 7, 0,106, 0, 2, 0, 19, 0, 2, 0,229, 9, 2, 0,230, 9, 2, 0,231, 9,144, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,
+145, 1,232, 9,169, 0, 56, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 56, 9, 2, 0,233, 9, 2, 0,234, 9, 2, 0,137, 3,
+ 2, 0,235, 9, 2, 0,236, 9, 2, 0,237, 9, 2, 0,238, 9, 2, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9, 2, 0,221, 4,
+ 2, 0, 98, 5, 2, 0,242, 9, 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9, 2, 0,246, 9, 2, 0, 25, 2, 2, 0, 49, 8,
+ 2, 0, 25, 8, 2, 0,247, 9, 2, 0,248, 9, 2, 0,187, 3, 2, 0,188, 3, 2, 0,249, 9, 2, 0,250, 9, 2, 0,251, 9,
+ 2, 0,252, 9, 7, 0,253, 9, 7, 0,254, 9, 7, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10,
+ 7, 0, 4, 10, 7, 0, 31, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 37, 8, 7, 0, 5, 10, 7, 0, 6, 10, 7, 0, 7, 10,
+ 4, 0, 32, 8, 4, 0, 30, 8, 4, 0, 8, 10, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8, 7, 0, 9, 10, 7, 0, 10, 10,
+ 7, 0, 11, 10, 7, 0, 12, 10, 7, 0, 13, 10, 7, 0, 57, 0, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10,
+ 7, 0,128, 3, 7, 0,106, 0, 7, 0, 18, 10, 7, 0, 19, 10, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10,
+ 7, 0, 24, 10, 4, 0, 25, 10, 4, 0, 26, 10, 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10,
+ 7, 0,210, 0, 7, 0, 32, 10, 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10,
+ 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, 7, 0, 41, 10, 7, 0, 42, 10, 7, 0, 43, 10,
+ 7, 0, 44, 10, 7, 0, 45, 10, 4, 0, 46, 10, 4, 0, 47, 10, 67, 0,160, 3, 12, 0, 48, 10, 67, 0, 49, 10, 32, 0, 50, 10,
+ 32, 0, 51, 10, 36, 0, 80, 0,164, 0, 61, 1,164, 0, 52, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,144, 1, 53, 10,
+143, 1, 54, 10,140, 1,219, 8,171, 0,238, 3, 9, 0,239, 3,146, 1, 55, 10,146, 1, 56, 10, 12, 0, 57, 10, 12, 0, 58, 10,
+133, 0, 59, 10,141, 0, 60, 10,141, 0, 61, 10, 32, 0, 62, 10, 32, 0, 63, 10, 32, 0, 38, 0, 12, 0, 23, 9, 0, 0, 20, 0,
+ 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 64, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 32, 8, 4, 0, 65, 10,
+ 4, 0, 66, 10, 4, 0, 67, 10, 2, 0,247, 0, 2, 0, 68, 10, 2, 0, 69, 10, 2, 0, 70, 10, 0, 0, 71, 10, 2, 0, 72, 10,
+ 2, 0, 73, 10, 2, 0, 74, 10, 9, 0, 75, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 76, 10,147, 1, 77, 10,148, 1, 78, 10,
+ 7, 0, 79, 10,135, 0, 35, 0,149, 1,174, 8, 7, 0, 25, 4, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0,119, 4, 7, 0, 82, 10,
+ 7, 0,138, 3, 7, 0,128, 3, 7, 0, 83, 10, 7, 0, 84, 2, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 87, 10,
+ 7, 0, 88, 10, 7, 0, 89, 10, 7, 0, 26, 4, 7, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 27, 4, 7, 0, 23, 4,
+ 7, 0, 24, 4, 7, 0, 93, 10, 4, 0, 94, 10, 4, 0, 90, 0, 4, 0, 95, 10, 4, 0, 96, 10, 2, 0, 97, 10, 2, 0, 98, 10,
+ 2, 0, 99, 10, 2, 0,100, 10, 2, 0,101, 10, 2, 0,102, 10,169, 0, 56, 4,136, 0, 8, 0,149, 1,103, 10, 7, 0,104, 10,
+ 7, 0,105, 10, 7, 0,242, 1, 7, 0,106, 10, 4, 0, 90, 0, 2, 0,107, 10, 2, 0,108, 10,150, 1, 4, 0, 7, 0, 5, 0,
+ 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,109, 10,151, 1, 6, 0,151, 1, 0, 0,151, 1, 1, 0,150, 1,211, 8, 4, 0,253, 0,
+ 2, 0,110, 10, 2, 0, 19, 0,152, 1, 5, 0,152, 1, 0, 0,152, 1, 1, 0, 12, 0,111, 10, 4, 0,112, 10, 4, 0, 19, 0,
+153, 1, 9, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,124, 0,152, 1,113, 10, 4, 0, 19, 0, 2, 0,110, 10, 2, 0,114, 10,
+ 7, 0, 91, 0, 0, 0,115, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0,250, 4, 4, 0, 19, 0, 2, 0,116, 10, 2, 0,117, 10,
+ 9, 0,118, 10,154, 1, 7, 0,154, 1, 0, 0,154, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,119, 10,
+ 0, 0,120, 10,155, 1, 5, 0, 12, 0,121, 10, 4, 0,122, 10, 4, 0,123, 10, 4, 0, 19, 0, 4, 0, 37, 0,156, 1, 18, 0,
+ 27, 0, 31, 0,157, 1,124, 10,157, 1,125, 10, 12, 0,126, 10, 4, 0,127, 10, 2, 0,128, 10, 2, 0, 37, 0, 12, 0,129, 10,
+ 12, 0,130, 10,155, 1,131, 10, 12, 0,132, 10, 12, 0,133, 10, 12, 0,134, 10,158, 1,135, 10, 4, 0,136, 10, 4, 0, 70, 0,
+ 12, 0,137, 10,210, 0,138, 10,157, 1, 30, 0,157, 1, 0, 0,157, 1, 1, 0, 9, 0,139, 10, 4, 0,136, 7, 4, 0, 37, 0,
+215, 0, 45, 6,215, 0,140, 10, 0, 0,141, 10, 2, 0,142, 10, 2, 0,143, 10, 2, 0,157, 7, 2, 0,158, 7, 2, 0,144, 10,
+ 2, 0,145, 10, 2, 0,177, 3, 2, 0,161, 6, 2, 0,146, 10, 2, 0,147, 10, 4, 0,238, 1,159, 1,148, 10,160, 1,149, 10,
+161, 1,150, 10, 4, 0,151, 10, 4, 0,152, 10, 9, 0,153, 10, 12, 0,130, 10, 12, 0,177, 7, 12, 0,154, 10, 12, 0,155, 10,
+ 12, 0,156, 10,162, 1, 16, 0,162, 1, 0, 0,162, 1, 1, 0, 0, 0,157, 10, 26, 0, 30, 0, 2, 0,158, 10, 2, 0, 17, 0,
+ 2, 0, 15, 0, 2, 0,159, 10, 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0, 19, 0, 2, 0,164, 10,
+ 2, 0, 70, 2,163, 1,165, 10,164, 1, 10, 0,164, 1, 0, 0,164, 1, 1, 0, 12, 0,166, 10, 0, 0,157, 10, 2, 0,167, 10,
+ 2, 0,168, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,169, 10, 9, 0,170, 10,158, 1, 7, 0,158, 1, 0, 0,158, 1, 1, 0,
+ 0, 0,157, 10, 0, 0,171, 10, 12, 0, 94, 7, 4, 0,172, 10, 4, 0, 19, 0,223, 0, 12, 0,223, 0, 0, 0,223, 0, 1, 0,
+ 0, 0,157, 10, 26, 0, 30, 0,165, 1,151, 7, 9, 0,173, 10,163, 1,165, 10,155, 1,174, 10, 12, 0,175, 10,223, 0,176, 10,
2, 0, 19, 0, 2, 0,136, 1,159, 1, 23, 0,159, 1, 0, 0,159, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 5, 0,
- 2, 0, 6, 0, 2, 0,172, 10, 2, 0,173, 10, 2, 0,174, 10, 2, 0,175, 10, 0, 0,176, 10, 0, 0, 37, 0, 2, 0,154, 10,
- 2, 0,155, 10, 2, 0,156, 10, 2, 0,157, 10, 2, 0,158, 10, 2, 0, 43, 0, 0, 0,177, 10, 2, 0,178, 10, 2, 0,179, 10,
- 4, 0, 70, 0, 9, 0,168, 10,166, 1, 8, 0,166, 1, 0, 0,166, 1, 1, 0, 9, 0, 2, 0, 9, 0,180, 10, 0, 0,233, 3,
- 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,181, 10,167, 1, 5, 0, 7, 0,182, 10, 4, 0,183, 10, 4, 0,184, 10, 4, 0, 69, 1,
- 4, 0, 19, 0,168, 1, 6, 0, 7, 0,185, 10, 7, 0,186, 10, 7, 0,187, 10, 7, 0,188, 10, 4, 0, 17, 0, 4, 0, 19, 0,
-169, 1, 5, 0, 7, 0,127, 8, 7, 0,128, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,170, 1, 5, 0,169, 1, 2, 0,
- 4, 0, 54, 0, 7, 0,189, 10, 7, 0,127, 8, 7, 0,128, 8,171, 1, 4, 0, 2, 0,190, 10, 2, 0,191, 10, 2, 0,192, 10,
- 2, 0,193, 10,172, 1, 2, 0, 42, 0,131, 6, 26, 0,176, 8,173, 1, 3, 0, 24, 0,194, 10, 4, 0, 19, 0, 4, 0, 37, 0,
-174, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,195, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,196, 10,175, 1, 9, 0,
-175, 1, 0, 0,175, 1, 1, 0, 27, 0,134, 6, 0, 0,197, 10, 4, 0,198, 10, 4, 0,199, 10, 4, 0, 90, 0, 4, 0, 37, 0,
- 0, 0,233, 3,176, 1, 6, 0, 12, 0, 18, 9, 0, 0,200, 10, 7, 0, 61, 0, 7, 0,181, 10, 4, 0, 17, 0, 4, 0, 19, 0,
-177, 1, 3, 0, 7, 0,201, 10, 4, 0, 19, 0, 4, 0, 37, 0,178, 1, 15, 0,178, 1, 0, 0,178, 1, 1, 0, 78, 1, 4, 9,
-176, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,177, 1,202, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1,
- 4, 0,198, 10, 0, 0,197, 10, 4, 0,203, 10, 7, 0,204, 10,179, 1, 2, 0, 0, 0,205, 10, 0, 0,206, 10,180, 1, 4, 0,
-180, 1, 0, 0,180, 1, 1, 0,160, 0, 50, 3, 12, 0,207, 10,181, 1, 24, 0,181, 1, 0, 0,181, 1, 1, 0, 12, 0,208, 10,
-160, 0,101, 8,180, 1,209, 10, 12, 0,210, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,181, 10, 7, 0,211, 10, 7, 0, 88, 0,
- 7, 0, 89, 0, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0,236, 2, 7, 0, 70, 9, 7, 0,103, 8, 7, 0, 71, 9, 2, 0,212, 10,
- 2, 0,213, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,182, 1, 6, 0,182, 1, 0, 0,182, 1, 1, 0,
- 12, 0,208, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,183, 1, 10, 0,183, 1, 0, 0,183, 1, 1, 0, 27, 0,134, 6,
- 0, 0,214, 10, 4, 0,199, 10, 4, 0,215, 10, 0, 0,197, 10, 4, 0,198, 10, 2, 0, 19, 0, 2, 0,216, 10,184, 1, 7, 0,
-184, 1, 0, 0,184, 1, 1, 0, 12, 0,217, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,218, 10, 4, 0,219, 10,185, 1, 5, 0,
-185, 1, 0, 0,185, 1, 1, 0, 0, 0,197, 10, 4, 0,198, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,220, 10,
-180, 1,209, 10, 12, 0,221, 10,181, 1,222, 10, 12, 0,223, 10, 12, 0,224, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,225, 10,
- 2, 0,226, 10, 7, 0,227, 10,186, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,187, 1, 5, 0,187, 1, 0, 0,187, 1, 1, 0,
- 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,188, 1, 6, 0,187, 1,228, 10, 32, 0, 45, 0, 4, 0,229, 10, 7, 0,230, 10,
- 4, 0,231, 10, 4, 0,249, 8,189, 1, 3, 0,187, 1,228, 10, 4, 0,229, 10, 7, 0,232, 10,190, 1, 8, 0,187, 1,228, 10,
- 32, 0, 45, 0, 7, 0, 64, 1, 7, 0,233, 10, 7, 0, 17, 3, 7, 0,170, 8, 4, 0,229, 10, 4, 0,234, 10,191, 1, 5, 0,
-187, 1,228, 10, 7, 0,235, 10, 7, 0,243, 7, 7, 0,242, 2, 7, 0, 57, 0,192, 1, 3, 0,187, 1,228, 10, 7, 0,170, 8,
- 7, 0,236, 10,139, 1, 4, 0, 7, 0,237, 10, 7, 0, 16, 10, 2, 0,238, 10, 2, 0, 69, 1,193, 1, 14, 0,193, 1, 0, 0,
-193, 1, 1, 0, 12, 0,239, 10, 12, 0,240, 10, 12, 0,241, 10, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,242, 10,
- 7, 0,243, 10, 4, 0,231, 10, 4, 0,249, 8, 7, 0,242, 3, 7, 0,244, 2,145, 1, 23, 0, 4, 0,229, 10, 4, 0,244, 10,
- 7, 0,245, 10, 7, 0, 57, 0, 7, 0,246, 10, 7, 0,240, 2, 7, 0,237, 10, 7, 0,247, 10, 7, 0,221, 2, 7, 0,248, 10,
- 7, 0,116, 4, 7, 0,249, 10, 7, 0,250, 10, 7, 0,251, 10, 7, 0,252, 10, 7, 0,253, 10, 7, 0,254, 10, 7, 0,255, 10,
- 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 7, 0, 3, 11, 12, 0, 4, 11,121, 0, 34, 0,120, 0, 5, 11,194, 1, 6, 11,
- 67, 0, 7, 11, 67, 0, 45, 10, 67, 0, 8, 11,195, 1, 9, 11, 48, 0,165, 0, 48, 0, 10, 11, 48, 0, 11, 11, 7, 0, 12, 11,
- 7, 0, 13, 11, 7, 0, 14, 11, 7, 0, 15, 11, 7, 0, 16, 11, 7, 0, 5, 9, 7, 0, 17, 11, 7, 0,170, 1, 7, 0, 18, 11,
- 4, 0, 19, 11, 4, 0, 20, 11, 4, 0, 21, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 22, 11, 2, 0, 23, 11, 2, 0, 24, 11,
- 4, 0, 25, 11, 7, 0,221, 2, 4, 0, 26, 11, 7, 0, 27, 11, 4, 0, 28, 11,137, 0, 29, 11, 12, 0, 30, 11,169, 0, 56, 4,
-122, 0, 11, 0,120, 0, 5, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 5, 9, 7, 0, 31, 11, 7, 0, 32, 11, 2, 0, 33, 11,
- 2, 0, 34, 11, 2, 0, 35, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 5, 11,139, 0, 14, 3,141, 0, 16, 3,
- 7, 0,206, 8, 7, 0, 36, 11, 7, 0, 37, 11, 7, 0, 66, 1, 7, 0, 38, 11, 4, 0, 27, 9, 4, 0, 12, 3, 2, 0, 17, 0,
+ 2, 0, 6, 0, 2, 0,177, 10, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 0, 0,181, 10, 0, 0, 37, 0, 2, 0,159, 10,
+ 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0, 43, 0, 0, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10,
+ 4, 0, 70, 0, 9, 0,173, 10,166, 1, 8, 0,166, 1, 0, 0,166, 1, 1, 0, 9, 0, 2, 0, 9, 0,185, 10, 0, 0,233, 3,
+ 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,186, 10,167, 1, 5, 0, 7, 0,187, 10, 4, 0,188, 10, 4, 0,189, 10, 4, 0, 69, 1,
+ 4, 0, 19, 0,168, 1, 6, 0, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, 4, 0, 17, 0, 4, 0, 19, 0,
+169, 1, 5, 0, 7, 0,130, 8, 7, 0,131, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,170, 1, 5, 0,169, 1, 2, 0,
+ 4, 0, 54, 0, 7, 0,194, 10, 7, 0,130, 8, 7, 0,131, 8,171, 1, 4, 0, 2, 0,195, 10, 2, 0,196, 10, 2, 0,197, 10,
+ 2, 0,198, 10,172, 1, 2, 0, 42, 0,132, 6, 26, 0,179, 8,173, 1, 3, 0, 24, 0,199, 10, 4, 0, 19, 0, 4, 0, 37, 0,
+174, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,200, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,201, 10,175, 1, 9, 0,
+175, 1, 0, 0,175, 1, 1, 0, 27, 0,135, 6, 0, 0,202, 10, 4, 0,203, 10, 4, 0,204, 10, 4, 0, 90, 0, 4, 0, 37, 0,
+ 0, 0,233, 3,176, 1, 6, 0, 12, 0, 23, 9, 0, 0,205, 10, 7, 0, 61, 0, 7, 0,186, 10, 4, 0, 17, 0, 4, 0, 19, 0,
+177, 1, 3, 0, 7, 0,206, 10, 4, 0, 19, 0, 4, 0, 37, 0,178, 1, 15, 0,178, 1, 0, 0,178, 1, 1, 0, 78, 1, 9, 9,
+176, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,177, 1,207, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1,
+ 4, 0,203, 10, 0, 0,202, 10, 4, 0,208, 10, 7, 0,209, 10,179, 1, 2, 0, 0, 0,210, 10, 0, 0,211, 10,180, 1, 4, 0,
+180, 1, 0, 0,180, 1, 1, 0,160, 0, 50, 3, 12, 0,212, 10,181, 1, 24, 0,181, 1, 0, 0,181, 1, 1, 0, 12, 0,213, 10,
+160, 0,104, 8,180, 1,214, 10, 12, 0,215, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,186, 10, 7, 0,216, 10, 7, 0, 88, 0,
+ 7, 0, 89, 0, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0,236, 2, 7, 0, 75, 9, 7, 0,106, 8, 7, 0, 76, 9, 2, 0,217, 10,
+ 2, 0,218, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,182, 1, 6, 0,182, 1, 0, 0,182, 1, 1, 0,
+ 12, 0,213, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,183, 1, 10, 0,183, 1, 0, 0,183, 1, 1, 0, 27, 0,135, 6,
+ 0, 0,219, 10, 4, 0,204, 10, 4, 0,220, 10, 0, 0,202, 10, 4, 0,203, 10, 2, 0, 19, 0, 2, 0,221, 10,184, 1, 7, 0,
+184, 1, 0, 0,184, 1, 1, 0, 12, 0,222, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,223, 10, 4, 0,224, 10,185, 1, 5, 0,
+185, 1, 0, 0,185, 1, 1, 0, 0, 0,202, 10, 4, 0,203, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,225, 10,
+180, 1,214, 10, 12, 0,226, 10,181, 1,227, 10, 12, 0,228, 10, 12, 0,229, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,230, 10,
+ 2, 0,231, 10, 7, 0,232, 10,186, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,187, 1, 5, 0,187, 1, 0, 0,187, 1, 1, 0,
+ 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,188, 1, 6, 0,187, 1,233, 10, 32, 0, 45, 0, 4, 0,234, 10, 7, 0,235, 10,
+ 4, 0,236, 10, 4, 0,254, 8,189, 1, 3, 0,187, 1,233, 10, 4, 0,234, 10, 7, 0,237, 10,190, 1, 8, 0,187, 1,233, 10,
+ 32, 0, 45, 0, 7, 0, 64, 1, 7, 0,238, 10, 7, 0, 17, 3, 7, 0,173, 8, 4, 0,234, 10, 4, 0,239, 10,191, 1, 5, 0,
+187, 1,233, 10, 7, 0,240, 10, 7, 0,246, 7, 7, 0,242, 2, 7, 0, 57, 0,192, 1, 3, 0,187, 1,233, 10, 7, 0,173, 8,
+ 7, 0,241, 10,139, 1, 4, 0, 7, 0,242, 10, 7, 0, 20, 10, 2, 0,243, 10, 2, 0, 69, 1,193, 1, 14, 0,193, 1, 0, 0,
+193, 1, 1, 0, 12, 0,244, 10, 12, 0,245, 10, 12, 0,246, 10, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,247, 10,
+ 7, 0,248, 10, 4, 0,236, 10, 4, 0,254, 8, 7, 0,242, 3, 7, 0,244, 2,145, 1, 23, 0, 4, 0,234, 10, 4, 0,249, 10,
+ 7, 0,250, 10, 7, 0, 57, 0, 7, 0,251, 10, 7, 0,240, 2, 7, 0,242, 10, 7, 0,252, 10, 7, 0,221, 2, 7, 0,253, 10,
+ 7, 0,116, 4, 7, 0,254, 10, 7, 0,255, 10, 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 7, 0, 3, 11, 7, 0, 4, 11,
+ 7, 0, 5, 11, 7, 0, 6, 11, 7, 0, 7, 11, 7, 0, 8, 11, 12, 0, 9, 11,121, 0, 34, 0,120, 0, 10, 11,194, 1, 11, 11,
+ 67, 0, 12, 11, 67, 0, 49, 10, 67, 0, 13, 11,195, 1, 14, 11, 48, 0,165, 0, 48, 0, 15, 11, 48, 0, 16, 11, 7, 0, 17, 11,
+ 7, 0, 18, 11, 7, 0, 19, 11, 7, 0, 20, 11, 7, 0, 21, 11, 7, 0, 10, 9, 7, 0, 22, 11, 7, 0,170, 1, 7, 0, 23, 11,
+ 4, 0, 24, 11, 4, 0, 25, 11, 4, 0, 26, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 27, 11, 2, 0, 28, 11, 2, 0, 29, 11,
+ 4, 0, 30, 11, 7, 0,221, 2, 4, 0, 31, 11, 7, 0, 32, 11, 4, 0, 33, 11,137, 0, 34, 11, 12, 0, 35, 11,169, 0, 56, 4,
+122, 0, 11, 0,120, 0, 10, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 10, 9, 7, 0, 36, 11, 7, 0, 37, 11, 2, 0, 38, 11,
+ 2, 0, 39, 11, 2, 0, 40, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 10, 11,139, 0, 14, 3,141, 0, 16, 3,
+ 7, 0,211, 8, 7, 0, 41, 11, 7, 0, 42, 11, 7, 0, 66, 1, 7, 0, 43, 11, 4, 0, 32, 9, 4, 0, 12, 3, 2, 0, 17, 0,
2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0};
diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c
index 28d6e2c70c4..4e57645b791 100644
--- a/source/blender/editors/datafiles/blenderbuttons.c
+++ b/source/blender/editors/datafiles/blenderbuttons.c
@@ -1,6103 +1,6541 @@
/* DataToC output of file <blenderbuttons> */
-int datatoc_blenderbuttons_size= 195097;
+int datatoc_blenderbuttons_size= 209099;
char datatoc_blenderbuttons[]= {
-137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8,
- 6, 0, 0, 0, 64, 11, 6,158, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 10,
- 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83,
-103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,
-136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,
-131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51,
- 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,
-248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132,
- 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,
-227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,
-104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206,
- 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,
-174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97,
- 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206,
- 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128,
- 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60,
- 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245,
-224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252,
- 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226,
-223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,
-111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,
-202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,
-196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,
-112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88,
- 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,
-242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55,
- 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199,
- 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187,
-137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52,
- 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143,
- 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,
-155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10,
-157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84,
- 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104,
-247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103,
- 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88,
- 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94,
- 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63,
-164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,
-117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102,
- 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,
-170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39,
- 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167,
-238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36,
- 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209,
- 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,
-185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90,
-120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173,
- 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,174,182,
-109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,
-115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196,
-105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116,
-245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115,
-208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215,
-176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79,
-195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124,
- 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,173, 33,
-247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136,
- 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106,
- 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243,
-135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,
-148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,
-242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154,
-118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197,
-110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,
-205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45,
- 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87,
-151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47,
- 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,220,148,
-180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180,
-237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84,
-250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85,
- 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35,
- 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198,
-226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,
-154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,
-105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186,
- 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234,
- 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,121,241,
- 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,173,188,
- 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,133,131,
-207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207,
- 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192,
-235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127,
- 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 32, 99, 72, 82, 77,
- 0, 0,122, 37, 0, 0,128,131, 0, 0,249,255, 0, 0,128,233, 0, 0,117, 48, 0, 0,234, 96, 0, 0, 58,152, 0, 0, 23,111,
-146, 95,197, 70, 0, 2,239, 68, 73, 68, 65, 84,120,218,236, 93,119,116, 20, 85, 31,189,111,118,182,111,178,233, 61,180,208, 33,
-128, 52,165,247, 34, 29,145, 34,124, 40, 34, 42, 29, 69, 65, 80, 68,165, 5, 16,233, 82, 20,149,162,116, 20, 68,165, 41,189, 10,
- 72,239,157, 16,210,251,102,235,204,188,239,143,236,172,155,101,147,221, 64, 64,196,185,231,204,217,157,118,231,245,119,223,239,
- 53, 66, 41,133, 4, 9, 18, 36, 72,144, 32, 65,130,132,146, 3,145, 4,150, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 41,182,
- 34, 35,132, 22,227,217, 54,222,114,218,143,230, 79, 59,231, 99,244, 59, 45, 65,206,230,118,206, 79,255, 37,238,108,254,180,114,
-138,254,245,150,183, 56,156,222,166,169, 98,186,147,150,180, 59, 31, 23,103, 73,229, 35, 55,238,164,143, 33,222, 63,253,151,184,
-179,249,211,198,233,154,126,188,225, 45, 46,167, 55,105,234, 33,220, 73, 75,218,157,143,139,243, 81,243, 81, 17,238,164,143,154,
-150, 10,137,251, 79,241, 31, 0,251,184,196, 85,113, 64, 41, 37, 78,252,228,105,229,116, 14, 7,145,191, 36,221, 90,130,216, 83,
-210,156, 46,225, 89, 82,248,148, 82, 74, 8, 33,123, 1, 52, 47, 73,191,151, 68,188,187,248,181, 68,120,139, 43,174,138,203, 89,
- 82,233,254,113,115,150, 84, 94,114,229, 44,137,116,239, 46,222, 31, 99, 28,149,148, 59, 75, 36, 47, 61,142, 52,239, 38,253, 60,
- 50,175, 43,103, 73,228, 37, 87,206,146, 72,247, 79,130,179, 36,242,146, 59,206,146, 72,247,133,197,189,100,193,122, 50, 66,192,
- 53, 99,183,120,154,133,208,227, 18,153,222, 90, 92,158, 6,206, 18,142,163, 79,237,156, 37,217,154,105, 81, 82,113,244, 56,210,
-187, 51,103, 73,241,187,242,148, 68, 60,185,227,124, 84,247, 22,226,206, 18,247,251,163,166,251, 39,197, 89,194,113, 84, 34,121,
-201,133,179, 69, 9, 55, 2, 90, 56,157,127, 90,146,156, 37,149,151,220,184,243,145,227,201, 29,231,163,186,183, 16,119,150,184,
-223, 75,162, 14,121, 92,188,207,156, 5,235,113,138,171,199, 85,153,149, 36,247,227,176,226, 60, 46, 75, 91, 73, 89,113,220,240,
-238, 45, 65,186, 61, 37,237, 78,187,251,200,227,178,182, 62,237,144,242,146,148,151,158,182,188,228, 46,221, 80, 74, 63, 37,132,
-124,242,180, 53,158,157, 57, 75, 74, 8,185,241,251, 35,229, 37,215,119, 75, 34, 47,121,224, 36,143,195,255, 37,157,159,158, 70,
- 48, 79,139, 67,188, 29,223,243, 16,124, 45,158,230, 8,120, 76,238,108,241,111,240,251,227,112, 39, 33,228,211,199,228,247,127,
- 75,152, 74,121, 73,202, 75, 79, 93, 94,114, 73,147, 45, 74,202, 50, 84,210, 13, 41, 87,206,146,248,134, 51, 71, 73,165,209,199,
-237,247,146,204, 75,143, 35,238,255, 45, 40,182, 5,235,113,119,155, 60,205,156,143,131,251, 49,249,125,239,227,104, 29, 60,134,
-113, 93, 37,238, 78, 74,233,167, 40,193, 46, 71,209,207, 37,233,214,199,217, 77,248, 56,210,230,227, 76,239, 37, 57,206,227, 49,
-249,253,223, 18,239, 37,238,206,146,202, 75,110,226,252,145,221,234, 46,252, 74,186, 11,187, 36,211,230,227,228, 44, 9,238,199,
-225,206,199, 21,247,255, 38, 48,144, 32, 65,130, 4, 9, 18, 36, 72,144, 80,162,144,214,193,146, 32, 65,130, 4, 9, 18, 36, 72,
-120, 82, 2, 43, 42, 42,106,171, 86,171,173, 80,216,139, 6,131,225,126, 66, 66, 66, 75, 41, 8, 37, 72,144,224,177,160, 33,132,
-193,223, 22,115, 1, 0,165, 82,235, 78,130, 4, 9,207, 48, 10, 29,131,165, 82,169, 98, 46, 94,188, 88, 73, 16, 4,240, 60, 15,
-142,227, 28,191, 22,139, 5,205,154, 53, 43,246,248,173,240,240,240,125, 50,153,172,108,113,222,225,121,254, 78, 98, 98, 98,147,
- 34, 10,238, 67, 0, 98, 8, 33,206,215,138,252, 5,144, 96,181, 90,235, 20,197, 73, 8,137,113,229, 43,132, 75,252, 95, 36,167,
-191,191,255,113,150,101,163,221,113, 21,246, 95, 16,132, 27,201,201,201,141,164,100,250,100, 16, 30, 30,190,143,101,217, 98,167,
-207,251,247,239, 23,154, 62, 35, 35, 35,255, 98, 24, 38,178, 24,148, 50, 65, 16, 46,223,191,127,191, 73, 97, 2, 68, 76,243, 30,
- 4, 77,129,255,132,144,120,142,227,234,121,202, 71, 69,113,185, 73,163, 69,114, 58,139, 43,150,101,167,135,134,134, 14,201,203,
-203, 51, 1,160, 50,153,140, 6, 5, 5,137,110, 3, 0,112, 28,151,146,145,145, 81, 67, 74,137, 18, 36, 72,120,166, 5,150, 32,
- 8,140,217,108,198,149, 43, 87, 80, 72, 57,207, 63,196,247, 42,157,248,125,103,168,111,104, 24, 56,171, 21,186,224, 16, 7,119,
-210,133,115,224,108, 86,112, 22, 11, 74,215,111, 32, 86, 94,168, 94,189,186,204, 3,103,244,140, 25, 51, 66,125,125,125, 97, 50,
-153, 96, 50,153, 96, 54,155, 97, 50,153, 96,177, 88, 96,177, 88, 96,181, 90, 97,181, 90,193,113, 28,204,102, 51,118,237,218,229,
-201,237,209, 83,167, 78, 13,213,235,245, 14, 62,241, 16, 57, 69, 94,155,205, 6,147,201,132, 63,254,248,163, 72, 78,150,101,163,
- 19, 18, 18, 66, 21, 10, 5, 40,165, 16, 4, 1,148,210, 2,135, 43,202,151, 47,111,149,146,232, 19, 69,165,169,171,127, 9,245,
-211,168,192, 9, 2, 58,215, 42,239,184,113, 99,217,122, 80,142,135,192,113,168, 56,188, 63,144,111,130, 65,181,106,213,138, 76,
-159,148,210, 50, 83, 87,255,226,239, 45,103,106,106,170,177,106,213,170, 9,200, 31, 8, 90,152,133, 39,218,104, 52,134,138,110,
-112, 21, 66, 12,195, 20, 56,182,111,223,142,206,157, 59,123,242,123,244,187,239,190, 27,106,179,217, 96,177, 88, 96, 54,155, 97,
-179,217,192,113,156,227,224,121,222,113, 88, 44, 22, 28, 61,122,212, 91,203,213,140,182,109,219, 14,252,229,151, 95,116, 63,253,
-244,147,174,108,217,178, 80, 40, 20,144,201,100,144,201,100, 96, 24, 6, 44,203,226,133, 23, 94, 32, 82, 18,148, 32, 65,194, 51,
- 47,176,204,102,243,205,218,181,107, 83,251,255, 40,149, 74,165,112, 41, 56, 35, 43, 85,170,116,217,245, 61, 79, 93,135,190,161,
- 97, 24, 95, 42, 16, 0, 48,241,118,154,163, 98,152,217,232, 57,199, 51,147,238,101, 1, 0, 52, 26, 13,136,115,179,185, 16,232,
-116, 58,180,109,219, 22, 74,165, 18,245,234,213,131, 92, 46,119,123, 40, 20, 10,200,229,114,111, 42, 5,248,248,248,224,179,207,
- 62, 19,197, 17,116,106, 21, 70, 52,170, 7, 53, 40,190, 58,119, 21, 22,129,130,101, 89,199,225, 13,167, 66,161,192,217,179,103,
-193,178, 44,100, 50,153,227, 87,252,191,101,203, 22,244,236,217, 19, 44,203, 66,163,209, 0,255,161,217, 22, 79, 11,252, 52, 42,
-188,182,248, 71, 0,192,221, 57,195, 29,113,119,116,232, 68,199, 51,101,222,234, 13, 66, 8,228,114, 57, 24,134, 41, 49,206,244,
-244,116,227, 43,175,188,114,192,215,215,119,123,118,118, 54, 60, 8, 55,220,189,123, 23, 44,203, 22,154,222, 25,134,193,236,217,
-179,113,237,218, 53,175,252,110, 50,153,240,245,215, 95,131,231,249, 2,188,226,127,215,107, 94,138,171, 41,237,218,181,235,255,
-203, 47,191, 4, 16, 66,176,112,225, 66,200,229,114,116,234,212, 9, 65, 65, 65,216,177, 99, 7, 20, 10, 5,198,142, 29, 43, 37,
- 62, 9, 18, 36, 20, 5, 57,128,231, 0,132,216, 13, 60, 57, 0,252,157,238,167,216,127, 67,156,206,255,116,195, 83,223,254,140,
-120, 95, 60,183, 0, 80,186,185,158, 6, 64, 99, 63,204, 0, 14, 1,136,117,250,142,248, 30, 92,191,203,218, 11,194,230, 0,246,
- 0,104, 33, 46,126,119,255,254,253, 14, 78,150,148,139,151, 47, 95,174, 34,106, 29,123, 87,161,130,227,184, 74, 98,183,161,104,
- 29,106,211,166, 77,145, 45,122,206,106,125, 64,120,184,211, 80,238,186, 37, 10, 19, 46, 86,171, 21,189,123,247,206,143,129, 66,
- 42, 27,231,195, 11,205, 6,139,197, 2,150,101, 81,185, 84, 8, 62,110, 95, 27,207, 83, 27, 12,185, 4, 92,150, 1,221,124,108,
-184, 88,173, 14,150,222, 73,193,237,236, 92,176, 44,235, 21,167, 32, 8,133,138, 43,153, 76,134,197,139, 23,227,149, 87, 94,129,
- 76, 38,243,138, 79, 66,201,131, 19, 4,183,233,176,176, 52,235, 77, 60,121,195,153,158,158,110,236,220,185,243, 17,149, 74,181,
- 34, 44, 44, 44, 33, 62, 62,222,163,192,114, 21, 61,174,141,137, 47,190,248, 2,243,231,207, 71,203,150, 45,189,114,167,217,108,
- 6, 33, 4, 75,151, 46,125,224,222,228,201,147, 31,248, 94, 81,156,246,134, 17, 19, 25, 25, 57,116,219,182,109,122,241,217,224,
-224, 96,200,229,114,212,168, 81, 3,190,190,190, 56,112,224, 0,120,158,247, 58, 95, 74,144, 32,225,217,133, 59, 45,226,132,102,
-227,199,143,175, 55,125,250,244,105, 13, 27, 54, 92,115,232,208,161,213,132,144,173, 78,101, 98,103, 59,199, 86,167,243,250, 46,
- 34, 75, 14, 32,132, 16,178, 85,124,222,249,220,233,122, 27, 0, 74,241,124,252,248,241,177,211,167, 79,159, 54,110,220,184, 15,
-227,226,226, 20,227,199,143,175, 57,125,250,244,105,226,119,220,185,195,217,130, 85,228, 42,192, 98,119,225,165, 75,151,224,105,
- 92,170,167,245, 51,116,193, 33, 14,203,213,164, 50, 65,142,235,159,197,103, 58, 42,174, 5,117, 43, 64,167,211,161,253,164,207,
-189,178, 12, 89, 44, 22, 36, 39, 39, 59,172, 10,158, 14,111, 57,181, 26, 53,118,189, 91, 3,119,211,148,248,244,112, 58,126, 57,
-117, 13,114,185, 28, 47, 86,171,129, 14, 10, 95, 76, 40,163,196,187, 87,111,193,230,229, 88, 93, 74,169, 91, 97, 37,254, 23,187,
- 74, 36,129,245,207,161,115,173,242, 14, 43,211, 81,223,214,142,235, 61, 13,103, 29,113,242,222,226,153, 0,128,150,117, 94,128,
- 55,227,180, 61,113,166,165,165, 25,155,180,110,177,151, 55, 90,150,247,239,223,255,230,238,221,187, 53, 94, 53,231,220, 8, 44,
-209, 74, 43,138, 43,150,101, 97,177, 88,188,242,187,197, 98, 41, 52,127, 40, 20,138, 98, 91,176, 0,192, 96, 48, 88, 54,111,222,
-140, 5, 11, 22, 32, 40, 40, 8,237,218,181, 67, 68, 68, 4,214,175, 95, 15, 74, 41,134, 15, 31, 14,141, 70, 35, 90,171,165, 4,
- 40, 65,194,127, 27, 69,105, 17,213,244,233,211,167, 57, 11, 24, 87, 65,227, 44,156, 92, 68,148,179, 72,139,245, 80,255,111,117,
- 21, 77,226,119, 9, 33, 91,227,226,226, 58,123,112, 71,138,171,192, 42,114,153,125,179,217,124,179, 86,173, 90, 94,169,136,188,
-188,188, 68, 79, 34,195, 93, 43,222,217, 42,224,227,227, 3,157,222, 7,140,151,229,173,205,102,115, 8,148,157, 59,119, 66,163,
-209,160, 99,199,142,143,100,193,178, 90,173, 80, 42,228, 96,130,195,240,218,156,221, 72,203, 49, 58, 42,150, 61, 55,110,226,100,
- 82, 50,222,109,216, 26, 58, 77, 50,114, 45, 22,175, 44,109,130, 32, 60, 32,174, 88,150, 69,239,222,189, 29,214, 3,231,113, 41,
-144,186, 8,255,201,150,148,219,115,231,235,130,139,101,234, 97, 56,211,210,210,140,157, 59,119, 62,194, 27, 45,203,239,221,187,
-119, 4,128,250,249,231,159, 47,182,192, 18,133,149, 92, 46,199,236,217,179, 49,127,254,124,199,125,111, 5, 22,199,113, 5,132,
-211,213,171, 87, 11,124,203, 85,208, 21,213, 61, 74,243, 75, 73, 1,128, 16, 19, 19,227,120, 39, 60, 60, 28,254,254,254, 16, 4,
- 1,130, 32, 64,173, 86, 67,163,209, 64,161, 80, 72,137, 78,130, 4, 9, 69,105, 17,227,184,113,227, 62, 36,132,108,181, 91,146,
-206, 21, 33,164,220,161,190,139, 72, 75, 41,164,236,234,236, 78,100, 57,255, 23, 49,126,252,248, 88, 55,238,248,243, 1,129,229,
-164, 26, 31,128,115,119, 97, 73, 85, 94, 69, 85, 96, 62,254,122,104,116, 58,200,100,140,199,253,149,196, 46, 66,177,192, 31, 50,
-100, 72,145,227, 82,188, 29, 47,101,181, 90,193,176, 50,220, 15, 47, 7,158,217,239,120, 87, 60, 24, 86,142,219,225, 85, 32,187,
-244, 23,228, 94, 86,180,174, 22,172,225,195,135,227,235,175,191, 6,195, 48,142, 48, 97, 89, 22, 21, 43, 86,196,205,155, 55,165,
-156,246,148,136,171,194,174,243,188,224,181,213,197,221,115,105,105,105,198, 94,189,122,237,205,202,202, 90, 94,189,122,245,171,
-200, 95,198,128,241,150,143,101,217, 2,194, 74, 20, 87,243,230,205, 43, 32,134,108, 54,155, 87, 13, 0,155,205,246,128,208,153,
- 53,107, 86,129, 95, 0,104,212,168,145, 87,150, 96, 0,148, 97, 24,170, 80, 40,208,182,109, 91,212,172, 89, 19, 63,253,244, 19,
- 4, 65,192,176, 97,195,160,209,104, 48,119,238, 92,112, 28,135, 25, 51,102, 72, 22, 44, 9, 18, 36, 20,165, 69,204,113,113,113,
-231,226,226,226, 28,150, 36, 87, 11, 86, 33,232,100, 23, 83, 33,162, 56, 67,254, 88,170, 63,139,112, 67,231,194,132,151,243,181,
-233,211,167, 79,115,227, 14, 71,183,228, 19,223,236, 57,241,252, 89,124,222,184, 54,128,130,221,130,139, 95,168, 2,157,143, 14,
- 58, 95, 31,244,218,178, 31, 0,236,133,253, 56,175, 44, 88,162,192, 74, 75, 75, 43, 82, 92, 21,199,130,197, 40, 89,108,136,206,
- 0, 85,202,193, 90,108, 5, 4,150,140,149,227,110, 80, 57, 48,114, 5, 88,158,243,138,147, 82,250, 64,151,224,128, 1, 3, 64,
- 8,113,204,248,170, 85,171,150, 51,151, 84,227, 60,233,244,121,124, 25, 46,110, 28, 10, 0,104, 98, 48, 56,226, 98,106,173,191,
-231,109,204, 57,187,215, 97,109,156,132,247, 31,138, 51, 45, 45,205,248,124,213,216, 35,138, 64,191,229,119,238,220, 57, 2,128,
-233,211,167,143,127,173, 90,181,188,202,147,226,164, 9, 87,113,229,108,185, 18,127,109, 54,155, 87,126, 23,199, 66,121,130,216,
- 93,232, 41,205, 83, 74,105, 96, 96, 32, 24,134,129, 94,175,135,143,143,143, 99, 6,173, 90,173,134, 86,171,117,140,223,244, 82,
-176, 73,144, 32,225,191,139, 0, 81,224,216, 69, 82, 1,203, 18,165,180,179,179, 8, 42,172,171,208,110,113,218,231,225, 91,191,
-216,133,153, 91,136,150, 52,151, 50,121,171,171, 56, 99, 69,197,232,252, 27, 17, 17,241,155,143,143, 79, 57,111,125, 93,156, 69,
- 71,121,155,245, 1, 75, 22, 33, 4, 62,190, 62,208,248,232,160,241,245, 41,212,202, 85,148,192, 18, 45, 67, 98,101,179, 98,197,
- 10,248,248,248,224,245,215, 95, 47,246, 24, 44,135,192, 82, 48,216,161,250, 3, 50, 37, 91, 64, 92,177, 44, 11,153, 92,142, 68,
-159, 8, 48,114, 57, 88,206, 59,171, 88, 86, 86, 22, 88,150,197,199, 31,127,236,104,177, 59,139,171,226,248, 89,194, 99,106, 61,
-241,182, 7,172, 78,133, 89, 91, 31,150, 83,180, 92, 41, 2,253,150, 87,169, 82,197, 97,185,210,106,181,226,236, 81,143, 96, 24,
-198,173,184,114,157,241,199,178,108,126, 90,246, 48,219,209,217,130, 21, 23, 23,231,224,117,182, 92,137, 40, 78, 62, 18,221,186,
-119,239, 94,156, 60,121, 18, 67,134, 12,129, 70,163,193,252,249,243,193,113, 28, 38, 79,158, 12,141, 70, 3,165, 82, 41, 37, 62,
- 9, 18, 36,235, 85, 81,251,138,166,184,140,115, 34, 46,150,166, 20,119,194,202,185, 59,208,233,191,205, 13,175,197,165,235,208,
-245,186,248,155, 22, 23, 23,183, 91,180, 92, 57, 93, 47,224,142, 66, 45, 88, 42,149,170,220,149, 43, 87, 28,139,140, 22,245,107,
-177, 88,208,178,101, 75,175, 45, 97,226, 44, 66,150,149, 21, 16, 20, 90, 95, 31,104,245,190,208,248,248,184, 10, 13,226,169,240,
- 22, 91,192,206, 2,235,147, 79, 62, 1,203,178,248,250,235,175, 1, 0,239,191,255,190,215, 99,176, 68, 78,240, 4,241,244, 58,
-106,207,233, 9,203,247, 54, 36, 29, 60, 13,150,101, 17,218,160, 3,132,231,123, 34, 79,227, 3,150,231,188,158, 69,152,158,158,
-142,155, 55,111, 66, 38,147, 97,244,232,209, 5,214, 42,114,157,153,182,115,231, 78,201,130,245, 79,100,112,129,243, 74, 76, 21,
-199,202,232,204, 41,142,185,202,202,202, 90,126,231,206,157,163, 0,152,254,253,251,251,107,181, 90,124,243,205, 55,121, 0,148,
-235,215,175,215,120, 18, 67, 98,186,241, 36,174,228,114,121,126, 90,246,174,112, 43,208,136,240, 52,224,221,155, 52, 47,186,149,
- 16, 2,158,231,161,209,104, 10, 88,174,212,106, 53, 84, 42,149,148,240, 36, 72,144,224, 9,127, 22,227,217,250, 78, 98,233,207,
-135,228,253,243, 81, 29,204, 22, 38, 48,204,102, 51, 46, 92,184,224, 45,143,215,139,142,150,170,247, 2, 38,221,203, 2, 33, 4,
- 95, 53,170, 14,157,222, 7, 90,157, 14, 47,255,180,215, 81, 96,159,157,246, 62, 84, 58, 31, 68, 54,109,231, 85, 1, 46,118, 17,
- 58, 11,172,204,204, 76,200,229,114, 76,153, 50, 5, 12,195, 96,198,140, 25,136,138,138,194,253,251,247,177,126,253,122,175, 44,
- 88, 50, 94,134,136, 87,171, 66, 59,192, 15,250, 87,155, 33,160,237, 39,184,103, 97,113,200,164, 69, 51,211,121, 40,119,204,131,
- 69,224,189,158, 81,197,113, 28,246,238,221,235, 58,144, 29,148, 82,199, 42,249, 54,155, 13, 86,171, 21, 51,102,204,128,180,147,
-200,147, 71, 68,131,225, 8,169, 55, 24, 0,176, 37,238, 13,199,245,143,207,254,157, 62,103,127,159,191, 96,127,149,178,237,138,
-197,153,150,150,102,124,177,101,163,125, 38, 65,254, 93,141, 26, 53, 10, 88,174,212,106, 53,177,159,123, 37,170, 25,134,129, 76,
- 38,123,160, 91,176, 48,145,229,205, 24, 44,142,227, 28, 11,128, 22, 53, 94,241, 97, 44, 88,111,188,241, 6, 34, 34, 34, 28,150,
-171, 73,147, 38, 65,163,209, 96,252,248,241,176,217,108,152, 55,111,158,148,248, 36, 72,144,240, 79,136,177,199, 6,183, 37,168,
-201,100,186, 85,179,102, 77, 20,114, 47, 74,173, 86,203, 93, 10,231,200, 74,149, 42, 93,118,237, 42, 36,132,180,161,148,238,114,
- 87,152, 19, 66,224,171,247,133,218, 71, 7,173,139,213, 74,237,171,135,202,199, 7,140, 66,238,174, 34,120,128, 83, 28, 59,226,
- 44,176,196, 35, 43, 43, 11,114,185, 28, 11, 22, 44,128, 94,175,135,217,108,246,200, 41, 86, 54, 50,153, 12,121,119,115,112,113,
-218, 46, 40,213,135, 80,161,221, 43,136,144,107,160, 56,176, 9, 70,222, 86,228, 66,163,238, 56, 43, 85,170,132,137, 19, 39, 62,
-176, 60, 67, 97,136,138,138,242,232,247, 71,133,196,233,158,179,168, 89,174, 34, 4,202,187,123,206, 45,167,104,185, 50, 9,242,
-239,110,222,188, 41, 90,174,252,180, 90, 45,150, 44, 89,146, 7,128,153, 60,121,178,182, 76,153, 50, 50,111,210,146, 76, 38,195,
-156, 57,115,220,142,185,114, 39,182,138,147,143,156,223,109,222,188,185,219,133, 70,221,137, 54,119,156,162, 91,131,130,130, 28,
-150, 43,158,231, 29,179, 7,197,213,226, 11,107, 76, 72,233, 83,226,148, 56,255, 59,156,207, 26,220,214,238, 9, 9, 9, 47, 22,
-246, 66,133, 10, 21,174, 92,185,114,165,162,184,101,134,189,192, 84,152, 76,166, 74,141, 26, 53,242,104,202, 17, 4, 1, 42,149,
- 10,148, 82,180,154, 56, 29,132, 1, 24, 20,172,188, 66, 27,183,134, 76,198, 66,200,223,146,195,227, 44, 66,163,209, 88,160, 82,
-112,119,228,230,230,194,108, 54,123,189,250,182,201,100, 42,176,148, 2,161, 2,110,255,190,238,129,217,132,226,225,237,184, 28,
-181, 90, 93,160,139,167, 40,120, 90, 83, 76, 66,201, 67,156,136, 0, 0,149, 27,117,132, 32,240,160, 60, 95, 96, 59,163,170,229,
- 94,132, 64,121, 88,109,121, 48,155,205,158,204,140, 36, 53, 53,213,216,171, 87,175,189, 0,190,237,214,173,219,101,228,207, 96,
-161, 62, 62, 62, 42,185, 92, 46, 0, 72, 7, 64, 51, 50, 50,252,238,221,187, 39,152, 76,166,210,158,220,249,203, 47,191,224,194,
-133, 11,104,218,180,105,129,109,155, 68, 43,168,243,106,236,222,164, 79,177, 91,220,221, 10,238,133, 9, 56,111, 33,147,201,224,
-231,231, 7,133, 66,129, 41, 83,166, 64,161, 80, 64,171,213, 2, 0,230,205,155,231, 88, 52, 85,130, 4, 9, 18,158,121,129,229,
-169,188, 44,162,251,176,200,174, 66,142,227,226,203,148, 41, 83,172,143,241, 60,159,228, 65,176,197,175, 95,191, 94,225,108,117,
-240,244, 75, 41, 77,242, 80,201,198,111,217,178, 69,225,206,154, 81,216,198,207,158, 56,121,158,143, 47, 91,182,108,161, 22, 18,
-119,176,217,108,247,164, 36,250,228,192,243,124, 17,233,243,163,135, 77,159, 87, 43, 87,174,124,207,223,223,255,215,176,176,176,
-180,131, 7, 15, 6,213,175, 95, 63,200,249,153,250,245,235, 71,184,188,102, 65,225,251, 16,130, 16, 18,223,173, 91, 55,183,105,
- 94, 20, 75,110,210,103,188,167, 52,127,236,216, 49,133,243,251,133,241, 59,229,163,120, 47, 4,235,237,218,181,107, 51,206, 60,
-133,165,125,155,205,150, 34,165, 66, 9, 18, 36,252,103, 5,150,209,104,188, 91,179,102, 77,174,144,123,119,138,122, 55, 53, 53,
-181, 94, 73,123,192,106,181, 54,250, 55,112,166,164,164,212,147,146,219,211,141,199, 17, 71, 73, 73, 73,207,151, 52, 39,199,113,
- 37,158, 62,109, 54, 91,163,199, 17,166,105,105,105, 13,165,148, 37, 65,130, 4, 73, 96,121, 1,111,151, 99,144, 32, 65,130, 4,
- 9, 18, 36, 72,248,175,130,145,130, 64,130, 4, 9, 18, 36, 72,144, 32,161,100, 65,144,191,107,244, 3, 40,206,236, 0, 66, 72,
-155,226,126,216, 19,191,196, 41,113, 74,156, 18,167,196, 41,113, 74,156,207, 30,167, 39,238,103,102,118,162, 56, 59,234,113, 28,
- 0,218, 72,156, 18,167,196, 41,113, 74,156, 18,167,196, 41,113,254,215, 14,169,139, 80,130, 4, 9, 18, 36, 72,144, 32,161,132,
-193, 74, 65,240,207,128, 16, 34,163,148,242, 37, 72, 25, 0,160,176, 13,221, 44, 0, 50, 30,198,153, 0, 20,246, 67, 92,168,200,
- 6,192,106, 63,188, 88,106,254, 51, 38, 33, 33, 32,150,242,242,250,148, 16,185, 32,224, 84,233,210,165,254, 2, 94,180, 0,128,
- 79,120,181,106, 62, 58, 77, 27,179,213, 82, 78, 37, 87, 94,200, 52,228,238, 52, 37, 93,190, 37,165, 16, 9, 18,254,145,114,169,
- 11,128,207,236,121, 63,142, 82,186, 78, 10, 21, 9, 18, 74, 88, 96,249,250,250, 30,103, 24, 38,218,211,250, 58, 78, 25, 19, 60,
-207,199,167,167,167,215,243, 50, 35,179, 0,122,249,248,248,180,148,203,229,141, 1,192,102,179, 29,204,205,205,221, 13, 96, 61,
-165,148,123,200, 2, 66, 15,160, 55,128,126,246, 75, 63, 0, 88, 71, 41,205,126, 72,190,154,126,126,126, 27,229,114, 57, 77, 77,
- 77,109, 0, 0, 65, 65, 65, 71,108, 54, 27,201,206,206,126,153, 82,122,166,152,124,140, 66,161,152,222,180,105,211, 38,132,144,
-149,148,210,197, 37, 20,151, 42,134, 97,220, 10, 19, 65, 16,202, 62, 4,159, 2,128,223,130, 5, 11,130, 86,173, 90, 85, 59, 62,
- 62,190, 6, 0, 68, 71, 71,159,237,223,191,255, 95, 35, 70,140, 72, 3,144,101, 23, 90,133, 34, 33, 33, 32, 54, 57,241,198,144,
-164,228, 11,189, 1, 32, 60,162,198, 58,153,140, 81, 68, 69,157, 60,172, 13,238, 23, 92,185, 74,249,193,107,190, 89,160, 40, 91,
-174, 20,254, 56,116,242,185, 17,163, 62,140, 85,135, 85,254, 66, 18, 89, 79, 14,122,189,254, 56,195, 48,209, 69,229,113,119,121,
-158,231,249,248,180,180,180,122,133,113,178, 44, 27, 93, 84,121,225,238,154, 32, 8, 55, 82, 82, 82,220, 46, 25,225,231,231,119,
-152,101,217,114,222,114,137,191, 28,199,197, 23,182, 68,140,159,159,223,113,153, 76, 22, 93,148, 63,221,221, 19, 4,225, 70,114,
-114,114, 97,238,124,192,239, 37,225,206,135,225, 44,202,157, 98,121, 4, 96, 94, 80, 80,208, 11,105,105,105,255, 3,240, 97,118,
-118,118, 45,153, 76,134,192,192,192, 15, 9, 33,215,252,252,252,150,101,101,101, 29, 2, 48,138, 82, 42, 72, 57, 70,130,132, 71,
- 20, 88, 12,195, 68,223,187,119, 47, 84,167,211, 1,248,123,191, 60,113,147,103, 65, 16, 64, 41,117,252,114, 28,135,170, 85,171,
-122, 43, 50,106,232,245,250, 13,227,199,143, 47,221,171, 87, 47,165,184, 37, 76, 66, 66, 66,165,141, 27, 55,254,111,202,148, 41,
-159, 16, 66,122, 82, 74,207,122, 43, 90, 0,180, 6, 48,160,118,237,218, 61, 38, 77,154,164,104,213,170, 21,120,158,199,175,191,
-254,218,116,242,228,201, 11, 8, 33,155, 0, 44, 7,240,187,183,133, 4, 33,164, 73,120,120,248,234, 3, 7, 14, 68,220,188,121,
-147,239,213,171,215, 90, 0, 56,126,252,120, 12,207,243,164, 65,131, 6,191, 16, 66,250, 82, 74, 15, 20, 35,204,187,141, 24, 49,
-162,231,240,225,195, 67, 94,127,253,245, 87, 1, 44,182,127, 75,220, 69,188,184, 27, 16, 58, 44, 87,148, 82, 69, 17,207,133, 23,
-195,146,165,187,121,243,102, 64,163, 70,141,134, 38, 39, 39,191,235,204,155,148,148,132, 19, 39, 78, 88,167, 77,155, 54,231,208,
-161, 67,139,202,149, 43,151, 1,192, 80, 24, 17,229,229,245,147,146, 47,244,110,214,112,129, 31, 0,172,223, 50,244,149, 99,127,
-165,248,110,221,182,244,127, 74,181,194,188,234,171, 57,138,138, 21,202, 98,207,241,171, 56,122, 33,157,212,104,210,153,205,218,
-186,178, 45,128,165, 82,246,124, 50,144,201,100, 81,241,241,241,161, 90,173,214,237,134,238, 46,227, 46,196,133, 75, 81,169, 82,
-165,194, 11, 22,150,141,190,119,239, 94,168, 90,173,118,148, 29,174,101,134, 88,174, 56,210, 10,165,168, 92,185,178,181,136, 50,
-169,204,157, 59,119, 66,181, 90,173,131,199,157,251, 92,133, 70,229,202,149,139,242,123, 1,119,122,195, 73, 41, 69,197,138, 21,
-121, 79,126, 23,119,172,240,228,111,145,179, 92,185,114,180, 56,156,222,184,179,124,249,242, 86, 15,209, 63,239,242,229,203,195,
- 75,149, 42,133,138, 21, 43, 30,122,225,133, 23,244, 58,157, 14,219,182,109, 67,181,106,213, 98,245,122,253,209,245,235,215,203,
-199,142, 29,251,220,119,223,125, 7, 0, 35,164, 28, 35, 65,194, 35, 10, 44, 66, 8,116, 58, 29,214,174, 93, 91,232,182, 25,206,
-255, 75,151, 46,237,213, 7, 9, 33,245,202,149, 43,183,247,192,129, 3,154,136,136,191, 23,176,182, 88, 44, 8, 8, 8,192,176,
- 97,195,148, 93,186,116,169,216,174, 93,187, 35,132,144,230,148,210,227, 30,248,122,132,132,132, 44,252,248,227,143,195,250,244,
-233,131,160,160, 2,139,100,163, 87,175, 94,120,249,229,151, 21,151, 47, 95,126,101,197,138, 21,175, 44, 94,188, 56,145, 16, 50,
-130, 82,186,169, 40, 94,173, 86,219,173, 66,133, 10, 75, 14, 28, 56, 16, 26, 26, 26,138,152,152, 24,102,236,216,177, 21, 43, 85,
-170,164,137,142,142,102,238,223,191,143,159,126,250, 41,170,111,223,190, 27,148, 74,229, 96,139,197,178,217, 11,191, 43, 3, 3,
- 3,199,188,253,246,219, 65,217,217,217,220,201,147, 39,175,138,215, 85, 42,213,196, 6, 13, 26,212, 33,132,172,165,148, 46,127,
- 24,203,149,221, 74,231,186,231,136, 77,188,239,165, 37, 75,121,234,212,169,192,134, 13, 27,110, 50,155,205,117,134, 12, 25,114,
-103,218,180,105, 26,189, 94,175, 7, 64,178,179,179, 51, 62,251,236, 51,203,220,185,115, 63,168, 86,173, 90,235,195,135, 15,247,
-120,238,185,231,108,118,241,246,160,192, 34,196,225,158,187,247, 82,176,247,144,160,156, 56,254,253,232,153, 83,203,221,254,243,
-252, 93,129,213,232,241,243,190,115, 72, 74,203,197,111,135,207, 35, 60,200,151, 40, 84,242, 88,255,232,216,230, 89,247,206,239,
-163,210,142,215,143, 29,132, 16,104,181, 90,252,252,243,207, 15,108, 49,229,110,251, 41,150,101,225,239,239,239,113, 55, 2,181,
- 90,141,157, 59,119,186,221, 27,209,221,214, 59,126,126,126, 64, 17,155, 93, 19, 66,160, 86,171,113,240,224, 65, 48, 12,227,118,
- 11, 31,215,107, 58,157, 14, 76, 17,123, 82,137,156,251,246,237,243,200, 37,254,250,248,248, 0,128,172,200, 76,169, 82,225,192,
-129, 3,133,250,217,245,191,143,125, 63, 86, 79,156, 7, 15, 30, 44,176, 69,151,235,214, 93,206,231, 58,157,206,209,112, 43,180,
-117, 22, 16,208, 32, 58, 58, 26,199,142, 29,195,250,245,235, 3, 99, 99, 99,113,245,234, 85, 16, 66, 48,109,218, 52, 82,189,122,
-117,121, 98, 98, 34,154, 54,109,138, 31,127,252,177,145,148, 91, 36,252,131,144, 3,120, 14, 64, 8,242,119,141,201, 1,224,111,
-175,123,148, 0,210, 0,104,236,135, 25, 64, 46,128, 96,251,187,169,246,178,197, 89, 32,164,160,224,166,208,245,237,220,226,142,
- 18, 33, 78,247,196,111,184,158,187,254, 22,224,102,237,133,140, 88,137,181,160,148,238, 45,224, 35, 47,196,149,184,143,152,107,
- 94,118,179,241,171, 74,167,211,109, 60,114,228,136, 38, 36,228,111,183,155,205,102,228,228,228, 32, 55, 55, 23, 57, 57, 57,240,
-245,245,197,250,245,235, 53,173, 91,183,222, 72, 8,169, 68, 41, 53, 23,198, 9, 96,206,253,251,247,195, 56,142,131, 82,169, 44,
-172,229,139,170, 85,171,226,195, 15, 63, 68,251,246,237,195, 91,182,108, 57, 7,192,166, 34, 56,161,213,106,151,156, 56,113, 34,
- 84,171,213,226,202,149, 43,136,143,143,199,123,239,189, 87, 74, 16, 4,220,189,123, 23, 87,175, 94,197,189,123,247,176, 98,197,
-138,208,238,221,187, 47, 1,176,185, 40,191,219,241,230,232,209,163, 43, 5, 6, 6, 50,159,127,254,121, 86,110,110,238, 87,246,
-235,227,231,205,155,215,183, 89,179,102, 33,131, 6, 13, 2, 33,100, 13,165,244, 1,193,226,194,233,206,114,197, 3,184,232,242,
- 90, 85, 23,203, 86,184, 61,241,101,186,225, 36, 0,252,218,181,107, 55,218,108, 54,215, 57,112,224,192,181,198,141, 27,151, 1,
-112, 95, 76,116,126,126,126,186, 57,115,230,132,117,238,220,249,114,171, 86,173,234,180,107,215,110,116, 74, 74,202, 52,251,125,
-234,202, 41, 8, 56, 21, 30, 81, 99,221,190,195, 35,122,239, 57,104, 81,188, 63,234,147, 59,165, 75,149,205, 58,117, 37,157, 63,
-127, 35, 5, 57, 70, 14, 47,181,202,223, 88,188, 65,141,210, 88,184,246, 0,134,189,243,145,124,211,186,149, 47, 95,163,208, 1,
-248,165,136,240,124, 36, 72,156,127,139, 12, 65, 16, 32,151,203,209,161, 67, 7, 16, 66, 30,216,107, 83, 46,151,227,240,225,195,
-104,213,170, 21,228,114, 57,222,120,227, 13,175, 56, 89,150, 69,187,118,237, 28,251, 28, 58,243,185,138, 5,119, 90,192,213,239,
-148, 82,176, 44, 11,134, 97, 10,221,224,218,149,211, 83,185, 36,186,179, 40, 46,231,123,158,220, 41, 90,143,188, 21, 87,222,114,
-138,238,100, 89, 22,141, 26, 53,194, 95,127,253, 85,164,216,114,167, 43, 93,253,158,145,145,241, 90,165, 74,149,246, 45, 88,176,
- 32, 16, 0,210,210,210, 28, 27,209,203,100, 50, 92,186,116, 9, 22,139, 5,159,126,250,169, 53, 59, 59,123,144,148,143, 36,206,
-199,201, 89,148, 22, 1,208,108,252,248,241,245,166, 79,159, 62,173, 97,195,134,107, 14, 29, 58,180,154, 16,178,149, 82,218, 89,
-252, 29, 63,126,124,236,244,233,211,167,141, 27, 55,238,195,184,184,184,115,132,144,173, 0,224,122,110,119,127,103, 23,241, 22,
- 34,242,216,221, 82,224, 89,119,231,174,191,174,220,172,211, 5, 98,247, 28,113, 46,204,188, 21, 88,222,236,173,199,178,236,240,
-105,211,166,133, 21, 37,174,114,115,115,145,144,144,128, 50,101,202,224,141, 55,222, 8, 91,176, 96,193,112, 0,179,138,160, 85,
-200,100, 50, 28, 59,118, 12,201,201,201,168, 89,179, 38,202,149, 43, 87,224,129,235,215,175,227,215, 95,127, 69,102,102, 38,234,
-214,173, 11,228,143, 47,114,139,231,158,123,238,211,170, 85,171,182,107,215,174, 29,167,209,104,112,234,212, 41,212,169, 83, 7,
-107,215,174, 69,233,210,165,161,213,106,113,249,242,101,212,172, 89, 19,123,247,238, 69, 72, 72, 8,106,215,174,205,213,173, 91,
-119,127,122,122,250,238, 91,183,110,125, 90, 72,194, 81, 68, 69, 69,125,248,246,219,111, 43, 19, 18, 18,132, 21, 43, 86, 28,162,
-148, 30, 34,132, 12,254,232,163,143, 94,109,223,190,125,200,201,147, 39,179,255,252,243,207, 63,221,137, 43, 47, 45, 87,156,107,
-101,196,243,188,217,104, 52, 90,204,102,179,141, 97,152, 91,132, 16, 11,207,243,133,245,237,168, 7, 12, 24, 80, 62, 53, 53,117,
-216, 59,239,188,115,211, 46,174, 46, 33,127, 96, 59, 0,128,227, 56,115,110,110,110,118,195,134, 13,203,244,237,219,247,218,234,
-213,171,135, 13, 24, 48, 96,253,242,229,203,115, 1, 24, 93, 9, 75,151, 46,245,151, 76,198, 40, 12, 57,129, 55, 54,172, 95,246,
-238,175, 91,134,151,186,123,247, 94,197,160,224, 16,131,194, 39, 36, 97,253, 15,223, 29, 7, 96, 73, 72,201,198,153,235,137,144,
-203,101,184,112, 55, 11,205, 94,236, 37,191,118,101,106, 19, 81, 96, 73,120,172,160,226,230,208,123,246,236, 41,210,130,117,248,
-240, 97,200,229,114,104, 52, 26,204,157, 59,183, 72, 82, 81, 16,136,214, 33, 79, 34,134, 97,152, 34,203, 17, 81,100,136, 27,176,
-187, 30, 95,126,249, 37,222,121,231,157, 2,223,176,139, 12,226,137,179, 48,247,149, 41, 91, 22,201, 73, 73, 5,174,121,179, 89,
- 60,207,243,144,203,229,248,250,235,175,209,185,115,103,108,221,186,181,200,223, 14, 29, 58,128, 97, 24,234, 77,120, 54,106,212,
- 8, 86,171,213,225,230, 75,151, 46,185,229, 93,188,120,177,167,202,172, 11,128,207,234,212,169,163,111,217,178, 37,246,237,219,
-135,151, 95,126,217,108,181, 90,175, 0, 64,167, 78,157, 42, 47, 88,176, 64,121,226,196, 9, 4, 5, 5,201,239,220,185,243, 45,
- 33, 68, 26,248, 46,225,241, 22, 70,110,180,136, 88,231, 77,159, 62,125,154,139, 48, 42, 0,241, 62, 33,100,107, 92, 92, 92,103,
-103, 49,228,124,238,100,101,114, 22,111,177,206, 22, 40,103,241, 84,136, 40,115,117,183,243,243, 41, 5, 4,150,221, 67, 45,156,
-173, 62, 98,161,235, 73, 92, 21,214, 82,116,133,159,159, 95,199,151, 94,122,201, 33,110, 76, 38,147, 67, 88,137,226, 74, 60,191,
-124,249, 50,234,213,171,167,240,243,243,235,232, 65, 96,137,226, 13,145,145,145, 72, 77, 77,197,217,179,103, 81,166, 76, 25,216,
-108, 54,108,223,190, 29, 89, 89, 89,144,203,229, 80, 40, 20,176, 90,139, 30,146, 80,181,106,213, 14,171, 86,173,170,183,114,229,
-202, 12,177, 5,247,195, 15, 63,128, 82,138,144,144, 16,228,229,229, 33, 41, 41, 9,187,119,239, 6,199,113,240,241,241, 65, 76,
- 76,140,178, 91,183,110, 77, 62,251,236, 51, 57,128, 79, 11,161,126,225,229,151, 95,214,235,245,122,140, 26, 53,138, 90,173,214,
- 89,132,144, 6, 61,122,244,248,112,196,136, 17,129,183,110,221,178,188,249,230,155,199,173, 86,235, 28,123,124,200, 41,165, 54,
- 15, 9,177, 80,203,149,205,102, 19,195,244,102,110,110, 46,130,131,131,203,120, 24,163, 5, 0,138,131, 7, 15, 54, 2, 32,155,
- 60,121,178, 26, 64,146,179,184,178, 88, 44,200,205,205,133,193, 96,176,101,101,101, 37,143, 25, 51,134, 91,189,122,181,204,254,
-206, 5,119, 2, 11,120,209, 82,189,186, 78, 73,169,236,163,165, 75,151,250,180,111,223,158,241,241,241, 65, 78, 78,142,254,183,
-109,219,124, 90,183,108, 18, 51,109,250,204, 29,250,232,154, 73, 7, 79,221,192,189,196, 44, 88,108, 54,196, 68,248,229,219,191,
- 36, 60,118,216, 39,168, 56, 44, 88,206, 98, 98,223,190,125,120,241,197, 23, 29,121, 93,161, 80, 20,176,116,121,226,100, 89, 22,
- 47,190,248,226, 3, 22,157, 61,123,246,184,181, 54,121,130,179, 24,114, 21, 69,238,132, 23,195, 48,240,212,203, 44, 90,239,220,
-137, 44,103, 43,190,139,104,243, 84, 73,128,101, 89,140, 24, 49, 2,114,185, 28, 99,199,142, 5,203,178,168, 93,187, 54, 88,150,
- 69,195,134, 13, 33,151,203,209,170, 85,171, 98,251,253,200,145, 35,168, 83,167,142,195, 77,181,107,215, 70,253,250,245,193,178,
- 44,154, 54,109, 10,185, 92,142,118,237,218,121,195,249, 97, 78, 78, 78, 45, 31, 31, 31, 92,190,124, 25, 50,153, 12,132,144,171,
-148,210, 90, 0,240,246,219,111, 95,203,203,203, 43,111, 50,153,240,246,219,111, 19,139,197, 82,115,236,216,177, 31, 1,144, 4,
-150,132,199, 89, 30, 21,208, 34, 78, 48,142, 27, 55,238, 67, 66,200, 86,209, 34,229,106,105,114,119,238,134, 95, 20, 65, 98,247,
- 96,125, 23,241, 38,118, 29,118, 42,226, 93,139,139,160,114,237, 34,252,211,163, 5, 75, 44,116,189, 21, 88,158, 96, 50,153,158,
- 11, 13, 13, 45, 84, 92, 57,255, 90, 44, 22,148, 43, 87, 14, 38,147,233,185,226, 86, 22, 17, 17, 17,176, 90,173, 88,182,108, 25,
- 20, 10, 5, 20,138,191,117,133,197, 82,180,113,232,252,249,243, 55,143, 28, 57, 82,167,110,221,186, 1, 63,254,248, 99, 74,243,
-230,205, 67,218,183,111, 15,141, 70, 3,163,209, 8,155,205,134, 6, 13, 26,160,106,213,170,136,143,143,199,111,191,253,150, 90,
-169, 82,165,224,163, 71,143, 10,137,137,137,183,139,160,110,221,186,117,107, 16, 66,240,219,111,191,165, 81, 74, 79,104, 52,154,
- 31,167, 77,155,230,111,177, 88,132, 87, 95,125,245,110,122,122,250, 24, 0, 54,149, 74, 53,171,125,251,246, 47,200,100,178,181,
- 60,207, 47, 44,110, 2,117, 13, 91,131,193, 0,181, 90,237,205,146, 16,242,244,244,244, 26, 0,160,211,233, 2, 1, 92,115,164,
-108,163,177,128, 8,182, 88, 44,166,192,192, 64, 29, 0,216,223,145, 23, 18, 31, 33, 90,173,118,195,237,219, 55,124,157,199,199,
-249,251,251,163, 95,223,190, 76,227, 70,141,148,181,158,123,174,221,132, 47, 86,174,141, 12,210, 91, 98, 34,131, 96,227,109,216,
-181, 99,187, 64, 5,219, 14,169,184,121, 50, 2, 75, 20, 25,174, 22, 44,185, 92,142,189,123,247, 62,112, 77,161, 80,224,171,175,
-190,242, 74, 16,136, 98,170,176, 46, 50,151, 46, 45,226, 73,184,200,229,114,200,100, 50,124,253,245,215, 16, 4, 1,239,190,251,
-110,129,110, 67,103,126, 47, 91,204,142,119,170,126, 34, 0,176, 32,126,182,202,241,190,171,123,197,242,210, 27,171,216,130, 5,
- 11,188,178, 96,117,234,212,201,163, 96,117,238, 81,112,118,215, 95,127,253,229,150,119,233,210,165, 30,195,147,231,121,252,242,
-203, 47, 14,113, 42,226,227,143, 63,126, 59, 58, 58, 58,108,255,254,253, 72, 76, 76,132,193, 96, 64,110,110, 46, 26, 52,104, 16,
-211,166, 77,155, 83,137,137,137,183,206,159, 63,255,146,148,123, 36, 60, 65, 11,150, 57, 46, 46,238, 92, 92, 92,156, 91, 11,149,
-171, 37,169, 40, 75,147,147,176,250, 19,246,174,193,113,227,198,125,136,252,225, 51,127,122,241,174,210,181,139,208,173,225,199,
- 69, 53,126,230,174,208,245,166,155,208, 75,179, 57, 75, 8,129,201,100,114, 43,172,156, 69,129,213,106, 69,122,122, 58,120,158,
-103, 31, 33,162, 30,184,230, 73, 96,157, 61,123,246,245,129, 3, 7, 38,248,249,249,213, 74, 73, 73, 73, 22, 4,161,213,225,195,
-135, 67, 88,150,133, 94,175,135, 94,175,199,175,191,254, 10,173, 86,139, 17, 35, 70, 36,243, 60,191,207,215,215, 55,200,104, 52,
-158, 78, 76, 76,156, 80,168,114,145,203, 91, 55,107,214, 12, 39, 78,156, 64,102,102,230, 31,132,144, 90,131, 6, 13,106, 91,170,
- 84, 41, 50,117,234, 84,211,181,107,215,190, 4,144,162,211,233,150,173, 90,181,170,121,221,186,117,125,250,247,239, 15, 66,200,
- 55,148, 82,147,183,126, 54, 24, 12, 5,132, 85,118,118, 54,114,114,114,160,211,233, 56, 47,195, 76,142,252,177, 84,226,120, 42,
- 71,220,216,173, 87, 98,252, 80,150,101,105,254, 35, 84, 94, 24,159, 78,167,155,188,114,229, 74,141,235,228, 3,158,231,145,148,
-148, 4,189, 94,143,143, 39, 76, 80, 76,122,111, 80, 29,153, 79,216, 97,134, 33,176, 88,105, 38, 21, 44,219, 13, 73,125,246, 75,
-197,205,147,129, 40, 8,186,118,237,250, 64,183,160, 66,161,192,206,157, 59,209,189,123,119, 71,131,165,110,221,186, 30, 27, 85,
-162, 32,232,210,165,139,195, 18,180,125,251,118,183,221,123,162, 5,202, 27, 33, 40, 62, 59,114,228, 72,176, 44,139,133, 11, 23,
- 98,244,232,209, 96, 24, 6,179,103,207, 6,195, 48,152, 56,113,162,215,226,210, 89,184,220,154,153,255, 27, 61, 58, 27,105,139,
-195, 0, 0,190,122,189,232,161, 98,149, 61, 44,203, 58, 44, 87,207, 61,247, 28,228,114, 57, 26, 54,108, 8,150,101, 29,150,171,
-142, 29, 59, 58,135, 35,245,134,147,101, 89, 92,185,114,197,225,230,134, 13, 27, 22,176, 92,177, 44,139, 78,157, 58,121,227,204,
-105,254,254,254,159, 85,173, 90,181,218,156, 57,115,228, 50,153, 12,173, 91,183,174,252,230,155,111,222, 14, 10, 10, 10,154, 60,
-121,178,214,205, 59, 26, 0,181,170, 85,171,166,147,114,141,132,199,104,193,250,204,205,173, 0,231, 49, 85,197,224,219,234,252,
-188,200,225, 42,138,236, 22,177,125,158,184,220,189, 91, 24,216,162, 90, 99,197, 17, 88,118,243,114,145, 31,211,106,181,103,146,
-147,147, 27,106, 52,154, 2,226,202,157,208,146,201,100, 72, 76, 76,132, 86,171, 61, 83,146,145,231,169,139,208, 46,102,222,115,
- 10,208, 54, 29, 59,118, 92,190,115,231,206,136, 93,187,118,225,232,209,163, 8, 9, 9,193,130, 5, 11,238, 39, 37, 37,189, 78,
- 41,221,233,205,119,203,151, 47, 95, 93,167,211,225,208,161, 67, 0,176, 31,192,128, 97,195,134, 17,142,227,176,104,209,162, 60,
- 0, 59,253,252,252, 54,109,220,184,241,185,154, 53,107, 42,119,237,218,149,115,244,232,209, 61, 94,138, 43, 94, 16,132, 7,132,
-149,115,152,250,250,250,122, 99,193,178,249,249,249,157,205,206,206,238,101, 52, 26,179, 85, 42,149,111,118,118,182,217, 89, 88,
-137,252, 44,203,202,175, 92,185,146, 0, 32,198,207,207,239, 44,156,186, 18, 11, 36, 48,150,109,221,186,117,107,214, 53, 14,146,
-146,146,144,152,152, 8,171,213,138,186,117,235, 18, 25,177,201,210,239,156,126, 91, 42, 94,254,153, 2, 77,204,235,226,172, 63,
-119, 51, 7,183,111,223,238, 56,103, 24, 6,246,105,251, 30,197,208,206,157, 59,139, 28,136,238,210, 69,232,209, 20, 46, 62,191,
-104,209,162,252,237, 40,236,150, 43,134, 97, 48,110,220, 56,168, 84, 42, 76,157, 58, 21,227,198,141, 3,203,178, 30,187, 8,157,
-133, 75,217,177,121,206,141,162,252, 76, 97, 31,239, 68, 8,113, 22, 89,196, 91,209, 86,148,245,206, 27,203,191, 51,167,248,158,
- 90,173, 46,116,128,187, 11, 39, 41,194,223, 63, 19, 66,110, 68, 68, 68, 28,108,216,176,161,223,241,227,199, 49,123,246,108,133,
-217,108, 46,189,107,215, 46,199,119,221,133,151,193, 96,208, 72, 57, 71,194,227,176, 94, 21,113, 59,197,101,252, 20,113,238,174,
- 43,226,215,245,121, 56, 93,115,230, 77,113,169,199,156,175,187,138, 42,215,111, 56, 63,147,242,128, 5,203, 83, 33,225, 73,104,
-121, 99,193,202,203,203,251,125,219,182,109,245,251,246,237,203, 22,213, 61,104, 48, 24, 16, 22, 22,134,115,231,206,113,121,121,
-121,191,123, 97, 25, 43, 49,129,229, 38,194,119,133,135,135,203,108, 54, 27, 42, 86,172,136,168,168, 40,152, 76, 38,100,102,102,
-202,188, 21, 87,132, 16, 69,189,122,245,100, 0,144,145,145, 1,228, 79, 39,173, 84,169, 82, 37,156, 56,113, 2, 25, 25, 25,155,
- 1,180,153, 52,105, 82,237, 23, 94,120, 65,177,118,237,218,188, 33, 67,134,108,182,217,108, 83,189,180, 62, 88, 56,142, 43,199,
- 48,140, 53, 51, 51,243,158,115,120,134,133,133, 5,234,116, 58,146,148,148,100,243, 70, 96,213,170, 85,235,216,157, 59,119, 48,
-121,242,228,148,105,211,166, 85,202,201,201,201,200,202,202,226,156, 69,150,201,100, 98,130,131,131, 85,139, 23, 47,214, 0, 64,
-173, 90,181,142, 21, 38,176, 12, 6, 67, 41,173,246,239,134,176,217,108, 70, 98, 98, 34, 18, 19, 19,145,148,148,132,156,156, 28,
-196,196,196, 32, 47, 47,175,140, 84,188,252, 99, 2,171, 64, 55,153,115,254,118,174,192,139,147,215,157,133, 75,215,174, 93, 29,
- 99,183, 68,139,152,120,108,216,176,193,117,224,184, 87, 2,107,209,162, 69, 24, 57,114, 36,212,106, 53,230,204,153, 83,160,139,
-208, 85, 20, 8,130, 64,188,241,123,185, 15,140, 72,156, 31, 8,185, 92,142,160, 33, 73, 5,186,226,220, 8, 13,175,220, 57,109,
-218,180, 18,233, 34,116,230, 44, 83, 38, 63,171,124,253,245,215,232,213,171, 23,246,239,223,255,208, 93,132,177,177,177, 63,108,
-221,186,213,239,252,249,243,200,206,206, 70, 74, 74, 10,204,102, 51,226,227,227, 11,237, 5,176,151,229,106, 41,231, 72,120,194,
-248,243, 9,243, 62,242,247, 88, 15, 21,183,215, 2,203, 27, 11,150,217,108,158, 51,106,212,168, 97,109,218,180, 9,244,245,245,
- 69, 66, 66,194, 3,226, 42, 55, 55, 23, 62, 62, 62, 48, 26,141,216,178,101, 75,182,217,108,158,227, 73, 20,216,108, 54,132,134,
-134, 34, 53, 53, 21, 66, 33,227,162, 25,134,129, 70,163, 65,110,110, 46, 10, 19, 3, 69, 85, 20, 86,171, 21, 54,155, 13, 54,155,
- 13, 86,171, 21,197, 92,158, 73, 35, 46,216,106, 48, 24, 0,192, 16, 25, 25, 89, 94,173, 86,227,230,205,155, 0,112, 5, 64,203,
-246,237,219,203,211,210,210,232,155,111,190,121,152, 82, 58,194,195,106,246,150,125,251,246,149, 3, 0,141, 70,115, 25, 0,226,
-227,227,109,153,153,153, 5, 44,131, 90,173,150,118,239,222, 61,130, 82,138,125,251,246,149, 83, 40, 20, 20,133,172, 89, 5,192,
-180,121,243,230,243,126,126,126,171,167, 79,159,222,183,115,231,206,231,106,212,168, 81,206, 96, 48, 36, 27,141, 70,163,201,100,
-162, 50,153, 76, 17, 16, 16,160,222,177, 99,199,181,195,135, 15,183,209,235,245,171, 55,111,222,124, 30,128, 91, 75,155, 78,167,
-139,207,203,203, 43, 43,198,169,179,184, 74, 76, 76, 4,165, 20, 55,110,220,128, 86,171,189, 35,149, 31,255,104,203,241, 1, 97,
-229, 78,108,121, 43,174,156, 5,193,142, 29, 59,138, 92, 3,203, 91, 78,103, 49, 52,122,244,104,204,159, 63,255, 1, 11,214,212,
-169,249,109,146, 9, 19, 38,120, 61, 6, 75,180, 86, 37,206, 15, 68,248,200,244, 2,110, 7, 0, 34,186,175,152, 75,178,177, 44,
-139,201,147, 39, 63, 48,248,220,185, 11,207,203,174,188, 2,238, 76, 78, 78, 6,203,178, 8, 12, 12, 68,191,126,253,208,174, 93,
- 59, 71, 87, 99,113,121, 47, 94,188,120,240,131, 15, 62,168, 25, 27, 27,139, 41, 83,166,164,251,251,251,251,190,245,214, 91,108,
-102,102, 38, 41,202,130, 37, 9, 44, 9, 18, 30, 65, 96,137, 25,203,219, 89,132,238, 10, 73, 66, 72, 27,231,181, 50, 40,165, 89,
-132,144,126,109,219,182,253,113,221,186,117,154,242,229,203,227,226,197,139, 72, 79, 79,135,197, 98,129, 66,161, 64, 68, 68, 4,
- 50, 51, 51,241,221,119,223, 25,243,242,242,250, 81, 74,179,138,226, 4,240, 81,189,122,245,150,204,154, 53, 75, 93,187,118,109,
-164,167,167, 35, 55, 55,183,192,170,211,122,189, 30, 26,141, 6,199,142, 29,195,246,237,219,141, 0, 62,242,192,233, 78,197,193,
-106,181, 58,132,150, 39,129,229,194,169, 19,173, 56,121,121,121, 0,192,149, 46, 93, 58, 12, 0,110,220,184, 1, 0,183, 99, 98,
- 98, 38, 84,168, 80,129,172, 90,181,138, 82, 74,119,185, 19, 87, 46,156,233, 77,155, 54,205, 0, 16,110,177, 88, 20, 0,144,149,
-149,101, 13, 14, 14, 14, 85,169, 84,130, 70,163, 17,212,106,181,144,144,144,192,113, 28,167, 0,128,166, 77,155, 90, 0, 36,194,
-105,172,135, 11,167, 0, 32,123,233,210,165,159,245,239,223,191, 97,163, 70,141, 98,135, 14, 29,122,246,205, 55,223,100,162,162,
-162, 2,114,114,114, 76, 87,175, 94,205,248,226,139, 47,114,142, 28, 57,210, 70, 46,151,223, 94,186,116,233,103, 0,178,237,239,
- 62,192,201,113,220,239,187,118,237,122,189,115,231,206,236,189,123,247,144,148,148,228, 16, 87, 73, 73, 73,168, 90,181, 42, 14,
- 31, 62,204, 91,173,214, 93,197, 8,207,146,178,220, 72,156,249,141, 15, 42,230,245,194,132,149,216,136,242,150,211, 89, 12,245,
-234,213,171,128,213, 74,161, 80, 96,227,198,141,110,203, 13, 55, 43,146,183,113, 93, 15, 74,116,211, 7, 31,124, 80, 64,172,125,
-252,241,199,133, 58,205, 83,120,138, 60, 89, 95, 71, 21,156, 69, 88, 72, 62, 47,202,157, 98,217, 41,151,203,241,241,199, 31,123,
-109,193,130,203, 24, 44,119,156,162,223,155, 55,111,142,188,188, 60,135,128, 45,204,130,229, 41, 60,121,158, 31, 57,127,254,124,
-170,215,235, 95,200,206,206,254,223,157, 59,119, 86,228,229,229, 61,159,149,149, 85,164, 5,203,108, 54,171,164,124, 36,113, 62,
-142,181,176,254, 19, 2,203, 94, 57,162, 84,169, 82, 5,246,182, 98, 24,166,192, 81,156,113, 4,246, 12,187,131, 16,210,163,113,
-227,198,223,143, 28, 57,210,183,118,237,218,242,178,101,203,194, 96, 48,224,230,205,155, 56,119,238, 28,183,121,243,230,236,188,
-188,188,255, 81, 74,119,120,193,183,146, 16,178,189,125,251,246, 19, 27, 52,104, 48,248,147, 79, 62,145, 85,174, 92, 25, 89, 89,
- 89, 8, 8, 8, 64,104,104, 40, 46, 93,186,132, 45, 91,182,240,169,169,169, 75, 0, 76,162,148,166, 20,183,129,111,181, 90,241,
-202, 43,175, 64, 16, 4,204,157, 59,215,121, 65, 52,111, 96,181, 90,173, 20, 0, 73, 77, 77, 5,128, 60, 81,112, 93,189,122, 21,
- 0,238,148, 45, 91,214, 7, 0,118,237,218, 69, 0, 28,242,214, 93,206,150,172,170, 85,171,222,116, 45, 20, 69,203,149,104,245,
-130,231, 13,154, 77,189,123,247, 78,206,203,203,107, 63,122,244,232,137,139, 22, 45,234,187,104,209,162, 7, 30,210,235,245,171,
-103,207,158, 61,169,119,239,222,201,133, 89,175,236, 22,187, 9,175,189,246, 90,239, 51,103,206,248,170,213,106, 24, 12, 6,164,
-165,165,193,106,181, 34, 38, 38, 6,201,201,201, 88,185,114,101,142,209,104,252, 84,202,142,255, 12,156, 5, 65, 97, 86, 44, 79,
-226,170, 40, 43,206,207, 63,255,236,118,141,169,226,114,186,138, 12,111,215,166, 42,170, 49, 36, 46, 47,227,110,233,135,226,148,
-107,238,120, 89,150,197,231,159,127,238, 88,108,213,157,229,170, 56, 22, 44,145, 51, 48, 48, 16, 0, 32,110,109,212,169, 83,167,
-135,230,181,111, 27, 54,194,233, 27,211,198,140, 25,243, 89,213,170, 85, 43, 3, 80, 57,135,129,180,169,130, 4, 9, 37, 36,176,
-120,158,143,175, 82,165, 74,129,130,205,211, 38,163, 54,155, 45,222,203, 76,189,157, 16, 18, 51,123,246,236, 81, 58,157,174, 77,
- 94, 94, 94, 77,123,129,113,198, 96, 48,236, 50,155,205,243,138,179, 57,179, 93, 48, 13, 39,132,204,109,223,190,253,212, 86,173,
- 90,245,124,239,189,247, 8,165, 20,139, 23, 47,166,215,175, 95,223, 0,224, 35, 74,233,245,135, 9,164,192,192,192,243,223,125,
-247, 93,216,143, 63,254, 8,155,205,134,121,243,230,193,215,215,247,124,113,220,199,178,236,247,141, 26, 53,234,123,248,240,225,
-213,148,210,179, 42,149,234,135,166, 77,155,246, 59,116,232,208, 58, 74,233, 5,150,101,127,104,216,176, 97,191, 99,199,142,109,
-162,148,158, 46,134,243, 28,150, 44,142,115,223,163,232,206,114,229, 1,217, 3, 7, 14,180, 14, 28, 56,240,189,222,189,123, 47,
-251,243,207, 63,159,207,204,204,172, 9, 0,254,254,254,103,234,215,175,127,108,221,186,117,151,236,150, 43,147, 39,191, 19, 66,
-186,215,172, 89,115,211,148, 41, 83,116,177,177,177,108,197,138, 21,113,235,214, 45,156, 61,123,150,251,246,219,111,115,141, 70,
- 99, 87, 74,105,134,148, 29,255, 57,129, 69, 41,133,191,191,127,129,198,147, 56,117,191,184,221,130,206, 21,178,184,165,142, 43,
-111, 97,156, 30, 6,185, 2, 0,124,124,124, 28,139,146,122, 51, 52, 65, 16,138, 94, 79,141, 82,234,224, 20, 15, 47,196,149,199,
- 25,127,246,173,106,188,230,244,102,153, 6,157, 78, 7,155,205,230,224,245, 98, 38, 39, 41,102,156,253, 12,224,231,138, 21, 43,
- 94, 5, 80, 65, 18, 85, 18, 36, 60, 6,129,149,158,158, 94,239,113,126,216, 46,160, 38,217,143,146,226,188, 14,160, 55, 33,100,
-214, 31,127,252, 33,246, 23, 76,246,180,159,161, 39, 92,188,120,177,179, 92, 46,255,106,245,234,213, 13, 40,165,240,243,243, 59,
-114,235,214,173,183,138,195,193,113,220, 96, 66,200,187,226,172, 64,179,217, 60,152, 16,242, 62,165,212,224,116,223,113, 94, 92,
-175, 3, 48, 83, 74, 35, 11,185,111, 46,134,184,114, 88,178, 0, 88,214,173, 91,151, 11,224, 20,254, 94,231,202,102, 63, 76,112,
-234, 22,244, 16, 47,187, 9, 33, 21, 63,254,248,227,105, 50,153,172,181,193, 96,136,210,233,116,119, 57,142,251, 61, 47, 47,239,
- 35, 74,105,154,148, 21,255, 57, 88, 44,150,123, 85,170, 84, 97,221, 53,156,138,170,192,139,106, 80,241, 60, 31, 95,169, 82, 37,
-143,141, 50, 55,156,247,138, 72, 71,183, 99, 98, 98, 24,111,185, 68, 88,173,214,228,162,220, 25, 19, 19,131,226,114,122,242,123,
-185,114,229,220,250,221,131, 16,188, 87, 68,249,241, 80,156, 69,133,103, 81, 48, 26,141, 25, 33, 33, 33,185, 38,147, 73,110, 54,
-155,229, 28,199, 21, 48, 55,106, 52,154, 20, 41,231, 72,144,240,144, 2,235,223, 12,187,160,234, 82,130,124,102, 0,175,150, 0,
-143,201,229,220, 80,212,121, 49,241, 56, 44, 64, 2,128,188, 18, 10,195, 84, 0,111, 74, 89,238,233, 67,106,106,234, 11, 37,205,
-153,150,150, 86,226, 13,180,148,148,148,134,143,193,239,245,254,171,156, 69,225,222,189,123, 47, 72, 57, 67,130,132, 71, 3, 35,
- 5,129, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 0,104,227,238, 70,113,102, 7, 16, 66,218, 20,247,195,158,248, 37, 78,137,
- 83,226,148, 56, 37, 78,137, 83,226,124,246, 56, 61,113, 63, 51,179, 19, 41,165,143,237, 0,208, 70,226,148, 56, 37, 78,137, 83,
-226,148, 56, 37, 78,137,243,191,118, 72, 93,132, 18, 36, 72,144, 32, 65,130, 4, 9, 37, 12, 73, 96, 73,144, 32, 65,130, 4, 9,
- 18, 36, 72, 2, 75,130, 4, 9, 18,158, 12, 8, 33, 1, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9,255, 54,113, 85, 3,
-192,148, 18,166,157, 98,231,149, 32,225, 63,145,135, 8, 33, 53, 37,129, 37, 65,130, 4, 9, 18,196,138,161, 99,249,242,229, 39,
- 3,240, 41, 97,106,159,242,229,203, 79, 38,132,116,148, 66, 89,194, 51,154,119, 84,132,144, 87, 25,134, 57, 86,163, 70,141, 51,
-177,177,177,167, 25,134, 57, 76, 8,233, 69, 8, 97,255, 83, 97,225,180, 41,242, 94, 0,160,148, 54,151,146,136, 4, 9, 18,254,
-163,149, 3, 11, 96,112,223,190,125,187, 76,159, 62, 93, 89,170, 84,169,187,148,210,254, 37,200,191,234,238,221,187,209, 3, 6,
- 12,200,221,189,123,247, 14, 0, 75,220,109,236, 46, 65,194,191, 48,239,148, 5, 48,216,199,199,103, 80,139, 22, 45, 2,186,118,
-237,138,160,160, 32,112, 28,135,187,119,239, 98,235,214,173, 56,116,232, 80,130,197, 98,153, 15,224,107, 74,105,102, 33, 60,207,
-140, 22, 33,148, 82,113,227,226, 22,118, 79,237,149,146,138, 4, 9, 18,254,131, 21,132, 30,192,248, 57,115,230, 52, 24, 60,120,
-112, 57,147,201, 20, 31, 16, 16,112,163,164, 5,150,213,106,109,147,146,146,114,124,234,212,169, 88,188,120,241, 5, 0,113,197,
-217,123, 85,130,132,167, 48,239,140,235,209,163,199,212,176,176, 48,166, 70,141, 26,136,136,136,128,217,108,134,209,104, 4,165,
- 20, 44,203,130, 82,138,172,172, 44,236,219,183, 15,187,119,239, 54,103,100,100,124, 7, 96, 30,165,244,138, 19,207, 51,165, 69,
- 28, 2,171,184,155,130, 74,144, 32, 65,194, 51, 84, 65,148,211,104, 52, 31,111,217,178,165,122,147, 38, 77, 66,115,114,114,110,
-216,108, 54, 67,100,100, 36, 69,254,166,230,238,144, 69, 41, 29,225,134,107, 1, 0,191, 66,222,209, 91,173,214,250,169,169,169,
-199, 1, 96,227,198,141, 24, 63,126,124,154,209,104,156, 76, 41,189, 41,197,132,132,127,105,254,185,124,241,226,197, 74, 60,207,
- 35, 53, 53, 21,102,179, 25,121,121,121, 14,129, 37,147,201, 64, 41, 5,199,229, 27,107, 5, 65,192,137, 19, 39,176,107,215, 46,
-122,227,198,141, 79, 40,165,147, 69,129,245, 44,105, 17, 73, 96, 73,144, 32,225,191, 94, 57, 52, 14, 15, 15,127,247,143, 63,254,
- 40, 91,166, 76, 25,125,110,110,238, 53,142,227,108, 0, 16, 16, 16, 16, 43,147,201, 84,174,239,240, 60,111, 86,171,213, 7,220,
- 89,183, 8, 33,171, 76, 38, 83, 19,119,239,217,223,229, 50, 50, 50, 78,137,231,167, 79,159,198,160, 65,131,172,137,137,137,115,
- 40,165, 7,165, 24,145,240,111, 20, 88,167, 78,157,170,180,102,205, 26,212,169, 83, 7,213,170, 85, 67,110,110,174, 67,108, 89,
- 44, 22,216,108,182, 7,222,203,206,206,198,187,239,190,123,133, 82, 90,249, 89, 20, 88,226,128,179,207,164, 49, 88, 18, 36, 72,
-248, 47, 35, 49, 49, 49,213,223,223,255,190, 32, 8, 84,188,150,145,145,113,238, 97,184, 30,246, 61, 9, 18,254,165,176, 89, 44,
- 22,212,171, 87, 15, 55,111,222,196,137, 19, 39, 28, 66, 43, 53, 53, 21, 9, 9, 9, 5, 30, 62,118,236, 24, 78,158, 60,137,102,
-205,154,185,242,124,246,204,141,193,178, 43,199,230,118, 79,237,149,210,138, 4, 9, 18,254, 99, 45,240,114, 26,141,230,227,184,
-184,184,160,151, 95,126,217,113,253,113,116, 17, 38, 36, 36, 56, 90,232, 82, 23,161,132,103, 36,255,116,143,140,140,252,118,216,
-176, 97,126, 13, 26, 52, 64,124,124, 60,238,221,187,135,140,140, 12,212,174, 93, 27,177,177,177,184,126,253, 58,182,111,223,142,
-147, 39, 79, 66,165, 82, 33, 58, 58, 26, 62,171,215,224, 43,130,243,148,210, 88, 39,174,103, 70,139, 56, 4,150, 4, 9, 18, 36,
-252,199, 43, 9, 61,128,241, 67,134, 12,169,246,209, 71, 31,129, 16,130,200,200,200,172,146, 30,228,158,144,144,224, 71, 41,133,
- 52,200, 93,194, 51,150,127,124, 1,140,137,137,137,121,127,200,144, 33,170,234,213,171, 35, 62, 62, 30, 41, 41, 41,200,200,200,
-192,145, 35, 71, 0, 0, 81, 81, 81,136,138,138,194,165, 75,151,112,240,224,193,236,220,220,220,129,148,210, 31,159,201, 48,145,
- 4,150, 4, 9, 18, 36, 56, 42, 9, 22,192,224,150, 45, 91,182, 91,188,120, 49, 42, 85,170, 84,226, 2,235,202,149, 43,126, 67,
-134, 12,129,180, 76,131,132,103, 52, 15,133, 2,152, 80,189,122,245,193,131, 6, 13, 98,203,148, 41,131,123,247,238,225,143, 63,
-254, 64,133, 10, 21,112,247,238, 93,236,222,189,219,146,146,146, 50, 23,192,116, 74,105,214,179, 26, 22,204, 99, 14,232, 54, 18,
-167,196, 41,113, 74,156,255, 22, 78, 74, 41, 71, 41, 93,184,123,247,238, 37, 29, 59,118, 20, 30,135, 59, 59,118,236, 40,236,222,
-189,123, 9,165,116, 97, 81,226, 74,138, 35,137,243,223,200, 73, 41, 77,166,148,142, 56,127,254,124,197,119,222,121,231,251, 41,
- 83,166, 8,130, 32, 32, 52, 52, 20,235,215,175, 23,214,174, 93,251,109, 74, 74, 74,121, 74,233,184,103, 89, 92, 1,127, 15,114,
-151, 32, 65,130, 4, 9,127, 87, 18,191, 18, 66,226, 1, 12, 46, 97,234,220,235,215,175,127, 78, 41, 61, 43,133,178,132,103, 60,
- 15,221, 2,208,159, 16, 50,243,196,137, 19, 31, 1,160, 0,166, 80, 74, 47,252, 87,194, 64, 18, 88, 18, 36, 72,144,224,190,130,
- 56, 75, 8,153, 80,194,180, 19, 40,165, 25, 82,232, 74,248, 15,229,163,115, 0,250,252, 23,253, 46,237, 69, 40, 65,130, 4, 9,
-133, 87, 14, 25, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, 72,144, 32, 9, 44, 9, 18, 36, 72,144, 32, 65,130,
- 4, 9, 15, 7, 2,160,176,153, 0,187,188, 38,121,136, 25, 10,158,248, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,124,246,
- 56, 61,113, 23, 71,127, 60,213,160,148,122, 60, 96, 95, 47,171,184, 7,128, 54, 15,243,158,196, 41,113, 74,156, 18,167,196,249,
-239,229,180, 55,222, 9,242,123, 73, 24,241,252,105,246,251,195,212,115, 79,202,239,255, 21,206,103,237, 96, 61,168, 75, 71, 32,
- 17, 66, 4, 0, 2, 45,129,149, 73, 9, 33, 98, 4,148, 8,159,132,199, 96,218,204,143, 35,242,183, 14,151,226, 73,130, 4, 9,
-197, 42, 59,100, 78,149, 44, 15,128, 39,132,224,105, 43, 75, 74,178,158,123, 28,126,255, 47,115,254,219,193, 22, 21, 80, 50,153,
-108, 71,112,112,112,203,212,212, 84,193,126, 29, 74,165, 18, 12,195, 64, 46,151, 27,115,114,114,244, 15, 17, 9,223,132,133,133,
- 13, 72, 75, 75, 19, 24,134,129, 90,173, 6, 33,196,193,153,153,153,169,255,167, 3,165,108,217,178, 25, 70,163,209,199,245,186,
- 90,173, 54,221,190,125,219,247,191, 80, 64, 42, 20,138, 30,129,129,129,254, 41, 41, 41,148, 97, 24, 40, 20, 10,200,100, 50,216,
-255,115,153,153,153,203,189,229, 11, 12, 12, 60, 22, 24, 24,232, 47,190, 79, 8, 65, 90, 90, 90,102, 82, 82,210,243, 0,160,209,
-104, 14,234,116,186, 32,150,101, 33,147,201, 32,147,201,144,151,151,151,150,154,154,218, 88,170,174,254,157,216,176, 97,131,172,
-125,212, 27, 21, 88,106,172,197, 48,212, 79, 16, 72, 22, 71, 52,167,183,223,251,230,154, 55,239,247,236,217,147,255,135,243, 64,
- 99,123,203,226, 96, 9,241, 57,239, 79,104, 2,144, 10,224, 26,128,245,148, 82,227, 63, 29, 95, 42,149,106,110, 88, 88,216,160,
-220,220,220, 60, 66, 8, 37,132, 32,191, 26,192, 3,191, 60,207,199,167,166,166,214,243, 80,201,202,149, 74,229,236,240,240,240,
-215,242,242,242,242,236,124,148, 16,130,136,136,136, 2,124, 0, 96,179,217,226, 83, 82, 82,234,121,227,214,208,208,208,165, 26,
-141,230,127,121,121,121, 6,187, 32,114,238,145,113,174,196,175,167,164,164, 52,245, 36, 8,148, 74,229,188,176,176,176,215,237,
-126, 7, 33,132,134,132,132, 60,178,223,195,194,194, 94, 51, 24, 12, 5,252, 30, 26, 26,234,150,179, 48,191,187,227,116,118, 39,
- 33, 4, 33, 33, 33,143,236,206,167,145,243,153, 21, 88, 0, 24, 66,200,230,198,141, 27,183,216,187,119, 47,115,241,226, 69,166,
-106,213,170,224,121, 30,130,144,159,158,163,163,163,181, 15, 81,200,172,104,218,180,233, 43,251,246,237, 99, 54,111,222,204,212,
-175, 95, 31,132, 16,240, 60, 15,158,231, 81,163, 70, 13,205, 35, 22, 98, 62, 44,203,190,171, 84, 42,155,115, 28, 87, 13, 0,228,
-114,249, 5,179,217,188,151,227,184, 57,148,210, 92,111,120,172, 86,171, 54, 57, 57,249,129,176,137,137,137, 81, 62,172,219,244,
-122,253, 33,134, 97, 98, 28, 1,108, 23, 26,238, 50,177,248, 75, 41,189,145,146,146,210,168, 48,206,128,128, 0, 7,103, 97, 28,
-174,215, 4, 65,184,145,156,156,220,200,131,184,122,185,105,211,166,126,187,118,237, 34,119,239,222, 37, 26,141, 6,130, 32,128,
-231,121,216,108, 54, 84,175, 94,189, 88,235,167,249,251,251,235,199,141, 27, 87,161, 67,135, 14,216,184,113, 35, 94,125,245, 85,
- 52,105,210,228,138,120, 95,167,211, 5,157, 63,127,190, 82, 96, 96, 32,242,242,242,144,149,149,133,182,109,219,254,235, 51, 87,
-131, 58,165,166, 16,134, 4, 58, 10,127,142, 79, 63,114,234,222, 35,175,171,228,239,239,127, 82,169, 84,134,137,241,202, 48,140,
-219,184,118,190,102, 50,153,146, 82, 83, 83,235,120,200, 63,101, 1,116,145,201,100, 21, 89,150,173, 2,160, 44,199,113, 97, 0,
-160, 80, 40,146,100, 50,217, 45,155,205,118,201, 98,177, 92, 5,240,179,125, 33, 65,183,104, 31,245, 70, 5,194,229,245,204, 49,
- 11, 29,181,229,167, 87,206,187, 62,238,178, 86,149,247,107,251,168, 55, 54,120, 43,178,254, 65,113, 85, 46, 60, 60,252, 93,251,
-255,251, 37,180, 9,179,159,201,100,106, 34,147,201, 84, 28,199, 33, 41, 41, 41,117,201,146, 37,183, 23, 44, 88,208,146, 16, 50,
-203,211,194,163, 13,235,149, 62,206, 48, 76, 52,236,242, 65,160,124,252,225,227,119, 75,164, 98,146,201,100,243, 94,122,233,165,
-215, 55,108,216,160, 61,113,226,132,182, 90,181,106,142,242, 73, 16, 4,184, 26, 30,202,149, 43, 87,100,240, 1, 96, 25,134,153,
-219,179,103,207,190,171, 86,173,210,222,190,125, 91, 27, 25, 25,233,224,116, 22,111, 34, 34, 35, 35,189,114,107, 80, 80,208, 55,
- 29, 58,116,232,191,114,229, 74,249,150, 45, 91, 52,193,193,193, 8, 10, 10,130, 66,161,120,224,217,198,141, 27,123, 90,137,159,
- 97, 24,102, 94,183,110,221,250,175, 93,187, 86,123,244,232, 81,109,141, 26, 53, 32,147,201, 30,217,239,221,187,119,239,187,102,
-205, 26,237,153, 51,103,180, 21, 43, 86, 4,195, 48, 96, 24,230, 1, 62,134, 97, 80,170, 84, 41,175, 56,187,118,237,218,119,221,
-186,117,218,147, 39, 79,106,171, 84,169,226, 8, 79,167,238,185, 98,187,243, 41,231,124,246, 4,150,221, 92,186,170,113,227,198,
-237,247,238,221, 43, 3,128,147, 39, 79, 34, 61, 61, 29, 81, 81, 81,240,241,241,129, 74,165,130,201,100,162,197, 44,180,190,177,
-139, 43, 57, 0,108,250, 95,119,220,144, 3, 35,146, 45, 80, 40, 20,184,126,253, 58,100, 50, 25,125,132, 66,177,153, 94,175, 95,
-249,227,143, 63, 6,212,169, 83,135, 73, 73, 73, 65, 76, 76, 12,210,211,211,159,223,183,111, 95,221, 55,222,120,227, 13, 66,200,
-171,148,210,125,222,114,254,250,235,175,208,233,116,208,106,181,208,233,116,176, 88, 44,228,161, 3,154,101,163,111,221,186, 21,
-234,227,227, 3, 65, 16, 28,135, 75,255,181, 3,130, 32,160, 82,165, 74, 86, 15, 5, 99,244,237,219,183, 67, 53, 26, 13, 40,165,
- 5,248,120,158,135, 74,165,114,110, 41,128,231,121,196,196,196, 88, 61, 89,174, 68,113, 5, 0,171, 87,175, 70,120,120, 56, 66,
- 67, 67,161,211,233,160,209,104, 10, 84,232, 94, 22,224,104,223,190, 61, 62,253,244, 83, 76,159, 62, 29, 99,198,140, 41, 80,192,
-202,229,114, 4, 6, 6, 98,219,182,109,208,235,245, 40, 83,166, 12,228,114,249,191,223, 18,200,144,192,195,199,239, 56, 44,178,
- 47,182,170,202, 54,168, 91,102,145, 61,134,193, 48,128, 32,228, 87,153,132,128,114, 54, 33,227,207,211,247, 38,122, 17,158,145,
-183,111,223, 14, 85,169, 84, 94,185,131,231,121, 68, 69, 69,201, 60,228,159,142,177,177,177,155,134, 14, 29,170,168, 88,177, 34,
- 81, 40, 20, 96, 89, 22, 44,203,138,233,177, 12,165,180,140, 32, 8, 45,146,146,146,232,130, 5, 11,102, 18, 66, 94,162,148,254,
-234, 54,189, 83, 99,173, 28,179,208,113,255, 95,120,190,103,155, 15,176,109,253,184,231,155,214, 22,224,171, 53, 94,179, 91,110,
-158, 86,113,165,215,104, 52, 31,239,223,191,191, 82, 78, 78, 78,118,147, 38, 77, 62, 38,132,188, 83, 18,155, 49,103,100,100,156,
- 19,255, 43,149, 74,140, 26, 53, 10, 29, 58,116,240,111,219,182,237,104, 66,200, 91,148, 82,107,225, 74, 64, 22,125,240,216,205,
- 80,241,188,107,251,154,138, 70,245,203, 36,229, 55,196, 92,159,166, 16,120, 33,254,232, 95,241,245,188,240,239,204, 30, 61,122,
-244,219,176, 97,131, 15, 0, 44, 94,188, 24, 61,122,244, 64, 96, 96, 32,180, 90, 45, 20, 10, 5,228,114,121,129, 95, 15, 22, 33,
- 25,128,153,125,250,244,233,185,106,213, 42, 95, 0, 88,181,106, 21,186,119,239,142,160,160, 32,248,250,250, 66,169, 84, 66, 38,
-147, 21, 59,252,130,130,130,190,105,242,252,243, 3, 87,174, 92, 9, 0,248,232,157,119,208,225,133, 23,224,163,213, 64,171, 81,
- 66, 12, 11,165, 76,142, 23, 71,140,244,228,111, 6,192,172, 30, 61,122,244, 94,187,118,173, 47, 0,156, 56,113, 2,201,201,201,
- 8, 11, 11,131, 70,163,129, 82,169,116,248,153, 16, 2,141, 70,227,149,223,123,244,232,209,115,205,154, 53,190, 0,176, 98,197,
- 10,180,111,223,222,225,119,149, 74, 5,133, 66, 81,224,112, 21,155,238, 56, 95,122,233,165,158,235,214,173,243, 5,128,229,203,
-151,163, 77,155, 54, 8, 8, 8,112,132,167,200, 85,156, 56,122,154, 57,159, 73,129, 37,142,141, 10, 11, 11,235,189,127,255,126,
-198, 73, 28, 64,165, 82, 65,165, 82, 65,169, 84, 58,186, 9,139, 81,104,145,176,176,176, 1,251,246,237,115,188,100,161, 15,152,
-168,139, 93,113, 59,241,183,105,217,178,229,154,173, 91,183,170, 21, 10, 5,140, 70, 35,206,157, 59, 7,127,127,127, 40,149, 74,
-116,235,214, 77,214,184,113,227,160, 22, 45, 90,108, 36,132,244,245,102,134, 2,165, 20, 62, 62, 62, 5, 4,214,163,118, 33,107,
- 52, 26,108,217,178, 5, 50,153,204,109,193,229,252, 63, 52, 52,212, 27,127, 67,165, 82,225,208,161, 67,144,201,100,144,203,229,
- 96, 89, 22,114,185, 28,191,252,242, 11,222,123,239, 61,164,166,166,130, 16, 2,185, 92, 14, 95, 95,143,189,155, 36, 48, 48,208,
- 95, 20, 87,162,248,209,104, 52,144,203,229,132,101, 89, 34,118,225, 17, 66,136,183,125,234, 12,195,224,251,239,191,199,140, 25,
- 51, 48,118,236, 88, 44, 93,186, 20,181,106,213,114, 22,159,200,206,206, 70, 64, 64, 0, 2, 2, 2,160, 86,171, 31, 58, 45, 60,
- 77,112, 13,157,217,115,230,107, 33, 80,228, 15,242, 16, 0, 1,160,160, 16,168,128,164,123,215,240,201,167,159,123, 93,235,168,
- 84, 42, 28, 60,120,208, 33,130, 88,150, 5, 33, 4,206,194, 72, 60,194,195,195, 61,242, 41, 20,138,207,126,250,233, 39,229,247,
-223,127,143,181,107,215, 58,210,150, 78,167,131,191,191, 63,130,130,130, 28, 71,116,116, 52,249,246,219,111, 21,181,106,213,250,
- 12,192,175,238,227,156,250,105,203, 79,175,220,179,205, 7, 0,128,158, 31, 80,100, 92,153,250, 28,147, 57,209,239, 41, 22, 87,
- 44,128,241, 91,182,108,169, 30, 25, 25,169,214,233,116,183,227,226,226,130, 70,141, 26, 53,158, 16, 50,225, 17, 55,101,206, 18,
-173, 52,106,181, 90,221,188,121,115,229,180,105,211, 80,161, 66, 5,188,241,198, 27,129,139, 23, 47,238, 6, 96,125, 81,229,145,
- 51, 22, 44, 92,228, 79,105,126,250,161, 2, 45,240,155,158,124, 11,239,140,254,196, 43, 71,149, 42, 85,106,240,198,141, 27,125,
-156, 45, 73,206,149,191,115, 25, 37, 30,133, 9, 2,187, 21,131, 41, 93,186,244,192, 31,126,248,193,193, 25, 28, 28,236, 40,151,
- 88,150, 5,195, 48,216,191,127, 63,226, 62, 27,143,128,144, 72,204, 95,184,216,163, 59, 67, 67, 67,151,118,236,216,241,127, 43,
- 86,172,112, 92,171, 89,190, 60, 58, 53,126, 1,161,193,122, 4, 7,228,151,109, 84, 32, 56,125,233,166,199,250, 8, 0, 83,170,
- 84,169, 55,214,175, 95,239,227,220, 16, 20,253, 10, 0,121,121,121, 14,171,189,197, 98, 65,189,122,245,188,242,187, 51,167,104,
- 93, 19,197,154,107, 89, 47, 54, 96,138,226, 44, 85,170,212, 64, 81, 0, 3, 64, 96, 96, 96, 1, 14,185, 92,142,245,219, 86, 62,
- 80, 55, 60, 42,103,113,227,221,149,243,230,205,155,152, 54,109, 90,129,120, 23,173, 89, 81, 81, 81, 88,176, 96, 65, 81,156,238,
- 80, 31, 64,136,211,185, 5,128,210,233, 55, 5,192,159,110,158, 19,175,203, 1, 60,103,191,199, 3,200, 1,224,239,134,175, 48,
-158, 84,228,111,247, 19,226,242,188,235,119, 10, 10, 44, 66,136,152,123, 91, 2, 56,152,154,154, 42, 92,188,120,145, 57,113,226,
- 4,228,114, 57, 66, 67, 67, 81,191,126,125,177,251, 12,114,185, 28, 58,157,142,248,251,251, 39,137, 21,174, 24,120,206,125,233,
- 78, 66,134, 73, 79, 79, 23,118,238,220,201,172,122,169, 29, 44, 20,168,253,113, 28,218,119,238,140,237, 81, 74,200, 0, 60,127,
- 49, 21, 90,173,150,149,203,229, 54, 49, 18, 68, 78,231,177, 89,174,226,136, 16,226,171,211,233,190,253,249,231,159,213, 12,195,
- 32, 39, 39, 7,130, 32,160, 73,147, 38, 96, 24, 6,103,207,158,197, 71, 31,125,132, 77,155, 54,225,167,159,126,210,212,169, 83,
-231, 91, 66, 72, 53, 74,105,142, 83,225,181,203, 93,226,244,245,245,133, 86,171,117, 8, 44,209,207,206,166,110,241,121, 74,233,
-189,212,212,212,186, 69,113,242, 60,143,238,221,187,131, 16, 2,153, 76, 86,160,208,113,254, 85, 40, 20, 56,123,246,236, 3,137,
-207,157, 48, 20,253, 10, 0, 90,173, 22, 62, 62, 62,216,179,103,143,227,126,237,218,181, 97,177, 88, 16, 28, 28,140, 11, 23, 46,
-184, 43,184, 11,112,166,164,164,208,132,132, 4,178,106,213, 42,200,229,114, 4, 5, 5, 65,171,213,146,149, 43, 87,142, 87, 40,
- 20,209, 38,147, 73,176, 88, 44, 80, 42,149,243, 69,107, 22,203,178,134,172,172,172,160,194, 56,101, 50, 25,134, 14, 29,138,247,
-223,127, 31, 75,151, 46,197,219,111,191,253,128,133,203,100, 50, 33, 56, 56,216, 33,178,188,241,251,163, 11,160,199,204, 41, 80,
-156, 59,185, 29,231,207,236,130,192, 11,224, 5, 10, 74,121, 8, 28,112, 98,231,145, 74,247,111, 36, 68, 81, 80,192,222,145,161,
-202,202,229, 90, 4,171,170, 0,216,188, 39,213, 60,215, 83,250,100, 89, 22, 54,155, 13, 63,255,252, 51,174, 93,187,134, 29, 59,
-118,192,104, 52, 58,194,177, 97,195,134, 24, 56,112,160, 91,129,229,202, 73, 41, 93,113,247,238,221,218, 77,154, 52, 33,153,153,
-153,200,204,204,132,209,104, 4,207,243,224, 56, 14, 44,203, 66,173, 86, 67,163,209, 32, 44, 44, 12, 38,147,137,154,205,230, 21,
-133,113, 10, 2,201,202,187, 62,238,242,182,245,227,158,239,249, 1,197,134, 25, 4, 21, 74,171,242,126, 63,238, 59,112,243,129,
- 49,109, 1, 80,193, 94,234, 48, 0,181,241, 66,234,251,227,191, 24,254,196,227,168, 32, 6,207,153, 51,167, 65,147, 38, 77, 66,
-179,179,179, 47, 10,130, 64, 95,126,249,101, 92,190,124,185,218,226,197,139, 7, 3, 88, 88, 92, 78, 66, 72, 75,251,253, 17,206,
- 21,252,182,109,219, 94, 2, 48, 96,217,178,101,232,209,163, 7, 22, 47, 94, 28,235, 42,176,156, 57, 41,165,184,117,101, 63,110,
- 93, 61, 0, 65,160, 78, 86,112,247,255,169,151,238, 52, 24, 12,166,191,254,250,203,103,217,178,101, 8, 13, 13, 69,185,114,229,
-160,213,106,161, 86,171, 11, 84,174,206, 21,174,167,188,105, 52, 26, 77,183,110,221,242, 89,179,102, 13,130,130,130, 80,182,108,
- 89,104,181, 90, 40,149, 74, 71, 67, 96,213,170, 85, 88,253,105, 63,220,186,116, 6,221, 59,181,245,232, 78,173, 86,251,191, 21,
- 43, 86, 20, 48,121,132, 5, 4,128,149, 51,144,201, 9, 2, 90,191,148,111, 37,252,227,199, 66, 87,119,116,225, 36, 57, 57, 57,
-166,163, 71,143,250, 28, 63,126, 28,130, 32,160,108,217,178,200,203,203,131, 94,175,119,248,127,231,206,157,232,214,173, 27,190,
-255,254,123, 52,108,216,208,163,223,115,115,115, 77,103,206,156,241,249,225,135, 31, 16, 24, 24,136, 82,165, 74, 57,252, 46, 30,
-114,185, 28, 50,153, 12, 49, 49, 49,200,202,202,130,143,143,143,199, 56, 58,113,226,132,207, 15, 63,252,128,128,128, 0, 68, 71,
- 71, 59, 44,108,162, 40,154,177,232,211, 2, 28,106, 18,241,200,156,197,141,119, 87,206,151, 94,122, 9, 21, 42, 84,128, 94,175,
-135, 78,167,115,112, 23,197,233,164, 69, 90, 80, 74,247,186, 68, 97, 8, 33,100,171,211,247, 59, 19, 66,182, 58,255, 22,246,156,
-253,111,179,241,227,199,215,155, 62,125,250,180,134, 13, 27,174, 57,116,232,208,234,194,248, 10,227, 25, 63,126,124,236,244,233,
-211,167, 57, 63,239,230, 59, 15, 90,176, 40,165,196,238, 57, 22, 0,170, 86,173,138,244,244,116,168, 84, 42,212,175, 95, 31,169,
-169,169,240,241,241,129, 66,161, 0,165, 20,195,135, 15,151,141, 25, 51, 38,148, 97, 24,112, 28,231, 40,240, 11,233, 75, 23, 24,
-134, 65,163, 70,141,112,206,222,243,211,190,115,103, 68, 71, 71, 67, 28,196,161, 86,171, 49,124,248,112,242,222,123,239,177,162,
-245,130, 82, 10,163,209,136,136,136, 8, 77, 17, 93,111,239,108,220,184,209, 79,169, 84, 34, 39, 39,199,209, 69, 38,147,201,112,
-241,226, 69,204,154, 53, 11,175,189,246, 26,238,220,185,131,200,200, 72,188,255,254,251, 62,211,167, 79,127, 7,192, 36, 79, 5,
-177,143,143,143, 67, 92,105,181, 90,188,243,206, 59,108,227,198,141, 67,125,124,124,224,235,235, 11,177,187,143,231,121,148, 47,
- 95,222,163, 20, 23, 4, 1,219,183,111, 7,203,178, 30, 45, 88,246,132,231, 21,231,209,163, 71, 29,226,204,185, 85, 68, 8,193,
-185,115,231, 28, 98,206, 11, 78,202, 48, 12,116, 58, 29,194,195,195,161,209,104,160,213,106,201,154, 53,107, 38,148, 43, 87, 46,
-226,189,247,222, 99,178,179,179,153, 70,141, 26,161, 71,143, 30,172, 32, 8,176, 90,173,136,141,141,245,104,105,219,187,119, 47,
-150, 44, 89,130,183,223,126,219,173, 5, 75, 28, 4,169,215,255,227,115, 28, 74, 12, 2, 0, 43,103, 67, 94,174,209,209,133,203,
-243, 60,206,236, 57, 85,233,198,169, 43,177, 91,215,124, 47, 7, 0,211,158, 31,157, 95,139,232,177,104, 93,229, 22,129,138,163,
-123,210,173, 71, 61, 89, 6, 71,142, 28,137,137, 19, 39,162, 79,159, 62,216,185,115, 39, 62,250,232, 35,188,241,198, 27, 5, 44,
- 88,222,192,102,179,125,245,234,171,175,190,189, 97,195,134, 42, 31,124,240, 1, 35, 90,176,180, 90,173, 56,134, 11,102,179, 25,
- 70,163, 17,151, 46, 93, 18,222,124,243,205,203, 22,139,229,171,194,248, 56,162, 57,173, 85,229,253, 90, 62,154,169, 96,184,249,
-185,111,147, 23,202, 26,137,166,110,214, 75,149,219,208,142, 3,202, 6,128, 82, 80, 1, 16, 40, 96, 54, 27, 48,124,248, 40,217,
- 63, 25, 87,132,144,142,125,251,246,237, 50,120,240,224,114, 57, 57, 57,215, 57,142,179,137,247, 62,250,232, 35, 92,185,114,165,
- 29, 33,228, 86, 97, 93,162,133,112, 70,151, 47, 95,126, 20,207,243,148, 16,114,141, 82, 26,111,191, 53, 31,128,223,222,189,249,
-245, 71,116,116, 52, 0,196, 18, 66, 86, 1,200,114, 22, 99,206,230, 80,155,141,131,209,104, 46, 82, 88,137,231,148, 10,222,186,
-145, 86,169, 82, 5, 93,186,116,129, 92, 46,119, 52,210,156,187,199, 92,133, 86, 81,229, 7, 0,129, 16,130,200,200, 72,116,236,
-216, 17, 10,133,162, 0,167, 88,161,118,236,216, 17, 35, 39,125,140,175, 70,182,194,146, 87, 43,161,205,148,164, 34,221,153,151,
-151,151,187,123,247,110,205,251,111,191,141,231, 42, 86, 68,176, 94,143,210, 97, 33,208,168,148, 80, 56,187,137,120, 54,170,211,
-252,202, 78,144,201,100,168, 81,163, 6,146,146,146,112,243,230, 77,220,188,121, 19, 12,195,160, 73,147, 38, 14, 75,240,213,171,
- 87, 49,105,210, 36,152,205,102,175,253, 94,177, 98, 69,180,106,213, 10, 74,165, 18, 90,173,182, 64,215,160, 24,166, 57, 57, 57,
-168, 80,161, 2, 54,111,222,140,202,149, 43,123,228,172, 90,181, 42,154, 55,111, 94, 32, 60, 53, 26,141,163,222, 0,128,187, 71,
-115, 29,223,136,138,138, 42, 22,231,142, 99,119,176,108,231,110,152, 45, 2,178,243,108, 5, 94,136, 8,214,227,192, 15, 31,120,
-229,119,145,243,171,175,190, 66, 86, 86,150,163,238, 17,141, 37,162,113,162, 84,169, 82, 88,178,100, 73, 97,241, 35,106, 17, 82,
-200,253,206, 94, 54,164,196,231,196,196,165,154, 62,125,250, 52,215,247, 61,241, 57,223,119,121,223,226, 34,202,146,138,236, 34,
- 20,235, 5, 49, 19, 68, 69, 69, 65, 28,231, 33,102, 16, 71, 1,202,113,216,180,105, 19, 66, 67, 67, 29,135,159,159, 95,161, 9,
- 90, 28, 39, 52, 50, 37,127,152,193,182, 72, 5,110, 1,232,148, 66, 29,227, 68,120,158,199,198,141, 27,225, 44, 96,124,125,125,
-139,236, 46, 82, 42,149, 45,234,215,175,207,152,205,230, 7,196,213,244,233,211,209,183,111, 95, 84,174, 92, 25,130, 32, 32, 55,
- 55, 23, 45, 91,182,148,207,159, 63,191, 69,113, 4,150, 86,155, 63,158,223, 98,177, 96,207,158, 61, 8, 8, 8, 64, 80, 80, 16,
- 2, 3, 3,225,235,235, 43,206,132,164,158, 68, 6,165, 20,221,187,119,119, 84,124,206, 86, 43, 87,177,117,232,208, 33,175,186,
-222, 40,165,120,225,133, 23,160,211,233,224,227,227, 3, 31, 31, 31,108,223,190,221,241,204,243,207, 63, 15, 65, 16, 16, 26, 26,
-138,195,135, 15, 23,217,205, 73, 41,165, 10,133,194,241,188, 92, 46, 39, 43, 87,174, 28, 31, 19, 19, 19, 49,122,244,104, 70, 38,
-147,225,228,201,147, 56,127,254, 60,202,150, 45,235,245,152,172,204,204,204,251,227,199,143,231,199,143, 31, 15, 0,136,141,141,
- 69,102,102,102,178,120, 63, 59, 59, 59,173, 93,187,118, 5,198,101,164,166,166,166,253,235, 5,150, 32,128,179,114,200, 51,153,
-144,155,147,231,176, 6, 37, 39, 36,249,127,240,222,187,242, 89,195, 95, 7, 0,188, 55,119, 33,114,150,254, 93,128,253,248,126,
-223,208,151,102,173, 25, 7,160,155,135, 74, 7,102,179, 25,101,202,148,193,177, 99,199,144,147,147,131, 54,109,218, 20,176,144,
-138, 97,234,201, 20, 79, 41,181, 16, 66, 26,119,238,220,249,207, 57,115,230,148,175, 86,173, 26, 49, 24, 12,200,203,203,131,243,
-239,153, 51,103,232,234,213,171,111,228,229,229, 53,162,148, 90, 10,227,219,126,239,155,107,237,163,222,216,240,251, 73, 89,231,
-208, 10,151,245,247, 50,202,115,105,247, 84,134,108,227, 37, 19, 79,207,131,242, 0, 15, 1,148, 19,192,219,187,183,254, 65,113,
- 85,163,124,249,242,111,205,159, 63, 63,204,100, 50,221,179,217,108, 6,215,188,187,120,241, 98,116,236,216,241, 45, 66, 72,188,
-167, 1,233,246,119,148,254,254,254, 31,237,217,179, 39,246,254,253,251,137,141, 27, 55, 30, 71, 8, 25, 77, 41,181, 84,169, 82,
-197,239,248,241,227, 77,228,114,185, 50, 51, 51,243,172, 94,175,135,197, 98,169, 97,179,217, 44,245,234,213, 59,224, 54,126, 4,
-192,102,179,193,104, 52, 35, 43, 43, 7, 22,171,205, 94,102, 10,224,121,206,254, 43,128,179,151,163, 74, 5,235, 91,183,102, 68,
- 46,165, 20, 12, 33,153,199,207,220, 47, 85, 88,185, 84, 88, 87,150, 55,214, 43, 55,224,197, 89, 99, 65, 65, 65,144,203,229,248,
-254,251,239,113,250,224,118, 40,101, 20, 60,103, 3,103,179,130,183, 89, 32,151,201,240,251,201,155,104, 91,213,215,155, 56,162,
-193,193,193,232,212,176, 33, 58, 55,108,152, 63, 93,141,101,225,163, 82, 65,171, 80,231, 91,174, 0, 80,158, 1,188, 75, 74,130,
-232,206,176,176, 48, 28, 63,126, 28, 35, 71,142,196,140, 25, 51,160,209,104, 28,179,153, 47, 94,188,136,117,235,214,161,109,219,
-182,197,246,187,104,177, 27, 55,110, 28, 18, 18, 18, 48,119,238, 92,212,173, 91, 23,114,185, 28,153,153,153,104,212,168, 17,146,
-146,146,188,226,116,238,198, 83, 42,149, 5,172, 77,162,240, 43,110, 28, 57,115,190,222, 61, 2, 91, 14,174, 6, 1,193,145, 31,
-222, 45, 80, 23, 45, 94,187,191,216,156,159,124,242, 73, 1,119,122, 99,189, 42, 70,126,221,234,141,200,114,122,238,132,104, 92,
- 29, 55,110,220,135,132,144,173,227,198,141,251, 48, 46, 46,238,156, 55,124,133,220,255,197,254,219,201,233,218, 9,143, 2,139,
- 82, 74,149, 74, 37, 4, 65, 40, 32,170, 92, 7,212,138, 38, 63,103,147,162, 39, 49, 32, 8,130, 35, 49,184, 54, 87,101, 50, 25,
- 14, 31, 62,140,195,135, 15, 23,184,190,108,217,178, 34, 43,112,142,227,170,249,250,250, 22,176, 94, 41, 20, 10,140, 27, 55, 14,
-253,251,247,119,136, 43,133, 66,129,229,203,151,163, 94,189,122,176, 88, 44,213, 60,140, 71,201, 11, 15, 15,103,196, 2, 72,167,
-211,145,145, 35, 71,202, 56,142,115,132,137,120,136, 99,211, 60, 37, 22,113, 86,202,142, 29, 59,188,178, 96,121, 59, 6,137, 82,
-138, 83,167, 78, 21, 16,109,226, 44, 24, 0, 56,117,234,148, 99,124,150, 55,156, 50,153, 12, 60,207, 67,163,209, 16,133, 66, 65,
- 20, 10, 69,180, 40,174,100, 50,153, 35,190,157,199,228,121,242,251,189,123,247, 90, 22,117, 63, 57, 57,249,153, 93,142,193,106,
-179,193,152,103, 65, 78,174, 17,159,197,125,151,127,241, 51, 28, 5,112,180,241,224,145, 24,218,190,109, 43,151,126,126,111, 10,
- 24, 71,165,184,113,227, 70,200,229,114,108,222,188, 25,122,189, 30, 93,187,118,133, 94,175,199, 7, 31,124,128, 62,125,250,120,
-109,193,178,167,165, 44, 66, 72,227,119,222,121,231,207,207, 63,255,188,116,169, 82,165, 96,177, 88, 96,181, 90, 97,177, 88,112,
-237,218, 53,172, 94,189,250,110, 94, 94, 94, 99, 74,105,150, 39,190,237,247,190,185,182,105,223,123, 9,109,250,244, 48, 94, 76,
-218,134,196,196, 52,112,220, 61, 8, 60, 7, 43,151, 63, 35,153,231, 56,112, 28, 15,133, 66,166,255,124,234,187, 59, 5, 80, 48,
- 12,177,244,236,217,179,195, 19, 18, 87, 1, 0, 6, 95,191,126, 61, 39, 40, 40,232,140,253,178, 62, 33, 33,129, 0, 64,100,100,
- 36, 5,224, 60,192,125,176,125, 60,150,167, 77,155, 7,255,252,243,207,141,252,253,253, 45, 12,195,100,124,244,209, 71,165, 62,
-253,244,211,193, 0,230, 93,186,116,233,187, 87, 94,121,197,207,185, 5,159,150,150,118, 98,240,224,193,184,116,233,210,119,238,
- 77, 4,118, 11,150,201,132,148,180, 12, 12, 26, 60,193, 97, 58, 0,104, 1, 81, 65, 65, 49,100, 4,212, 0,144,154,116, 13,175,
- 15, 26,169,242,212, 16,112, 87, 1, 22, 99, 12,142,179,101,200,145, 70,125,124,124,242,187,217, 54,175,198, 47, 95, 12, 6,120,
- 43,168,205, 8, 88,243, 0,107, 46, 4, 75, 30,136, 66, 3,216,140,222,196, 19,245,241,241,129,143, 70,131, 80,127,255,252, 69,
- 28,101, 50,200,229, 44, 4, 27, 64,120,226, 16,162, 2,239, 85, 90,167,193,193,193, 16, 4, 1, 26,141, 6,183,110,221,194,208,
-161, 67, 97,181, 90,209,189,123,119, 88, 44, 22,152, 76, 38, 24,141, 70,196,196,196, 32, 47, 47,207, 43,191,139,229,188,216,219,
-243,238,187,239,162, 94,189,122,152, 52,105, 18,198,142, 29,139,152,152, 24, 12, 25, 50, 4,171, 87,175, 70,108,108,108,145,188,
-206,225, 41,114,138,241,226,218,149, 7,160,216,113,228,202,153, 63,238, 31, 15,196,251,168, 87, 91, 23,155, 51, 46, 46, 14, 41,
- 41, 41, 15, 88,174,196,255, 81, 81, 81, 88,188,120,241, 67,229, 89, 39,107, 81,152,155,219,157,220, 88,158,234, 35,127,108,148,
- 57, 46, 46,238, 92, 92, 92, 92,103, 66,200,214,184,184,184,206, 69, 88,176, 58,121,176,112,117, 66,254,152,171, 34,193,186,244,
-125,182,112,182,140,136, 21,168, 88,145, 59, 23,238, 90,173, 22,155, 54,109,130, 56,163,195,249,153,162, 4,214,175, 33,118, 19,
-177,221,114,229,124,222,165, 75, 23,148, 43, 87,174,128,245, 74,163,209, 20,153,104, 4, 65,192,237,219,183,113,246,236, 89, 52,
-108,216, 16, 89, 89, 89,144, 51, 12,222, 59,115, 6,213, 95,125, 21, 22,187, 69, 70,169, 84,226,237,183,223,246,106,160,250,205,
-155, 55, 3,156,207,131,131,131,227,155, 54,109, 26,117,236,216, 49,199,192,119,123,247,153, 67,104,120, 35, 94, 40,165,120,249,
-229,151, 11, 88,173,156,197,149,243,177,109,219, 54,175,186, 8, 41,165,104,218,180,169,195,122,229,235,235,139,159,126,250,201,
- 17, 87,205,154, 53,203, 31,175, 16, 22,230, 21,167,232, 15,251,192,118,152, 76, 38, 33, 39, 39,135, 57,113,226, 4,148, 74,165,
-195, 98,167,209,104,160, 86,171,161, 82,169, 30,106, 70,208,127, 1,148, 10,176,216,108, 48, 26,141,200,205,205, 95, 33,228,218,
-217,141, 5, 5,152,249,225, 39,167,137, 86,170,156,156, 28,252,254,251,239,248,241,199, 31, 81,183,110,221, 7, 6,185,123, 99,
-193,114, 74, 79, 41,132,144, 38, 99,198,140, 57, 50,101,202,148,200,192,192, 64, 88,173, 86,220,185,115, 7,223,126,251,109, 66,
- 94, 94, 94, 19, 74,105,138,247,129, 0,216,108, 28, 76,121,102,100,101,231,224,211,169,203, 11, 77,122, 0,144,158,124, 9, 93,
-186,246, 82, 62,185, 56,162, 25, 0,134,186, 84,230,171,240,247,154, 85,217,148,210,254,197, 20,109, 45,103,204,152,209,167,110,
-221,186,190, 89, 89, 89, 23, 0,224,205, 55,223,196,201,147, 39, 91, 19, 66,206, 81, 74,119, 19, 66, 98,235,212,169,211,250,205,
- 55,223, 4, 0,124,253,245,215,216,186,117,235,239,148,210,221,133,165, 37,177,139, 48, 55,215, 8,189,127, 4,238,221,220,235,
-209, 45, 10,153, 9, 84, 16, 60, 54,252,220, 89,173,156,203,167, 98,164, 31, 42,142,249, 19, 43,234, 14, 47,191,138, 14, 67,167,
- 67, 43, 7,166,189,222, 24, 49,254, 0, 52,129, 80, 52,251, 0,196,191, 76,254,139, 67,127,246,138,127,236,146, 37, 56,121, 37,
-127,133,151,232,144, 16,140,233,211, 7,212, 6, 28, 58,127, 30,107,119,239, 70,159,150, 45,161, 85,171,189,110,168,136,141,239,
-107,215,174,225,208,161, 67,168, 90,181, 42,174, 94,189, 90, 96, 57, 9, 74,169, 87,254,167,148, 82,113,114,146, 74,165,130, 92,
- 46, 71, 98, 98, 34, 58,119,238,236,104,224,239,221,187, 23, 99,198,140,193,192,129, 3,209,162, 69, 11,183,227, 98, 93, 57, 67,
- 66, 66, 28,134, 3,215, 9, 8,206,221,182,197,137, 35,119,156, 34, 30, 54,222,157, 57,167, 78,157,234,118,162,132, 55,156,206,
- 90,164, 8,156,112,177, 30, 65, 28, 15, 37, 10, 34,215,115, 0, 1,226,181,113,227,198,125,232,237,123,206,231,162, 5,204,219,
-174, 74, 86,236,243,116, 87,201,138,230, 98,119,208,233,116, 24, 54,108, 24, 38, 78,156,136,224,224, 96,143, 99,103, 68,229, 90,
- 20,126,254,249,193, 76,182,121,243,102, 79, 93,132, 23,253,252,252,234,181,106,213, 10, 89, 89, 89,184,123,247, 46,116, 58, 29,
-170,127,241, 5,206, 12, 29,138,231,150, 44, 1,211,170,149, 99,145,212, 51,103,206, 64,163,209, 92, 44,174,197,192,215,215, 23,
- 1, 1, 1,142, 62,117, 81,104, 57, 89,176,168, 23,137, 16,191,254,250,171,219, 86,226,195,140,193, 18, 51,255,145, 35, 71, 10,
-140,191,114, 22, 60, 71,142, 28,113, 88,176,196,215,188,233,218,210,104, 52, 84,228,211,106,181, 8, 12, 12,132, 74,165,130, 70,
-163, 41, 32,174,188,177,222,121, 90, 72, 84,163,209, 28,211,233,116,254,226,125,185, 92,142,156,156,156,204,180,180,180,231,255,
-213, 93,132,160,224,172, 28,140, 70, 19,114,115, 74,126, 45, 73,113,194,201,166, 77,155,240,194, 11, 47, 60, 32,174,196,176,126,
- 8,209, 17, 79, 8,105, 49,111,222,188,163,179,103,207, 14,200,205,205,197,119,223,125,151,149,155,155,219,194,105, 28,145,119,
- 92, 2,133,205,106, 69,158,201, 12, 67,110,126, 24, 92, 63,183,241,153, 22,214, 85,170, 84,121,125,200,144, 33, 33, 57, 57, 57,
-215, 5,225,111,123,202,236,217,179,113,253,250,245,215, 1,236, 6,176,100,234,212,169, 21,107,214,172, 89, 10, 0,166, 78,157,
-122, 23,192,146,162,202, 14,171,189,139, 48, 55, 55,223,234, 97, 50,164,150, 76, 58,181,139,140,194,198, 92, 61, 76, 87,142, 56,
-115, 89, 38,147, 97,248,240,225, 56,115,250, 52, 90, 71,102, 35, 38,220, 23, 52,251, 30, 20,173, 62,193,169, 20, 13,102,205,249,
-181,216,220,235,156, 38,241,204, 90,183,206,237,189,235,221,186, 21,203,239,151, 47, 95,134, 70,163, 1,207,243, 15,212, 55,197,
-245,191,179,112,153, 51,103, 14,198,140, 25,131,229,203,151,227,204,153, 51,120,238,185,231,208,166, 77, 27, 36, 39, 39,227,244,
-233,211, 48,155,205, 94,187,211,121, 92,220,229, 27,231,177,235,208,111,184, 29,127, 19, 9,137,119, 31, 58,222,157, 57, 93, 5,
-214,166, 93,127,225,229,182,117, 30,138,243,147, 79, 62, 65,114,114,114, 1,203,149,243,196,176,194, 44, 88,174, 90,196, 5,169,
- 46, 99,157,196,115,139,139,216,113, 61,119,125, 30, 0,146, 1,200, 60,188,231,122,158, 26, 23, 23,183, 71,180,124,217,121,101,
-133,141,191,114,219, 69, 40,138, 33, 49,131,184, 90,166,196,255, 58,157, 14,190,190,190,240,245,245,133, 94,175,247,104, 25, 18,
- 5, 86,211, 27, 57, 5,198,114,137,150, 44, 0, 24, 56,112,224, 3, 22, 44,231, 5, 57,221,193,108, 54,239,221,187,119,111,237,
- 46, 93,186,200, 46, 94,188, 8,153, 76, 6, 65, 16, 96,105,216, 16,207, 45, 89,130,179,239,190,139,230,183,110,193,100,181, 66,
-173, 86, 99,251,246,237,214,188,188,188,189,197, 45, 47,156, 5,150, 78,167,131,159,159,159, 67, 96,120,163,202,197, 76, 91,212,
-248, 6,241,112, 30,228,239, 77,102, 22, 43, 82,231,113, 55,132, 16, 24,141, 70,199, 96, 77,111,172,140,206, 93,132,206, 25,143,
- 97, 24,248,251,251, 59, 10, 13,209,130,229,173,245,206,211, 66,162, 90,173, 86,127,233,210,165, 10,226, 50, 18,169,169,169,104,
-213,170,213,149,127,125, 77, 43, 0, 86,142, 71,174,209,132, 92, 99, 94, 73,118,107, 1, 0,190,255,254,123, 92,187,118, 13, 86,
-171, 21,113,113,113, 15, 8,171,226, 12,114,119,147,174,174,213,169, 83, 71,120,241,197, 23,113,228,200, 17,168, 84, 42, 27,165,
-180,216,235, 87, 9, 84,128,149,227, 96, 50, 26,145,107, 48,252, 39, 44,151,151, 46, 93,202,242,245,245, 61, 12,192,231,202,149,
- 43, 50,157, 78,135,242,229,203,195,100, 50,101, 1,200,178,135,175,133, 16, 50,253,237,183,223,158, 11, 0, 54,155,109,122, 81,
- 99,218, 40,165,176,113,118,177, 94,130,225, 40,166,165,194,202,164,135, 89, 46,197,185, 66, 21, 4, 1,111,189,249, 38,218, 68,
-102,227,165,186, 33, 48,220,191, 2,173, 95, 8,136,127, 89,204,154,243, 43,206,221,240,122,168, 37, 5,128,246,205,186,161, 86,
-213, 7,151,247,106,210, 58,191, 45,118,224,247, 99, 72, 74, 77, 40,182,223, 13, 6, 67,161,150, 42,111, 45, 88, 34,167,184, 92,
-138, 92, 46, 71,237,218,181, 81,169, 82, 37,236,217,179, 7,117,234,212,193,213,171, 87,113,245,234, 85,220,186,117, 11,103,206,
-156, 65, 70, 70, 70,177,227,232,167, 29,107,145,145,147, 14,165, 66,137,244,204, 84,220,190,119, 19, 97, 65,225,143, 28,239,142,
- 6, 66,167, 79, 1, 0,145, 33,126,197, 18, 88,206,156,159,127,254,249, 3,162,189, 4,150,222, 57,230,225,188,184,239, 63,118,
-176,133, 88,133,140,129,129,129, 26,231,254, 83,134, 97,224,231,231, 71,102,204,152, 33, 99, 24, 6,190,190,190,240,243,243,131,
-104, 22,244, 4,165, 82,105, 44, 91,182,172, 70, 76,128, 98, 6,212,235,245,178, 25, 51,102,144,101,203,150, 21,106,213,242, 48,
- 6,107,118,255,254,253,223,136,143,143, 15, 8, 13, 13,197,253,251,247,161, 84, 42,243, 51, 69,203,150,104,122,227, 6,172,249,
- 99,138,112,249,242,101,124,245,213, 87, 6,179,217, 60,187,184, 1,229,227,227,131,160,160, 32, 71,215,160,104,193,113, 18,139,
- 94, 13,173, 44,202, 20, 47,182,248, 30,166,171,200, 85,100, 13, 30, 60,184,128,216,242, 22, 10,133,130, 19, 87,106,103, 24, 6,
- 86,171, 21,117,234,212, 65,114,114,178, 35,179, 56, 91,238,188, 17, 88,158, 22, 18,101, 89, 22, 22,139, 5,205,154, 53, 3, 33,
- 4, 11, 23, 46,124, 54,186, 29, 5,129,248,248, 4, 33, 50,178, 50, 66, 66, 77, 16,132,146,219,253,133,227, 56, 12, 25, 50,164,
-128,197, 74,156,169, 40,118,241, 83, 74, 97,179,217, 30,122,209, 86, 49, 95, 63,202,250,111, 20,112,116,109, 25, 12,166,127, 93,
- 20, 70, 71, 71,235,237, 93,134,174,112, 63,219, 15,127, 47,201, 64, 8,153, 18, 31, 31, 95,179, 74,149, 42,104,222,188, 57,182,
-109,219,182, 25,192,143, 46,150,194, 47,197,255, 69,199,133, 61, 28, 77,102, 24, 12, 37,111, 13, 45,170,161,247, 40,194,109,226,
-196,143,209, 38, 34, 19,221,159,243,195,138,173, 7,209,175,182, 6,176,168,138,205, 39,186, 37, 40,170, 28,202,213,104,240,192,
-125,181, 95,126,215, 92,185, 26, 13, 32,187,123,181,216,126,119,118,179,155,165, 3, 30, 41, 60, 7, 13, 26,132, 15, 62,248, 0,
-237,218,181,195,213,171, 87,177,111,223, 62, 92,189,122, 21, 35, 71,142, 68,108,108, 44,158,123,238,185, 98,113,110,217,181, 1,
-217,185, 89, 96, 8,131,244,172, 52,152,204, 70,140, 29, 50,241,145,227, 93,196,205, 93,113, 0,128,141, 59, 79, 62, 52,231,135,
- 31,126,136,196,196,196, 2,150,171, 71, 25,119,245,111,133, 91,129,149,150,150,230,182,191, 47, 36, 36, 36,169,109,219,182,161,
-247,239,223,135,143,143,143, 71,113, 69, 8,105, 35,174,149,145,152,152,232,150,211,215,215,215,218,182,109, 91,121, 68, 68, 68,
-129,217,131, 58,157,238,129,204,229,202,105, 47,152,114, 8, 33,111, 53,110,220,120,197,182,109,219,180,149, 42, 85, 66,118,118,
- 54, 40,165, 88,190,124, 57,134, 15, 31, 14,181, 90,141,203,151, 47,163,107,215,174,121,121,121,121,111, 57,175,129,229,142,179,
-176, 22,153,184,138,189, 27,113, 85,164,223,157, 51,233,188,121,243, 48,109,218, 52,124,248,225,135, 69, 70,204,210,165, 75, 1,
-151,238, 60,119,156,148, 82,204,154, 53,171,196, 56,211,210,210,150,187, 88,159, 22,190,244,210, 75,236,221,187,119, 11,136, 42,
-231,195, 77,129, 84,128,211,211, 66,162, 50,153, 12, 97, 97, 97,152, 50,101, 10,130,130,130, 16, 30, 30,254,128,229,197, 83, 28,
- 61,100, 37,240, 88, 57,121, 42,156,248,124,250,199, 77,190, 91,181, 69,174, 82, 2,135,247,109, 68,118, 70, 98, 65, 11,172,245,
-239, 41,209,202, 58,173, 97, 57,249,187, 87,238, 52,155,205,152, 57,115, 38, 62,253,244, 83,124,250,233,167,222,196,251, 35,249,
-221, 27,145,229,150, 83,160, 68,171, 11,128, 90, 23,137,234,177, 1, 16,138,185, 86,231, 63, 20,239, 66, 66, 66, 2, 34, 35, 35,
-113,245,234,213, 26, 50,153,172,128, 34,224,121,222,172, 86,171, 15,120,193,121,118,211,166, 77, 53, 39, 76,152,128,105,211,166,
- 1,192,128,189,123,247,190, 66, 8, 49,121, 18,105,174,156, 2,165, 68,163,245,135, 90, 23,129,234, 53,252, 33, 8, 92,137,248,
- 93,172,252, 92,173, 87,197, 92, 72,218,109, 89, 7, 0,127,254,190, 25, 19,223,173,129,229,191, 28,197,252, 99, 64, 45,255,100,
- 84, 15, 73,129,144,114, 17,239,247,171,135, 89, 63, 28, 7, 0,236,219,235, 49,142,138, 92,215,216,100,180, 62,146,223,157, 45,
- 85,206,223,241, 52, 6,203, 29,167,216, 56,204,201,201, 65,102,102, 38, 86,172, 88,129,215, 95,127, 29,201,201,201,184,117,235,
- 22,174, 92,185,130, 53,107,214, 56,102,167, 23, 55,142,222,123,243, 35, 76,152, 53, 26, 20, 20, 85, 42, 84,199,184,161,159,162,
-126,173,134,143, 28,239,174,240,100,189, 42,138,115,222,188,121, 15,149,150,254, 19, 2,171,168, 86, 4,195, 48, 8, 14, 14,118,
- 36, 14,231,132,247, 48, 45, 93,153, 76, 6,142,227, 28, 99,123,196, 3, 0,186,116,233,130,159,127,254,217,155,153, 17,219, 8,
- 33,255,171, 86,173,218,183,159,125,246,153, 79,243,230,205,217,200,200, 72,212,175, 95, 31,151, 47, 95,198, 47,191,252, 98, 91,
-180,104,145, 33, 47, 47,111, 32,165,116,231,195,148, 75,226,214, 51,206, 71,113, 90, 57, 86,171,245,238,213,171, 87, 35,102,205,
-154, 37, 99, 24, 6,115,231,206,117,100, 70,113,161, 86,103,236,219,183,143, 19, 4,161,200, 46, 25,155,205,118,247,234,213,171,
- 17, 95,124,241,133,140, 16,226,224,100, 24, 6,206, 27, 43, 23,135,211,157,184, 20, 39, 60,184, 59,220,185,221, 93, 28, 23,181,
-144, 40,203,178,184,124,249, 50, 38, 78,156, 8, 66, 8, 54,110,124, 54,198,232,156,185,152,186,236,185,234,161, 1, 93, 58, 52,
-169, 9, 66, 96,181, 60,216, 3,228,147,145,235, 16, 87, 47,125,177, 22, 63,190,215,199, 27,177,115,237,192,129, 3,129, 51,103,
-206,100,101, 50, 25,230,204,153, 83, 96,177, 95,215,120,223,191,127, 63,247, 48,221,123, 98,126,182, 90,173, 48, 26, 31,206,106,
- 66, 41, 61, 20, 55,117, 66,219,149,223,255, 42, 39,196,130,195,123, 55, 34, 43,211,253,212,116,165,156,197,178, 21,155, 56,133,
- 92,118,247, 31,142,186,249, 61,123,246,156,176, 97,195, 6, 22,192,185, 71,224,217,252,205, 55,223,116,232,213,171, 87, 96,197,
-138, 21,241,221,119,223, 41,252,253,253,235, 18, 66,136, 59,145,230, 33, 28, 55, 79,159, 58,225,181, 21, 63,252,170,100,136, 21,
-135,247,109, 68,150,139, 88,127,208, 26, 45,199, 55,203, 55, 89, 21, 10,249, 37, 79,229,186,179,245,170, 36, 43,196,174,253,135,
-226,165,121,243, 81,190,126,123, 76,159,209, 6,223, 76,237,133,217, 47, 42, 96, 93,223, 15,181,122,174,196,234, 73, 29, 1, 0,
-145,223,120,105, 29, 97, 21,184,227,198, 66,149,153,165,182,139,154,226, 89, 73, 69,191, 23, 85,134, 23,215,130,197, 48, 12,202,
-149, 43,135,242,229,203,163,113,227,198,168, 83,167, 14, 90,182,108,137,211,167, 79,227,244,233,211, 24, 57,114,100,161,226,202,
-155, 56,106,209,168, 45,142, 54,189,244,200,113,227, 26,239, 37, 1,111,210,210,144, 33, 67, 0,224, 63, 97,205, 98, 31, 38,240,
-196, 4,249,168, 91,199,136,156, 22,139,197,209,245,230,188,174,146, 56,232,221,203, 25,122, 59, 9, 33,177, 31,127,252,241,187,
-106,181,186,101, 94, 94, 94,101,187, 5,230,178,217,108,222,109, 52, 26,231, 80, 74, 51, 31,197,173,206,203, 50,184,115, 66, 81,
-239,102,100,100,180,111,223,190,253, 78,150,101,203,185,110,196,235, 46, 3, 11,130,112, 43, 41, 41,169,200,169,234,105,105,105,
-237,219,181,107,231,150,211, 93,193,224, 13,167,187,248, 17, 4,161, 80,113,229, 77, 1,228,105, 33, 81,150,101,161,211,233,240,
-211, 79, 63, 33, 56, 56,248,153,202, 96,167,206, 39,207, 44,234,126,139, 96,213, 94, 0, 33, 47,125,177,246,206,158, 84, 75,153,
- 22,193,202,219, 63,190,255, 74,233,162,222, 73, 77, 77,109,247,250,235,175,255,198,178,108, 57,215,240,119, 23, 23, 28,199,221,
- 76, 76, 76, 44,246,178, 7,148, 82, 92,186,116, 73, 24, 52,104, 80,106, 74, 74, 74,175,135,241,255,184,137,243,103, 79,251,108,
-120,208,139,109, 27,212, 7, 3, 88, 10, 31,212, 75, 9, 64, 89,185,236,238,152, 15,231,190,249, 79,198, 25,165,244, 36, 33,100,
- 74,253,250,245, 71,162,208,117,193,243,199, 82,121,224,177, 18, 66,102,119,232,208,225,253, 17, 35, 70,248,183,107,215,206, 26,
- 21, 21,117,194,217, 58,239,125, 58, 74,122,251,185,106, 33,209, 47,182,121,161, 61, 8,161, 22,139,217, 67,195, 8, 20,148, 82,
-133, 66,126,233,216,169,132, 90,158,172,243,246, 29, 51, 74,188,107,126,216,176, 97, 24, 54,108,152, 35, 61, 45, 92,216, 20, 27,
-206, 30, 64,207, 90,241, 48,127,213, 4, 68, 95,218,235,134, 30, 0,124,244,241,160,146,180,100, 22,152,124, 85, 82, 99,176,100,
- 50, 25, 82, 83, 83,113,249,242,101, 36, 37, 37, 33, 47, 47, 15, 23, 46, 92,128,213,106, 69, 70, 70, 6,106,212,168,241,208,238,
- 44,169, 56,250, 39, 57,255, 75,221,132,197, 18, 88, 28,199,197,123,218,245,220,102,179, 21,107,150,145, 92, 46, 55, 85,170, 84,
-137,184,155,109, 32,254,215,233,116, 70, 47, 11,198, 76, 0, 19, 1, 76,180,239, 55,133,244,244,244, 71, 86,129, 60,207, 39,148,
- 41, 83, 70, 86,152,112,177,135, 77,146, 7,183, 25, 0, 52, 44,225,138,160,196, 57,221,196,143,161,106,213,170,142,177, 92,174,
-107,154,216, 55, 65, 45,114,212,173,167,133, 68, 13, 6,195,253,246,237,219,243,206,247,157, 23, 34,125,166, 65,232,237,142,175,
-188, 81,102, 79,170,165, 12, 0,136, 34, 11,148,222, 46, 34,222,141, 0,154, 63,110,167,221,184,113,195,242,194, 11, 47,124,159,
-147,147, 51,148, 82,250,208,163,244, 63,252,100,225,135,255,182,104,161,148,158, 4,240, 90, 9,240,156, 37,132, 12,158, 57,115,
-102,175,153, 51,103, 86, 0, 16, 12, 64,237,173, 72, 43, 32,178, 46,164,148,248,218, 96, 28,199,197,151, 47, 95,190, 88,150, 26,
- 79,101,188,205,102, 43,178,158, 56, 7, 63,124,120, 4,200,223,198, 45,205, 43, 78,147,201,148,222,176, 97, 67,121, 49,253,150,
-236,173,223, 35, 34, 34, 16, 25, 25,233,248, 21,225,122,221,147, 59, 57,142,139,143,142,142, 70,112,112,112,161, 43,180,187,142,
-185,242,134,179,164,227,168, 40,206,200,200,149, 37,206, 89, 82,122,225,153, 22, 88,226, 30,131, 37,137,164,164,164,199,178, 55,
- 10, 45, 9,243,218,223,150,162,250,248,143, 34, 45, 45, 45,232, 81, 57, 60, 45, 36,154,148,148,212,242,191, 26,190,123, 82, 44,
- 3, 30,184,102, 23, 91,255, 52, 12, 6, 67,105, 74,233, 67,141,204,239,217,179, 39, 15, 9,206,130,120,249,211,232,182,212,212,
-212, 18, 47,211, 31, 71, 61,145,158,158, 94,243,191,234,247,199,225,206,127, 11,231,191, 29,140, 20, 4, 18, 36, 72, 40, 68, 24,
- 72, 34, 73,130, 4, 9, 18, 30, 18, 4, 64,155, 66, 10, 87,175,103,238, 16, 66,218, 60, 68,225,189, 75,226,148, 56, 37, 78,137,
- 83,226,148, 56, 37,206,255, 22,167, 39,238,146,158, 57,252, 79,182, 82, 31,219, 1,160,141,196, 41,113, 74,156, 18,167,196, 41,
-113, 74,156, 18,231,127,237,144,186, 8, 37, 72,144, 32, 65,130, 4, 9, 18, 74, 24,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,
-144, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 36,176, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36,
- 72,144, 32,225,225, 65, 74,112, 61, 78, 9, 18, 36, 72,144, 32, 65,130, 4, 9,162,192, 34,132, 56, 84, 22,165,148, 72,193, 34,
- 65,130, 4, 9, 18, 36, 72,120,162,130,228, 25,211, 34, 14,129, 37, 9, 43, 9, 18, 36, 72,144, 32, 65,194, 63, 41,176,158, 37,
- 45, 82,192,130, 37,137, 44, 9, 18, 36, 72,144, 32, 65,194, 63, 37,176,158, 37, 45, 34, 89,176, 36, 72,144, 32, 65,130, 4, 9,
- 79,133,192,122,102, 45, 88,207,146,114,148, 32, 65,130, 4, 9, 18, 36,252,187, 4,214,179,164, 69,164, 89,132, 18, 36, 72,144,
- 32, 65,130, 4, 9,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,120,186,241, 88, 23, 26, 37,132,180,145, 56, 37, 78,137, 83,226,
-148, 56, 37, 78,137, 83,226,148, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 4, 73, 96, 73,144, 32, 65,130, 4, 9, 18, 36, 72,
- 2, 75,130, 4, 9, 18, 36, 72,144, 32, 65, 18, 88, 18, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36,
- 72,144,240, 15,129, 0,112, 59, 19,128, 82,186,203,107,146,135,152, 77,224,137, 95,226,148, 56, 37, 78,137, 83,226,148, 56, 37,
-206,103,143,211, 19,119,113,244,199, 83, 13, 74,233, 99, 59, 0,180,145, 56, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,252,
-175, 29, 82, 23,161, 4, 79, 45, 12,150, 16,194, 62,236,253, 39,197, 41, 65,130, 4, 9, 18, 36, 60, 77, 96, 11,169,224, 42, 2,
-248, 16,128,159,211,229, 99,148,210, 56,151,231,126, 0,160,117,186,100, 0, 48,137, 82,122,213,139,111, 43,236,252, 42,251, 33,
- 0, 48, 1, 48, 3,200, 1, 96,147,162,231, 31, 23, 87, 13, 1,116,182,255,223, 74, 41, 61, 92,156,251, 79,138,243, 73, 33, 50,
- 50, 82, 19, 16, 16,208,238,228,201,147,202, 11, 23, 46, 96,255,254,253,116,217,178,101,214,140,140,140, 29, 9, 9, 9, 70, 41,
-197, 60, 19,105,190, 61,128,113,246,211,233,148,210,237,143,200, 71,180, 90,237, 72,157, 78,215, 81,165, 82, 69,114, 28, 71,242,
-242,242, 18, 12, 6,195, 78,142,227,190,160,148, 10, 15,193, 89, 63, 56, 56,120,112,108,108,108,165, 27, 55,110,220,189,115,231,
-206, 42, 0,219, 1,180, 47, 93,186,116,255,152,152,152, 82,231,206,157,187,146,154,154,186,132, 82,250,231, 63,229, 78, 9, 18,
- 36,129,229, 30, 19, 41,165,253, 92, 50,224, 3, 15,181,106,213,170,235,142, 29, 59,180,130, 32, 64, 60, 52, 26, 13, 7, 96,128,
-135,239, 6, 29, 58,116,168,204,208,161, 67, 95, 74, 72, 72,168,151,147,147,243, 60, 0,104,181,218,163,161,161,161,127,206,155,
- 55,111, 77,187,118,237,226,237, 66,171, 88,150, 17,185, 92,254,122, 64, 64, 64, 71,142,227,234, 80, 74, 33,151,203, 79,102,100,
-100,108,183,217,108,223, 80, 74,109, 15, 81,152, 41, 89,150, 29,166, 82,169,218,115, 28, 87, 19, 0, 88,150, 61, 99, 54,155,183,
-115, 28,247, 37,165,212,242, 16,156,106,165, 82, 57, 76,175,215,183,181, 88, 44, 53, 1, 64,169, 84,158,201,206,206,222,105,177,
- 88,190,164,148,154,158,130,138,134, 5,208,153, 82, 42, 7, 0,153, 76,214,173, 97,195,134,101, 8, 33,130,184,227, 57,195, 48,
-181,121,158,103,236,207,119, 38,132,252, 73, 41,229,138,195,249,194, 11, 47,148, 98, 89,150, 82, 74, 9,165,148, 97, 24,166, 86,
-113, 56, 75, 10, 33, 33, 33,211, 4, 65,136, 44,234, 25, 63, 63,191,122, 39, 79,158,172,178,110,221, 58,254,171,175,190,202, 28,
- 56,112,160,207,208,161, 67,217,133, 11, 23,126, 9, 96,148,235,243,193,193,193,179, 25,134, 9,246,230,251,130, 32,164,166,166,
-166,142,150,138,164,127, 28,227, 22,237,202,105, 70, 41, 48,172,173, 47, 99, 23, 46, 15,141,168,168,168, 21,175,189,246,218, 43,
- 53,107,214,100, 41,165,176,217,108, 48,155,205, 85, 14, 31, 62,220, 98,227,198,141,245, 0,244, 42,102,190,236, 60,110,220,184,
-175, 39, 77,154, 20, 34,151,203,137,205,102,107,176,110,221,186, 23, 7, 15, 30,124,106,201,146, 37,207,245,238,221,219, 87,188,
-254,201, 39,159,116, 32,132,188, 75, 41, 93,243,164,221, 41, 65,130,132,194, 5,150,206,158,153,147, 0, 28, 19, 45, 88,174, 15,
-253,241,199, 31, 91, 88,150, 21, 45, 88,207, 27, 12,134, 48, 23,171,151, 59,148,237,223,191,127,195, 13, 27, 54, 76,235,221,187,
-119,162, 86,171,173,212,163, 71,143, 28, 66,136,108,221,186,117,181,203,151, 47,175,233,210,165, 75,255, 86,173, 90,189,247,219,
-111,191,237, 7,144,226,101,193, 83, 61, 48, 48,112,211,204,153, 51,203,180,111,223, 94, 17, 28, 28, 12, 74, 41, 18, 18, 18,162,
-126,249,229,151, 23, 63,251,236,179,247, 8, 33,221, 41,165,231,139,211, 82,212,104, 52, 27, 62,251,236,179,136, 23, 95,124,145,
- 13, 15, 15,135,201,100,194,133, 11, 23,218,108,223,190,189,217,210,165, 75, 71, 17, 66,122,122,219, 74,180,115, 62,239,231,231,
-183,241,187, 15, 62, 8,107,240,250,235,108, 96, 96, 32, 40,165, 72, 73, 73,105,115, 96,229,202, 22, 67,102,206, 28, 69, 8,121,
-153, 82,122,236,105, 74, 40, 74,165,146, 89,181,106,213,115, 74,165, 18, 0, 96,177, 88, 16, 27, 27,251, 72,187,157,203,229,114,
-230,139, 47,190,168,195,178, 44,172, 86,171,144,147,147, 67,123,244,232,241,143,116, 91, 19, 66,162, 19, 18, 18,252, 20, 10,133,
-219,251, 60,207,163, 89,179,102,229, 20, 10, 5,190,248,226, 11, 91,106,106,106,237, 5, 11, 22,156, 92,189,122,117,240,151, 95,
-126,217,211,157,192, 98, 24, 38, 56, 62, 62,222, 45, 39,207,243,176, 90,173,224, 56, 14, 22,139, 5,213,170, 85,147, 74,163,167,
- 3,101, 0,224,215,211, 38, 0, 8,124, 84, 50,157, 78, 87,181,111,223,190,108, 74, 74, 10,228,114, 57,172, 86, 43, 18, 19, 19,
- 17, 27, 27, 43,251,254,251,239, 43, 23,151,175, 74,149, 42,131,227,226,226, 66,127,253,245, 87,235,247,223,127,111,110,211,166,
-141, 98,224,192,129,250,102,205,154, 53,141,142,142,102,190,253,246, 91,243,174, 93,187,172,255,251,223,255, 84,211,166, 77, 11,
-253,237,183,223, 94, 1,176,230, 73,187, 83,130, 4, 9,133, 11, 44, 17,199, 40,165,221, 0, 64,161, 80,212, 46, 85,170,212, 10,
-142,227,194,237, 86,156, 68,185, 92,254,133,213,106,253,203, 94, 65,109, 22, 4,161,171, 39,203, 85,255,254,253, 27,254,246,219,
-111,179, 14, 31, 62,156,149,150,150, 22,190,101,203, 22,211,123,239,189,119, 11, 0,110,220,184, 17,211,165, 75,151,168,225,195,
-135,199,183,107,215,110, 94,203,150, 45, 71,236,222,189,123, 39,242,187, 30,139, 20, 87,177,177,177,135,246,237,219,231,235,239,
-239, 95, 80,205,149, 45,139, 17, 35, 70, 40,186,118,237, 90,190,117,235,214, 7, 9, 33, 77, 41,165,103,189, 17, 66, 21, 43, 86,
-220,245,199, 31,127,248, 4, 4, 4, 32, 51, 51, 19,137,137,137,200,203,203,131, 94,175, 71,239,222,189, 21,205,155, 52, 46, 53,
-124,228,168, 93,132,144, 54,222,136, 44, 66,200,243,141,171, 87,223,181, 58, 46,206,199,118,231, 14, 52, 26, 13,114,115,115, 1,
- 0,190,190,190,168, 87,174, 28,123,124,229,202,168,126, 99,199,138,156, 79, 92,100, 17, 66, 84, 0, 64, 41, 53, 19, 66,182,202,
-100,178,110, 74,165,146,233,214,173, 27,118,237,218, 69, 76, 38, 19, 11, 0,106,181,154,235,214,173, 27, 52, 26, 13, 44, 22,139,
- 0, 96,107, 97,150, 38,119,156,114,185,156,105,217,178,101,222,177, 99,199,210, 69, 78,173, 86,107,107,217,178,101,144, 82,169,
-212,112, 28, 71,139,226,124, 76, 34, 18,215,174, 93, 43,112, 45, 39, 39, 7, 41, 41, 41, 72, 75, 75,131,217,108, 70,102,102, 38,
- 4, 65, 32, 26,141, 38, 69, 16, 4, 48, 76,190,177,173, 48, 78,133, 66,129,203,151, 47, 23,184,198,113, 28, 12, 6, 3,204,102,
- 51,172, 86, 43,114,114,114, 52,190,190,190, 21,171, 87,175, 30, 15, 96,115,122,122,250, 23,137,137,137,183,165,226,233, 31,193,
-157,173,127,153, 74, 3,176, 0,184, 89, 2,124, 2, 0,236,223,191, 31, 73, 73, 73, 72, 77, 77, 69, 74, 74, 10,162,163,163,241,
- 48,221,110,151, 46, 93,154, 87,187,118,109,114,234,212,169,159, 1,124,189,118,237,218,151,210,211,211, 23,143, 25, 51, 38,240,
-243,207, 63, 79, 31, 59,118,236, 16, 0, 63,174, 93,187,246,245,154, 53,107,118, 57,115,230,204,220,127,194,157, 18, 36, 60, 6,
-212, 7, 16, 98,255,159,106, 47,119,131,156,206, 79,219,243,173,248,156, 5,128,210,205,175, 8,241, 60, 5,192,159, 78,239,137,
-231,143, 12,177, 43,134,138,135,187,135,194,194,194, 70,182,106,213,106,214,137, 19, 39,170,221,191,127, 63,224,254,253,251, 1,
- 39, 78,156,168,214,170, 85,171, 89, 97, 97, 97, 35,197,231,236, 51, 11,224,116,238, 60,213, 82,113,232,208,161, 50,155, 54,109,
-154,190,107,215,174,172,218,181,107, 91,254,248,227, 15,174, 93,187,118,201, 0, 56, 0, 92,187,118,237,146,119,239,222,205, 55,
-104,208, 64,243,219,111,191,221, 61,120,240,224,236, 13, 27, 54,132, 1,144, 21,194, 9, 66,136,220,223,223,255,167,189,123,247,
- 62, 32,174,156, 81,170, 84, 41,108,221,186, 85,239,239,239,191,153, 16,162, 40,194,157, 32,132,168,213,106,245,198,221,187,119,
-251,248,250,250, 34, 57, 57, 25,114,185, 28,161,161,161,200,202,202, 66,226,253,251,184,125,229, 10, 24,139, 5,115,166, 78,246,
-213,104, 52, 27, 8, 33, 74, 79,156,126,126,126, 27, 87, 79,155,230,147,182,107, 23, 78, 77,153, 2,171,213,234,232, 90,181, 90,
-173, 56, 56,116, 40, 82,126,255, 29,223, 78,156,232,227,231,231,183,145, 16,162, 46,138,179, 36,224,204, 73, 8, 25, 10, 32, 29,
- 64, 58, 33,100, 40,165,244,112,108,108,236,137, 11, 23, 46,160,105,211,166, 88,191,126,125,173, 49, 99,198, 12, 29, 51,102,204,
-208,245,235,215,215,106,218,180, 41, 46, 92,184,128,216,216,216, 19,206, 99,165,188,225,220,187,119, 47, 90,181,106,149,177,126,
-253,250,152,137, 19, 39, 78,155, 56,113,226,180,181,107,215,150,111,213,170, 85,198,220,185,115,205, 69,113, 62, 14,191, 59, 91,
-150,156, 15, 65,248,187,110,137,140,140, 76,222,180,105, 19,122,247,238,205, 40,149,202,251,125,250,244, 81, 29, 56,112,128, 2,
-216, 90, 28,119,154, 76, 38, 24,141, 70, 24, 12, 6,220,184,113, 67, 51,115,230,204, 38,159,126,250,105,133, 93,187,118, 69,125,
-248,225,135, 67, 66, 66, 66, 78,134,135,135,151,121,210,126,151, 56, 1, 0,137, 0,172,246, 70,221,237, 71,225,108,221,186,117,
-141, 10, 21, 42,132,173, 59, 23,128, 12, 69, 21, 8, 10,127, 8, 10,127,240, 65,245,113, 77,217, 1,165, 75,151, 14,243,245,245,
-109, 88, 28, 78, 74,233,206,191,254,250,171, 3,165,116, 9,165,148,167,148,110, 24, 59,118,236, 32, 66,200,198,177, 99,199,190,
- 77, 41,221, 96,191,190,236,244,233,211, 93, 40,165,187,255, 9,119, 74,105, 73,226,124,200, 6,126, 81, 90, 36,132, 16,178,149,
- 16,178,117,252,248,241, 45, 1, 4,185,156, 55,114,126, 14,128,210,221,175,120, 56, 93, 15, 1,208,201,233,189,144,146,242, 15,
-227, 20, 88,132, 82, 42,182,196,143, 17, 66,182, 0, 56,166, 80, 40,106, 63,247,220,115,221,182,109,219,230, 27, 18,242,247,119,
- 67, 66, 66,176, 97,195, 6,223,234,213,171,119, 83, 40, 20,181, 1, 28,211,235,245, 91,224,166, 43,209, 14,255,161, 67,135,190,
-244,234,171,175,102,215,174, 93, 27, 0, 50,207,159, 63,175,109,208,160,129,129,227, 56,194,113, 28,105,208,160,129,225,252,249,
-243, 90,155,205,150, 83,191,126,125, 93,235,214,173,111,141, 30, 61,186, 63, 0,117, 17,126,232, 59, 99,198,140,232,128,128,128,
-162, 18, 2,114,114,114, 16, 22, 22,134,161, 67,135,134,203,229,242, 55,138, 52,235,177,236,176, 25, 51,102,132,250,251,251, 35,
- 35, 35, 3,209,209,209,176, 88, 44,184,124,249, 50, 76,134, 92,216,114,178, 97,203,206, 68,202,245,171,240,151,179,232,223,181,
-115, 24,203,178,195, 60, 88, 71,134,125, 51,118,108,152,229,214, 45,220, 88,191, 30, 60,247,160, 97,134,179, 90,113,230,235,175,
- 97,138,143,199,244, 65,131,194,148, 74,229,176, 39,108,185,250,156, 82,170,161,148,106, 8, 33,243, 26, 53,106,244,189, 70,163,
- 25, 26, 23, 23,215,126,199,142, 29, 47,238,219,183,175, 5,199,113,114,142,227,228,251,247,239,111,106, 50,153, 88,149, 74, 5,
-150,101,169,183,156, 13, 27, 54, 92,161,209,104,134, 44, 94,188,184,253,238,221,187,251, 31, 63,126,124, 24,207,243, 74,158,231,
-149,199,143, 31,127,219,104, 52,202, 41,165,124, 97,156, 79, 26,114,185, 28, 10,133, 2, 26,141, 6, 77,154, 52,185,190,108,217,
- 50, 91,116,116,180,124,227,198,141, 1,145,145,145,186,133, 11, 23,102,230,228,228,204,240,150,207,106,181,194,108, 54,195,104,
- 52,194,100, 50,225,143, 63,254, 40, 55,124,248,112,214,100, 50,241, 93,186,116, 73,183,217,108,230,177, 99,199,234, 3, 3, 3,
-223,147, 26,172,255, 8, 56, 0,185,118,129,101,118, 78,203,132,144,154,162, 53,214, 27,100,102,102, 46,253,230,155,111,162, 25,
-149, 63, 14, 88, 58, 98,141,240, 25,118,248, 45, 68,114,153,247, 17, 26, 93, 1,175,188,242, 74, 40,165,116, 97, 9, 84,116,155,
- 41,165, 61, 41,165,155, 30,230,253,199,237, 78, 66, 72, 25, 31, 31,159,245,122,189,254,128,143,143,207,122, 66, 72,153, 71,245,
-115,187,138,164, 77,183,106,178,248,118, 21, 8,237, 86, 77, 22,223,174, 98,241,215,106,146,240,116,194, 69,139, 56, 35,133, 82,
-218,153, 82,218,121,250,244,233,211,156,158, 23,207, 53, 94,242,119,166,148,118,118, 73,163, 91, 31,135, 95, 88,103,229, 40,122,
-202,121,182, 96,169, 82,165, 86,172, 88,177,194,215,245,197,251,247,239, 35, 59, 59, 27, 19, 38, 76,240,125,245,213, 87, 71,221,
-189,123,247, 53, 15,223, 82, 38, 38, 38,214,233,215,175,159,218,106,181,102, 8,130,192,100,103,103,179,126,126,126,188,248,128,
-159,159, 31,159,149,149, 37, 55, 24, 12, 50,158,231,205,175,190,250,170,114,208,160, 65,245,156, 45, 88, 15, 72,218,144,144,182,
- 29, 59,118, 84, 22,118,223,102,179,193, 96, 48,192, 96, 48,192,106,181,162, 73,147, 38,170,101,203,150,181, 3,176,184,176,119,
- 84, 42, 85,219,182,109,219,202,211,211,211,225,231,231,135,219,183,111,227,230,205,155, 48,231,230,194,154,155, 13,107,110, 14,
-184,156,108,208,236, 44,164, 93,189,132, 6, 85,171, 40,126, 80,169,218, 3,152, 93, 24,167, 94,175,111,219, 96,192, 0, 86,167,
-211,161, 69,191,252,249, 3,191, 85,173, 10,202,243, 16,120, 30, 60,199,161,253,229,203,176,217,108, 96, 24, 6,245,211,211, 89,
-253,202,149,109, 1,204,250, 39, 18,185, 74,165, 98, 87,173, 90,213, 87,169, 84,130, 82, 74, 44, 22, 11,118,236,216,241,200,156,
- 43, 87,174,236, 47,114, 90,173, 86, 90,163, 70,141, 7, 50,146,217,108,166, 79, 75,102, 87, 42,149, 80,171,213,176, 90,173, 40,
- 91,182,172,177, 95,191,126,135,166, 78,157, 90,154, 97, 24,157, 66,161,216,150,150,150, 54, 45, 33, 33,225,134,183,124, 54,155,
- 13, 22,139, 5, 22,139, 5, 70,163, 17,215,175, 95, 15, 47, 87,174, 28, 25, 58,116, 40,159,151,151, 23, 51,127,254,252,107, 59,
-118,236,208,206,152, 49,163, 7,128, 17, 82,113,251,228, 96,183, 66,251,149, 14, 98, 13,114, 25,114, 1,248,218,197, 64, 15, 66,
- 72,131,106,213,170, 5, 92,184,112, 33,131, 16,114, 4,192, 26, 74,233,253,162,248, 4, 65, 32,130, 32,224,237,231, 51, 49,180,
-161, 12, 54, 91, 22,178,178,178,112,251,246,109,156, 63,127, 30, 71,143,158,127, 40,119,170,213,234, 55,124,124,124,218,169,213,
-234,178, 28,199, 49,185,185,185,183,243,242,242,118, 9,130,176,148,186,118, 35,120,129,199,229, 78, 17, 58,157,110,230,135, 31,
-126,216,216,207,207, 15,127,253,245, 87,204,218,181,107,103,226, 17, 7,205,171,229,204,183,179,231, 46,140,138, 10,245,199,233,
-125, 63, 71, 77, 91,178,238, 91, 0,209, 82, 42,126, 38,242, 33, 45, 68, 96,253, 9,160,147,125,118,121,231, 71,224,127,164,247,
- 31, 74, 96, 21,226, 33,112, 28, 23,238,108,185,162,148,226,254,253,251,184,119,239, 30, 82, 82, 82, 16, 16, 16, 0,171,213, 26,
-238, 77,253,154,147,147,243,124, 80, 80, 80,158, 92, 46, 55, 27,141, 70,104,181, 90, 65, 46,151, 83,251,119,136,125, 22, 34,111,
- 54,155, 9,203,178, 54, 95, 95, 95, 31,179,217, 92, 5, 69,140, 21,163,148, 62, 31, 20, 20,228,246,158,217,108, 70,110,110, 46,
- 12, 6, 3,114,115,115, 97, 54,155, 17, 22, 22, 6,142,227,234, 20,217,132,229,184,154, 33, 33, 33, 72, 72, 72,128, 70,163, 65,
-124,124, 60, 44,185, 57,176,230,228,128, 51,100,131,207,202,130,144,157, 13,193,144, 13,155, 37, 15, 81,149,170, 66,156, 97, 88,
- 24, 44, 22, 75,205,160,160, 32, 24, 12,127, 15, 39,163,118, 97,197,113, 28, 56,251,160,103,177,219, 48, 56, 56, 24,226, 12,195,
- 39,212,106, 48, 19, 66,198, 48, 12, 51, 79,165, 82,177, 67,134, 12,193,253,251,247, 11,164,137, 33, 67,134, 56,198, 92, 53,107,
-214,108,191, 90,173,230, 82, 82, 82, 96, 54,155,229,222,112,150, 45, 91,246,246,132, 9, 19,142, 89, 44,150,232,200,200, 72,127,
-179,217,108,172, 92,185,114,164, 70,163, 9,179, 88, 44,124,189,122,245,150,106, 52, 26, 91,110,110, 46,229, 56,142, 60, 37,153,
- 29,132,144,252, 56,226, 56, 4, 7, 7, 27, 82, 83, 83,143,102,100,100,244,125, 24, 62,155,205, 38,206,208,130,209,104, 4,165,
- 20,127,253,245, 23,212,106,181,156,231,249,115, 28,199,105,229,114, 57, 24,251,224, 46, 9, 79, 44,158, 91, 84,241, 87,206,142,
-107, 16,234,255, 92, 23,157, 65,171,148, 25,132,219,207,149,253,238,243,243,107, 95,237,255,134,239,164, 73,147,202, 4, 7, 7,
-171,175, 93,187,102,154, 60,121,114,185, 85,171, 86, 17, 79,141,159,187,119,239,110,252,240,195, 15, 3, 59,118,236, 24,163, 82,
-169, 72, 86, 86, 22, 82, 82, 82,144,148,148,132,155, 55,111,210,211,167, 79, 95, 55,155,205,235,139,227,206,200,200,200,101,195,
-135, 15,127,181,110,221,186,114,209, 34,106, 48, 24,106,239,221,187,183,235,111,191,253,214, 20, 64,177,211,229,221,187,119,215,
-127,244,209, 71,186, 14, 29, 58, 84, 81,169, 84, 76, 73,184,211, 25, 12,195,132,249,248,248, 96,215,174, 93,240,247,247, 7,195,
- 48, 97,143, 26, 95, 38,171, 16, 21, 25, 30, 4,211,193,217,168, 18, 82, 6, 38,171, 16, 37,165,226,103,199,130, 85,200,173,250,
-162, 5,202,131, 72, 50,142, 27, 55,238, 67, 66,200,214,113,227,198,125,232,206,130,101,255,203, 59, 63,231,244,188,185,196, 5,
-150,151, 45, 29,220,187,119, 15, 9, 9, 9,184,119,239, 30,210,210,210,192, 48, 76, 81, 1, 82,192, 95,132, 16, 97,231,206,157,
- 1,135, 14, 29, 50,212,175, 95, 63, 83, 28,223,194,113, 28,177,217,108,196, 62,238,133,220,190,125, 91,113,224,192, 1,255,139,
- 23, 47,134, 33,127, 32,154,224, 33, 66, 30,184, 38, 10, 43,231,195,100, 50, 65,173, 86,123,229, 87,177, 2,252,235,196,137,124,
-113,149,155, 99,239, 26,204, 2,159,157, 5,106,200,129,146,183, 65, 9, 10, 98,202,243, 58,252,156, 33,138, 43,171, 93, 96, 89,
- 44, 22,216,108, 54, 8,130, 0,142,227,254,137,132,189,168,118,237,218,117,126,252,241,199,129,247,238,221,123,224,126,247,238,
-221, 49, 98,196, 8, 12, 31, 62,252, 98,167, 78,157, 78,255,252,243,207, 24, 54,108, 24, 4, 65,120,142, 16,146, 69, 41,253,173,
- 40,206,113,227,198, 29,191,123,247,238,158, 43, 87,174, 12, 9, 13, 13, 85,213,172, 89,243,106,205,154, 53,101, 63,254,248, 99,
-216,155,111,190,121,226,197, 23, 95,188,245,251,239,191, 7,238,218,181, 75, 45, 8, 66, 93, 66,200,189,127,122, 29, 44,179,217,
-236,176, 56,153, 76, 38, 88,173, 86,160,136, 65,237,158,210,166, 24,183, 28,199,137,220,228,199, 31, 55, 97,255,254,253,204,249,
-243,231,162,135, 12, 25, 42, 14,164,151, 74,218, 39, 35,172, 58, 40, 25,242,213,152,231,130,212,239,213, 10, 50, 40, 89,146,123,
-249,171, 15,115,111,150,214, 27,194, 74,105, 45,209,229,252, 35,167, 77,155, 26,113,241,226, 37,243,132, 9, 19, 46,244,233,211,
- 39,244,189,247,222,171,182,113,227,198,166,132,144,111, 40,165,153,133,240, 42, 6, 14, 28,120, 52, 52, 52,180,252,146, 37, 75,
-146,239,222,189, 27, 96,179,217,180, 54,155,205,106, 48, 24,174,229,229,229, 29,176, 90,173,187, 40,165, 39,138,227, 94, 95, 95,
-223, 90, 3, 6, 12,144,103,102,102,194, 62,251, 22,201,201,201,104,220,184,177,108,203,150, 45,213, 31, 38, 12,210,211,211,103,
- 19, 66,246,172, 94,189,186,157, 94,175,175,171, 82,169,194, 1,240, 57, 57, 57, 73, 6,131,225,212,195,184,179, 64, 57,199,243,
- 73, 39, 78,156, 40,175,215,235,113,231,206, 29,240, 60,159,244,168,241,166, 86, 48,119,207,236,219, 82,170,106,112, 57, 28, 56,
-116, 4,106, 5,115, 87, 74,205,207, 60,196, 49, 82,112, 22, 78,110,132,209,161,184,184, 56,205,244,233,211, 17, 23, 23,119,206,
-157, 5, 75, 20, 90,113,113,113,231,196,231,156,158,223, 87,162, 2,171, 40,129,196,178,108, 98, 74, 74, 74,128,191,191,191, 67,
- 88, 37, 36, 36, 32, 33, 33, 1, 74,165, 18,183,111,223,134, 82,169,188,239, 77,163, 67,163,209, 28,175, 93,187,118,229, 27, 55,
-110, 40, 38, 79,158, 92,234,196,137, 19,250,198,141, 27,215,208,104, 52, 60,165, 20, 38,147,137,185,112,225,130,207,172, 89,179,
-162,158,127,254,121,203,243,207, 63,127,114,221,186,117, 70, 20,177,232, 40, 33,228,216,253,251,247, 99,202,150, 45, 43,138,181,
- 2,162,202, 89,104, 1,249, 93,155, 44,203,158, 44, 50, 80, 88,246,204,229,203,151,219,104,213, 42, 88,114,178, 97,205,205, 6,
-151,147, 3, 62, 39, 11,124, 86, 22, 96,200,134,146,227, 32,231,109,208,168,213,184, 23, 31, 15,150,101,207, 20,197,169, 84, 42,
-207, 36, 37, 37,181,241,247,247,119, 84,158, 54,142,203, 63,120, 30, 22,142,115, 88,176,228,114, 57,238,222,189, 11,165, 82,121,
-230, 73,167, 96,134, 97,120,113, 41,134, 66,252,129,176,176, 48,161, 65,131, 6, 24, 54,108, 24,120,158,183, 71, 3,105, 65, 8,
- 57, 64, 41,205, 45,140, 83, 16, 4,230,194,133, 11, 47, 93,187,118, 77, 38,151,203,153, 23, 94,120, 33,182, 73,147, 38, 22,165,
- 82, 9,133, 66,193,230,230,230,250,238,218,181, 75,109,179,217,136,157,243,137,173,131, 37,166,157, 7,154, 66,246,193,232, 70,
-163, 17,185,185,185,200,200,200, 96, 53, 26, 77,229, 26, 53,106, 28,177, 88, 44,235, 57,142,251,246,198,141, 27,217,133,113,218,
- 5,153, 67,108, 9,130, 0, 74, 41,120,158,135,205,102,131, 66,161, 16,246,238,221,135, 89,115,102, 98,197,183,171,104,215,174,
- 93,201,150, 45, 91, 32, 8, 66,188, 84,158, 62, 17,124,145,185,102,170, 26, 28,111, 48,239, 93,157,251,253,149,108,195,164,239,
-231, 30,183, 40,101,217,245,154,135,213,140, 41, 87, 89,230,239, 31,192, 44, 94, 58, 47,237,135, 85, 27,174,221,185,115, 39,251,
-203, 47,191,108, 88,185,114,101,191, 83,167, 78, 69, 1,112, 43,176,124,124,124,202,190,254,250,235,175,103,100,100, 40, 86,173,
- 90,181,252,222,189,123,123, 41,165,215, 93,202,174, 58,132,144,207, 1,200, 1,132, 33,127,252,215, 78, 74,233,202,162,218,105,
-132, 16,236,222,189,251,129,217,126,194,163,169,242,140,154, 53,107,214,186,114,229,202,230,196,196,196,239, 93,111,106,181,218,
-174,177,177,177,175, 28, 59,118,236, 99, 74,233,181,226, 16,231,229,229,141,221,176, 97,195,231, 50,153, 44,146,231,249, 4,163,
-209, 56,246,145, 45, 88, 54, 97, 80,220,226,181, 95, 27, 45,124,105,141, 82,118,199,100, 19,222,148,146,242, 51,109,189, 2,236,
- 99,176,196,255, 0,136,203,249, 41,251,127,139,211,179, 41, 78, 86, 43,139,139,213,203,221,189, 20,148,224, 34,231,133,173,228,
- 62, 30,192,243, 0,142,201,229,242,121,175,190,250,234,172, 31,126,248,193, 55, 59, 59, 27, 73, 73, 73, 72, 78, 78, 6,203,178,
-208,235,245, 88,180,104,145, 49, 41, 41,105,158,243, 59,174, 43,190,139,121, 34, 56, 56,248,248,170, 85,171,194,191,250,234, 43,
-246,181,215, 94,187,221,169, 83,167, 42,139, 22, 45,186,161, 80, 40, 40,207,243,196,108, 54,147,183,223,126,187,252,156, 57,115,
-110,201,100, 50,109,239,222,189,137, 78,167, 59,102, 47,120,220,135,120, 74,202,206,159,126,250,233,165,209,163, 71,171, 44, 22,
-139, 91,203,149,120,205,223,223, 31, 7, 15, 30,180,100,100,100,236,240, 96,181,216,185,237,215, 95,154,253,175, 79, 31,133, 45,
- 39, 27,182,156,108,112,217,217,224,115, 50, 65,114,179, 33,231, 57,104, 20, 2,194,163,213,224,140, 62,248,229,207, 83, 54,179,
-217, 92,228,130,132,217,217,217, 59, 15,172, 88,209,226,249, 50,101,216,131, 35, 71,194,106,179,161,195,229,203, 14, 81,101,181,
- 90,177,185,102, 77,240,132,224,185,183,222,194, 85,142,227,178,179,179,119, 62,141,153,224,244,233,211,201,253,250,245, 59, 33,
- 8, 66,157,226, 88,115,156, 42,159,156,220,220, 92,164,166,166,242,105,105,105, 38, 0, 72, 78, 78,206,216,178,101,203, 5, 65,
- 16,158,127, 24,206,146,128,205,102,123,192,250,196,243,124,190,149, 49,223, 82,160,252,229,151, 95,154, 93,184,112, 65,113,246,
-236, 89,236,223,191,255,185, 31,126,248, 97,124,153, 50,101,106,222,190,125, 59,209,147,104,115,183, 88, 47,236,227, 11,215,173,
- 94,143,193,131, 7,147,196,196, 68,172, 89,179, 6,158, 22, 61,149, 80, 98, 48,128,227, 53,150,189,171,115, 59,253,122, 39,231,
-240,125,227,100, 0,219,169,145,163,165, 74,149, 58, 93,183,110, 64, 48, 0,152, 77,124,120,197,138, 21,155,179, 44,171,180,167,
-225,186, 65, 65, 65,139, 0, 52,113, 71,218,189,123,247, 70,161,161,161,181,127,251,237,183, 83,247,238,221,219,231, 42,174, 0,
-160,114,229,202,159,157, 61,123,182,131, 92, 46, 39, 78,105,132, 2,112, 43,176, 90,180,104, 81,185, 76,153, 50, 65,191, 94,241,
- 67,182,162, 2,168, 44, 11, 96,213,224,253,107,225,182,162, 26,162,163,143, 4,249,251,251, 63,151,153,153,121,170,152, 86,188,
-210,189,123,247,254,101,217,178,101, 85, 95,124,241, 69, 37,128, 7, 4, 86,213,170, 85,123,252,254,251,239, 61,135, 12, 25, 82,
-139, 16,210,197,203,221, 58,196,124,116, 27, 64,207,146,140,180, 29, 87,233, 46,216,215, 44,147,240,159,193,159,143,233,217,199,
-134,194,186, 8,159, 23, 4,161, 43,195, 48,176, 90,173,113, 97, 97, 97,155,123,247,238,221,125,252,248,241, 62, 65, 65, 65, 14,
-203,213,162, 69,139,140, 55,111,222,220,104,181, 90,255, 34,132, 76, 76, 72, 72,232, 26, 25, 89,104,189,144, 51,127,254,252,181,
- 93,186,116,121,237,173,183,222, 50,214,172, 89, 83, 95,165, 74,149,188, 67,135, 14,249,180,109,219, 54, 91, 38,147,209,131, 7,
- 15,250,150, 47, 95,222, 68, 8, 81,253,254,251,239,105, 71,142, 28, 41, 31, 23, 23,247, 13,242,167, 77, 23,134,213, 83,166, 76,
-153,208,181,107,215,242, 65, 65, 65,200,206,206, 46, 32,178,196,255,106,181, 26,137,137,137,216,180,105,211,125,155,205,246,141,
- 7, 75,198,151, 11, 23, 45, 30,213,178,193, 11, 81,122,173, 6,137,241,183,193,103,101, 0,134, 92, 40, 57, 27, 52, 74,138,168,
- 10, 90,176, 50, 29,174, 37,230, 98,197,161, 63, 19, 57,142,251,178, 40, 78,139,197,242,229,136, 57,115, 70, 29, 94,188, 56,170,
- 76,175, 94, 56,191,114,165,163, 75, 80, 20, 88, 60, 33, 40,221,186, 53, 24, 63, 63, 76, 91,178, 36,201, 98,177,124,249,164, 19,
-132, 32, 8, 50,139,197, 82,148, 63, 32, 8, 66,252,249,243,231,215, 18, 66,114, 8, 33, 45,236,183,246,184,179, 94, 57,115, 50,
- 12, 35, 84,171, 86,237,199,176,176,176,151, 0, 24,170, 85,171,246,163, 74,165,106,101,177, 88, 94, 16, 4, 33,254,175,191,254,
-218, 68, 8, 73, 36,132,136,173,140, 39,186, 14,150,205,102,195,196,137, 19, 49,125,250,116,140, 27, 55,206,225, 95,177,155, 48,
- 51, 51,179,220,129, 3, 7, 20,123,247,238,165, 75,150, 44, 73,123,237,181,215,252,223,122,235, 45,255,175,190,250,234, 93, 0,
- 99, 11,227, 28, 59,118, 44,150, 44, 89,130,193,131, 7, 63,168,174,100, 50, 33, 62,254, 46, 76, 38, 19,157, 63,127,126,130, 92,
- 46, 15,248,230,155,111, 52,111,190,249, 38,145,202,211, 39,130,143, 52,253, 62,126,199, 94,198,204,163,148,238, 17,111,232,245,
-122,205,143, 63,254,196, 2,192,198, 13,155,228,148, 82, 63,113, 97,216,239,191,255, 94,221,184,113,227,208,194, 72, 55,108,216,
-144, 57,121,242,228,160, 65,131, 6,189,184,103,207, 30, 45, 33,228, 87,123,161,159, 10,128, 7, 16, 12,224, 96, 72, 72, 72,196,
-218,181,107, 43,180,107,215, 78,231,201,161, 57, 57, 57,223,172, 93,187,182,236,156, 3,126,248,213,240, 18,238, 10,189, 64,253,
- 41, 2, 67,115, 80,205,231, 14,250,246,237, 27, 57,111,222,188,175, 1,212, 45,134,184,170,254,242,203, 47,255,180,108,217,178,
-114,111,189,245, 86,252,193,131, 7,239, 18, 66, 62,115,243,104,218,128, 1, 3,110, 47, 95,190,188,130, 32, 8,219, 9, 33, 47,
- 82, 74,175, 72,201, 71,130,132, 34,242,151,187,241, 75,132,144,205, 28,199,117,101, 89,118,139,243, 66,163, 97, 97, 97,163, 44,
- 22, 75, 4, 33,132, 42, 20,138,196,164,164,164,121,206, 11,141,198,199,199,119,141,142,142,118,188, 99, 95, 44,211,121,173, 12,
-125,135, 14, 29,218, 28, 62,124,120,193,214,173, 91,147,115,114,114,124, 54,108,216,160,153, 62,125,250,109, 65, 16,232, 7, 31,
-124, 80,166,125,251,246,121, 60,207,223,127,235,173,183,202,151, 43, 87,238,173,139, 23, 47,238,114, 22, 88,110, 56, 65, 8,169,
- 94,161, 66,133,131, 27, 55,110,212,251,251,251, 35, 57, 57, 25,233,233,233, 48, 24, 12,224,121, 30,114,185, 28, 41, 41, 41,152,
- 60,121,114,118, 66, 66,194, 3, 11,141, 22,194,249,124,217,168,168,157,243, 62,155,232,235,207, 50, 72,187,116, 1, 92, 70, 26,
-228,156, 13,165,170,251, 65,161,212,224,234,229, 28,188,187,122, 83,206,157,244,204, 7, 22, 26, 45,140,179, 94,197,138,187,150,
-140, 25,227, 99,186,123, 23, 17,175,191,142,188,188, 60, 88,173, 86, 48, 12,131,235,243,230, 65, 17, 18,130, 9,235,214, 25,206,
-221,185,211,218,117,161, 81,119,156,143,156, 0,156, 56, 9, 33, 67, 9, 33,142, 65,238,221,187,119, 47,240,236, 79, 63,253,132,
-197,139, 23,195,108, 54,115,148,210, 81,148,210, 69,132, 16, 31,123, 43, 53,215, 19,103,217,178,101,239,196,198,198,254,201,243,
- 60,107, 23, 23,244,252,249,243,117,111,222,188, 89,202,133, 83,236,186,230,158,148,223,131,130,130,230,253,246,219,111,101, 67,
- 67, 67,137,243, 10,235,118,129, 8, 0, 24, 54,108, 88,235, 35, 71,142,168,106,215,174,109, 78, 77, 77,173, 31, 18, 18,242,199,
-170, 85,171,130,123,247,238,157,112,238,220,185, 40, 87,206,224,224,224, 89, 27, 55,110,172, 80,161, 66, 5, 70,180,130,185,118,
- 67, 14, 28, 56,176,205,170, 85,171,148, 47,189,244,146,217, 96, 48,132,249,250,250, 94,219,184,113, 99,112,183,110,221, 18,207,
-157, 59, 23,241, 36,252, 46,113,186, 71,108,108,236,213,115,231,206, 85, 16,207,141, 70, 35, 82, 82, 82,144,154,154, 10,127,127,
-127,180,109,219,246,250,205,155, 55, 43,184,227,180, 91,133,230, 46, 93,186,244, 69,157, 78,167,216,183,111,159, 97,215,174, 93,
-166,219,183,111,115, 54,155,141, 70, 68, 68,176, 77,154, 52, 81,119,236,216, 81,167, 82,169,152,143, 63,254, 56,117,234,212,169,
-193,132,144,185,148,210,119,221,113,214,169, 83,231,232,182,109,219,158, 39,132, 64, 38,147,193, 98,177, 34, 51, 51, 19,247,238,
-197,227,252,249,243, 56,124,248, 48,118,236,216,113, 42, 55, 55,183,182,183,126, 39,132,252, 97, 54,155, 91, 40,149, 74,175, 5,
- 61,207,243, 96, 89,118, 55,128, 54,148, 82, 65, 74, 75, 18,167,132,226, 89,176,196,193,185,207, 19, 66, 54,219, 47, 29,115, 93,
-138,129, 16, 50,158, 16, 50,209,201,234,229,233,123,217,191,253,246,219,254, 54,109,218, 12,107,221,186,245,156,118,237,218,221,
-191,127,255,126,204,236,217,179,163, 57,142,179,158, 63,127,158,185,118,237,218,237,227,199,143, 87,168, 84,169,210, 91, 23, 47,
- 94,220,235,193,122, 37,186,245, 60, 33,164,113,203,150, 45, 55,189,245,214, 91,165, 27, 52,104,160,244,247,247, 7,203,178,184,
-113,227, 6, 78,157, 58,101, 89,183,110, 93,124,102,102,166,215, 91,229, 80, 74,143, 17, 66,218,246, 30, 62,106,227, 91,221,187,
- 4,191, 80,165,178, 50, 34, 34, 2, 48, 26,113,233, 78, 34,142, 92, 58,101, 93,182,255, 72,138,217,108,126,217,219,173,114,236,
-156,109, 90,141, 25,179,113,210,255,254, 23,134,251,247,217,136,136, 8, 40,149, 74,220,188,121, 19,215, 4,129,155,177,116,105,
- 82,118,118,246, 19,223, 42, 71, 92,179, 74, 16, 4, 22, 0, 52, 26, 13, 70,140, 24, 1,231,173,113, 22, 47, 94, 12,163,209, 8,
- 0, 44, 33,228,115, 66,200,183,133, 89,173, 10,225, 44,253,235,175,191,150,118,230,172, 90,181,170, 59, 78,243,147,206, 8,233,
-233,233, 19, 58,116,232, 16,199,178,108,161,171,213, 6, 4, 4, 32, 39, 39, 7, 28,199,241,247,238,221,187, 20, 16, 16, 0,185,
- 92, 14, 74,169,219,124,148,150,150, 54,225,229,151, 95,158,194, 48, 76,161,150, 14,189, 94,127,251,143, 63,254,168,248,230,155,
-111, 50,223,125,247,221,141, 65,131, 6,169,254,248,227, 15,254, 97,215, 52,146,240,248,224,220, 24,181, 55,222,104, 17,207,222,
- 33,132,140, 61,113,226,132,122,240,224,193,117,255,247,191,255,233, 91,182,108,233,227,252,140,209,104, 20,126,254,249,103,195,
-146, 37, 75,210,246,237,219,247,231,192,129, 3, 95, 66,254,248, 17,183,184,115,231,206, 47,211,166, 77,243,235,216,177, 99, 37,
- 0,142,241, 87, 41, 41, 41,184,125,251, 54,206,158, 61,123,219,106,181,110, 41,166,183,134,245,235,215,239,215,229,203,151,151,
-121,235,173,183,226,215,172, 89,179, 5, 64,150,155,231,124,122,244,232,209,117,249,242,229,101,222,126,251,237, 59, 0, 70, 74,
- 43,188, 75,144,240,112, 2, 43, 75, 16, 4,152, 76,166, 48, 65, 16,186, 10,130, 0, 31, 31, 31,119,207, 61,159,144,144,208,213,
-121,179,103,120,216,214, 6, 64,202,174, 93,187,118,174, 94,189,186,245, 7, 31,124,240,191,204,204,204,231, 79,159, 62,221, 0,
- 0,228,114,249, 97,157, 78,119, 52, 46, 46,238,245,177, 99,199,166,120, 35,174, 92, 68, 86,181, 89,179,102,149,216,102,207,118,
- 65, 84,241,203,245,155,134,125,163, 82,181,117,217,236,121,167,125,179,103,211,195,112,142,249,250,235, 97,250,245,235,159,218,
-205,158,205,102, 51,247,210, 75, 47,125,195, 48,140, 96,111,181,178,102,179,249,117, 20,115,230,169, 43,103,247,238,221,191,147,
-201,100,156,221, 50,196,152,205,230, 55, 30,133,179, 4, 43,207, 92, 0,195,139,122,166, 70,141, 26,171,182,108,217,210,175,107,
-215,174,188,213,106, 77,238,210,165, 11,123,244,232, 81,202, 48,204,174, 66, 56,205, 0,222, 47,138, 51, 60, 60,188,204,194,133,
- 11, 79,142, 28, 57, 82,191,122,245,234,192, 3, 7, 14,240,243,231,207,207, 78, 79, 79,255, 66, 42,158,158, 46,200,229,114,104,
-181, 90, 88, 44, 22,164,164,164,192,211,146, 83,148,210,107,132,144, 78, 99,198,140,105, 58,102,204,152, 78,209,209,209,213, 75,
-151, 46, 93,154, 97, 24,230,254,253,251, 41,119,239,222,189,101,181, 90,127, 7,240, 11, 0, 69,249,242,229,255, 2,176,170, 48,
-190,180,180,180, 41,132,144,221, 43, 87,174,236,164,211,233,170,169,213,234, 64,155,205,198,228,228,228,164, 27,141,198, 11, 38,
-147,105, 43,165,244, 80, 49,211,253,101, 66, 72, 75,150,101,127, 89,182,108, 89,213,251,247,239,151,221,187,119,111, 23,215,231,
-234,214,173,187,124,249,242,229,101,134, 12, 25,114,109,245,234,213,197, 26,131, 37, 65,130, 36,176, 10, 98,154, 82,169,100, 97,
-223,244, 89,180, 96,185,121,238,152,203,152,171, 44, 0,211,188,248,174,161,111,223,190, 55,251,246,237,251,185,221, 13, 50,228,
- 47,197,192, 33,127, 4,191, 21, 30,150,102, 40,164,176,224, 0,124,109, 63, 74,170,226, 53, 33,127,189,155, 89, 79, 51,103, 9,
-184,201, 76, 8, 25, 99,159,213, 4, 0, 99,254,250,235,175, 69, 46, 22,169,211,206,247, 61, 89,154,220,113,158, 58,117,202,149,
-243,108,113, 56,255, 73,100,102,102,142, 90,184,112,225,177,113,227,198,169, 6, 12, 24,128,179,103,207, 98,250,244,233,230,204,
-204,204,213, 15,203,153,152,152,120, 59, 60, 60,188,206,220,185,115,223,155, 51,103, 78, 55, 66,136,180, 23,225, 83, 2,163,209,
-120,189, 86,173, 90, 32,249,179, 19, 40,199,113,142,217,159,246, 21,249,175,123, 89, 38,237,182, 31,158,240,185, 23,124,135, 1,
- 28, 46,225,188,127,135, 16,210,233,214,173, 91,211, 46, 95,190,188,205,221, 51,231,206,157,251,169, 93,187,118,218,195,135, 15,
-127, 88,220, 89,132, 18, 36, 72, 2,171, 96,134,187, 10,224,127, 94,100,204,184, 71,248, 54,239,133,181, 75,194,147, 21, 89,139,
- 8, 33,223, 58, 89, 95,138,117,255, 73,113,254, 83,136,143,143,207, 0,224,216, 50, 36, 38, 38,230,129,113,106, 15, 43,178,144,
-191,106,187,180,114,251, 83,132, 27, 55,110,116,248, 15,229,253, 59, 0,250, 21,118,223, 98,177,108, 1,176, 69, 74, 21, 18, 36,
- 60,162,192,146,240,159, 22, 89,230, 71,185,255,164, 56, 37, 72,144, 32, 65,130,132,167, 25, 4, 64,155, 66, 42, 61,175,103, 7,
- 16, 82,252,141, 54, 61,241, 75,156, 18,167,196, 41,113, 74,156, 18,167,196,249,236,113, 58,113,207, 41,228,214, 37, 23,190,175,
-254,173, 22,139,199,118, 32,127, 26,175,196, 41,113, 74,156, 18,167,196, 41,113, 74,156, 18,231,195,124,231,173, 39,241,157,199,
-113, 72, 27,202, 74,144, 32, 65,130, 4, 9, 18, 36,148, 48,220,142,193,218,176, 97,131, 76,252,255,202, 43,175, 12,228,121,222,
- 49,125, 93, 38,147, 45, 92,179,102,205,183, 69,145,246,236,217,147, 47,138,211, 29, 60,125,199, 29,103,108,101,191, 33, 65,126,
-218, 81,153, 89,121,115,111, 36,240,251, 77, 38, 83, 53,241,158, 90,173,190,240,237,183,223, 94, 41,105,119, 14, 28, 56,176,146,
-235,119,202, 70,203, 91, 4,250,170, 71,164,103,230,206, 62,123, 37,231, 43, 41, 89, 61, 94,244,234,213, 75, 86,156,231,111,222,
-244,103, 78, 34,226, 11,189, 78,209, 37,215, 96,251,130, 63, 49,113,193,179, 16, 14, 17, 17, 17, 85,244,122,125,127, 0,213,243,
-242,242, 66,181, 90,109, 50,128,243,217,217,217,171,238,223,191,127,201, 91,158, 22,229,200,109, 0,165,237,167,119,246,220,164,
-101,188,185,231, 9,237, 43, 16, 19, 5, 84,132,192,186,253, 42,117,108,112,249, 98, 69, 98, 18,232,131,215,219, 87, 36, 22, 74,
-161, 32,128,121,251, 53,170,126, 86,210, 43, 33, 68, 15,160, 45,128, 88, 0,167, 1,236,160,148,230, 73, 57, 89,130,132,255,160,
-192, 26, 56,112, 96, 51, 37, 75, 23, 64,160,254,160, 52,200,108, 54,203,149, 74, 37, 44, 22, 11,180, 26,205,151,131,223, 24,240,
- 25, 8, 50,173, 2, 51,226,219,111,191,125,232,157,167,139,243,157,158, 61,123, 62, 48,205, 57, 64,175,153,178,231,231, 15, 2,
-154,117,138,155,110,185,153, 62, 54, 39, 39,135, 81,169, 84, 48,155,205,240,243,243,107, 60,252,173, 65,117, 41, 67, 44, 10,181,
-238,208,156, 57,115, 18, 31,214,157,239,190,251,110, 56,103, 53, 52,162, 54,170,180, 88, 44, 42,215,239,248,107,117, 51,246,252,
-252,129,182,121,231,233,159, 1,144, 4,214, 83,132,124,113, 21,254,213, 59,125, 95, 24, 48,115,100, 27,248,183,152, 49, 22,192,
-191, 90, 96, 17, 66,100, 49, 49, 49,195,202,148, 41,211,103,233,210,165,138,152,152, 24,168,213,106, 24,141,198,136,235,215,175,
- 71, 12, 25, 50,164,121,249,242,229,215,222,184,113,227, 75, 74, 41,239, 5,101,233, 61,203, 63, 6, 0, 52,238, 63,185, 52, 33,
-228,125, 0,121, 0,208,188,236,223,247, 90, 12,152, 92,154, 16, 50, 6, 5,103,255,222,167,148,186,157, 93, 70, 1,229,214,149,
-179,208,245,213,247, 89, 66,200, 16,241,122,199, 74,192,182,239,231,225,197, 87, 70, 21,184,222,190, 60,216,159, 87,206, 66,231,
- 87,223, 47,116,183,241, 23, 43, 49, 54, 65,160,133, 78,206, 97, 24,194,109,191, 74,221,109,252,155, 68, 41,221,238, 38, 44,219,
- 35,127,163,101,183,207,119,174,202, 38, 89,109,188,219,133, 98, 21,114, 89,242,214,139,220, 3,239, 14,168, 67,108, 54, 62,191,
-108, 85,176,224,253,252,252,246,124,244,209, 71,108,231,206,157,177,108,217,178, 38, 95,125,245,213, 91,132,144,223, 1,108,145,
-150, 60,144, 32,225, 63, 38,176,148, 12, 93,178,125,245,226, 10,137, 41,233,232, 51,100, 60, 86,175, 94,141,140,140, 12, 4, 4,
- 4, 64,169, 84,200, 23, 77, 27, 27,238,239,171, 13,239, 61,124,226, 18, 0, 85, 30,246,227,197,252, 78,197, 7, 10, 71,251, 66,
-164,172,140,149, 43,149,114,102,237,218,181,200,204,204,132,191,191, 63,148, 74, 57, 51,111,242,104,141,191, 94,167,249,223,168,
- 73, 77, 0,172,127, 88,119,114,198,220, 38, 63,127,191, 80,159,148,146,134,126, 35, 38,192,245, 59,114,133,130, 23, 43, 20, 41,
- 73,253,115, 72, 77, 77, 37, 0, 16, 28, 28, 76, 11,138,171, 6, 3,230,140,110,135,119,103,239, 64,158,201,242,253,191,221,159,
- 49, 49, 49,195,122,245,234,213,103,202,148, 41, 10,134,201,239,229, 55, 24, 12, 48, 26,141,136,138,138,194,158, 61,123, 20, 19,
- 38, 76,232,243,211, 79, 63, 1,192,252,226,242,159, 59,119,174,108,233,210,165, 77, 0,208,165,166,175,235,189, 50,226, 61, 0,
-240,245,245,245,200, 23,228,175, 51,159, 59,119,164,186,248,222,176,214, 81,124, 33,215, 77, 0,180, 69,113, 9, 2,101,119, 44,
- 24, 82,232,253, 55,167,252,192,157, 94,191,191, 74, 76, 76,140,209,249,122, 33, 11, 37, 3, 64, 88,110,110,110,105,215,139,226,
-243, 86, 27, 31, 90,216,247,218,141, 88,236, 86,120,217,120,176, 63,252,240, 3, 0,224,139,247,251,201,190, 62,154,202,178,108,
-126, 81,251,249,231,159, 99,210,164, 73,202,237,219,183,119, 92,185,114,101, 71,251,214, 56,210,242, 7, 18, 36,252, 87, 4, 22,
- 33,240,213,251,234,208,245,181, 17,248,109,219,118, 52,107,214,204,113,175, 92,185,114,120,165, 71, 23,252,180, 52, 14, 12,136,
-239,163,124,252, 81,191,147,145,101,248,164, 67,159,249,147,239, 36,230, 30,222,186,245, 87, 52,109,218,180,192,251,255,235,253,
- 18, 54, 46,154, 10, 66,169,226, 81,220, 41, 48, 84,161,215,235,240,242,160, 81,112,247,157,193, 3,186,110,125,177,231,188, 54,
- 73,105,134, 57, 82,146,122,178,184,120,241,162,204,108, 54,191,162,215,235, 27,200,229,242, 48,149,127,105, 33,129,125, 62, 45,
-133,196,220, 72, 14,205,107, 54,186, 77,216,139, 95,188,211, 18,239,206,222,129,185,171,143, 44,175,131,196,137,255,102,255, 70,
- 68, 68, 84, 41, 83,166, 76, 1,113,149,147,147,131,220,220, 92,100,103,103, 35, 39, 39, 7, 12,195, 96,236,216,177,138,189,123,
-247,246,137,136,136,216,229, 69,119,225,157,198,253, 39,231,139, 12,153, 60,119,226,196,137,230,208,208, 80,179, 86,171,165,172,
- 66,149,211, 98,192,100, 95, 0, 96, 88, 69,206,220,185,115, 45, 81, 81, 81, 38,150,101,149,163, 70,141,242,106, 12,167,217,108,
-166,206,156, 22,139,217,113,125,198,140, 25,150,176,176, 48,179, 86,171,165, 86,171,197,235,112, 56,115, 51, 29, 42,133, 12, 42,
-133, 12,106,165, 28,190,101,235, 67,149,113, 22, 28,199, 97,230,204,153,214,240,240,112,139, 86,171,165, 74,165, 82, 49,114,228,
- 72,143,238, 28, 56,112, 32,245,247,247,183,106,181, 90,197,164, 73,147, 30,216,151,239,143,211,247,160, 81,202,161, 85,177,168,
- 88, 46, 26, 42,106,244,218,173, 50, 89,193, 30,109,149, 74,133, 38, 77,154,160,122,245,234,216,188,121,115, 11, 72,235, 75, 73,
-144,240,236, 10, 44, 66, 72,115, 0,123, 0,128, 82, 74, 0,128, 1,197,167,131, 94,196, 91,175,246, 2,207, 11,249,163,226, 1,
-200, 8,193,251,125,154, 65,224, 57, 8,240,184, 85,132,199,169,154,197,253,142, 51, 39, 37,140, 12, 0,170,148, 14,162,131, 95,
-239, 11,129,207,239, 13,225, 1,200, 1,188,215,171, 9,120,222, 6,193,195,162,240,222,185, 83,192,199, 3,219,193,221,119,170,
-148, 15, 99,204, 60, 7,226,180, 25,227,227,216, 4, 83,226, 44,136, 67,135, 14, 69,104,181,218,217,253,250,245,139, 28, 57,114,
-164,146,103,253,217, 13,135,211,252, 62, 88,116, 56, 50,207,108,149,245,109, 89, 22,163,255, 87, 19,163,231,254, 33,138,171,183,
-202,149,203,252, 87,199,145, 94,175,239,191,116,233,210, 7,196, 85, 82, 82, 18,147,155,155, 11,171,213, 42,228,228,228,128,231,
-121,140, 27, 55, 78, 62, 97,194,132,254,132,144, 73,118, 30,179, 59,206, 61, 55,105, 25, 66,200,152,115,231,206,149,249,232,163,
-143,172,173, 90,181,186, 83,174, 92, 57,131, 76, 38, 67, 68, 68,196,188,182,109,219, 6, 78,153, 50,197,218,177, 99,199, 91, 50,
-153, 12, 21, 43, 86, 52,156, 61,123,182, 12, 0,141,183,126,119,230,252,246,143,133,212, 94,238,160,109,219,182,183, 43, 86,172,
-104,144,201,100,184,242,243, 12,234,109,120,202, 89, 6,149,162,252, 28, 45, 53,104,124,128,140,252,211,182,109,219,198, 87,169,
- 82, 37,151, 97, 24,156, 57,115, 38, 26,128,218, 19,167, 70,163,177,245,237,219,247,206,165, 75,151, 30,120, 30, 0, 88, 25,131,
- 6, 85,236, 6,171,168, 58, 64,252,129, 66,221, 41,151,129,155, 48,172, 31,235,175, 6, 84,190,193,230,236,236,108,232,245,250,
-124,139,152,213,138,191,254,250, 11, 13, 27, 54,108,190,126,253,250,189, 82,126,151, 56, 37, 78,103,163,203,131, 90,228, 89,176,
- 96,237,113,245,140,192,115,168, 16, 21,132, 69,239,191, 12,142,227,193,243,130,253,224,193,113, 2,108, 86, 11, 60,232, 43,239,
-172, 67,143,240,157, 0,189,102,202,111,107, 71, 6,180,238,246,121,235, 5,239,245,216, 41,216,108,224, 5,128,227, 5,240, 54,
- 30,130, 32,192,102, 41,153, 53, 44, 5, 27,143, 10,145, 65, 88,240, 94, 15,184,126,103,225, 47, 59,186,252,177,101,172,182, 89,
-231,233,239, 1,152, 41,233,246, 39, 99,185,210,106,181,179, 87,173, 90, 85,166,126,253,250, 12, 0,236,191,204,169, 62, 88,116,
- 56,114,123, 92, 99,210,184,122, 16,146, 51,205, 24,245,229, 41,252,118, 56,121,155,171,184,250, 23,163,122, 76, 76, 76, 1,113,
- 53,107,214,172,224, 69,139, 22, 69, 1,192,203, 47,191,124,175,117,235,214,169,151, 47, 95, 70, 68, 68, 4, 73, 77, 77,237, 4,
- 96,148,189,240, 26, 67, 41, 93, 84, 8,175,161,116,233,210,166,144,144, 16,179, 40,132, 24,134, 1,203,178, 40, 93,186,180, 41,
- 52, 52,212, 92,177, 98, 69,131, 66,161, 0,195, 48, 16, 5,158,151,133, 38,100, 50, 25, 68, 78, 87,235,142,200, 89, 28,200, 89,
-167,231,233,131, 22, 35,134, 97,220,126,175, 48,168,213,106, 10,160,208,231,101,140, 83,241,200, 22, 61, 18, 96,249, 73, 42, 39,
-132,236,161,148,226,228,201,147,184,113,227, 6, 20, 10, 5,194,195,195, 49,105,210, 36,152,205,249,101, 82,175, 94,189,154, 3,
- 56, 35,229,102, 9, 18, 28,216,243, 44, 8, 43, 87,129,229, 80,143,148,210,189, 0,192,115, 54,240,188,224, 86,244, 88,109, 28,
-108, 86,107,137, 56,160,168,239,240, 60, 95,228,119,196, 49, 88, 2,165,172, 91,113, 37,228,239, 27, 86, 34,238, 20,108,176,241,
-128,187,239, 16,194,240,246,130, 94, 33,229,143, 39, 3,179,217,220,183, 95,191,126,145,162,184, 2,128,212, 28, 27,155,103,182,
-201, 26, 87, 15, 66,221,150,189,112, 98,247,122,172,219,119, 15,229, 67,180,251,202,233,158, 9,113,133,188,188,188, 80,181, 90,
- 13,131,193,224,176, 92, 45, 90,180, 40,202, 98,177, 48, 0,192,178,242,232, 20, 33, 74,205, 11,128,159,254, 62, 50, 50,178,130,
-196, 2,139, 16,242, 57, 33,228,219,162, 86,206, 87, 40, 20, 14, 97,226, 44,124, 84, 42,213, 67, 9, 23, 17,162, 40, 83, 40, 20,
-110,175,187,118,163,121,130,194, 89, 96,129,230, 91,177, 92, 68,150, 76, 38,131, 56,246,201, 19,148, 74,165,195,239,110, 11, 74,
-153,211,247,100,197, 31,106,105,181, 90,145,155,155,139,204,204, 76,168,213,106,209, 2, 0, 66,200, 40, 0,239, 72, 57, 90,130,
- 4,247, 90,228,153, 17, 88,200, 55,205, 17, 0,224,108, 86,183,162,103,229,142, 19,184,150,102, 67, 84,192,121,136,207,122,139,
- 62,125,250, 44,143,136,136,104,224, 40, 36,181,190, 65,253,223,159, 1,222,106,129,191,138,226,157,158, 77, 11,136, 43,158, 23,
- 96,181, 22,110,129,202,200, 50,124,242, 98,175,121,147,131,116,190,135, 93, 69,207,132, 13,151,122,166,101, 89,162, 9,123, 17,
-153, 36,138,239,245,246,167, 3,157, 10,245,211,107, 23, 79, 28,237,173,187, 41, 97,228, 93, 70,126,245, 22,175,240,173,166,167,
- 25,251, 38,189, 82,237, 71,103, 17, 23,234,227,179,181,253,203,115,218, 36,165, 75, 99,176,158, 20,148, 74,101,155,145, 35, 71,
- 22,168,233,130,125,229,156, 86, 37,231, 15,158, 79, 37, 39,118,175,103,246,159, 75, 21,212, 10, 25, 13,161, 55, 98,158, 21,127,
-107,181,218,228,188,188,188, 8,163,209,136,236,236,108,100,103,103, 23,204,208,114, 57,121,107,240,240, 96,185, 66, 9,155,213,
-130,223, 86, 77,245,200,217,162, 28,185,221,188, 44, 74,119,169,233, 11,153, 92,153,115, 62, 38,102, 30,203,178, 96, 24, 6, 63,
-127,249,193,168, 77,179, 71,248, 2,192,233,173, 95,102,191, 50,118,225,124,134, 97, 96, 54,155, 85,197,113,247,221,187,119,163,
-205,102,179,201, 46,204, 68,193,135,155, 55,111,150, 50,155,205, 70,231,235,222, 64,163,245, 5,252,203, 1,218,208, 7,172,101,
-183,110,221,138,180,217,108,121, 44,203,194, 98,177,120,165,134, 24,134, 81,156, 57,115, 38, 90, 16, 4,183,207, 87, 47, 31, 9,
-132,215, 4,148,126, 94,251,217,190, 72,162,199,103, 8, 33,244, 89,106,181, 75,144, 80, 18,150,172,226,234,139,167, 89, 96,181,
- 32,132,208,191, 51, 61,192, 89,173, 14, 97,149,111, 97,202,255,127, 51, 75,192,165, 43, 87, 49,119,238, 92,236, 61,254,158,223,
-148, 41, 83, 84, 19, 38, 76, 48,247,233,211,103,182, 32, 8,181, 24,134, 57,221,179,103,207, 81,238, 62, 38, 8, 66,169, 19, 39,
- 78, 56, 42, 59,155,205, 6, 95, 95, 95,248,250,250, 34, 54, 38,252, 1,113,197,217, 45, 88,180,112,225, 35, 3, 5, 64, 65, 57,
-222, 6,222, 6,135,232, 73,203,178, 68,255,180,251, 84, 5,167,199, 43,139,127,154,212,175, 86,184, 8, 28, 50,201,225,143,181,
-139, 39,142,158,178,108,153, 42,131, 15, 27,249, 74,239, 65,177,189, 94,233,143,126, 61, 94,108,110, 50,217, 54,179, 12, 4,155,
-192,131,183, 9, 16, 40,101, 40, 80, 96, 12,150,132,199,135,212,212, 84, 98, 52, 26,203,250,251,251, 23,168,168, 34,116, 6,243,
-216,222,149, 18,218,126,112, 32,210,100,229,161,146, 51,116, 84,183, 50, 9, 71,127, 90, 23,148,106, 78, 37,226,236,194,127, 57,
-206, 95,187,118, 45,162, 84,169, 82,200,206,206, 6,199,113,194,203, 47,191,124,143,101,229,209,172, 92, 78, 58,191, 50, 92, 72,
- 76, 76,176, 49,140, 12,148,242,232,208,107, 40, 81,169, 53, 10,171,197,194, 1, 24, 83,136,245,202,121, 41, 6,223,182,109,219,
- 6,138, 51,251, 54,205, 30,225,235,116, 79, 95,183,110,221, 64,231, 89,132, 94,138, 97,210,167, 79, 31, 77,233,210,165, 9, 0,
-252,185,234, 35,209, 90, 70,186,116,233,162, 46, 93, 58,127,124,253,239, 95,122,191,215,117,176,150, 2, 89, 55,129,172, 91, 15,
- 88,174,186,116,233,162,138,137,137, 41, 86, 94,180, 15,108, 47,116,237, 45, 29,203, 1,137, 39,189,226, 26, 80,135,216, 62,106,
- 6,118,118, 7, 6, 74,159, 32,115,131, 15,182, 31,149, 68,150, 4, 9, 94,161,128, 22,121, 38, 4,150,221, 20, 87, 32,115,115,
- 54,235, 3,226,138,231, 5,168,121, 3,230,206,157,139,119,222,121, 7, 0, 20,163, 71,143,254,113,202,148, 41, 47, 9,130, 80,
-139, 82,218,148, 16, 82, 84, 43,113, 79, 68, 68, 68, 18,165, 84,206, 48, 76,211, 47,191,252, 50,176, 67,135, 14,240,245,245, 5,
- 21,232, 3,226,138,231, 5,216,204,150,124,197,231, 6, 1,122,205,148,109, 27, 70, 5,180,234, 54,179, 53,111,195, 78, 81, 92,
-241,182,191,135,197,167, 37,197, 99,199,182,205, 88,178,120,105, 6, 8,189, 8, 10,129, 97,152,211,133,185, 81, 16,132, 90, 7,
-254,188,208,180, 73,253,106,152,178,108,153,234,220,137,251, 63, 14,127,247,163,216, 94,175,244,199,250, 53,171, 32,179,102,156,
-100,153,176,191,197, 21,207, 35, 37, 39,187,203, 31, 63,127, 32,141,193,250,135, 96,179,217,144,145,145, 1, 91,110, 6, 87, 47,
-194,144,245,105,175, 80,115, 82,134,137,149, 11,121, 92, 85,125,178,121,119,250, 45,153, 86,171,125, 38,252,154,157,157,189,106,
-200,144, 33,205,247,237,219,167, 96, 24, 6,217,217,217,104,217,178,101,106,138, 16,165,126,107,240,240,224,132,132,123,156, 94,
-195,154, 21, 10, 57,146,147,147,133,230, 29,251, 26, 95, 25, 56, 42,242,157, 15,167,125,149,112,104,241, 34,111,190,225, 60,179,
-207,245,222,215, 95,127,109,137,138,138, 50,169, 84, 42,229,128, 1, 3,188,234, 39,180, 88, 44,116,198,140, 25,102,215,217,130,
- 22,139,133,206,157, 59,215, 18, 29, 29,109,214,104, 52,212,102,243, 60,236,128, 97, 8,247,230,148, 31, 56,142,227, 10, 88,173,
- 68,113,101, 19, 72,238,130, 5, 11,172,209,209,209, 22,173, 86, 75, 85, 42,149,194, 27,119, 14, 31, 62,156, 6, 4, 4, 88,117,
- 58,157, 98,236,216,177,143, 52,139,208,198,131,157,242,165, 99,153, 6,149,175,175, 47,114,114,114, 28,110,141,136,136,144, 68,
-150, 4, 9,238, 27, 27,123,159, 5,203,149,171, 5,171,160,200,160, 66,110, 82,114,106,168,127,100, 5,216,108, 28,120,206, 6,
-206,198,193,198,217, 48,230,245,238,136, 91,156,223, 19,102, 23, 89,109, 71,143, 30,253, 35,224,121,219,157,181,107,215, 78, 30,
- 61,122,180, 62, 41, 41,105,251,242,229,203, 3,251,245,235,135, 49, 99,198,224,243,207, 63, 7,171, 84,195, 47,188,140,227, 59,
-156,141, 3,111,227,144,156,150, 1, 74,105,174, 59, 62,113, 12, 22,165, 96,245,225,229,192,243,226,187, 54, 48,178,252,153,233,
- 59,182,109, 70,191,215, 71, 64,174,242, 11, 88, 56,119,166, 49,182, 94,196, 75, 19, 6, 13,242, 60,242,157,128, 57,119,226,254,
-143,195,223, 25,219, 86, 20, 87,155, 86,126,121,241,203, 81,109, 87,107,149,172,227, 59,188,205, 6,134,145, 73, 99,176,158, 32,
-130,131,131,105, 74, 74,202,173,204,204,204,202, 58,157, 14,105,105,105, 72, 79, 79, 71,102,102, 38,204,217, 25, 92, 16,159,105,
- 32, 92, 58, 88,150, 69,242, 93, 14, 60,207, 39, 62, 35,214, 43,220,191,127,255, 82,249,242,229,215,126,248,225,135,175,140, 27,
- 55, 78, 46, 8, 2, 46, 95,190, 12, 10, 80,185, 66, 9,134, 97, 32,151,179,200,202,202, 22,180, 62,254,247,173, 84,166,149, 43,
-148, 96,100,138,162, 22, 28,189,211, 98, 64,254, 50, 13, 12,171,200, 17,103,246, 41, 20, 10, 28, 89, 63, 43,187,197,128,201,122,
- 0, 80,168, 52, 25,237,218,181,187, 93,173, 90, 53,195,241,227,199,203,192,101, 22,161,155,252,201,117, 31, 48, 86,166,213,168,
- 13,109,219,182,189, 35,114,222,218,185, 48,187,255,208,143, 8,145, 41, 13,157, 59,119,190, 29, 27, 27,107,144,201,100,184,176,
-121,102,118,247, 1, 99,213, 36,127,130,174, 91,108,191, 74,223, 60,189,126,127,149,169, 83,167,218, 58,118,236,120, 87, 28, 15,
-118,235,214,173,200, 78,157, 58,169,230,204,153, 99,235,212,169, 83,124,141, 26, 53,114, 25,134,193,137, 19, 39,162,139,178, 76,
-137,208,104, 52,182, 55,222,120,227,206,217,179,103, 31,106, 22,161, 39,148, 42, 85, 10,130, 32,160,101,203,150, 48,153, 76,146,
- 37, 75,130,132,255, 0,220, 10, 44,171, 32, 12,127,245,131, 89, 11, 9,136,143, 0, 90, 96,150, 14,205, 47, 9,200,251,239,191,
-167, 3,160, 17, 69,214,187,239,190,155,225,233, 99, 78,226,170, 94,191,126,253, 48,126,252,120,124,241,197, 23,252,231,159,127,
- 46,187,112,253,174,181,231,232,207, 51, 93,190, 3, 74,105, 46,207, 99,184, 59,190,140, 44,195, 39, 77, 59, 77,255,236, 94, 82,
-222,129, 94,239,197, 21, 40,181, 50, 73,254, 98,134, 75, 22, 47, 49,200, 85,126,186, 94,175,244, 7,128,182, 11,231,206,252,113,
- 10,150,121, 22, 89,148, 84, 29,254,238,216, 0, 81, 92,125, 57,103,234,217, 0,146,180, 96,208,199,231, 31, 24, 53,239,231,131,
- 31,155,118,154,222, 62, 57,221, 48, 79, 74, 82, 79, 6, 22,139,101,215,252,249,243,203, 78,152, 48, 65,153,158,158,142,212,212,
- 84,100,100,100, 56,142,220,220, 92,132,135,135, 99,219,182,109,214,236,236,236, 35,207,146,223,111,220,184,241,229,150, 45, 91,
-176,119,239,222, 62,227,198,141,147,135,135,135, 19, 63,191, 68, 98,179, 90, 0, 80,154,146,146, 34,104,125,252,239, 7,135, 69,
-223, 73, 72, 76,174,106,179, 90, 32,240,214, 66, 71,145,219,151,105,120,255,220,185,115,101,103,205,154,101,113,158,217,247,202,
-216,133,243,235,214,173, 27,184, 96,193, 2, 75,231,206,157,111,139,131,210,189, 25,228,190,227, 58, 70,157, 59,119,166,186, 43,
-103,139,183,102,125, 35,114, 58,207, 46,236,242,222,210,111, 42, 86,172, 24, 24, 27, 27,123,187, 40,222,152,152, 24, 99, 68, 68,
-132,165, 74,149, 42,185,114,185, 60,223,114,101,179,229,197,196,196, 8, 97, 97, 97,150,106,213,170,229, 22,119, 48,190, 70,163,
-161,162, 21,204, 29,138, 51,139, 80, 46, 3,215,175, 95, 63,199, 74,238,239, 87,172,120,191,127,255,254, 17,163, 71,143,198, 55,
-223,124,131,131, 7, 15,166,187,190,211,188,121,115,236,219,183,239, 51, 0,159, 72,185, 91,130,132,103, 88, 96,125,247,221,170,
-223,225, 52,102,201, 29,166, 76,153,162,178, 91,174,218,190,243,206, 59, 48, 26,141, 1, 15,180, 96, 9,105, 35,174,149,225, 78,
- 92,205,156, 57,115, 53,165, 52, 26, 64, 19,142, 23,142,126,245,237,138,150, 30, 13, 75, 78,156,148, 48, 50,134, 33,185, 74, 57,
-253,107,241, 87,223, 21, 88,161,219, 62,168,189, 50, 8, 78, 47,156, 59,211, 8,160,173,171,200,234,217,179,103,158, 43,167,136,
-193, 67,222,118,136,171,133,115,103,238,140,173, 87,250,165, 9,131, 38,187, 21,101,147, 63,121, 91,199, 48,164,145,243, 24, 44,
-119,156,143, 10,137,243,111, 78,149, 74,181,122,205,154, 53, 29,155, 54,109, 90,166, 86,173, 90, 76,122,122, 58,114,115,115,145,
-155,155, 43, 90,185,112,225,194, 5,225,246,237,219,247, 84, 42,213,154,103,201,239,246,237,111,230, 71, 68, 68,236,154, 56,113,
- 98,255,212,212,212, 78, 25, 25,153, 65,191, 44,159,130, 23,123, 13, 33,205, 59,246, 53, 88, 40,171,142,191,159, 84,101,207,175,
- 63, 4,254,182,246, 75, 88, 45,150,183, 8, 89,114, 65, 92,166,193,141, 59,243,196,229, 24,170, 84,169, 98,112, 22, 40,165, 75,
-151, 54, 69, 70, 70,154, 99, 99, 99, 29,215,221,205,206,115,231,247,226,114,218,199,119, 25, 60,133,167, 40,214, 92,151,127,208,
-106,181, 16, 69, 87,113,220,233, 60,123,210,109, 65,233, 97, 22,161, 51,231,242,147, 84,238,124,111, 57, 33,178, 85,171, 86,181,
- 89,181,106, 85, 61, 0,127, 1,216, 1,192,102,127,207, 49, 24,158, 82,250, 41,128, 79,165,252, 46,113,254, 87, 57,255, 19, 2,
-203, 19,196, 1,237, 0,152,119,223,125, 55,195,104, 52, 6,244,239,223,191,200,119, 18, 19, 19,191, 89,177, 98, 69, 1,113,213,
-163, 71,143,215, 55,108,216,176, 43, 57, 57,249,161, 28, 31,160,215, 76,217,251,243, 7, 1,205, 59, 79,127, 7,192,231,238, 45,
- 81, 16, 98,235, 69,188,180,112,238,204, 31, 93, 68,214, 74, 0, 61,220,165, 27, 0,104,247, 98, 55,252,240,221, 2,113,236,150,
-230,236,241,123,191,245, 57, 57,201,237,236, 67,127, 31,213, 36,187, 59, 70, 67, 26,131,245, 68, 80,181,106, 85,254,208,161, 67,
-163,135, 12, 25, 50,187,117,235,214, 81,221,186,117, 83,148, 42, 85, 10, 42,149, 10,215,175, 95,199,254,253,251,173, 55,110,220,
-184,151,151,151, 55,186, 86,173, 90,252,179, 24, 6,247,239,223,191,100, 95, 68,116,148,216,173,164, 82,107, 20,125, 7,190, 19,
-237,152, 69,184,246, 75,152, 77, 70, 0, 96,189, 89,166,129,101, 89,197,169, 83,167,202,136, 86, 42,171,213,170, 18,175, 31, 63,
-126,188,140,184, 54,150,201,100,242,122, 22,225,227,226, 60,115,230, 76,180, 56,219, 81,156, 45,200,178,172,226,196,137, 19,209,
- 34,167,217,108,246,106, 22,161, 82,169, 84,156, 58,117, 42,154,231,249, 18,155, 69,232, 34,136,183,219, 15,177,114, 18,197, 21,
-177,119, 11, 74,221,131, 18, 36, 72, 2, 43,127, 32, 56,165,180,105, 49,148, 46, 91,182,108,217,118,175,188,242, 74, 1,113,213,
-179,103, 79,126,211,166, 77,123, 34, 34, 34,146, 24,134,185, 84, 92,119, 56,198, 96,229, 47,168, 94, 0, 12,195,156,110, 82,191,
- 26, 24,134, 57, 61, 97,208, 32,243, 20, 44, 43, 32,178, 54,255,184,174,125, 97,229, 33, 0, 4,133, 69,255,159,189,179, 14,143,
-226,106,163,248,185,235, 30,119, 66, 66, 32, 68, 72,112,119,105,208, 98,165,184,182, 20,107, 11, 45, 20,135, 98,197,138, 21, 47,
- 20, 40, 80, 28, 74,113,119,183,160, 9, 9, 16,226,238,182, 46,115,191, 63, 72,248, 66, 26,217, 13,180,165,116,126,207, 51,207,
-238,222,153, 57,115,199,207,190,215, 48,240,179,177, 24,248,217, 88, 91, 0,205,129,210, 91, 31,150,149, 15,150,191,142,102,205,
-154, 37,133,133,133, 13, 60,123,246,236,128, 43, 87,174, 4,169, 84,170, 42,132, 16, 72, 36,146,104,157, 78,119, 78, 36, 18,237,
-254, 80,205, 85,105,232,245,122,227,212,185,203,182,115,185,124, 19,195,232,137, 94,175,255,204,146,251,124,234,212,169, 28,148,
- 80,183,106,236,216,177, 37,166,255, 83,154,211,167, 79, 47,177,213,223,216,177, 99,203,108, 13, 88, 26,223,125,247,221, 59,107,
- 69,104,166,233, 98,141, 20, 11, 11,107,176,254, 12,135,195,121, 84, 66,107, 65, 2,128,150,212, 66,143, 82,106,228,114,185,115,
-109,108,108, 70, 41,149,202, 83,189,122,245, 26,223,187,119,111, 19,240,170,226,123, 69, 51,159,149,163,156,221,166,219,143, 19,
-178,243,181,107,138,207, 43, 30,105, 42, 52, 89,235, 86, 45, 89,255,199,129, 61,189,147, 19,227,215,151,182,111,165, 25,169,210,
- 90, 31,230,228,170,231,182,233,246,227,183, 89,185,106,182, 14,214, 63, 16,201, 2,176, 3,192,142,226,131, 61,255, 23,160,148,
-106, 9, 33,147, 8, 33,133, 17,220, 73,145, 23, 87,173,255,255,159,155, 53,143,138,206, 43, 35,122,149,100,206,192,205, 37,173,
- 87,214,188,191, 64, 51,165,140,129,155,203, 34,197, 66,189, 20, 0, 16,240,185,169,165, 13,234, 44,224,115, 83,223,209, 57, 36,
- 5, 77,211,231,178,119, 52, 11,203, 7,110,176, 10,205, 79,105,148,214,207, 85, 89,152, 76,166, 31, 1,252,248, 46, 51,255,228,
-121,222, 47, 0,126, 49,119,249,130, 58, 87, 67, 11,166,146,243,153, 17, 98,241,190,245,238,221,123, 3,128, 13,236,229,244,247,
-176,127,255,126, 19,123, 20,222,120, 65,175, 39,132,252, 90,104,184,204,157, 87,108,185, 35,127, 65,190,254, 10,205,211,127,167,
-222,177, 48,163,243,223,116, 14,217,136, 22, 11,203,127,193, 96,177,176,176,252,235, 76,150,182, 34,243, 88, 88, 88, 88, 88,254,
- 26, 8,128,160, 82, 30,202,102,183, 14, 32,132, 4, 85,224,133,112,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,
-102,121,218, 69,215, 39,132,140,164,148,254,130,127, 35,244, 85, 95, 83,127,201, 4, 32,136,213,100, 53, 89, 77, 86,147,213,100,
- 53, 89, 77, 86,179,130,219, 25,249,119,108,231,175,152, 56, 96, 97, 97, 97, 97, 97, 97, 97, 97,121,167,176,117,176,204,132, 84,
-238,249, 61, 64,167, 21,196, 44,151,208,216, 67,115,216,163, 82,193, 99, 73,136, 3,128,174, 10,177,160,123,128,141,160,233,147,
- 12,205, 13,165,222,116, 20,192, 97, 74,105, 22,123,132, 88, 88,254,134,251,208, 54,160, 50, 8,249, 28,160,255,111, 70,201,208,
- 80,154,253,116,235, 27,203,217,212,248, 12, 28, 18, 80, 36, 73, 13,138, 77, 52, 43, 52,174,148,251,187,176,194,190, 77, 68, 68,
-132,167,183,183,119, 12,128,236, 98,139,253,105, 30,165,148,150,241,204, 32, 14, 85,235, 13,145,138,165, 95,234,116, 58, 47,185,
- 66,145,154,153,145,182, 33, 51,246,241,186, 34,139, 89,221,190,125,219,181,113,227,198,137, 0,242,202,211,100, 97,121,239, 13,
- 22,241,249,212, 11, 70,206, 80, 80, 12, 2,193, 67, 26,185,255,211, 10,233,120,247,170, 4,134,215, 8, 64, 61,128,214,147, 73,
-196,117,213, 58,125, 42, 67,233, 16, 26,177,247,129,197,122, 85,251, 28, 7,208,165,148,185,115,105,228, 62, 11, 13, 18,157,126,
-247,202, 65,145,141,148,192,187,254, 39,147, 81,164,199,229,247,204,188, 72, 0, 12, 35,132,124, 36,149, 74,125, 84, 42, 85, 52,
-165,244, 49,128,245,148,210,196, 10,106,114, 0, 12,151,203,100,157, 60, 21,194,122,177,233, 57, 9,121, 6,211, 85, 0, 75, 45,
- 53, 68,132, 16,161,167,173,236,242,202,254,109,252,155, 6, 84, 7, 19,122, 5, 26,157,190,251,165,248,252,238,179,111, 38, 78,
- 32,132,212,163,148,234,204,212,114, 5,192,163,148,198, 21,252,150, 1, 8, 4, 80, 21, 64, 36,128, 16, 74,169,242, 45,143,231,
-191, 66,211,221,221,221,141, 97,152, 47,156,157,157, 63, 78, 73, 73, 57,206,225,112, 54,199,199,199, 39,254,195,151,227,198,194,
-250, 19,230,126, 2, 24,101,201, 6, 36, 18, 73,138, 70,163,113, 2, 0,177, 88,156,170, 86,171,255,178, 86,127,127,231,182,254,
-158,135, 5, 70,156,185, 22,210,169,104, 82,135, 22, 1,127, 94,142, 67, 2,206, 92, 11,109,245,230,114,129,166,146,158,129, 5,
-189,166, 98,238,220,185,100,222,188,121,159, 85,171, 86,173, 58,135,195,121, 54,107,214,172, 55,186,176, 41, 62,111,246,236,217,
-255,239,113,181, 4, 77,119,223,102,135,251,245,239,211,230,171,145,195,228,149, 28,229, 72, 74, 87,218,255,188,101,199,178, 29,
- 59,118,117,253,162, 95,251, 78, 0,240,195, 15, 63,244,172, 92,185,114, 21, 46,151, 27,245,253,247,223,255, 86,150, 38, 11,203,
-123,107,176, 72, 64, 31, 25, 52,180, 55, 64,134,181,110, 90,191,197,168, 33,221, 8,229,138, 49, 96,196, 20,163,197, 90, 85, 62,
- 19,129,171,158, 95, 43, 48, 96,124,159,110, 65,156, 6,129, 85,224,234,104, 13,112,248,216,120, 34,218,126,205,146,239,215, 3,
-104, 92,129,108,118,121,121,115, 55,146,178, 77, 32, 4, 32, 4,224, 16, 32, 95,195,160, 67,207,161,179, 45, 55, 72,132, 99, 35,
- 37, 24,191, 91, 3,128,112,223, 83,115, 85,207,209,209,113,221,184,113,227,108,107,213,170,229, 42, 22,139,165,106,181,186,122,
- 68, 68,132,215,204,153, 51,219, 19, 66, 22, 83, 74, 15, 90,168,233,225,237,238,182,111,205,248,225,141,106, 87,245, 4, 95,151,
- 15, 70,171,172,252, 60,226, 69,211,209,235,247,143, 32,132,244,183,112,184,132, 25, 27,199, 14,241,175,169, 0,244, 33,215,193,
-231,114, 33,181,182, 69,123, 30, 23, 92,130, 26, 67, 79, 71, 79,135, 25,227,177, 21,244, 96, 62,189,224,249,187,139,203,229,158,
- 13, 10, 10,242,250,226,139, 47, 72,253,250,245, 17, 28, 28, 92,117,247,238,221, 65, 60, 30, 47,202,100, 50, 61, 6,240,140, 82,
-106, 48,115,159,249, 0,124,185, 92,110,173,247, 89,211,205,205, 77,162,211,233,134,186,187,187,143,236,222,189,123,173,110,221,
-186, 17, 95, 95, 95,132,135,135,215, 63,121,242,228,236, 58,117,234, 60,142,143,143,255, 69, 40, 20,110, 79, 76, 76, 84,155,163,
-217,175, 38, 9,223,251,132,250, 85,116,126,177,125, 30, 9,192,173, 32,160, 49,215,140,207, 68, 0,115, 41,165, 73,230, 94, 76,
- 26,141,198,169,240,253, 73, 8,113,250, 43,239, 47, 75,182, 69, 8,121, 74, 8,177, 43,248,142,178, 62, 57, 28, 14,140, 70,163,
-210,104, 52, 86, 43, 71,211, 23,176,168, 90, 7,165,148,150,213,129,179, 4, 0, 58, 52, 15,200, 4, 65,104, 97, 4,235, 79, 75,
- 49, 52,244,181,241,162, 8, 56,115, 61,212,238,141,168, 87, 49,230,206,157, 75,102,207,158,141, 57,115,230,116, 3,208,146, 97,
-152,171,254,254,254,171,223,144,100,152,215,243,102,207,158,189,106,238,220,185, 4,111,140,122,251,127,236,170,212, 25,252,201,
- 39, 61,218, 44,152, 49, 86,158,144,161,199,195, 40, 53,236,228, 2,204,158, 52, 70,168,213, 26,154,174,255,109,199,200,181,139,
-167,108, 50,153, 76,237, 0, 52, 48,153, 76,247, 0,252, 86,150, 38, 11,203,123,101,176, 8, 33, 4,213, 62,109, 5, 19,134,121,
- 86,118,238, 61,238,139,190,146, 64,127,111,104, 32, 71,116,186, 9, 39,142,157, 4,128,189,150, 69,153,250, 53,224, 9,176,125,
-201,156, 73,126, 45, 27, 5,226, 73,130, 1,247, 18, 76, 80, 69, 25,192,229, 24, 96, 98, 40, 64,161,169,232,206,197,103, 25,113,
-237,153, 14, 28, 2,112, 57, 0,135, 67,192,173,104,173, 51,147,238,249, 15, 91,131, 3,211, 83, 24,192,164,123,254, 30,154,171,
-118, 62, 62, 62, 43,231,205,155,231,146,146,146, 98,119,239,222, 61,136, 68, 34,216,218,218,242,220,220,220,252, 86,174, 92,153,
- 51,118,236,216, 73,132,144, 7,148,210,104, 51, 53,253,187, 52,168,117,227,151, 37, 63, 88, 27,110,159, 68,246,158,223,193,229,
- 80, 8,100,114,120, 73, 36, 56,249,137,183, 93,239, 99, 81, 7, 9, 33,254,148,210, 4,115, 52,189, 93,236, 59,212,242,247, 71,
-214, 31,107,241, 48, 75,131,147,137,106,124,222,190, 9,106,218, 73,208,210,104,130,139,140,223,174, 60,131, 69, 8,177, 5, 48,
- 69,167,211,113, 4, 2, 1, 17,139,197,131, 23, 44, 88,160, 31, 48, 96, 64,124,225, 50, 45, 91,182, 68,203,150, 45, 73, 94, 94,
- 94,213,139, 23, 47, 86,221,177, 99,135,145, 16,242,148, 82,122,184,244, 8,133, 52, 86,163, 81, 87, 22, 75, 36,170,159,215,175,
- 95,222,170, 85, 43, 70, 36,250,255,232, 45, 21,209, 4, 0, 27, 27,155, 77, 62, 62, 62,100,218,180,105,137,239, 74,211,203,203,
-235, 76,203,150, 45,219,118,232,208,129,215,188,121,115,184,185,185,189,158,231,224,224,128,150, 45, 91,146,184,184,184,218, 87,
-175, 94, 93,127,230,204,153,213, 94, 94, 94, 23,163,162,162, 58,148,251, 70, 46,103, 12,210,242,230, 23,123,187,255, 82, 48, 28,
-140,185,134,233,151, 18, 58, 48,254,119, 6,135, 8,145,111,220,184,209,169,112,204, 68,131,193, 0,147,201,244,250,179,112, 98,
- 24, 6, 38,147, 9, 11, 22, 44, 48,153,121, 76,149, 40,232,212,185,200,196,148,244, 41, 20, 10, 29,204,140,100,133,186,138,178,
-107,200,100, 50, 79, 0, 93,124,124,124,166, 20,157, 93,221,241,213,167, 82,169,140, 73,210,218,132, 2,104, 85,214,229, 62,111,
-222,188,161,115,230,204,233,129,255,143, 41, 89,171, 79,159, 62, 23,139, 45, 87,171,224, 83, 73, 8,185,196,225,112,142, 2,216,
- 10,224, 79, 17,113,169, 84, 62,106,220,151, 95,200,227,211,245,152,127, 48, 29, 91,175,228, 98,104, 75, 5,198,119,182,198,192,
- 1,253,100,251,127, 63, 48, 10,192,166, 34,171,132,251,251,251,147,176,176, 48,214, 92,125, 88, 52, 4,224, 88,228,183, 14, 64,
-225,208, 86,233, 5,247,133,125,177,244,162,203, 21,126,166, 21,164, 59, 22,172, 71,139,232,166, 1,184,251, 78, 13, 86,225, 24,
- 88,101,142,133,229,213,251,196,240, 1,221, 59,125,252, 81, 51,112,196,182,120,158, 10,220,140,165,224,113, 12,224,128,226,246,
-245,139, 20, 60,102,123,177,135, 65,169,145, 13,226,213,251,187, 90, 53, 3,127,220,188,228, 27,238,211, 84, 30,182, 94, 85, 65,
-175,201, 71, 90,114, 44, 82, 19, 99,144, 20, 31,137,132,216,200,199, 0,153,109,174,230,159, 31, 70,128,137, 41,248,207,199, 20,
-188, 30, 64, 74,122,104,149,175,105, 80,134, 85,243,171, 25,152, 37, 52, 1, 6,101,152, 25, 15,194,119, 62, 8,102,105,154,132,
-144,246,222,222,222, 75,103,204,152,225, 30, 18, 18, 98,165, 84, 42,149, 39, 79,158,188, 28, 19, 19,227,236,226,226, 18, 55,102,
-204,152,102,149, 42, 85,114,234,217,179,167,116,223,190,125, 51, 0,124, 97,134,102, 96,247, 38,117,111,110, 89,253,147, 44, 99,
-255, 26,232, 34, 30,225, 68,146, 18,215, 83, 84,180,170,181,136,124, 93,219, 17,114, 17, 15, 63, 52,119,147,119,249, 35,226, 71,
- 0, 3,205,217,247,128,202,174,213, 12,106, 21, 52,106, 3,182,135,103,170,207, 38, 40,157,136, 77,116,218,234,222, 77,196,220,
-180, 68,120, 42,132,213, 43,114, 60,197,226,146, 71, 57,177,181,181, 69,235,214,173,225,239,239,207,107,213,170, 85, 45, 0,135,
- 75,211,212,235,117,174, 12, 67,161, 80, 40, 36,246,246,246,182, 10,133, 34, 67,175,215,191,149, 38, 0,216,217,217,125,218,186,
-117,107,222,238,221,187,211,163,162,162,110, 15, 24, 48, 32,210,202,202,234,141,104,175, 76, 38, 67,245,234,213,241,253,247,223,
-243, 58,117,234, 84,174,166,179,179,115,251, 29, 59,118,128, 16,242,250,101, 93, 28, 79, 79, 79,184,184,184,160, 75,151, 46,188,
- 79, 63,253,180,125, 89,199,179, 95, 77, 18, 94,104,158,250,214, 36,101,190,152,250,214, 36,148, 0,207,138, 71,178,138,107, 22,
- 68,176,230,190,105, 98, 75, 47,102, 43,105,121, 51,206,123,106, 97, 52, 73, 44, 22,167,190,205,125, 84, 64,169,197,154, 34,145,
-232,117,212,169,248,182, 74,210,228,112, 56,152, 57,115, 38, 8, 33,224,243,249, 16, 8, 4, 37,126,182,105,211,198,210,124,198,
- 17, 66, 56, 2,129, 96, 10,143,199,251, 66,171,213,186,139,197,226, 68,147,201,180, 77,171,213, 46, 40,136,128,218,148,116,237,
-150,166, 41,147,201, 60,159, 63,127,238, 83,218, 65,209,106,181,168, 85,171, 22,160,197,211,178, 52, 35, 34, 34, 60,171, 85,171,
-230, 11,160,112, 40,181, 43,148,210, 86, 69,126, 23,229, 10,165,180,115,193,247,103, 47, 95,190,244, 44, 52, 88, 69, 53, 13,122,
-189,151,187,147, 21, 30, 70,171,177,245, 74, 46,206,207,112,195, 71, 11, 18,209,171, 30, 15,254, 30,114, 24,245, 6,223, 62,125,
-250,108,199,171,235,247, 46,128,158,125,250,244,241,227,114,185, 23, 0, 28, 2,144,243,119, 63,147, 89,205, 10,255, 49, 41,203,
-139, 56, 18, 66,142, 21,217,126,215,194,223, 83,167, 78,157,190,104,209,162, 16, 66,200,177,162,233, 69,151, 43,250, 89,176,173,
- 99,148,210,174,211,166, 77, 11, 92,188,120,241,194,194,101,255,145, 8, 22, 0,171, 52,141, 12, 87, 99,173,192,227,154,192,227,
- 16,240,184, 0, 40, 65, 76,116, 4,242,114,179,175,209,200,223,163,204,139, 92,245,105, 94,167,110,173, 37,187, 86, 78,230,252,
-122, 85,133,108,165, 6, 97, 15, 46,225,238,165, 67,201, 38,163,233, 16, 8,189, 7,112,130, 17,201,132, 83, 90,241, 94,187, 95,
- 25,172, 2, 83,245,134,201,250,112, 32,132,116,246,243,243, 91, 52,115,230, 76,207, 7, 15, 30, 40,114,115,115,211,118,238,220,
- 25,174,213,106, 31, 0, 88, 21, 27, 27,219,122,213,170, 85,210,101,203,150,117,168, 85,171,150,239,254,253,251, 85,102,104,214,
-158, 52,108,224,205, 47,198,125, 43,126,186,111, 29,132, 79,131, 49,243, 81,186,233,124,146,106, 6,128,149,136,203,111,158,166,
- 49,158,253,169,117,101, 78, 21,133, 0,222, 54,194, 54,230,230, 87, 44, 20,241, 40, 79, 12,157,206,136, 60, 29,163,163,148, 42,
-123, 55,242,215, 83,153,131, 24, 0,120, 28,194, 51,227,198,206, 34,132,252, 40, 20, 10,103, 18, 66,104,195,134, 13, 31,214,172,
- 89, 51,223,214,214, 22,106,181, 26, 90,173, 22, 2,129, 0,106,181, 26, 49, 49, 49,184,125,251, 54,108,109,109, 45, 58,174,249,
-249,249, 80, 40, 20, 96, 24,230,173, 53, 77, 38, 19,217,176, 97,131, 44, 36, 36, 68,118,224,192, 1,231,241,227,199,103,212,168,
- 81,227, 94,191,126,253, 94, 56, 57, 57,105, 31, 61,122,132, 27, 55,110, 32, 43, 43, 11, 77,154, 52, 49, 75, 83,167,211,129,199,
-227, 65,173, 86, 67, 36, 18,129,199,227,193,104, 52,130, 97,152,215,166, 43, 63, 63, 31,153,153,153, 16, 8, 4,208,233,202,174,
-214, 86,104,150,250,214, 36,116,223,169, 27,169, 48, 49,128, 62,215, 0,109,206,171, 73,151, 99,128, 38,219,208,119,194,242,218,
-251,158,152,215,235,120, 97, 4,171, 40,101, 21,179,149,180,124,121,188,235,122, 80,101, 21,107,102,103,103, 75,108,108,108,166,
-152, 19,145, 35,132,128,203,229, 66, 32, 16,128, 16,130, 86,173, 90, 97,248,240,225,168, 87,175, 30, 34, 34, 34,176,103,207, 30,
-220,189,123, 23,124, 62,255,245,242,230,210,166, 77, 27,174, 88, 44,190,209,189,123,247,192, 25, 51,102,136,171, 84,169,130,167,
- 79,159,122, 44, 94,188,120,202,185,115,231,122, 16, 66, 26, 80, 74,153,114,133, 10,139,254, 94, 21, 11,118,209,106,181,120,250,
-244,169, 37,235,252, 57, 66,237,237, 29,195,225,112, 94, 48, 12,115, 21, 64, 45, 74,105, 43, 66,200, 73, 0,178, 98,139, 42, 41,
-165,157, 9, 33,185, 0, 30,115, 56,156,103, 12,195,196,148, 84, 93, 74,161, 80,164,197,167,230, 58,219,203,197, 24,210, 66,142,
-143, 22, 36,162,119, 3, 17, 68, 2,130,240,168,100,120, 87,171, 66, 30, 94, 59,220,160,192, 92, 53, 76, 74, 74, 2,128, 6, 0,
-162,226,226,226, 92, 11, 13, 22,203,135, 65,113, 19, 84,104,156, 22, 45, 90,212,181, 36, 83, 85,194,189,249, 70,250,226,197,139,
- 23, 22,249,253, 78, 27, 89,241,138, 58,199,178,111, 44,244, 58,118,112,247,173,143,244,196, 51,176,126,139, 34,209, 32,138,224,
-219, 55, 0,208,109,102, 61,192,220,186, 73, 56, 82,217,182, 13, 11,199,114, 54, 94, 82, 33, 46, 49, 21, 55, 78,108, 67, 90, 82,
-244, 86,128,142,167,145,251,115,223,250, 33, 89,181, 79,160,147,131, 61, 52,122, 10,134, 2,248,147,201,250, 96,204, 85, 55, 95,
- 95,223,121, 55,111,222,244,212,104, 52,138,235,215,175,103,239,216,177,227,133, 78,167,219, 76, 41,221, 89,176,204,145,244,244,
-244, 31, 40,165, 80, 40, 20, 60, 62,159, 47, 41,171,226, 39, 33,164,222,164, 47,134, 94,251,113,195, 22,241,139, 39, 15,177,234,
-192, 9,100,171, 84,166, 75,169,234,158,148,210,194,127, 5, 23,188,109, 68, 9, 20,180, 50,159, 67,224, 42,227,187, 16, 66,196,
-148,210,114,139,115, 93, 43,123,114, 12, 30, 94,184,106,212,160,146,189, 72, 8, 0, 85,125, 3,184, 15,212, 6, 92,127,244, 20,
- 14,114, 43,129,153, 55,217, 44, 66,136,243,246,237,219, 57, 6,131, 33, 63, 34, 34, 2, 46, 46, 46,112,118,118,134,181,181, 53,
-194,194,194,112,254,252,121,132,135,135,131, 97, 24,212,169, 83,199,162, 99,155,145,145,129, 71,143, 30,161, 75,151,143,199,167,
-165,165, 90,217,218,217, 43,175, 93,189,178,172, 34,154, 12,195, 16, 0, 8, 12, 12, 68, 96, 96,160, 56, 33, 33,193,253,216,177,
- 99, 78,243,231,207,143,245,244,244,220,165, 86,171,223,136, 20,152,107,176, 10, 12,203,107,243, 39, 22,139, 33, 16, 8,144,155,
-155,139,148,148, 20,228,229,229,189, 42,179,177,177, 41,215, 96,189,233, 8, 25, 96, 71,139,123,127, 74,175, 57,204,201,194,235,
-243, 79, 17,169,119,185,252, 95,244,240, 46,181, 88,147, 16, 50, 8,192, 20, 51,247, 5, 70,163, 17, 2,129, 0,141, 27, 55,198,
-154, 53,107,112,247,238, 93, 28, 58,116, 8, 30, 30, 30, 24, 54,108, 24, 56, 28, 14, 66, 66, 66, 44,205, 34,115,243,230,205, 41,
- 61,123,246, 12,220,190,125,187, 56, 38, 38, 6,225,225,225,176,177,177,193,154, 53,107, 68, 35, 71,142,244,190,120,241,226, 44,
- 0, 75,203,221,215, 34,173, 5,221,220,220,250,214,170, 85,235, 79,203,184,184,184, 88,159, 62,125,218,169,208,120, 21,111, 97,
- 88, 2,217,179,102,205,250,201,223,223,127,101, 65,177, 96, 75, 0, 50, 74,105,155, 3, 7, 14, 16, 0,232,221,187, 55, 37,132,
- 92, 42, 88,254,241,254,253,251,219,134,133,133,209, 57,115,230,148,248, 76, 74, 75, 77,218,240,211,154,141, 63,253, 56,119,146,
-112, 66, 23,107,244,110,192,135, 88, 64, 96, 37,229, 99,193,234, 77,134,251,183,175, 60,114,117,117, 61, 6,160,103, 82, 82, 18,
- 92, 93, 93,243, 1, 60,227,114,185, 81, 38,147, 41,145,173,227,254,175,123,175,149,212,208, 97,100,225, 61, 89,154,113,178,196,
-160, 21,141,112, 21, 50,109,218,180,192, 69,139, 22,221,121,151,251,194, 41,178,209,178,255, 66,241, 56,174, 46,206, 14,118, 83,
-135, 53, 7,195, 0, 70, 19, 96, 52, 81, 40, 85,106, 60,125,114, 87, 5, 49, 57, 96,214, 22, 69,194, 37,243,103,124, 91,245, 97,
- 60, 7,137, 89,122, 92, 62,188,145,166, 37, 69,127, 74, 35,247,125,254,174,204,149,139,147,195,165,221, 27,127,192,221, 72, 29,
- 76,204, 43,127,197, 48,244,245,247, 15,228, 34,172,238,224,224,176,236,214,173, 91, 85, 68, 34,145,226,249,243,231,166,253,251,
-247, 39,234,116,186,245,133,230,170,128, 65,245,235,215, 55,200,100, 50,228,231,231,107,245,122,125,126, 25,230,202,189, 77,189,
-218, 87,126,220,176, 69,172,209,233,144,163,214,130,107,239, 84,220, 92,129, 16,210,172,173, 79,165, 74, 68,172, 0, 5, 16,157,
-171, 79, 52,199, 92, 1,128,220,218,134,227,222,160, 13, 26,124,179, 6,185, 68, 65, 1,192,222,181, 18,167,237,151, 11,208,105,
-213,101, 40, 57, 10, 75, 44,112,226,192,129, 3,227, 3, 2, 2,114,252,253,253,115, 50, 50, 50, 16, 26, 26,138,172,172, 44,172,
- 90,181, 10, 79,159, 62, 5,195,188,146, 43,169,184,196, 12, 99,132,172,172, 76, 57,165, 20, 89,153, 25,178, 25, 51,102, 88, 87,
- 68,211,100, 50,189,113,111, 85,170, 84, 9, 99,198,140, 17,168, 84, 42,155,216,216, 88,171,162,243,204,213,212,233,116,133,157,
-240,129, 82, 10,157, 78,135,156,156, 28,232,116, 58,188,120,241,226,181,185, 42,216,190,101, 6, 75,159, 91,114, 37,123,117,134,
-193,194, 7,217,235,222,151, 37, 18, 73, 74,225,131, 83, 44, 22,131, 16, 82, 82, 49,219, 59,233,173,185,112, 91,132, 16, 42,145,
- 72, 82, 42, 96, 10,203,221, 31, 51,207, 59, 4, 2, 1,134, 15, 31,142, 59,119,238, 32, 34, 34, 2, 92, 46, 23, 74,165, 18, 42,
-149, 10,237,219,183,135, 80, 40,180, 52,130, 69, 5, 2,193,160,233,211,167,139,163,162,162,144,158,158, 94, 88, 73, 30, 38,147,
- 9,227,199,143,151,136, 68,162, 65,150,134,234, 19, 19, 19, 59, 62,127,254,220,183,248,148,156,156,156, 83,180,206, 96, 69, 57,
-112,224, 0,233,221,187, 55,237,221,187, 55, 45, 52, 90,230,146, 29, 31,186,225,208,145, 99,103,191,251,126, 73,190, 74,153,135,
-106,110, 18,228,231,229, 96,193,162, 31, 13, 55,111, 94,189, 52,101,252,232,166,251,247,239, 95, 12,224, 89,193, 42,207,246,239,
-223, 63,244,251,239,191,255, 13, 5,221, 53,176,252,171, 34, 84,164,172,123,239, 93, 20,227,149,164, 81, 80, 76, 40,249, 75, 34,
- 88,101, 62,116,188,251,213,117,118,176,191,184,125,237, 92,249,177, 39, 64,124, 92, 52,210,146, 98,208,160,105, 27, 60,125,242,
- 16,140,193,116,144, 62,223, 95,110, 51,115,226,213,199,199,191, 70,192,151,173,155,214,196,146, 99,249,120, 30,124, 26,217,105,
- 73,107,105,212,190,131,239, 98,103, 72,213, 62,129,206,142, 14,151,126, 91, 55,207,238,100, 40, 7,113,113,209, 56,252,219, 74,
- 24,244,127,122,247,159,176,248,161,205,232,132,249,217, 41,208,229,153, 32,230,168,196,239,193, 69,248,194,209,209,113,251, 79,
- 63,253, 52,186,105,211,166,210, 1, 3, 6, 60,207,202,202,154, 79, 41,221, 87,228,101,209,206,215,215,119,226,218,181,107,189,
-227,226,226,112,254,252,249,231, 0,238,149,161, 25,207,229,114,215,159,255,109,211, 36, 73, 85, 63,172,154,254,157,241,192,221,
-208,238,148,210,147, 69, 52,253,131,106,249, 28,155, 63,241, 43, 14,115,255, 20, 30,197,164, 32, 50, 71,123,222,220,124, 71,100,
- 43, 13,124,145, 4,114,151, 42,120,158,111, 18,240,120,188, 59, 95,124, 49, 92,192,225,242,192,225, 9, 16,154,165,177,228, 37,
- 46,191,115,231, 14,135,203,229,190, 97,204,139, 70,132, 44,141, 12, 89,130,185,154,197, 13, 86, 33, 70,163,145, 84, 84, 83,171,
-213,162, 36,159, 92, 82, 93, 44,134, 97, 44,219,127, 93, 78,201, 46, 79, 99,153,193, 42, 26,145, 42, 90, 52, 88, 88, 95, 78,163,
-209, 56, 73, 36,146,148,194, 98,190,119, 21,193,122,155,150,133,101, 21, 83, 90,146, 63, 14,135, 3,134, 97, 32, 16, 8, 80,167,
- 78, 29, 28, 59,118, 12,118,118,118,176,178,178,130,149,149, 21, 36, 18, 9,236,237,237, 95, 27, 44, 14,199,236,214, 55, 84,171,
-213,122,120,120,120,224,197,139, 23, 16,139,197,175, 39,145, 72,132,192,192, 64, 40,149,202, 74,248,160, 98,245,192,136,126, 65,
- 61,214,237,248, 99,200,177, 99,199,191,212,107, 53, 53,253,252,124,233,189,155, 23, 31, 77, 25, 63,186, 19,107, 73,254,115, 17,
-174, 99, 69, 77, 18, 33,228,216,212,169, 83,167, 87, 84,111,234,212,169,211, 75,138,104,189, 51,131, 85,232, 24, 75,114,142,133,
-230,106,235,154, 57, 86,127, 60, 0,226,227,163,112,118,223,234, 60,131, 94,151,197, 48, 6,207,200,240,135, 0, 7,219,204,139,
-151,209, 70, 61,186,180, 37,103, 67,116,200,205, 78,195,179,123,167,163,161, 22, 78,123,151,230,106,251,186,185,118, 71,159, 16,
-196,197, 69,227,228,158,149, 57, 6,163,190, 29,141,220,255,224,109,180, 7, 11,133, 61,250,213,176,233, 58,188, 69, 34, 76, 45,
- 77, 24,244, 52,172,179, 91, 75,210, 35,241,106,217, 45,189,254,106,210,210,210, 22,200,229,114,206,210,165, 75, 63,215,104, 52,
-115, 40,165, 7,138, 92,132,237,171, 85,171,182,100,195,134, 13,238,177,177,177,194,107,215,174,101, 94,186,116,137, 2, 88, 84,
-142, 25,152, 76, 8,225,214,171, 82,105,236,253,232,132,238,148,210, 83, 69, 52, 3,187,214, 15,184,190,101,209, 44,133,225,250,
- 1,228, 39,197, 97,218,245,248, 92, 0,211,204,188, 49,236, 28, 28, 28,200,224,193,131,153,188,188, 60, 8,132, 66,198, 96, 48,
-112,155, 53,107,102,250,246,219,111, 57,201,201,201,200,205,203,231, 17, 66,236, 40,165,153,229,104,205, 3, 48,190, 89,179,102,
-164,113,227,198,183, 87,174, 92,121,166, 44,147, 82,145, 8, 86,185,129, 30, 51, 53, 25,134, 41,241,237,105, 48, 24, 72, 69, 53,
-139, 70,176,202, 51, 88, 22, 71,176,180,165, 69,176,210, 44,142, 96,149,100, 86,138,154,195,162, 6,168, 34,117,176,254,130,135,
-119,169, 38,202,146,252, 21,214,131, 19, 8, 4,120,248,240, 33, 42, 87,174, 12,189, 94, 15,133, 66, 1,133, 66, 1,185, 92,142,
-188,188, 60,240,249,124, 88,184,207,140, 88, 44,142, 13, 13, 13,245,117,116,116,132,201,100,122,195,100, 61,127,254, 28, 50,153,
- 44,193,210, 8,150,155,155,219,233,130, 86,132,111,224,226,226, 98,253, 46,142,107,209,200, 85,239,222,189, 43, 84,142,176,110,
-209,164, 29, 0,118,244,233,211,103,251,227,155,199, 27,184,186,186, 30,247,247,247, 39, 0,192,182, 24,252,176,162, 87,165,148,
-168,165, 21,139, 60,233,138,252, 78, 3, 64, 10,126,167, 21, 49, 96, 69,191,235, 74, 72,203, 88,180,104,209,197, 34,245,183,210,
-254,182, 8, 22,241,238, 87,215,201,222,238,226,230, 85,115,172,246, 5, 3, 9,113, 81,184,124,112, 77,142,209,164,111, 7,134,
- 38,221, 60,119,240, 0, 8, 84,136, 60,112, 25,216,103,198,163, 1,245,234,213,240,196,161, 16, 3,210,226,159,131, 82,102, 43,
- 77,249, 77,245,214, 15,197, 2,115,181,117,205, 28,187, 63, 30, 18,196,199, 69,225,236,190,213, 57, 70,147,190, 93, 69, 58, 41,
- 45,228, 11, 66,108, 57, 10,233,207, 67, 58, 54,234,227, 89,181, 18, 24,106, 0, 35,160,232, 53,217,129,247,236,190,234,144, 71,
- 7,238, 62, 38,159,249, 50,254,230, 63,215,251,120,126,126,254, 15,132,144, 63, 40,165, 79,139, 60,220, 59,123,123,123, 47,252,
-249,231,159,171, 36, 36, 36, 40,238,223,191,159,251,203, 47,191, 68, 49, 12, 51,143, 82,154,106,198, 69,254, 29, 33,100,115,209,
- 62,116, 8, 33,181, 39,125, 62,240,230,192,207,190, 16, 71,157,219, 1,219,168,167,152,120, 61,209,244, 44, 75, 55,128, 82,154,
-108,142,185, 18,137, 68, 7, 78,156, 56,241,162, 94,189,122, 68,169, 84,194, 96, 48, 32, 61, 61, 29,127,252,241, 71, 40,165, 20,
-182,182,182, 56,113,226, 4, 51,112,224,192, 3,132,144,222,165,153,172, 34,221, 52,144,130,110, 26,154,156, 58,117, 42,172, 83,
-167, 78,241, 37,153, 20,145, 72, 4,141,198,178,222, 62, 74,107,149, 88, 17,205,210, 34, 88,197,211, 45,209, 44, 44,166, 44,172,
-220, 94, 60,189, 16, 46,151, 11,134, 97,254,148, 94,182,193,202, 46,217, 72, 41, 83, 43, 28,193, 42,218,218,175, 34,230,166, 40,
-229,117,248, 89,145,150,133,239, 58,130, 85,120, 46, 4, 2, 1,142, 28, 57,130,207, 62,251, 12, 38,147, 9, 82,169, 20,114,185,
- 28, 50,153, 12, 7, 15, 30, 68, 97, 55, 14,150,100,209, 96, 48,236, 92,180,104,209,244, 13, 27, 54, 72, 40,165, 16, 10,133,175,
- 13,214,156, 57,115,212,122,189,126,167, 57, 6,235,117, 15,237, 12, 13,173,238, 88,118, 43,194,146,214, 41,165, 62,150,205,188,
-121,243,134, 50, 12,211, 3,197,186, 98, 40,126, 53, 21,124,214,234,211,167,207,197,178,186,105, 0, 96, 59,111,222,188, 17, 12,
-195, 20,246,130,250, 70,107,193, 34,203, 21,190, 75,124,251,244,233,179,189,120, 43, 66,150,127, 61,119,255,109, 25,230,149,110,
-174,250,248, 59,217, 59, 92,220,180,114,142,213,174, 59, 64, 98, 92, 36,110, 28, 89,155, 99, 98, 12, 69, 77, 75, 11, 11,255, 30,
-214,115,115,178, 65,230, 45, 53,114,211, 99, 1,138,251,111,111,174,250, 85,119,114,176,191,180,101,245, 28,187,253, 15, 56, 72,
-136,141,194,165, 2, 19,248, 54,230,106,176, 80,216, 35,208,199,125, 75,255,206, 45,108,173,137, 1,198,152, 48,108, 30,214, 23,
-193,221,244,104,222,207, 26,141,186, 40,224, 93, 87,220,247,196,166,204,143,220, 90,146, 47,254,201,104, 86, 49,115,213,173, 74,
-149, 42,115,111,223,190,237,201, 48,140,226,242,229,203,121, 27, 54,108,136,212,104, 52,171, 41,165,199, 45,208, 44,106,174,234,
- 77, 29, 57,236,218,194,159, 55,139, 67,131,239, 98,201,206,163, 80, 27,116,166,211,241,249,125,138, 22, 31,150,133, 80, 40,252,
-225,194,133, 11,178, 90,181,106,145,140,140,140,215,145, 22,189, 94,143,156,156, 28,228,229,229, 65,171,213,162,126,253,250,156,
-213,171, 87,203,198,142, 29,251, 3,128, 47,205,205,175, 66,161,128, 64, 32,128, 94,175,127, 29,193, 18,137, 68,176,182,182, 70,
- 70, 70, 6,246,238,221, 11, 0,101, 70,197, 4, 2, 97, 18,135, 67, 42, 75,164, 82,173, 88, 44,102, 92, 93, 93, 75, 52, 86,150,
-104, 22, 16,223,185,115,103,247,121,243,230,137,235,215,175,255,167, 8, 86, 69, 52, 41,165,170, 14, 29, 58, 72, 87,175, 94, 13,
- 79, 79, 79,232,116,186, 55,140, 20,135,195,129, 64, 32, 64, 92, 92, 28,230,207,159, 15, 74,169,249,127,100, 52, 89, 6,212, 26,
-234, 8,117,134,225,213,148,110,128, 42,213, 0,189,202,100,225,117,249,218,172, 20, 53, 65, 5,117,164,254,100,128,204,141, 16,
-149, 87, 4,104,105,203,194,162,134, 77, 36, 18, 33, 59, 59, 91, 66, 8, 25, 84, 74,143,243,102, 71,176, 10, 13,214,211,167, 79,
-177,125,251,118,116,233,210, 5,182,182,182,200,202,202,194,190,125,251, 16, 22, 22, 6,161, 80, 8, 66,136, 37, 81, 44,166,113,
-227,198, 63, 94,189,122,181,219,128, 1, 3, 2, 38, 78,156, 40,169, 89,179, 38,158, 61,123,134,121,243,230,105,130,131,131, 35,
-212,106,245, 60,152,211, 33,105, 65, 15,237,133,157,136,154,213,138,176,216, 58,197, 41,165,155,134,206,165,168, 21,237,194,225,
-141,110, 26,138,114,227,198, 13,175, 42, 85,170,248,227, 85,203,192,194, 23,109,209,214,130,111,188,132,147,146,146, 26,130,109,
- 69,200,242, 62, 27, 44, 80, 50,126,192,176,145, 86, 59,239, 16,196,197, 68,224,222,137,245,197,205,149, 57, 15,153,160,162,125,
-101,136, 37,178,154, 12,121,213, 44, 57, 55, 61, 14,160, 92,139, 13, 86,113, 77, 80,230,187, 1, 67, 71,218,237,190, 71,144, 24,
-247, 18,215, 15,175,179,216, 92, 21,213, 28, 34, 20,206,226,243, 56, 51, 62,110, 85, 79,208,178,174, 47,164,169, 81, 72,142, 79,
-196,222,167,105,153, 17, 89,218, 47,174, 19, 61, 98, 94,106, 55,119, 25, 97,103,103,235,194, 71,215,209,246,118,183,142,230, 30,
-170,212,142,163,167,122,186, 40,241, 26,157, 83, 98, 62,223, 1,229,105, 18, 66,170, 91, 89, 89, 45, 13, 14, 14,118, 20,139,197,
- 86,247,238,221, 51,109,220,184, 49, 78,163,209, 44,163,148,238,169,160,166,123, 67,159,106,151, 23,174,219, 36,206, 87,170,160,
-212,233, 33,114,118, 53,253,113,243,201,167,165,117,134, 89, 92,147, 16,210,246,243,207, 63,175,221,184,113, 99, 78, 81,115,165,
-211,233,144,155,155,139,188,188, 60,228,230,230, 34, 55, 55, 23, 9, 9, 9,104,221,186, 53,167,118,237,218, 53, 9, 33,109, 41,
-165, 23,139,107, 22,233,166, 97, 58, 0, 14, 33,228,238,195,135, 15,243, 59,117,234, 4,137, 68, 2,165, 82, 9, 15, 15, 15, 24,
-141, 70,156, 56,113, 2,193,193,193, 74,134, 97, 46, 3,120, 88, 86, 62,213,106,149, 7, 33,132,163, 86,169,234, 12, 29, 58,180,
-245,132, 9, 19,222,104, 90,238,228,228, 4, 59, 59, 59,139, 52, 1, 32, 51, 51,179,198,169, 83,167,190,125,248,240,225,119, 93,
-186,116,177,158, 62,125,186,200,203,203, 11, 38,147,137, 83, 81,205,172,172, 44,235,251,247,239, 47,107,209,162,197, 87,157, 58,
-117,226, 45, 92,184, 16,214,214,214, 48,153, 76,144, 72, 36,200,205,205,197,188,121,243,112,237,218, 53, 35,165,116, 93, 78, 78,
-206,196,178, 52,223,232, 7,107,194,138, 50,155, 71,150,214, 15, 86, 9,231,189,196,136, 79,105, 6,168,164,229,255,142,251,168,
-152, 97,131,141,141,205, 20, 0, 83, 74,233,113,222,236,123,179,208, 96,113,185, 92, 68, 71, 71, 99,227,198,141,127,234, 7,171,
-176, 27,135,146,180, 75,217,119,122,233,210, 37, 19, 33,164,233,189,123,247,166, 12, 25, 50,228, 11,165, 82,233, 46,147,201, 18,
- 13, 6,195, 54,181, 90, 93,216, 15,150,192,146,251, 93,169, 84,198,148,212,138,176,248, 50,128, 77,153,154,197,186,105,120,163,
- 43,134, 98,171,189,209,133, 67,241,110, 26,138,106, 54,107,214, 44,138,195,225,132, 23, 20,181,135,163, 88,107,193, 34,154,190,
- 73, 73, 73, 13, 93, 93, 93, 47, 3,144, 22,111, 69,248, 79, 60,147, 89, 77,214, 96,149, 98,176, 32, 62,119, 59, 26, 66, 73, 38,
- 30,157,223,106,177,185, 42,177,228, 65,163,138,152,181, 59,182,174, 78,171,129, 50, 39,229, 25,141,218,147,250,246,103, 25,178,
-115,119, 99, 32,150,101,227,193,185, 95,179, 77, 38, 77, 59, 26,241,251,195,138,203, 97,234,250, 19,251, 5,196,218, 14,143,190,
-253, 12,137,217, 74,156,140,204,218, 71, 85,218, 47,119, 20,140,187,231,222,148, 92,221, 50, 35,121,125,203, 94,214,125, 29, 42,
-241,177, 98,210, 54,136,167,218, 11, 26,125,212,234, 31, 29,163,176,176,226,251,170, 85,171,198,180,108,217, 82,222,183,111,223,
-231,153,153,153,111, 84,124,175,128,102, 60, 33,228,231,227, 27,150, 79,178,175,213, 4,107,191,159,108,218,125,243,201, 27,173,
- 10,203, 67, 32, 16,180,153, 58,117,170, 64,169, 84,254,201, 92, 21, 55, 88,185,185,185,120,244,232, 17,134, 13, 27, 38,122,248,
-240, 97, 27, 0, 23, 75,201,215, 44, 66,200, 6,188, 26,139, 48,121,199,142, 29, 77, 15, 31, 62,220,116,252,248,241,130, 46, 93,
-186,224,214,173, 91, 56,123,246,172, 94,175,215,223, 4,112,211,220,225,103, 10,250, 15,186, 79, 8,121,178,100,201,146,166, 92,
- 46,119, 86,225,188,208,208, 80,108,221,186,181, 34,154, 70, 0,203, 8, 33, 63,239,216,177, 99,214,185,115,231, 62, 31, 58,116,
-168,149,193, 96,192,211,167, 79,241,235,175,191, 86, 84,243, 91, 71, 71,199,153, 39, 78,156,216,118,230,204,153,158,131, 7, 15,
-230,140, 27, 55, 14,107,214,172,193,239,191,255,206,152, 76,166,195,124, 62,127,104, 90, 90, 90,185, 13, 80,222,232, 7,171,140,
-126,174,202,155, 95, 66, 4, 43, 17,175,122,104, 55,119, 76,194,114,117,223,166, 8,208,204,124, 39,189,245, 99,169, 96, 63,218,
-180,105,243, 58,170, 72, 41,125,163,222, 92,161,177,178,180,136, 16,128, 77,193,117,186, 14,192, 26,188,217,139, 59, 23,255,239,
-233,221, 92,197,128, 36,173, 77, 40,180,120, 90,246, 96,207, 54, 0, 69, 64, 57,106,217,179,102,205,250,105,246,236,217, 63, 21,
-239,138,161,232, 66,197,187,112,152, 59,119, 46, 74,235,166, 1, 64,214,172, 89,179,126, 4, 0,127,127,127, 82, 80, 44,216, 0,
- 5,173, 5,139,104,110, 47, 72,151,206,153, 51,103, 8,128,178, 52, 89, 88,254, 65,131, 5, 58, 61,244,234,110, 3, 0,123, 16,
-206, 52,250,114,111,232, 91, 63,184, 24, 58,245,194,174, 57,107, 64,145, 69, 77,198, 41,239,100, 15, 24,238,140,208,171,187, 24,
-128,216,128,112,166,210,151,191,191,117, 62,137,181, 29,242,230,141,193,239, 33,137, 52, 89,105,248,100,135, 78,247, 70,164,166,
-160,206, 85, 63,183,150,100,175,173, 27,255,143,111,219,217,147,227,153, 67,222,139, 19,154,150,150,182, 80, 46,151,115,151, 45,
- 91,246,185, 90,173,126,163,226,251, 91,188,112, 38, 19, 66,184,141,170,123,142,189,243, 34,166,135,185,197,130, 69, 94, 36, 66,
- 55, 55,183, 39, 26,141, 6,132, 16,104,181,218,215,198, 42, 47, 47, 15, 57, 57, 57,175,127,235,245,122,164,165,165,193,195,195,
- 3,132, 16,129, 5, 47,194, 43,132,144,224,121,243,230,181,154, 55,111, 94,157,130, 40,208, 21,139,138,198,222,212, 54, 0,184,
- 34,145, 72, 19, 9, 33,238, 2,161, 72,121,227,198,141,115,111,169,169, 42,136,140,172, 88,177, 98,197, 2,153, 76,214, 48, 52,
- 52,244,252,219,104, 22,152,167, 79,237,237,237,221,182,111,223,190,127,203,150, 45, 77,120, 60,222, 45, 66, 72,159,236,236,108,
-139, 7,123, 38,111, 70, 4, 44,158, 95,140, 81, 48,111, 12,194,114, 35, 68,230, 68,192, 42,202, 95, 97,216, 76, 38, 83,254,204,
-153, 51, 83,139, 27,174,226,209,170,194,223,122,189, 94, 99,230,189,100, 73,171,200,114,204, 5,201, 7,128, 87, 99, 11,190, 26,
-254,198,220,193,158, 1,148, 58,182,229,236,217,179,233,220,185,115, 9,135,195, 57, 12,224, 25,135,195,121, 81,188, 18,122,209,
-121,115,231,206,197,236,217,179,233,156, 57,165,255, 55, 45,212, 12, 11, 11,163, 92, 46,247, 60,128, 40, 46,151, 27, 93, 84,183,
-104,122,225, 58,101,105,178,176,252, 99, 6,139, 70,238,143, 3,240,217, 59,253,103, 24,181,255, 28, 44, 24,203,204, 44,205,232,
- 61, 49, 0, 6,191, 51, 61, 96,233,136, 70,109, 38, 21,252, 11, 92, 81,220, 92, 21, 37,241, 42, 61,236,218,156, 44,106,244, 81,
-171,241, 5, 47,159,133,239,195, 73, 45,169,226,251, 59, 48, 89,127,170,248,110,193,203,230,140, 68, 34, 33, 74,165, 18,106,181,
-250,141,104, 85,110,110, 46, 84, 42, 21,242,243,243, 95, 87, 78,207,207,207, 47, 44,238,162, 22,230, 81, 5,224, 36, 33,228, 12,
-165,212,244, 46,246, 91,173, 86, 85, 46,120,177,113,223,149,102, 65, 67,131, 47,222,165,102, 70, 70, 70, 34,128,102,222,222,222,
-194,136,136, 8, 93, 69,117,202, 27,200,217,220,129,158,223,101, 52,232,175,230, 93, 27, 54, 0,208,235,245, 53,254,130,200,218,
-179,119, 44,248,107,135, 22, 1, 92, 20,237,251,167,188,193,158, 11,141, 25,197,175,165,228,145,146, 87, 14,146, 2,216,254,242,
-229, 75, 79,134, 97, 98, 74,136, 36,189, 49,111,206,156, 57, 40,173,127,190, 98,154, 0,112, 40, 46, 46,206,205,100, 50, 37, 21,
-211,125, 35,189, 44, 77, 22,150,127, 56,130,245,223,228, 55,157,110, 54,202, 25,108,184, 40, 73,215,233, 12, 0, 51,222,183,253,
-120,151,230,170,136,102,120, 69,214, 51, 24, 12, 23, 0,192,209,209, 17,142,142,142,150,172, 87,209,124,154,254,130,125,255, 87,
-104,190,141,185, 98,249,111, 65,179, 66,227, 0,124, 95,238,114,229,247,222,254, 39, 67, 84,240, 53, 11, 64, 86, 41, 30,167,172,
-121,101,105, 2, 64, 46,128,220, 18,214, 45, 45,157,133,229, 31,129,195, 30, 2, 22, 22, 22, 22, 22, 22, 22,150,119, 11, 1, 16,
- 84,202, 63, 6,179, 91, 7, 16, 66,130, 42,240,239,253, 28,171,201,106,178,154,172, 38,171,201,106,178,154,255, 45,205,242,180,
-139,183, 70,126, 87,195,104,253,237, 20,182,108,249, 43, 38, 0, 65,172, 38,171,201,106,178,154,172, 38,171,201,106,178,154, 21,
-220,206,200,191, 99, 59,127,197,196, 22, 17,178,176,176,176,176,176,176,176,188, 99,216, 74,238,255, 82, 8, 33,213, 1, 76, 7,
- 96, 93, 36,249, 14,165,116, 81,177,229,118, 1,144, 22, 73, 82, 2,152, 71, 41,125, 97,201,246,184, 92,238,162, 86,173, 90,125,
-121,237,218,181,229, 6,131, 97, 94, 5,242,235,233,234,234,250, 35, 33,164, 62, 0, 62, 33,228,101, 74, 74,202, 34,131,193,112,
-238, 45,142, 65, 85, 23, 23,151,197, 0,234,114, 56, 28, 62, 33, 36, 34, 37, 37,101,190,193, 96,184,244, 22,154, 10,103,103,231,
-230,148, 82, 23, 0, 92, 62,159,159,145,144,144,112,187,162,173,225,250,204, 13, 19,228, 42,141,124, 0,176,146,241, 12,251,103,
-251,235,205, 77, 99,175,114, 22, 22, 22,150, 15,212, 96,245,247, 37,174, 38, 30,120,251, 67,105, 92,225,203, 7, 64, 29, 0,213,
- 1,188, 0,240,144, 82,154,247,150, 70,225, 95,161,249, 30, 50,139, 82, 58,176,216,126,255,105,161,118,237,218,117, 63,115,230,
-140,180,112, 24, 21,134, 97, 32,145, 72,140, 0,134, 89,112, 60,157, 6, 12, 24, 48,117,243,230,205,232,219,183,239, 76, 66,200,
- 79,148,210,124,115,215,183,179,179,235, 93,181,106,213, 53,155, 54,109,114,108,210,164, 41, 17, 10,133,120,249, 50,194,125,212,
-168, 81, 53,157,157,157, 15,167,164,164,124, 97,233,206,219,219,219, 15,170, 86,173,218,138,141, 27, 55, 58,180,104,209, 2,132,
- 16, 4, 7, 7,187,127,251,237,183,117, 92, 92, 92,246, 36, 39, 39,127,101,169,166,131,131,131, 79,181,106,213,218,174, 93,187,
- 86,210,188,121,115,136,197, 98, 60,124,248, 80, 62,122,244,104, 23, 23, 23,151,167,201,201,201,151, 45, 53, 87,143,131,143,246,
- 52,234,181, 75, 0,128, 39, 16, 77,110,250, 83,238,209,204,224, 43,221,202, 75,235, 51, 23,135, 88,147,197,194,194,194,242, 1,
- 26,172,222, 1,100, 30,120,152, 14,128,116,174, 78,246,156,141,226, 94,109,223,190,189,247,240,225,195, 73,189,122,245, 16, 28,
- 28,236,179,103,207,158,143,121, 60, 94,132,201,100, 10, 6, 16, 98,110, 47,212,132, 16, 62,128, 64, 46,151, 91,255,125,214,124,
-207,145, 21,236,119, 10,128, 59, 5,105,119,138, 47,116,225,194,133, 35, 60, 30,175, 48,130,213, 72,169, 84, 58,227,205,168,151,
- 57, 84, 49, 24, 12, 8, 15, 15, 7,135,195,225, 3,240,194,159,135,190, 40,237,188,184,187,187,187,175,191,121, 39,216,158,240,
- 36,200,210, 0,208,232, 33,148, 59, 99,243,214, 29,118, 19,190,249,234, 83, 43, 43,171,171,185,185,185,191, 89, 96,248,188, 60,
- 60, 60,126,122,244,232,145,189, 84, 42, 5,195, 48,200,203,203,131,139,139, 11, 54,109,218,100, 51, 97,194,132,129, 18,137,228,
-146, 90,173,254,221, 18, 83, 94,173, 90,181,182, 79,158, 60,145, 20, 14,244,172,211,233,224,238,238,142, 93,187,118,137,198,141,
- 27, 87, 67, 36, 18,197,107,181,218, 72,115, 53,115,149, 70,190, 81,175, 93,178,125,221,156,202, 0, 48,244,171, 57, 75,132,121,
- 86, 39,204, 73,203, 85, 26,143, 3, 96, 13, 22,203,223, 10, 33,164,190,131,131,195,129,244,244,244,203, 0,190,120, 23, 93,137,
- 16, 66,220,120, 60,158, 23,165,212,166,224,119,182,209,104,140,162,148, 38, 86, 84,211,193,187,109, 55,136,164,159,129, 50,117,
- 56, 0, 8,135,243,208,164, 87,109, 77,127,118,241,232, 91,105, 10, 37,159, 3,180, 14, 7, 96, 8,135,243,136, 49,170, 54,165,
-133, 93, 60,201, 94, 25, 44,239,204, 96,245, 9, 32,182, 0,166,236, 89, 51,157,195,227,114,201,128,111, 22, 13,220,178,110, 25,
-167,125,183, 62,175,139, 73, 90,182,108,137,150, 45, 91,146, 37, 75,150, 84, 63,127,254,124,245, 93,187,118, 25, 9, 33,143, 40,
-165,123, 75,219, 88, 39,111,162,102, 0,241,199,126, 60,229,128,239,127,219,216,184,113, 99,136, 68, 34,188,141, 38, 0,116,168,
-206,141,236,210,216,251,209,128,177,179, 98,154, 52,105, 70,223,133,230,191,136, 59,148,210, 30, 5, 15, 46, 91, 15, 15,143,230,
- 70,163, 81, 12, 0, 60, 30, 79, 3, 96, 44, 45, 24,226,135, 16,114,152, 97,152,238, 22, 60, 24, 57, 0,102,119,239,222,125,230,
-215, 95,127, 13, 15, 15, 15,140, 27, 55, 14, 6,131, 33,152, 16, 50, 11,192,226,242, 58,242,115,114,114,154,181,126,253,122, 59,
-158, 80,134,122, 83,162,144,148,109, 4, 0,200, 69,192,145, 49, 20,227,198,141,179,186,119,239,222,124, 0,102, 27, 44, 39, 39,
-167,121,155, 54,109,178,147, 74,165,160,148, 34, 63, 63, 31,121,121,121,200,207,207, 71,126,126, 62,190,250,234, 43,171,167, 79,
-159,254, 8,192,108,131,229,236,236,220,124,237,218,181, 18,177, 88,140,252,252,124,129, 94,175, 39,121,121,121, 80,169, 84, 84,
-167,211,233,199,142, 29, 43, 10, 9, 9,105, 3, 32,146,125,108,188, 55,102,128, 11,224, 19, 62,159,223,203,219,219,187,193,139,
- 23, 47, 30, 24,141,198,131, 0, 14,190,237,159, 40, 66,200, 71,110,110,110, 11, 18, 19, 19,215, 82, 74,119,252, 87,142,169,179,
-179,243,193, 27, 55,110, 84, 94,191,126,253,176,229,203,151,159,176,228, 30, 42,229, 79,111,211, 70,141, 26, 57,244,234,213,139,
-239,226,226, 2,149, 74,133,136,136, 8,233,185,115,231, 28,197, 98,113,134, 86,171,189,105,201,185,114,240,109, 46, 7,207,106,
- 79,211,182, 65, 45,250,126,250,137,194,217,222, 26,106,157, 9, 47, 98,146, 60, 78,157, 56,210,218,173,230,199, 55,244,250,156,
-254,233,207,174,231, 91,170,217,182, 83,215, 22, 65, 31,125,164,176,182,177, 70,142, 82,143,151,209, 9,158, 23,207, 30,109,233,
- 90,243,227, 43, 12, 49, 12, 78,121,124, 70,197,222,117, 44,150, 96,118, 37,119,169, 84, 90, 98,186,181,181, 53,218,182,109,139,
- 69,139, 22,241, 0,212, 47, 58,239, 79,131,159, 2,162, 99, 27,166,193, 90, 38,226,120,120,120, 40,172,172,172,222, 90,243, 85,
- 34,227,213,204,131,118,190,251,219,244, 97,231,118,173, 8, 84,230,101,243,139, 47, 34,151,203,225,235,235,139,153, 51,103,154,
-167,249,150,252,221,154,174,174,174,126, 45, 91,182,172,127,225,242,101,155,196,196, 68, 81, 98, 98,162,232,204,133, 11, 54, 77,
-155, 54,173,239,234,234,234, 87, 68,195,146,124,254,176,110,221,186, 89,135, 15, 31,230,180,108,217, 18,182,182,182,104,219,182,
- 45, 78,156, 56,193, 91,190,124,249, 66, 0, 51,203,203, 39,135,195,105,209,178,101, 75, 2, 74,145,156, 99,196,237, 69,126,120,
-184,204, 31,121, 26,138,204,156, 92,168,213, 26, 72,165, 82,113, 65,177,174,185,251,222,172,105,211,166, 4,192,107, 83,149,151,
-247,106,202,207, 87, 66,167,211, 67, 36, 18, 41, 8, 33, 98,115, 53, 41,165, 46,205,155, 55, 7, 0,232,245,250,215,101,173,217,
-217,217, 36, 39, 39, 7, 58,157, 14,124, 62, 95, 64, 8,225,153,171,105, 37,227, 25,120, 2,209,228,161, 95,205,137, 27,250,213,
-156, 56,158, 64, 52, 89,167,200, 53,153,147,102, 37,227, 25,254,201,235,147, 16,226,200,229,114,127,245,246,246,126,202,229,114,
-183, 19, 66, 92,222, 70,147, 16,210,144, 16,178, 80, 42,149,158,171, 81,163, 70,156, 76, 38,187, 64, 8, 89, 76, 8,105, 90, 17,
- 77, 66,136, 80, 42,149, 94, 88,184,112,225,254, 7, 15, 30,244, 61,127,254,188,215,227,199,143, 63, 93,178,100,201, 30,185, 92,
-126,149, 16, 34,125,155,123,211,203,203,107,203,237,219,183, 27, 54,107,214,108, 51, 33, 68,244, 46,238,119, 66, 8,151, 16, 82,
-151,152, 57, 38,208,223,125,222, 9, 33,110,245,234,213,171, 44, 22,139, 17, 20, 20, 4, 0,109,222, 82,179,233,232,209,163, 93,
- 38, 76,152,192,127,248,240, 33, 54,111,222,140,195,135, 15, 35, 53, 53, 21, 93,187,118, 21,180,107,215,206, 69, 36, 18, 53,181,
- 72,147,103,181,231,155,111,199,119,154, 52,110,132,226, 81,172, 30, 91,207,197,226,208,205, 36,164,170,132,232,246,233, 80,235,
-142, 61,250,117, 20,138,172,247, 88,170, 57,117,202,148, 78, 35, 63, 31,168, 8, 77, 98,112,228, 86, 50,110,133,231,192,200,183,
- 65,151, 79,191,176,173,211,188,211,199, 60,240,183,189, 15,231,232, 67,215,252, 96, 35, 88,132, 16, 74,233,171, 65, 92,247,135,
-210,172,222, 1,228,199,126, 95, 47,156, 73, 56,132, 86, 9,108, 22, 90,169, 90,128,210,222,222, 30, 42,149, 10, 90,173, 22, 2,
-129, 0, 26,141, 6,177,177,177,184,117,235, 22,108,109,109, 45,218,112,110,110, 46,228,114, 57,228,114,249, 59,209,156, 54, 44,
- 72,244, 50, 46, 77,116,250,214,165,214,171,190,252,189, 73,181,186,109, 30,127,212,111,220, 19, 43, 71, 55,205,227,199,143,113,
-227,198, 13,100,101,101,161,113,227,198, 31,202,185,187, 83,240,156,190, 67, 8,177,109,217,178,165,251,233,115, 87,108,243, 53,
-140, 85,116,138,129,207, 48, 12,164, 82, 87,227,222, 3, 71,114,250,126,218,141, 16, 66, 82, 1,220, 41, 48,181,119,202,121, 17,
-136, 1,248,245,238,221,123,234,151, 95,126,137,136,136, 8,140, 24, 49, 66,125,231,206,157,140,102,205,154,217,111,218,180, 73,
- 50, 97,194, 4, 92,190,124,121, 54, 33,228, 15, 0, 81,148, 82, 77, 41, 55,161, 64, 32, 16,192, 88, 96, 23,244, 38,230,181,175,
-207,205,205, 5, 85,103, 65, 32, 16,112, 1, 56, 2, 48,171,158, 28,195, 48, 2, 62,159,255,218, 92,197,166,228, 34, 54, 85,133,
-220,124, 29,212,106, 35,116,106, 10,174,212,158, 7, 68, 59, 3,136, 54,243,120,114,197, 98, 49,140, 70, 35,242,242, 94,101,163,
- 48, 50,166,211,233,144,147,147, 3, 46,151, 43, 7, 96, 5, 32,211, 28,193, 87,149,215,113,168,160,184, 15,119,119,118,119,120,
-113,124,154,190,247,156,167,175,211,172,100, 60,195,129, 9, 53,184,246,238,117,174,213,237,187,205,191, 48,237,159,172,127, 69,
- 8, 17, 57, 58, 58, 94,220,191,127,127,141,234,213,171, 35, 42, 42,202,191, 79,159, 62,141, 9, 33,117, 45, 29, 51,145, 16, 34,
-229,112, 56, 63,126,246,217,103, 95, 14, 24, 48,128,248,248,248,128,199,227,193,104, 52,186, 71, 68, 68,180,221,183,111,223, 20,
- 30,143,183,201,100, 50,125,103,110,189, 62, 66, 8, 71, 40, 20,238,221,184,113, 99,171,198,141, 27, 99,251,246,237,184,115,231,
- 14,211,176, 97, 67,206,144, 33, 67,224,233,233,217,120,200,144, 33,135, 8, 33, 93, 42, 18,201, 34,132,120, 14, 26, 52,168, 50,
-151,203, 69,179,102,205, 4, 55,110,220,168, 7,224,198, 91, 30, 83,185,187,187,251,229, 54,109,218,212, 61,119,238,220,125, 66,
- 72, 27, 75,234, 49, 18, 66,122,184,185,185, 45,177,182,182,182,181,224, 25,171, 74, 72, 72,152,104,193,120,164, 77,234,215,175,
-143,152,152, 24,248,249,249, 65, 32, 16, 52, 37,132,140, 2,208, 9,192, 12, 75, 70,135, 32,132,184, 53,109,218,212,161, 77,155,
- 54,100,241,226,197, 0, 0, 62,159, 15,147,201, 4, 14,135, 3, 62,159, 15,127,127,127, 18, 25, 25,105, 71, 8,113, 51,167,184,
-208,193,187,109,183,102, 31,117,106,209,170,113,109,206,242, 3, 47, 96, 98, 76,224, 18, 35,120,132, 1, 99, 16, 65, 36,224,194,
- 39,176, 1, 55, 60,228, 81, 99, 7,223,246,221,210,159,157, 61,106,142,102,167,110,221, 91,214,240,243,225,172, 58,244, 18,217,
- 9, 79, 77, 9, 97, 87,210, 57, 92, 14,106,212,111,231,224, 19, 80,151, 91,183,113, 27,126, 98, 84, 72, 91,187,234,173,131, 50,
- 95, 92,102, 77,197, 95,255,252,121,237, 69, 62, 24,131, 85,156, 3,161,116,150,149,144,120,237,219,183,155,147,150,167, 87, 70,
- 68, 68,192,193,193, 1,174,174,174,176,182,182, 70,104,104, 40, 46, 92,184,128,103,207,158,129, 97, 24,212,169, 83,199,162, 13,
-167,167,167,227,209,163, 71,176,181,181,125,103,154,213, 42, 59,226,235,202,142,130,148,140, 92,193,185, 59,207, 26,255, 50,237,
-211, 0,142,255,167, 91, 52,154,255,191,251,117,186, 15, 99, 36,145,162,173, 5, 61, 60, 60,154,111,221,186, 85,160, 53, 66,225,
- 51,234,230, 82,165,198, 36, 3, 0,153,152,171, 12, 94,226,251,221, 15, 63,252,160,252,252,243,207,253, 99, 99, 99, 23,149,167,
- 43, 20, 10, 23,116,238,220,121, 18,165,148,255,205, 55,223, 0, 0,134, 14, 29,154,123,235,214, 45, 31, 74,105, 42, 33,196,109,
-248,240,225,207, 47, 94,188, 40, 29, 63,126, 60,215,104, 52,134,242,120, 60, 74, 8,153, 71, 41,157,243,167, 16, 41,135,115,239,
-254,253,251, 85,220, 60,125,225,105,207, 65,203,153,175,134, 83,179,151, 50,136,143,126,137,176,199,119,224,226,226, 98,237,234,
-234,250,212,207,207, 79,159,144,144, 48, 37, 63, 63,127,125, 89,121, 20, 8, 4, 15,131,131,131, 93, 61, 61, 61,145,159,159,143,
-248, 52, 21,198, 29,148, 34, 87,253, 42,104,193,135, 26,117, 43,251, 42, 36, 28,221, 29,103,103,103,189, 78,167,251, 62, 59, 59,
-187,204,225, 62,248,124,126,198,227,199,143,229, 30, 30, 30,208,104, 52, 52, 51, 51,147, 40,149, 74,228,229,229,145,227,199,143,
-247, 76, 74, 74,106,232,229,229, 69,220,221,221,231, 85,175, 94, 93,157,144,144, 48,194,156, 58, 94,251,103,251,235, 9, 33, 38,
- 30,143,183,124,228,200,145,125,255,248,227,143,123, 7,230,212,232, 65, 41,213, 23, 60, 76,172, 3, 3, 3, 79,215,174, 29,224,
-182, 99, 89,173,213,148,210,165,239,193,229,245,217,244,233,211,107,216,217,217, 97,244,232,209,152, 59,119, 46,102,205,154, 85,
-125,244,232,209, 35, 1,252,100,193,131, 82,226,226,226,114,119,213,170, 85,254,205,155, 55,199,137, 19, 39,176,123,247,110, 68,
- 70, 70, 26,189,188,188,120,141, 27, 55,198,236,217,179,209,177, 99,199, 17, 99,199,142,109, 77, 8,169,103,166,233,248,124,246,
-236,217, 61, 90,180,104,129, 97,195,134,105, 47, 93,186,212, 23,192,153,179,103,207,182,187,124,249,242,129,157, 59,119, 74, 22,
- 46, 92, 24, 52, 97,194,132,209, 0,214, 84, 96,255,123,182,106,245,106,108,227, 22, 45, 90, 96,201,146, 37, 29,223,198, 96, 17,
- 66,132,246,246,246,199,183,111,223, 94,215,215,215, 23,131, 7, 15,174,215,183,111,223,227,132,144,246,148, 82,179, 30, 72,149,
- 42, 85,250,241,240,225,195,222,165,149, 36,148,132, 86,171,181,251,228,147, 79, 22, 3,176,200, 96,237,218,181, 11, 19, 39, 78,
- 68,157, 58,117,106, 55,105,210,100,195,168, 81,163,208,187,119,239,143, 8, 33,206,148, 82,165, 89, 47, 22, 30,207,171,107,215,
-174,252,131, 7, 15, 2, 0, 90,181,106,133,160,160, 32, 60,121,242, 4,215,174, 93, 3,151,203,133, 76, 38, 67,243,230,205,133,
-137,137,137, 94, 0,202, 53, 88, 28,145,244,179, 30, 93,187, 40,142,220, 74,130,137, 49,162,129,183, 21, 26,251, 59, 33, 60, 62,
- 23,193, 79,227, 97,210, 9, 96,101,103,143,166,173, 59,216, 37, 39, 68,126, 6,160,252,250, 88, 34,233,103,189,122,124, 44, 63,
-114, 51, 17,217,137, 97,244,197,157, 63, 46, 24, 52,202, 17, 0,112,239,252,158, 13, 46,246,146,246, 62,245, 27,112,219,180,239,
-110,123,112,119,242,103, 0, 88,131,197,242,246, 6, 11, 0,242,244, 72,249,232,227, 79,113,255,254,125, 0, 64, 70, 70, 6, 50,
- 50, 50,224,237,237,141, 53,107,222,124,110, 85,196,184, 48, 12,243,206, 53, 1,192,217,222, 10,131,187, 52,226, 93,123,180, 91,
-172, 76, 75, 19,203,229,114,205,135,102,176,138, 98, 52, 26,197, 94, 94, 94,200, 85,131,228,168, 12,242,244, 61,175, 34,251, 14,
-253, 47,201,117, 58, 29, 71, 46,151, 67,171,213,138,205,120, 17,240,123,244,232, 49,105,239,222,189,252,176,176, 48, 84,171, 86,
- 13,122,189, 30,183,110,221,138, 47, 24,160, 24,148,210, 68, 46,151,155,200, 48, 76,245, 58,117,234, 96,209,162, 69,240,247,247,
- 39, 93,186,116,153, 82, 96,178,152,162,154, 73, 73, 73, 63,142, 26, 53,170,221,190, 3,127,216,109,236,167, 70,110, 78, 46,242,
-243,243,241,240,193, 61,100,166,104,240,203, 47,191, 64, 44,150, 16, 0,130,212,212, 20,193,248,241,227, 87,187,187,187,119,138,
-143,143,239, 90, 90, 62, 19, 19, 19, 23,124,245,213, 87, 77,247,236,217, 99,147,151,151, 7,181, 90,131, 76,165, 20, 79, 87,190,
- 26, 95,183,198,183, 79,177,110,237,122, 78,173, 42, 50, 7,149, 74,133, 47,191,252,114,133,155,155, 91,243,196,196,196,225,165,
-105, 38, 36, 36,220,254,250,235,175,157,119,238,220, 41,214,233,116,122,147,201, 4,181, 90,205,217,179,103,207,148, 42, 85,170,
-216,110,218,180,137,136,197,146,130,101,227, 5, 99,198,140,217,235,226,226,178, 51, 57, 57,121, 88, 57,199,148,203,229,114, 87,
-238,216,177, 99, 72,191,126,253, 20, 73, 73, 73, 1,135, 15, 31, 22, 1, 80, 23, 44,226,218,190,125,251, 42,203,150, 45,115, 12,
- 12, 12,156, 66, 8,225, 83, 74,255,209, 65,195, 29, 28, 28,198,246,232,209, 3,139, 23, 47,198,209,163, 71, 39,216,217,217,173,
-152, 59,119, 46,220,220,220,190, 38,132,172,180, 96, 0,221,165, 63,253,244,147,191,191,191, 63,134, 14, 29,170, 59,119,238,220,
-116, 0,135, 0,196, 92,189,122,213, 99,219,182,109,221,246,238,221,187,120,213,170, 85,226, 53,107,214,120,127,250,233,167, 43,
- 1, 12, 47,247,254,118,118, 30, 63, 96,192, 0, 44, 91,182, 12,151, 46, 93,250,148, 82,122,162, 96,214, 73, 66, 72,183,133, 11,
- 23,158,159, 57,115, 38,126,250,233,167,111, 44, 53, 88,132, 16,121,141, 26, 53,190,239,212,169, 19,174, 94,189,138,150, 45, 91,
-162,105,211,166, 19, 8, 33,171, 41,165,233, 21, 48, 87, 28,185, 92,190,119,235,214,173, 45,171, 84,169,130,249,243,231, 99,210,
-164, 73,216,178,101, 75,203,193,131, 7,239, 37,132,244, 42,126,207,148,132,181,181,181, 92, 42,149, 98,202,148, 41, 52, 50, 50,
- 50,171,188,229, 43, 87,174,108,187, 98,197, 10, 98,107,107,107,109,174, 25, 22,139,197,205,106,214,172,137,217,179,103,227,236,
-217,179,152, 57,115, 38,106,214,172,137,152,152, 24,244,239,223, 95, 58, 99,198,140,222, 0,204, 26,151,144, 82,106,109,111,111,
-143,212,212, 84,240,249,124, 52,111,222, 28,135, 14, 29,130, 86,171,133,147,147, 19,178,179,179,209,168, 81,163, 66, 51,102,109,
-222,209,164, 53, 29,236,172,145, 26,146, 0, 30,140,168,239,227,128,139, 79, 50,160, 55, 48,112,178,183, 65,114,106, 10,154,212,
-116,135, 78,231, 1, 74,153,154,230, 40, 10,185,156,250, 34,177, 4,153,121,233, 72,120,122, 41, 67,111,210,142,202,142,188, 22,
- 7, 0,118,213, 90,141,186,119,237,236,189, 62, 31,183,114,202, 87, 86, 6,161, 76, 35,214, 50,176, 88, 2,199,140, 27,229, 79,
-105, 42,213,159, 75, 9,222,214,184,252, 21,154, 37,241, 33, 26,172, 66, 10, 7, 71,214, 25, 24,232, 12, 76,225,191, 88,168,213,
-106,115,163, 98,134,211,167, 79,111, 31, 55,110, 28, 86,172, 88,129,231,207,159, 67, 32, 16,160,102,205,154,174,132, 16,121, 97,
-196,165,126,253,250, 78, 28, 14, 7,225,225,225, 88,190,124, 57, 62,255,252,115,122,227,198,141, 45, 37,189, 40, 40,165, 15, 50,
- 51, 51,215,142, 26,241,121,118, 86, 74, 44, 12,234, 44,164, 38,188,132, 86,153,141,249,139,126,132,202,192, 67,114,142, 30,201,
- 57,122,112, 68,118,216,176,105, 43,183, 70,141, 26,157,120, 60, 94,215, 50,242,121, 43, 37, 37,101,211,152, 49, 99,178,147,147,
-147, 95,239,159,206, 64,161, 51,188,121,189, 74,165, 82,172, 92,185,210,218,199,199,167, 7,159,207,111, 91,134,102, 82, 92, 92,
- 92,216,152, 49, 99,116, 41, 41, 41,200,201,201,193,145, 35, 71,186, 85,169, 82,197,118,241,210, 21, 68,169,231, 33, 57, 91,143,
-228,108, 61,132,114, 39,236, 61,240, 7,215,215,215,119, 32,159,207,111, 90,158,185,218,185,115,231,144,126,253,250, 41,150, 46,
- 93,154,121,248,240,225,117,148,210,162, 39, 36,124,229,202,149,251,246,238,221,155, 55,105,210, 36,187, 37, 75,150, 76, 32,132,
- 76,255, 7,195,243,109,251,245,235,231,199, 48, 12,246,239,223,255,152, 82,250,211, 31,127,252,113, 87,171,213,162,127,255,254,
- 94,120, 85, 92,100,142, 78,195,129, 3, 7,126,217,178,101, 75,124,251,237,183,250,115,231,206,213,167,148,174,160,148, 70,211,
- 87,196, 80, 74, 87, 95,190,124,185,206,216,177, 99,181,141, 26, 53,194,176, 97,195, 62, 39,132,180, 44, 71,183,217,128, 1, 3,
-252, 25,134,193,158, 61,123, 30, 21, 49, 87,133,231,241,194,129, 3, 7,110,233,116, 58, 12, 26, 52,168, 42, 33,164,157, 5,251,
- 46, 16,137, 68,251,127,248,225, 7,155,132,132, 4, 12, 25, 50, 68, 27, 30, 30,142, 57,115,230, 72,172,173,173, 79, 20,222, 3,
-150, 32, 18,137,126,249,249,231,159,123,212,170, 85, 11, 99,198,140,209,173, 95,191,126,220,151, 95,126,169,171, 95,191, 62,214,
-173, 91,215, 67, 40, 20, 90, 52, 4, 72, 98, 98, 98,118,104,104,168,125,121, 83,124,124,124,138,153,251, 44, 85, 40, 20, 55, 3,
- 3, 3,115,107,214,172,217,192,104, 52, 34, 52, 52,244,229,246,237,219,153,154, 53,107, 98,237,218,181, 88,178,100, 9,186,118,
-237, 10, 46,151,219,219,146,188, 42,149, 74,136,197, 98, 8, 4, 2, 4, 7, 7, 67,171,213, 66, 42,149, 66, 44, 22,131,203,229,
-194,198,198, 6, 10,133, 2, 0,168,121,121, 5,205, 85, 25,192,231,115,192,227, 48, 8,139,201,129,222,192, 64, 44,224,130,207,
- 35, 0,101, 96, 35,227, 67, 44,228,130, 67, 8, 99,166, 38,114,148,122, 8, 5, 28,240, 5, 66,194, 49,154, 36,175, 95,142, 60,
-147, 68, 34, 17, 18, 7, 43, 17,196, 2,182, 79,110,150,119, 28,193, 42,140, 50,153, 99, 82,180, 90,237, 59, 55, 62,111,171, 89,
-146, 57,124, 91,205,247,242, 36,242,120,154,103,207,158, 9,173,236,221, 24,123, 5, 63,171,202,231,215,172, 1,192, 78,206,203,
-209,155, 12, 76, 98, 98, 34, 68, 34,145,198, 28, 45,141, 70, 51,130, 16, 50, 31, 64, 0,143,199, 59,182,117,235, 86,178, 99,199,
- 14,219, 1, 3, 6, 68, 16, 66, 18, 2, 3, 3, 61,183,110,221,106, 5, 0,171, 87,175,166,123,247,238,237,136, 87, 93, 95, 36,
-151,166,153,156,156, 60,135,207,231,223,248,234,171,175,214, 8,133, 66, 91,153, 76,102,127,245,234, 85,162,209, 83, 52,156, 30,
-243,186,101,161,149,132,131, 43,211,172, 48,114,228, 72,238,211,167, 79, 23, 1, 56, 86,134,230, 20,145, 72,116,245,249,243,231,
- 43,172,221,235, 58,202, 60,167, 91, 55,158, 22, 14, 0,240,116,224,131, 83,240, 60,204,206,206, 70, 90, 90, 26,190,252,242, 75,
-219,136,136,136, 41, 0, 46,150,166, 25, 31, 31,127, 89, 36, 18,197,135,132,132,180,225,243,249, 66,153, 76,214,240,230,205,155,
- 68,163, 99, 80,123, 74, 12, 50,243, 95,229,211, 78,206,195,189, 31,156,241,245,215, 95,243, 94,188,120,241, 35,128, 22, 37,254,
-123,225,112,150, 20, 53, 87,147, 39, 79,126, 8,160, 42, 33,228,141, 34, 80,147,201, 68, 6, 13, 26,244, 4, 64,205, 73,147, 38,
-217, 81, 74, 39, 16, 66, 50, 41,165, 27,255,238,107,201,202,202,106,241,168, 81,163,176,119,239, 94,100,101,101,173, 4,128,220,
-220,220,159,118,237,218,181,103,196,136, 17,248,237,183,223, 22, 19, 66, 78,153, 17,197,234,220,191,127,127,156, 60,121, 18,231,
-207,159,255,158, 82, 26, 90,202, 61,250,156, 16, 50,229,240,225,195,171, 6, 12, 24,128, 95,127,253,181, 19,128,171,101,232,182,
-239,216,177, 35, 78,156, 56,129,140,140,140,117, 37, 45,144,157,157,189,254,200,145, 35, 77, 58,118,236,136, 69,139, 22,181, 7,
-112,193, 12,163,225,111,109,109,189,117,213,170, 85, 13,107,213,170,133,129, 3, 7,106,244,122,125,167, 73,147, 38, 29,221,189,
-123,183, 98,251,246,237, 13, 70,142, 28,121,155, 16,242, 5,165,244,150, 57,199,146,203,229, 46, 92,179,102,205,240, 54,109,218,
- 96,194,132, 9,198,211,167, 79,119,167,148,158, 33,132, 68, 76,158, 60,249,248,242,229,203,185,203,150, 45, 27,206,229,114,211,
- 76, 38,211, 63,101,170,127, 88,189,122,117,147, 14, 29, 58,224,229,203,151,184,117,235, 22,244,122,253,111, 55,111,222,188, 82,
-189,122,245, 31,116, 58,221, 81,153, 76, 54, 84,161, 80, 4,214,173, 91,183, 29, 33, 68,106, 78, 61, 60, 66, 72,118, 68, 68,132,
-204,201,201, 9,124, 62, 31,143, 30, 61,130,147,147, 19, 0, 32, 53, 53, 21, 53,107,214, 4,151,203, 69,118,118, 54, 0,228,152,
-103,134, 56,143, 35,162, 19,171,218, 41,100,128, 73,140, 7,225,241,112,116,176,133,137,112,144,156,156,132,186,126,238, 32,132,
- 32, 59, 35, 25,132,144, 39,230,104,154, 40, 19, 28,155,152, 90,201, 94, 33, 66,173, 38, 29,236,111,158, 74,219, 97, 93,173,197,
- 72, 30,151,112, 69, 98,171,141,195,135, 13,115, 96, 24,138,236,140, 20,240, 56,156, 59,172,101, 96,169, 80, 4,171,180, 74,101,
-175, 42, 75, 75,203, 52, 41, 98,177,248,117,244,196,130,127,118,239, 92,179, 60,254, 10,205,127, 48,210, 48,141, 16,114,152, 16,
- 50, 45, 46, 46, 46,108,248,240,225,122,163, 94,155,119, 99,126,213,169,247, 23, 85, 25,115,115,142,235,152, 67,227,172,167,170,
-114, 50,243, 86,175, 94,109,136,139,139, 11, 43,186, 78, 57,198, 52,150, 82,122, 98,219,182,109,235,247,239,223,143,154, 53,107,
- 34, 52, 52,212, 73,169, 84,214,123,242,228,137,157,191,191, 63,118,236,216,129,189,123,247,174,160,148,158, 45,203, 92, 21,137,
-174,157, 75, 74, 74,242,141,137,137,241,182,177,177, 49,216,216,216,160,120,203,194, 92, 53,131,140,236, 28,216,217,217,195,202,
-202,202,171, 60, 77,173, 86,123, 34, 41, 41,201,135,177,245,107,229,147,190, 50, 39,120, 97,101, 4, 47,172,140, 19, 83,220,224,
-106, 35, 68, 86, 86, 22,210,210,210,144,150,150, 6, 66, 8, 12, 6, 67, 13, 51, 52, 35, 19, 19, 19, 55,199,198,198, 30,118,118,
-118,134, 66,161, 0, 5,144,156,109,192,195,101,254,120,184,204, 31,201,217, 6,228,230,229,161, 74,149, 42, 80, 40, 20, 53, 75,
- 57, 63,156, 74,149, 42,117,233,215,175,159, 2, 0, 10,140,211, 71,148,210, 49, 37, 76,163,141, 70, 99,243,194,101, 39, 78,156,
-104, 7,160,227,223,124, 61,113, 9, 33, 95,141, 24, 49,162,129, 88, 44,198,218,181,107, 35, 1,236, 44,152,189,127,253,250,245,
-225, 0, 48,110,220,184, 64, 0, 19, 10,186, 72, 40, 21,129, 64, 80,191, 70,141, 26,184,121,243, 38, 0,252, 81,206,230, 15,220,
-184,113, 3,213,171, 87,135, 88, 44,110, 88,206,178, 94,149, 43, 87, 70,120,120, 56, 0, 60, 40,101,153, 7,225,225,225,168, 92,
-185, 50, 8, 33, 94,102,236,123,143, 14, 29, 58, 60,190,120,241, 98,195,102,205,154, 97,248,240,225,186,219,183,111,119,161,148,
- 94,121,240,224, 65,219, 65,131, 6, 41,125,124,124,112,249,242,101,255, 65,131, 6,221,224,114,185,243,205,208,252,124,222,188,
-121,211,122,246,236,137,121,243,230,209,125,251,246, 13,164,148,158, 41,184,191, 78,239,217,179,103,200,130, 5, 11,104,175, 94,
-189, 48,119,238,220,105,132,144, 49,229, 68,131,114, 76, 38, 19,148, 74,165, 89, 33,120,115,151,119,112,112,232,220,161, 67, 7,
-204,156, 57, 19,149, 42, 85,194,209,163, 71, 41,128, 99,148,210,171, 90,173,182, 21,165,116,185, 82,169, 60,116,243,230, 77,180,
-111,223, 94, 0,224, 99,115,182,111, 52, 26,163, 47, 94,188,168,183,183,183,135,187,187, 59, 60, 60, 60,160, 84, 42,145,157,157,
-141,154, 53,107,162, 73,147, 38, 80, 42,149, 56,118,236,152, 62, 59, 59,219,172,134, 40, 70,157,114,251,217,227, 7,115,236, 21,
- 34,184, 59, 89,163, 74, 37, 59,228,103,167, 35, 45, 57, 17,245,107,120,160,117,253, 42, 72,207,209,225,244,177,131, 89,121,121,
-170,237,102, 69,253,181,170,173,231, 78, 29,205,177, 85, 8,224,235, 23,136, 65,195,199,213,173, 91,175,241,217, 70,141,154,159,
- 94,186,120, 97,237,143,154,214, 32,241,233, 26,156, 60,246, 71, 86, 78,110,238, 86,176,252,229,124, 40, 21,220,223, 48, 88,165,
-144, 62, 97,194, 4,136, 68, 34,184,186,186,190, 54, 69,133, 38, 69, 40, 20,194,213,213, 21, 70,163, 17,123,246,236, 1,128,244,
-114, 54,166,237, 62,102, 17,163, 53, 80, 21,159,207,127, 39,154, 5,145, 2,237,167,147,127,101, 78,221, 40,185,145, 75, 69, 52,
-255, 5, 52, 42,232,211,170, 17,165, 52, 43, 58, 58, 58,190,239,167,221,115, 98, 34, 66,146,149,217,137, 73,185, 25,113, 73,113,
-145, 79,146,167, 79,153,144, 19, 31, 31, 31, 87,208, 23, 86,163,196,196,196,238, 0,204,173, 75, 48,161,111,223,190, 63,143, 24,
- 49,130, 62,124,248, 16, 0, 16, 28, 28,140, 97,195,134,209, 33, 67,134,172, 4, 48,181, 2,249, 86,170,213,234, 55,162, 31,122,
- 19,243,186,104, 47, 55, 55, 23,137,137,137,208,233,116,102, 59,225,231,167,151, 61,203,140,190,103, 8,244,148, 33,208, 83, 6,
-255,202, 82, 16, 99,254,107,115,149,150,150,134,148,148, 20, 0,208, 88,144,207, 92,173, 86,251, 70, 62,139, 22, 65,230,230,230,
- 34, 57, 57, 25, 38,147, 73, 87,202, 67,130, 73, 72, 72, 56,189,119,239,222, 60, 0, 88,186,116,105, 38, 33,228, 60, 33,228,231,
- 18,166, 13, 60, 30,239,122,225,178,203,150, 45,203, 4,112,226,111, 52, 87, 61,107,213,170,149, 53,109,218,180,181,223,124,243,
- 13, 54,108,216,128,164,164,164,169,148, 82, 99,225,190,164,167,167, 79, 94,183,110, 29, 62,251,236, 51,204,154, 53,107, 89,189,
-122,245,114, 9, 33,131, 74,211,116,116,116,116,231,241,120,184,127,255,126, 46,165,244,101, 57, 15,212,228,251,247,239,167, 16,
- 66,224,234,234, 90,173,172,101,237,236,236,188, 21, 10, 5, 18, 18, 18, 0, 32,170,148,197,162, 19, 19, 19,169, 80, 40,132,155,
-155, 91,245,242,246,223,214,214,118,242,230,205,155,121, 33, 33, 33,248,232,163,143,226, 47, 95,190,220,158, 82,122,169, 32,111,
-247,131,131,131, 91,182,109,219,246,217,217,179,103,241,227,143, 63,146, 58,117,234,140, 41, 79,211,211,211,115,244,231,159,127,
-142, 53,107,214, 96,227,198,141, 99, 40,165,251,139,237,243,238,117,235,214,141,219,184,113, 35,134, 15, 31, 14, 47, 47,175, 65,
-101,233,197,196,196, 76,105,211,166, 77,240,243,231,207,205, 26,161,192,156,229, 9, 33,109, 27, 55,110,236,173, 86,171,177,117,
-235,214,151,222,222,222,119,247,239,223, 63,129, 82,250,168,216,162,135, 14, 30, 60,136,193,131, 7,163, 78,157, 58, 91, 9, 33,
- 3,204,120, 73, 38,198,196,196,164, 63,122,244,136,225,114,185,112,119,119, 71,151, 46, 93,208,191,127,127,212,169, 83, 7,169,
-169,169,184,114,229, 10, 19, 17, 17,145,110,110,135,163,233,207, 46, 30,141,138,122,118,253,254,237, 43, 6, 30,151, 3, 15, 87,
- 59,124, 18, 84, 23, 95,244,110,142,250,254,149, 16,147,170,198,133, 11,103, 13, 81, 81, 47,111,154,211,130,176, 80, 51, 44,244,
-209,141,144,251,215,140,124, 30,129,191,159, 15,102, 78,159,108,187, 96,246, 20, 27,159,106, 30,120, 20,153,131,179,103, 78, 26,
- 18,227,227, 46,178, 45, 8, 89, 44,165,188, 34,194,165, 27, 54,108,104,180,121,243,230,246, 19, 38, 76,144, 15, 29, 58, 20, 98,
-177, 24, 42,149, 10,238,238,238, 48,153, 76, 56,117,234, 20,238,221,187,151,207, 48,204, 89, 20,107,254, 79, 8, 9, 42,218, 87,
-198,169, 8, 42,121,213,121,165,170,209,225, 62,125,222,137, 38, 0,200, 95, 48, 86, 25, 85,116, 59, 86,239,191,214,107,215,233,
-251,228,219, 1,173, 57,245,253, 42, 3, 0,156,157,157, 97,101,101,101,177,230, 59,120,105,253,229,154, 69,139,111,147,146,146,
-194, 9, 33,169, 35, 70,140,240, 47,172,208, 46, 18,137, 52,113,113,113, 97,133, 29,141, 22, 95,167,188,124, 22,180,116,251,146,
- 16,114, 36, 39, 39,231,244,164, 73,147,176, 96,193, 2, 28, 61,122,180, 37,165,244,122, 69,246,157, 82,106,242,242,242,202,190,
-115,231,142,115,245, 26,245, 80,213,137,143, 86,223, 63, 7,165, 20,246, 82,138,188,236, 76, 60,120,112, 31,121,121,121,183, 45,
-201,167,155,155, 91,118,106,106,170,131,147,147, 19, 50, 51, 51,145,158,158,254,218, 92,101,101,101, 33, 51, 51,147, 18, 66,174,
- 90,160,169,244,246,246, 86,133,133,133, 9,157, 43, 87, 71, 53, 39, 1, 26, 79, 15, 7, 40,133,135, 29, 7,121,185,217,184,121,
-243, 38,114,114,114, 46,149,166,201, 48,204,119,131, 6, 13,226, 2, 24, 50,105,210, 36, 59, 0,117, 38, 79,158,124,182,120, 75,
- 65, 62,159,255,211,142, 29, 59,106, 22, 22, 37, 78,153, 50,101, 5,165,116,243,223,117, 45,217,219,219,127,119,252,248,113,133,
- 94,175,199,234,213,171,177, 98,197,138, 45,148,210,223,139, 29,143,227, 92, 46,119, 29,135,195,249,234,235,175,191,198,168, 81,
-163,164, 13, 26, 52,152, 80, 36,202,245,134,102, 66, 66,194,204,250,245,235,207, 74, 77, 77, 53,171,194,254,243,231,207, 71,214,
-175, 95,127,102,106,106,234,146,178,206,145, 76, 38,147,153, 76, 38, 68, 69, 69,101, 81, 74,115, 74, 57,119, 26, 31, 31,159, 4,
-147,201,228, 46,149, 74,237,202,187, 62,179,178,178, 22, 54,104,208, 96, 78, 74, 74,202, 25, 0,243,139,119, 57, 66, 41,125, 72,
- 8, 9,252,230,155,111,198, 46, 94,188,184, 87,114,114,242,158,242, 52, 99, 98, 98, 22,182,109,219,246,251,103,207,158,109, 43,
-173,168,151, 82,186,150, 16,162,223,177, 99,199,152,168,168,168, 69,101,105, 82, 74,143,161,140, 34,243, 18,180, 75, 92,190,168,
- 38,151,203,157,188,120,241, 98,206,134, 13, 27, 64, 41, 93,102, 52, 26, 75,203,231, 35, 46,151,187,189,121,243,230, 67,247,239,
-223, 47, 14, 12, 12, 28, 5, 96,119,121,215,167, 86,171,189,117,227,198,141, 38,209,209,209, 14,109,219,182, 21, 20,254, 49,201,
-206,206,198,177, 99,199,244, 17, 17, 17,233, 74,165,242,150, 37,207, 16,163, 46,119,192,141, 11,135,119, 71, 63,127,210,180, 77,
-167, 30,182, 58,189, 59, 68, 25, 92,100,103, 36,227,212,177,131, 89, 81, 81, 47,111,170, 84,217, 3, 44,209,212,107,115,250,223,
-188,120,100, 79,124, 84, 88,147, 86,109,187,216,106,116,158, 16, 9, 56,200, 72, 73,192,169,227,135, 51,163,162, 34,175,106, 12,
-218, 97,255,212,115,254,191,164,249, 33,134,227,202,157, 0, 8, 0, 4,201,229,242, 5,179,102,205, 90,118,251,246,237,101, 93,
-187,118, 93, 38, 18,137, 22, 0, 8, 2, 32, 40,101,189,160,191, 83,179,161, 27,236,218, 86, 35, 87, 58,120, 19,102,116, 75, 91,
-211,176,198, 50, 93,187,118,237,214,189,141,102, 69,167,191, 90, 19,192, 97,131,193, 64, 1, 36, 3, 56, 92, 48, 77, 43, 97,157,
-105, 69,230, 39,199,198,198, 82, 0,135, 45,201, 39, 0,135,126,253,250, 49,121,121,121,180,111,223,190, 20,128,245,219,236,187,
- 72, 36,106,219,170, 85, 43, 67, 74, 90, 38, 13,143, 76,160,183,130, 67,233,233, 11, 55,232,158,131,199,233,154,117, 27,105,237,
-218,181,117, 0, 60, 45,209,228,241,120,237,218,182,109,155,145,146,146, 66,195,194,194,232,149, 43, 87,232,129, 3, 7,232,198,
-141, 27,233,207, 63,255, 76, 43, 87,174,156, 2,192,217, 18, 77,137, 68,210,163,115,231,206,134,236, 92, 21,141, 74,200,160,143,
-195,162,232,245, 59,143,233,169, 11,215,233,206,221,251,105, 64, 64,128,166, 60,205, 87,239, 49,238,154, 61,123,246,228, 82, 74,
-105,143, 30, 61,226, 1,136,139,204,175,250,221,119,223,165, 82, 74,233,146, 37, 75, 50, 0, 76,255, 7,174,165, 78,149, 42, 85,
- 10, 23, 8, 4,199, 1, 12, 41,103,189,254, 60, 30,239,168,139,139,203, 93, 0,159,252,221,247, 17,128,174, 78, 78, 78,183, 0,
-116, 47,103,189,194,229,122,126, 8,247,251, 95,116,222,219,241,120,188, 43,120,213,199,149, 57,239,128, 31,184, 92,238, 9, 0,
- 31, 89,146, 79, 0,110,114,185,188,133, 92, 46,239, 38,151,203,187,217,216,216,180, 0,224,246, 54,251,110,239, 19,212,205,163,
- 94,247, 67,149,235,124, 28,227, 81,183,107,140, 87,253, 30,135,236,125,130,186,189,173,166,103,253, 30,135, 61,234,118,141,245,
-168,219, 45,186,106,195, 30,135, 28,252,130, 58,127,104,231,253,125,214, 44,101, 59, 35,255,142,237,252, 37,121,183,112, 71,101,
- 0, 62, 1,176,168,224, 83,246,182, 39,224,175,208,108,226, 10,223, 32,111, 18,214,197,143,151, 9,160,247,187,208,124, 15, 31,
-142,219,116, 58, 29,213,104, 52, 84,165, 82,209,252,252,252, 55,140, 83, 81, 35,150,152,152, 72,227,227,227,105,108,108, 44,141,
-142,142,166, 0,118, 90,154, 79, 43, 43,171,205,125,250,244, 49,241,249,252, 53,239, 98,223,237,236,236, 22, 53,110,220, 88,191,
-106,213, 42,122,232,208, 33,186,105,211, 38,250,245,215, 95,211,154, 53,107,106,109,108,108, 6, 84, 68,211,197,197,101,166,159,
-159, 95,198,150, 45, 91,232,206,157, 59,233,202,149, 43,233,140, 25, 51, 76,238,238,238,201, 10,133,162, 99, 69, 52,157,156,156,
-126,105,209,162,133,254,151, 95,126,161,103,207,158,165,187,118,237,162,223,125,247, 29,245,247,247,215,202,100,178, 79,205,209,
- 4,192,229,241,120,203, 71,143, 30,157,236,230,230,118,188,216, 60,105, 64, 64,192,221, 65,131, 6, 37, 2,152,194, 62,112, 89,
- 77, 86,147,213,100, 13,214,135, 97,176,120, 22, 70,187,148, 0,254, 32,132, 28, 45,172,159,241, 14, 34,104,239, 92,243,102, 34,
-125, 6,192,159, 16,194,123, 87,154,239, 33, 11,133, 66, 33,175,192,160, 22, 82, 82, 43,151, 59,110,110,110, 69,127,231, 0,176,
-184,159,165,156,156,156, 47, 8, 33,227,138,117, 49, 80, 97, 50, 50, 50,166, 17, 66,246, 70, 70, 70, 46,178,177,177,169,111, 48,
- 24, 12,185,185,185, 87,178,178,178,166, 80, 74,227, 43,162,153,148,148, 52,159, 16,114,100,230,204,153,147, 40,165,141, 56, 28,
-142,198, 96, 48, 92, 74, 79, 79, 95, 68, 41, 77,171,136,102, 74, 74,202, 72,129, 64,240,107, 68, 68,196, 34,137, 68, 82,155, 97,
- 24,157, 74,165,186,148,158,158, 62,158, 82,154, 98,230, 53,110, 2,240, 29, 33,100, 57,128,212, 98,243, 84,132,144,230,161,161,
-161,246,148,210, 36, 54,166,206,194,194,194,242,223,168,131, 85,218, 11,227,157,155,150,127,139,230,123, 84,180,251, 2,192, 32,
- 51,150, 91,244, 14,183,169,126,199,251,240, 24, 64,231,119,172, 25, 2, 96,200,187,212,212,235,245,183, 97,230,184,108,229,228,
- 45,169,148,116, 61, 0,214, 92,177,176,176,176,124, 64,176,189,167,177,176,176,176,176,176,176,176,188, 99, 8, 94, 85,254, 46,
-233, 95,181,217,173, 3, 8, 33, 65, 21,248, 55,127,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,102, 17,237,210,
-198, 54, 13, 47,166,247, 11,254,141,252,197,149,211,216, 10,128,172, 38,171,201,106,178,154,172, 38,171,201,106,254,231, 38,182,
-136,144,133,133,133,133,133,133,133,229, 29,195, 26, 44, 22, 22, 22, 22, 22, 22, 22, 22,214, 96,177,176,176,176,176,176,176,176,
-176, 6,139,133,133,133,133,133,133,133,133, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44, 21,135, 20,180, 6,120,245,131, 16, 74,
- 41, 37,236, 97, 97, 97, 97, 97, 97, 97, 97,249, 71,140,201, 7,226, 69, 88,131,197,194,194,194,194,194,194,194, 26, 44,214, 96,
-177,176,176,176,176,176,176,176, 6,235, 95, 96,176, 10,119,134, 53, 88, 44, 44, 44, 44, 44, 44, 44,255,164,177,250, 80,188, 72,
- 97, 37,247, 54,132, 16,138,119, 48,160, 45, 11, 11, 11, 11, 11, 11, 11, 75, 5,248,160,188,200, 27, 69,132, 44, 44, 44, 44, 44,
- 44, 44, 44, 44,172,193, 98, 97, 97, 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11,203,135,206, 95,218,209, 40, 33,
- 36,136,213,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44,172,193, 98, 97, 97,
- 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11, 11,107,176, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,131,197,194,194,
-194,194,194,194,194,242, 15, 65, 0,148,216, 18,128, 82,122,206,108,145, 10,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,
-100, 53, 89,205, 15, 79,179, 60,109, 75,252,199,123, 13,165,244, 47,155, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171,
-201,106,254,215, 38, 30, 27,196, 99, 97,249,151,115,128,112,145,229,231, 5, 74,221,192, 21, 38, 33,233,241, 75,204,166,204, 91,
-107,166, 4,120, 66, 98,112,134, 81,156,134,148, 71,145,111,173,201,194,194,194,242, 31,130, 53, 88, 44, 44,255,118,210,252,125,
-193,195, 34,112,224, 10,170,143,128, 99,192, 34, 0, 79,222, 90, 83,192,204,135,137,227, 14,170,127, 6, 39,191,197, 0, 66,217,
-131,205,194,194,194, 98, 30,255, 72, 37,119,177, 88, 28, 44, 20, 10,127, 32,132,136,216, 83,192,242, 87, 65, 8, 17, 9,133,194,
- 31, 36, 18, 73,240, 7,187,147, 59,106, 73,193, 49,117,214, 25,152, 74,167, 30,103, 59,169,180, 38, 95,112,140, 93,240,171,175,
-252,173, 52,121,164,131, 70,207,120,236,188,163,114, 86,234,140, 53, 64,241,118,154,255, 63, 39, 54, 66,161,240, 20, 33,196,129,
-189, 66, 63, 76, 2, 8,105,208,144,207,159, 88,131,144,118,132, 16,194, 30, 17, 22,214, 96,253,141,104,181,218,122,245,234,213,
-155, 32, 20, 10, 99, 8, 33,221,255, 75, 7, 92,161, 80,220,176,182,182, 78,177,177,177, 73,177,182,182,190, 95, 94,250, 7,106,
-124,124,157,156,156, 98,236,237,237,159, 21, 77,119,170,211,171,153, 79,139,161,179, 29, 2,123,182,126, 7,219,232, 46, 18,137,
- 98, 26, 55,110, 60, 94,163,209,212,251, 96, 15,166,134,113, 6,135,219, 54, 36, 73, 37, 77,202, 53, 56, 7, 71,171, 20, 0,183,
- 13,116,112,173,176,102, 14,227, 12,208,118, 15,227,213,178, 27,153,142,206, 87, 95,106,173,192,225,180,133,134,184,188,245, 3,
-135,195, 25,195, 48, 76,123,129, 64,240, 45,251,248,253, 48, 17,114, 56,205,111,116,239, 62,127, 74,237,218, 99,253,129,110, 37,
-153, 44,242,138,113, 53,106,212, 56, 73, 8,233,255, 14,159, 45, 63,250,251,251, 39, 16, 66,190, 97,207, 4,203,191,198, 96,245,
-169, 74,154, 15,172, 70, 46,247,171, 74,242,250, 87, 35,249, 67,170,145,107,189,171,146,118, 21,221,240,149, 43, 87, 36, 97, 97,
- 97, 78,173, 91,183,222, 35,145, 72,174, 17, 66,124, 42,162, 35, 22,139, 79,241,120,188, 62, 69,211,164, 82,233, 41, 30,143,215,
-175, 88, 90,136, 84, 42,205,145, 72, 36, 47,205,212,125, 33, 20, 10,149, 98,177,248, 69,209,116, 30,143,215, 79, 38,147,157, 42,
-150,214,167,120, 90,105,240,249,124,247,184,184, 56,167,248,248,120, 39,161, 80,232, 92, 52, 61, 54, 54,214, 41, 46, 46,238,141,
-116, 75,225,243,249,237,228,114,249,129,226,105, 10,133,226,128,185, 26,114,185,252,119, 62,159,223,174,152, 49,252, 83, 90, 69,
-205, 85,135, 14, 29,174, 37, 37, 37,121,216,216,216,216, 20,157,103,103,109,211,241,183, 45,235, 38,244,232,210, 97,140, 83,192,
- 39,181, 42,168,239, 35,149, 74,175, 53,106,212,104,207,133, 11, 23,156,118,238,220, 41,253, 96,239,222, 3, 1, 2, 16,166, 21,
- 67,169,227,211, 4,141,227,199,221,251,240, 30,196,169, 29, 13, 38,147, 29,192,109,131,109, 85, 68, 21,210,228, 25, 90, 50,148,
- 58,159,143,230, 59,182,237, 59,150,123, 33,154,231,104, 48,153,236,193, 65,235, 10,105,254,255,220,240,185, 92,238,132,229,203,
-151,115, 0,124, 77, 8, 17,254,151, 30,182,141, 43,145, 74, 31, 85,231,221,169,239, 70,154,191, 67, 67, 17, 40,147,201,238, 17,
- 66,124,223,151,253,212, 49, 76,248,158,200,200,211,131,189,189,187, 78,169, 93,251,179,226, 38,171,224,251,148,197,139, 23, 15,
- 9, 9, 9,113,172, 90,181,234, 40, 66, 8,231, 29, 28,139,149,139, 23, 47,158, 28, 18, 18,226,230,229,229, 53,247, 93,104,178,
-188, 95,222, 29, 64, 91, 0, 31, 3,248, 8, 64,163,130,239, 13, 11,166,143,241,170, 87,132,162,159, 13, 11,214, 45,156,223,184,
- 20,141,143, 75, 88,175, 97,145,244,162,191,139,127, 47,157,130,214, 0,180,232,103,241,169,159, 23,230,140,109, 86, 73,245,244,
-232, 46,154, 31, 23, 73,179,194, 30,208, 7,191, 44,164, 99, 27, 58,170, 6, 86,197,143, 21,104,125, 64, 41,165, 52, 56, 56,152,
-170,213,106,122,226,196, 9,198,217,217, 89, 35, 20, 10, 87, 2,144, 89,162, 37, 20, 10,243, 29, 29, 29,243, 36, 18,201, 86, 0,
- 66, 74, 41, 68, 34, 81,190,139,139, 75,158, 88, 44,222, 1, 64, 68, 41, 69,199,142, 29,213,148, 82, 42, 18,137,148,230,232,118,
-238,220, 89, 73, 41,165, 66,161, 80, 89,144,103,145, 88, 44,254,173, 65,131, 6,185, 34,145, 40,191, 32, 77, 40,149, 74,183, 54,
-108,216, 48, 87, 44, 22,231,155,163,107,103,103, 23,103, 50,153,232,209,163, 71,169,147,147, 83, 98, 97,186,173,173,109,156,201,
-100,162,135, 15, 31,166,142,142,142,137, 21, 56,166, 28,185, 92,190,180, 81,163, 70,217,114,185, 60,163, 72,218,178, 38, 77,154,
-228, 20,166,153, 51,201,100,178, 12, 15, 15,143, 44,185, 92,190, 12, 0,135, 82, 10,185, 92,158, 81,165, 74,149, 76, 43, 43,171,
-165,133,105,230, 76,110,110,110,163,156,156,156, 18,157,156,156, 18,109,108,108, 22,184,186,186, 38,167,165,165, 81, 74, 41,173,
- 86,173, 90, 42,165, 20,142,181, 63,105, 86,189,249,144,217, 78,129,221,199,111,216,127,243,246,149, 39, 25,105,181,219,143, 89,
-106, 93,187,135,181, 5,251, 47, 19, 10,133, 43, 93, 92, 92, 52,135, 15, 31, 54,165,164,164,208, 71,143, 30,209,164,164, 36, 90,
-218,117,253,175,159,214, 5,184,211,141,126,123, 66,103,121,132, 93, 89,220,201, 64,163, 47,208, 93,159, 57, 26, 46,143,175, 20,
- 65,127,246,255,157,110,172, 81,185, 66,154, 63,215,216,245,104,134, 71,248,154,185,227, 12, 49, 49, 49,116,226,208, 78,198, 51,
- 99, 43,189,164, 27,252,247, 87, 72,243,255,231,104,192, 39,159,124,146, 31, 27, 27, 75, 3, 2, 2,148, 92, 46,119,248,127,165,
- 53, 81, 35, 55, 84, 10,242, 21, 38, 60,218, 57,145,233, 22, 40,205,168,231,138,230,239,160, 21, 87,160,147,147, 83,250,182,109,
-219,168, 66,161, 72, 5,224,251, 62,236, 43, 0,226, 15,116,223, 94,187,246, 97,166,119,111,211,246,218,181, 15,251, 3,221,241,
-170, 91, 32, 2, 96,234,146, 37, 75,130, 13, 6, 67,240,214,173, 91,131,187,119,239, 30, 12, 96,226, 91,110,115,213,143, 63,254,
- 72, 13, 6, 3,221,186,117, 43,237,222,189, 59, 5,176,218,220,245,229,114,121,245, 90,181,106,237, 8, 8, 8,136,173, 83,167,
-142,174, 70,141, 26, 26, 95, 95,223,232,192,192,192,109, 34,145,200,139,109, 17,247,183, 93, 59,101,121,145, 70, 83,167, 78,157,
- 6,128, 78,157, 58,117, 26,165,244,227,130,229, 62, 46,250,189,248, 39,165, 52,168,232,239,146, 52, 10,167,146, 52, 75,218, 70,
-177,239,165,239, 79,225,206, 0,104, 13,224,114,241, 5,250, 84, 69,179,177,205, 42,169,213,105, 73,244,201,194,111,233,197,182,
-238,244,122, 27, 23,250,108,194, 39, 52,105,231, 74,250,101, 93, 91, 85,239,170,104, 91, 17,131,117,248,240, 97,122,230,204, 25,
-250,242,229, 75,154,146,146, 66,191,255,254,123,157, 76, 38,203,226,114,185,131,204,213,146, 72, 36, 57, 9, 9, 9,244,251,239,
-191,215, 22, 68,155,170, 74,165,210,156,228,228,100,186,112,225, 66,157, 68, 34,137, 4,224, 35, 18,137,242, 95,190,124, 73,197,
- 98,177, 89, 6, 75, 42,149,230, 60,121,242,132,138, 68, 34, 37, 0, 31, 71, 71,199,200,243,231,207, 27, 24,134,161,238,238,238,
-185, 0,170, 58, 58, 58,190,184,112,225,194,235, 52,115, 13,150, 90,173,166,103,206,156,161,206,206,206,137,197,211, 79,158, 60,
-249,134,241, 50,243,120, 58,187,186,186, 62, 40,204,159,151,151, 87, 26, 0,103, 55, 55,183,135,151, 47, 95, 54, 20,152,153, 52,
-115,245, 92, 92, 92, 82, 83, 83, 83,233,234,213,171,181, 10,133,226, 62, 0,103, 23, 23,151,212,180,180, 52,186,118,237, 90,173,
-149,149, 85, 48, 0,103,115,180, 28, 28, 28, 18,117, 58, 29,205,206,206,166,141, 27, 55,206,191,126,253, 58,205,205,205,165,148,
- 82, 90,165, 74,149, 84, 74, 41,252, 90, 15,255,225,246,243,252,220,207, 39,175,219,231,213,104,224,194,211,119, 18,226, 55, 31,
-186, 23,236, 16,216,163,147, 57,219,224,114,185,131,100, 50, 89,214, 79, 63,253,164,207,202,202,162,145,145,145,244,214,173, 91,
-244,214,173, 91, 52, 37, 37,229,195, 52, 88,251,193,165, 27,253,122,208,141,126,193,219, 6, 59,164,231,221,223, 77,233,217,111,
-232,203, 31,170,210, 89,157, 20,121,204, 70,191, 96,186,209,191, 55,157,211,154,103,145,230, 47, 53,186,209,141,126,193, 63,246,
-241,204,120, 16,124,151, 94,190,124,153,174, 95,185,132,142, 13,170,164,100, 54,250, 5,211,159,107,244,178, 72,179,200, 36, 18,
-137,158, 95,187,118,141, 94,185,114,133,206,157, 59,151, 74,165,210,216,183, 63, 14, 53, 4,244,103, 95, 79,186,206,167, 13,221,
-226,227, 74, 47, 85, 44,111,127,181,185,106,239, 43,140, 79,127,112,136,210,204, 23, 52,121, 89, 0,237,228,199,127, 43,147, 85,
- 96,174,210,162,163,163,105,114,114, 50, 93,177, 98, 5,181,178,178,122,175, 77,150, 31,208, 3,192,180,165, 75,151,190, 54, 87,
-235,214,173, 11,126,252,248,113,176,135,135,199,137,183,216,214,234,165, 75,151,190, 54, 87,235,214,173,163,143, 31, 63,166,158,
-158,158,113,229,173, 59,120,240, 96,105,179,102,205,130, 7, 13, 26,164,218,182,109, 27,141,142,142,166,143, 31, 63,166, 75,151,
- 46,165,179,103,207,166,191,254,250, 43,237,213,171,151,178,113,227,198,183,123,247,238, 45,182, 48,111, 60, 74,169,176, 96,226,
- 83, 74, 11, 13, 38, 15, 0, 31, 0,151, 53, 85,127,246, 6,165,121,145,210, 76, 84,105,198,170,248,188, 50, 12, 88,153, 70,173,
-188,237,149,181, 63, 69, 67,168,151, 40,165,127,170,251,194,163,152, 55,242,187, 31,196, 81,219, 86, 32,101,239, 90,112,179, 83,
-192,207,203,128,246,218,113, 24,174, 29,193,144,166, 77, 37, 18, 66,230, 87, 36,222, 39,145, 72,192,227,241,144,152,152,136,196,
-196, 68,140, 26, 53, 74,112,237,218, 53,155,150, 45, 91,254, 34,151,203, 31, 18, 66,106,155, 17, 22,134,155,155, 27,198,142, 29,
- 43,220,190,125,123, 53,133, 66,113,223,100, 50,241,157,157,157, 49,102,204, 24,193,254,253,251,171,216,216,216,220, 53,153, 76,
- 2,161, 80, 8,115,235, 92, 18, 66, 32, 16, 8, 96, 52, 26,249,141, 26, 53,186, 23, 26, 26,234,213,186,117,107, 94, 88, 88, 24,
-210,211,211,121, 13, 27, 54,124, 24, 26, 26,234,221,170, 85, 43, 94,100,100, 36,114,114,114,168,185,186, 58,157, 14, 34,145, 8,
- 28, 14,231,141,116,173, 86, 11, 75,242, 88, 88,252,215,188,121,243,144, 71,143, 30,213,105,221,186, 53,239,201,147, 39, 72, 79,
- 79,231, 55,110,220, 56,228,225,195,135,181, 91,180,104,193,123,246,236, 25,114,114,114,204,110, 98, 47, 22,139,225,232,232,136,
- 33, 67,134, 8,247,239,223, 95,199,209,209,241, 17,143,199, 19, 58, 56, 56, 96,208,160, 65,194,253,251,247,215,117,118,118,126,
-104,102,145, 33, 23, 0, 12, 6, 3, 70,141, 26, 37,179,178,178, 66, 92, 92, 28, 24,134,129,201,100, 2, 0,100,100,101, 60,126,
-248,248, 73,216,144, 1,125, 90,171,245, 90,237,205, 59,247,158, 86,171,226,233, 78, 8,173, 82,206,177,172, 45,149, 74, 31,246,
-239,223,127, 83,108,108,172,205,160, 65,131,248,209,209,209,200,200,200, 0,159,207,135, 88, 44,126,227, 24,127, 80,228, 6,216,
-131, 65,251,152, 52,157, 72,100,227,174,144,187,250, 2,177, 87, 80,213, 81, 4, 46,135, 43,190, 27,169,146, 1,180, 61, 60,210,
-237, 45,211,100,218, 71,166,234, 68, 6,187,154,114, 55,119, 15,100,100,100,160,114, 53,127,104,132,142,194, 27, 47,148,114, 16,
- 11, 53,255,127,174, 90,250,248,248,184, 84,175, 94, 29,233,233,233,168, 87,175, 30,108,109,109,109, 9, 33,237, 43,124, 12,182,
- 85, 17, 33, 23,205, 65,200,114,112, 57,115, 97,224, 45,194,139,180,122,248,165, 62,255,125, 42, 22,180,146, 11,111,237,222,179,
-183,146,189, 71, 13,224,248,231,112,182, 17, 97,203,152,122,118,142,214,162,195, 21, 41, 46, 36,132, 4, 58, 59, 59, 95,184,125,
-251,182,131, 88, 44,198,253,251,247, 17, 16, 16,128, 21, 43, 86, 56,218,218,218, 94,121, 31,138, 11, 41,165, 52, 12, 56,250,227,
-163, 71, 91,119, 68, 68, 28, 27,236,237,221,117,144,175,239,130,209,253,251, 15, 31, 55,110, 28,150, 44, 89,130,195,135, 15,163,
-121,243,230, 24, 57,114,164, 33, 54, 54,118,123, 5,139, 5,215, 46, 91,182,108,236, 55,223,124, 83, 92, 83, 31, 19, 19,243, 99,
- 89,235, 6, 6, 6,186, 63,127,254, 60, 97,194,132, 9,245,118,236,216, 33,145, 74,165,200,206,206,198, 47,191,252,130,105,211,
-166,129, 16, 2, 74, 41,126,253,245, 87,233,103,159,125,214, 40, 34, 34, 34,161, 74,149, 42,230, 84,223, 32, 0,196, 0,164, 5,
-147, 12,128,116,247,238,221,214, 61,122,244,176, 42, 72,147, 0,144,176, 13,189, 74,164, 68, 47, 82,228,156, 31, 43,118,173,117,
- 45,158, 86,124, 30,165,180,107, 89, 26, 22, 94,219, 93,205, 93,191,232,219,167, 13, 33,228,242,159,196,128,218, 46, 94,126,200,
- 57,187, 31, 18, 30,129,132, 91, 48,241, 8, 56, 47, 31,163,178,152, 15, 3,165,129, 21,172, 63, 5,137, 68, 2,137, 68, 2, 66,
- 8,178,178,178, 96,101,101,133,189,123,247,138, 87,175, 94, 93, 75, 42,149,222,180,182,182, 94, 84,158, 97, 1,128,103,207,158,
-161,110,221,186,228,216,177, 99, 86,163, 71,143,230, 1, 64, 76, 76, 12,106,213,170, 69, 46, 94,188,168,152, 52,105, 18, 17,137,
- 44,187,150, 5, 2, 1, 38, 79,158, 76,174, 95,191, 46,151, 74,165,120,242,228, 9,242,243,243, 49,105,210, 36,222,141, 27, 55,
-228, 50,153, 12, 17, 17, 17,208,104, 52, 22, 25, 55,157, 78, 7,129, 64,240,198, 58,132, 16,232,245,122, 8,133, 66,179, 77,129,
-131,131,195,236, 6, 13, 26, 28,184,116,233,146,189, 68, 34,193,227,199,143,161, 82,169, 48,127,254,124,233,181,107,215,236, 21,
- 10, 5,194,195,195,161, 82,169, 44, 50,109,133,219,127,241,226, 5,124,124,124,200,241,227,199,157, 70,142, 28, 41, 46, 60,166,
-190,190,190,228,196,137, 19,206,254,254,254,251,157,156,156,102,149,165,197, 48, 12,146,146,146, 16, 18, 18,130,151, 47, 95, 34,
- 45, 45, 13,233,233,233,200,203,203,131,209,104,124, 85, 63, 46, 47,247,248,238,125, 71, 31, 74, 36, 18,105,128,175,143,199,227,
- 39,161,169, 18,137, 68,234,233,225,225, 75,200,220, 18, 15,134, 66,161, 88, 36,145, 72,110, 30, 57,114,164,246,166, 77,155, 68,
-233,233,233,136,137,137, 1, 33, 4, 98,177,248,245,196,229,114, 63,188,199, 15, 33, 4, 68,231, 3, 66,234,221,122,169,180,107,
-217,117,128, 0,145,167, 0,198, 0,112,120,104, 83,219,157,119,248,177,210, 25, 20,181,161,133, 63, 96,198,201, 39,132, 0,250,
-234, 0,105,112,230,185,209,190,249, 39, 99, 4, 9, 9, 9, 16, 8, 4, 16,137, 68,168,215,238, 83,222,238,135, 6, 23, 16,212,
-129, 30,126,102,105,190,249,103,234,251,217,179,103,203,138,106, 14, 31, 62, 92,102,109,109, 61,187,194,230, 74, 41,109, 10, 19,
-253, 54, 36, 65,237,185,224,120,178,255,203, 84,181, 63, 40,190, 3, 12,117,223,214,100, 17, 66,218,136,197,226, 72, 66, 72,139,
-183, 50, 87, 10,225,205, 61,123,246, 86,178,171,252,202, 92,193,168, 1,248, 18,184, 56,218, 96,203,248,182,118,142, 54, 18,139,
- 76, 86,129,185, 58,127,235,214, 45, 7,177, 88,140,224,224, 96, 8, 4, 2,136,197, 98,212,170, 85, 11, 27, 55,110,116,180,179,
-179,123,175, 76,214,226, 71,143,182, 45, 10, 9,121, 54, 53, 48,208,191,167, 76,102,247,213,160, 65,214, 51,102,204, 56,118,228,
-200,145,173, 31,127,252,113,250,157, 59,119,126,162,148,238,183,240,252, 16, 66,200,186,229,203,151,127, 85,104,216,102,204,152,
-241,235,145, 35, 71, 22,125,252,241,199, 73,119,238,220,153, 64, 41, 93, 87,150, 70,126,126,254,145,153, 51,103, 90,127,242,201,
- 39,133,191,113,237,218, 53,108,223,190, 29, 50,153,236,141,101,187,119,239,142, 17, 35, 70,216,234,116,186,223,203,210,116,114,
-114, 10,186,117,235, 86, 0, 0, 1, 0, 81,161,193,122,242,228,137, 77,110,110,174,141, 92, 46,183,113,117,117, 85, 20,154,172,
- 79, 62,249,196,134,207,231,183,100, 61,213, 27,148,232, 69,138, 26, 28,115,210, 42,186,188,185, 38,203, 34,131, 69, 41,189, 12,
-160, 85, 73, 11,233, 51, 83, 32,130, 9, 18, 46,129,148, 91,196,100,129, 1, 47, 39, 21, 21,109,136, 91,244, 69, 40,145, 72, 32,
- 22,139, 95, 71,114,114,114,114, 64, 8, 41,215,108, 20, 26, 7,185, 92, 14,181, 90, 13,189, 94, 15,177, 88,252, 58,205,104, 52,
-194,104, 52, 66, 34,145, 64, 36, 18, 89, 28,193, 50, 24, 12, 8, 9, 9, 65, 68, 68, 4, 56, 28, 14,100, 50, 25, 12, 6, 3,158,
- 62,125,138,132,132, 4,240,120, 60, 72,165, 82,139, 12,140,201,100,130, 80,248,231,250,189, 6,131,193,162, 8, 22,135,195,129,
- 74,165,162,207,159, 63, 71,116,116, 52, 4, 2, 1,172,172,172, 32, 20, 10,145,150,150,134,248,248,248,215,105,150,228,175,112,
- 89,137, 68, 2,165, 82, 89, 88,215,237,117,154, 86,171, 5, 33, 4, 92, 46,183,220,243, 99, 50,153,144,152,152,136,180,180, 52,
-196,197,197, 33, 61, 61,253,181,201, 98,152,183,239,183,242,222,189,123, 52, 52, 52, 20, 90,173, 22, 34,145, 8, 98,177,248,141,
- 79, 30,239, 3,236,234,109,125,160, 53, 12,252, 14,233,249, 6, 81,154, 94, 96,237, 28, 24, 4, 68,158, 4, 56, 60, 64,108,139,
- 38, 53,171, 34, 38,203, 36, 11, 79,209,137, 65,208, 17,235,124,109,205,210, 52,241,219,167,229, 25, 68,209,122, 71,171, 26,181,
-235, 35, 37, 37, 5, 34,145, 8, 34,145, 8, 13,154, 7, 33, 50,195, 36, 13, 77, 80, 75, 65,209,193, 44,205,255, 95, 79,213,228,
-114,121,211, 22, 45, 90,144,162,154, 93,186,116, 1, 33,164, 22, 33,196,223,162,253, 95,227, 45,132, 94,218, 4,124,250,109,104,
-146,202,237,240, 19,141,111,183,158,159,218,173, 60,151,234, 31,150,164,241, 2, 99,156, 8,170,175, 95, 81,147, 69, 8,105,173,
- 80, 40,142,173, 89,179,198, 75, 44, 22,159, 36,132, 84,232, 5, 40,151,112, 55,124,255,213,128, 74,182,133,230,202,160, 2,120,
- 18,128, 47, 1,120, 18,184, 56, 57, 96,254,136,246,118, 82, 49,255,160, 5, 70,117,247,186,117,235, 28,139,155,171,194,169, 94,
-189,122,152, 53,107,150,163,157,157,221,174,127,248, 63, 64, 7, 27, 27,155, 29, 65, 65, 65,183, 18, 21,138, 17, 73,245,235, 11,
-207, 91, 91,231,124,148,147, 99,237,249,228,137,222, 15,120, 12, 96,125, 92, 92, 92, 39,115,205, 21, 33,164,191,181,181,117,112,
- 80, 80,144, 94,161, 80,196,174, 88,177,226,203,175,191,254, 26, 75,150, 44,193,204,153, 51, 55, 1,248,130, 82, 58, 61, 46, 46,
-206,173, 60,115, 5, 0,201,201,201, 3,167, 76,153,146,158,158,158, 14, 0,168, 85,171, 22,178,179,179, 49,113,226, 68,124,251,
-237,183, 0,128,186,117,235,130, 82,138,148,148, 20, 44, 91,182, 44, 37, 57, 57,121, 88, 57,127, 40,227,246,239,223,223, 72,175,
-215,187, 23, 20, 3,138,178,179,179,173, 50, 51, 51, 21,122,189, 94,198, 48,140,204,198,198, 70, 14, 64, 58,100,200, 16, 94, 72,
- 72, 72,128,209,104, 76, 96, 61,213, 27,230,165, 84, 47, 82, 65,142,191, 77,164,170,164, 8,152,217,193,138, 2, 33, 82,244,179,
- 40, 92,130, 71,177,247,174,192, 46,176,254, 27,209, 43, 41,151, 64, 98,101,141,200,184, 24, 8, 64, 66,222,214, 96, 21,154,172,
-208,208, 80,124,244,209, 71,170, 57,115,230, 60, 86, 42,149, 77,179,178,178,166,153, 99, 6,172,173,173,113,253,250,117,218,171,
- 87,175,220, 85,171, 86, 25, 11,211,110,221,186, 69,219,183,111,159, 55,111,222, 60, 90,188, 88,206, 28,131,181,106,213, 42,218,
-182,109,219,156,219,183,111, 83,153, 76, 6,169, 84,138, 85,171, 86, 25, 91,181,106,149,115,241,226, 69, 42,147,201,254,244,111,
-167, 60, 83, 84,104,176,138,154, 30, 14,135, 3,134, 97, 44, 50, 88,169,169,169,115,195,194,194,250,180,107,215, 46, 37, 36, 36,
-132, 90, 89, 89,193,218,218, 26, 83,167, 78, 85,213,173, 91, 55,245,209,163, 71,175,211, 44, 41, 42, 43,220,190, 66,161, 64, 72,
- 72, 8,237,218,181,107,234,250,245,235, 53,133,105, 79,158, 60,161,157, 59,119, 78, 9, 9, 9,233,147,156,156, 60,175,188, 8,
-214,203,151, 47, 95, 71,172, 52, 26, 13,210,211,211, 17, 23, 23,247,186,136, 80, 45,179,234, 52,160,111,183, 58,106,181, 90, 21,
-250,236,121,108,173,154, 1, 78,106,181, 90, 21, 19, 27,251,140,210,217, 37,186,176,188,188,188,105,106,181,186,233,130, 5, 11,
- 30,247,233,211, 71, 21, 30, 30,254, 39,115, 37, 22,139, 63, 76,131,197, 97, 92, 64,104,139,171,207,243,109,218,119,235, 39, 36,
-201,119, 0,125, 62, 32,178, 5, 68,182,224,201,236,209,185,101, 93,238,182, 91,185, 46,160, 76, 51, 8, 68,238,229,106,242,169,
- 51,192,180, 60,251, 76, 99,219,162,247, 88, 97,102,102, 38,184, 92,238,107, 51, 36,149,201,240, 81,207, 33,156, 95,239,104, 93,
- 0,218, 28,132,235,110,110,118,133, 66,225,228,239,191,255, 94,144,149,149, 5, 14,135,243,127, 77,169, 20,163, 71,143, 22, 89,
- 89, 89,205, 52,123,223, 15, 4, 8,192, 23, 53, 1, 67,191, 13, 79, 86,187, 29,121,164,246,253,110,209, 22, 73, 96,221, 70, 24,
-213,198, 73,178,232, 68,106,192,195, 4,149, 23, 96,154, 0,163,174,129,165, 38,139, 16,210, 82,161, 80, 28,191,119,239,158,180,
- 75,151, 46, 88,182,108,153, 76, 34,145,156, 36,132, 88,252,192, 87,230,155,190,158,183,250,183,148, 71, 63,117, 4,244,202, 87,
-198,170,200,148,154,207, 96,214,150, 11, 57, 6, 3, 29, 96,174,166, 90,173, 30,250,197, 23, 95,100, 28, 60,120,240, 79,230, 74,
- 44, 22, 35, 42, 42, 10, 11, 22, 44,200,204,204,204, 28,246, 79,154,171,175,191,254,122, 65,124,124,188,223,217,179,103,121,105,
-105,105, 78,203, 55,111,206, 57,144,147,147,185,232,201,147,240,233, 53,107,250, 76,173, 93,123, 88,105, 93, 56,148,102,174,190,
-250,234,171,221,241,241,241,245,206,157, 59,199, 79, 75, 75,115,255,234,171,175,176,116,233, 82,204,156, 57,115, 35,128, 81,133,
-181,163,205, 69,167,211,133,103,101,101,117,237,216,177, 99,118, 86, 86, 22,106,215,174,141,110,221,186,193,197,197, 5,110,110,
-110,232,209,163, 7,124,125,125,145,145,145,129, 1, 3, 6,100,166,165,165,117,164,148,150,217, 10, 61, 35, 35,227,197,174, 93,
-187,158,127,253,245,215,245,227,227,227,107, 0,176,207,203,203,147,229,229,229,137,116, 58,157,196,214,214,214,182,110,221,186,
- 14, 35, 71,142,148,223,191,127, 63, 32, 33, 33, 33, 15, 64, 52,107,171, 94,155,154, 82,189, 8,128,180, 2,163,163, 43,246,153,
- 86,206, 60,115,215, 45,241,187, 25,203,149, 31,193, 42, 13, 61, 48,107,251,254,109, 26,161, 71,117, 88,251,213,129, 84, 44,134,
- 68, 40,132,196,214, 30, 90,134,193,230,168,100,149,146,210,153, 21, 56,144,175,139, 7,197, 98, 49,242,243,243, 49,118,236, 88,
- 77,223,190,125,179,163,162,162, 70,231,230,230,214,161,148, 62, 50,199, 12, 40,149, 74,204,153, 51, 71, 61,117,234,212,151,121,
-121,121,245, 4, 2,129, 65,175,215,227,251,239,191,215,140, 25, 51, 38, 58, 59, 59,187,161, 64, 32,208, 91,250,178,229,243,249,
-224,241,120,134,156,156,156,122, 83,166, 76,137, 88,176, 96,129, 90, 32, 16, 64, 32, 16, 24,114,115,115,107, 77,155, 54, 45,124,
-218,180,105,106, 62,159,111, 81,100,172, 48, 34, 84,188,136,176,104,164,200, 92, 12, 6,195,133,212,212,212, 58,223,124,243,205,
-131, 85,171, 86,169,228,114, 57, 68, 34,145, 46, 53, 53,181,246,151, 95,126,249,112,217,178,101, 42,185, 92,110, 81, 4, 75,175,
-215,131, 97, 24,172, 89,179, 70,245,205, 55,223, 60, 76, 75, 75,171, 93,112, 65, 98,213,170, 85,170, 47,191,252,242, 65, 74, 74,
- 74, 29,131,193,112,193,140,104,157, 41, 55, 55, 23, 60, 30, 15, 79,158, 60,209, 10, 4, 2,112, 56, 28,188,120,241,226,181,193,
-178,179,179, 11,168, 83,171,166,255,111,187,247, 95,150, 8, 68,162,166,141, 26,212,120, 25, 29, 19, 79, 41,137, 46,231, 26,122,
-164, 84, 42,235,196,197,197,141, 30, 62,124,120,246,119,223,125,167,201,207,207,127,227,133,195,231,243, 63,188,167, 16, 7, 82,
- 16, 72,158,167,106, 21, 98,142,145,224,217,161, 87,230, 74,108, 3,136,109, 1,177, 45, 42, 85,114,199,157, 40,149, 2, 28, 8,
- 97, 50, 56,153,113, 67,202, 64, 32,125,146, 2, 5, 95, 40, 33,201,201,201,175,141, 80,225,228, 85,189, 6,238,199,228,203, 65,
-168, 8, 92, 88,210,149, 72, 87,123,123,123, 94, 82, 82,210,159, 52, 3, 2, 2,184, 6,131,161,163,217, 74,137, 38, 87,128,249,
-250, 89,170,198,237,143,135, 42,223,241,139,126,149, 72, 76,217,192,189,213, 8,172,230,134,241,189,235, 10,103, 28, 78, 11,188,
- 27,173,170, 6, 30, 29, 13, 38,223,209, 2, 99,208, 66,161, 80,156,188,123,247,174, 84,161, 80,224,229,203,151,104,212,168, 17,
-126,249,229, 23,169, 84, 42, 61, 65, 8,105, 99,201,105,186,149, 76, 99,242,243, 76, 77, 39,239,143, 77,126,148,100,124,195, 92,
-165, 41, 41,190,248,241, 72,118, 86,174,230,211,155,177,229,223, 71, 69,174,249, 7,217,217,217, 29,102,206,156,153,145,150,150,
-246,198,181, 30, 19, 19, 83,104, 4,218, 80, 74, 67,254,169,203,211,218,218,122,208,162, 69,139,112,247,238, 93,116,233,210, 5,
- 87,174, 92, 65,102,102, 38,246,156, 60,249,124,215,243,231,211, 11,235,100,149,212,133, 67,105, 88, 89, 89,125,183,104,209, 34,
-220,187,119,239,181,102, 70, 70, 6, 22, 45, 90, 20, 15, 96,140,165,230,170,144,148,148,148, 59,225,225,225, 29,107,215,174,253,
-116,205,154, 53,241,174,174,174,204,200,145, 35,241,197, 23, 95,192,209,209,209,180,114,229,202,216,150, 45, 91, 62,137,136,136,
- 8, 82, 42,149,143,205, 56, 63, 52, 61, 61,253,250,166, 77,155,110,182,107,215, 78, 54,120,240, 96,167,195,135, 15,219,171, 84,
- 42, 55,129, 64,224,172,211,233,132,161,161,161,188, 3, 7, 14,184, 62,125,250, 52, 74,173, 86,223,169,104,222,255,131,220, 45,
-136, 70,157, 43,246,121,183,156,121,230,174, 91,218,247,242,150, 43,219,232,148, 55, 13,170,134, 57,163,107, 42, 84, 55, 6, 55,
-161,201, 35, 91,208,148,126, 53,232,181,214,118,116,184, 55, 81, 14,173, 96, 55, 13, 38,147,137,166,164,164,208,148,148, 20, 58,
-127,254,124,163, 68, 34, 81, 75,165,210,149,176,176,155, 6,185, 92,158,239,227,227,147,103,109,109,253,186,155, 6,133, 66,145,
-239,231,231,151,103, 99, 99,243,186,155, 6,153, 76,150, 79, 41,165,114,185,220,172, 86,132, 86, 86, 86, 57,249,249,249, 84, 42,
-149, 22,118,211, 32,176,182,182,222,228,227,227,147, 39,151,203, 11,187,105,224,219,218,218,110,240,245,245,205, 83, 40, 20,249,
-102,182,208,139,139,143,143,167,241,241,241,180,114,229,202,137, 69,211, 99, 98, 98,104, 76, 76, 12,117,119,119,175, 80, 55, 13,
-142,142,142, 75, 27, 54,108,152,233,232,232,152, 81, 36,109, 89,195,134, 13,179, 10,211,204,108,249,151,209,160, 65,131, 44, 71,
- 71,199,215,221, 52, 56, 58, 58,102, 20,104, 91,212, 77,131, 68, 34, 25, 37, 22,139, 19,197, 98,113,162, 72, 36, 90, 80,165, 74,
-149,212,125,251,246,209,149, 43, 87, 82,133, 66,241,170,155,134,128,238, 77,171, 55, 27, 54,221, 49,160,199,119,111,211, 77,131,
- 84, 42, 93, 41,145, 72,212, 11, 23, 46, 52, 42,149, 74,106, 48, 24,104,193,195,235,195,106, 69,248,139,111,117,250,179,255,145,
-136,121, 94,161,223,180,146,106, 30,207,175, 67,233,239,159, 80,122,226, 11, 74, 47, 76,166,119, 54,142,164,205,188, 68,166,235,
- 19, 43, 63,163, 27,252,254, 48,171,107,133, 95,106, 85,167, 63,251,159,120, 62,215, 43,116,104, 75, 55,205,230,245, 43,233,237,
-219,183,233,147, 39, 79,232,203,151, 47,233,137, 67,251,104,179,106,210, 87,154, 63,251, 31,177,164,187, 6, 0,205, 69, 34, 81,
-254,138, 21, 43,232,173, 91,183, 94,107, 30, 57,114,132, 74,165, 82, 21, 96,102, 43,100,128,208,117, 1,159, 24,215,251, 93,155,
-217, 94,158,159,113,108, 50,165,143,183, 81,250, 75, 32,165, 91, 27, 83,186,239, 99, 74,143, 14,163,183, 86,246,166,205,189, 4,
- 6,186,193,239, 42,221, 18,208,222,220,124,242,249,252,220,131, 7, 15,210,196,196, 68,122,229,202, 21,122,239,222, 61, 26, 22,
- 22, 70, 99, 99, 99,233,241,227,199, 41,159,207,215, 0,176,184,149, 98, 99,103,120, 6,249, 8,146, 30, 46,110, 78,233,225, 1,
- 52,109,215, 32,218,181,166, 34,179, 73,101, 94,187,183,104,109, 85,215,222,222, 62,253,248,241,227, 52, 42, 42,138, 94,190,124,
-153, 58, 57, 57,165, 3, 8,252,167,175,207,160,160,160,219,148,210,224, 46, 93,186, 4, 3, 56, 21, 20, 20, 20, 28, 25, 25, 25,
-220,168, 81,163, 91, 40,163, 11,135,178, 52, 63,250,232, 35, 61,165,148,118,233,210,133, 2, 72, 12, 10, 10,162,145,145,145,180,
- 81,163, 70,186,119,212,122,141, 11, 96, 24,159,207,223,108,103,103,119,209,214,214,246, 2,151,203,253, 5,192, 96, 75,158,119,
- 37,104, 86, 2, 16,128, 87,253, 37, 53, 40,248,238, 6,182, 5,225,127,163, 85,164,185, 11,246,246, 66,243,207,170,145,203, 3,
-171, 34,111, 64, 85,228,127,238, 77,174,125,234,133,118, 21, 25,109,187,208, 96, 29, 61,122,148, 86,174, 92, 89,169, 80, 40,174,
- 1,240,169,200, 8,222,182,182,182,167,184, 92,110,159, 18,210,250, 21, 77,179,182,182, 14,177,177,177,201,177,178,178,122,105,
- 78, 62,173,172,172,194,164, 82,169,210,202,202, 42,172, 88,151, 0, 61,236,237,237,143, 23, 75,235, 94, 60,173,180,125,119,113,
-113,137, 75, 76, 76,164,105,105,105,212,195,195, 35,177,184,241, 74, 78, 78,126,195,120, 89, 58,122, 57,143,199,107,231,232,232,
-120,160,188,180,178, 52,157,157,157,127,231,241,222,124,248,151,148, 86,145, 81,214, 1,248, 86,170, 84, 41,117,249,242,229, 84,
- 46,151,167, 22,157,231,215,234,243,239,111, 63,207,207,253, 98,202,207,251, 28,107,244,172, 85,145,145,219, 1,248, 40, 20,138,
-107,158,158,158,202,243,231,207,151,105,176,240,111, 29,181,126,127, 13, 1,221, 88,163, 57,221, 80,227,120,216,108,207,167,195,
- 26,203,180,193,203,187, 80,122, 97, 50,189,245,243, 23,180,169,151,240,149, 17,218,232,127,146,254,234,219,138,174,174, 38, 52,
- 75,115,179,119, 75,186,209,255,100,232, 44,207,167,159,212,119,212,237,222,182,145,190,120,241,130, 30, 57,176,139, 54,169, 90,
- 96,174, 54,212, 56, 67,127,174,209,214, 44,205, 18, 76,214,150, 45, 91,232,139, 23, 47,232, 31,127,252, 97,150,185,122, 67, 19,
- 32,244,231,128,158,198,245,126,215,166, 5,201,179,191,104, 44,214, 14,168, 43,212,245, 8, 20,232, 59, 84, 23, 24,155,121,242,
- 76,117, 92, 57, 76, 13, 71,208, 14,126, 18, 45,221,224,119,149,110,168,209,209,220,124, 10,133,194, 88, 20,233, 19,167,248, 36,
- 18,137,210, 74, 51, 88,229,157,247,198,206,240, 12,242, 21, 37,157,159,215,142,118,171,173,200, 48,199, 92,149,167, 9,160,174,
-131,131, 67,250,214,173, 91,169,179,179,115,154, 57,230,234,239,184, 62,173,173,173,119,228,231,231, 7,159, 62,125, 58, 56, 40,
- 40, 40,120,199,142, 29,193,215,174, 93, 11,150, 74,165, 59, 74,235,194,161, 6,208,177, 44, 77, 43, 43,171,224,188,188, 60,122,
-250,244,105, 26, 20, 20, 68,119,236,216, 65,175, 93,187, 70,165, 82,105,240,123,117,111,178,154,236, 84, 17,131,245, 46, 79, 0,
- 0, 58,120,240, 96,149, 84, 42, 77, 1,208,253,191,116,241, 57, 56, 56,220,112,118,118, 78,113,118,118, 78,113,116,116,188, 95,
- 82,186,131,131,195,253, 15,249,198, 3,224, 43, 16, 8, 98,248,124,254,179,162,233,142, 1,221,155,122, 55, 31, 58,211, 57,176,
-123,231,183,205, 39,128,238, 82,169, 52,165, 87,175, 94,202, 15,206, 96, 81, 10,186,186,154,176,208,100, 61,158,233, 25,214,173,
-166, 84,255,203,132, 14,180,105,149, 98,230,106,171,167,200, 34,205, 2,147,245, 96,134, 71, 88, 91, 95,185,113,209,204,241,180,
- 73, 85,201,155,230,202, 18,205, 98, 38, 75, 42,149,230,205,158, 61,219,236,200,213,159, 52, 55,251,121,208,159,253,119,190, 50,
- 79,229, 77, 53, 54,211,181,126, 30,239,203,121,111,236, 12,207,143,124, 69, 33,230, 70,174,204,209, 4, 80,215,214,214,246,169,
-185,145,171,191, 99,223, 1,116, 24, 61,122,116,112,100,100,100,240,203,151, 47,131,175, 93,187, 22,220,179,103,207, 96, 0, 29,
- 74,234, 39, 75,223,171,151,182, 46,135, 51,190, 28,205,254,163, 71,143,166,145,145,145,244,229,203,151,244,218,181,107,180,103,
-207,158, 20, 64,127,214,184,176, 6,235,125,157,254,145, 26,192, 10,133,226,254,193,131, 7, 79,169,213,234, 5,148, 82,237,127,
-169, 16, 57, 45, 45,173,153, 37,233, 31,104, 69,198,103, 0, 60,255, 84,105, 63,228,240, 77, 0, 55,223,209, 54,142, 16, 66,206,
-156, 58,117,106,134, 66,161,232,244,193, 29,196,177, 17, 58,172,241,190, 7,161,112,113,205, 74,210,169,223,119,161,100,209,233,
- 27,158, 75,122, 57,197, 54,243,150, 69,129,207,252, 8,162,189,131, 97,209, 90, 11, 53,239, 64, 98, 88, 92,167,178,116,234,194,
- 30, 32, 63,158,220,230,185,180,167,125,108,179,106,242, 88, 80,252, 8,145,234,166, 69,154,111,158,147,235,132,144,206,203,151,
- 47,223,174, 82,169, 70, 80, 74, 47, 90,254,240,224, 36, 67,105,152, 5, 3,183, 38, 40,132,101,108, 76, 5, 14,158, 32,131,147,
-242,190,156,178, 91,201, 52, 6, 64,224, 59,190,151, 30, 0,168,241,158,221,223,103, 8, 33,216,181,107,215, 32,127,127,255,106,
-161,161,161, 47, 85, 42,213, 78, 74,233,153,162,117,149, 8, 33, 71,127,124,244, 72,185, 54, 52,244,186,142, 97,174,151,163,185,
-167, 64,243, 59,127,127,255,192,208,208,208, 16,149, 74,181,156, 82,186,135,173,154,196,242,190,242,143, 24,172,220,220,220,250,
-236,161,103,249, 27, 30,244, 90, 0,223, 23, 76, 31, 30, 69, 76, 86,125, 15,201,216,131,163, 37, 42, 80, 18, 15, 62,179,210, 98,
-115, 85,130,201,106,228, 41,249,246,143, 81, 18, 21, 40,146, 65,241,211,219,152,171,162, 38, 11, 64,213, 10, 11,244, 14,213, 3,
-136, 2, 33,209,152,131,210, 43, 71,207,193,235,191,217, 44,255,140,201, 2,112,166,156,101, 40,128, 11, 5,147, 57,154,123, 0,
-176,134,138,133, 53, 88, 44, 44, 44,127,147,201, 58, 16,112, 23,233,220,137,224,160, 42, 96,140,129,210,152,140,177,209,186,183,
-212,188,141,116,242, 13,184,240,133,208, 24,129,124, 93, 50, 70,191,133,230, 95,240, 6,199,171,186, 81, 37, 51,155,189, 52, 88,
- 88, 88, 88,131,197,194,194,242, 54,188,138,234,196, 23, 76,239,175, 38, 11, 11, 11,203,127, 8, 2, 32,168,148, 63,136,231,204,
- 22, 33, 36,168, 2,127, 64,207,177,154,172, 38,171,201,106,178,154,172, 38,171,249,223,210, 44, 79,219, 18,255,241, 94,243, 79,
-180, 34,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,144, 39, 14, 88, 88, 88, 88, 88, 88, 88, 88, 88,222, 41,255,
-104, 29, 44,169,131,175, 43,120,156,218,132,161,254, 0, 64, 57, 36, 12, 70,230,145, 42,253, 89,210,219,106, 43, 42,249,217, 81,
- 8,247, 19,232,250,228, 37,132,103,190,173, 94, 45, 63,235, 94,206, 14,138, 65,201, 25, 57,219,159,132,229, 29,182,100, 93, 27,
-155, 42,214, 98, 59,219,222, 90,189,161,166, 80, 32,136,213,103,231,254,146,153, 25,145,199, 94,126, 44, 44, 44, 44, 44, 44,255,
- 49,131, 85, 37,176,229, 93,177, 88,226, 5, 0, 12,165, 96, 40,160,204,205, 14, 78,138,184,219, 17, 0, 28,189,234,159,230,139,
-173,234, 51,244,213,124, 19, 3, 24,245,154,168,156,232, 91, 13,205,217,176,220,201,239,147,160, 14, 65,189,186,118,253,216,175,
- 86,205, 90,222, 0,240,248,201,227,136, 99,199,142,135,203,157,252, 14,230,167,134,255,241, 54, 59, 70, 33,254,161, 65,131,186,
- 45,238,221,187, 63, 15,192, 87,111,123,160,236,237,229, 99,207,252, 62,177,213, 71,189,150,201, 0, 88,100,176,196,118,182,189,
-123,116,235, 84,119,210,184,209,156, 47, 38, 46,244,186,123,253,210, 18,133, 91,205,108,202, 24,206, 40, 83,250, 93, 45,109, 64,
- 99, 22, 22, 22, 22, 22, 22,150, 15,204, 96,137,197, 18,175, 91,151,142,217,253,113, 45, 14, 0, 16, 84,207, 5,211,231,175,233,
- 64, 8, 9, 7,128,238, 95,204,241,157, 55,109, 28,110,132,164,130, 82,138,186,213,237,209,185, 71, 31,179, 54, 42,113, 9,104,
-216,175,111,223,129, 19, 39,126,215,253,197,139, 23,209,187,119,239,190, 10, 0, 45, 91,181,170,190,112,225,194,190,203,108,237,
- 68, 18,151,128, 4,117,114,232,221,138,236,148,164,146,119,165, 0,159,218,131,246,254,186,134,211,166,227,167, 3, 36,149,188,
- 23,169, 19, 34, 18,204, 89,215,209,209,241, 27, 62,159,111, 13, 0, 12,243,127,223, 83,173, 50,215, 5, 0,140, 38, 70, 97, 87,
-201, 63,143, 43, 16,155, 68, 34, 65,104, 94,126,254,246,156,248,208,205,101,105,106, 13,134,192,111,199,124,198,121,240, 50, 3,
- 94,129, 45,185, 43, 23,205, 0, 99, 50,216,142,159, 54,191,247,189,219,123, 1,204,190,204, 94,138, 44, 44, 44, 44, 44, 44,255,
- 1,131, 5, 0,114, 9, 15,225,145,201, 0, 0, 27, 9, 48,118,212, 80,100,164,167,249,234,140, 12, 62, 31, 58, 24,247,195,146,
- 16, 30,149, 6, 74, 41,124,221,165,102,111,148, 11,166,193,231,195, 63,111,125,250,204,153, 59,223,207,252,254, 55, 66, 94,245,
-222,189,241,151, 77, 77,103,205,158, 53, 98,240,208,193,237, 15, 28, 56, 16,130,242, 70,170, 46,109,167,136, 98,205,210,197, 11,
-132,241,233, 26,205, 55, 19,167, 50,223, 77,248,102, 37,128, 79,205, 89,151,207,231, 91,199,199,199,203, 57,156, 55,171,167,253,
-184, 96,234,149,246,189,150, 61,143,142,205,126,112,250,200,145,134, 1, 1, 1,136, 79, 72,110,190,100,213,134, 58,174,222, 13,
- 63,203,203, 85,247, 82,166,133,150,216,107,180,136,207, 15,153,187,228,231,186,140, 77,117,206,244, 17, 93, 16,232,237,134,132,
-212,108,180,234,216,157, 23,124,247,110, 7, 0,172,193, 98, 97, 97, 97, 97, 97,249,128,224, 0, 0, 33,164,196, 14,251, 76, 38,
-138,240,168, 36,132, 71, 37,225, 78, 88, 26,244,148,143,149, 75,230, 98,249,162,217,200, 84,115,240,199,141, 56, 60,139, 74,198,
-179,168,100,164,103,229,255,105,253,226, 77, 45,151, 47,150,214, 91,185,210,122,105,135, 86,178, 54,118,182,182,182,207, 67,126,
- 83,206,154,144, 82, 99,238,183,113, 2,190, 78, 20, 47,147,203,154,237,223,191, 47,192,217,209, 73, 38,151, 43, 38,203,220,235,
-110,177,177,169, 99, 93,150,102,113,164,206, 53,186,119,255,184, 83, 59, 23, 23,103,102,244,202,224,176,154, 53,252, 13, 62,213,
-125,154, 75,157,125,187,151,182, 78, 81, 77,134, 97,192,225,112,144,146,146,130,196,196, 68, 68, 70, 70,226,217,179,103,136,139,
-139, 78, 97, 40,229,155,192,112, 92, 93,221,193,227, 9,225, 85,197, 19, 63,175, 92, 36,157, 63,103,122, 35,177, 76,120,152, 16,
- 66, 74,210,212,100,102, 29, 56,113,234, 76,194,201,221, 63,155, 0, 32, 53, 43, 31, 23,238,190,192,253,208, 56,139, 78,214, 95,
-209,116,149,213,100, 53, 89, 77, 86,147,213,100, 53,223, 7,205,210,188,200,191,218, 96,149, 70, 68, 92, 38,194, 35,147, 81,223,
-191, 18,188,171,184,226,206,179, 44,236,188, 16,135, 45,167, 99,112,225, 97, 26, 24,158, 2,201,185,192,243,232, 20, 60,143, 73,
- 47,171, 95,101, 0, 0, 87,196,239,247,237,183, 57, 19,107, 5,228, 54,185,116,114, 44, 42, 57, 62, 15,152, 50, 37,123, 44, 87,
-196,239,103, 91, 89,177,123,234,196,241,131, 20, 82,169, 80,167,213,161, 90, 85, 79,241,184,175,199,126, 70,108, 69,187,205,221,
- 25, 43,247, 0, 91,145, 68,178,121,254,156,201,162,159,254,120, 30,171,212, 65,121,240,102,202,203,239,166,206,202,228,241,197,
- 63, 91,185, 7,216,154,171,101, 48, 24,160,213,106,161,211,233,160,215,235,145, 16,247,180,251,249, 63, 38,117,172, 90,217,174,
-163, 72, 44, 6, 5,144,171, 54, 34, 50, 73,133,182, 31,181,231,214,175, 87, 47, 80,238, 90, 99,120, 73, 90,217,217,209, 57, 12,
-229, 42,142, 29,218,197,221,119,246, 1,126, 59,118, 23,135, 47, 62,192,157,203, 39,141,148, 49,188, 30, 78, 66,225,230,227,171,
-112,171, 29,163,168, 84, 39,229,245,228, 94,235, 30,251, 63,128,133,133,133,133,133,229,223, 69,169, 69,132, 26,141, 58,234,211,
-126,131,225,234,228, 34,239,209,102,152, 32, 56, 34, 27,105, 73, 49,120,241,236, 9, 84, 26, 3, 4,182, 85, 1,177, 11,170,120,
-121,226, 81,248, 97,253,234,165,199,243, 25,163, 54,170, 52,189, 30, 61,220,220, 93, 29,101,156,165, 75, 60,110, 61, 11,207,170,
-191,107,230, 86, 12, 28, 40,119, 88,186,196,227, 86,244, 75, 25, 71, 42,166,205, 62, 27, 58,128,112, 8,197,148, 41, 19,209,163,
-107, 39,124,254,217, 16,178,125,251,182, 38,230,238, 12, 3,254,218,105, 51,230, 10, 83,178,141,186, 59,207,242,181, 82,153, 68,
-114,253,121,190, 50,208,203, 67,210,165,215,176,196,227,251, 55,255, 4, 96,168, 57, 90,133,198,202, 96, 48, 64,175,215, 3,128,
- 9, 0, 56,156, 87,159, 25,121, 58,164,102,107,145,146,173,133,209,196,160, 87,191,161,146,187,247, 30, 14, 5, 80, 74,125, 44,
-134, 49, 24, 13, 56,120,246, 62, 18,238, 30, 96, 8,135,155, 83, 88,201,189,208, 92,185,184,120, 92,233,218,107,136,163, 80,252,
-170,184, 53, 79,169,197,246, 13, 75,216,171,148,133,133,133,133,133,229, 67, 49, 88,209, 33, 87, 27, 2,128, 95,195,142, 25,114,
- 49,207,142,199, 33, 72,137,143,192,246,101,223,128, 97, 40,186,140, 88, 10,133,151, 11, 36, 2, 46,180,249, 25,249, 25, 47, 46,
-217,151,181, 33, 66, 12,237,215,109, 76,240,250,114, 76, 53,171, 93,187,242,249, 0,176,107, 87, 62,127,204,232,202, 86,235, 55,
- 70,121, 53,110, 81, 31,212,100, 66,215, 30,159,162, 95,255,126,136, 78, 86,225,247, 43,177, 80,170,117,102,141,127, 38,117,172,
- 81,199,201,173, 82,167,111,135,117,146,241,184,132,248,120, 90,115,227,210, 12, 70, 46,151,111, 58,122, 55, 39,177, 87,175,254,
- 14, 23, 78,236,107, 39,117,172, 81, 71,149,246,244, 97,121,122, 90,173, 22, 38,147, 9, 90,173, 22, 6,131, 1,118, 14, 85, 79,
-180,255,116, 89,124, 82,114,222,241,228, 44, 77, 99,165,193,136,148,108, 45, 82,179,181,200, 86,234,225,162,176,133,209,160,171,
- 85,154, 30,165,244,183,158,159, 14, 30, 2,128, 67, 56,198,173,121,137, 79,159, 21,206, 43, 52, 87,157,122, 12,116,188, 18, 28,
-129, 23,247, 78,102, 81,198,104,120,117,224, 24,118,168, 18, 22, 22, 22, 22, 22,150,127, 25,156,255, 27, 32, 66, 75, 43,255, 76,
- 72,201,132,189,156, 7, 71, 55, 47, 12,250,102, 57, 0,192,100, 50,128, 82,192,104, 50,175,135, 1, 74,249,103,191, 26,227, 21,
- 85,197,139,228, 12, 26, 40, 85, 3,192,160,129, 82,117, 21, 47,146,243,213, 24,175,168, 60,141, 92,111, 52,153,112, 61, 36, 21,
- 75,247, 62,197,172,109,143,113,234,158,249,221, 97,113,133,130, 49, 75, 22, 47, 18,240,184,132,132,196,228,231,199,103, 24,243,
-185,124,190, 94, 42, 21, 82, 29,229,105,163,211,105,198, 71, 61, 63,123,193,225,146,225,101,233, 20,182, 28, 44, 44, 34, 44,140,
- 96, 81, 74, 41, 1, 24,134,152, 76,241,233, 26,196,165,169, 17,151,250,255, 41, 37, 75, 91,106, 9,169,194,205,199,215,218, 74,
-126,202,214,198,234, 51, 27,107,171,161, 50,137,237,105,133,155,143,111,113,115,117, 43, 36, 17, 17, 15,206,165,152,244,170,190,
-121, 9, 15,157,243, 18, 30, 58,231,197, 63,110,192, 94,166, 44, 44, 44, 44, 44,255, 5,202,242, 34,255, 74,131, 69, 41, 37,133,
-211,159,141, 17,240, 60, 38, 29, 66, 30, 3,247, 42,222,160, 69,108, 4, 5, 96, 52,153,119, 28, 14, 31, 78,140,175, 86, 93,201,
- 76,158, 28,219,180,102, 45,251, 71, 99, 70, 87, 14,171, 89,203,254,209,228,201,177, 77,171, 85, 87, 50, 6, 35,223, 68, 11,250,
-219, 42,236, 91,171,160, 59,126,115,119,165, 81,157,128,170,220,185,187,158,199,126,185,254, 89,184, 64, 32, 48,184, 59, 72,137,
-167,179,148,235,225, 40, 17,106, 13, 28,173,111, 96, 61, 29, 56,164,158, 57, 6, 75,167,211,189, 49,101,164, 69,116, 63,243,251,
-196, 30,149,156,109,135, 37,164,169, 17,155,170, 66, 92,154, 10,177,105, 42,168,180, 70, 60,126,250, 18,224, 10,158,148,164,105,
-165,176, 59,189,123,231,111, 30,117,106, 84,115, 10,240,173,226,180,121,219,111, 30, 98,177,205,105,133,155,143,175,135,151, 95,
-240,237,115,251, 28,111,133, 36, 34, 38,252, 94,178, 81,155,187, 91,153, 18,118,158,189,205, 88, 88, 88, 88, 88,254, 75,148,229,
- 69,254,141,152,213,147,187,167,187, 51,110, 63,137, 66, 45,255,170,176,182, 82, 32, 44, 34, 30, 92, 14, 31, 28, 2, 24,140,230,
-155, 32,170, 55,236, 93,177,194, 26, 49, 81, 50,206,250,159,163,188,190, 26,227, 21,181, 98,133,245, 77,170, 55,236, 5, 48,152,
-210, 87, 99, 35, 22,118,108,106,178,160,251, 77,202, 24, 42, 59,219, 73,185,247, 94, 42, 51, 56, 28,174,214,222, 90,204,216, 91,
-139, 56,246, 10, 33, 95,192,231, 50, 70,202,209,187, 59,121,105, 40,195,212, 49, 71,175,104, 17,161,201,100, 2, 33, 28, 83,129,
- 1,147,197,101,168,145,163,225, 34, 37, 91,139,172, 60, 61,124, 42,201,112,238,194, 1,149,201,160,222, 85,146, 22,151, 47,176,
-246,246,114,199,244, 31, 86, 64,173, 53,225,121, 66, 62, 4, 34,145,139,179, 75,224,195,193, 95, 78, 21,141,251, 37, 2,195,219,
-217, 99,194,213,136, 4, 85,138,120, 42,123,155,177,176,176,176,176,176,252, 7, 12,150, 92, 42, 6,229,138,113, 53, 56, 2,126,
- 1,181,177,237,200, 29, 84,175,213, 4, 73,121, 70, 80,112,202,109, 61, 88,200,119, 83, 85,247, 1,220,239,209,195,205,253,147,
- 79, 42,181,167,148,127,118,253,134,156,120, 0,248,121, 79,107, 80, 0, 12, 67, 65, 41, 64,153, 87, 70,203,108, 8, 47, 38, 42,
- 41,183,138,151,139, 12,161,241,122,173, 76, 36,224,216,202,132, 92, 71,107,161, 64,192,227,193, 68,137, 54, 41, 41, 66, 75,128,
-104,115,228, 10,139, 6, 11, 63,165,114,215, 19, 31,245, 92,154, 22, 29,155,115,207, 39, 83, 85, 39, 71, 47, 4,165,128, 79, 37,
- 25,158,220, 58,110, 74, 73,120,241, 92,157, 18,190,161, 36, 45,134, 1, 87,111,100,240,240,101, 14,178,149, 6,100,231,235,209,
-188,109, 55, 65,243,160,238,184,250, 36, 29,140,209,128, 37,155,142,231,153,168,161, 31,165,161, 6,246,178,100, 97, 97, 97, 97,
- 97,249,119, 99,214, 96,207, 38,134,194,193,222, 14, 98,153, 21,162, 82,244,200, 35, 78,200, 82, 81,152, 76,175, 34, 88,165, 5,
-154, 8, 33, 65, 37,165, 31, 62,156, 24,127,232, 80,218,150,195,135, 19,139, 84,224,254,127,228,234,245, 39, 67,205,214, 36,212,
-116,238,200,201, 75, 57,221, 27, 59,218,114,184, 92,181,128,207,209,242, 4, 92,189,128,199, 49, 8,120, 28,157,179, 21,159,123,
-233,232, 30, 33, 37,184, 84,158,166, 70,163, 65, 80, 80, 16,186,116,233,130, 30, 61,122,160, 79,159, 62,240,245,173,225,196,225,
- 18, 29, 37, 12,227, 40,204,131,183, 35, 1, 79, 19,135,243,123,126, 84, 61,185,126,232,161, 73,171,233, 70,139,148,105,190,161,
- 73, 41,147,153,163,133, 70,111, 66, 86,190, 30, 89, 74, 61,140,142, 77,113,232, 70, 34,212, 58, 19, 98,130, 15,168,211,146,227,
-191,209,164, 60,143, 42,211, 67,150,178,239,111, 3,171,201,106,178,154,172, 38,171,201,106,190, 15,154, 31, 26,102, 68,176, 40,
-170,185,202, 80,189,146, 12, 26,189, 19, 52, 58, 19,148, 26, 19,114, 85,122,228,170, 12,136, 74, 86,225,201,145,183,207,200,171,
-168, 21, 64, 10,190,131,188, 50,118,230,198,176,132,122,221, 15,203,151, 44,236,187,167, 94, 93,221,184,143, 93, 43, 63,138,210,
- 37, 18,194, 81,115,184, 60,131,157,130,199, 15, 11,123,148,118,243,202,137, 86, 98,163,105, 72, 89, 58, 70,163, 49,167, 82,165,
- 74, 0,222, 28, 42,167,134,183,164,199,245,227, 83,170,182,238,190,196,241,167, 5, 19, 85, 28,174,128, 33, 60,193, 19,147, 65,
-189, 91,157, 18,254, 51, 45,163,194, 24, 71, 32,126,122,251, 65,104, 19, 27,187,202,120,145,160,132, 82, 99,132,222,200,192, 86,
- 46, 64,252,227,211,250,168,176,123,251,242, 18, 30,110, 99, 47, 71, 22, 22, 22, 22, 22,150,255,136,193,210,104, 52, 81, 45,130,
-186,129, 97, 40, 76, 20, 96, 76, 5,145, 38,230,255,209, 38,147, 65, 19,245,182, 25, 97, 24,211,157,181,191,108,233, 82,175, 81,
-107,110,128,135, 28,185, 25,201,184,117,253,162, 17, 12,189,105,206,250,233,233,207,242,165, 46, 62,159,246,237,253,201,254,161,
-159,143,206,110,213,182,173,204,201,201, 69, 27,159, 16,175,250,117,199, 78,195,233, 19,135, 91, 49, 48,246, 79, 79,127,158, 95,
-150, 78,118,118,246,170,146,210, 63,106, 81,185, 57,128,170, 92, 30,209,169, 82,159,201, 44,217,183,244,132,184, 94, 11,127,152,
- 19, 61,112,196,120, 97,181, 74,222, 72,205,225, 34, 42, 62, 25, 97, 87, 14,107, 19,158,221,253, 35, 55,254,254,112,246, 82,100,
- 97, 97, 97, 97, 97,249, 15, 25,172,216,208, 87,253, 97,253,213,228, 37,167, 14,222,182,237,183,249,191,237,216,211, 92,163,211,
- 85,162, 16,196,153,140,186,203,249, 38,204, 50, 87, 67,149,252,252,158,131,131,111,205, 95, 55,173,157,241,235,150,245,173,193,
-152,252, 9, 16, 77, 9, 46,137, 13,166,161,229,153,171,178, 13, 92,222,198,246,159, 46, 83,103,100,228,255,102,233,186,170,244,
-176,100,185,115,181,202, 27, 87,254,176,148,195,225,118, 48,153, 24, 62, 99, 50,188, 48,233, 53, 63,170,211,194,143, 80,203,154,
- 75,178,176,176,176,176,176,176,252,219, 13,214,223, 69,102,102, 68, 30,128,113,111,171,147,158,254, 44, 31,192, 59,111,137,247,
-248, 89,206,239, 0,126,175,232,250,249, 41, 47,211, 96,102, 47,242, 44, 44, 44, 44, 44, 44, 44,255,110, 56,236, 33, 96, 97, 97,
- 97, 97, 97, 97, 97,121,183, 16, 0, 37,182, 4,176,100,164,236,138,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,100, 53,
- 89,205, 15, 79,179, 60,109, 75,252,199,123, 13, 45,232, 49,253,175,152, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171,
-201,106,254,215, 38,182,136,144,133,133,133,133,229, 63,135,131,131,175,220,193,193, 87,110,238,242, 50,199, 0,103,153, 99,128,
- 51,123,228, 88,204,133, 53, 88,111, 9, 33,132,248,121,201,199,118,104, 93,245,144,127, 53,105,143,127, 74, 83,238, 92,205, 81,
-225,209,240,186,149,123,205,206,127,193, 62,138, 2, 3, 3,155, 6, 6, 6, 54, 37,132,136,222,133,166,204,217,111, 64,101,159,
-166, 87,156,189,235, 93,148,187,248,246,126,215,121, 86,184,249,216, 43, 60, 26,252,174,168, 84, 39, 75,225, 86, 39, 87, 81,185,
-193,101, 43,199,128,106,229,173,231,209, 99,145,255,188, 61, 33,187, 61,122, 44,242, 47,105,190, 93,231, 53,138, 57,123, 95, 44,
-112,232,190, 68,206, 94,253, 21,195,163,197, 64, 27,183, 54, 19,237, 45, 93,207,221,175,105,136, 87,205, 86,169,149,124,155, 60,
- 49,119,157,202,254,205,238, 87, 9,108,145, 82,217,175,217, 61,246,200,155,135,196,169, 90, 83,137,157,231,113,177,157,231, 9,
-177,125,181,182,111,171,231,230,230, 38,169, 81,163, 70,167,166, 77,155,142, 10, 10, 10,250,182, 94,189,122, 35,171, 84,169,210,
-129, 16,242,143, 53,178,146, 57,251, 77,211,242, 73,186,150, 79,210,101,206,126,211,202,127,190,250,207, 39, 28, 83, 34,225,152,
- 18,229,206,254,243,223,151,115, 37,118,241,243,148, 57,251,173,176,114, 13,188, 35,117,246,237,102,233,250,118,118,118, 29,156,
-156,156,122, 22, 78,118,118,118, 29,216, 59,224,221, 97,241, 5, 78, 72,125,190,220,213,240,173, 80, 44, 25,198,225,192, 42,245,
-197,173, 74,239,243, 14, 58, 86,107,124,143,203,225,186, 23, 77, 51, 49,166,248,180,151,183, 27,188, 11,125,191, 42,146,225, 51,
- 38, 15,158, 48,160,111,144,103, 80,215,111, 8,128,195, 37,190,240, 61, 26,222, 32,132, 83,149, 67, 0, 14,135,128, 67, 0,128,
- 38,166,191,188, 93,175,162,154,133, 88, 59,121, 87, 21,202, 29,175,180,232,241,149, 75,240,185,157,219,100,142, 1,237,149,105,
-161,143,222,129,177,114,244,246,246,110,232,235,235,107, 63,118,236, 88, 1, 0,252,244,211, 79,213,171, 87,175,158, 17, 17, 17,
-113,151, 82,154, 86,161,135,155,147,255,224, 85,203,230,253,214,185,115, 23, 36,166, 43,177,100,197,186, 54,114, 23,223, 62,249,
-201,207, 14,188,139,115, 98,107, 91,213,138,103,101,251,248,155,201,243,156, 58,181,105,200,205,215, 24,113,234,202,131,150, 59,
-215,205,187, 99,229, 24,208, 40, 55, 45,244,101,105,235, 50,170,156,153,206,114,218,137, 81,229, 0,192,128,226,243, 43,201, 13,
- 65,142, 18, 83, 39, 87, 17,239, 1,128,131,229,230,197,171,197,105,190, 72,228,201,225,112, 80,120,238,185,228,213,249, 55,232,
-213, 49,241, 79,175,116,124, 31,238, 19, 43,207,198,201,224,242,236, 57,228,255,249, 35, 5,215, 41,161, 52, 55,233,217, 85,251,
-119,112, 61, 89,215,172,110, 19,248,113,243, 22,191, 94,142,204,148,121,180, 30,127,156, 80,206,250,152, 43,203, 31,154,245, 50,
- 17,139,109,143, 30, 61,234,216,169, 83, 39,107,231,154, 61, 47,155,245,199, 67, 40, 14, 56,118,236,136,160, 83,167,142, 22, 92,
-159,126,237,193,225,236, 32, 0,159, 97,232, 79, 92,134,238,203,207,120, 22, 97,105,119, 42, 82,103,255,225, 28, 80,179,159, 51,
- 12,200, 61, 85, 74,216,150, 10, 30, 91,174,196,201,111,152, 68, 44,158,232,227, 87,195, 55, 42, 50,226, 89,110,110,206, 10,117,
-234,179, 45,148, 82,198, 34, 49,131,113,210,185,171,193,157,121,124, 62,233,244, 81, 99, 46,128,139,111,115,222,157,157,157,123,
-174, 89,179,166, 90,211,166, 77, 1, 0, 70,163,209,106,255,254,253, 46, 63,252,240,131,204,156,123,168,148,253,173,228,232,232,
-232, 33, 20, 10, 43, 1,128, 78,167, 75, 72, 75, 75,139,165,148, 38,148,123, 77,184,120, 59, 16,240,230, 93,189,114,133, 7, 0,
- 45, 91,182,154,239,217,114,172, 45, 87, 32, 87,151,120, 56,116,121, 50, 0,227,111,221,190, 73, 0,160, 73,227,166, 83,101,142,
- 1,107,149,105,161, 41,255,152, 9,118,246,111,204, 1, 38, 52,111,213,190, 87,191,254,131, 57,129, 62, 30,232,208,190,221, 20,
- 0, 71, 45, 50, 0, 60,158,228,206,157, 59,222, 28, 14,135,107, 52, 26, 53, 77,154, 52,137,125,155,124, 85,242,107,118,131,128,
- 83, 89,111,212,109, 74,123,121,111,126,241,107,143, 16,194,181,174, 92,111, 6,184,188, 17, 12,195,196,229,198,220,109,198, 26,
-172, 34, 7,199,202,189,238,181,190,253, 6,213,252, 97,242, 72,241,234, 29,103, 97, 87,181, 81,104,102,228,157,128,247,117, 7,
-185, 28,174,251,153, 51,167,157, 36, 34, 46, 0, 32, 95,109, 66,103, 51, 30,182, 54, 94,141, 47,113, 8,241, 43, 28,210,219,100,
-212,139,121,124,161,134, 0, 0,121,213, 58,192,193,173,202, 5, 87, 87, 59,233,128,190, 65,158, 59,246,156,141,143,141,207, 40,
-245,161,207,225,112,221, 15, 31, 57,234, 84,201, 94, 12, 30,151, 32, 95,109, 68,167, 46,221, 76, 37, 45,235,234,106,247,241,128,
-190, 65,158,187,246,158,139, 77, 74,202, 60, 94,230, 67,220,213,183,190,204,218,249, 84,175, 81, 63,216,107, 56,118,152,181, 96,
-149,195,149,147,187, 46,183,254,120, 48, 19, 19, 19,167,161,132,132,102,101, 38,125,155,159,244, 34,220,220,115, 44,151,203,171,
-201,229,242, 58,157, 59,119, 22, 79,156, 56,145,223,166, 77,155,215,243, 71,142, 28, 41,184,116,233,146,235,178,101,203,186,184,
-185,185,105,242,243,243, 31,230,231,231,191,164,148,154,204, 61, 39, 46, 46,142, 95,127,250, 73, 55,180,235,245, 21, 76, 12,193,
-200, 47,199,227,244,201,131,163, 1,188, 19,131,101,144, 90,253, 48, 98,212, 68,199, 38, 13,235,114,231,237, 10,135, 68,200, 67,
-199, 6,126,228,179,177, 51,109,182,172,158,183, 25, 64,235,146, 34, 87,140, 42,103,102, 77, 7, 93,255,238, 77,171,226,200,110,
- 93,127,247,160, 41,224, 72,173,231,199, 30,158, 22, 6, 0,222,157,199, 41,108, 37,146, 53,110, 54, 92, 39,145, 41,109,141,119,
-231,113,231, 34, 78,174,206, 43, 43, 47,124,145,200,115,207,238, 93, 62,182,114, 1,184, 92, 2, 30,135, 3, 46,151, 64,171, 55,
-161,119,159,254,239, 42,194,200,149, 56,249,116,225, 0,159,189,122, 81, 99,171, 58,245,249, 9, 75,206, 9,225, 10,236,143, 29,
-249,131,231,100, 45, 2,151, 75,192,229, 0, 92, 14, 65,116,138, 26,195,135,127,102,253,182, 70,189,115,115,167,134,151,214,182,
-238,216,164,166, 93,237,189, 55,137,117,147,206,253,236,211, 53,210, 97,123, 14, 95,236,239,209,106,194,109, 74,153,165,113, 87,
- 87,158, 41, 75, 71,171,213,166,116,236,212,217,138,240,100,210,115,135,182,181,226,113, 8, 12, 38, 10,163,137,194, 84, 48,118,
-233,171,251,149,128,195, 33,160, 12,197,136, 17,195,209,177, 83,103, 21, 99,100,226,205,206, 48,135,179,227,212,185,235,142, 90,
- 3,131,101,107,182,204, 83,230,164,205,139, 12,179,143,150, 58,251,142, 87,165, 60, 51,123,220, 10, 14,104,131,184,151, 79, 70,
-237, 58,118, 11, 53, 3,106,192,196,188,202,167,159,187, 12,187,142,223,130,191,159,255,171,124, 51, 20,190,149,229,104,216,160,
- 33, 0,108,177,252,248,182,225,201,156,253,119,119,239, 61,180,119,175,222, 3, 96,103,107, 5,157, 94,235,123,254,244,137, 95,
-126, 94,179,164, 57, 33,100,152, 69,230,144,154, 94,191, 23, 40,195,188,117,148,201,205,205,205,177, 97,195,255,119,167,104, 52,
- 26,225,229,229,133,132,132, 4,191, 10, 92, 75, 82, 87, 87,215,143, 55,110,220,232,212,165, 75, 23,190,139,139, 11, 0, 32, 57,
- 57,185,210,169, 83,167,234,185,185,185,165, 38, 37, 37, 29,167,148,170, 74,211, 48, 25, 56, 2, 14, 15, 92,177, 88,250,106, 31,
- 65, 56, 19,191, 30, 82,219,217,213, 77, 91,210,242,105,105,201,194,201, 95, 93, 36, 60,158,160, 96,121,112, 40,101, 72, 25, 81,
-161, 32, 62,159, 47, 41,105,158,158,107,213,132,242,173,191,224,112, 57,175, 46, 86,163, 33, 45, 51, 38,184,134, 5,145,183, 64,
-190, 80,240,243,192,161,163,154,245,238,213, 3,174,142,214, 56,119,237, 17, 70,127, 61,193, 96,212, 27, 86, 84,232, 29,201,229,
-242, 82, 83, 83,163,109,109,109, 93,222,254,125, 75,170,158, 61,125,210,233,220,249, 11, 83,151,175, 92, 61,198,205,183,165,129,
-161,244,245, 56,195, 30, 53,219,241,219,119,237,107,229,228,221, 68,188,122,246, 23,124, 54,130, 85,212,249,187, 5,124,219,167,
-111,223,154, 95,141, 30, 41,254,118,205, 53,156,223,253, 83,250,187, 50, 87, 10, 39,191,166,132,203, 27, 69,184, 92, 25,225, 16,
- 33, 99, 98,226,140, 58,221,124, 85,250,179,164,183,213, 54, 49,192,239,215, 83, 45,187,145, 41,170,239,216,119,200,201,217, 70,
- 4,141,206,136,126, 3, 6, 99,199,142,223, 20, 14, 86, 66,104,116, 70, 44, 93,190, 60, 47, 63,250,184, 83,116, 92, 86, 66, 80,
-183, 9,103, 94, 70,165, 62,137, 77,210,236, 43,253,193,192,129,147,181, 8, 11,246, 60,131,149,132, 15, 91,133, 0, 28, 14, 41,
-250,224, 32,190, 85,100, 95, 87,174,236,216, 54, 49, 41, 43,167,136,230,206, 82,111, 54,215, 90, 29,173,109,221,118,127, 50,106,
-129,205,243, 84, 30, 40,244,136,176, 18,163,239,176,113, 86,213, 92, 36,144,137,185, 54,145, 49, 9,174, 19, 39, 77,186,102,237,
-228,221, 40, 39, 53, 34,178,188,253,174, 82,165, 74,175,174, 93,187, 74,191,251,238, 59,126,229,202,149,177,117,215,126,207,150,
- 29,251,116, 75, 76, 74,169, 76, 41,133,179,147, 83,220,136,207,250, 28, 61,113,226, 68, 76, 92, 92, 28,127,201,146, 37,141,255,
-248,227,143, 0, 75,254,137,154, 40,133, 70,107,130,169,224,197,152,150,163,181,244, 33, 75, 42, 85,170, 36, 74, 72, 72,208, 22,
-190, 56, 8, 33,175, 15,166,188, 82,221,142, 31,181,110,204,219,120, 50, 10,249, 26, 19,100, 98, 62,162, 82, 84,104, 80,183, 22,
-217,100, 50,214, 41, 73,115,120,223,143,103, 58,203,105,167,238, 77,171,194,201, 86,138, 95,215, 46,192,145,155,145,157, 82,242,
- 9, 28,186, 47, 25,229, 42,226,181,119,148, 10,214,180,105,224,237,210,174,190, 39,238, 54,240,118,185, 18, 28,254,172, 86,223,
- 21, 99, 19,242,249,231, 50, 79,142,205, 43,249,129,195,129,157, 66,136,205,167,162, 33, 21,243, 32, 19,243, 32, 19,189,250, 44,
-122,254, 43,244, 47,214, 45,160, 50,151, 49, 13,183,114, 11, 24,222,191,111, 31,183,129,253,251, 80,112, 57,216,255,251,209, 30,
- 59,119,238, 72,146,187,248,109, 54,113,184, 91,212,137,161,113,229, 30, 83, 14,224,100, 45,196,164,205, 79, 96, 37,225, 67, 33,
-229,195, 74,202, 71,187,218,142,224, 86,176, 34, 1, 33,196,118,116,143,106, 93, 30,253, 22,212,214,207, 67,238,243, 48, 34, 39,
-116,248,252,123, 43, 47,101,183,253,118,237, 79, 1,246,249,217, 58,222,172,137, 35,120,241,137,137,109,247, 31,189,220,206,173,
-209,240,112,163, 94, 57, 61,245,225,190, 18, 35,182,113, 97, 55,234,185, 55,237, 35,214,231, 27, 30, 63, 12,143,247,206,210,138,
- 16, 18,157, 11,153,152, 7,121,225,177, 21,243, 32, 19,243, 33, 23,243,144, 24, 31,133, 76, 37,247, 90,130, 61,167, 45,189,116,
-195,104, 73,222, 53,122, 19, 30, 68,230,163,138, 95, 93,184,186,186, 65,215,101, 80,149,219, 23,126, 63, 44,115,173,177, 72,153,
-244,116,186,185, 58,187,142,221,194,212,241,163,130, 9,112,191,224,229, 92,111,214,226,117,245,231, 77,253,234,141,180,137,115,
- 87,215,175,168,185,150, 58,251,237,108,253,241,224,222,181,154,116,192,203,168, 40,156, 60,122, 15, 31,181,239,140, 46,221,122,
- 65,167,211, 14,217,178,113,245, 93, 0,235,254,244,204,117,173,209,162, 86,205, 26, 59, 43,185,185, 85,102,152, 87,163,114, 80,
- 10,180,104,221, 14,147,191, 29, 1,134, 82,212,169,215,168, 93,151,254, 99, 41, 45, 24,189, 35, 61, 35, 93, 25, 30, 22, 26,164,
- 78, 9,187,109,246,177,212,104, 12,105,105,105,120,240,224, 1,158, 61,123,134,144,144, 16,100,100,100,192,218,218, 58,223,194,
-125,181,170, 93,187,246,192, 11, 23, 46,136,109,109,109, 95,167,235,116, 58, 40, 20, 10, 12, 28, 56,144,223,161, 67,135, 74, 31,
-127,252,241, 80, 66,200, 46, 74,105,110, 73, 58,234,140,231,137, 86, 46,254, 27, 90,183,105, 61, 6, 0, 36, 86,174,145,107,182,
- 30, 13, 41,243, 94,179,118,243,108,214,172,185, 55, 40, 5, 1, 93,165, 76, 15, 79, 46, 35, 42, 36,187,117,235, 86, 53, 46,151,
-251,250,253,202, 48, 12,214,255,186,215,255,236,213,199,189, 22, 47, 93, 38,182,146,137,144,150,163,195, 23,131, 62, 49,251, 29,
- 44,117,241,239,210,188,121,235,195,243,230,126,207,147,203,100, 56,115,251, 37,198,126, 59, 73,147, 20,253,100, 25,101,248,235,
-148,169,225,169,111,249,170,124, 39, 29, 94,251,184,203,161,232,222, 81, 60,122, 72,119,177,206, 96, 66,182,210, 0,173,222, 4,
- 19, 67,145,163, 52, 32, 52, 54, 15, 14, 86,194,138, 72, 55, 4,224, 8, 32, 13,192,221, 98,191, 81,240, 29, 37,252, 78,127, 21,
- 22,129, 61, 0, 29,128,162, 27, 47,252, 93, 90,122,225,250,161, 0,106, 20,104,154, 0,220, 1,144, 85,174,193, 34,132, 80, 74,
- 41, 41,114, 17,191,241,187, 40, 2,161,188,239,212,177,131,197, 63,236, 10,198,249,221, 11,211,211, 34,110, 22,238, 0,156,188,
- 27,223, 79,141,120,179,184,203,156,166,150, 18,183,128,202, 60,194, 93,209,186, 77,171, 14, 99,190,252, 18,126,213,220, 5, 38,
-147,137, 62,121, 22,105,216,182,229,215, 97,214,149,107,173,204,141,127, 50,179, 48,212,104,105,243, 77, 19, 99,138, 47, 30,177,
- 50, 49,166,248,242,242, 73, 8, 96, 35, 19, 96,195,137, 72, 80, 10, 16, 80, 88, 73,249,216,115, 41, 30,145,193, 7,115,187,214,
-201, 85, 14, 92, 60,167, 93,219, 46,227, 46,132, 70,104,246,165,166,106, 78, 83, 74,147, 75,211,228, 16,128,199, 37,176,146,242,
- 97, 45, 21,192, 70, 38, 0, 41,242,226, 42, 90, 44,216,166,203,184,179, 23,174,199, 76, 7,144, 70, 41,213,150,164, 41,113,241,
-105,104,101,227,190,175,215,152, 37,138,199,241, 70,240,184, 64, 85, 23, 9,236, 20, 2,232,140, 4,209,105,250,130, 59,198, 6,
- 99, 39,206,181,155, 58, 97,204, 9, 66, 2,106, 82, 26,170, 47,107,223, 85, 42,149,112,240,224,193,124,131,193,160, 31,248,197,
- 55, 29,146,147,211,122,172, 95,245,163,200,201,201, 25, 42,141, 17,193, 33, 47,106,204,155, 55,183,234,209, 83,151, 14,205,153,
- 52,250,112,167, 78,157,172,247,238,221,203, 88,114,222,211, 82,210,215,254,186,243,192,111, 63, 45, 91,136,240,152, 44,108,217,
-184, 14,212,100,220, 80,230,157, 95, 68,147, 82, 74,167, 79,159, 46, 57,116,232,144,187, 76, 38,203, 85,169, 84,105,111,196, 31,
- 56,132,151,146,169,130,131, 66, 8, 1,143, 3,103, 91, 49,156,172, 69,224,115, 1, 14, 33,166,146, 52,183,236, 59, 62,159, 81,
-229,224,200,110, 93,255, 95,215, 46,192,231, 95,207,192,147,116,225, 41,142,212,122,254, 87,253,123, 77,117,148,152, 58,185,217,
-112,156,218,213,175, 2,153, 88,128,105,227, 6,163, 81,112,180, 83, 66, 54, 51, 35, 77,205,173, 11, 96, 70,137,231,157, 67,192,
-227, 18, 40,164,124,156,218,185, 52, 85,153,147,150, 83, 88,244,166,211,106, 98,204,122,234,149,112, 60,101,206,126, 83,235,215,
-173,189, 96,204,200,225,156,230, 77, 27, 81, 14,135,143,244, 60, 29,161, 20,248,118,236,104,124, 53,122,132, 75, 92, 98,234,172,
-117,235, 54,204,148, 59,213,248, 33, 63,245,233,156,178, 52, 57,228, 85,212, 71, 46,230, 65, 46,121,101, 88,228, 98, 30, 52, 58,
- 19, 8, 1,215,214,179,126, 14,121, 21,185, 77,204,136, 46,249, 31,119,113, 77, 59,143,192,243,103, 35, 21,254, 89,251,178,110,
- 70, 37,134,204, 15,126,148,114,135, 82,154,233,209,122,194, 80,189,145, 34, 95, 99, 68, 84,138, 10, 70, 61, 37,159,119,246,132,
- 87,111,226,183,240,215,251,191, 17, 66,172, 10,141,115,113,205,248,155,251, 53, 14,181,122,245,251,105,245,198,187,203, 22,204,
-224,166,231,232,192, 80, 10,177,144, 11,137,144, 87, 48,113,161, 86,230, 96,221,207,155,146,141, 32,189,232,165, 75, 70,139,158,
- 75, 12, 29,244, 73,151, 86,123, 8, 32, 36, 28, 65,188,155,103, 21,207,143,186, 13, 19,127,212,125, 48, 76, 70,221, 84,153,179,
-255, 69,101, 74,216,121,115, 52,107, 6,212, 0, 1,238,231,167,132,143, 6, 0,185,179,223, 6,127, 63,255,250,197,211,170, 87,
-247,171,111,206,121, 47,120, 70,115, 36,142, 62, 35,171,251,215,154, 60,230,251,141, 85,162,146, 84,176,171,236,131,144,199, 15,
-112,114,239,218,251,234,188,172,101, 39,143, 28,156,252,195,143,171,234,116,235,217, 23,135,255,216,251, 29, 33,100, 61,125,197,
-185, 34,209,169, 65,219, 54,255, 82,153, 47, 20,193, 96,100, 96, 48,209, 87,159, 70, 19, 50, 51,179, 96, 48, 50, 16, 75, 21, 48,
- 50, 4, 6, 19, 3,131,145,129, 86,103,148,141, 30,252,241,151, 0,110,151,148, 79,247, 26,109, 78, 11, 68, 34, 79,138, 87, 99,
-203, 82, 74,193, 53,234, 56,174,174,174,187, 0, 64, 36, 18, 65, 36, 18,129, 97, 24, 4,135,167,125,237,232, 31, 52, 6, 5,198,
-206,164,215,197,100, 69, 93,235, 88,218,190,187,184,184,116, 43,110,174, 52, 26, 13,242,243,243,113,245,230, 93,235,205,191, 29,
-232, 20, 21, 19, 95,141,161,214, 90,133, 83,181,142, 0,186,149,118, 60,115,147,195,190,172,220,116, 36,231,187,175,134, 86, 95,
-189,237,216,157,231,167,126, 40,179, 30, 86,213,160,169,186,239, 70,125,218, 96,241,170, 45,207, 51,175,253, 60,190,188,115,196,
-227,241,248,105,105,105,175,239,239, 53,155,118, 55,184, 31,158,208,115,229, 79, 43,197,193, 47,243,240, 56, 42, 17, 67,131, 60,
-240,198, 75,160, 12, 77,185,139,183,131,183,183,255,174,117,171, 22,243,158, 39,106,176,246,224, 29, 92, 56,188,225,106,114,234,
-237, 78, 52, 57, 81, 93,145,103,200,219, 26,172,178, 52, 47, 62, 74, 71,190,198, 8,173,206, 8, 3, 67,145,171, 50, 32, 53, 91,
-135, 92,149, 30,249,106, 35,134,182,247, 40,205, 68,151,229, 71, 28, 9, 33,199, 40,165, 93,241,170,123, 41, 97,145,223, 32,132,
- 28, 43,200,215, 27,191,167, 78,157, 58,125,209,162, 69, 33,133,203, 22,166, 23, 46, 91, 86,122,145,245,237,167, 77,155, 86,115,
-241,226,197, 11,155, 54,109,186,231,198,141, 27,145,102, 25,172,162, 59, 65, 8, 41,243, 0,139, 4, 60, 55,169,194,246,149,225,
-248,127,192, 0, 85,106,182,201, 88,185,100,158,157,171, 79,147,152,164,231,183, 60,205,143, 90,249, 54,147, 72,164,199,151, 47,
- 95,142,254,221, 90, 74, 98,211, 13,249,143, 98,213, 41, 74, 29,140, 78,142,190,194,249, 11, 23,203, 23, 47, 89,250,213,177, 35,
- 76, 54,128,165, 37, 23,229, 53,188,199, 37, 69,234, 88, 17, 2,202,152,226, 51,163,238, 52, 0,128,183,169,107,165,212, 24,193,
- 45,168, 59, 67, 8,160,210,154,192,229,146,212,236,240,125,161, 3,127,152,223,110,199,158,179,137,148, 99,147,167, 84, 70, 73,
- 41,165,241,101, 71, 8, 8,114, 85, 6, 88, 75,249,176,145,243, 97, 45, 19,128, 91,228,230, 42, 44, 22,220,177,251, 76, 66, 76,
- 76,198,221, 2,115, 85,170, 38,143,203,137,164, 38,131,134, 82,147,162,107, 67, 71, 56,217, 8,225,106, 43,130, 72,200,131,193,
- 8,168,117, 12, 52, 58, 19,162, 83,213,200, 83, 75, 80,171,117,159,170,246,174,247,180,246,158, 13, 15,101,196,220,237, 85,166,
- 41, 53,153,176,109,215,129,234,137,137, 41, 61, 78, 28,218, 41, 74,203, 53,224, 81,180, 18,169,217, 90,128,235,136,217, 11,215,
-138,166,140, 31,217,115,219,238,223, 99, 62,106,217, 56,198,226,227,154, 26,182,163, 86,179,143, 55,116,237,218, 83, 18,114,251,
- 4,158, 63, 56,191, 32, 63,197,252,250, 87,132, 16,206,254,253,251,141, 35, 71,142,204, 91,184,112, 97,229, 35, 71,142,120,165,
-165,165, 61, 0, 96,176,177,177,241,247,173,238,249,240,204,169,147,149, 62,238,217,135, 31,159,174,134,181, 84, 0, 79, 39, 41,
-110, 94, 61,109, 16, 10,249, 37,214, 39, 41, 40, 6, 28,224, 30, 52, 5, 71,110, 70,118, 10,201, 16, 95, 26, 49,124,104,204,153,
- 43,225, 25,107,126, 59,243, 99, 37,185,225,129,152, 73, 91,115,175,129,183,203,212,177,131,177,104,245, 14, 92, 14, 14, 79, 85,
-114, 92, 23, 36,105,141,103,231,244,155, 92, 74,200,252,149,177, 86, 72,248, 80,230,166,229,188, 8, 62,233,251,142,162,207, 67,
-207, 28,218,193,201,204, 51, 32, 46, 93, 67, 18, 51,243, 96, 98, 40,108,164, 2, 24, 25,138,236,204,116,178,115,199,111,184,123,
-247, 38, 7, 92,206, 23, 0,230,148, 89,156, 69, 94, 21, 9,202,197,252, 87, 17, 32,201,171, 79,131,137,129, 95,117,111,252,178,
-102,133,149,131,147, 51, 90,180, 50,191,206,179,194,222,179,206,158,173,107,112,233,198,253, 54,151, 87,174,109, 40,119,115, 92,
-109,229, 30,176,204,218,171,189, 70,171, 55, 33, 39, 59, 11, 66, 93, 28, 26, 85, 74,131,157,212,132,232, 92, 87, 60, 73,126, 46,
- 47,175, 56, 43,253,241,193, 7,142, 53, 63,153,121,224,232,133, 69, 29,219,183,193,147,232, 92, 72,132, 60,136,133, 92,136,133,
- 92,240,137, 9, 43,126,222, 96,200,202,201,235,154,254,228, 80,122, 5,174,207,115, 5,255,118, 95,189,220,156,171, 57,238, 88,
- 61,115,251,136,201, 75, 58,118,250,100, 24,121,114,247,226,116, 0,231,205,251,131, 71,205, 74, 99, 24,106,246,181,239,228,221,
- 96,215,214,109,187,251, 5,248, 84, 70, 74,182, 1,137, 89,122, 92,189, 31,129,237,155,103,102,103,165,188, 28, 4,125,126, 62,
- 67,140, 57,167, 79, 29, 61,245,245, 55,147, 17, 88,179, 78,149,220,248, 92, 43, 0, 57,111,108,147, 75, 54, 14, 25, 62,170,159,
-179,179,179,226,255, 17, 44, 10, 95,191, 0,116,233,254, 41, 78, 31,254, 3,161, 33,143,192,208, 87, 70,137, 97, 40,178,179, 50,
-146,141, 6,221,182,210,242, 39, 20,139, 61,127,221,250,155, 15,135, 67,160, 55, 48,208, 25, 25,140,255,242, 51,221,232,111,167,
-183,232,210,161,117,136,144,139,220,232,216, 36,155,155,247,159,214, 98,248,242,202,195, 39,174, 16,104,180, 38,228,168, 12, 56,
-177,165,116,143, 35,177,243,108, 90,167, 89,207,225,163,191,255, 69, 36,226,114,244,129,190,149, 35, 91, 55, 9,140,243,112,115,
-200,155,183,120,109,163,107,183,239,119,233, 59,112,184,120,168,127,125,226,102, 47, 81,124, 54,240,147,218, 50,123,143, 33,202,
-140,216, 82,135, 54,227, 75,109,179, 61,188,170,171,254, 31, 33,242, 59, 72, 40,170,190, 97, 34, 8, 34, 85,201,225,189, 0,192,
-213,205, 67,195, 23, 89,229, 89, 96, 64, 40, 0,172,222,180,187,193,195,103,137, 35,126,250,105,165, 52,248,101, 30, 30,188,204,
-129, 72,192,129,222,192,128,152, 25,196,102, 40,119,212,140,105, 83,173,178,148, 38, 92,122,148,134,144,123, 23,169, 46, 95, 51,
- 80,106,180,234, 37,115,246, 27, 2,192, 27, 64, 4, 33,116,163, 50,197,229, 48,165,151,140,150, 94,247, 12,243,234,127,178,181,
-147,119, 85, 19, 79,212,133, 47,148, 53, 37,132, 6, 18, 10, 91,128, 38,100, 20,188, 83,205,117,104,202,148,103, 88,178,112, 22,
- 86,109,254, 3,137, 25, 26, 88,155,226,112,120,203,124,124,183,104, 23,212, 90, 83, 89,215,120,153,126,164, 36, 67, 84,220,104,
- 21,126, 47, 92,110,209,162, 69, 93,139,157,155,174,165,156,179, 63, 45, 87,184,254,226,197,139, 23, 22,153,175, 50,187,136,176,
-112,103,202,218, 41, 43,199,128,106, 2, 43,185,200, 74,194,135,151,135, 43,250,143,153,227,224,226,211, 60, 85, 36,228,113, 15,
-237,254,197, 46, 93, 45, 2,225,112,148,102, 23,111, 56,251, 55, 86, 40, 20, 39, 14,254,254, 7,170,121, 56, 9,118, 94,205,140,
-186, 31,169,126, 29,210,205, 77,139, 17,122, 89,169,120,189, 62,249, 68,122,254,194,197,111, 75, 51, 88, 92,194,117,223,244,219,
-239, 78, 10, 9, 31,132, 0,121,106, 35, 70, 12,249,244,237, 95, 95,148,225,126, 62,108, 8, 72,129,185,202,205, 72,198,244,201,
- 99, 52, 50,195,243,208,216,232,216,132,160,110,223,157,207,205, 39,154,126,131,191,188, 27,250,108, 81, 86,249, 87,175, 33,190,
-203,199, 93, 4,175, 34, 5, 0,151, 16, 48,148, 73,241,243,146,143,253, 83,177, 96,178,118, 83,121,134, 45, 47, 33, 60, 83,225,
- 90,171,247,142,229, 95,111,114,115,118,178,151,203, 36, 84, 46, 21,145, 64,127, 31, 65,147, 38,205,132, 94,126,181, 5, 87,159,
-170, 17,155,166, 70,100, 98, 14, 68,206,117,121,253,219,117,198,142,149, 19,219, 16, 66, 56,229, 85,124, 61,123,233, 86,183,205,
- 63,255, 36, 74,201,214, 35, 44, 54, 31,201, 89, 26, 36,101,105,145,156,169,129, 92,194, 71,171,238, 35, 69,199, 15,111,236,246,
- 81,203,198,171, 43,114,120, 35, 35,163,142, 71, 39, 36,245,169, 93,175, 17,118,108,223,218,210,214,182,170, 85, 86, 86,100,174,
-185,103,103,254,252,249,194,197,139, 23,243,214,172, 89,147,219,164, 73, 19,151,105,211,166,117, 76, 77, 77,189, 83,165, 74, 21,
-191,211, 7,183, 93,168,219,170, 71, 67, 48,122,199,150,173,219, 10, 68, 12, 15,103,142, 29,211,239,219,187, 51, 67,173,206, 27,
- 93,166,209,144, 90,207, 79,201, 39,112,172, 84, 41, 68, 46, 52,181,231,113,178,159,101,158, 28,251, 27,128,131,222,157,199,157,
-187,120, 47,252,217,255,216, 59,235,240,168,142,182,141,223,179,158,149,184, 59, 16, 8, 9, 33,193,221,221,181,104,161,148,182,
- 72,169, 80,164, 45,148, 22,107,145, 82, 90,164,165,197,138,211,226, 90,220, 93,131, 67, 18, 8, 81,226,178,146,117, 57,243,253,
- 17,121, 3,111,100, 67,233,215,183,116,126,215,181, 87, 54,187,231,220, 59,115,206,156, 57,247,121,198, 26,223, 76,244, 58,117,
-243,113, 86,158,206, 92,251,201,225,201, 21, 86,184,124, 66, 32,224,243,224, 40, 21,128, 87, 84,155, 58,250,215,127, 12, 66, 60,
-139, 35,165, 4,164,232, 47, 64, 8,210,242,146,162,237,232,147, 65, 40, 71,129,152, 84, 45, 10, 12,133, 33,248, 0, 15, 25,178,
- 51, 83,241,243,242, 13,136,190,113, 29, 93,123,244,197,138, 53, 91, 48,230,173,193,134,202,212,120,188,162, 8, 86,169,232,149,
- 66, 42, 0, 64,160,212, 90,176,235, 66, 10,106,214,224,217,125, 67, 0, 0, 71,133, 12, 42,141, 30, 60,145, 35,158,220, 60, 36,
- 59,124,250,234,244, 47,191, 94,242,105,126,250,157,228,199,119,207, 35,204, 67,133, 26,254,102,220,207,112,194,141,220,234, 8,
-171, 21, 2,158,232,186, 93,218, 57,247,163, 22,237,227,237,234,221,184, 65, 68,139, 96, 47, 23,232, 77,182,162, 40, 22, 31,235,
-215,109, 66, 98, 66,234,187, 57,247,247, 70,191, 10, 39, 91,144, 25,159,237,224, 29,250,193,221,171, 39,159, 14,120,243, 3,248,
-250, 7,213,183,255,166,101,159,153,178,217, 97,176, 8, 33, 60,183,106, 13, 54,110,220,188, 99,104,141, 32, 31, 28,191,154,128,
-107,177,185,240,240,112, 7, 95,230,131,208,118,163, 93,238, 30, 89,246,134, 62,167, 96,163, 80, 36,123,175, 89,243, 86,160,148,
- 34,230,225,253, 60,149,202,249,191,234,102, 93,218,163, 91, 0,156,158,107,134,242,172, 83, 95,225,236,118,203,104,182,225,217,
-179, 84, 92,188,116,166, 97,209,118,118, 35, 17,241,113, 44, 58, 11,102, 11, 7,179,149, 67,219,118, 93, 76, 34,158,177,205,188,
- 37,235,154,167,167,165,243,228, 78, 30,156,155,127, 29,145,175,196,108,188, 29,175, 18,153, 45, 28, 66,252,228, 21,106,122,250,
-213,154, 63,117,234,164, 58,124,145, 20, 26,173,209,148,158,246,204,103,245,111,167, 11, 30, 62,186,235, 31,224,229,236,244,237,
-210, 85, 34,181,129, 32, 75,101, 68,158, 70, 77,222, 28,247,153,223,218,159, 22,140, 0, 96,247,218,177,132,162,198, 31,199,206,
-135,187, 58,138, 72,129,193,202,229,170,205,182, 55,251,255,185, 65,148, 69,230,106,236,146, 31,150,202,162,227, 53,184, 29,175,
-130,131,136, 15,177,136, 7,147,133,131, 61,151, 19, 33,132, 87, 35,178,221,248,150,141,163,112,244, 86, 14,248,124, 30,244,154,
-124,157, 0,185,177,141,219,119,149, 53,106,218, 28, 29,218,183,195,227,216,152,160,131,251,119,117,186,124,241,108,134,194, 43,
-236,195,130,172,152, 61, 85, 42,231, 58, 29,223, 34,246, 25,237,235, 95,173,213,192, 97,163,157,131,131,252,137,151,135, 59,172,
- 84,128,177,111,189, 97,247,149, 95,104,200,129,133, 95, 79,135,209,104,130,167,139, 24,148, 2,235,150,207,134,201,100,130,159,
-187, 4, 42,173,165, 34, 99, 90,161, 31, 41, 47,234, 84,197,230,230,131,101,153,172, 23, 63, 39,132, 28,156, 54,109,218, 23, 0,
-232,180,105,211,190, 40,254,127,193,130, 5,122, 0,105,118, 25,172,226, 76,149, 91, 81,250,133,214,118,245,242,187,176,125,227,
- 79,174,249, 5,102, 56,136,248, 8, 8, 12,198,231,115,151,121,246,104,236,129,108,131, 12, 59,118,174,207, 51, 25,116,219,236,
-107, 75, 14,109,236, 40,119, 58,186,113,243, 54,206,195,221,157,247,243,177,236,248, 92,141,181,164,233, 42,246,234,126,238,198,
-209,213,190, 20,228,136,131,131, 67, 45,147,201,228, 90,217, 9, 93,119, 44,169,168,115, 46,121, 21,117, 42, 8,159,111,219,178,
-101, 51,220,157,196, 48, 90, 56, 76,251,116,162,126, 84, 87,133,242,205, 33,195, 58,118,232,249,241, 41,161, 60,244,100,203,134,
-161,180, 65,131, 6, 74, 62,159, 95,169, 94,238,211,107,255, 53, 90, 34,188,186,236,189, 25,159,141,154, 81, 70,179,160, 93, 29,
-114, 53,233,119, 47, 0,120, 46, 34, 66,106,214, 20,111,221,177,111,226,160, 33, 67,191,244,175,223, 95,145,144,174,130,136,152,
-209,164,142, 47, 78, 31,217, 67, 83, 19, 99, 39,217, 51,170, 40, 43, 59, 47,208,211,211, 27,209, 79, 11,240, 44, 87,143,140, 34,
-115,149,158,111,132, 70,175, 65,189, 96, 63, 40, 85,170,192,151, 62,190,192,158,163, 71,143, 14,238,217,111, 40, 62,254,116, 78,
-235, 95,127, 89,124, 71,225, 83,251,157,130,140,216, 51,246, 60, 25, 18, 66,242, 62,255,252,243,154,107,214,172,225,141, 24, 49,
- 66, 31, 21, 21,229, 48,114,228,200,214,155, 54,109,114,144,201, 28,244,183,207,239,255,242,189,143,166,245, 91,189,236,155,250,
-249,249,249,196,106,177, 28, 54,231,231, 79,211, 84, 98,226,146,247, 77,127, 68, 34,230,188,221,165,141,231,126, 55, 25,175,174,
-132,154,134,145,136, 57,219,232,131, 89,230, 39,135,151,107,162,134,252,240, 81,154,146,155, 97,224,121,205,171,204, 92, 1, 0,
-143, 79, 96,178,112,112,148, 10,193,227,241,138,205,187,239,250,109,135,101,158,206, 98, 8,249, 60, 8,248,133,209,205, 28,181,
- 25, 31,140,238,103,247, 19,128,213, 70,161, 55, 89,161, 43,122, 26,212,168,115, 48,253,211,201,232,209,103, 0,222, 27, 63, 25,
-249,122,224,198, 83, 13,204, 22, 75,165, 23, 5,143,240,160, 51, 90,241, 78,215, 96,228, 21,152,161,213, 91, 97,178,114,144,137,
- 5, 16, 10,120,144, 59, 8,224, 36, 19, 2,148,138, 8, 33, 99, 1, 64, 40, 20, 26,204,102,243,230, 10,206, 19,170, 7,122, 67,
-111,225,161,233,208,197,232,220,162, 54,238, 95,216, 37, 56,123,229,110,141, 79, 62,157,129,137, 99,250, 96,231,163,154,112,243,
- 10,134, 66, 46,133,133,242, 0, 80,187, 58,228, 81, 58,139,243, 13, 31, 56,124,229,154,117, 49,115,103, 78,115, 80,106, 9, 36,
- 34, 62, 78,157, 60,129,203, 87,111, 44,203,190,191,119, 51, 94, 33, 66,202,243,118,114,114,130,131,152, 15,147,217,104,178,191,
-139, 2, 5, 5, 26, 42,188,195, 86, 22, 61,225, 55,180,113, 40,227, 51, 90,217, 13,129, 56,251, 69,174, 95,185,118,203, 8, 63,
- 31, 47,236, 57,121, 7,235,215,252,136, 26, 13,122,227,194, 31,235,225, 92,189, 57,228, 65,173, 33,118,220, 49,150,199, 23, 68,
-125,248,201, 23, 3, 27, 53,105,129,139,231, 79, 33, 43, 35,125, 37,165,143,236,138,104,240,133,228,227,142, 93,250,192, 96,178,
-161, 77,167,222, 56,114, 96,207, 71, 40, 26, 60, 97,255,205,235,133,250, 25, 60,235,228, 73, 31, 11,179, 84, 38, 97,142,202,132,
-148, 28, 61, 18, 51,180,216,251,251,175,212,254,250,194,212,164,109,189, 0,225,216, 69,167, 82, 2, 3,124,141, 66,163, 94, 26,
-251, 36, 62,252,189,209,163,132, 53,106,133,243,178, 84, 70,100,171,140,200, 81, 25, 81, 96,176,162, 86, 64, 40,207, 98, 37, 45,
-170,122,158, 61,156,197,194, 21, 7,158,194, 73, 46, 68,203,240,151, 31, 56,203,113,220,127,204,213,146, 66,115,117,231,169, 10,
- 18, 17, 31, 18, 17, 15, 18, 17, 31, 86, 27,181,235,129, 69,234, 85,187,231, 7, 31, 78,240, 51, 89,129, 92,149, 9, 2, 62,129,
-151,135,171,188, 73,253,225, 88,183,248, 35, 0,192,152,207,127,198,123,239,140, 68,157,186, 81, 80,230,231,251, 12, 31,212,115,
- 9,128, 61,246,166,245,208,177, 51, 65,199,206, 69,127,254,193,212, 89,138, 33,125, 58,240,111,197,171,144,158,103,196,147, 88,
- 77,149, 34,109, 0, 96,181,113,160,160,216,176,237, 32,164, 98, 1,178, 85,102, 80, 74,241,205,143,219,225, 40, 21, 34, 61,191,
-176, 89,191,146, 58,158, 84,242,125,239, 63, 21, 63, 41,220, 63, 27,255,233,167, 85,105, 4,107,193,130, 5,247, 23, 44, 88, 80,
-102, 68,172, 82,131, 85,145,185,114,113,245,189,184,127,219, 26,183, 61,209, 38, 92,217,113, 3,189,154,249, 66, 36,224, 65,230,
-236,137,219, 79,181, 56,122,228, 55,229,161,253, 59,159,229, 9,117,223, 85,106,174,124,195, 26,202,165, 78, 39, 86,172,222,104,
-245,240,242,194,230,243,121,169,249, 90,171,229, 63,205, 83, 22,114,227,232,234, 26, 86,206,210, 93,159, 17, 87,233,227, 44, 71,
- 33, 90,240,203, 62, 0, 20, 28,199,129,114, 28,132, 14, 10,185,103,205, 22,153, 69, 21,156,131,128, 71, 12,165,175,124,202, 89,
- 83,179,227, 43, 14,119, 18, 0, 78, 50, 33,182,157,125, 6, 0,153,124,205,205,135,111, 14, 41,108, 22, 52,152, 28,212,117,107,
-214,164, 77,154, 52, 81, 74,165,210,151, 62,201, 85,109, 22,180,171,224, 60,121, 98, 2,176,200, 47,172,205,128,110,138,122, 77,
-197, 60, 17, 26,133,249,226,244,209,189,244,202,145,117, 99,116,153, 49, 27,237, 44,128, 40, 48, 88,144,150,107,192,179, 92, 3,
- 50,242, 13,200,200, 51, 34, 35,223, 0, 66, 8, 12, 38,235,159,186, 97,105,179, 98,118,108,222,184,182,175,209,140, 97,109,187,
- 14,192,228, 89, 43,130, 55,175, 92,120, 66,234, 29,222,202,158, 14,180,148, 82, 27, 33, 36,113,244,232,209,245,127,251,237, 55,
-126,100,100,164,254,225,195,135, 50, 0, 28, 0,179, 66, 33,147,254,250,211,130,163, 77,155, 54,253,253, 89,236,163, 83, 0,242,
-237, 25, 73, 85,173,253,104, 73,184, 83,222,216, 32,121,203,110, 33, 62, 50, 4,201, 53,221,194, 21,183,191,243,234,244,201,252,
-172,147, 75,179,210,141,214,227,217,122,126,131,103, 5, 66,187,250, 2, 90,140,134,164,129,131,134,130, 79,120, 48, 27,116, 73,
-197,133,203,203, 89,140,217, 91, 30, 65,225, 32,132,163, 84, 0,133, 84,136,214, 17,110,168, 66, 61, 70, 45, 54, 14, 58,163, 13,
-122,163, 21, 6,147, 21, 30,129,174, 88,179,121, 7,146,179,244,216,119, 61, 7, 49, 73, 26,132, 6,200, 65,105,229,213, 35,103,
-179,104,251,188, 49,194,145,207, 35,224,243, 8, 47, 34,188, 54,242, 10,204, 16, 9,120, 16, 57, 72, 33,151, 8,224, 36, 21, 66,
- 36, 18, 34, 43, 43, 11, 70,163, 17, 65, 65, 65, 14, 21, 91, 64, 10, 71,133, 20,161, 53,252, 96,182, 88,113,232,220, 3,204,155,
- 52, 16, 93,218, 54, 6, 17, 42,240,200,216, 16,142,110,142,224,120, 60,152,173, 28, 76,102, 27, 0, 94,185,209,182,160,160,160,
-142,114,185, 92,174,211,233, 52, 73, 73, 73,103,210, 31,237, 78,246,170,219,127,236,145, 99,167, 54,247,238,209, 5,209,119,238,
- 99,231,158,253,231,115,220, 85, 83,139,247,137,140,140,108,238,225,225,161,200,205,205, 85,223,189,123,247,218, 75, 62,237, 18,
-185,119,248, 39, 45, 90,183, 71,129, 50, 11,153, 41, 9,118, 63, 53,215, 9,118,196, 87, 11, 86, 52, 10,171, 29,214,200, 70, 11,
- 13, 87, 68,144, 35,166,204, 90,222,168,102,104,237, 70,197, 3, 61,234, 4, 85, 60,173,154,220, 59,108,194,188, 31,126,121, 43,
- 40, 48, 16,135, 47, 62,194,130, 25,227,163,229, 50,199,234, 1,222,174, 46,162,186,141,113,235,214, 37,120, 65, 12, 39,239,208,
-128, 97,125,199, 5,116,235,209, 23,119,111,223,192,210, 69, 95, 95,214,242,165,243,237, 73,171,194, 59,196,179, 65,147,182,111,
- 58,186,121, 67,169,210,192,209,213, 11,117,234, 53,121, 83,225, 29,242,121,209, 98,245, 47,103, 54, 40,133,209, 76,145,175, 49,
- 35, 57,187,208, 92, 37,100,234,192,113, 85,232,243, 99,227,136,194, 65, 32,112,179, 60, 14,186,123,226, 20, 13, 14,244, 38,139,
-190,254,148,111,134, 3,178,149,133,230, 42, 91,109, 66,182,202,132, 2,131, 5,110,114, 1, 56, 27, 87,229,167,237,252, 2, 51,
- 28,139,250,201,218,184,151,239,243,253,203,250,109, 97,183, 99,211,250,255,240,195, 82,217,173,167,165,204,149,176, 48,122, 37,
- 17,241, 97,227,184,162, 59, 77, 37,230, 94, 32,252,184, 95,207,206, 72,201,209, 23,141, 68, 38, 8,141,106, 10, 15, 41,135, 78,
- 67,167, 1, 0,250,244, 44,236,103,252, 52, 93,139, 3, 87,178,129,231, 59,108, 87, 92, 23,235,245,252,213, 91,254,248,100,199,
-246,223,157, 13, 54, 1, 86, 29, 78,132,206,104,133,131,136, 15,137,136, 15,169,136,255, 92,151,160,202, 13, 86, 97,159,186,228,
- 28, 11,116, 6, 3,212,122, 11, 40,128,107,143, 11,160, 55, 89,161,210, 90,208, 60,220,245,207, 62,243,252, 1,160,215,139, 70,
-232, 69,147, 84, 42, 2, 85, 22,215, 75,107, 20,111, 95,158,129, 43,221, 39, 11,128, 93, 15,130,130, 23,157, 98,233,255, 29,253,
- 66,107,187,184,248, 94,220,255,251, 26,183,221,209, 70,156,190,157,139, 65,109, 2,160, 83,101, 96,225,130,207,242, 8,168,137,
-199,231, 41,141, 6,253,238, 92,153,121, 30,125,240,196, 92, 97, 37,225, 25, 81, 79, 42,147,157,250,118,233, 42,179,151,183, 63,
-183,251,138, 50, 75,165,179, 61, 23, 43,180, 25,141, 60,202, 81,145, 61,230,170,168,105,195, 60,235,163, 1,224, 40,197,236,165,
- 59, 48,127,234, 80, 40,164, 35,100,132, 16,153,214, 96,197,164, 57,107,241,253, 87,239, 58,202, 36, 2, 16, 2, 24, 76, 54,188,
- 53,108,128,125, 5,207, 96,197,147,171,191, 21,104,158, 30,124, 88,186, 89,176, 89,235, 30, 55,154, 53,107,166,116,117,117,133,
- 84, 42,253, 79,100,194,206,202,186,172,209,130, 89, 74,164, 58, 58, 58,182,115,114,114, 42,173,167, 85, 42,149,123, 95,166,244,
-105,148, 57,167, 50, 18,239, 54,109,213,161, 15,206, 28,221, 75,175, 28,254,117, 76, 85,230,216,113,117,115, 77,185,121,247, 73,
- 29, 66,220, 10, 35, 88, 69,230,202,100,225, 16,236, 45, 67, 74,226, 19,184, 56, 59,167,216,171, 39,243, 10,239, 71,120,116, 60,
- 1, 93, 87,144, 17,187,163,200,236, 12,151,251,132,223,185,127,239,214,188,222,111,126, 44,232, 58,104, 2,127,229,130, 15,191,
-192, 11,157, 83, 43,192, 28, 19, 19,243,224,221,119,223,109,121,249,242,101, 27, 0, 29, 33,196,194,231,243,101, 38,147, 73,212,
-161, 67, 7,213,163, 71,143,206,194,142,206,136,109,222,217,233, 65, 36,154, 30, 53, 67,155, 12, 15,118,212,116,233,208,166, 5,
- 90,212, 13, 68, 74,155, 22, 0,240,113, 82,129, 34,172,245,251,191,110,171,225, 25,112,104,229,250, 3,243,199, 12,237, 60,201,
-175,207,156, 31,210, 14,204,170,176,131,105,242,131, 51,221,202,178,239,133,205,134, 66, 40,164, 2, 56, 74,133,112,116, 16,194,
- 98,165, 85,121, 82,164, 22, 43, 87, 24,193, 50, 89, 81,160,183,226,212,173, 76,100,168, 76, 80,106,204,208,155,109,160,160,133,
- 79,159,118,212,226, 89,113, 23, 92, 74,206,125,112, 35,213,234, 31, 23, 59,237,186,144, 90, 50, 66,207, 89, 38,134,163,172,112,
- 84,245,185,115,231,224,238, 94,249,211, 61,199,113,216,121,228, 26,126,216,112, 10, 71,214,125, 6, 7, 17, 31,245,250,205,193,
-219,253,155,129,163, 28,158,196,220,207, 12,141,168,239,205,227, 73,193, 35, 4, 70, 11, 7,128,150,123, 60, 77, 38,147,123,114,
-114,178,186, 86,173, 90, 62,254,254,254,131,248,124, 62,149, 0,198,189,191,231,233, 78, 30,220, 42,211,234,141, 54,153, 85,181,
-174, 86,186,190, 87,104,104, 40, 8, 33,212,195,195, 67,116,234,212,169,130,168,168, 40,207,151, 52, 87, 60,169, 87,237,101,239,
-189,255,201,160,154, 33, 33,216,177,117, 29, 40, 37,187,236,221,127,203,129,203,248,122,250,243, 35, 6,167,204, 90,222,232,251,
- 57, 31, 63,247,217,251,211,127,104, 84, 81,157, 17, 16,217,241,179,240,240, 8, 92,190,159,138, 69, 95,190, 31,109,200,122, 58,
-220,164,112, 31,103, 46, 72,159,220,160, 97, 99,248,184, 59, 33, 45,207,136,190, 35,250,163, 85,235, 54,184,123,251, 6,190,254,
-234,211,203,208,153,186,210,236, 7,122,123,210,202, 81,225,248, 14,221,250, 11,245, 70, 51,150, 47,154,137,113, 83,231,161,121,
-199, 62,194,123,183,174,140, 7, 48,215,222, 60, 27,205, 54,116,136,242, 40, 52,205, 22, 14,251,159,242, 5,101,149, 64, 1,159,
-240, 26,132,184, 64,111,178, 66,173,179, 84,124,163, 18, 9, 51,148, 42,117,181,159,230,127,194,215, 26,172,200, 86,153,144,165,
- 50, 34, 71,249, 31, 99,149,163, 50, 34, 91,101,130, 80, 64, 16, 27,159, 4,158, 80, 80,229,254,119,249, 5, 22, 52,173,237, 90,
-120,141,190,100,107,136, 69,224,212,236,200,217,219, 3,127,248, 97,137,195,237, 4, 13,238, 60, 85, 23, 69,174,248,144, 8,121,
- 16, 23,189,183,113, 64,101, 63,225,236, 85,179,198,168,119,199,116,114, 82, 72,145, 22,151, 5, 1,159,128,207, 39,112,246, 10,
-132,179,196,128, 15,223, 31, 11, 15,119, 23, 36,231, 24,177,108, 79, 44,238, 60,120, 12, 78, 95,181,108, 47, 95,245,123,247,247,
- 62,152,226,194, 19,138,177,233,104, 66, 97, 58,249, 54, 60,186,114,192,144,246,228,174,182, 64,157, 75, 65,109,118, 62,248, 19,
-106,181, 21, 26,211,249,179,167,225,247, 13, 63,227,232,205,172,146,206, 89, 23,118,125,143, 79,166,127,131, 28,181,169,168,232,
- 87, 28,185,122,225,255,236, 82,145,167,255,250,191,148, 41, 42,235,127, 82,244,191,169, 28, 13,211, 11,166,202,244,194,231,166,
- 23,244,236,154,187, 79, 80, 81,228,202,217,213,231,226,190,109,171,221,118,223, 52,225,204,157, 66,115,101, 53, 42,241,203,162,
-233,233, 58,165,186,109, 69, 19, 54,254,151,185,242,170, 29, 41,145,203,207,126,249,205, 50,163,183,127, 53,235,161, 91,234, 92,
-141,193,246, 95, 97, 16,145, 76,110,147, 59,123, 26, 92,130, 27,254, 32,212,155,102,102,103, 63,208, 86, 22,105,226, 40,197,193,
-171, 25,160,180,240,145,104,251,185,103, 40,122, 18,135,141, 43,108, 62, 57,126, 43, 11,130,162,126, 38,246,134,185,127, 89,245,
-179,186, 87,148, 74,251,230,252,217, 37,205,130,205,235, 23, 70,174,156,156,156,224,226,226, 2,133, 66, 1,123,154, 8,139, 41,
-111,180,160,163,163, 99,187, 91,183,110, 57, 56, 57, 57,129,207,231,195,104, 52,162,110,221,186, 47,117,129, 43,124,194, 63,104,
-218,113,192, 23,173, 59,246,193,169, 35,187,233,149, 35,235,199, 86,117, 2,195, 94,157, 91, 30,248,250,235,217, 53,190,156,247,
-147,196,209, 65,128,135, 5, 38,240, 8, 65,176,183, 12,238,114, 30,206,236,221,100, 24,218,167,165,221,147,218, 5, 6,250,111,
-254,254,199,213,242,239, 23,206,233,224,232, 31,118, 74,243, 44, 38, 15, 0,180, 25,143, 22,201,124,194, 31, 4, 92, 58,118,168,
-126,187, 1,240,246, 11,233, 82,133, 48, 47, 37,132,232,226,227,227,159,126,249,229,151, 97, 11, 23, 46,164,124, 62,159, 3, 32,
- 89,186,116,169, 46, 46, 46,238, 22, 10,135,216,162,178,232, 85,167, 46,117, 39, 41,196,182,230,110, 50, 94,221, 16, 31, 25, 90,
-212, 45,108,253, 28,218,171, 53, 2,131,130, 16,159,161,107,144,167,227,132, 5, 38,126,200,138, 85,119,174, 87,247,224,143,177,
-234, 77, 15, 80,201, 36,176,229,149,217,226,142,239,197,209, 43, 71,169, 16, 28, 80,149, 39, 69,106,177,114, 48,154,109,208, 27,
-109,208,155,172,208,154,108,208,153,108,224,104,225, 53, 65, 8,129,217,202,193,174,199,228, 23,202,190,147,155, 7, 66,170, 23,
-142,122,117,148, 22, 78,217,224, 36, 19, 22,142,117,118,119,135,151,151,151, 93, 81, 80,147,185,240, 18, 55, 89,184,146,230,123,
-147,217, 10, 74, 41, 98, 99, 99, 62, 75,124,250,180, 95,173,208, 90,109, 35,234,213,119,147, 73,120, 0, 80,174, 25,208,233,116,
- 54, 71, 71, 71, 47, 55, 55, 55,222,179,103,207, 74, 76,115,173, 6, 29,172,123,118,239,194,192,129, 3, 10, 30, 94,187, 93, 50,
- 84, 93,175,215,147, 86,173, 90, 57, 5, 6, 6,242,140, 70,163,186,106,199,128, 16,185,103,237,254,129,225, 45,231,189, 53,122,
- 92,237, 14,157,187,227,244,201, 99,216,183,251,183,141,218,172,152, 99,118, 95,239, 97,225,255, 53,138,176,102,104,237,255, 26,
- 69, 88,173, 70,104,185, 6,203,217,185,158, 83,189, 38,237, 3, 19,115,204, 56,124,248, 16,180,170,140,175, 76,166, 2, 29,132,
-116,237,193,223, 86,188,251,222, 39,115,156,218,183,107, 3, 87, 39, 25, 4, 2, 62,110, 94,191,140,133,115,191,184, 12,157,169,
-107,101,245,103, 73,126, 35, 34, 68,181,130,170, 77, 12,170, 25,137,155, 87,206,227, 73,236,189,251,183,175, 95,174, 91, 43,170,
- 57, 60,253,130, 39,146,136,136,133,244,193, 3,115,101, 58, 38,131, 33,233,237, 81, 35, 81,122, 20, 97,139,134, 97,238,228,197,
- 11, 0,128, 78,147,101,254,117,241,164,184,226, 81,132,156,217,148, 84,158,174, 42, 63,123,231,153,139, 87,167,246,235,213,157,
-151,163, 54, 21, 70,172, 84,166,162,151, 17, 57,197,239,213, 70,132,250, 41, 16,115,255, 38,103, 80,229,236,170,226,117,105,120,
-123,112,183, 7,197,101,151,227, 40, 8, 96,168,234,245, 77,133, 78, 99, 23,125,247,131,195,237,167, 5,184,147,160, 46,108, 18,
- 20,242, 11,141,149,144, 87, 98,182, 10, 71,167, 87, 18, 13, 34,252,249,239,140, 26,134, 28,181, 25, 28, 7, 8,248,188,162,151,
- 8,201, 26,130, 20,141, 14, 57,249,217,120,154,152, 4,101,198, 19,240,120, 60,120,248,213,134,189,225, 70, 27, 21,251,234, 76,
- 52,106, 80,175,182,130,221,151,210, 33,147, 8, 96,212,100,226,240,182,197,217,198, 2,245, 60,189,174, 96,183, 62, 55, 46,205,
-222,188,243, 8,201, 86, 23, 24,188, 37, 66, 62,118,108,248, 9,131,223,126,191,232,160, 20,254,249,108,198,215, 0,143, 32, 47,
- 95, 3, 66, 72, 85,163,162,215, 43,249,255,101,120, 21, 26, 85, 55, 88, 50,153,251,137,125,191,175,118,187,244,148,135,107, 49,
-249, 24,212, 38, 0, 22, 67, 62,150,125, 51, 57, 67,173,206,234,168,201,142,139,175,210, 47,241,120,221,134,190, 51,245,126, 72,
-237, 8,227,233,123, 5, 9, 74,173,165,220,126, 12, 45, 6,125,121,255,198, 31, 63,246, 84, 89,226, 39, 40,252,234,218, 56,171,
-117,145, 46, 43,102, 78, 57, 77,132,226, 57,203,118,148, 52, 15,126,190,112, 83,225,123,155, 13, 54,202,129,114,192,135, 95,253,
- 2, 43,103, 3,103,179,129,179, 81, 88,108, 84, 86, 89,114,189,252,170,237,206,127,180, 61,252,205,185,255,221, 44,232,226,226,
- 2,119,119,119,184,187,187,163,216, 16,253,217,102, 65, 39, 39, 39, 40, 20, 10,156, 63,127, 30, 82,169, 20,114,185,188, 74,186,
-165,204,213,132, 38,237,251,253,212,177,239,187, 56,190,123, 21,189,126,238,192, 56, 93,102,204, 90,187, 35,241, 54, 27,177, 88,
- 44,232,213,181,125, 82,244,253,199, 71,102, 76, 29,223,189,101,239,113,146, 22, 97,254, 48,152,108, 72, 77,124,130, 51,123,215,
- 27,106,215,240, 61,218,169, 77,179, 36,139,197, 2,155,205, 86,233, 13,220, 96, 50,231,240,133, 82,249,176, 97,111, 10,175, 95,
-187,182, 75,225, 85,123,135,141,240,110, 19,202,213, 35,132, 12,172, 87,175, 14,204, 22, 14, 58,157, 58,191,170,121,214,104, 52,
- 79,215,173, 91, 87, 99,212,168, 81,178,136,136, 8,225,147, 39, 79,240,253,247,223,231,106, 52,154,167,246,106, 28, 59, 23,179,
- 84, 64,242,227,196,156,121,120,176,163,166, 75,114,235, 22, 24,214,187, 53,126,255,227, 2,206,156,191,140,164, 2,197,173, 2,
-171, 96,111, 74, 82,154,177,174,155,122, 87,223, 22,213,248, 59, 54,228,239,242,234, 48,125, 8,165,146, 99,217,103,102,105,237,
-191,121, 3, 26,189, 5, 78,178,194,249,154,138, 35, 89,124, 66,236,118, 66, 4,120,122,254,242,205,200,198,161, 17,136,126,170,
- 66,150,210, 8,189,209, 10,142,163,224, 64,225,238, 40,134,131,136,135,228,196,167,224,168, 57,161,138,183,136,236,118,109,219,
- 9, 0, 2, 66,168, 64, 40, 16,128,162,112, 94, 68,169, 84, 90,224,229,229,101, 87, 4,203,108,181, 98, 96,247,102,104,222,164,
- 30,250,141, 91, 12, 0, 56,185,113, 26, 92, 21, 66,252,190,121, 45,146,207, 46,217, 28,210,242,253, 99,247,238,222,127,227,126,
-244,165, 55,123, 52,146, 54,240, 17,164,137,202,211, 43, 40, 40,216, 69, 8, 17,139, 68,162,238,109,219,182,117,219,181,107,151,
-210,195,195,131, 19,139, 68,217,125,251,244,230,132, 34, 81, 94,241,182, 23, 47, 94, 20,142, 27, 55,206, 49, 63, 63, 63, 57, 51,
- 51,243, 50,165,212, 82,241, 3, 96,120,103,240,240, 27, 8,113, 80, 72,101, 73, 45, 58, 15,243,107,210,188,153,115,255,129,131,
- 33, 17, 75,112,252,216, 17, 44, 95,178,112,123, 65,250,195,119,170,114, 36, 95,197, 40, 66,149,202, 89, 27,247,224,118,126, 66,
-150,201, 85,232, 18, 10,161,196,113, 28,113,246, 91,198,151, 40,102,121,214,239,239,180,115,255, 33,220,189,119, 15,110, 82, 11,
-226,159,196,233,238,221,138,254, 89, 71,132,115,104,246, 3,157,189,233,148,229,218,222,104, 49,178,187,171,209,108,195,185, 83,
-127, 24, 56, 43,215,253,242,217, 67, 79, 2,106, 55,113,136,108,210,201, 53,103,223,218,129, 0,126,175, 76, 39,245,225,127, 71,
-108,131,194,154, 38,156, 60,117,194,217, 59,184, 46,159,128,192,108, 52, 32, 59,254,186, 85,151,249, 72,173, 74,189,107,215,168,
-218,220, 20,124, 53,125,214,183, 19,154, 52,110, 44,167,112,120, 46, 98, 85,108,172,114,212, 38,120, 56,138,161, 87,103, 35,238,
-250, 17,131, 46,155, 95,225,124,101, 86,147, 86,150,147,149, 89,210,148, 86,144, 25,211,188,162,237,115,178, 50,197, 86,147, 86,
- 86,249,173,142, 15, 39,185, 24,119, 19,158,149,116,104,151, 8, 11,251, 94,137,133,252,146,126, 88,197,117, 65, 37,180, 23, 57,
-184,224, 89,174, 1, 4, 20,156,205, 10,171,197, 4,141, 90,141,103,105, 25,200,204,200,132, 70,163,132, 76,225,138,200, 6, 77,
-225, 40,119,192,237, 51,219, 65, 41,181,107, 94, 66, 11, 17,134, 53,105,222, 70,114, 47,177,176,175,149,131,144,226,192,111, 11,
-115, 11,212, 89,109, 52,105,177,113, 85,173,139,173, 54,219,137, 59, 15,226,234, 6,248, 86, 39,183,158,168,176,121,205,143, 48,
- 21, 69, 50, 45, 22, 27,238, 37,107,145,158,167, 67,114,252, 67,202,217,108, 39,240,154, 83,174,193, 18,137,133, 82, 39, 55, 63,
-124, 61,124, 4,126,254,249, 23, 36,164, 60,195,242,175, 39,101,168, 53,217, 29, 52,105,113,177,118, 62, 5,118, 46,158, 43, 67,
-155,241,104,209, 59, 63, 39,164,238,143,206,227,233, 77,180,194, 14, 60, 14,158,193,104,243,206,247, 71,245,154, 60,177,205,168,
- 19, 28,216,252,206,111,101,105, 22, 58,102,152,230, 77, 25, 10,133, 84, 0, 66, 8,138,155, 5, 87,124, 61, 22, 50, 73, 97,219,
-177,222,104,197,136, 73, 63, 96,243, 15,147, 65, 1, 12, 31,124, 65, 87, 94, 58, 75, 53,225, 5, 36, 37,102, 61,235,220,103,202,
- 73,131, 89, 98,236, 61, 96,212,141,198,141, 27, 43,165, 82, 41,164, 82, 41,156,156,156,224,234,234, 10, 23, 23,151, 74,243, 94,
-238, 36,162,165, 70, 11,242,120, 60,240,120, 60,200,229,114, 40, 20, 10,200,229,242, 10, 53,203, 53, 87,237,250,174,232,212,239,
- 61, 28,223,189,154, 94, 63,119, 96,188, 46, 51,102,141,189,231,168,168, 89,231,246,192,129, 3,163,198,141, 27, 39,154, 53,117,
-220,209, 63,142,157,137,221,113,112,117,159,252,124,101, 32,165, 20, 46,206,206, 41, 67,251,180, 60,208,161, 85,147,164,147, 39,
- 79,114,191,253,246,155,145, 16,114,183,178,116,230,100,101,109, 60,121,226,212,236, 54,237,218, 99,237,134,223,218,221,127,240,
-176,221,147, 39,113, 8, 12, 14, 65,245, 26,161,208, 17, 87,156, 58,123, 30, 5,202,172,141,246,164,243,133, 40, 22,201,207,207,
-191, 52,116,232,208,174, 23, 46, 92,224, 13, 29, 58, 84,151,147,147,115,177,248,185,169,188,232, 85,105,205, 75,191,244,207, 6,
-176,177, 90,251,209,219,159,153,149, 19, 1, 44, 12, 10, 14,194,153,243,151,113,249,194,213, 95,114,100, 65,115,222, 25, 49,122,
-108,181,190,252,247,250,182,168,198,247,114,149, 97,235,234,239,249,251, 47, 39,254,144,152,107, 91, 11,224,107,123,206, 81,201,
- 13, 67, 99, 70,171, 58,110,176,216, 40, 56, 90, 88,209, 58, 58, 8,203,172,112,203,210, 20,152, 36,239,140, 31, 55,238, 73,100,
-189, 6,159,140, 24, 61, 94,212, 32, 36, 16,215, 30, 43, 1, 66,224,230, 35, 71,122,122, 58,206,237, 92,109,205,127,246,232, 23,
- 62,159,155, 91,149,178,148,151, 24, 93,171,212,118, 99,115,114,114,112,230,204, 25, 20, 27, 43, 79, 79,207, 50, 13,214,139,154,
-185,153,105, 23,191,254,110, 85,171, 49,111, 13, 64,239,246,117,113,246,250, 19,152,138,230, 91, 42, 30, 18,254,244,242, 74,241,
-196,161, 33,166, 9, 3,107,171,245, 22,113,226, 87, 9,170,115,165, 71,185,190,168, 73, 41, 53, 17, 66,246,199,196,196,180,174,
- 95,191,126,181, 67,135, 14,229,221,191,122,244,227,210,233,152, 50,101,138,226,231,159,127,150, 81, 74, 47, 26,141,198,120,187,
-242,206,195,214,155, 55,110,184,155, 45, 28,206, 95,189, 93,167, 83,171, 6,224, 40,112,253,250,117,172,253,117,173,225,238,157,
- 91,139,181,153, 62,115,203, 27, 32, 82,222,241,180,253,137, 81,132,197,154,148,158,177, 42,188,195,127,185,120,254,236, 12,137,
- 95, 99,132,247,252,162,239,179,219,251,251,250, 68,116,131, 71, 72, 75,164,221,217,143,139, 71,183, 28,226,172,214,105, 14, 28,
- 47, 73,155,253, 72,107,239,245, 94,140, 68, 42,251, 40,162, 81, 59, 36, 39, 37, 34, 33,238,222, 70,125,110, 92,154,194, 39,124,
- 99, 90,106,210,248, 26,117, 91,225,194,209,223, 63, 46,207, 96, 85, 86,230, 3, 61,165,171, 15, 29,220, 63, 44, 53,117,165,143,
- 86,111,144, 80, 74, 13, 18,177, 32, 67,193,211,108,179, 55,157,148, 62, 48,203,221,170, 15, 28, 60, 98,252, 31,203,151, 47, 17,
-122,187,200,144,145,111,128, 90,111,134, 70,103, 6,143, 16,212,242,147, 67,167,201,195,217,157,223, 89, 76, 5,249, 67, 41,125,
-108, 46, 79,179,112, 61, 65,250,225,148,247, 79, 67,236, 28,232, 87,163,211, 23, 21, 70,231, 52,105,119,250, 76,121,255, 64, 24,
-165,180,147,194, 59, 92, 83,144,249,232,203,242,242, 78, 72,225,245,253,102,135, 64,152,173,133,243,135, 89, 57,192,198,113, 69,
- 81, 61,128,150,180,219,147, 74,242, 78,184,109,127, 92, 68, 90,166, 18,122,147, 5, 70,147, 21,102,139, 13, 60, 62, 31, 46,174,
- 46, 8,173,222, 16,206, 46, 78,200,204, 72,195,229,147,251, 17,123,231,236, 69, 66, 49, 71,151, 21,123,210,158,115, 36,146,186,
-132,249,250,249,240,210,213, 38, 72,197,124,220, 58,123,200,108, 49, 25, 23,219, 99,174,202,210, 84,230,230,253,240,201,212, 79,
-135,175, 95,183,193, 39,170,134, 19, 82,115,244, 72,205, 54, 64, 99,176, 20, 25, 48, 14,198,130, 28,220, 57,181, 33,195,102,208,
-252,240,175, 53, 88,156,213,102,138,121, 28,143,105,115,190, 67,124, 98, 18,150, 47,248, 52,179,160, 10,230,170, 44,214, 77,168,
-254,123,213,246, 40,154,146,100,110, 98,197,207,219, 47, 54, 11, 82, 14, 28,165, 56,112, 53,163,164, 89,144, 43,234, 81, 25,253,
- 68, 89,165, 38,188, 59, 49,154, 45,122,125,166,243,163,199,139,243, 1,128,207,231,151,188,138,251, 74, 25, 12, 6,211,203, 52,
- 11,190,216,161,157,227, 56, 56, 57, 57, 65, 42,149, 86,185,233, 81,238, 29, 54,172, 73,251,126, 63,117,234, 63, 6, 39,246,172,
-161,215,207,238,127, 95,151, 21,179,186,202,125, 16,242,243,239, 19, 66,226, 22, 47, 94,220, 96,237,218,181, 53,166, 78,157, 26,
-191,233,167,217,203, 1, 32, 55, 55, 23, 0, 16, 29, 29, 77,223,127,255,125,163,193, 96,120,154,159,159,127,147, 82, 90,105,211,
-129, 62, 91, 54,127,237,138,133,145, 41,207,210, 7,132, 68, 54,133,103,141,166,240,169,213, 12,249, 26, 51,174, 61, 78, 67,252,
-195,147,120,120,126,231, 33,157,194, 58,187,170,105,174, 95,191,126, 32,143,199,171, 94, 80, 80,224, 19, 17, 17, 81, 95, 46,151,
- 71,215,175, 95,191,161, 64, 32, 72,189,113,227, 70, 98, 85,180, 18,207,172, 55, 86,107, 63,122, 89,146,198,177, 67,124,134,174,
- 97,146,198, 49, 90, 39,113,158,156,117,114,169,209,187,235,226, 31,168, 57,231,254,142, 13,234, 93, 91, 87,127,207, 31, 49,118,
-138,237,158,202,117,162, 64, 42, 62,190,224,237,168, 42, 52, 63,241,210, 39,140,234,247,159,105, 26,138, 34, 87, 69,239,237, 10,
-199, 43,149,183, 85, 0, 62,151,250,213,253,233,222,196,113, 95,215,107,210,106,100,219, 30, 67,121, 86,145, 2, 71,247,172,164,
- 79,239,156,218, 33,160,182, 25, 58, 59,102,239,175,180,217,199,100,170,212, 92,149, 25,121, 73,145,183,223,241,219,175,111,239,
-218,179,123, 65,255,190,253,220, 87,124, 53, 4,223,173,218, 11,185, 84, 2,202,113, 24,218, 49,104,208,195,223,186,245, 9,244,
-118,240,223,117, 58,245,220,135, 75,238,125,174,211,153, 99, 43, 27,229, 90,100,152,207, 59, 58, 58,102,183,110,221,186,185, 68,
- 34, 33, 57, 57, 57, 2, 47, 47, 47,171,179,179,179, 41, 53, 53, 85,103, 52, 26,119, 81, 74,181, 85,201,167,217,194, 33, 33,211,
-128,125,187,119,225,246,213,147,120,248, 48, 70,243,240,193,195, 31,137,128, 46, 41,200,136,205,123,153, 99,199,149, 57,138,144,
- 86,121, 20,161,150, 47,157, 31,125,240,187,246,161, 29, 63,110,225, 94,179, 21, 92,131, 11,199,232,168, 82,239, 33,229,250,142,
-125,154, 52,209, 96, 74,239, 89, 94,246, 28,251, 5,212, 8,165,124, 49, 46,157,249, 3,148,227,126, 1, 0,202,113,191, 68, 95,
- 56, 52,190, 89,207,247,224,230, 85,173,126,241,216,249,170,106,139, 4, 60,237,225, 93,235,247, 36, 36, 36,224,209,163, 71,120,
-252,248, 49,242,242,242,176,117,107, 66,149,206,143, 54, 47,225,184,194, 61,164,219, 27, 67,222, 60, 48,104,216, 91, 14, 53, 66,
-163,120, 97, 1,174,112, 87, 8, 16,243, 56, 17,177, 55,238,112, 49,215, 14, 25,204,234,172,254,186,188,132,114, 13,159,220, 51,
-194,155,240,232,180,226,181, 5, 91,180,104, 21,246,233,188, 5,205,221, 61,189,202,172,199,115,179,179,196,159,125,184, 63,236,
-242,149, 75,118,173, 69,200,217,108,185, 99,223, 30,202,241, 11, 23,242, 68, 73, 92,154, 20,158,236,194,135,168,194,207, 41,103,
-173, 52, 98, 63,122, 64, 27, 88, 57, 14, 90,189, 25,106,173, 17, 42,141, 1,233, 89,185,184,125,231, 14,206, 30,216,143, 39, 49,
-183,159, 90, 76,166, 99, 60, 30,217,169,203,136, 57, 91,181,150, 37, 65, 13,119, 55, 55, 60,205, 43,128,131, 88,128,196,216, 27,
- 70,173, 90,181,229,101,203,145, 46, 39, 54, 93,238, 29,214,117,232,208, 97, 71, 58,118,235,235,220,164,101,103,153,135,147, 11,
- 68, 2,138,184,132, 52,220,188,120, 68, 27,127,251,156,218, 98, 42,232,254, 42, 86,105,249,199, 26, 44,181, 38,187,195,187,239,
-140, 59,202, 19,240, 37,160,156, 65,167,203,239,254,103,204,213, 95, 5,165,182,212,183,135, 15,120,238, 89,192,202, 81,233,240,
-193, 71,245,165,159, 13, 44, 54, 42, 27, 62,248,162,174,176,226, 40,191,195, 94, 73, 19,222,239,199, 83,147,146,114,175,231,229,
- 25, 79,255,217,145,125,165,215, 22,172, 96,180,160, 54, 60, 60,188,196, 84,241,249,124,216,108, 54,187, 43, 32,145, 68, 58,166,
- 99,223,119,201,137,189,107,232,181, 51,123, 39,232,178, 98, 87,189,252, 49,165,102, 0, 87, 9, 33,247,102,204,152,209,196,219,
-219,219,123,230,204,153, 14,106,181, 90,184, 98,197, 10, 67, 78, 78, 78,134, 90,173,190, 76, 41,213,219,175,121,211, 2, 96,160,
-194,187,118, 7,186,107, 77, 23, 23, 15,255,174,206,158, 1, 53,149,217,207,158,170,178,211,142, 1, 56, 81, 52,193, 99,149,104,
-216,176, 97, 8,143,199, 27, 10, 32, 82, 46,151,215, 82, 40, 20, 18, 74,105, 56, 33,228, 62,199,113,119, 34, 34, 34, 14, 2,168,
-210,249, 75, 60,179,222,216,118,194,175,191,229,233, 56,145,137, 39,250, 45,241,204,122, 35, 0,100, 30,155,170, 3,176,207,187,
-195,180,129,251, 47, 39, 46,191,159,239,252,113,214,233,249,251,171,154,102,101,202,173, 90,175,170,252,235,211,238,167, 2,120,
- 91,238, 29,246,253,221,232,203,179, 8,133,208, 6,235, 55,186,204,184, 27,175, 66, 95, 40, 20, 26,252,253,253,203, 28, 45, 40,
-145, 72, 12, 21,159,243, 51, 86, 0,107, 9,105,191, 97,247,246, 13,111,239,221,191,111, 65,219, 78,253,221, 29, 2, 2, 80,221,
-139, 96,195,180, 70, 31,159,140,206,190,214,247,211,115, 63,199,167, 25,238, 80, 74,171,212,223, 69,163,209,196, 18, 66,242, 11,
- 10, 10,250, 81, 74, 83, 8, 33,129,249,249,249,183, 44, 22,203,221, 42, 27, 1, 14,111,182,104,209,116, 43, 33, 68, 64,173,220,
-162,203, 66,254,111,134,244,135,169, 47, 99, 40, 74, 19, 85,221, 9,147,102, 46,107, 84,179, 86,237, 70,197,107, 17,214,173,230,
-136,113,159,127,223,168, 90,141,208, 70,255, 89,159,176,226, 81,132, 52,237,166,158,120, 71,117,137, 57,182,248, 43,247, 39, 23,
- 39, 72,221, 2, 20,218,156,196,188,252,196, 27,139,117, 89,222,139, 95,102, 98,201,210, 36, 60,190,191,100,237,226,207,167,166,
- 63,123,186, 86,155, 21,123, 15, 0,180, 89,177,247,100,222,181,191,202,201, 72,157,154,155, 21,191,248,101,143,133, 86,171, 77,
-219,178,101,139, 75,171, 86,173,120,222,222,222,200,206,206,198,233,211,167, 57,142,227,158, 85, 85,171, 32, 55,254, 52, 33, 53,
-221, 54,174,250,105,145, 72,238,216,211,106,181,250, 81, 10, 8, 4,130,116,147, 78,125, 68,195,147,127, 74,243, 18, 42, 41,151,
- 28, 1,192, 43, 94, 91,144,227, 56,178,104,249,134, 68,161,131, 99,153, 77,170, 22,131, 70,198,113,156,221,107, 17,230, 39,221,
-168,249,170,174,111, 66,233,156,250,141,155,127, 97,177,152, 13, 40,236, 15,102, 0, 96,160, 20,185, 60, 30, 57,203,231, 44, 71,
- 85,127,226, 33,138, 16, 56, 81, 34,128,163, 84, 0, 2,130, 2, 85, 30,173, 74,159,171, 50,207,119,102,204,125, 66,218, 7, 31,
- 54,109, 31,117,234,248,161,193, 54,155,173,122, 81,201, 73, 48,234,181, 59, 10,210, 93, 55, 82,122,221,138,127, 1,228, 79,214,
- 31, 85, 14, 33,254,175,107,134,135,200,250, 5,248,123,143, 74, 72,204,186, 22,159,162,219, 88,122,249,155, 63,171,153,146,146,
-125, 58, 54, 81,187,166,244,242, 55,175, 42,239,114,175,176,174, 14,114,249,231, 6,189,118,147, 54, 35,102,195,171, 60,158,132,
- 16,103,137, 68,210, 80,161, 80, 8,115,114,114,174, 82, 74, 85,255, 75,231,189, 65,131, 6, 65, 60, 30,175, 58,199,113,222, 0,
-156, 81, 56,202, 35, 71, 32, 16, 60,187,113,227, 70,162, 61, 77,132, 47,210,230,157,157, 30,157,186,212,157,116,236, 92,204,210,
-162,230,195, 18, 2, 6, 47,113, 24,217,179,195,148,141,187,247,253,215, 40,194,127, 98,153,255,255,210, 36,164,189, 64,225,155,
-243, 54, 79,236,252, 77,167, 48,131, 46, 39,237,217,251,231,239,102, 95,165,148,106,254, 76, 58,197, 98,241, 8,179,217, 44, 21,
-137, 68,122,147,201,180,229,127, 37,239, 50,239,240,119,121,160,118,175, 36,193,129,220, 40, 61, 24,165,188,116,146,136, 8,145,
- 44, 27,174,186, 28,143,220,170, 26,171,191,231,188, 19,126, 84, 84, 84, 27,145, 72, 20,100,179,217,100, 38,147, 73,167,215,235,
- 19, 18, 19, 19, 47,149,183, 32,249, 95,157, 78,133,119,237, 37, 34,145,100, 34, 0,152,205,198,101, 5,153,177,147, 42,218,183,
-188,237,255,233,215,166,103,141, 38,113, 2,190,208, 19, 69, 19,106,115, 86,107,118, 70,252,181,208,191, 43,157,175, 29,180,104,
-121,132,191,226, 5,160, 51,211,100,154, 76,147,105,150,177, 45,143, 29, 79,166,249,119,106, 58,248,214, 9,116,240,173, 19,104,
-239,254,101,109,207,142, 39, 5,123,149,255, 18, 48,139,201, 96, 48,254,134, 7, 59,142, 29, 5,198,223,137, 62,237, 65,202, 95,
-185, 61,131, 65, 80,184, 42,117, 89, 21,160,221,161, 63, 66, 72,231,151,168, 96, 79, 48, 77,166,201, 52,153, 38,211,100,154, 76,
-243,223,165, 89,153,246,107,211,244,200,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,201,154, 8, 95,237,139, 7, 6,131,
-193, 96, 48, 24, 12,198, 43,133, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12,
- 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131,241,242, 16, 74, 41,138,150,152, 34, 0,158,123,207, 96, 48, 24, 12, 6,131,
-241,255, 98, 72, 94, 51, 47, 82, 98,176, 0,128, 82, 74,152,193, 98, 48, 24, 12, 6,131,241,119, 24,172,215,201,139, 60, 23,193,
- 42,157, 57,118,170, 25, 12, 6,131,193, 96,252,127, 26,172,215,201,139,176, 38, 66, 6,131,193, 96, 48, 24,255, 51, 6,235,117,
-241, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96,
- 48,152,193, 98, 48, 24, 12, 6,131,193,248,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,
-201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98,
- 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,151, 24, 77,
- 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, 0,157,153,
- 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 6,139,193, 96, 48,
- 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193, 96,
-188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, 73,134,152,
-201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, 6,131,193,
- 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88, 12, 6,131,193, 96,
- 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248, 55,240,151, 78, 52, 74, 8,233,204, 52,
-153, 38,211,100,154, 76,147,105, 50, 77,166,201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,
-176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148,
- 57, 18,128, 82,122,194,110,145,151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226,
- 63,254,167,161,148,254,101, 47, 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24,
- 12, 6,131,241,138, 97, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96,
- 48,152,193, 98, 48, 24, 12, 6,131,193, 96,188, 60,132, 82, 10, 66, 8, 45,250,191, 61,165,244, 44, 59, 44, 12, 6,131,193, 96,
- 48,254, 95, 13,201,107,230, 69, 74, 12, 22,165,148, 20,255,101,167,153,193, 96, 48, 24, 12,198,255,183,193,122,157,188, 8,239,
- 5,231,216,158,157, 98, 6,131,193, 96, 48, 24,127,151,201,122, 93,188,200,115, 17, 44,118,106, 25, 12, 6,131,193, 96,252, 93,
-230,234,117,242, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,
-131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105,
- 50, 77,166,201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,
-152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,
-151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47,
- 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 6,139,
-193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,
-131,193, 96,188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105,
- 73,134,152,201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12,
- 6,131,193, 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88,204,100,
- 49, 24, 12, 6,131,193, 96, 38,235, 47, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254,231,248,
- 75, 39, 26, 37,132,116,102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,139,193, 96, 48, 24, 12, 6,131,193, 12, 22,
-131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12,
- 6,131,193,248,155, 32, 0,202, 28, 9, 64, 41, 61, 97,183,200, 75,140, 38,168, 76,159,105, 50, 77,166,201, 52,153, 38,211,100,
-154,175,159,102,101,218, 85,241, 31,255,211, 80, 74,255,178, 23,128,206, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255,
-182, 23,107, 34,100, 48, 24, 12, 6,131,193,120,197, 8,202,250, 80,216,108, 94,166,213,106,245, 2, 0,129, 64,144,101,185,246,
-165,111, 69, 34, 66,160,147, 21, 88, 83, 36, 56,198, 66,233,241, 50, 52,143, 91,173, 86,215, 34,205,124,203,181, 47,187, 85,168,
-217,244,155,163,207,109,127,117, 70,151, 50,226,139,124, 97,211,111,210, 94, 72,171, 95, 21,194,119,182,255,143,116,254, 83, 52,
-255,205,136,154,207,203,180, 88, 10,203,145, 80, 40,200, 50, 95,173,184, 28,137,154,125,147,246,220,246, 87,102,120, 87,164, 41,
-147, 74,114,107,250,123,254, 80,145,102,124, 90,206,100,173,206,224, 94,145,102, 85,175,205, 64, 95,223, 78,182,162,107,147, 15,
-140, 73, 73, 75, 59,254,191, 84,150, 8, 33,141, 1,124, 9,192,169,212,199,119, 40,165,159,176, 82,201, 96, 48, 94, 59,131,101,
-181, 90,189,110,238,153, 5,173, 17,232,244,214, 55, 94, 33,253, 87,109,253,175,109, 12,249, 98,229,253,109, 81,124,139,218,213,
- 83, 96,118, 74, 75, 75, 35, 69, 21,230, 26, 0, 65,101,104,186,222,220, 51, 11, 58, 19,208,118,216, 28,215, 32,192, 41, 91, 36,
-154, 34,149,203, 59,232,245,250,186, 0, 32,149, 74,239,235,181,218,211,158,102,243,247, 47,110, 95, 94, 6, 74,167,181,227,200,
-111,188,194,251,175,250,216,198,113,226,103,215, 87,182, 53,228,196, 9,132, 86,227,138, 47,128,195,179, 0,155, 61, 7,228,185,
-223, 29, 60,221, 93, 8,116, 20, 59, 56,212,119,113,117,109,195, 81, 90,135,227, 56, 98,179, 90, 31,168, 85,170,243,156,213,122,
-219,106,210,186,223,220,191,128,171, 40,157, 47,230,101, 48, 32,216, 3, 12,146, 43, 20, 29,248, 66, 97, 75, 0,176, 89, 44,151,
-180, 5, 5,167, 7, 0, 59,237,201,187,189,199,231,101,183,255,183, 97,177, 88,189,158, 30,157, 5,163, 5,104,248,198, 2,175,
-122,111,110,220, 10, 0,166,172,219,222, 5,113,251,155, 1,128,188,102,239,171, 18,159,134,153, 0, 32, 72, 74,247,138, 61, 56,
- 3, 70, 11, 80,167,247, 28,175,202, 52, 71,207,220,238,254,217,216,129, 18, 0, 56,182,235,167,218,167,118,255,210, 3, 0, 58,
- 14,124,255,112,215, 55, 62,140, 5,128, 69,171,119,187,255,190, 96, 72,133,154,246, 93,155, 42,145, 42,238, 96, 45,147, 58,221,
- 37, 80, 46,240,137,139,139,227, 1,128,159,159,159, 93,215,102, 0,224,156, 14,124,192,227,243,219,212,172, 85,171, 33, 0, 26,
-255,228, 73,180,205,106,189,224, 11,172,120,197,101,233, 99, 74,105,159, 23, 76, 23, 43,144, 12, 6,227,245, 52, 88, 0,160, 53,
- 2,103, 31, 3,237,154,215,195,216, 55,123, 42, 74,127,183,115,213,156,160,184,235,251,194,127,221,248, 61,175, 94,189,122,120,
-250,244,169, 93, 63,166, 51, 1,103,226, 0, 40, 31, 58,230,203,229, 79,150,124,247,157, 83,151, 46, 93, 4,126,126,126, 32,132,
- 32, 35, 35,163,249,137, 19, 39, 26, 79,154, 52,105, 60,148, 15,243,117, 38,104,206,196, 85,174, 91,156,214,186,181,171,225,203,
- 15,135, 56, 3,192, 23,111,173,104,124, 61, 38,211,237,201,147, 39,157, 62,255,252,243, 92,254,233,211,191,120, 0,235, 51,129,
- 20,123,210,185,233,192, 85, 7,231,244,223, 66, 70,124,248,225,174, 90,181,106, 41,130,131,131,137,163,163, 35,248,124, 62,242,
-243,243,131,238,221,187,215,227,218,181,107,218, 19,103,215,136,111, 92,235, 27,159,229,208,204, 96, 87,222,245,105, 14,199, 28,
- 29,239,143, 28, 48, 32, 96,200,144, 33, 14, 53,107,214, 4, 0, 60,121,242, 36,116,231,206,157,195,118,237,218, 53, 19,250, 52,
-171,206, 4, 67,101,121, 47,209, 4,224, 0,180,116,241,242, 26,193, 23, 10,235, 90,173, 86,255,162,232,194, 51,155,197,114, 95,
-153,149,181,229,197,237, 25,255,141,209, 2, 60, 76, 7, 58,183,105,136,145, 3, 59,203, 1,224,243,161,243,154, 39, 37, 60, 22,
-153, 76, 38,212, 14,171,211,234,235, 5, 63, 28, 5,143,135,205,187, 79,148,108,111,143,230,157,135, 79, 49,235,235, 37, 72,187,
-187,179,185, 77,245,184,131, 70,173,226, 3,128,147,179,243,192,157,219,126, 59,237, 23, 53,232,202,227, 28,179, 93,154, 21, 93,
-155, 71,182,253,232,155,122,239,116,196,207,199,214, 9,131,130,130,112,247,238,221,170, 93,155,170, 24, 71,206,215,247,193,247,
-159,126,234,211,182,109, 91, 40, 20, 10, 8, 4, 2, 88,173,214,206, 23, 46, 92,232, 60,107,214,172,247,161,138,209,218,123,109,
-218,193,247,132,144, 14,163,199,126,236,219,179,223, 32, 12,236,222,138, 21, 68, 6,131,241,250, 26, 44,129, 64,144,213,101,212,
-124,175, 54,205, 34,113,253,118,172, 42, 49, 57,189,160,248,187,188,251, 59,107,247,107,229, 31,113,238,220, 89, 24,141, 70, 92,
-186,116, 9,183,111,223, 70, 66, 66, 2,198,141, 27,103, 20, 0, 99,202,209,204,111, 59,108,142, 43, 84,113,138, 80,113, 76,245,
- 19,143, 30,241, 13, 6, 3,206,157, 59,135,252,252,124,136,197, 98, 4, 4, 4,160,107,215,174,130, 71,143, 30,185,117,234,210,
-221,185,109,247,225, 79,225, 28, 90, 32, 16, 8,242,203,205,128, 64,144,213,233,173,111,188, 34, 66,171,225, 73, 98,154,234,203,
- 5,191, 22,112, 28, 21,196, 39, 36,153,207,158, 61,139,134, 13, 27,226,248,241,227,238,121,121,121, 95,173, 88,177,226, 75,225,
-183, 63, 47,179,152,114,167, 86,160,151,223,118,216, 28, 87,247,172, 29,193,167,142,236, 21,221,191,127, 95,180,114,229, 74,228,
-230,230, 66, 44, 22,195,197,197, 5, 62, 62, 62,168, 93,187, 54,249,226,139, 47, 20,189,123,223,199, 71, 99, 6, 5,155, 67,222,
-139, 41, 47,157, 37,121, 47, 72,146,121,168,143,213,220,253,199, 31,188,214,173, 91, 63,247,152, 94,163, 70, 13,116,235,214,205,
- 97,196,136, 17, 53,135, 12,123,147,107,219,107,244, 19, 40,130,117,149,106,106, 83,164,238,186,203,126,157,135, 13,219, 63,103,
-206, 28, 23, 31, 31, 31,200,229,114, 0,128, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 55,174,222,217, 38,104,219, 59, 37, 13,
-242, 64,125, 69,199,243,223,138, 80, 40,200, 42,142, 26, 57,202,165,249, 41,169,153, 90, 0, 48,153, 76, 48,153, 76, 48, 26,141,
-152,240,254, 56,254,152, 55,154,214, 10,110,243,241,173,132,103,153,121,117, 78, 92,113, 43,222,183, 50, 77,129, 46, 65,169, 76,
- 62, 57,102,214,167,159,250,120,123,255,167,229,111,243,166, 77,252,188,188,188,206,179,102,205,138,160,178,246,202, 58,189,231,
-184, 84,164, 89,209,181,169,140,253,163,250,215, 31,118,171,191,106,193, 65,216,108, 54, 92,190,124, 25,231,206,157,195, 15, 63,
-252, 64, 15, 31, 62,172,114,146,203, 43,185, 54, 99, 28, 91,251,102,132,124,251,237, 46, 34,145, 72,176,111,223, 62, 60,122,244,
- 8, 60, 30, 15,245,234,213,195,200,145, 35,209,185,115,103,159,177, 99,199,209,182,221,135,198,195, 57, 76,243,103,202, 18, 33,
-132, 7,224,227,233,179,190,245,125,235,189, 15,176,232,235, 47,152,193, 98, 48, 24,175, 15, 69,163, 1,104,209,171, 29,165, 20,
- 20,224,213,232,191,234,247, 29, 55,184, 63,106,244, 95,245, 59, 5,120, 20,224, 57, 1,213, 26, 52,104, 96, 81, 42,149,244,218,
-181,107,116,194,132, 9,218,101,203,150,157,254,227,143, 63,118, 90,205,230,181,126,190,190,139, 41,192, 43,179, 71, 61,192, 11,
- 6,156,101, 50, 89,118,114,114, 50, 61,116,232, 16,157, 61,123, 54,221,178,101, 11, 61,124,248, 48, 61,113,226, 4, 61,124,248,
- 48,253,253,247,223,233,157, 59,119,104,108,108, 44,149,203,229,217,193,128,115, 5,154,124, 10,240,107,247, 95, 57,117,215,117,
-203,156,176,254,171, 38, 81,128,239, 10,132, 55,104,208,192,182,115,231, 78,186,121,243,102,186,113,227, 70,122,231,206, 29,154,
-147,147, 67, 5, 18,121,118,241,126,229,165,147, 2, 60,127,127,255,108,165, 82, 73, 3, 3, 3,169, 88, 44,166,222,222,222,180,
-118,237,218,180,121,243,230,180, 71,143, 30,244,205, 55,223,164, 95,125,245, 21, 85, 42,149,212,193,193, 33,179,120,191,242, 52,
- 27, 2, 82,185, 92,158,124,243,230, 77, 90, 30,122,189,158,230,228,228,208,163, 71,143, 82,185, 92,158,220, 16,144, 86,164, 41,
- 5, 26, 69, 69, 69,101,231,228,228, 80,179,217, 76,147,147,147,233,189,123,247,232,163, 71,143,104,114,114, 50,213,235,245, 37,
-218,177,177,177, 52, 36, 36, 36, 91, 10, 52, 42, 87,243,223,252, 42, 46, 19, 47,188,130,188,189,123,248,248,248,232,119,237,218,
- 69,159, 61,123, 70, 55,108,216, 64,121,192,188,255,218,182, 2, 77, 49,208,181,117,235,214,182,203,151, 47,211, 91,183,110,209,
-105,211,166,209,110,221,186,209,238,221,187,211, 89,179,102,209,212,212, 84,154,154,154, 74,123,244,232, 97, 19, 3, 93, 43, 43,
-159,101, 93,155,206, 64, 80,239,222,189,245,102,179,153,198,199,199,211,186,117,235,166,242,129, 17,114, 32,162, 29, 32,169,172,
-124,250, 3,174,190,190,190,233,151, 47, 95,166,187,119,239,166,193,193,193,217,124, 96,180, 19, 80,195, 9,168,193, 7, 70,215,
-168, 81, 35,251,242,229,203, 52, 55, 55,151, 6, 5, 5,165,251, 3,174, 47, 91,150, 80, 56, 7,223,186,233,179,190,165, 49,169,
- 90, 58,125,214,183, 20, 64, 50, 45,252,242, 56, 43,147,236,197, 94,255,190,215,127,121,145,127,248, 75, 80,202,104, 17, 66, 8,
- 69,225,220, 88,101,162,231,243,231, 47, 90,180, 72, 96, 48, 24,240,235,175,191,106,134, 15, 29,186,219,197,197,197, 42, 20, 10,
- 65,120,149, 15, 72,204,150, 72, 38,126,183,104,145,139,201,100,194,141, 27, 55,208,184,113, 99, 72, 36, 18,136, 68, 34, 8,133,
- 66, 8,133, 66,248,250,250, 34, 43, 43, 11,117,235,214,197,103,159,125,230,188,112,254,252,137, 48, 26,191,174, 72,151,227,168,
- 0, 0,108, 28, 39, 22, 1, 99,235, 55,105,178,248,139, 47,190,224, 57, 57, 57,193, 96, 48,192,104, 52,226,209,163, 71,112,119,
-119,135, 76, 42, 19,192,168,173, 52,173, 60, 30,143,167, 80, 40,112,234,212, 41,172, 94,189, 26, 9, 9, 9, 72, 79, 79,135,163,
-163, 35,234,214,173,139, 58,117,234,160, 93,187,118,136,143,143, 7,177,163,211,200, 3,129,224,131, 9, 99,198,120, 53,108,216,
-176,204,239, 13, 6, 3,148, 74, 37, 84, 42, 21, 2, 2, 2, 48,104,208, 32,175,223, 54,111,254, 0, 86,235,247,101,109,239, 14,
-248, 4,132,134,238,191,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,
-142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14,186,103,101, 53,202, 5,210,216,227, 69,229, 36,101,
-102, 30,235, 10,120,140,120,243,205,195,183,239,220,105, 51, 98,196, 8,100,102,102,126, 33,156, 54, 77,105, 1,150, 84,182,127,
- 24,224,236,230,235,187,254,219,111,191,229,101,100,100, 96,202,148, 41, 57,105, 73, 73,211,156,129,243, 0,112,242,200,145, 54,
- 91,182,108, 89,184,121,243,102,143, 77,155, 54,241, 26, 54,108,184, 62, 44, 57,185,110, 12,160,170, 74, 58, 53,192,199, 75,151,
- 46,117, 48, 24, 12,232,210,165, 75,188, 67, 66, 66,125, 43,160,183,119,255,116,224,131, 31, 62,251,204, 71, 34,145, 96,202,148,
- 41, 57,186,164,164, 72, 43,144, 93,106,147, 68,207,167, 79,143,188,245,214, 91,247,238,220,185,227,177,100,201, 18,159, 55, 6,
- 12,248, 0,192,188, 42, 68,172, 74,119,104, 15, 29, 61,246, 99,239,134, 77, 91, 96,211,218, 21, 88, 48,231,243,245, 0, 86, 17,
- 66, 62, 4,240, 29, 43,121, 12,198,191, 54,232, 83,169, 23,249,199, 53, 17, 22,101,168,125, 69, 27,187,186,187, 55,142,140,140,
-196,185,115,231, 16, 21, 21,117,205,197,197,197, 42,146, 72, 32, 20, 10, 65, 57,174,210, 31,147,202,229,157, 58,119,238, 44,184,
-114,229, 10, 66, 66, 66, 32,149, 74, 75,140, 85,241, 75, 36, 18,193,215,215, 23,106,181, 26,157, 58,117, 18, 46, 95,190,188, 83,
-101, 6, 11, 0,146,226,238, 41,178,175,124,251,230,154, 13,235,107,180,109,219, 22, 42,149, 26, 28,199, 65, 38,147,193,100, 50,
- 65, 32, 16, 20, 54,245, 88,168,218,158, 3, 99,179,217,108,124, 62, 31, 33, 33, 33,152, 63,127, 62, 12, 6, 3, 68, 34, 17, 0,
- 64,173, 86, 67,169, 84,226,222,189,123, 72, 76, 76, 68,209, 83,119,133, 56, 58, 59,247, 28, 50,100,136,184,172,239,140, 70, 35,
- 84, 42, 21, 84, 42, 21,148, 74, 37, 12, 6, 3, 90,180,104, 33,254,227,224,193,158,200,205, 45,211, 96, 25, 29, 28,222,216,180,
-105,147,151, 88, 44,134, 94,175,135, 70,163, 65, 74, 74, 10,146,146,146, 12, 89, 89, 89, 86, 71, 71, 71, 94,112,112, 48, 79, 34,
-145, 72,250,247,239, 79,212,106, 53, 8, 33,232,221,187,183,251,214,205,155,135, 0,248,129, 93,202,246,113, 12, 48, 54, 50,153,
-250, 52,107,218,244,212,181,235,215, 27, 78,156, 56, 17,119,238,220,249, 86,182,109,219, 89, 29,112,187,162,125,227,129, 15, 22,
-151, 50, 46, 52, 41, 41,202,252,130,113, 9, 46, 52, 46,119,139,141,203,224, 42, 26,151,162,242,213,196,215,215, 23,135, 15, 31,
- 70,114, 66,194,231, 85, 49, 87, 0,192,227,243, 91,183,109,219, 22,251,246,237, 67,106, 82,210,231, 47,152,171,194, 7, 36, 32,
- 91, 16, 31,255,249,250,245,235,215,189,243,206, 59,224, 11, 4,173, 97,181, 86,229,103,254,171, 67,251, 59,227, 38, 98,253,234,
-229,235, 1,188, 71, 41,229, 0, 92, 99, 37,142,193,248,247, 98,143, 23,249,167,192, 43,237, 26, 1,156,169,104, 99, 47, 47, 47,
-127,133, 66,129,180,180, 52,212, 9, 15,207,146, 72, 36, 16, 11,133,112, 16,139,237,250, 49,157, 78, 23,229,231,231, 7,149, 74,
- 5, 15, 15, 15,136, 68,162,146,151, 88, 44, 46,121,239,232,232, 8, 30,143,135,160,160, 32,232,116,186,168, 74,117, 51,239,121,
-109, 91,254,254,132,203,103, 15,215, 24, 48, 96, 32, 92, 93,221, 16, 24, 24, 0, 47, 47, 47, 72,165, 82, 4, 6, 6,162,102,205,
-154,244,251,239,191,135,204,171,158, 93, 21,120,105,211, 36, 16, 8, 96,179,217,144,153,153,137,152,152, 24,220,185,115, 7,151,
- 47, 95,198,173, 91,183,160,209,104, 96,135,191,130, 78,175,175, 47, 16, 8,202, 52, 87, 74,165,178, 36,122,165, 84, 42,145,157,
-157,141,196,196, 68, 20,104,181, 13, 42, 48,187, 3, 35, 35, 35,249, 0, 32,149, 74,209,160, 65, 3,172, 90,181,202,122, 96,239,
-222,161, 17,151, 47,187, 5, 30, 61,234,178,102,229,202,161,131, 6, 13,178, 93,185,114, 5,106,181, 26, 15, 31, 62,132,167,167,
-167, 64,236,224, 48,132, 93,198, 85,227, 38,160,245,208,104,186,183,108,217,242,169, 74,165,194,119,223,125,199, 19, 58, 58,174,
-158, 3,240, 43,220,145,207,111,213,182,109, 91,236,223,191, 31,105, 73, 73,211,146,202, 48, 46, 73, 64,118,114,124,252,180,245,
-235,215,163,107,215,174, 32, 2, 65,149, 59, 34, 53,111,222, 60,146,227, 56,220,189,123, 23, 46,192,213,170,238, 95,179, 86,173,
-134, 10,133, 2,143, 30, 61,130,188, 40,186, 86, 22,114,224,124,116,116, 52,164, 82, 41,234, 68, 68, 52,170,226,207,124, 79, 8,
- 73,127,103,220, 68,236, 62,114, 17, 0,176,126,245,242,204, 82,230,138,193, 96,176, 8, 86,165, 94,228, 31,103,176,236,204, 56,
- 0, 64, 40, 20, 66, 44,145, 64, 44, 22, 23, 26, 35,137,164, 42,238, 20, 14, 14, 14, 37,134,170,180,177, 42,253, 94, 38,147,217,
-101, 92, 0, 32,255,241,145, 54,239,189,251,142, 88, 34,145,192,100, 50,130, 82, 10,137,196, 1, 46, 46, 46, 8, 9, 9,129, 90,
-173, 70,203, 86,237,140, 41, 74,209, 65,247, 58,253,239,188,204,129,178, 90,173,208,106,181,200,207,207, 71, 94, 94, 30,212,106,
- 53,244,122,189,221, 67,202, 57,142,227,167,164,164,224,183,223,126, 67,110,110, 46,128,194, 14,212,197,166,170,248,239,211,167,
- 79,177,121,243,102, 36, 36, 36, 84,233,252,180,105,211, 6, 7, 15, 30,228,183,239,212,105,237,241,224,224,180,227,193,193,105,
-237, 59,117, 90,187,127,255,126,190,191,191, 63, 18, 19, 19,113,227,198, 13,228,231,231, 23, 23, 96, 70, 21,121, 2,228,235,242,
-242,222,249,226,139, 47,168, 66,161,192,119,139, 23,215,159, 7, 12,183,215,184, 56, 87, 96, 92,156,255,156,113, 1,165, 20, 28,
-199,193,102,179,189, 84,222, 8, 33, 68, 40, 20, 86,117,138, 4, 82, 5,253,146, 14,237,159,125, 53, 31,135,246,237, 44,254, 42,
-142,153, 43, 6,131,241, 58, 34, 40,229, 24, 43,189,241,102,102,102, 62,211,106,181, 53,130,131,131,145,154,154,234, 21, 20, 20,
-148, 36, 22, 10, 33, 18,139,237,234,131, 37,147,201,238,166,165,165,181,242,247,247,135,213,106, 45, 49, 83, 47, 54, 17, 22, 71,
-101,110,221,186, 5,153, 76,118, 23,134, 10,103, 64,128,205,148, 95,173, 81,163, 70, 37,145, 32, 23, 23, 23,184,184, 56, 67, 34,
-113,192,140, 25, 51,184, 37,223,127,191, 34,168,227, 28,213,219,147,190,160, 95,204, 91,251, 74, 15,160,189, 55, 36,153, 76,118,
- 55, 48, 48,176,133,179,179, 51,118,239,222,141,196,196, 68,228,231,231, 67,167,211,193,104, 52, 66,167,211,193,100, 50,193,193,
-193, 1, 17, 17, 17,112,114,114,194,137, 19, 39,238,194,104, 44,219, 84,230,230,238,190,123,247,110,139,166, 77,155,150, 68, 80,
- 58,116,232, 64, 58,116,232,224, 81, 18, 53,211,233,144,147,147,131,107,215,174,225,196,137, 19, 32,132, 32, 46, 46,206,102,212,
-235,127,103, 69,255,229, 48, 0,151,248,235,215,175, 27, 63,126,252,187,173, 90,181,130, 13,232, 1, 96,243,223,101, 92,138,185,
-124,249,242, 61,155,205,214,170,118,237,218, 80, 2,205, 0,236,171,146,121,124,252, 56,218,106,181,118,170, 95,191, 62,118,239,
-216,209, 6, 64, 98, 89,219,105,129, 54, 13, 27, 54,132, 94,175,199,195, 7, 15,110, 86,193, 92,173,157, 62,235,219,209,111,189,
-247, 1, 54,173, 93,129,245,171,151,167,172, 91,181, 44, 16,128,153,149, 42, 6,131, 81, 21, 47,242, 90, 70,176, 84,249,249, 55,
-163,163,163,209,168, 81, 35, 60,121,242,164, 41,229, 56,129, 72, 44,134, 88, 36, 2,207,142, 27,136, 94,171, 61,121,242,228, 73,
-107,131, 6, 13, 80, 80, 80, 0,129, 64,240, 92,244, 74, 44, 22, 67, 40, 20, 66, 32, 16, 64, 38,147, 97,207,158, 61,102,189, 86,
-123,178,210,232,144,141,179,241,120,188,146,155,152, 82,169,132, 78,167,199,252,249,243,241,227,247,223,191,105, 3, 38, 9,229,
-158,250,191,243, 64, 27,116,186, 83,135, 14, 29,178,212,168, 81, 3,163, 71,143,198,164, 73,147, 48,105,210, 36,140, 31, 63, 30,
-163, 71,143,198,200,145, 35, 49, 96,192, 0, 52,107,214, 12,158,158,158,136,137,137,177, 24,116,186, 83,229,233, 73, 12,134, 93,
-163, 70,141,202, 42, 54,102, 90,173, 22, 26,141, 6, 42,149, 10,217,217,217,184,120,241, 34, 54,109,218,132,239,191,255, 30,123,
-246,236,129,209,104,132,217,108,198,173, 91,183,242,229, 22,203, 14,118, 41,191, 60, 66, 96,247,133, 11, 23,224,230,230, 6,191,
-128,128,118,118, 24, 23,212,175, 95, 31, 42,160, 77,185,215,214, 75, 24,151,231,140,143, 70,115,253,233,211,167,104,223,190, 61,
-124, 3, 2,190,141, 0,164, 85,217,223,102,181,158,191,112,225, 2,222,122,235, 45, 4,215,168,241,173, 39,224,249,226, 54,158,
-128,103,245,154, 53,191, 29, 61,122, 52,142, 29, 59, 6,155,213,122,190, 2, 83,213,152, 16,178,159, 16,114, 22, 64,226,232,177,
- 31,143,126,161, 67,251, 96, 66,200, 22, 0, 83, 89,137, 98, 48, 24,175, 35, 85, 50, 88, 82,155,109,250,212,169, 83, 45, 60, 30,
- 15, 3, 7, 14,116,220,183,127,255,160, 91,183,111,135,100,101,101,185,216,108,182, 74,181, 60,141,198,101, 83,167, 78, 85,154,
- 76, 38,132,133,133, 33, 47, 47, 15, 54,155, 13, 2,129, 0, 2,129, 0,132, 16,240,120, 60, 40, 20, 10, 68, 71, 71, 99,221,186,
-117,106, 79,163,113, 89,165, 55, 7,155,237,238,230,205,155,193,231,243,169,131,131, 3, 8, 33, 16, 8, 4, 88,178,100, 73,214,
-143,192,110, 0,224,243,120, 38, 0,224,241,136,189,189,114, 43,109,159, 20,139,197,224, 10, 59,247, 87,186,173,171,209,184,116,
-209,162, 69,154,135, 15, 31, 66,171,213,150, 68,219, 10, 10, 10, 74, 58,205, 43,149, 74, 16, 66,160,213,106,177,127,255,126,141,
-171,209,184,180, 60,189, 92, 32, 35, 53, 46,174,111,211,166, 77,115,159, 62,125, 10,149, 74,133,187,119,239,226,196,137, 19,216,
-190,125, 59,142, 29, 59,134,199,143, 31,195,106,181,194,223,223, 31,148, 82,236,221,187, 87,101,213,104,122,228, 2, 25,172,232,
-151, 79, 53, 31,159, 78,222, 94, 94,201,158, 30, 30,169,213,124,124, 58,189,248,189, 51, 16, 27, 27, 27, 11,171,213,138,144,144,
- 16,183,138,250, 97, 81,171,245, 66,177,113, 9,172, 81, 99, 97,112, 25,198, 37, 24,240, 12,174, 89,115, 97,177,113,161, 86,235,
-133,170,166,217, 17, 88,254,233,167,159,234, 69, 34, 17,182,109,219, 22, 98,169, 85,235,145, 0, 24,174, 0,194,219, 3,162,202,
-246,247, 5, 86,124,245,213, 87, 25,132, 16,108,217,178,197,195,185,102,205,123, 2, 96,148, 51, 80,205, 25,168, 38, 0, 70, 57,
-215,172,121,111,219,182,109, 30, 86,171, 21,147, 38, 77,202,240, 5, 86, 84, 32,249, 49,165,180, 15,165,180, 45,165, 52,112,221,
-170,101, 56,180,111,103,177,185,122,143, 82,122,141, 82, 58,146, 82,122,143,149, 56, 6,131,241, 58, 66,202,234,231, 36,108, 54,
- 47, 19,160, 94,237,154,215,195,245,219, 49, 42, 15, 87,167,163,197,223,229,221,223, 89,187, 99,148, 83,189,159,127,254, 25, 66,
-161, 16, 41, 41, 41,120,240,224, 1,156,156,156,240,230,155,111, 26,245, 26, 77,223,226,181, 8, 9, 33,157, 41,165, 39,138, 52,
- 11,215, 59, 83,197, 41,106, 10,238,212, 56,114,232, 32,223,217,217, 25, 5, 5, 5, 37,211, 10,200,100, 50, 72,165, 82,220,184,
-113, 3,189,250,244,179,101,203,218,150, 76, 52, 90,188,222, 89,105, 77, 16,194, 7,128,102,128, 44, 26,152,226,229,231, 55,245,
-203, 47,191,148,118,235,214, 13, 34,145, 8, 1,213, 66, 51, 66,186,127,183,156,199, 35,214,212, 92,245,140,154,213,252,156, 31,
-196, 37, 2, 32,133,107, 22, 22,173, 69, 88, 86, 58,131, 76,103, 67,246,108,252,222,169, 65,131, 6, 37, 81,177,204,204, 76,100,
-101,101, 65,169, 84, 66,171, 45,156,234,225,224,193,131, 56,116,238,145, 90, 31, 48, 40,190,188,116,254, 39,239, 49,142,126,230,
-171,213,183,110,222,200,247,244,244, 68,102,102, 38,178,179,179,161, 84, 42,161,215,235, 97,179,217,144,151,151,135, 95,215,111,
-180,229, 42,218, 38, 20, 79,228, 88,161,166, 54, 69,234, 86,112,209,191, 97, 68, 48,125,247,221,119, 29,157,156,156,192,113, 28,
-242,243,243,145,156,156,140,167, 79,159,226,220,185,115,218, 44,165, 9, 90,143, 46,169,197, 19,141,150,121, 60, 95, 85,161,250,
- 39,106, 22,149, 37, 0,240,243,245, 77, 75, 74, 74,242,178,217,108,240,247,247,183, 42,243,242, 22,138,129, 99,142, 64, 58, 0,
-154, 3,124,185,116,249,242,119,250,245,235,135, 38, 77,154,164,100,100,102, 86, 47,171, 44,129, 16,126, 24,224,172, 11, 8,184,
-127,237,218, 53,159,228,228,100,188,245,214, 91, 57, 73, 79,158,148, 76,211,160, 2,218, 4,215,172,185,112,219,182,109, 30, 53,
-106,212, 64, 84, 84, 84,134, 67,241, 52, 13,101,151,207,114,175, 77,101,236, 31,213,223, 31, 16,217,100,194,132, 9,176, 90,173,
- 56,119,238, 28,174, 94,189,138,164,164, 36, 92,188,120, 81,233, 36,151, 15, 45, 94,139,176,188,242,217, 35, 84, 27,178,101,203,
-102, 34, 18,137,176,126,253,122, 68, 71, 71, 3, 0, 26, 54,108,136,209,163, 71,195,106,181, 98,196,136,145,244,143, 24,105,124,
- 69,229,147, 16, 18, 9, 96, 49, 10,205, 93, 19, 74,169, 3, 33, 36, 13, 64, 96, 85,250, 92,177,242,201, 52,153,230,191, 71,243,
-117,163,210,181, 8,191,249, 5,206,207, 47,199, 49, 38,109,231,170, 57,130,214,109,218,134,207,153, 61,139,215,180,105, 83, 4,
- 6, 6,162, 97,195,134, 72, 78, 78,150,184,184,184, 84,182,222, 89, 65,219,238,195,159,214,171, 87,207,101,218,180,105,206, 93,
-187,118, 21, 6, 6, 6,130, 82,138,232,232,104,236,222,189,219,188,118,237, 90,181,206,187,143,242,230,233,223, 10,236, 89,239,
-236, 42,160, 3, 48, 55, 32, 45,109,245, 7,239,191, 63,171, 65,163, 70,239,206,158, 61,155,167,144, 73,133,243,103,188,231, 0,
- 0,223,252,180,221,185,223,160, 55,177,180, 22,208,110,120,217,235,188,149, 78,103,114,234,152,164,158, 3, 58,213,154,242,225,
- 59,182, 33, 67,134,200,157,156,156, 16, 24, 24, 8, 87, 87, 87,196,199,199, 35, 53, 53,149, 30, 56,112,160,224,242,173, 88,225,
-222, 99,215,147, 28,156,125,237, 89, 55, 80,211,182,219,224,132,158, 61,123,186,142, 26, 53,202,177,113,227,198, 66,137, 68, 2,
-137, 68,130,204,204, 76, 60,126,252,216,124,224,192,129, 2,157, 87,143,252,155,167,183,105,236, 92,139, 80,223,118,216,156,199,
-231,143,207,158,116,255,238,221,145, 28, 80,223,108, 54,251,219,108, 54,194,227,241,210, 57,142,187,107,214,104,214, 25, 27,206,
- 94,194,214, 34,180, 15,155,205, 38,178,217,108, 80, 42,149, 56,126,252,184,224,201,147, 39, 95,222,190,125,251,203,180,180, 52,
- 88, 44, 22,188,241,198, 27,104,216,176, 33, 78,159, 62,141,236,204,204, 3, 21,105,197, 0, 42, 73,106,234,232, 49, 99,198, 28,
-222,188,121, 51,239,246,237,219, 30,235,215,175,255,181, 44,227, 50,114,228, 72, 46, 51, 57,121,180,177,130, 57,176, 42,185, 54,
-115,142,108,251,241,118,255,129,131, 34,102,207,252, 82,216,178,101, 75,120,120,120,160, 77,155, 54, 48,155,205, 46,117,234,212,
-169,236,218,212,180,237, 62, 52,190,126,253,250,242, 37, 75,150,248,188,243,206, 59,248,240,195, 15, 1, 0,122,189, 30,199,142,
- 29,195,164, 73,147, 50,146, 5,205,180,149,149,207,162,200, 84,177,241, 58, 11,160, 45,128,120,214,161,157,193, 96,252,171, 13,
- 22,240,159,245,206,206, 95,189,135,210,203,113, 20,226,251,192, 26, 52,234,201,184,169, 11,163,248, 22,181,171,144, 24,156,226,
- 98, 99, 73,101,107, 18,150,172,119,230, 28, 90,224,254,244,247,166,243,191,249,102,226,210,165, 75, 59, 21, 79,197, 32,147,201,
-238,234,181,218,147,158, 70,227, 50,157,115,232,201,170,174,157,151, 10,100, 2,120,223,245,230,205,229,189,251,189,177,200,193,
- 45, 68,248,197,188,181, 6, 62,143,103,122,156,150,141,165,181, 0,185, 29, 3, 30,117, 38,224,190,210,215,154,233, 62, 40,230,
-171, 79, 63,157,242,205,220,185, 77, 21, 10, 69, 59,179,213, 26,202,113, 28,192,113,113, 58,173,246, 44, 53,155,175, 25, 27,206,
-252,222,193,217,151,218,189,110,160, 75, 29,141, 91,194,206,166, 27,214,173,251,120,199,142, 29,255,149,119,119,163,113,185,206,
-165,206, 9,123,242, 94,122, 27, 3,112, 9, 89, 89,151,202,125,218, 0, 91,139,208,238,139,130,227,198,186,186,186,110,234,212,
-169,147, 67,231,206,157,209,171, 87, 47,180,108,217, 18, 28,199,129, 82, 10,141, 70,131,237,219,183, 99,209,162, 69,113,213,129,
-185,149,233, 25,129,147,146, 67,135,122,212,175, 95,127,125, 69,198,165,200, 92, 85,218,231,176,226,107, 83, 18,103,117,238,155,
- 56,236,131,249,181, 76,234,116, 23,119,153,213,231,254,189,187, 60,251,175,205, 48,141, 45,122,123,179, 55, 6, 12,248,128, 47,
- 16,180, 41, 26,209, 72, 31, 62,120,112,179,120,177,103, 52, 28,125,188,138,101,169,120,238, 57,214,161,157,193, 96,252,187, 13,
-150, 64, 32,200, 42,142,242, 8, 4,130,172,248,189,227,222,172, 72, 68, 8,116, 42,138, 92,161,210,181, 8,139,222, 39, 2, 26,
- 24,141, 95, 63, 55,137,104,169,209,130,194, 23,182,175, 74,166,242,129, 24, 88,141,189,145,245, 0,216,255,126,161, 94,211,111,
- 62, 47,157,167,114, 15,200,115,191, 43,202, 51, 0,231, 81, 80,112, 30, 5, 5,101,206, 46, 45, 20,136,242, 42, 75,231,139,121,
- 79, 6,212,127, 54,239,130, 42, 30, 31,193,159, 56,158,255, 54,158,229,228,236, 5,160, 8, 56,120,208,251,200,193,131, 67,166,
- 76,158,252,134,175,159, 95, 77, 15, 15, 15, 87, 71, 71, 71,222,149, 43, 87,158, 90, 13,134,229, 13,128, 13, 69,209,211, 74, 49,
- 2, 39,195,146,147,235, 14, 30, 48,224, 3, 34, 16,180, 46,109, 92,168,213,122, 49, 4, 88, 97,180, 99,246,246,170, 94,155,129,
- 18,223, 78, 69,145, 43,240,237,188, 54, 83, 11,211, 49, 15, 86,235, 60,220,185, 83, 70,153,175,114, 89,250,134, 16,162, 1,155,
-161,157,193, 96,252,155,248,139,215, 21,234,204, 52,153,230,235,162, 89,232, 81,224,196,142, 39,211,100,154, 76,147,105,190,122,
-205,215,237, 37, 96, 22,147,193,176,251, 97,196,134,255, 52,119, 49, 24, 12, 6,131, 81, 46, 4, 64,231,114,110, 38,118,143, 14,
- 32,132,116,126,137,155,213, 9,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52, 43,211,126,109, 70, 39,178, 38, 66,166,
-201, 52,153, 38,211,100,154, 76,147,105,178, 38,194, 87,251,226,129,193, 96, 48, 24,152, 51,135,240, 0, 66,128, 57, 60, 96, 39,
- 31, 24,204, 47,252,255,229, 25, 60,152,148, 57, 9,237,199, 31, 19, 71,118,196, 25,140,215, 27,214, 7,235,111,132, 16, 18,228,
-227,227,179, 10, 0,201,200,200, 24, 75, 41, 77,102, 71,229,127, 15,119,119,247, 78, 86,171, 21, 42,149,234,228,235,152,191,186,
-181,200, 0,202, 67,157,255,132,181,145,252, 32,142,110, 42,107,219,136, 80,242, 22,200,127,230,210, 34, 28, 30,222,127, 76,247,
- 84,161,204,243,250,247,240, 92, 12, 0,123, 15,103, 79,253, 43,230,197, 34,132,212,246,244,244, 60, 42, 16, 8, 4, 54,155,237,
-253,204,204,204,131,229, 27,160,193,124, 0,240,148,238,158,238,226,230, 49,237,171, 41, 68,104, 50,126,167, 52, 26, 12, 42,158,
- 64,144, 32, 22,201, 46, 88,121,242,195,169,153, 61, 30,148,181,255,142, 29, 59,202, 93, 93, 59, 50,148,244, 8,143,136,232,211,
- 40, 74, 26,191,120, 89,211,165,237, 66, 60,132, 79, 83,110, 41,126,217,148,188,202,211,213,191,207,196,247, 4, 7, 37,212, 54,
-242,219, 95,105, 1,187,202,236,103, 1, 33,110,102, 32, 74, 40,145, 4,218,172, 86,111, 2, 80,190, 64,144,105, 49, 26, 83, 68,
-192,157,105,148, 42, 95,119, 77,145, 68, 18, 96,179, 90,189, 1,224,127, 49,157,140, 74, 12,150,163,163,227, 13, 30,143, 23, 80,
-122,145, 90, 94,209,130,206,197,159,149,254,142, 16, 2,155,205,150,154,151,151,215,184, 10, 21,161, 19,128, 33, 0,138,135,154,
-111, 5,176,157, 82,170,126,201,138,213, 73, 36, 18, 77,149,203,229, 29,245,122,125, 93, 0,144, 74,165,247,181, 90,237, 41,179,
-217,188,248,101,116, 9, 33, 2, 0,131, 21, 10, 69, 7, 30,143,215,129, 82, 74, 40,165,167, 11, 10, 10, 78, 1,216, 65, 41,181,
-190,132,166,212,203,203,107, 94,120,120,248,240,233,211,167,231,186,187,187,135, 77,154, 52,233,186,167,167,231,111, 57, 57, 57,
- 51, 40,165,250,255,133,194, 65, 8,169,233,227,227,179, 85, 40, 20,242, 83, 82, 82, 58, 0, 64, 96, 96,224,105,147,201,100,203,
-202,202,122,147, 82,250,164,138,122,114, 0,205, 21, 10, 69, 99,133, 66,209,214,102,179,213,225, 56, 14, 28,199, 61, 44, 40, 40,
- 56,103, 54,155,111, 0,184, 66, 41,213,254, 15,153, 96, 71, 47, 47,175,205,132, 16, 16, 66, 66, 41,165,154,215,173, 18,160, 60,
-212,121,112,255, 81, 88,137,137,170, 27, 94,193, 1, 65, 80, 25,219,218,109,176,122,118,114,233,222,167, 79,125, 30, 0,152,205,
-215,187, 3, 56,244,170,205,213,192,129, 3, 47,109,222,188,217,213,104, 52, 98,236,216,177, 91,157,157,157, 87,168, 84,170,233,
- 21,237,231,232,232, 56,105,238,215, 63,201,138,234, 52, 47,142,227,188,210,211, 83, 66, 99, 30,221,237, 30, 19,115,111,190, 89,
-187,231,138,153,242,199, 41,117,125, 31,217,147,142,136,154,164,119,191,193, 3,122,205,157, 59, 27,195,135, 14,175,118,255,190,
- 65,234,239, 20, 47, 86,155,229,181, 60, 60, 2,250,126,254,197,183,228,202,229, 51,125,119,108, 95,123,234,243,119, 73, 71,102,
-178,236, 58,183,228, 27,129,160,185,107,120,120,219,161,123,247, 66, 17, 24, 40, 16, 72, 36, 60, 0,176, 26,141,129, 5, 41, 41,
-190,219,250,246,109, 54,135,144, 51,179, 40,189,202, 52,255,255, 53, 25,118, 26, 44, 30,143, 23,240,236,217, 51, 47,185, 92, 94,
- 88, 9, 83, 10,155,205, 6,155,205,134,162,155, 34, 40,165, 37,127,173, 86, 43,194,195,195,237,122,130, 5,208, 17,192,219,237,
-219,183, 31,180,120,241, 98, 97, 84, 84, 84,241,210, 30,109,190,248,226,139,159, 8, 33,187, 0,108, 0,112,210,222, 39, 92, 66,
- 72, 55,185, 92,190,229,187,239,190,115,234,210,165,139,192,207,207, 15,132, 16,100,100,100, 52, 63,113,226, 68,227, 73,147, 38,
-189, 79, 8, 25, 65, 41, 61, 90,133, 11, 58,210,209,209,113,231,128, 1, 3, 2,218,181,107,231, 16, 17, 17, 1,155,205,134, 91,
-183,110,189,115,227,198,141, 97,187,118,237,154, 69, 8, 25,100,239,122,106,132, 16,162, 80, 40, 70,249,251,251,207,155, 57,115,
-166,219,136, 17, 35,196,247,238,221,203, 15, 9, 9, 33, 23, 46, 92,240,220,190,125,251,251, 11, 23, 46, 28,236,232,232, 56,163,
-160,160, 96, 35, 45,107, 29,163, 23,112,114,114,186,193,227,241, 2,236, 49,192, 0,236, 54,193,132,144, 6,213,171, 87,223,126,
-254,252,249,234,137,137,137,182,254,253,251,111, 2,128, 83,167, 78, 69, 89, 44, 22,210,181,107,215,195,132,144, 33,148,210, 91,
-118,230,189,158,155,155,219,190,225,195,135,187,213,172, 89, 83, 86,189,122,117, 34,151,203,193,231,243,161, 82,169,252,238,221,
-187,215,249,234,213,171,250, 19, 39, 78,228, 17, 66,250, 82, 74,239, 84,225, 60,181,244,242,242, 26, 41, 20, 10, 35,173, 86,171,
- 63, 0, 8, 4,130,103, 22,139,229, 94, 86, 86,214,102, 74,233,165,151,189, 64,188,189,189,127,156, 55,111,158, 71, 86, 86, 22,
- 93,184,112,225,143, 0, 70,189,174,149,193,214,223,118,224,198,245,171, 0, 32, 34,132,144, 23,203, 31, 33,132,212, 9,133,232,
-147, 79, 38,163,113,147,102,120,115,248,224, 74, 53,251,247,242,152, 43,230, 11,220,117, 38,227,213, 28, 21,111, 95,144,151,120,
-192,136,193,141,227, 1,224,200,225,187, 3,154, 53,115,187,224,225,204,245,147,137, 37,205, 76, 54,107,238,222, 63,114,102, 86,
-197, 76,249,251,251, 31,117,117,117,149,229,229,229,101,100,103,103,255, 50,112,224,192,111, 54,108,216,224,250,244,233, 83,164,
-164,164, 96,226,196,137,138,212,212,212, 15, 36, 18,201,101,163,209, 88,110, 36, 75,163,209, 44,155,247,245,228,153,142, 78,174,
-124,153, 84, 14,133,163, 19,170, 87, 15, 69,147,166,109,208,185, 75, 95,196,199,199, 52,223,254,251,218,104,126,250,206, 5, 54,
-113,195,111,148,202,234,229,214, 75,117,195, 72,187, 98,115, 53,115,230,108,196, 62,122,164, 73, 76,224,125,244,199, 94,129,172,
- 71,167,112,137,201, 92,144,120,229,242,153,234,205, 91,180, 7,128,198, 59,182,175, 61, 53,103, 4,233, 52,107,203,235,103,222,
- 95,165,185,154, 43, 20,142,234,182,100,137, 87,195,247,223, 23, 21, 36, 36,152,227, 87,174,212,101,158, 59,103, 19, 72, 36, 52,
-176,123,119,226,217,161,131,195,251, 15, 31,138, 46, 46, 92,216,118,190, 88, 28,242,133,201,180,133,105,254,255,105, 50,170, 96,
-176, 8, 33,144,203,229,216,182,109, 27,132, 66, 33, 4, 2, 1,132, 66, 97,185,239,131,130,130,236,185, 72, 6,250,248,248,252,
-180, 98,197, 10,239,110,221,186,193,193,193,161,228, 59, 62,159,143, 46, 93,186,160,115,231,206,194,180,180,180, 97,219,182,109,
- 27, 54,127,254,252, 76, 66,200,135,148,210,221,149,232,118, 8, 11, 11,219,125,236,216, 49,169,193, 96,192,185,115,231,144,159,
-159, 15,177, 88,140,128,128, 0,116,237,218, 85,240,232,209, 35,183, 46, 93,186,236, 38,132,244,166,148,158,182, 35,173,141,189,
-188,188,206,238,216,177,195,161,126,253,250,228,241,227,199,104,216,176, 33, 0, 64,165, 82,161,127,255,254, 14, 35, 70,140,168,
- 57,108,216,176, 43,132,144,118,148,210, 27,149,232, 53,242,241,241,217, 56, 96,192, 0,191,249,243,231, 59, 57, 58, 58, 34, 49,
- 49, 49,221,199,199, 39,180,248,120, 15, 27, 54, 76,220,167, 79, 31,223, 69,139, 22, 45,219,185,115,231,167,132,144, 81,148,210,
-155, 21,233, 22, 27, 97,153, 76,134,204,204, 76,108,221,186, 21, 31,124,240, 1,248,124, 62,178,178,178,176,125,251,118,124,244,
-209, 71,197, 70,198, 46, 19, 44,151,203, 59,215,175, 95,255,215, 83,167, 78, 5,184,184,184,192,207,207,143,247,213, 87, 95, 69,
-134,132,132, 72,171, 85,171,198, 79, 79, 79,199,238,221,187, 67, 70,142, 28,185,207,193,193,225, 29,131,193, 80,105,211,153,183,
-183,247,186, 63,254,248, 35,232,254,253,251, 88,185,114, 37,242,242,242, 32, 22,139,225,226,226, 2, 31, 31, 31,132,134,134,146,
-105,211,166,201,250,244,233, 35,251,240,195, 15,215, 1,104, 96,199, 57,170,239,229,229,181,106,216,176, 97, 33,115,230,204,113,
-241,241,241, 65,241, 3,129, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 65,222,222,222, 79,179,178,178,198, 81, 74,111, 87,177,
- 82,111,208,169, 83,167,222,253,251,247,231,167,167,167, 99,243,230,205,189, 9, 33, 13,236, 53,149,255, 52,110, 92,191,138,177,
- 19, 38, 22,248, 5, 6,138, 14,236,255,189, 95, 65,193,234, 11, 10,158,139, 0, 0, 10, 56,165,181, 85,115, 69,235, 62,125,135,
-137,122,246,234, 95,176,250,231,101, 10,123, 12,150,152, 47,112,223,182,101,124,202,185,139,113,117,142,158, 72,236,220,191,111,
-103,158, 64, 20, 86, 19, 0,166, 76, 30, 35,222,187,255,196,138,110,157,171,165,183,109, 21,154, 50,116,196,202,192,170,152,171,
-218,181,107,159,137,142,142,246,150, 72, 36,200,203,203,115, 95,189,122,245, 15,173, 91,183,230,197,199,199,227,209,163, 71, 72,
- 72, 72,128, 74,165, 66,151, 46, 93, 20, 55,111,222,252, 5, 64,185, 6, 43, 91, 63,112, 94,136, 87,206,114,127,119,215,234, 6,
-179,202,203,102,205,141, 56,117,226,118,189, 93, 59,116, 13,189,124, 2, 66,135, 13, 27,139,207,167,127, 43,220,179,107,227,204,
-179,231,142, 1,168, 94,254, 12,254, 20, 45,191,152, 49, 29,106,141, 17, 35,134,143,193,200,225, 99,220, 41, 76,190,212,102,144,
-155,244,249, 46,206,162,251, 7, 55,254,190, 99, 0,128,128, 82, 38,235, 36, 51, 89,229, 51, 87, 32,104,214,251,167,159, 60, 35,
-223,123, 79,114,123,206, 28,109,206,185,115,250, 90, 61,123,230, 55, 28, 63,222, 8, 0,154,132, 4, 81,236,172, 89, 50,207,182,
-109,165, 45,166, 78,117,181,153, 76, 62, 95, 19,210,244, 43, 74,175, 85, 85, 51,104,200, 16,219,204,245,235,155,156,155, 60,185,
- 61,177, 88,248,221, 91,180,184,181,112,243,230,103,127, 70,243, 85,166, 51,237,236, 89, 99, 94, 72, 8, 26,246,239,159, 27,228,
-229,101,124,149,121,255, 51,233,100,148, 81, 79, 81, 74, 65, 8,105, 7,224, 12,128, 57,148,210,217, 0,224,226,226,146,169, 84,
- 42,189,118,239,222, 93,169,185, 18, 10,133,240,245,245, 69,104,104,104, 86,102,102,166,119, 5,149, 98, 10,199,113, 1,148,210,
-146,104, 75,121, 24,141, 70,196,197,197,161, 94,189,122,169,148,210,192,138,154,112,100, 50, 89,252,163, 71,143, 60, 30, 60,120,
-128, 27, 55,110, 32, 36, 36, 4,174,174,174, 16, 10,133,176, 88, 44, 80,171,213, 8, 11, 11,131, 68, 34, 65,163, 70,141,114,180,
- 90,109, 72, 69, 77, 61,132, 16,137, 92, 46,143, 59,123,246,108, 96,195,134, 13,113,237,218, 53, 4, 6, 6,194,199,199, 7, 0,
-144,144,144,128, 11, 23, 46,160,103,207,158,136,142,142,198, 27,111,188,145,162,213,106, 67, 41,165,198,242, 52,221,221,221,211,
- 79,157, 58,149, 26, 21, 21,101,208,106,181,188,204,204, 76,225,185,115,231,172, 26,141, 70,161, 82,169,132, 74,165, 82,168, 86,
-171, 5, 90,173, 86,200,227,241, 68,122,189, 94,120,242,228, 73,190,201,100,114,170,232, 56, 21,159,167,253,251,247, 35, 42, 42,
- 10,187,119,239,198,148, 41, 83,112,241,226, 69, 4, 6, 6, 98,199,142, 29,152, 58,117, 42, 98, 98, 98,224,225,225,129,136,136,
-136, 10,207, 17, 0,212,170, 85,235,241,221,187,119,107,138, 68,162,226,117, 23,139,215,179, 67,118,118, 54,158, 60,121,130,103,
-207,158,161, 86,173, 90, 24, 62,124,248,147,212,212,212, 90,149, 21,180,128,128,128,236,251,247,239,123,212,171, 87, 15,153,153,
-153,112,113,113,129,179,179, 51, 92, 92, 92, 74,222,135,132,132, 96,242,228,201,240,241,241,201,210,235,245,222,149,153,159,168,
-168,168,163, 39, 79,158,244,112,114,114, 66, 70, 70, 6,212,106, 53, 4, 2, 1,100, 50, 25, 60, 60, 60, 74, 12,124, 92, 92, 28,
-122,245,234,149, 19, 31, 31,223,173, 10, 17, 55,158,183,183,247,163, 59,119,238,132, 82, 74,145,156,156,140,152,152, 24, 76,152,
- 48, 33,206, 96, 48,132,191, 78,107,234,149,234, 87, 37, 26, 53,122,172,168,127,223,126,186, 91, 55,142,112, 82,156, 69,211, 6,
- 82, 37, 0, 92,187,165,119,209,163, 29, 26, 52,238,206,219,187,127,159,108,227,134,213, 66,112,240, 6, 65,204,131, 88,250,117,
-121,218,189,187,185,188, 53,117, 98,247, 58,109, 91,181, 21,168,213,212,231,215, 77,107,154, 38, 61,141,247, 6,128,224, 26, 33,
-153,239,190, 53,230,154,147, 19,201, 56,119,241,156,117,241,178, 35, 15, 15, 30, 85,110,178,227,220,132,132,134,134, 94,222,191,
-127,191,135,151,151, 23,156,157,157,161,213,106, 97, 54,155,241,224,193, 3,195,182,109,219, 44, 78, 78, 78,142, 25, 25, 25, 80,
- 42,149, 32,132, 96,255,254,253,201,148,210,224, 23,181,138,251, 96, 1,192,132, 30,117,132, 17, 29, 67, 93, 69, 18,171, 84, 42,
-140,245, 5,177, 73, 8, 85,120,159, 58,117,185,222,233,179,231,223,236,217,123,168,103,139, 22, 29,240,237,252,207, 45,201, 25,
-153, 13,149,186,190,143,202,234,131, 85, 39,148,116,236,255,198,128,193,115,231,206,198,236,153,115,112,112,255, 94,149, 66,206,
- 51, 58,185, 8,157,219, 54,111,101,152,252, 65,191, 20, 93, 65,106,224, 15, 43,214, 12,239,210,109,112, 64,243, 22,237,113,229,
-242, 25,236,216,190,246,134,200,102, 97,205,133, 47, 48,135, 16, 87,151,144,144,113, 31,199,197,137,110,207,158, 93, 96, 77, 75,
-203,111, 60,105, 82, 78, 89,219,166, 30, 63, 46, 23,251,249, 57,185,246,237,235,182, 44, 56,152, 90,178,178, 86,149,213,135,168,
- 44,205, 19, 10,133,203,239,135, 15,119,162, 66, 97,187,207, 62,255, 92,218,187,119,111,168,213,106,236,218,181, 11,171, 86,174,
- 52,250,250,250,222,245,187,119, 47, 58, 82,173,254,210, 94,205,198,147, 38,229,216,108, 54, 50,120,234,212, 46,247, 19, 18, 58,
-102,100,101, 85, 3, 0, 95, 55,183,148,198, 33, 33, 55,214, 29, 60, 24,243, 99,245,234,156,189,233, 92,115,228,136,247,206,196,
-196,247,220,220,220,164,153, 89, 89, 2,137, 88,156,219, 60, 34, 98,199,207, 51,102,156,177,222,185, 35,114, 8, 8,112,114,238,
-221,187,202,121,111, 60,105, 82, 78,158, 70, 35,248,248,155,111, 90, 37,101,102, 86, 43, 48, 26,107, 41, 53, 26, 31,155,197,194,
-115,146,201,114,107,132,133,101,233,207,157, 75,175,161,211, 77, 92, 67,105,214, 95, 24,169,252, 47, 47,242, 58, 68,176,206, 80,
- 74,255,107,180, 12,165,212,174,232,149, 80, 40,124,174, 57,170, 2, 68,132, 16,220,188,121, 19,238,238,238,240,241,241,129, 68,
-242,252,226,128,217,217,217,184,120,241, 34, 30, 62,124,136,250,245,235, 3,128,168, 34, 65,137, 68,242,201,162, 69,139, 92, 76,
- 38, 19,110,220,184,129,198,141, 27, 67, 34,145, 64, 36, 18, 61,103,254,178,178,178, 80,183,110, 93,124,246,217,103,206,243,231,
-207,255, 4, 21,172, 33, 39, 16, 8, 62, 28, 51,102,140, 87,113,196, 42, 37, 37, 5,141, 26, 53, 42,249,222,211,211, 19,183,110,
-221, 66,227,198,141, 17, 16, 16,128, 65,131, 6,121,109,222,188,249, 67, 0,139,203,125,146, 23,139,121, 81, 81, 81, 77,138, 34,
- 68,224,241,120,177, 78, 78, 78,158,222,222,222,114, 39, 39,167,255,202,227,250,245,235,149, 60, 30,207, 82,217, 1,229,241,120,
-200,200,200, 64,100,100, 36, 84, 42, 21, 0, 64,171,213,162, 86,173, 90, 80,171,213, 37,102,213,207,207, 15,122,125,197, 93,187,
-234,215,175, 63, 59, 60, 60,188,107,251,246,237, 37, 66,161, 16,183,111,223, 70,195,134, 13,177,109,219, 54, 4, 5, 5, 65, 38,
-147, 33, 46, 46, 14, 81, 81, 81, 56,123,246, 44, 60, 61, 61, 81,183,110, 93, 73,163, 70,141,206,231,229,229,157, 78, 76, 76,156,
- 93, 65, 58,121, 10,133, 2,103,207,158,197,186,117,235,144,144,144,128,180,180, 52, 56, 58, 58,162, 65,131, 6,136,136,136, 64,
-203,150, 45, 17, 23, 23, 7, 82, 73, 97, 34,132,248,132,134,134, 30,188,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76,
- 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14, 21,
- 69,160, 50, 42, 59,174,174,174,174, 19,103,205,154, 21,232,229,229,133,196,196, 68,168, 84, 42,120,123,123,163,125,251,246,254,
- 39, 78,156,152, 8, 96,201,235,114, 3, 43,238,208, 78, 8, 33, 7,246,255,222, 47,200, 87, 92,167,105, 67, 77,240,221,155,130,
-154,135, 78, 60,174, 87,120, 60,130,239, 52,109,164,121,114,237,198,145,164, 3,251,127,191,250, 48, 22,251,236,105,194,206, 81,
-241,246, 29, 61,145,216,185, 94,221, 54,252,229, 43,102,245, 27,251,110, 55,137,155,107, 27,162,206,218,142,139, 87,239, 6,127,
- 53,123,154,215,215,179, 23, 30, 56,122, 34,209,150,163,226,205,179, 39,189,117,235,248,254,120,102,175,151, 71,129,249,103,220,
-186,234, 12, 8, 91,160, 70, 72,109,168,213,106, 56, 56, 56, 56, 12, 31, 62,220, 54,125,250,116,157,147,147,147,140, 16,130,211,
-167, 79,103, 1,232, 86,153,174,193,203,149,218,204, 22, 43, 21,243, 57, 74, 28,245,196,150, 39,190,247,224, 41,218,181,235,145,
-217,164,113,195,249, 11,191, 91,242, 69, 72, 72,152,231,240, 17,227,132,139, 23,127,185, 18, 64,155,178,116, 30,198,209, 83, 17,
- 53,137, 20, 64,175,185, 95,207, 70,124,124,156,235,216,183,149,115, 4, 18,169, 95,120,112, 43,199,149,235, 78,119,175, 85,171,
-122,181,177,163,223,249, 99,245,250,117,189, 74, 71,178,126,255,109,245, 62, 66, 72, 39,123,142,237,191,136,122, 35, 15, 30, 68,
- 65,114,178, 37,239,252,121, 67,167,159,126,202, 9,236,214,109,137,201,108,246, 40,174, 42,120,132,128, 20,119,145,224, 56, 34,
-248,236, 51, 30, 21, 8, 96,113,117,125,123, 26, 80,187, 50,205, 41,233,233, 3,223,124,239,189, 94,251,142, 28, 65,245,234,213,
- 75,238,103, 46, 46, 46,152, 58,117, 42, 38, 77,154, 36,185,117,235, 86,211,157, 59,119, 54, 93,252,221,119,222,211,128,129,246,
-164,243,216,149, 43,174,227,231,206,157, 81,191,113,227,160, 77, 91,183, 74,106,214,172, 9, 0,120,242,228, 73,232,183, 11, 23,
- 6, 71, 70, 69,101,206,255,228,147, 13,247,167, 79,175, 11,224,124, 69,154, 25,231,206,153,118, 38, 38,190,119,234,244,105,151,
-200,200, 72, 0, 64, 76, 76,140,215,178,101,203,198,212, 29, 52,104,196,220,247,223,255,178,183,193,160,116,202,206,150,244,254,
-241, 71,193,239,131, 7, 87,170, 89,156, 78, 0,104,255,206, 59,159,180,233,208, 33, 98,224,123,239,185, 5, 5, 5, 17,133, 66,
- 1,179,217,140,180,180, 52,215,251,247,239,215, 60,168,209,168,247, 92,185,178,121, 77,209, 34,238,127, 17,101,122,145,127,186,
-193,106, 79, 8,161, 0,218, 83, 74,207, 22,223,184,109, 54,155, 93,230, 74, 32, 16,160,168, 19,176, 93, 63, 74, 41, 69, 78, 78,
- 14,114,114,114, 74,154,136,178,178,178,112,234,212, 41,196,197,197, 65, 40, 20, 66, 36, 18,193,108,174,124,109, 88,185, 92,222,
-185,115,231,206,130, 43, 87,174, 32, 36, 36, 4, 82,169,180, 36, 93,197, 47,145, 72, 4, 95, 95, 95,168,213,106,116,234,212, 73,
-184,124,249,242,206, 21, 25, 44,103,103,231,158, 67,134, 12, 17, 23,255, 95, 80, 80, 0, 62,159, 95, 98, 86, 10, 10, 10,144,151,
-151, 7,165, 82, 9,131,193,128, 22, 45, 90,136, 15, 30, 60,216,179, 34,131, 85, 26,157, 78, 87,144,149,149,229,210,166, 77, 27,
-215, 13, 27, 54,196,180,104,209, 34,236,185, 18,118,230,140,193, 96, 48, 8,121, 60,158, 93,235,220,109,217,178,165,228,216, 63,
-123,246, 12, 43, 87,174, 44,249, 46, 46, 46, 14,203,151, 47, 47,153,151,163,162,115, 20, 30, 30,222, 99,243,230,205,141, 55,109,
-218,148,207,231,243, 17, 19, 19,131,173, 91,183,130, 82, 10, 79, 79, 79,232,116, 58,100,102,102,226,244,233,211,176, 90,173, 80,
- 40, 20,240,247,247,119,248,240,195, 15, 91,207,153, 51, 71, 8,160, 92,131,101,179,217,108,124, 62, 31,193,193,193,152, 57,115,
- 38, 12, 6, 3, 68,162, 66, 95,169, 86,171,161, 84, 42, 17, 29, 29,141,196,196, 68, 84,118,115,113,112,112, 24,180,105,211, 38,
- 47,177, 88, 12,189, 94, 15,141, 70,131,148,148, 20, 36, 37, 37, 25,178,178,178,172,142,142,142,188,224,224, 96,158, 68, 34,145,
-244,239,223,159, 20, 27,205,222,189,123,187,111,222,188,121,104,101,230,136, 16,226, 89,167, 78,157, 47,198,140, 25,227, 80,186,
-204,102,100,100, 96,224,192,129,178, 75,151, 46, 77, 39,132,108,165,148,102,191, 78,119, 49, 74, 41, 45, 40, 88,125,225,220,190,
-159,234,220,189, 41,168,105, 50,229,183,232,210,115,162, 0, 0, 46,157, 93,223,226,238,205,123,144, 18,107,210,225, 99,139, 47,
- 40, 20, 99,105,101, 17,192,158,157, 92,186, 7,121,137, 7,244,239,219,153,247,235,166, 53, 77,199,190,219, 77,226, 85, 99, 13,
- 1, 0, 87, 81, 0, 90,218,166,240, 12, 70,173,195,175,155,214, 52,237,223,183,231,213,132,167, 73, 75,122,117,118,221,115,232,
-164,242, 72, 69, 17, 66, 95, 31,161,191,155, 83, 46,220, 28, 27, 34, 56,196, 17,209,183,238, 96,223,238,243, 8, 13,111, 13,163,
-209, 8,171,213, 42,239,211,167,143,110,219,182,109,134,216,216, 88,141, 94,175,111, 71, 41,141,173, 44,255,169,169, 15,184, 48,
-159,230,102,145, 84, 98,213,168, 68,186,105, 95,238, 28,220,168, 89,215,198,174,190,254, 66, 79, 57,119,160, 67,187, 54, 91,127,
-219,178,106,210,148, 79,191, 70,131, 6, 45, 90, 60,124,124, 56, 2,192,221, 50, 77,235, 19,122, 48, 50,148, 88,227, 31, 63,238,
-149,148,152,152, 90,219,219,199,244, 68, 73, 45, 19,167,173,233,210,166,221,160,122, 53,235,180, 21,223,127,112,150, 76,254, 96,
-204,111, 63,172, 88, 51,188,216,100,157, 59,119,180,221,236,217,137, 98, 0, 70,230,171,138,158,202, 37,146, 0, 69,112,176, 32,
- 97,195, 6,125, 72,159, 62,249, 0, 96, 50,155, 61, 18, 18, 19,157,101, 50, 25, 40,165,176, 88, 44,207,245, 17, 46,238, 23, 28,
- 25, 22,230,109,143,102,194, 87, 95,213,251,236,179,207,144,145,145, 1,171,213, 10,161, 80,248, 98,157, 13,173, 86,139,183,223,
-126, 27, 63,126,247, 93,115,123, 52,109, 54, 27, 25, 63,119,238,140,207,103,204,168, 57,110,220, 56, 94,233,186,215,205,205, 13,
- 59,119,237, 18,175, 88,177, 34,224,139, 31,127,124,251, 77,137, 36,190, 50,205,156, 90,181,224,150,153, 41, 45, 54, 87, 0, 16,
- 22, 22,134,149, 43, 87, 74,222,125,247, 93,113,159, 62,125,190,191, 85,191,254,178, 37,173, 91, 63,118,175, 93,219, 73, 44,145,
- 4,216,123, 60, 1, 64, 99, 48, 68, 46, 89,182,204,245,234,213,171,200,204,204, 68, 70, 70, 70,241,181,140, 38, 77,154,144,145,
- 35, 71, 58,215, 8, 12,108,250, 23,159,238,255,242, 34,255,120,131, 85,148, 17, 82,148, 49, 82,234,166,248,156, 81,169,204, 96,
-189, 12, 74,165, 18, 74,165, 18,107,215,174,133, 72, 36, 42,185,233, 2,128,201,100,178,199,172, 68,249,249,249, 65,165, 82,161,
-118,237,218,207, 69,174, 68, 34, 17, 4, 2, 1, 68, 34, 17, 36, 18, 9,140, 70, 35,130,130,130,160,211,233,162, 42,210,212,235,
-245, 13,220,220,220, 74,110,172, 70,163,177,196, 92, 21,167,215,100, 50, 33, 63, 63, 31, 5, 5, 5,208,104, 52,208,106,181, 13,
-237,201, 47,199,113,184,119,239,222,147,176,176,176, 6,124, 62, 31, 10,133, 66,174,213,106, 75,250, 14,229,229,229, 97,227,198,
-141,218,183,222,122,203, 99,255,254,253,149, 26, 44, 66, 8, 62,250,232, 35, 72, 36, 18,232,116, 58,252,242,203, 47,248,248,227,
-143, 33, 18,137,160,209,104,176,114,229, 74, 76,158, 60, 25, 2,129, 0, 38,147, 9,203,150, 45, 43, 63,146,241,224, 65,194,149,
- 43, 87, 26, 54,106,212,200,117,207,158, 61,217, 93,186,116,241,236,214,173, 27,164, 82, 41,244,122, 61, 44, 22, 11,154, 55,111,
-142,240,240,112,100,101,101,225,240,225,195, 57,161,161,161, 30, 87,175, 94,229, 50, 50, 50,146, 42,187,121,151,138, 16,194,102,
-179, 33, 51, 51, 19, 74,165, 18,217,217,217, 72, 75, 75, 67,106,106, 42, 4, 2, 1, 42,123,120,119,119,119,127, 35, 50, 50,146,
- 15, 0, 82,169, 20, 13, 26, 52,192,140, 25, 51,172,122,189,126, 8,128,195, 69,155,245, 88,179,102,205,158, 11, 23, 46, 8,252,
-252,252,240,232,209, 35,120,122,122, 10, 28, 28, 28, 42, 53, 88, 62, 62, 62,235, 15, 28, 56,224, 86,108,170,139,143,179, 78, 87,
-120, 58, 6, 14, 28,232,182,105,211,166,245, 0,122,190,110, 55, 51, 5,207, 69,208,180,129, 84,121,232,196,227,122, 93,122, 78,
- 20,248,214,156, 5, 0,104, 9, 8,142, 31, 90, 86,175,103,231, 90, 59,138,251,101, 85, 68,255, 30,158,139,251,244,169,207, 27,
- 49,184,113,188, 64, 20, 86,115,203,166,101,222,110,174,109,254, 83, 73,240,221, 32,151, 2,225, 53,109,188,203,191,199,123, 79,
-158, 24,102,218,186,225,189,248, 45, 59,110,116, 22,137,110,119, 4, 48,185, 60,237, 59,247,141,251,243, 53,254,117, 92, 69,103,
- 8, 28,250,162, 97,131, 80,120,122, 42,241,203,234, 77,240, 15,106, 5,163,209, 8, 39, 39, 39,153,205,102, 51,243,249,252, 45,
-246,152, 43, 0, 56,121, 82,201,213,173,171, 52,241, 53,156,245,131,143, 23, 15,232,210,163,111, 68,199,142,157,185, 99,199,143,
-153, 91, 53, 52,167,119,236,216, 34,243,244,153,115,113, 25, 25,207, 66,195,195,235, 33, 54,230, 86,119,128,220, 3,202, 46,176,
-247,226,232,145,154, 53,201,233,109,219,198,114,122, 46, 90,250,205,188,187, 61,122,245, 26, 21,217,182, 77, 91,238,248,137, 83,
- 38, 49,114, 30, 42, 90,183,124, 54,106,216,144, 61,219,118,239,233,122,250,212,193, 90, 42,117,230,193,239, 86, 80,102,174, 74,
- 63,156, 89,173,222, 2,137,132,151,125,250,180, 53,234,221,119,141,197,215,163, 76, 38,195,190,125,251, 32, 22,139, 75, 94, 34,
-145,168,228,189,183,183,119,241,160, 42,187, 52, 1, 32, 61, 61, 29, 25, 25, 25,112,118,118,134,167,167, 39, 50, 50, 50,112,233,
-210, 37,196,198,198, 66, 40, 20,162,123,247,238,224,149,211,119,249, 69,205,193, 83,167,118,169, 19, 21, 21,244,162,185, 2, 0,
-179,217,140,188,188, 60,244,235,215,143,119,248,240, 97,159, 35,201,201,125,191, 2,182, 84,164,217,176, 87,175,220,204,157, 59,
-203,252,237, 70,141, 26,145,139, 23, 47, 74,186,119,235, 54,105,202,188,121, 43,126,220,180, 41,197,102,181,250, 84, 37,239, 60,
- 30,143, 71, 8, 65, 96, 96, 32,242,242,242, 80, 80, 80,216, 82,173, 80, 40,224,234,234, 10,139,197, 2,142, 82,225, 95,252,144,
- 87,166, 23,249, 71, 27,172,162,204, 0, 64,251,210, 55, 20,142,227,236, 50, 87, 66,161,176,210, 62, 85,246, 68,181, 94,196, 30,
-131, 85,156, 86, 7, 7,135,146, 11,172,180,177, 42, 78, 39,143,199, 3,159,207,135, 61,145,119,142,227,248, 26,141, 6,187,118,
-237, 66,187,118,237, 74,154,159, 84, 42, 21,148, 74, 37, 84, 42, 21, 12, 6, 3, 18, 18, 18,112,242,228, 73,212,170, 85, 11,128,
-125,147,182,198,199,199,223,168, 94,189,122,227,226,155,119,135, 14, 29, 2, 54,108,216,144,214,179,103, 79, 63, 74, 41,190,252,
-242,203,156,230,205,155,123,148,190,185, 87, 6,159,207,199,165, 75,151, 80,171, 86, 45, 80, 74, 33, 18,137, 16, 19, 19, 3, 47,
- 47, 47,112, 28, 7,129, 64,128,236,236,108, 56, 58, 86, 60,183,225,189,123,247, 70,191,243,206, 59,105,206,206,206,245,114,115,
-115,211, 37, 18, 73,155,115,231,206, 5,154,205,102, 56, 57, 57,193,201,201, 9,135, 14, 29,130,139,139, 11, 62,249,228,147,100,
-189, 94,127, 73, 46,151,123,235,245,250, 59, 25, 25, 25, 95, 86,229,124, 91,173, 86,104,181, 90,228,231,231, 35, 47, 47, 15,106,
-181, 26, 6,131,161,210, 52,150, 69,155, 54,109,112,240,224, 65,254,130, 5, 11,126,141,143, 47,124, 16, 12, 9, 9,193, 39,159,
-124,194,247,247,247, 71, 66, 66, 2,110,220,184, 1,179,217,140,202,194,207, 66,161,176,195,148, 41, 83, 90, 7, 5, 5, 17,179,
-217, 12,142,227, 96, 52, 26, 81,252, 62, 57, 57, 25,117,234,212,225, 5, 7, 7,183, 32,132,116,176,103,192, 4,163, 16,117,214,
-118,184,138, 2, 0,190, 27, 56,245, 10,104, 95,114, 50,146,172,172,172,121,195,199,241,223, 61,180,181,192, 59,230,177, 35, 2,
- 67, 70, 34,160, 70, 63,140,121,199,134,217,223, 28,132,127, 96, 4,146,146,146,208,161, 67, 7, 81, 90, 90,218, 59, 0,166,218,
-171,125,252,248, 21,219,177, 67,135, 7, 13, 30, 58,170,113,231,206, 61,173, 71,143, 30,194,189, 59, 71,239,191, 51,244,141, 44,
-202, 21, 16, 23, 23, 89,244,227,199, 15, 67, 35, 35, 27,193,108,177,180, 1,102, 47, 2, 80,110,165,242,228, 9, 53,205,153, 51,
-135,247,199,222,245, 35,135,143,120,187,126,167, 78, 93, 45, 71,143, 31,192,141,203,199,111,127,191,104,204,217, 5,203,182,119,
-232,210,253,141,186, 14, 78, 87, 14, 69,214,213,191, 23,232, 20,244,132,149,148,114,110, 86, 14, 14, 28,138,234, 69, 30, 33,160,
-148, 62,103,174, 94, 52, 88, 60, 30,175,210, 7,255,210,154,165,239, 69,197, 15,210,171, 86,173,130, 68, 34,129, 88, 44,134, 80,
- 40,172,180,155, 69,105,205,251, 9, 9, 29, 55,110,217, 34, 41,203, 92,229,230,230, 34, 55, 55, 23, 5, 5, 5, 24, 54,108,152,
-104,206,245,235,141, 42,211, 12,242,245, 53,202,165,210,204, 7, 15, 30,248, 69, 68, 68, 60,151, 94,181, 90, 13,169, 84,138, 45,
- 91,183,138,122,247,234, 53,161,211,161, 67,223, 3, 80, 86, 53,239,132, 16,120,121,121,193,213,213, 21,132, 16, 88,173, 86,100,
-100,100,224,254,253,251,184,126,253, 58,248,132, 88,255,202,115, 92,150, 23,121, 29, 34, 88,164,188,104,139,189, 6,139,207,231,
-191,116, 20,171, 60,236,105, 34,148,201,100,119,211,210,210, 90,249,251,251,195,106,181,150, 24,172, 23,155, 8,139,163, 29,183,
-110,221,130, 76, 38,187, 91,153, 38,165,180, 69,211,166, 77,177,123,247,110,156, 62,125, 26, 79,159, 62,133, 78,167,131,209,104,
-132, 94,175,199,253,251,247,193,113, 28, 34, 35, 35, 33,151,203, 43,213, 4, 0,173, 86,155, 46, 20, 10,195,164, 82,233,127,154,
- 59,124,125,145,155,155,203, 89, 44, 22,108,220,184, 81,237,227,227, 35,151, 74,165,118, 27, 86, 66, 8,178,178,178, 16, 16, 16,
- 80,210, 7, 75,163,209,192,203,203,171,216, 80,192,104, 52,194,209,209,177,210, 38, 66, 74,169, 1,192,148, 82,218, 77, 6, 15,
- 30,252,219,182,109,219,106,156, 56,113, 2, 87,175, 94,133,167,167, 39,230,207,159,255, 52, 49, 49,113, 56,165,244,250, 95,112,
-129, 85,186, 77,110,110,238,174,187,119,239,182,104,218,180,105, 73,237,208,161, 67, 7,210,161, 67, 7,143,210, 33,253,236,236,
-108, 92,187,118, 13, 39, 78,156, 0, 33, 4,113,113,113, 54,189, 94,255, 91, 5,191, 45, 10, 14, 14,222, 48, 99,198, 12,133,213,
-106, 45, 41,219, 82,169, 20, 14, 14, 14, 16,137, 68,224,243,249, 72, 76, 76, 68,191,126,253,156,127,250,233,167,245,132,144,154,
-148, 82, 51, 94, 19, 10, 56,165,245,218, 45,189,139,171,107,240,157, 75,103,215,183,104, 89, 84, 71, 92, 58,187,222,234,234, 26,
-124,231,218, 45,189, 75,219, 64,165, 85, 81,137,206,222,195,217, 83,205,230,235,221,143, 28,190, 59, 96,202,228, 49,226,224, 26,
- 33,153, 23,175,222, 13,110,105,155,194,147, 75, 1,173, 30,200, 83, 2,143,158,240,185,224, 26, 33,153,215,111,198,136,191,255,
- 97,109,136, 78,111,218,115,232,164,242, 72, 37, 15, 99, 6, 66, 72,255,143,190, 16,158, 29, 53,218, 75, 44,118, 8,132, 38,255,
- 38,170, 5,187, 99,200, 27, 97, 88,177,250, 38,156,156,220,224,237,237, 13, 30,143, 39,183, 55,239, 57, 57, 57,100,215,239,231,
-223,125,235,237, 49,205,187,117,237,101, 61,114,244, 15,193,233, 99,251, 47,173, 95,253,197, 30,202,215,202, 8,213, 72, 3,131,
- 2,238, 36, 60,141, 29,222,182,109, 87, 72,197,178, 90, 64,120,153, 5,182,100,224, 0, 69, 50,143, 7,135,183,222, 30,219,178,
- 91,183,190,214,163, 71,247,226,232,161, 77, 87,102,205,170,118,232,233,179,173,162,203,215, 83, 29,250, 15,122, 63,255,224,225,
-135,166, 55,250, 84,143,245,147, 55,208,131,241,252, 3,164, 64,144,105, 53, 26, 3, 3,186,117,227,235,146,146,132, 10,111,111,
- 43, 0, 88, 44,150, 74, 13, 22, 0,206, 30, 77,123,211,162,211,233,192, 1, 86,123, 52, 51,178,178,170, 21, 61,124,151, 96,177,
- 88, 74,204, 85,110,110, 46,148, 74, 37,228,114, 57,178,141, 70,111,123, 52,187, 54,107,182,113,206,236,217, 83,119,238,218, 37,
- 42,109,174,138, 95, 66,161, 16,223, 46, 90, 36,250,248,211, 79,223,159, 32, 16, 76,172,202,241, 44,126, 88,231,243,249, 16, 8,
- 4, 72, 74, 74, 66,114,114, 50,146,146,146,144,148,148, 4,169, 84, 10, 90,206,241,124,133, 17, 44,242, 58,149,221, 10,167,105,
-168, 74, 39,119,123, 13,129,205,102,123,165, 6, 75,171,213,158, 56,121,242,100,179,254,253,251, 11,174, 92,185, 2, 31, 31,159,
- 18,131, 85,252,183,184,217, 73, 38,147, 97,207,158, 61,102,173, 86,123,162,146,139,232,228,161, 67,135, 26,207,156, 57, 83, 56,
-122,244,104, 60,120,240, 0,227,198,141,131, 82,169,132, 90,173, 70,110,110, 46,116, 58, 29,154, 53,107, 6, 7, 7, 7,220,185,
-115,199,162,211,233, 78, 86, 82,112,104, 86, 86, 86,129,167,167,167,239,139,223, 13, 26, 52,200,251,231,159,127,214, 61,122,244,
-200,210,170, 85, 43, 39,123,141, 70, 49,191,255,254,123, 73,100, 46, 54, 54, 22, 63,255,252,115, 73,159,171,155, 55,111, 98,241,
-226,197, 37,115,151, 85,177,176, 95,175, 91,183,174,213, 98,177,160, 86,173, 90,240,247,247,135,193, 96,192,210,165, 75,173,127,
-133,185,178, 23,131,193,176,115,212,168, 81,159, 71, 71, 71,251, 10, 4,130,194,208,117, 81,254,204,102, 51, 30, 63,126,140,251,
-247,239,227,209,163, 71,200,203,203, 43,121, 0,184,117,235, 86,190,197, 98,217, 94,158,174,167,167,231,151,235,214,173,243,145,
-201,100,207,149,231,226,232,103,113, 84, 52, 59, 59, 27, 46, 46, 46,232,212,169,147,215,201,147, 39,191, 4, 48,243,117,168, 12,
- 8, 33,164, 85,115, 69,235,143,222,127, 27, 77, 27,105,158,220,189,121, 15,199, 15, 45,171, 7, 20,118,114,143,106, 20,249,228,
- 90,180, 35,122,116,157,218,250,226,149,113, 21,118,114, 47,234, 67,117,168, 89, 51,183, 11,123,247,159, 88, 49,109,242,152,107,
- 95,205,158,230,101, 48,106, 29,194,107,218,120, 64,161,185,186, 28, 45, 55,124, 61,123,204,181,133, 63,108,228,146,179,204,147,
-174, 94,205, 47,119,116,111,105,211, 82,183, 54, 28,124,130,123,165, 5,215,232, 80,253,206,205,181,240,112,206,135, 99,173, 86,
-232,209,173, 25, 78,156,188,139,164,103, 6,164,167,167,195,104, 52, 86, 56,237,193,163, 59,123, 70, 82, 66,131, 8, 37,201,132,
- 71, 29, 70,142,122,175, 77,175, 94,125,233,193,131,251,173,123,247,108,185,176,125,243,242,157, 60,145, 80,160, 55, 57,155, 8,
- 49,168, 56,158,227, 3,173, 54,183,176,242, 20,137,202, 15,183, 22, 77,200, 26, 81, 55,220,103,228,168,113,206, 61,123,244,163,
-135, 14,237,229,182,111,219,120,122,251,218,168, 45, 28, 79, 45, 74, 79,209, 73, 84,106,139,138, 18,177, 75,129,154,211,101,198,
-215, 52,248,245, 26,100, 6,227,249,251,128,209,152, 90,144,146,226,235,214,174,157,228,241,236,217, 50,239,102,205, 12,164,168,
-143,112, 69, 6,139,207,231, 3, 60, 30,103,143,166,189,105,209,235,245,224, 0,203,203,104, 90,173,214,231,204, 85,177,193, 42,
-142,103,216,163,185,122,214,172, 43, 65,221,186,229,157, 57,115,198,187,125,251,246, 68,163,209, 64,163,209, 60,103,178,252,252,
-252, 72, 68,100,164,236,247,211,167, 67,102,218,121, 60,237,201, 59,143,199,251,203, 13,214,107, 23,117,173,232,203,226, 8,150,
- 61, 6,203,206, 8,150,197, 98,177,192,203,203, 11, 57, 57, 57,229,222,240,121, 60, 30,164, 82,105,113, 27,112,133, 35,233,140,
- 70,227,210,169, 83,167,126,216,163, 71, 15,143,176,176, 48,100,103,103,195,219,219, 27, 14, 14, 14, 37,125,195,138,245,110,222,
-188,137,117,235,214,169,141, 70,227,210, 74, 52,151, 44, 90,180,232,131,129, 3, 7,186,249,248,248,192,213,213, 21,119,238,220,
-129,171,171, 43,212,106, 53, 98, 98, 98,224,232,232, 88,210, 47,103,255,254,253, 26,163,209,184,164, 18,211, 70,207,157, 59,103,
-118,116,116,188,147,157,157,205,207,203,203, 19,228,231,231, 11,212,106,181, 80,165, 82, 9,143, 28, 57,226,225,236,236,172, 59,
-117,234, 84,118, 80, 80, 16,255,233,211,167,124,139,197,194,179,227,166,136,137, 19, 39, 66, 36, 18,193,104, 52, 98,233,210,165,
-152, 58,117,106, 73,159,171, 69,139, 22, 97,198,140, 25, 37,134,121,205,154, 53, 85, 53, 89, 48,155,205,176, 88, 44,176, 88, 44,
-118,153,222, 63,131, 61, 70,157, 82,154, 65, 8,233,221,180,105,211, 99, 59,118,236,112, 47,154, 83, 12,153,153,153,200,204,204,
- 68,118,118, 54, 10, 10, 10, 96,181, 90,225,239,239,143,204,204, 76,236,221,187, 87,165,209,104,186, 85, 52,130,144,207,231,143,
-106,211,166,141,224,197, 52, 20, 63,213, 21,155,118,137, 68,130,180,180, 52,116,232,208, 65,124,230,204,153, 81,255,116,131, 85,
-108, 92,234,132, 66,212,167,239, 48, 81,131,198,221,117,215,110, 28, 73,146, 18,107, 82,207,206,181,118, 0,133,211, 52, 92,139,
-118, 68,131,198,221,121,125,210, 77,205,148,249,171, 27, 68,212, 38,230,138,150,213, 1, 0, 15,103,174, 95,183,206,213,210,157,
-156,136,224,235,217, 11, 15,252,186,105, 77,211,203,191,255,103,154,134,175,103, 23, 78,211,208,173,115, 53,235,131, 71,177,253,
- 0,108,178,215,180,244,238,221, 39,122,245,218,205, 72,141,223,239,183, 98,161,139, 24,134,124, 64, 24,134, 54,205,157,112,245,
-199,100,220,190,125, 59,195,100, 50,117,168,176, 44, 17, 26,116,255,193,189,218, 81,117, 35,124, 70,142, 26,235,212,187,119, 63,
- 28, 60,184, 15,155, 55,174, 61,247,198,176,129,191, 62,203, 87,243,189,132, 50,145,140,114, 98,190,200, 89,224, 32,147,101,153,
-211,210, 10, 43, 79,129,208, 9, 24,204, 85,208, 66,136,241, 99, 71, 56,119,236,220, 15,127, 28,218,135,205, 27, 87,159,253,170,
-238,160,181,213, 27,214, 33,205, 26,125,247,126,245, 26,213,131,181, 5,153,106, 30, 17,155, 13, 6,206,241,187,141,137, 63,196,
-207, 24, 21, 31,125,111,240,247,108, 20,225,115,220,217,220,179,103,211,143,159, 60, 17,121,182,110, 45, 77, 59,125, 90, 86,180,
-114, 72,133, 6, 75, 32, 16,128,150,223,164,245,156, 38,217,180,137, 7,160,194,193, 85, 34,145, 8, 58,157, 14, 22,192,108,143,
-166,239,209,163, 41, 79,158, 60, 9,117,115,115,123,206, 92,229,229,229,149,188, 55, 24, 12,208,233,116,144, 74,165,247,237,209,
-204, 60,119,206,176,112,226,196,153,195,135, 13, 91,126,226,228, 73, 7,119,119,119,168, 84,170,231, 12,150,201,100, 66,199, 78,
-157, 68,139,162,163, 71, 2,152,101,207,241,244,238,208,161,210,254,190,124, 62, 31,220, 95,220, 68,248,186,193,171,172,169,198,
-222, 81,132,101,221, 24, 9, 33,157, 95,248,104, 70,227,198,141, 13,177,177,177, 8, 10, 10, 42, 49, 41,165,127,211,201,201, 9,
- 46, 46, 46,184,121,243, 38,230,205,155,167, 7, 48,163, 34, 77, 74,169, 70,167,211, 13,237,210,165,139, 94, 32, 16, 32, 60, 60,
-188,100,254, 43,142,227, 32, 22,139, 33,151,203, 17, 29, 29,141, 62,125,250,232,116, 58,221,208, 23,231,192, 42, 67, 83,165,211,
-233,222,236,218,181,171,238,193,131, 7,104,211,166, 13,110,223,190,141,130,130, 2, 20, 20, 20, 32, 33, 33, 1, 17, 17, 17,208,
-233,116,248,249,231,159,245, 58,157,238, 77, 74,169,170, 34, 77,141, 70,211,103,234,212,169,252,223,126,251,173,186,191,191,127,
-221, 38, 77,154,132,117,234,212,169,230,128, 1, 3,130,123,246,236,233, 27, 26, 26,106,232,214,173,155,103,143, 30, 61, 60,117,
- 58,157,240,226,197,139,233, 22,139,165, 71, 37,199,179,196,148,196,198,198,150, 52, 9, 10, 4, 2,228,228,228,148,204,180, 95,
- 92, 25,149,101,128,203,211, 44,109,178,139,141, 85,177,209,170,172,238, 47, 71,179,210, 27,134, 88, 44, 46,142,112,210,202, 52,
- 41,165,183, 30, 62,124,216,165, 93,187,118,183,222,125,247, 93, 77, 70, 70, 6, 28, 29, 29, 17, 18, 18,130,218,181,107,195,195,
-195, 3,102,179, 25,123,246,236,209,238,221,187,247,174, 74,165,234,240,226, 28, 88, 47,106,242,120,188,132,178, 42,215,226,232,
- 85,177,193,114,112,112,128,191,191,127,241,177, 77,168,202,241,124,201,200,210, 95,171, 89,100, 92, 58,117,236, 86,163,103,175,
-254,206,123,247,239,147,253,248,203,134,135,109,251,125,184,210, 35,120,202,110,143,224, 41,187,219,246,251,112,229,143,191,108,
-120,184,119,255, 62, 89,207, 94,253,157, 59,117,236, 86,227,193,253, 71, 97,207,173, 75, 88, 70, 58,101, 98, 73,179,182,173, 66,
-149,231, 46,158,179, 46,252, 97,163,173, 85,203,158, 87,151, 47, 95,185,125,249,242,149,219, 91,181,236,121,117,225, 15, 27,109,
-231, 46,158,179,182,109, 21,170,148,137, 37,205,236,201,251,248,177, 35,156,123,245,236,135,131, 7,247, 88,119,254,254,243,162,
- 53,155,211,218,117, 24,144,154,153, 16,127,157, 66,183, 1, 30,142,119,240,240,225, 67,149,201,100,234, 80, 86, 7,247,178, 52,
-199,141, 25, 81,218, 92,157,119,247,105,179,230,225, 67,216,142, 31, 63, 96, 57,121, 50, 90,127,254, 86,150,234,198,131,156,188,
- 92,181,225,169, 86,163, 54,113, 28, 7,202,217,248,115,230, 20,118,196, 45,239, 28,181,106,213, 30,167, 78,108,197,198, 13,171,
- 84, 28, 7,195,160, 29, 59,108,131, 7,207,166,193,213,170, 5,111,249,125, 43,233,221,183,191, 51, 5,184, 62, 3,251,185,252,
-182,237, 55, 82,163, 86,141,106, 33, 33,133, 83,211,252, 35,203,210, 95,160, 57,139,210,124,117, 82,210,217,155, 63,253,100,244,
- 30, 58,212, 77,236,237,237, 4,155,141, 20,215,239,229,189, 4, 2,193,115, 17,151,138, 52,253, 61, 60,158,237,223,191, 31,181,
-107,215,134,191,191, 63, 74,247,129, 45,158, 72,219,221,221, 29,187,118,237, 2, 5,110,216,163,217,176,122,245,155,223, 46, 92,
-104,226, 56, 14,249,249,249,255, 21,189,202,207,207, 7,199,113, 56,244,199, 31, 38,117, 65,193, 70,123,243,222,129,207, 47, 24,
-222,182,237,130, 94,189,122,153,159, 60,121, 2,142,227, 80, 58,146,149,149,149, 5,133, 66, 1,131,209, 24, 72, 8,145,217,163,
-153,117,228,136, 28,149,212,235, 47, 70,176,254,138,243,254,175,138, 96, 89,173, 86, 4, 6, 6, 62,183,244, 10,143,199,123,238,
- 85,149, 17,132,148,210, 77,132,144,163,221,186,117,155,217,188,121,243,241, 51,103,206,228,135,133,133, 65,165, 82,193,213,213,
- 21, 94, 94, 94,136,137,137,193,254,253,251,109, 57, 57, 57, 43, 1,204,181,103, 40, 60,165,244, 52, 33,164,119,189,122,245,182,
- 77,155, 54,205,185,107,215,174,194,192,192, 64, 80, 74, 17, 29, 29,141,221,187,119,155,215,174, 93,171, 46, 50, 87,167,237, 76,
-235, 49, 66,200, 27, 61,122,244,216, 50,106,212, 40, 71,155,205, 38, 76, 72, 72,128,209,104,132,197, 98, 65,114,114,178,249,224,
-193,131, 5, 58,157,110, 4,165,244,152, 29,122, 55, 9, 33, 17,199,143, 31, 31,117,241,226,197,121,239,190,251,174,123,167, 78,
-157, 68, 86,171, 21, 23, 46, 92,200,110,216,176,161, 87, 86, 86,150,121,215,174, 93,185, 6,131, 97,134,205,102,179,107,169, 28,
- 66, 8,212,106, 53, 60, 60, 60, 96, 52, 26,193,113, 28, 76, 38, 19, 20, 10, 69,201,242, 70,148, 82, 84,165,211,252, 11,101,128,
-111, 54,155, 49,108,216, 48,112, 28,135,165, 75,151,194,106,181, 86, 89,204,217,217,249,198,173, 91,183,122, 55,104,208,160,196,
-180, 20,151, 33,137, 68, 2, 15, 15, 15,184,187,187,227,224,193,131, 16, 10,133, 55,236, 60, 71,183, 1, 52, 36,132,180,188,123,
-247,238, 91, 0, 26,152,205,102,127,155,205, 70,120, 60, 94, 58,165,244,142, 90,173,254,213,222,165,114,178,178,178,230,189,253,
-246,219, 13,183,110,221,170, 16, 8,254,115,105, 8, 4, 2, 72, 36, 18, 20, 79,106, 73, 41,133,201,100,194,151, 95,126,169,214,
-106,181,243, 94,151,202,160,113,147,102, 88,253,243, 50,197,201, 83, 71,179, 31,198, 97, 95,233,169, 24, 20, 0, 46, 94, 25,183,
- 79,153,191,186, 65, 90, 74,138,162,113,147,102,118,105,154,108,214,220,161, 35, 86, 6, 22, 45,149, 51, 47,225,105,210,146,173,
- 27,222,139, 7,128,239,127, 88, 27,146,156,101,158,244,224, 81,108,191, 95, 86,158,105,102,178, 89,115,237,209,252,143,105,217,
-162, 2,133,129, 82,122,149, 16, 82, 61,172,165, 97, 70,100,184,168,111, 90,166,229, 89, 65,129,233, 35, 74,105,188,189,121,111,
-221,170, 29, 78, 29,251, 13,155, 55,110, 81, 83,142,111,240,240,240,160, 0,240,240,161, 7,125,248, 80, 73,255,211, 95,216, 69,
-235, 41,203,158, 59, 99,250,248,201, 26,141,102,201,138,239, 42,158,112,182, 94,253,230,168, 87,191, 57, 62,252,232, 11,231,136,
-186,225, 65, 0,176, 99, 7,181, 69,134,146, 3, 51,191,154,221,119,238,220,217, 80,107,140,152, 59,183,112, 89,157,152,123, 15,
-254,120,242,132,154,216,173,233,121,102, 90,173, 87, 49,121,114,168, 46, 47,207,179,245,231,159,123, 8, 62,253,148, 87, 81, 39,
-247,210,215,175, 61,154,215,239,220,249, 99,220,123,239, 61,155, 53,115,102,183,149,171, 86, 73,163,162,162,144,145,145,129,240,
-240,112,248,251,251,227,248,241,227,216,181,125,187, 86,169,209,204, 0,240,139, 61,154,155, 14, 29,138, 9,171, 91, 55,103,213,
-170, 85,126,189,122,245, 34, 90,173, 22, 42,149, 10, 42,149, 10, 70,163, 17, 69, 19, 57,211,216,184,184,135, 22,139,101,165,189,
-121,183,101,103, 59,204,109,214, 44, 85,196,113,223,190, 49,112,224,212,185, 95,127, 45,169, 81,163, 6, 49, 26,141, 37, 81, 44,
-179,217, 12,133, 66, 97, 54,153, 76,238, 0,116,246,104, 74,214,174,181,102,103,103,195,211,211,179,100,218,165,210,243, 10,106,
- 52, 26, 80,202, 38,193,173,210,131, 66,121,247,112, 55, 55,183, 27, 2,129, 32,160,116, 52,171,172,181,237, 74,127,102,177, 88,
- 82,179,179,179, 27,151,118,184,148,210, 19,229, 24,131, 16, 0,243, 59,118,236,248,198,148, 41, 83,200,153, 51,103,176,119,239,
- 94, 26, 31, 31,191, 19,192,140,242, 42,199, 74, 52, 29, 37, 18,201, 39,114,185,188,115,241, 84, 12, 50,153,236,174, 86,171, 61,
- 97, 52, 26,151,150, 55,123,123, 37,154, 78, 18,137,100,162, 92, 46,239,162,209,104, 26, 0,128,163,163,227, 45,173, 86,123,220,
-104, 52, 46, 43,111, 1,233, 74, 52,165,206,206,206,243, 60, 60, 60,222,252,244,211, 79,221,207,157, 59,151,126,234,212, 41,145,
- 82,169,220,106, 50,153,202, 93,236,185, 44, 77,119,119,247, 27,124, 62, 63,224,175, 56, 71, 0, 80,191,126,253,131,125,250,244,
-233, 53, 98,196, 8, 88, 44, 22,252,242,203, 47, 56,126,252,248, 31,113,113,113,189, 43,122,250,124, 81,147, 16,226, 17, 16, 16,
-112,102,252,248,241,193,195,134, 13,147,185,186,186, 66, 32, 16, 64,171,213,226,241,227,199,136,142,142,166,251,246,237, 43,184,
-121,243,102,170, 78,167,107, 79, 41,205,177,247,120,254,153,167,228, 23, 53,133, 66, 97,187,192,192,192,223,103,205,154,229,216,
-165, 75, 23,169,187,187, 59,248,124, 62, 44, 22, 11,210,211,211,113,239,222, 61, 28, 61,122, 84,187,115,231, 78,109,110,110,238,
-176, 23,231,106,249,255, 74,231,171,212,140,168, 77,190,122, 97, 1,231,114,103,103,175,104, 91,123,210,217,171,179,107,207, 55,
-222,104,210, 25, 0,118,237,186,126,226,143, 19,249,135, 94, 54,157,149,165,213, 30,205, 58,161,252, 89,247, 31,220,123,110, 34,
-202,186, 17,145,177,117,162, 6,126, 99,143, 86,241, 76,238, 47,230,189,212,236,248,165, 99,184,207, 53,167, 22, 47, 8,253,197,
-140,233,152, 63,111, 1,246,237,216,243,199,131, 39,244,224, 63,185, 44,253,149,154,197,139, 19,203,124,125,219, 46,229,184,233,
-183,239,221, 83,148,126, 80, 43,142, 52,151,126,152,244,243,243,203, 74, 75, 75,243,182, 71,179,247,143, 63,154,117,114,185,100,
-250,183,223,182, 43, 48, 24,218,205,157, 59, 87,112,253,250,117,252,252,211, 79, 86, 67,106,234,150,108, 96, 98, 89,173, 31, 21,
-105, 6, 79,156,232,240,217,207, 63,143, 14,169, 85,203,235,173,183,222, 18, 10,133, 66,104,181, 90,164,164,164,224,216,209,163,
-166, 7, 15, 31, 62, 80,171,213,125, 41,165,105,246,106,246,254,241, 71,179, 75, 72, 8,100,158,158,244,228,233,211,206,227, 62,
-249,100,124,181,234,213,157,187,117,239, 46,116,114,114, 66,126,126, 62, 18, 18, 18,176,103,207,158,172,130,130, 2, 63, 74,169,
-205, 30,205, 45, 23, 47,214, 59,116,246,236,160,111,190,249, 70, 28, 25, 25, 9,103,103,103,104, 52, 26,220,187,119, 15,103,207,
-158, 53,174, 92,185, 82,165, 82,169,198, 91,173,214,253,127,213,121,255,215, 24,172,255,175, 11,143, 16,210, 24,192, 87, 69,255,
-126,109,199,154,126,175, 77,165, 67, 8, 9,114,115,115, 91,109, 48, 24,168, 94,175, 31, 71, 41, 77,254, 95, 75, 39, 33, 68,208,
-184,113,227,159,179,178,178, 90, 82, 74,225,236,236,124,233,254,253,251, 19, 40,165,214,170,106, 18, 66,248, 0, 90, 42, 20,138,
-102,142,142,142,237,140, 70, 99,157,162,102,182,135, 90,173,246,172,217,108,190, 10,224, 18,165,212,246,119,230,189, 40,157, 93,
-252,252,252,222,227, 56,174, 22, 33,196,197,102,179,193, 98,177, 40, 57,142,123,172, 82,169,214, 2, 56,254,119,167,243, 85,105,
-214,173, 69, 6, 80, 30,234,148,103, 4,158, 51, 52, 47, 24, 7,194,225,225,253,199,116, 79, 21,202, 60,175,127, 15,207,197, 64,
-225, 72,195,202,150, 28,122,206, 96,217, 97, 90,170,108, 46,107, 9,222,166,132, 6, 61, 95, 41,146,228,240,122, 3, 54,255, 25,
-131,101, 47,117,195, 72, 59, 80,180,228, 40,174, 62,140,163,167, 94,215,186,238, 85,106, 46, 32,196,237, 39, 87,215, 75, 60,129,
-192, 7, 0,175, 40,218,194,113,132,216, 40, 33,214,210,205, 88,165, 31, 40, 43,211, 52, 3, 81, 66,137, 36,208,102,181,122,103,
- 0,138, 67, 54, 91, 35, 3,165, 5, 1,192, 87,209,148,198,188, 76, 58,205, 64, 20, 95, 34, 9, 58, 68,105,191,108,185,188, 94,
-150, 94,239, 9,128, 42,228,242,135,106,173,118,163,193, 96, 88, 81,198,162,234,149,106,138, 36,146, 0,155,213,234, 13, 0, 60,
-129, 32,107,155,209, 24,152,234,228,244,150,193,104, 12, 86, 40, 20, 22,147,201,164, 54, 24, 12, 35, 44, 22,203,201,170,228,253,
-177,213, 26,113,145,199,107, 99,150,203,221,205,132,200, 77, 86,171,217,100, 54,167, 24, 12,134,187, 0,126,160,148, 62,249, 43,
-207,251,107, 71,241,104,179,191,226, 5,160, 51,211,100,154, 76,147,105, 50, 77,166,201, 52,255,122, 77, 0, 50, 0, 65, 0,248,
-255,196,188,191,110, 47, 1,179,152, 12, 6,131,193, 96,188, 22, 1, 19, 29,202,232,115,197,248,155,154, 8, 1,116, 46,231, 68,
-217, 29,250,123,153,209, 4,118, 52, 37, 48, 77,166,201, 52,153, 38,211,100,154, 76,243, 53,211,172, 76,251,181,105,122,100, 77,
-132, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 77,132,175,246,197, 3,163, 60,103,237, 77, 8,241,126,213,219, 50, 94,239,
-178, 80,198,190,254,132, 16,255, 42,110,239,203,142, 58,131,193, 96,252,179,249,127, 55, 88,246,222,172,254,228, 77,237, 79, 25,
- 30, 66,200, 2, 66,144, 86,248, 34, 11, 94,213,182,118,252,174,159,167,167,231,199,117,235,214,221,226,227,227,243, 33, 33,196,
-171,138,251,135,202,229,242,101, 10,133,226,140, 66,161, 56, 35,151,203,151, 17, 66, 66, 95,209,121, 35,132,144,113, 14, 14, 14,
-167,253,252,252,158, 73, 36,146,211,132,144,241,228, 37, 23,160, 36,132,212, 36,132, 76, 38,132, 76, 33,132,132, 85,101, 95,239,
-200,254,219,189, 34,251,223,241,138,236,127,207, 35,170,111,168, 87,100,255,123, 94,145,253,239,120, 71,246,223,254, 23,148,215,
-151, 62,191, 69,251, 38, 23,190, 42,223,151, 16,242, 3, 1, 82, 8, 65,234,159, 45, 75, 12, 6,131,193,248,123,169, 82, 39,247,
-128,128,128, 30, 28,199, 13, 7, 0, 30,143,247, 91,106,106,234,225,151,184,225,124, 86,244,126, 17,165,116,250,159,217,206,142,
-125,151, 80, 74,167, 86,221,156,225, 51,142,163,188,194,124,146,207,189,189,189,101,124, 62,255,191, 58, 14,218,108, 54, 25, 33,
-248,144,227, 10, 23,168,228,241,200,103,132,144,101,148,210,204,151, 49,133, 35, 71,142, 92,178,108,217, 50, 7,153, 76,134,164,
-164,164,174,227,199,143,111, 69, 8,153, 76, 41, 77,175,108,127,169, 84, 58,188,105,179,150,147,191,253,238,123,133,183,151,151,
-220,106,227,204, 9,137,137,242, 47,167, 79,109, 38,149, 74,151, 85,180,200,241,139, 70, 10,192, 88,129, 64, 48,196,193,193,161,
-166,193, 96,120, 98,181, 90,119,242,249,252,110,243,230,205,139,236,217,179,167,131, 90,173, 22, 91,173,214, 90,155, 55,111,158,
-188,110,221,186, 30,132,144,126, 21, 13,183, 47,142,224, 80, 74,159,149,250,184, 71,114,114,114,148, 80, 40, 68,205,154, 53, 9,
-128,152, 74,182, 47,129, 2,161,247, 47,236,136, 2,128,186,173, 7,199,222,191,176, 3, 69,239,255,130,135,129,231,203,130, 84,
- 42,253, 69,175,215,167, 20,127, 95,148,206, 76,123,246, 37,132, 44, 47, 90,230, 39, 18,192,192,162, 77,119, 83, 74,239, 17, 66,
-124, 28, 36,146, 79,244, 6, 3, 1, 64,254, 76, 89, 98, 48, 24, 12,198, 63,204, 96, 81, 74,223,122,252,248,177,140,227, 56,132,
-133,133,141, 4, 96,183,193, 42,235,134,211,169, 83,167,134, 82,169,244,185, 89,139,245,122,189,152, 16,116,122, 25,211, 82,252,
- 27, 38,147,145, 39, 20,138,193,227,145,201,245,234,213,171,150,147,147,115,142,199,227,109, 73, 77, 77,205,127,137,155, 44,214,
-172, 89, 83,219,215,215,247,191,102, 87, 78, 79, 79, 23,247,235,215,183, 74,122,163, 9,145, 24, 37,146,102, 34, 66,124,109, 86,
-171, 11, 0, 8, 4,130,252, 48,103,231,198,243,191,249, 70, 70, 8,225,114,115,115,161,215,235, 49,105,210, 36,233,131, 7, 15,
-250, 3, 88, 81, 73, 26,107, 55,111,209,106,210,209,163, 71,234,168,243,242, 13,107,150,172,142,214, 11,132,218, 26, 17,117,196,
- 63,175,222,232, 50,118,244,136,143, 8, 33,183,202, 90, 54,228, 5, 29, 30,128, 61,159,124,242, 73,221,222,189,123,139, 53, 26,
-141,131, 94,175,175,182,101,203,150, 47, 27, 55,110,172,104,208,160,129,248,247,223,127, 39, 42,149, 10,148, 82, 89,120,120, 56,
- 29, 50,100,136, 97,219,182,109, 31, 2, 88,110,143,225,245,245,245,157, 89,100,208, 75,151, 61,161,159,159,159,180,232,152,206,
- 37, 4,147, 42, 50,215, 4,136,171,219,122, 48, 64, 80,235,254,133, 29, 14,117,219, 12, 54,128,226, 49, 1,226, 0,192,223,223,
-127, 46, 80,106, 94,167,231,121,248,236,217,179,151, 90, 59,176,119,239, 62,160,148,254,226,239,239,127, 48, 51, 51, 51,146, 16,
-140,179,247, 33,128, 16, 2,119,119,247, 55, 0,252, 8, 96,232,163, 71,143,234, 2, 64,120,120,184, 16,192, 61, 23, 23,151, 70,
-198, 66,115,197, 96, 48, 24,140,127,161,193, 18, 1,192,185,115,231, 64, 41, 21,191, 76, 80,160,244, 13,103,226,196,137,240,245,
-245,125,209,180,224,204,153,211,127, 38, 79,207,253,198,215, 95,127,173, 80, 42,149,157,127,253,245,215,182,254,254,254,139,159,
- 61,123,118,165,146, 60,102, 18, 66, 22, 21, 69, 28, 32,145, 56,196,142, 31, 63, 62,186,232,235,106, 7, 14, 28,144,245,233,211,
- 71, 7, 32, 17, 0, 36, 18, 7,127, 62,159, 87,187,176, 83, 27, 22, 85,100, 4, 7, 19, 18, 34, 22,139, 59,142,251,241, 71,107,
-163, 62,125, 4,114, 79, 79, 2, 0,137,143, 30,185, 47,250,238,187, 86,249,241,241, 98,189,187,123,110,174, 86,171,143,141,141,
-133, 68, 34, 33,124, 62,191, 81,101, 25,150,203,229, 31,127, 51,127,145, 92,157,167,212, 27,213, 5, 38,190,205, 98,116,148, 74,
-109, 25, 25,153, 57, 10,153, 76, 55,253,171, 57,162,247,199,188,245, 49,128, 9,149, 72,125, 56,121,242,228, 58, 77,155, 54,245,
-223,190,125, 59, 81,169, 84, 16, 8, 4,138, 6, 13, 26,160,113,227,198,182, 83,167, 78,145,234,213,171, 35, 50, 50, 18, 23, 46,
- 92,192,165, 75,151, 72,195,134, 13,101,187,119,239, 30, 89,150,193, 42,195, 84, 79,110,209,162, 69,160, 66,161, 48,168,213,106,
-188,251,238,187, 0,128, 46, 93,186,212,150,203,229,191, 20, 20, 20, 56,236,223,191,239,141,202,204,117,230,189,189, 67, 0,192,
- 43,178,255, 29, 0, 81,160,120,156,117,111,111,189, 82,155,212,137,137,137,105,158,159,159, 95,210,217,176,120, 97,241,182,109,
-219, 86,165,188,103, 18, 66, 22,245,237,219,231,115,128,160,125,251,246,153, 19, 39, 78,164,247,238,221, 27, 48,120,240,160, 78,
-113,113,143,203, 77,231,139,229,104,248,240, 55,159,186,185,185,117,241,243,243,139, 3, 32, 16, 10,133,197,155,242,253,253,253,
-221, 34, 35, 35,135, 41, 20,138, 4, 62,143, 87,157,130,210,202,202, 18,131,193, 96, 48,254, 1, 6,139, 16, 66, 75,221, 24, 72,
- 5, 79,225, 57,183,110,221,242, 53, 24, 12, 32,132,228,216,113,131, 58, 81,250,134,195,231,243,127,230,241,200, 4, 66, 8, 34,
- 35,163,158, 46, 93,186,180,172, 53,183, 76,145,145, 81, 79,249,124, 94, 13, 74, 41, 8,225,253,194,113,182,204,178, 52,203,187,
- 33,138,197,146,207, 0,192,199,199, 55,254,240,225,195,166, 65,131, 6,225,187,239,190, 19, 77,155, 54,109,106,112,112,240,135,
- 73, 73, 73, 25,229,165,179,232,255,233,222,222,222,178, 53,107,214,212, 30, 63,126,124,116, 90, 90,218,116, 0,240,243,243, 91,
- 0, 32, 2, 64, 98,169,207,176,114,229,182,103, 99,198,140,137,205,204,204,156, 94,158,230, 27,132,212, 12, 14, 15,239, 56,247,
-220, 57,202, 51, 26, 73,206,249,243,234,236,204, 76,203,147,236,108,217,134, 27, 55,122,127,185, 96,129, 48, 48, 40, 8,103,246,
-239,247,200,209,233,178, 85, 70,163, 33, 51, 51,147, 90,173,214, 75,118,228,189,174,151,167,167,108,213, 15,191, 92,119, 20,242,
- 57,111,127,127, 34,112,115, 17,242,100,206, 98,158, 64, 96,168, 17, 92, 75, 4,160,110,101,231, 72, 36, 18,141,236,218,181,171,
-108,219,182,109, 36, 50, 50, 18, 46, 46, 46, 56,127,254, 60,110,221,186, 5,139,197,194,203,207,207, 71,147, 38, 77,240,237,183,
-223, 34, 40, 40, 8, 74,165, 18,201,201,201, 30, 98,177,216,179,130,227,249,156,225,157, 58,117, 42, 2, 3, 3, 97,181, 90,145,
-151,151, 7,171,213, 10,185, 92, 14, 0, 72, 76, 76,196,129, 3,251, 43, 45, 75,118,154, 35,180,104,209, 66, 67, 8,121,248, 98,
- 4,171, 42,154,190,190,190, 27,179,178,178, 27,118,232,208, 1, 42,149,202, 52,107,214, 44,212,171, 87, 15,181,107,135,217, 83,
-230,167, 75, 36,146,181, 65, 65, 65, 95,125,250,233,167,110,110,110,110, 48, 26,141, 31,165,167,167, 99,252,248,241, 0,128, 94,
-189,122,133, 11, 4,130, 13,239,190,251, 46,170, 85,171,246, 72,163,209,196,220,186,117,107, 90, 65, 65,193,131,151,205,187,157,
-199,135,105, 50, 77,166,201, 52,255,167, 52,237,245, 34,255, 40,131, 69, 41, 37,132, 16, 90, 89,134, 40,165,249,254,254,254,190,
- 82,169, 20,148,210, 42, 55,183,217,108,182, 15, 61, 60, 60,178,166, 79,159,222,186,118,237,218,166, 15, 63,252,240, 94, 66, 66,
-194,140,210,219, 84,175, 94,125,222, 79, 63,253,132,216,216,216,196, 5, 11, 22, 92,200,201,201,249,186,138, 39,125, 26, 33,100,
-105, 81, 52, 44,103,255,254,253,245,206,157, 59, 55, 97,201,146, 37,158, 31,124,240,129,232,227,143, 63, 30, 1,224,187,202,116,
-248,124,190,174,172,102,193,114,110,194,166,178,250,104, 21,211,135, 16,169,147, 88,220, 97,238,185,115,212,148,152,168, 91,247,
-253,247,142,171,174, 93,155,101,161,212,219,203,203, 11,109, 90,181, 42,112,224,243,115,178, 50, 50, 56,175,154, 53,249, 9,135,
- 15,123,232,197,226,180,109,219,182,169,114,115,115,247,218, 81, 40,213, 54,142, 51, 59,250, 7, 90, 7, 13,232, 90,247,250,213,
- 91,143, 28, 61, 61,120,141, 27, 70, 70, 61,136, 77,188, 73,109, 54, 11, 33, 68, 93,153,142,179,179,115,237,220,220, 92,168,213,
-106,120,122,122, 98,233,210,165,240,241,241,129, 78,167,195,229,203,151,105, 64, 64, 0, 57,119,238, 28, 2, 2, 2,144,157,157,
- 13,147,201, 4,141, 70,147,101, 52, 26,245,229, 25, 94,129, 64,176,150,199, 35,239, 1, 64,181,106,213, 31,254,242,203, 47, 6,
- 0,168, 83,167, 14, 6, 12, 24,128, 93,187,118,225,193,131, 7,224, 56, 14,148, 82, 67, 64, 64,224, 67, 30,143,212, 41,242, 72,
- 47, 29,197, 41, 94,130,231,217,179,103, 3, 95,242, 66, 39, 62, 62, 62, 3,194,195,195, 71, 12, 31, 62,220, 36, 20, 10,161,211,
-233,160,211,233,240,240,225, 67, 83,215,174, 93, 51,251,246,237,227,125,240,224,193, 10,211,105, 52, 26,159,250,249,249, 77,157,
- 60,121,242,210,149, 43, 87, 58,125,249,229,151,176,217,108,224, 56,174,228,111,241,251,189,123,247, 34, 62, 62,126, 89,105,115,
-197, 96, 48, 24,255, 22,236,245, 34,255, 40,131,245,255, 9,159,207, 95,117,236,216,177, 6,109,219,182, 21,116,234,212, 41, 50,
- 32, 32, 32, 50, 53, 53,245, 30, 0, 4, 4, 4, 68,118,239,222, 61,210,203,203, 11,203,150, 45,211,241,249,252, 85, 47,121,146,
- 74,223,236,162,125,125,125, 23,239,222,189,123,209,184,113,227,224,227,227, 19,241,255,157,103, 39,137,164,225,187, 75,151, 90,
-133, 22, 11,239,199,197,139,157,190, 63,125,122,209,246, 29, 59, 4, 45, 90,180, 32,148, 82,220,189,115, 71,250,237,242,229,178,
- 97,253,251, 39,198,196,199, 91,247, 29, 61,106,201,124,246, 44,239, 89,118,246, 76, 74,105, 94,101,250, 22,139,229,114,220,227,
- 56,255,214, 29, 90,250,157,191,118,255,214,192,254, 61, 59, 10, 5, 60,242, 56,241,217, 13, 95, 31, 15,231, 51,167,143, 27, 44,
- 22,203,229,202,116,180, 90,109,130,213,106,117,163,148,122,158, 57,115, 6,158,158,158,200,207,207,135,197, 98,129,201,100, 50,
-233,116, 58,135,220,220, 92, 24, 12, 6, 24,141, 70, 56, 57, 57,225,238,221,187,153, 86,171,245, 84,121,154, 86,171,117,172,131,
-131,195,124, 74,169,208,104, 52,166,157, 56,113, 2, 34,145, 40,208,217,217,121,186,197, 98, 65, 90, 90, 26, 46, 94,188,184,192,
-108, 54,167, 20,239, 35, 22, 75, 60,141, 70,163,181,188, 78,238,246, 70,176, 94,150,128,128, 0,191,234,213,171, 79,158, 54,237,
-179, 90,245,234, 53, 64, 78, 78, 14, 56,142,131, 66,161,128, 78,167,131,147,147, 19, 90,182,108, 25, 61,111,222,188, 60, 74, 49,
-173, 50, 19,152,150,150,150, 27, 20, 20, 52,115,252,248,241,147,107,213,170, 21, 4, 0,161,161,161,232,218,181, 43, 14, 31, 62,
-140,216,216, 88, 20, 20, 20,216,174, 95,191,126, 32, 45, 45,141,173,237,197, 96, 48, 24,204, 96, 85,157,204,204,204,236,128,128,
-128, 35, 55,111,222,236, 61,100,200, 16,156, 57,115,230,109, 0,147, 1, 64, 34,145,188, 61,100,200, 16,220,188,121, 19,143, 30,
- 61, 58,146,153,153,153,253, 42,126, 83, 44, 22, 27, 76,166,194, 96,148,131,131,131, 67, 21,119,175, 86,212, 52, 8, 0,213, 42,
-248,172, 92,120, 2,129,111, 84,247,238,130,252, 91,183,212,107,174, 94,253,122,203,150, 45,130,214,173, 91, 19,139,217, 12, 27,
-199, 33, 36, 36,132,116,234,220, 89,190,126,203, 22, 55,155, 86,123,238,155,207, 63, 63,191,250,221,119, 11, 98, 41, 77,180, 39,
-129, 70,163,113,249, 71, 19,198,118, 57,121,250,156, 95,120,120,136,251,145,227,167,163,221,221,156,101,181, 67, 67,229,121,249,
-249,182, 25,211, 62, 19, 24,141,198, 31, 43,211,209,235,245,123, 78,156, 56,209, 63, 48, 48,208,243,222,189,123, 48,153, 76,176,
-217,108,232,212,169, 19, 40,165, 18, 0,156, 64, 32,192,163, 71,143, 96, 54,155,179,226,226,226,210, 30, 63,126, 44, 1,176,176,
- 34, 93,131,193,144, 84,250,255,160,160,160,214,189,122,245,130,213,106, 69,247,238,221,177,127,255,254,214,105,105,105,107, 74,
-109,146,244, 10,158,132, 64, 41,173,227,239,239,191,187,232, 35,187, 58,183,251,250,250,134,133,134,134,206, 91,176, 96,129, 48,
- 48, 48, 16, 28,199,193,205,205, 5, 90,173, 30,185,185,185,136,136,136, 64, 96, 96, 32,190,253,246, 91,160,112, 4,160, 93, 17,
-182,228,228,228, 4, 0, 31, 70, 68, 68,136, 52, 26, 77,164, 94,175,159,213,169, 83, 39, 68, 71, 71,227,242,229,203, 31,105,181,
-218, 60,185, 92,110,241,243,243, 27,206,227,241,228,102,179,121,127, 86, 86, 86, 22,171,162, 24, 12, 6,227, 53, 55, 88,222,222,
-222, 50, 7, 7,135, 55,223,123,239, 61, 23,142,227, 32, 18,137,162, 60, 60, 60,230,231,228,228, 20, 84,245, 71,117, 58,221,246,
- 45, 91,182,116,253,225,135, 31, 68, 61,123,246,172, 25, 16, 16,208, 20, 0, 6, 14, 28, 88,211,209,209, 17, 91,182,108, 49,235,
-116,186, 87, 54,167,145,197, 98,105,219,164, 73, 19,228,229,229, 33, 49, 49,241, 94, 85,246, 61,112,224,128, 12,133,253,174, 42,
-252,172, 34,172, 38,147,171,139,191, 63,239,217,233,211,230, 60,181,218,183,109,187,118,196, 98, 54,131,199,227, 33, 55, 55, 23,
-201,201,201,112,118,113, 33,143,226,226, 20,107, 63,251,236, 64,181,250,245,197, 54,147,201,189, 10,102, 66, 75, 8,121,251,163,
- 15, 63,216,179,117,235,111, 30, 74,165, 58,222, 65, 42, 53, 73,196, 66,239,143, 63,252,192,150,151,151, 55,138, 82,106,207,121,
- 90,184,117,235,214,238,221,187,119,191, 19, 20, 20,228,149,157,157,237,163, 84, 42,109,121,121,121,124, 20,246,165, 34, 0,112,
-250,244,105,168,213,106,171,205,102, 59, 7, 96, 46,165,212,100,111, 90,221,220,220, 28, 59,116,232,208,220,219,219, 27,106,181,
- 26, 30, 30, 30,104,216,176, 97,115, 55, 55,183,237,121,121,121,154, 87, 89,184,143, 31, 63,238, 72, 41,109, 78, 41, 69,247,238,
-221,237,218,135, 16, 50,168, 87,175, 94, 66, 30,143, 7,189, 94, 7,137,196, 1, 10,133, 19, 28, 29,157, 81,187,118,109,164,165,
-165,161, 91,183,110,230,184,184,184,205,233,233,233,127, 84, 53, 77, 42,149,170, 75,139, 22, 45,222,155, 48, 97, 2,108, 54, 27,
-250,245,235,135,148,148,148,175, 18, 18, 18, 14,120,120,120,244,127,231,157,119,220,220,221,221, 49,101,202, 20, 41,128,165,172,
-138, 98, 48, 24,140,127,184,193,170,168,205, 51, 32, 32,160,137,135,135,199, 71,142,142,142, 46,167, 78,157,146, 3, 64,235,214,
-173,193,113,220, 42, 63, 63,191,159,211,210,210, 46, 86,229, 71,243,243,243,213,190,190,190,251, 46, 95,190, 60,120,224,192,129,
- 56,126,252,248,168, 34,131,133,203,151, 47,227,233,211,167,251,242,243,243,213,175, 34,131, 1, 1, 1, 61,218,183,111, 63,176,
- 73,147, 38, 56,120,240, 32,108, 54,219,165,170,236, 95,122,196, 32,202, 24, 69, 88,252,153, 93, 98,124, 62, 8, 33,176, 90,173,
- 0,128,156,236,108,196,198,196, 32, 47, 63, 31, 70,131, 1, 90,157,206, 86,187,122,117,189,202,100, 18, 18,160, 74,109, 92,148,
-210, 36,133, 66,145,172,211,105,189,220, 60, 92,245,114, 7, 7, 40,213, 42,209,141,235, 87, 52,148,210, 39,118,106,152, 8, 33,
-237, 14, 31, 62, 60,147,207,231, 15, 81, 40, 20,152, 48, 97, 2,191,125,251,246, 16,137, 68, 48, 26,141, 80, 42,149,216,178,101,
- 75,182,213,106,173, 81,100, 72, 20,114,185,124, 35,159,207, 79, 85,171,213, 95, 86,246, 27, 18,137,164,125,223,190,125,249, 70,
-163, 17,115,231,206,197,204,153, 51,209,189,123,119,254,181,107,215,218, 3,216,255,170, 10, 54,199,113,232,210,165, 75,233, 78,
-238, 15,237,217, 79, 40, 20,214,174, 85,171, 22,178,179,179,145,157,157, 13, 79, 79, 79,248,249,249,193,219,219, 27, 75,150, 44,
-161, 75,151, 46, 61,107,179,217, 54,103,100,100,228,188, 68, 89, 28,254,246,219,111, 15, 27, 60,120, 48,180, 90, 45, 78,157, 58,
-133, 86,173, 90,225,219,111,191,245, 60,127,254,252,123, 77,154, 52,129, 80, 40,196,217,179,103, 97, 54,155,211, 88,245,196, 96,
- 48,254,109,188, 46,253,175, 42,141, 96,185,186,186, 58, 57, 56, 56,140,235,221,187,119,235,254,253,251, 99,254,252,121, 37,223,
-241,120, 60,108,218,180, 73,177,103,207,158,207, 3, 3, 3,219,113, 28,247,203,179,103,207,242,236,253, 97,142,227,246,108,221,
-186,181,103,139, 22, 45,100, 29, 58,116, 8, 41,186,249,154,182,110,221,170,227, 56,110, 79, 85, 51,242,226,164,143,254,254,254,
-245, 4, 2,193,192,222,189,123,215, 27, 61,122, 52,238,223,191,143, 45, 91,182, 60,174, 93,187,246,133, 42, 74, 39, 86, 50,138,
-112, 65,101,209, 44,190, 88,156,171,204,200,112, 81, 4, 5, 9, 93, 29, 29,211, 15, 30, 60, 24,216,185,115,103,146,146,146,130,
-252,252,124, 24, 12, 6, 92,191,126,157, 19, 0, 73, 2, 87, 87,146,116,249, 50,225,139,197,185, 85, 61, 6,129,190,174,161, 95,
- 77, 27, 95,205, 96, 48,212, 85,169, 84, 86,161, 80, 40, 12,240,113, 73,169, 98,225, 54,202,229,242,198, 0, 4, 28,199,233,220,
-220,220,100,199,142, 29,131, 88, 44, 6, 33, 4, 81, 81, 81,112,112,112, 16,201,229,242,100, 0,240,241,241, 17,175, 90,181,202,
-121,196,136, 17,231, 43,211,110,223,190,189, 32, 56, 56,184,107,237,218,181,113,233,210, 37, 60,124,248,240,217,149, 43, 87,252,
- 27, 55,110, 12,127,127,255,174,237,219,183, 63,116,230,204, 25,235, 43,186, 72, 95,170,147,187,205,102,163,132, 16,240,120, 60,
-112, 28,135,236,236,108,212,168, 81, 3, 43, 86,172,192,146, 37, 75,126,124,217, 62, 82, 17, 17, 17,162, 6, 13, 26, 12, 28, 60,
-120, 48,158, 60,121,130, 5, 11, 22,228,103,101,101, 93, 58,118,236, 88,143, 9, 19, 38,240, 91,181,106,133,220,220, 92,172, 91,
-183,206, 26, 29, 29,189, 51, 51, 51,115, 15,171,106, 25, 12, 6,227, 53, 52, 88,254,254,254,189,220,220,220,222, 27, 58,116, 40,
- 63, 44, 44, 12,153,153,153,208,104, 10, 12,245,234, 69,114, 0,143,138,197, 34,179, 92, 46,199,216,177, 99, 17, 21, 21,213,244,
-243,207, 63,111,226,227,227,179, 41, 35, 35, 99,151, 61, 63,156,153,153,169,243,245,245,221, 57, 97,194,132,133,183,110, 69,215,
- 0,128,107,215,174, 61, 77, 75, 75,155,150,153,153,169,171,162,185, 42,158,204,146, 72,165,210,171,161,161,161, 9, 61,122,244,
-112,234,223,191, 63, 60, 61, 61,113,243,230, 77,124,251,237,183,113, 38,147,105,230,171,186,129, 87, 5,171,209,152,113, 99,239,
- 94,199,246,111,190,233, 52,177, 87,175,197, 31, 76,152,240,195, 87, 95,125, 37, 8, 11, 11, 35, 58,157, 14, 87,175, 94,165,187,
-118,237,178,172,255,250,235,165,144,203,133,151,119,237, 18,155, 76,166,164, 42, 70, 71,218,245,236,222, 46,108,241, 15,203, 97,
-208, 23,224,234,165, 63,144,159,159,141, 85,171,119,135, 5, 4, 4,180, 75, 77, 77, 61, 91,133,227, 89,251,248,241,227, 94,148,
- 82,136,197, 98,204,157, 59, 23,126,126,126,112,114,114,130, 70,163,193,228,201,147,157, 63,249,228, 19,103, 0,184,127,255, 62,
- 20, 10,133, 93,186, 49, 49, 49,141,198,143, 31, 47,179,217,108, 56,114,228,136,153,207,231, 47, 62,126,252,248,162,250,245,235,
-139,218,183,111, 47, 91,191,126,125, 99, 0, 87, 94,149,193,122, 25,108, 54, 91,226,177, 99,199,162,134, 12, 25, 66, 5, 2, 1,
- 81, 42,149,112,118,118,198,138, 21, 43,116,233,233,233, 47, 61, 65, 91,110,110,174,176,110,221,186, 34,142,227,176,115,231, 78,
- 60,123,246,236,211,204,204,204,108, 63, 63,191, 35, 83,167, 78, 29, 23, 22, 22, 22,240,232,209,163,103,122,189,126,101, 90, 90,
- 90, 42,171,154, 24, 12, 6,227,245,141, 96,189,121,228,200, 17, 62,199,113, 88,189,122, 53,110,222,188, 73,115,114,114,102, 18,
- 66, 54, 58, 57, 57,217,114,114,114,222, 28, 51,102, 76,255,153, 51,103,146, 54,109,218,224,242,229,203,164, 70,141, 26, 3, 1,
-236, 42,117,163,238, 92,209, 92, 25, 42,149,234,122,102,102, 70,141, 82, 19, 75,214,144, 72, 28,174, 87,114,243,127, 78,243,197,
-201, 44,249,124, 94,179,185,115,231,106,125,125,125, 77,247,238,221,195,202,149, 43,185, 27, 55,110,156, 22,139,197,171,210,210,
-210,140,246,104,190, 10, 74,107,138,173,214,155,155,167, 78,173,211,168, 95, 63,238,189, 41, 83, 10, 68, 82,233,199,139,151, 47,
-255, 76,169,209,248,129, 16,234,238,236,156,180,122,238,220, 5,221,251,246, 45,184,127,246,172,195,173,227,199,133,158, 22,203,
-237,170,164, 51, 53, 53,245,108,104,205, 32,108, 88,243, 3,204,102, 35,210,159, 21,250,179,156, 92, 21, 42, 50, 87,101,105, 90,
-173, 86,213, 27,111,188, 33, 2, 32, 29, 57,114,164, 56, 43, 43, 11, 53,107,214, 4, 0,168,213,106,252,241,199, 31, 8, 15, 15,
- 7, 0,220,189,123,183,228,125,101,233,116,116,116,236,220,182,109, 91, 36, 37, 37,225,193,131, 7,151,158, 61,123,166,244,247,
-247,191,148,156,156,220,190, 73,147, 38,216,181,107, 87,167,242, 12, 86, 85,207,145, 61, 6,171,156,188, 47,220,179,103,207,224,
-203,151, 47,247,158, 50,101,138,160, 99,199,142, 0, 0,173, 86,107,160,148,218, 94, 70,179, 52, 22,139,165,120,210, 83, 29, 0,
- 20,153,169, 47,255,140,230,159, 45,159, 76,147,105, 50, 77,166,249,191,160,249,111, 50, 88, 86,142,227,112,230,204, 25,236,222,
-189,219,102, 50,153,166,167,167,167,199,148,250,126,125, 96, 96,224,249,129, 3, 7,126, 31, 27, 27,203,127,240,224, 1,236,185,
- 1,149,198, 96, 48, 88, 94, 92, 42,216, 96, 48, 88,254,108,166, 54,108,216,128,140,140, 12,115, 74, 74,202, 9,171,213,186,231,
- 79,142, 70,252,211,163, 8,215, 83,106,124,147,144, 19,179, 90,183,238, 50,243,248,113,201,123, 95,124, 97,124,123,244,232, 79,
-109, 38,147,133, 47, 18,113, 98,185,156,103,147, 72,132,247,207,158,117, 88,246,254,251,110,122,163,241,200,230, 42,116, 28, 47,
- 21,193,194,219,239, 77,130,190, 84, 4,235,242,245, 88, 84, 53,130,101, 48, 24,234, 2,128, 84, 42, 77, 6,224,243,214, 91,111,
-129,227, 56,232,245,122,104, 52, 26,164,165,165,169, 70,143, 30,109, 3, 0,185, 92, 46, 24, 56,112,160,147, 93, 7,178, 90, 53,
- 31, 62,159,143, 67,135, 14, 65, 34,145,156, 2, 0,137, 68,114,234,248,241,227,237,135, 15, 31,142,192,192,192,160,226, 73, 80,
- 42,210,241,142,236,191,157, 2,161, 32,168, 85,120,165,163,150, 87,100,255, 59, 4,136, 43,154,229,253, 97,195,134, 13, 1, 59,
-251, 93,149, 38, 59, 59, 91, 11, 96,157,183,183,247, 31,159,126,250,233, 91,205,155, 55,111, 51,115,230, 76, 66, 41,253,211, 11,
-163, 83, 74, 97,179,217, 88,173,195, 96, 48, 24,255,102,131, 69, 8,249,189, 67,135, 14,195, 40,165,124, 30,143,183,229, 5,115,
- 5, 0, 72, 73, 73,121, 26, 16, 16,176,186,122,245,234, 37, 11, 64, 87,241,134,147, 73, 8,249,150,199, 35,159, 21,254, 95,245,
-137, 37, 75, 45, 73,242, 25, 0,194,227,241, 55, 70, 71, 71,127,145,156,156,156, 93, 85,195, 87, 22,175, 98, 20, 33, 0,108,165,
- 52, 97, 24, 33, 71,167, 68, 70,118,238,254,254,251,168,215,189,187,147, 95,112,176, 77,111, 54,115,119, 47, 92, 32,151,118,238,
- 20,221, 58,126, 92,168, 55, 26,143,236,166, 52,185,170,233, 76, 77, 77, 61, 91, 51, 36,224,216,160,129, 61,187,134, 84,247, 3,
- 0,196, 39,164, 33, 39, 79,117,172, 42,230,234, 5,163,213,111,197,138, 21,251, 69, 34,145,160,244,146, 51,102,179, 57,175,216,
-132, 17, 66,252, 86,175, 94,253, 59,143,199, 75,170, 76, 47, 38, 38,230,216,172, 89,179,186, 63,125,250,244, 92, 74, 74, 74, 42,
- 0,196,199,199,167,250,249,249,237, 78, 75, 75,235,145,156,156,124,152,218, 17,122,122, 97,177,103,220,191,176,195, 1, 64, 84,
-241, 98,207, 47,187,214, 96,105,138, 76,249,226,128,128,128,125, 61,122,244, 24, 70, 8,201,248, 51,122, 10,133,194,170,215,235,
-173, 28,199, 9,204,102, 51, 85, 40, 20, 86, 86,253, 48, 24, 12, 70,149,104, 2,160,120,229,144,226,192,137,231, 11,239, 77, 0,
- 74, 47,229, 87,252,127, 54,128,235,165, 52, 74,127, 94,217,190, 0,144, 3,224, 78,209,103,127,206, 96,165,166,166, 30,134, 29,
-139, 57,219,187, 93, 5, 6,105, 58, 33,100, 89,177, 89,250,179, 26, 86,171,245,149,172,223,198,227,241, 18,250,244,233, 83,165,
-237, 43,219,230,119, 74,147, 62, 38,100,211,193, 31,127,108,112,100,229, 74,127,155,213,234, 78, 0,202, 23,139,115, 77, 38, 83,
-162,167,197,114,187,170,145,171,210, 60,137, 79,237, 6, 0,181,107,215,166,113,113,113,127,122, 52, 6,165,244, 54,128,192, 74,
-182, 73, 3,208,198, 30,189,148,148,148,253, 40, 99,164, 96, 90, 90,218, 1, 0, 7,236, 77, 87,201, 98,207, 0,143, 35,220,160,
-186,173, 7,239, 4,192, 21, 47,246,252, 42, 73, 77, 77,141, 7,240,245,159,213,121,242,228,137,169,122,245,234,123, 23, 46, 92,
-216,255,206,157, 59, 7, 83, 82, 82, 76, 96, 48, 24, 12, 70,149,204, 21, 33,228, 96,209,189,167,119,209, 67,254,193, 23,223, 23,
-111, 83,188, 93,233,109,138, 53, 94,252,188,162,125, 1, 96,218,180,105, 95, 44, 88,176, 64, 6,192,238,190,184,130,255,133,163,
-246, 42, 22,181,125,213, 11,227,166,166,166,174,249, 43,242,186,188,208, 64, 93,249, 43,143,103,108,108, 44,121,157,175,178,226,
-197,158, 75, 17,249, 79, 72,119, 66, 66,194,166,246,237,219,255,150,146,146,194,162, 87, 12, 6,131, 81, 53, 60,203, 50, 68,229,
-248,129,222, 21,125,255,220, 3,123, 25,219,149,245, 63, 33,228,224,130, 5, 11,122, 87, 37,193, 60,118,206, 24,140,255, 63,254,
-142, 81,172, 12, 6,131,193, 40,155, 23,163, 86,197,166,235,197,255,167, 77,155,246, 5,170,208, 60, 8, 20,206,204,221,185,156,
- 31,181,123,116, 0, 33,164,243, 75,100,234, 4,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 93,154,149,105,151,179,127,175,
-242,154,244, 42,106, 46,124,241,125,101,251,218,177,237, 31, 85, 57, 16,127,217, 11, 64,103,166,201, 52,153, 38,211,100,154, 76,
-147,105, 50,205, 63,249,106, 66, 41,237,133,194, 85, 78, 40,165,180, 23,165,180,251,180,105,211,166, 23,127, 54,109,218,180,233,
-148,210, 78,197,219, 21,109, 83,178, 79,241,103, 47,254,125,241,179, 74,182,181, 59,205,255, 19,125,176, 24, 12, 6,131,193, 96,
- 48, 42,224, 58,128, 38,165,162, 75,217, 0,238, 46, 88,176, 32,191, 84,223,168,108, 0,183, 1,212, 47,218, 46,187, 40,144, 84,
-186,239,148,169,232,127, 83, 25,219,152,236,217,214, 94,152,193, 42,135, 6,190,252,175,131, 2,188, 26,151, 68,249, 10, 39,135,
- 4, 87, 52,139, 64,201,116, 2, 28, 7, 74, 41,210,178,148, 55,239,100,210,175, 94,246,247,194,252,137,155,151,131,195, 82,142,
-210,214, 69, 31,157, 85,229, 26, 39,221, 83, 81,165,189, 26,117,124, 72, 29, 7, 30, 62,229, 40,234, 1, 0,143,224,142,129,195,
-119, 15, 51,232,195, 63,123, 60, 8, 33,164,174, 39,198,138,165,178,161,206, 46,174,181,242,243,115,226,204, 6,227,142, 7,217,
- 88, 69, 95, 98,218,244,154,110,164, 57, 71,241, 5, 0,158,144,135,239, 99,115,233,105, 86,234, 24, 12,198,255, 19,252, 63,185,
-127, 89, 83, 0,253,217,193, 69,148,157, 22,187, 76,214,139, 92,179,115,187,255,119,170,100,176,234,122,145,247, 65, 48, 27, 0,
- 5,197,156,251, 89,244,151, 42,237,239, 71, 58, 59,240,249,107, 1,240, 13,102,219, 20,202,225, 92,153, 55,115, 30,218, 58,136,
-248,223, 3,224, 12, 54,219,187,247,211,236,239, 15, 22, 25, 64,186, 11, 56,222,102,142, 82,161,141,163, 27, 65,113, 80, 33,194,
-197,203,169,212, 80,149,180, 6, 5,120, 53,222,123, 45,189,235,233, 95, 38,162, 89,189,154,160, 54, 43,192, 89, 32,107,243, 41,
- 78, 46,121, 11,205,234, 4,129,114, 22,128,179, 66,209, 99, 49,122, 68, 58,191,244,197, 17,230, 79,220,130, 61,188,238,173, 89,
-179,214,199, 47, 36,130,112, 86, 51, 98,174, 29, 27,241,201,103, 51, 59, 70, 58,147, 72,123, 76, 86,125, 63,242, 94,205, 26, 97,
-159, 78,154,253, 3,223,239,255,216,187,202,240, 42,142, 54,122,230,238,213,220,184,123, 66,144, 36, 36, 4,119, 2, 4,247, 2,
-193,165,133,210, 22, 74, 41, 90,188, 64, 75,177, 22,167, 72,145,175, 5,138, 83,164, 80, 36,184,107,128, 16,146, 16, 8, 18,119,
-151,171,187, 59,223,143, 72, 3, 68,110, 2,245, 61,207,179,207,189,107,103,103,103,102,103,206,188, 51,243,142,147,171, 49,199,
-106,216,164,231,225,141,215,125, 55,255,151,134, 78,100,229,131, 4,186,205, 80, 33,229,107,139,177, 98,185,108,144,145,194,184,
- 78, 65, 65,238, 83, 78,167, 63,224,231, 36,238,190,124,197,154, 70, 1, 93,122,154,112,185, 73, 34, 61, 15,223,253,251,246,186,
-127,191, 97, 99, 79, 66,200,123,148, 82,190, 42,239,204, 83,204,136,220,249, 73, 79,137,152, 33, 62, 31,110,101, 80,133,169,175,
-165,225,107, 79,134, 17, 90,185,155, 8, 74,112, 37, 44,153,238,169,206, 51,124,236,201,255, 8,133, 23, 8, 14, 18,138,189,143,
- 82,104,138, 80,206, 9, 16,240,239,130, 72, 36,186,192,243,124,135,119,201, 73, 8,105, 73, 41,189, 41,196,238,127, 19, 85,179,
- 96, 17, 44,122, 20, 21,107, 9, 78,135,122, 94,181,190, 1, 80, 37,129,165, 96,152, 29,119,158, 36, 59,128,213, 97,235,226,241,
-251,180,122,128,213,235,192,177,122,112,172, 30, 44,171, 3,167,215,131,234, 53,152,255,227, 5, 64,155,139,166,126,158, 59, 0,
- 56, 26,250, 12, 9, 21,253, 28,124, 53,200,138,104,179,177,103,211,210,207, 99, 83,243, 62, 63, 27,146,144, 86,207,158,204, 14,
- 75,193, 79, 85, 17, 2, 23,126,152,132, 93,135,127,139, 91,251,191,252, 8,158, 82, 88,153, 25,121,143,232,253,200,117,231,209,
- 11,177,107,118,168, 35, 0,192,220, 88,230,253, 65,200, 19,183,183, 73, 4, 59,133, 98,205,230,141,223, 59, 56, 90, 27, 17,246,
-250, 50,176, 28, 7, 87,247, 94,204,236, 9, 35, 28, 23,173,222,182, 26,192,168,138,238,175,107, 79,124,189,106,251, 76,219,241,
-219,117,183,130,220, 20,109,208,174, 57, 81, 84, 3,189,131,179,143,228,155,165,171,152,185, 51, 39, 77,173,107, 79,110, 69, 36,
-211,176, 74, 10, 3,145,143, 29,142, 46, 93,182,162, 65,199, 30,189, 77,248,188, 84, 70,157,159,231,181,245,199,109, 95,213,109,
-208, 92,217,214,207, 69,154,114, 96, 28, 81,229,102, 64, 39, 82,200, 59,214,235,108,166, 26, 57, 84,191,117,251,174, 9, 0,214,
- 85,169,249, 87,170,123,154,231,171,223,154, 36, 20,109,239,223,188, 48,150, 75,184, 3,202,233, 1, 78, 87,242, 11, 78, 15,202,
- 23,254,182, 24,247, 35, 0, 84, 75, 96,137, 40,186,158,189,122,199, 49, 57, 41,177,217,234, 21, 75,102,251,218,145,147,224,240,
-115,120, 6, 46, 85, 85, 88, 10, 16, 32,224,239, 11, 66, 8, 75, 41, 21,191, 99,206,158,148,210, 19,111,201, 49, 29,192, 71, 69,
-187,219, 40,165,203,223, 65,184, 92, 0, 56, 20,237, 38, 81, 74,133, 53, 80,255, 82,129, 5, 40, 64,121,224, 96, 63, 0, 48,170,
-234,195, 40,160, 0, 97, 0,125, 62,250,246,232, 2, 27, 59, 7, 64, 95, 0,232, 10, 0,189, 10,208,231, 3,122, 21,210, 18,163,
- 1, 93, 62,240,236, 36, 88, 74,229, 85,126, 43, 77, 54, 16,121, 0,157, 26,187,193,214, 92,129, 73,125,125,109,182,156,138,220,
-182, 45,232,113,103, 0, 67, 12, 10, 43,165,104, 81,191, 14,214,110,203,143,248, 53, 56,165, 27, 0,244,106,100,115,170,133,175,
-187,235,154, 29,234,136,223, 66, 50,186, 3, 64, 15, 63,243,147,205,189, 29,221,248,183,176,238,242,148,182,117,170, 81,135,112,
-247, 55,131,207,137, 67, 78,142, 10,113, 47,118,194,210,185,137,136,227,209,190,178,251,141, 24,204,154,248,229,183,146,130,156,
-100, 45,167, 75,229,108, 68,153, 98,177,156, 39, 72,184,164,201,231,179,184,201, 31,143,228,190,152,191,100, 22,128, 17, 21, 90,
-131,236, 48, 97,229,202, 53,245,219, 52,173,107,151,244,203, 36,146,151,153, 12,150, 81,202,251,182,106, 3, 11, 79, 95, 62,249,
-226, 74, 34,171,213, 25, 22,214,181, 16,127,125, 55, 94,222, 60, 68,252, 27, 7,202,127,218, 35, 29, 89,158,192,242,180, 37,254,
-221,218, 53,223, 87,203,205,201,145, 82, 30, 60, 79, 65,121, 14, 31, 14,236,138,217,251,159,129,227, 56, 12,232,230,223,233,219,
-177, 29, 41,207,243,160,148, 71,108, 82,122,193,249, 91, 17,157,162, 50,232, 45, 67, 44, 83, 13, 91,118,240, 15, 9,190, 89, 87,
- 31,121, 12, 77, 71, 44,141, 32,192,213, 82,121,206,255,222,233,159,234, 2, 63, 86,183, 16, 34, 62,118,224, 94,158, 90, 6,183,
-118,159, 48,155,247,156,178,205, 78,141,255,224,151,157, 27, 7,110,218,188,121, 23,128,113, 66, 49, 34, 64,192,191, 3,148,210,
-119, 46,178,162,162,162, 18,223, 70,100,185,184,184,180, 3,240, 93,241, 72, 12, 66,200,119, 30, 30, 30,243,127,111,160,190,210,
-198,203,230, 56,110, 68, 92, 92,220,229,138, 56,123,247,238,237, 4,192,163, 20,167, 7, 33,196,163,172,107, 45, 44, 44,184,214,
-173, 91,191, 60,126,252,120,130,144, 67,254, 88,129, 21, 17,115, 96, 82, 99, 77, 98, 30, 0, 68, 24,144, 89, 95,233,218, 83,235,
-185,101,219,191,122,127, 89,189, 26, 86,200,205,215, 34,232,238, 75,112,156, 30, 28,203, 22, 89,178, 88,112,172, 30,221, 26,218,
-160,181,122, 28,214, 29,127, 12,150,227,151, 86,196,249, 58,116,148, 31,214,168,243,224,253, 60, 79,101,114,137, 40,219,203,213,
-218,110,218,128,134,162, 73,125,235, 65,165, 99, 7,251,218,147,243, 97,201,116,171, 65,156,252,155, 46,139,104, 89,199, 56,182,
-210,119,175,192,250,212, 98,104,239, 46,102, 84,147, 13,125,218, 51,228, 22,232,241, 44, 93,143, 36,117, 22,228, 36,209, 32, 78,
-158,162,129,179,163,163,241,181,125, 51, 95, 88,139,115,196,118, 98, 86, 34,163,172,132,227, 41,131,172, 48,141,117,221, 46,226,
-226,113, 89, 21,133,211, 72,105,250,126,187,174,189,204, 99,118,127, 66,140,188,186,193,174,177, 43, 94, 92,222,142,148,187,199,
-145,151,151, 67,228,217, 89,176,183,174,141, 30, 35,134, 96,249,144,102,200,205,201, 5,147, 24,101, 46,147,200, 45,202,227,164,
- 28, 70,172,252,118,177,163,152, 17, 21,198,103,241,198,233,161,210,104, 0,142,133, 66,204,131,208,226,115,122,112,122,157,178,
- 65,224,204,241, 0,110, 85,246,238, 97,201,116, 79, 61, 59,210, 22,188,190, 46,213,171, 64,128,171,143, 82,104,137,232,241,181,
- 39,195,154,116, 27,221,150, 18, 92,169, 78, 26,249, 89,163,119, 83, 15, 19, 99,227,156, 8,196, 29,252, 28, 81, 80, 80,251, 54,
- 31, 97,216,135, 19,148, 91,182,108,233, 67, 8,249,180,244, 24,180, 63, 98,241, 83,129, 83,224,252,167,114,154,155,155,215,172,
- 81,163,198,124,189, 94,223, 78, 42,149,218,235,116, 58,240, 60,159, 36,147,201,174,188,124,249,114, 97,118,118,246,243,191,219,
-187,135,132,132, 24, 44,178, 12,225,148, 72, 36,120,252,248,241, 83, 67, 69,214,235,156, 18,137,228,231,171, 87,175, 98,255,254,
-253, 0,128,200,200, 72,120,122,122, 26,151,117,239,139, 23, 47,140, 3, 2, 2,126,198,107, 43,112,188,206,249,240,225,195,154,
-199,142, 29,195,193,131, 7, 1, 0,143, 31, 63,134,151,151, 87,153,225,185,122,245, 42, 51,124,248,240,154, 0, 18,254,232, 52,
-250, 87, 10,172,162,245,117,201,235,255,203,192, 51, 55, 75, 89, 99,168, 57, 0,120, 86,213,135,133, 37,209,111, 27, 58, 74,186,
-159, 59,184,161,157, 66, 42,194,130,173,211, 98, 83, 51,114, 91,138, 9,120, 0, 96, 41, 68,150, 38,178, 27, 75, 63,104,232,150,
-153,167,198,175,183,227, 47, 63, 74,174,154, 41,244, 81, 2, 61, 3,192,226,247, 10,146,120,125,176,252,204,222,189,179,186, 55,
-152,210,183, 1,142, 94,127, 57, 5, 64,165, 94,218, 41,207,131,242,108,201,160,246,162,166, 2,192,179, 40, 61,166,155, 7, 45,
- 60,198, 87,205,130, 21, 64,136, 56,211, 14, 61,172,148,178,245, 99,199,126,108,166, 79,125,130, 12,173, 20,177,153,106, 36,169,
- 36,200, 19,219, 33, 62,226, 33, 39, 34, 56, 83,185,149, 5, 57,224,212, 22, 86, 50, 19,145, 95,151,241,206, 57,167,231,100,202,
- 40,203,152,245, 91,100,145,118,110,213, 75, 86,149,154, 79, 8, 42, 93, 68,219,220,220,194, 83,157,254,146,201,206, 76,131,133,
- 67, 61,116, 31,220, 27, 95,247,242, 69,110, 78, 62, 82,175,255, 70,235, 56,154,145,232, 43,187, 48,183,135, 15,210,147, 19,161,
-209, 3, 36, 95,147,161,214,170,243,202,141, 71, 17, 54, 79,254, 98,198, 48,119, 71, 91,227,226,201, 2,148,231,208,208,167, 22,
-186,180,107,129, 51, 87,175,225,206,195, 72,240, 69,147, 5, 40,207, 35, 46, 37, 51, 89,173,227,182, 87, 41, 66, 57, 22, 84,175,
- 46, 83,128,161, 26, 93,131,245,237,137,146, 3,230,181,172, 99, 58,102, 86,111,119, 83, 99, 57,129, 90,207, 65,173,213, 35,247,
-218,122, 88,215,168, 15,165, 66, 65, 26, 67, 37, 6,160, 23,138, 18, 1, 2,126,199,160, 65,131, 20,201,201,201, 23,123,245,234,
-229,219,165, 75, 23,101,219,182,109,145,159,159,143,160,160, 32,228,231,231,187,187,186,186,186, 7, 5, 5, 5,182,108,217, 50,
-204,197,197, 37,224,192,129, 3, 85, 25, 35, 43,198,239,131,212,121, 0, 44, 33, 4, 69,199, 8, 0,254,109,214,161,149,201,100,
-136,142,142,126,103,150, 44,169, 84, 10,181, 90,141,248,248,248,167,213,177,100,229,229,229, 73,157,157,157, 97,107,107, 11,142,
-227,144,159,159,143, 35, 71,142, 32, 59, 59, 27, 60,207,195,200,200, 8,139, 86,110, 69,196,189,139,184,117,235, 22,178,179,179,
-165,149,113,198,197,197,145,134, 13, 27, 66,163,209,128,101, 89,168,213,106,156, 61,123,182,100, 95, 44, 22, 99,198, 55,171, 17,
-121,247, 34,238,223,191,143,184,184,184, 63,101,117,144, 42,104,145,127,165, 5,235,173,193,113,236,236, 45, 59,246,222,152, 61,
-110, 8, 38, 12,237,236,186,112,195,161,206, 97,169,116, 7, 0,248,218,146, 15, 70,118,168,227,102,161,148,224,235,221,119, 1,
- 74,103,191,237,243, 66,211,105,100, 61, 7, 50,229,240,173,232,139,115,134, 52, 70, 45, 71, 51,207,218,181,137, 44, 42,202,128,
- 53,255,120, 22,150, 38,114,239, 94,141,108, 78,129,231, 97, 97, 42,175, 11,142,133,133,137,220,187,135,159,249, 73, 0,176, 80,
- 74,235,150,101,233, 42, 15,205,220,164,159, 40,229,226, 79,140,155, 56,186,141,234,211,197,168,103,159, 64, 35, 19, 9,139,244,
- 91, 65,200,145,184, 64,111,229, 14,141, 62, 3,113,207,163,184,115, 55,195,227,211,114, 53,211, 42, 13, 38,197,229,248,231,143,
-109,107, 54,232, 98,153,118,124,110, 74,205,209,187, 61, 68,224, 69,185,187,250, 39, 27,219, 53, 55,186,253,244,121, 30, 79,223,
-180,224,188,142,156,236,236,151,122, 14,142, 42, 78,108, 26,117,225, 39,204,234, 81, 31,153, 25, 41, 80,235, 88,100,171, 88,157,
-131,133, 66,174,121, 30, 10,141,142,133, 86,207, 67, 98,225,140,160, 27, 15,211,120,189,190,220,181, 40,163,210,232,125, 0, 38,
-165,143,213,182, 37, 13,103,154, 25,221,135, 94,133,232,184, 4,236,248,237, 70,227,162,235,170,223, 58,229,217,194,110,230, 82,
-150, 43, 66,209,182, 58,131,219,125,236, 73,115, 35,133,244,251,239,166, 12,247,109,229,101, 37,231,227,110,128,240, 58, 24,115,
- 98,168,100, 28,204, 93,107,129,215,230,210, 2,181, 58,235, 17, 32,120,102, 23, 32,160, 20,234,214,173,235, 96,110,110,254,232,
-139, 47,190,176,234,223,191, 63, 14, 31, 62,140,156,156, 28,108,223,190, 29,107,214,172,193, 87, 95,125, 5,189, 94,143, 45, 91,
-182, 40,127,249,229,151,230, 27, 55,110,140,115,119,119,175, 23, 29, 29, 93,217,130,234, 4,128, 28,128,164,168,238, 34, 0,248,
- 19, 39, 78,160,103,207,158, 56,113,226, 4, 95,116,140, 35,132,232, 41,165,154,234, 10, 44,153, 76,134,236,236,236,119, 38,178,
- 76, 76, 76, 32,147,201,144,155,155, 91,101,145,197,178, 44, 19, 23, 23,135,236,236,108,116,233,211, 7,171,151, 46, 69,135, 14,
- 29,208,165, 75, 23, 80, 74,113,246,236, 89,116,110,227,135, 33,239, 5, 32, 60, 60, 28, 44,203, 26, 20,222,164,164, 36, 36, 39,
- 39,163,123,159, 62,216,186,113, 35, 90,180,104, 1,111,111,111,176, 44,139,139, 23, 47, 98, 96,183, 54, 80,244,235,140,200,200,
- 72, 33, 83,255, 83, 4, 86,104, 10,189,233,107, 75,142, 15,237,214,188,119, 31,127, 95,108,221,119,110,177,175, 47,217, 11, 0,
-214,166,242, 69,239,119,168,133,176,152, 76,156,187,159,112, 60, 44,245,221,204,190,224, 57,216, 88,155, 41, 1, 70, 6,149,142,
-103,205,158,161,210,129,201, 60,165, 80,182,155,137,145,125,194, 92, 91,248,186,186, 22,207, 34, 52,233,185, 10, 31, 60,124,234,
-214,204,219,193, 13,156, 30,224,244, 48, 27,178, 27,248,198,184,210,112,248,215,148,159,153, 57,109, 74,235, 30,253, 6, 27,201,
-148,230,224,114, 98,161, 79,122,136,244, 39,151,145,175,244, 68, 82,244, 51,236, 63,125, 43,251, 73, 92,122,142, 72,132,160,228,
-108,205,244,168, 12,154, 87, 25,175, 90,143,165,243,231, 78,235,181,127,239, 62, 83,121, 45,127, 18,181,190,103,182, 76,204,202,
-109,107, 54, 17, 21, 40,108,232,146,237,251,204,242,181, 88, 86, 25, 79, 65,126,206,161,179, 65,167,134,212,169,233,111,250,226,
-206,111, 80,169, 53,208,232,129,122,205, 3,192,113, 84, 70, 68,132, 55, 99, 24,146,146,158, 9,162,231,146,175, 60,120,145,120,
-245,193, 51, 70, 99, 90, 57,247, 43,153,142, 48, 19,251, 4, 52, 2,244, 42,188,215,174, 62, 86,239, 58,247, 57,128,209,111,151,
-200,133, 22, 44, 10,248,215,179, 35, 63, 0,240,191,123,100, 77,221,166,253, 38,163, 42, 22, 44, 63, 91,210,195,175,182,211, 79,
-171, 23,205,180,178,118,241,100, 8,175, 7,117,104, 0,228,196, 81, 18,119, 3,230,206, 45,192, 57,181,193,150,117, 43,242,120,
-158,238,173,142,139, 10, 1, 2,254,205, 80,171,213,135,190,253,246, 91,171,222,189,123, 23, 91, 96,112,227,198, 13,108,219,182,
- 13,198,198,175,150,147, 61,123,246, 4,165,212,106,193,130, 5,135, 0,180, 42,143,179,101,203,150,125, 54,108,216,144,208,168,
- 81,163,103, 69, 34, 75, 10, 64, 20, 26, 26, 42,138,141,141, 37,150,150,150,212,201,201, 73,159,144,144,192, 3,224, 62,252,240,
- 67,198,196,196,164, 78, 94, 94,222,165,234, 10, 44,153, 76,246, 78,198,100, 73, 36,146, 18, 94,169, 84, 10, 74,105,149, 68, 22,
-199,113,226, 19, 39, 78,224,238,221,187,248,170, 81, 35, 76,113,118,134,149,149, 21, 46, 94,188, 8, 74, 41,140,141,141,145,145,
-145,129,189,123,247,162, 99,199,142, 96, 89, 86,106, 8,239,193,131, 7, 17, 28, 28,140,111,154, 54,197, 20,115,115,152,152,152,
-224,236,217,194, 94, 63,185, 92,142,232,232,104,156, 61,123, 22, 1, 1, 1, 66,166,254,163, 5, 86, 0, 33, 98, 98, 15, 7,157,
- 86, 5,202, 82,128,192,201,215,151, 72,195,194,168,174,170, 15, 21,137, 48,119,221,142,227,189, 86, 77,238, 67, 62,233,219,216,
-105,225, 79, 23, 62, 5,128, 49, 3,188,156,149,114, 49,214, 30, 13,163, 34, 17,230,190,139, 23,244,245, 37, 82,145, 8,159,118,
-105,225,141,132, 44, 45,162, 18,178,206,135, 81,106, 80,151,206,185, 85, 35,177,243,215,139,177,107,118,170, 35, 40,165,176, 48,
-145,123,127, 16, 18,229,246,211,137,224,152,149,251,213, 17,148,167,176, 80, 74,234,142, 14,111, 83,233, 44,194,102,110,210, 79,
-102,207,156,222,166,239,232, 47, 20,108,196, 1,104,163, 78,131,215,169,144,163,147, 34,139,113, 64, 92, 76, 12,150,108, 57, 30,
-155,147,175, 29, 18,154, 82, 53, 97, 25,153, 70,243,124,109, 73,255, 37, 95,207, 57,179,116,209, 2,147,130,103, 23,243, 24,194,
-170, 24,247,246,226, 69, 95,173, 34,185, 26,237,224,168, 12,154, 91, 25,143,198, 20,203,190, 93,185,174,215,199, 35, 2, 35,188,
- 60,219, 91,115, 9,207,173,213, 57, 57, 41,187, 79, 5, 59, 20,181, 12, 9, 0, 68,197,165, 35, 53, 59,159,229, 88,253, 37, 83,
- 9, 22, 62, 50,196, 26, 88,132, 90,246,196,182,127,219, 6,195,109, 77,165, 80,229,101,193,206, 84,130,110, 45,106, 15,175,101,
- 79,102, 62, 75,166,169,213, 78,104, 94, 15,170, 87,225,230,178,142,117, 41,167,175, 11, 78, 15, 93,200,207, 85,183,132, 17, 76,
-153,208,206,196,204, 82,251, 66,132,124, 99,192,200, 6,196,204, 29, 48,247, 32, 18,159,193, 72,120,246,136,253,124,248,136,244,
-231, 47,227,254,103, 99,132,229, 66, 17, 34, 64,192,171,136,142,142,126,127,246,236,217, 87, 91,180,104, 97,111, 99, 99,131,250,
-245,235,227,215, 95,127,197, 23, 95,124, 81,114, 77,163, 70,141, 64, 41, 69, 70, 70, 6,190,253,246,219,164,132,132,132,247, 43,
-226,140,136,136,120,188,115,231,206,182,190,190,190, 58,169, 84,154, 5, 64,158,149,149,165,200,200,200, 32,106,181, 26, 60,207,
-243,230,230,230, 92, 66, 66,130,126,200,144, 33,154,235,215,175,215,206,207,207,143,121, 27, 11,150,171,171,107,104,122,122,122,
- 54, 33,228,173, 92, 56, 72, 36, 18,136, 68, 34, 72,165, 82,216,216,216,216,230,229,229,241, 0, 50,171,227,194,129,101, 89, 52,
-109,218, 20,167, 47,223,195,137,115,215,145,147,240, 24,159,126,252, 62,234,215,175,143,211,167, 79, 87, 59,205, 26, 54,108,136,
- 83,103,175,226,234,221, 7,136,142, 12,193,231,159,126,140,122,245,234,225,212,169, 83, 66,134,126, 7, 2, 43,128, 16, 82,220,
- 18,127, 67,174,250,216,146,134, 78,117,100, 63, 47,232, 81,219, 71,210,101, 1,136,196, 8, 7, 60, 79,181,153,187,100,125, 68,
-125,123, 50,226, 97,114,229,179,189, 94,177, 98, 37,211, 71,245,236,200,158, 7,225,117,135,191,215,194, 21, 91,127, 85,206, 3,
-128,193,109,107,226,246,147, 84,220,138, 76,217,243, 40,133, 62,122,219,151,171,111, 79,148,160,216,243,237,196,190, 1,238, 46,
- 14,216,118,248, 42, 8,193, 33,131, 42, 90, 74,105, 11, 95,119,172,217,249,250,140, 65, 7,183,149,251,213, 17,167, 67,115,122,
- 0, 64, 87, 31,227,147,205,106, 91,186, 85,102,201, 48,146,137,199,246, 8, 28,169, 96, 35,127, 5, 94,158, 5, 97, 53, 80,233,
-120, 36,166,229,162,192,220, 21, 23,111, 60, 80,101,171,181,147, 31,165, 84,207,106, 23,150, 74,159, 53,114, 36, 49,249,249, 42,
- 71,165,109,109,181,152,240, 52, 79,205,227,118,216,203,236, 71,137,244,177, 33, 28, 81, 81, 84,219,202,133,180,253, 97,199,254,
-249, 18,169,108, 48, 67, 64,236, 44,140,109,127, 88,245, 13, 76, 77, 77,192,107,243,128,252, 84,244,255,108, 73,234,195,120, 93,
- 77, 0,240,178, 33, 38,237,106, 73,119,136, 69, 36,238,252, 83,237,151,149, 61,131,232, 49,110, 68,183, 70, 18, 94,155,143,137,
-223,238,195,230,153,125, 49,178,147,143,228,183,107,145,227, 0, 44,172,110, 90, 83,142, 5,213,171,208,106,206,229, 8, 2, 92,
-165,128,255,221,253,139,234, 2,247, 12,230,104, 66,136, 68,236, 72,124, 26,184, 25, 75,249,184,107,224,227,174, 81,198,181, 13,
-136, 91, 59, 66, 28,154,210,239,191,251, 42,127,235,214,109, 65,188, 8, 95, 87,230,242, 66,128,128,255, 42, 40,165,207, 44, 44,
- 44,186,247,236,217,243,220,233,211,167,173,252,252,252, 0, 0,119,239,222, 5, 0, 52,109,218, 20, 94, 94, 94, 72, 78, 78,198,
-208,161, 67,211, 18, 19, 19,187, 83, 74, 43, 28,211,155,155,155,251,236,224,193,131,118,121,121,121,141,231,205,155,151,236,238,
-238,158,163, 86,171, 73, 86, 86, 22,207,178, 44, 44, 45, 45,101,141, 26, 53, 66,235,214,173,243,174, 95,191,238, 17, 27, 27,155,
- 3,224, 69,117,194,223,183,111, 95, 92,190, 92, 56, 9,239, 93,248,197,146, 72, 36,240,243,243,115,126,246,236, 89,124, 81,252,
-220,172, 70,156,150,252,127,240,224, 1, 46,221,139,131, 88,171,130, 44, 53, 1, 55, 15, 31, 68,159,177,227,193,178,213, 31,173,
-240,224,193, 3, 28, 57,123, 19,198,114, 49, 30, 63,126,132,131, 7, 15,226,211, 79, 63,125, 43,206,106,162, 66, 45,242,143, 20,
- 88,148,210, 75, 40,195, 11,109,237,218, 68, 38,207,195,130,110, 77,157,103, 12,246,175,205,232,115, 18,192,115, 60, 24, 9, 96,
-103, 99,134,159,127,222, 83,115,207,190,125, 55, 26, 58, 75,214,241, 44, 59,247, 97, 50, 45,168,194,179, 23,172,218,119,117,240,
-207,211, 2,196,159,246,168,107, 5, 0, 82,177, 8,107,127,125,196, 2, 88,240, 54, 47,213,202,133, 40,242,244,248,196,193,218,
-124,222,236,143,122, 89, 5, 52,245,194,165, 91,161, 88,119,240,198,101, 89, 10,118, 26,156,169,121, 61, 94,215, 77,101,205, 34,
- 4, 95,249,120, 74,142,163, 14, 82, 99, 75,232, 94, 94, 0,116,106,168, 53, 58,196,166,115,136,205, 80, 67,172,148,226,110,100,
-156,202, 58, 9,199,171,251,206,132, 16,226, 95, 75,225, 52,111,241, 74, 23,181, 42,143,205,201, 76, 99,165,178,155, 18,165,145,
- 60,177, 42, 60, 55,226,168,186,125, 77,105, 19,128,103,100, 10, 90, 48,103,234, 40,227,248,176,211,168, 35, 74, 0,161, 20, 70,
- 62,189, 96,106,196, 72,219,122, 72, 99, 0,192,195,193, 92,246,237,215, 95,152, 79,158,249,117,165, 99,188,124, 9,145,214,111,
-230, 48,217,207,221, 18,151,131, 35,112,249, 97,244,163,203,119, 31,215,235, 80,223, 9, 94, 46, 22,147,124, 9, 89, 22, 70,171,
-110, 17, 45, 76, 24, 22,208,171, 75,102, 17,250,218,147, 97,205, 6,127, 89,230,236,193,242,224, 1,240,145, 28, 5, 97, 24,128,
-136, 10,103, 52,198, 94,131,216,162, 22,221,179,255, 72,193,182,109, 59,191, 9, 75,165,130,213, 74,128,128, 74,144,149,149, 21,
-162, 84, 42,187, 53,104,208, 96,251,196,137, 19, 77, 71,140, 24,225,244,241,199, 31,139, 0, 32, 57, 57,153, 95,179,102, 77,194,
-247,223,127,159,157,150,150, 54, 90,167,211, 61, 52,164,193, 75, 8,185,254,227,143, 63,166, 94,186,116,169, 94,203,150, 45, 21,
- 77,155, 54,229, 44, 45, 45,197,114,185,156,211,106,181,234,200,200, 72,254,217,179,103, 78, 89, 89, 89, 79, 0, 68, 85,167,251,
-190,200, 90,181,144, 97,152,249,148, 82,191,119, 49, 6, 75,169, 84, 58, 2,120, 74, 8,169, 83,213,238,193, 55, 42,108,177, 24,
-153,153,153, 40, 72,122, 4, 69,220, 19, 52, 48, 22,193,215,210, 4,102,102,102,111, 37,134,178,179,179,129,252,120, 92,189,250,
- 0, 96, 89,152,155,155,195,220,220,252, 79, 23, 88,229,105,145,127,186, 5,235, 13,212,179, 35,159, 90,202,176,102,108,175,218,
- 82, 15, 55, 23,104,226,238,226, 65,108, 30,230,182,108, 30,198,200, 77,213, 99,223,239,219, 52,112, 96, 13, 4,180,110, 70, 60,
- 28,205, 39, 45, 91,181,233,179,122,246,228,139, 71,201,116,173, 33, 15,126,148, 66,159,251,216,145,109, 23, 66,226,198,185, 40,
- 85,224,121,138, 11, 15, 19,241,240,101,230,182,240, 20,250,188, 42, 47, 81,207,137,116, 22, 67,180,143, 82,170, 48, 55, 54,206,
-109,212,176,174, 77,231, 86, 13, 69,221,219, 55,133,148, 1,174,222,126,128, 41,171, 14,221,228,121,218, 43,216,192,238,193,194,
- 25,131,175, 10,167,194, 25,131,250, 87,102, 12, 82, 74,105,225, 44,194,138,135,117, 49, 12, 73, 42,136,190,227, 32,177,246,132,
- 42,234, 2, 94,102,242,136, 78,201, 69,142,216, 1,154,248,120,128,242, 49, 23, 41,173,118,110,182,177,177,177,171,233,235, 85,
-123,253,142,131,208, 21,100,227,249,197,237,200,203, 76,196,162, 31,126,173,237,226,226,210, 62, 46, 46,238, 82, 21, 10, 25,175,
-115,199,247,216,129, 2,140, 68,142,223, 54,238, 71,154,181, 17,108,148, 82,240,170, 84,140,157, 60,194,188, 71,151, 17,230, 0,
- 16,253,248, 62,220,149, 42,131,120,117,214, 8, 28,220,193,219, 2,122, 21,118,156,186,175, 22, 1,221,119, 6, 61,138,234, 80,
-215, 66, 49,216,223,221,114, 97, 66,214, 0, 84,211, 25,104,177, 5,171,196,162, 87,141,217,131, 7, 40,229,124,108, 73,212,190,
-235, 41,198, 3,187, 52, 81, 74,197,132,208,188,120, 80, 35, 27,108,218,113, 32, 79,166,199, 22,161,234, 20, 32,192, 48, 20, 20,
- 20, 4, 19, 66,234, 79,159, 62,125,216,156, 57,115,218, 25, 27, 27,215, 4,128,252,252,252,231,122,189,254, 50,128, 61, 85,153,
-237, 87, 36,152,158, 18, 66,158,191,120,241,194, 97,247,238,221,230,248,221, 31,163, 10, 64, 54, 10, 29,102, 86,123, 6, 97,177,
-152, 34,132,204,127,135,162,225, 68, 17,103,157,234,220, 47, 18,137, 56, 66, 8, 8, 33,144,203,229,184,114,229, 10, 6,245,234,
-130,240,223,178,224,103, 97,130,230,163,199, 98,223,153, 51, 96, 24, 6,132, 16, 48, 12, 83,165,122, 68, 44, 22,227,234,213,171,
- 24, 57,116, 32,228, 98,192,220,220, 28,211,167, 79,199,209,163, 71, 33, 22, 11,171,233,253, 33, 2, 11, 4, 11,207,108, 95, 34,
- 5,167,199,177,237, 43,112, 60, 52, 79,251, 56, 21,115,189, 83,177,230, 32,114,249,212, 85, 59,199,157,185, 26,186,252,195, 33,
-189,149, 29, 59,116, 65,199,128, 14,226,122,205,218,207, 3,176,182, 84, 69,221,185, 34, 95, 25, 28,143,111,182,156,138, 24,187,
-239, 98, 36,129, 46, 23, 67,186, 54,163, 28,143,111, 42,169,252,223,224, 52, 55, 50,217,119,245,198, 13, 75,232,242,240,242,254,
-121, 69,141,154,181, 1, 78,135,167, 79,159,224,251, 29,135,249,139,183, 31,255,172,101, 49, 49, 42,131,230, 27,202, 89,168,168,
- 88,152, 27,203,188,123,248,153,159,228, 65, 97,161,148,214,165, 60, 7, 11,165,164,110, 87, 31,227,147,148, 82,106,106, 36,169,
- 75, 57,125,165,156, 42, 45,187,121,199,143,219, 86,142, 25, 51,198, 56, 45, 46, 9, 9, 57,161,200,147, 57, 67,175,116, 69,212,
-253,203,170, 2, 13, 91,105,229, 93, 81,124,166,165,165,165, 4,223,202,192,190, 31,150, 66,175,213, 32, 37,174, 80,163, 38,164,
-229,192,204,198,249, 70, 85, 56,117, 44,159, 29, 56,226, 19,169,145, 41,140, 70, 6,246,150, 69,165,107,208,216,201,180,176,176,
-200, 75, 69,248,217,171, 8,200, 47,212,107,207, 98, 69,112,111,232,100, 80, 56, 77, 21,210,137, 61,154, 56,227,121, 76, 34,174,
- 60,138,223,241, 44,157, 38,212,178, 38, 59,162, 18,178,198,245,109,233,134,213, 71,195, 62, 47, 79, 20,149,199,233,107, 79,134,
- 1,240, 47, 28,228,174, 2, 5,252,125,237,201, 48, 67,102, 14,150,197, 41,150, 98,248,202,147,209, 95, 30,184,147,214,119,198,
-240,182,102,173, 91,247,148,129,213, 34, 87,165,209,135,101,210,156,183, 73,163,183,176, 78, 10,156, 2,231, 63,146,179, 72,236,
-252, 92,180,189, 75,206,248,162,237,157,189,123,233,238, 64, 74,169,184,200,122, 85,225, 32,247,202, 56, 75,119, 7, 82, 74, 79,
- 20, 89,175, 42,180, 98,189,206,201,243,124, 66,211,166, 77,173,250,244,233, 3,142,227,240,228,201, 19, 68,199,198,162,243,184,
-207, 97, 97, 97,129,203, 33, 33,120,252,248, 49,230,207,159, 15,189, 94,143, 35, 71,142,196, 85,198, 41, 22,139,117,181,107,215,
-150,246,235,215, 15, 44,203,226,217,179,103,136,143,143,199,148, 41, 83, 96,110,110,142,224,224,224, 18,206,180,180, 52,136,197,
- 98,221,159,145,151,254, 59, 2, 11,224,192,233,145,125,102, 1,214, 94,129, 78,167, 71,221, 71, 41,180,116,159,246,166, 6,214,
-228, 88, 72,104,196,243,224,107, 29,101, 72,121, 88,120, 79, 21, 16,153, 70, 19,155,185,138,115,161,203, 53,195,179,147,120,145,
-156,155, 23,153, 70, 19,171,250, 18,148,231, 8,116, 5, 64,226, 93, 92,191,124, 9, 23,111, 62,192,157,135, 17,220,245,224,200,
-125, 34, 30,223,132,165,209, 39,213,104,117,192,164,215,106,140,122,248,212,173,153,151,189, 27, 56, 22,148,215,195,124,200, 30,
-140, 14,107,237,214,172,150,133, 91,161,229, 74, 15,203,143,206, 3, 43, 21, 21,242,221,137,209,109,241,175, 41, 31,144,155,149,
-222,178, 83,251, 86,198,230, 62, 61,144,246, 52, 18, 79, 30, 92, 85, 5,135, 70, 93,191, 19,163,123, 43,235,136,179,179,115,187,
- 78,237,189, 49,100,236,108,232, 10,178,241,236,226,143,200,203, 72,194,149, 27, 38,136,200,201,105, 5,192, 96, 11,214,245,104,
-125, 61, 0,240,247,144,198,152, 66,227,240,126,239, 62,144, 19, 53,120, 77, 14, 72, 65, 26,162,226,181,217, 3,126,136,229, 0,
- 64, 41, 39, 98, 99,154,109,102, 8,175,175,187,181,167,146,209, 99,231,153, 71,224,249,194,101,150,120, 30,155,118,158,143, 26,
-247,205,200,198,240,117,179,108, 72,138,156,159, 24, 92,104, 82,180,189,179,239,235,186,234,115,243, 0, 94,135,171,147,172,234,
-182, 93,155,209,182,186,150,176,135,241, 52, 30,192, 56, 31, 39,178,121,210,218, 83,243,154,158, 9,243,159,246, 81, 95, 51, 80,
- 97, 97,116, 1, 2, 4,252,249,200,203,203, 27, 59,122,244,232,205, 18,137,196, 22, 0,225,121, 30, 60,207,139,151, 47, 95, 46,
-225, 56, 78, 36, 18,137, 56,134, 97,216, 19, 39, 78,232, 57,142, 75, 85,171,213, 99, 43,227,100, 89, 54,106,252,248,241,181, 43,
-155,113,184,119,239, 94,136,197, 98, 29,203,178, 81, 66, 74,188, 75,129, 69,241,117,155,145, 11, 22, 0, 32,160,248,234, 53,113,
- 5, 0, 8, 73,167, 9,245,236,200,148,122,205,218, 47, 40,190,167,170, 1, 80,115,220,192,102,245,189,246, 2,128,134,114, 35,
-171,243, 18, 57, 26,213,224, 70,205, 90,237,227, 41, 21,179,148,110, 19,241,248, 69,205, 34,220,144,153,115,229, 33, 33, 37, 43,
-184,120, 1,103, 30,244,247,110,193, 34,119, 12,148, 82, 90,210, 45,184, 66,129,180,108, 77,165,126,156,174, 62,215,116,105,230,
- 38,253, 36,232,218,253,177, 28, 71, 29, 24,134, 36,169,180,236,230,183, 21, 87, 0, 16, 23, 23,119,201,215,142, 4,133, 52,180,
-239,106,163, 44,178,106, 21, 0,105, 5, 8,138, 75,201,189, 84, 29,206,204,124,125,223, 57,107,142,254, 42,147, 48, 98, 80, 90,
-232, 8,148, 82,168,117, 92, 70,177, 8,107, 96, 77,156,166, 31, 97,247, 50, 12,137,174,140,239,214,227,196,213, 67,150,157,253,
-226,209,203,204,109, 47, 50,105, 40, 0,188,200,164,161,117,172,201,188,168,164,220, 47, 66,163, 51, 87, 84,117,220, 4, 37,184,
-210,108,200,130, 55,142,189,109,124,134, 39,208, 7, 0,250,215,179, 35, 93,134, 76,251,126, 26, 33, 16,150,137, 16, 32,224, 63,
-132, 98, 43,150, 72, 36, 90,248, 14, 57, 79, 16, 66,122, 2,120, 90,133,123,110, 1,168,255,142,223, 45, 29, 64,186,144,202,127,
-145,192,122,148, 66, 55,193,128,197,156, 13,189,174,220,251, 19,232, 89, 0,214,111,243, 18, 69, 28, 86,239, 50, 98, 66,146,233,
-188, 63, 34,194,139,196,212, 31, 50,150, 39, 44,133,118, 3, 0, 47, 47, 47,250,228,201, 19,188,173, 23,220,240, 84,250, 0,175,
- 45,185, 80,150,200, 6,208,214, 16,190,200, 52,250, 13,240,102, 23,240,211,116,186, 8,192,162,106,189,115, 53, 61,181, 27,156,
-183, 82,232, 25,160,114,111,250, 2, 4, 8,248,119,138,172, 63,128,243,132, 16,179,255,113,129, 37,224,159,139,200,200, 72, 34,
-196,130, 0, 1, 2, 4,148, 11,238, 15,224, 20,156, 14, 11,120, 5, 34, 33, 10, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 45, 8,
-128,206,101, 74,241, 42,204, 14, 32,132,116,174,178,212,175,132, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127, 31,103,
-101,220,255,154,217,137,180,212,224,229,119,189, 1,232, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249, 95,219,132,
- 46, 66, 1, 2, 4, 8, 16, 32, 64,128,128,119, 12, 65, 96, 9, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4,
- 8, 16, 32, 64, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 80,125,144, 42,174,
- 76, 34, 64,128, 0, 1, 2, 4, 8, 16, 32,192, 16,129, 85,180,190,110,241, 58,187,130, 23,112, 1, 2, 4, 8, 16, 32, 64,192,
-159, 43, 72,254,101, 90, 68, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 65, 96, 9, 2, 75,128, 0, 1, 2, 4, 8, 16, 32, 8,172,
-191, 55,138, 7,185, 7, 16, 66, 40,128, 0, 33,137, 5, 8, 16, 32, 64,128, 0, 1,127, 1,254, 85, 90,164,100,144,187, 96,189,
- 18, 32, 64,128, 0, 1, 2, 4,252,165,162,228, 95,164, 69,132, 89,132, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,
-128, 0, 1, 2, 4, 8,248,123,227, 15,117, 52, 74, 8,233, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192, 41, 8, 44,
- 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 4,150, 0, 1, 2, 4, 8, 16, 32, 64,
-128, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 47, 2, 1, 80,230, 76, 0,
- 74,233, 89,131, 73,170, 49,155,160, 50,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,125,156,149,113, 87, 69,127,252,
-173, 65, 41,253,195, 54, 0,157, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,107,155,208, 69, 40,192, 80, 43,165,
- 61, 33,196, 94,136, 9, 1, 2, 4, 8, 16, 32,160,114,136,223, 37,153, 15, 33, 29,199, 55,176, 63,240,217,131, 36,171,202,174,
-181,179,179,219,172, 84, 42, 71, 20, 20, 20,228, 19, 66,248,210, 22, 53, 0,165,221,203, 63, 75, 73, 73,105, 91, 25,159, 92, 46,
- 95, 99,111,111,255, 81, 94, 94, 94, 1, 33,132, 18, 66, 64, 8, 41, 22, 7,175,252,114, 28, 23,151,150,150,214,244, 31, 45,120,
- 0,198,198,222,254,182,132, 97,156,171,122, 47,199,243, 47,146,147,146, 90, 85, 65, 92, 45, 37, 4, 51,138,254,127, 71, 41,157,
-253, 47, 84,144,140, 33,151,249, 1,166,145,192, 16, 78, 36,250, 92, 2,108,208,240,252, 15, 69, 25,151,171,238,163,181,183, 73,
-109, 66,209,144, 16,152, 83,138,108, 74,240, 64,214,156, 70,253, 69, 66,186,165, 68, 34, 25,108,105,105,105,154,146,146,114, 14,
-192,175, 0,222,179,179,179,235,148,153,153,153,171,215,235,247, 83, 74,111, 86,135,187, 93, 35, 50, 83, 38,149,124,168,214,233,
-191,189,122,159,254, 24,208,132, 88,179, 60,150, 41,164,226,182, 26, 45,251,221,149, 7,116, 91, 21,195, 74, 94,179,198, 87,121,
- 89,138,131, 6,166, 59, 0, 28,177,180,244,146,219,154,157,147,200,152, 23, 89,201,121, 35, 6,166,164,196, 14,124,139,116,255,
- 59,194,214,214,118,148, 72, 36, 90, 76, 41, 5,199,113,115,211,211,211,183,191,163,124, 53, 12,128,113,209,110, 62,165,116, 79,
- 21,238,141, 6,224, 86,180, 27, 67, 41,117,175,232,184,128, 42,167,205,166,195,135, 15,143,235,208,161, 3, 86,175, 94,141, 77,
-155, 54,189, 76, 77, 77, 93, 6, 96, 7,165, 84,251,103,243, 8, 2,171, 12,248, 18, 82,127, 76,247, 86,191,141, 29,212, 93,102,
-192, 71,252,191,238,221,187,143,220,177, 99,135, 36, 50, 50,210,200,195,195, 3, 34,145,168, 68, 0,149, 46, 39,107,212,168,193,
- 87,198,199, 48,204,218,254,253,251,143, 62,120,240,160, 50, 56, 56, 88,233,227,227, 83,194,199,243, 60, 94, 47,119, 61, 60, 60,
- 42,228, 51, 55, 55,191,203, 48,140, 75, 89,226,172,188,255, 28,199,197,165,167,167, 55, 53, 32, 19,118, 3, 48,203,128, 40, 93,
- 70, 41, 61, 93,209, 5, 18,134,113, 78, 72, 72,176,171,106, 90,185,186,186,234,170,240,209,216, 19,130, 25, 60, 79, 69, 0, 32,
- 18,145,153, 70, 70, 70,155, 84, 42, 85,108,241,249,162, 52, 75,174, 74, 24, 92, 92, 92,122,240, 60, 63,172,144, 83,180, 39, 46,
- 46,238,100, 85,238, 55, 51, 51,187, 43,147,201, 92,196, 98, 49, 41, 43, 93, 94,223,231, 56,142,234,116,186,184,140,140,140, 42,
- 11,235, 75, 0,233, 14,180, 99, 25,102,178,181,141, 77,219,224,160, 32, 99, 63, 63, 63, 17,195, 48,179, 1,252,240, 54,223,141,
-246, 54,169,205,233, 49, 72,165,151,247,150,187,127,229,165,137,254, 42,210, 72,162, 57,174,189, 77, 14,252,217, 34,139, 16,210,
-253,131, 15, 62, 88,242,237,183,223,218,200,100, 50,209,254,253,251, 91, 77,153, 50,229,195,213,171, 87, 59, 15, 30, 60,216, 84,
-171,213,242, 51,103,206,108, 71, 8,249,154, 82,122,180, 42,220,173, 27,145,150,222, 30,142,243, 39,140,232,136, 47,150,238,157,
-224, 95,159,164, 25, 25, 75, 55, 13,104, 91,219,162, 94, 77, 75,124,189,249,250, 68, 0,219,170, 16, 86, 34,145, 72, 26, 57, 56,
- 56,120,104, 52, 26,174,168,209, 70, 75,149, 9, 0, 0,141, 70,163,203,204,204, 60,241,182,113,243,133, 66,209,162,133,133,201,
-153, 5,195, 62, 48,202,201,204,176, 95,251,219,175, 33, 7, 97,215, 96, 32,240,242,223, 84, 33,136, 68,162,197,241,241,241,142,
-148, 82, 56, 58, 58, 46, 6,176,253, 29, 81, 27, 23,151,195,132, 16,227, 42,222,235, 86,234, 94, 55, 3,142, 87, 39,239, 43,196,
- 34,209,120,153, 68,210,149,227,184,250, 69,121,232,161, 86,175, 63,195,242,252, 6, 74,169,250, 95,172, 3,102,140, 27, 55,174,
-203,156, 57,115, 60,102,204,152,129, 25, 51,102,212,216,186,117,235,230, 37, 75,150,204, 36,132, 52,160,148,230,253,201, 60,130,
-192,122, 77, 92,185,118,107,228,117,241,243, 15, 6, 73,249,131,107, 8, 70,125, 89,161,184,106,213,180,233,135, 59,118,236, 0,
- 0,140,232,219, 23, 93,155, 55,135,169,137, 49,100,178,194,224, 16, 74, 32,149, 72,209,111,202, 84, 67, 62,140,239, 2, 3, 3,
-135, 31, 60,120,208, 4, 0, 54,109,218,132,192,192, 64, 88, 89, 89, 65,169, 84, 66, 42,149, 66, 34,145,188,242,107,128, 96,115,
-137,143,143,183, 83, 40, 20, 37,130,143,231,249, 87,182, 82,253,208, 96, 89, 22,158,158,158,134, 70,215,172,236,236,236,118,249,
-249,249, 21,246,221,214,172, 89, 19, 0, 78, 27, 66,184,120,209, 55,224,217,124,136,197, 0,203, 2, 26,157, 8,124, 25,109,121,
- 39, 39, 39,140, 31, 63, 30,111,179,254,100,239,222,125, 64, 41,221,228,236,236,124, 60, 57, 57,217,143, 16,140,173,142,101,139,
- 82,250,254,211,167, 79,149, 60,207,195,219,219,123, 36,128, 42, 9, 44,177, 88,236, 18, 18, 18, 98, 39,151,203,203,181, 84,150,
- 18,191,208,233,116,104,220,184, 49, 91,149,103,216, 3,110, 25, 34,209,199,141,154, 52,249,100,126,223,190, 70,119,239,222,149,
-139, 68, 34,176, 44,139,229,203,151,179,148, 82, 11, 95,192, 44, 12,200,169, 32,127,206, 1, 48,170,200, 42,187,141, 82,186,252,
-149,243, 20, 13, 85,122,121,239,103,121,253,154,183,168, 49, 19, 97,143, 30, 54,175,101,114, 4,166, 98, 77, 20,128, 63, 85, 96,
-153,155,155, 15, 92,189,122,181,237,182,109,219,114, 30, 63,126,172,251,225,135, 31,108,199,142, 29, 91, 87,167,211, 97,220,184,
-113,169,222,222,222,210,213,171, 87,219, 30, 62,124,184, 27,128, 42, 9, 44, 49,193, 55, 67,251,118,133, 90, 47,130, 94,207,218,
- 58,218,154,254, 60,233,131, 0, 9,165, 90,236, 60, 26, 12, 61,203,255, 88, 69,203, 85,163, 1, 3, 6,184,239,217,179, 71, 28,
- 30, 30, 46,246,241,241, 1,199,113, 37, 27,207,243,224, 56, 14, 94, 94, 94,111, 29, 47, 31, 2, 94, 54,246, 86,103, 90,245,236,
- 97,228,168,144,195, 42, 51, 21, 99,164, 98,211,237, 74,205, 46, 0,173,255, 77, 21, 2,165, 20, 98,177, 24,177,177,177,176,179,
-179, 51,178,178,178, 74, 4,240, 85, 70, 70,198,150, 63, 72,212, 87,219,178,245, 14,195,208, 92, 38, 22,255,178,243,199,181, 14,
- 45, 90,183,102,236, 29,237, 16,249, 36, 6, 98,194,117, 14,185, 19, 28,240,225,167,211, 38, 17, 66, 6, 80, 74,111,255,219, 4,
-128, 99,155,207,250, 59,250,127,190,137, 80, 30, 95,175,255, 53,119,233,119,107,148,227, 62,254,128,153, 50,101, 10, 92, 93, 93,
- 61,250,247,239,255, 29,128, 79, 43,229,105,249, 89,127,135,214, 19, 54,129, 82, 44,248,254,215,220, 37,223,173, 81,126, 90, 13,
- 30, 65, 96,189, 6, 63, 66, 44, 26,184,219, 95, 90, 52, 99,172, 9, 61,249,147,168, 32, 61, 5,229, 73, 24, 59, 59,187,205, 61,
-122,244, 24,177,125,251,239,141,162, 86,126,126,232,223,209, 31,118,214,230, 80, 26,203, 10,171, 33,158,224,193,227, 23, 6, 9,
- 1, 87, 87,215,113,191,252,242,139, 73,105, 17, 33,149, 74, 75,182,210,226,170,120,123,221,210, 81, 22, 20, 10, 5,206,158, 61,
- 11,177, 88, 12,134, 97, 32, 22,139, 75,182,210,251, 12,195,192,222,190, 74, 67,147,150,153,155,155, 55,200,205,205, 53,203,202,
-202,130,155,155, 91, 14,128,144, 82,231, 27,164,166,166,154, 85,133,144,103,243, 49,101,140, 15, 36,218,155,208, 74,154, 67, 37,
-110,131,235,119,194,113,252,244, 37,196, 39, 36,193,191,101, 35,188, 63,108, 32,206,156, 57, 3,142,227,170, 90,224, 38, 19, 66,
-190,123,239,189, 62, 51, 1,130,128,128,128,228, 73,147, 38,209,208,208,208,254,131, 6, 13,236,244,228,201, 83, 82,100,217,154,
- 65, 8, 89,107,168, 37,139, 82, 42, 5,128,203,151, 47,131, 82, 42,171, 78,222,147,203,229,184,113,227, 6,138,187,131, 69, 34,
- 17, 68, 34, 17, 24,134,193,177,167, 54,200,215,138, 80,144, 28,138,207,123,187,161,102,205,154, 16,137, 42, 31,114, 24, 0, 40,
-174, 3,253,137, 68, 50,197,209,201,201,163,125,173, 90,202,179,103,207, 50, 0,224,238,238, 78, 19, 19, 19,179,142, 28, 57,146,
- 43, 6, 54,185, 83,186,163, 34,113,229,230,230,214, 70, 36, 18, 45, 46,142,115, 66,200,119, 30, 30, 30,243, 75,210,141,231, 49,
-172,139,149,100,210,164,201,210, 22, 1,133,141,146, 22,125,246, 32,231,217, 82, 31,146, 49,199,252,207, 46, 12,178,179,179,127,
-246,242,242, 98, 82, 83, 83,207, 3,120,174,215,235,215,255,252,243,207,118, 99,198,140, 73,217,181,107,215, 4, 0,174,203,151,
- 47,239,150,151,151,183,175, 42,188,109, 27,146,158, 77, 27,249,181,116,115,117,197,165,235,183, 33,149, 73, 44,198,143,234, 13,
- 19, 19, 49, 86,108,251,141,143,142,203,152,112,229, 1,221, 81, 5,113,213, 96,224,192,129,174,123,246,236,145, 2, 64,104,104,
- 40, 82, 82, 82, 96,109,109, 13,133, 66, 81,242,205, 23, 91,177,222, 86, 92,153,187, 90,223, 58,114,228,168,145,149,149, 5,214,
- 79,157,132,247, 19,226, 96,198,136,160,215,195,227,223, 84, 25, 16, 66,188, 6, 12, 24,160,224, 56, 14,249,249,249,184,120,241,
-162,185,145,145,145,185,139,139,203, 2, 0, 6, 11, 44, 35, 35,163,100,181, 90,109, 87, 84,142,166,168, 84, 42,123, 0, 5, 10,
-133,194,168,232, 18, 85, 21, 45, 91, 49,165, 44, 84, 49, 6, 28,175,202, 59, 55,107,222,172,193,217, 67, 7,119,155,100,231, 38,
-193,194, 50, 5, 34,100, 99,203,150, 13, 48, 50, 50,195,130, 5,115,196, 47, 58,119,116,238,214,115,192, 89, 66, 72,231,127,157,
-200,162,100, 75,231, 62, 35,172,140,148,166, 69,117,137, 30,219,183, 78,130, 72, 36,194,252,249,243, 81,175, 94,189, 79, 8, 33,
- 95, 82, 74, 51, 42,166,193,150,250,237, 6, 91,201, 20,133, 85, 49,207,233,241,195,222, 47, 10,121,102,143,197,208, 62, 53, 63,
-121,176,139,156,170, 87, 11,185,133,229, 63, 84, 18, 17, 98,208,156,166,148, 74,139,246,148,210, 75,229,237,255, 35, 5, 22, 33,
-132, 82, 74, 75,119,179,188,178, 95, 17,106, 16, 34,247,180, 52, 57,189,241,171, 73, 78,204,141,223,196,170,152,167, 72, 80,115,
-176,248,189, 18,125,101,170,165, 82,169, 28,177,125,251,246, 87,244,151,155,189, 29,164, 82, 9, 36, 82, 2,139,182,189, 1, 0,
- 89, 87,142,131, 16, 90, 94,197,252, 10,103,126,126,190,250,254,253,251, 38,219,182,109,131,157,157, 29, 60, 60, 60,160, 84, 42,
- 75, 10,218,210, 91,177,208,122, 93, 96,189,206, 89,124, 94, 44, 22, 67, 36, 18,225,204,153, 51, 96, 89, 22, 3, 7, 14,124, 67,
- 92,137,197,226, 50, 5, 91,121,211, 76, 41,165,167, 9, 33, 33,148,210,118, 69, 21,111, 8,165,180,125,169,103,119,179,181,181,
-157, 5, 96,153,161,156, 12, 67,193,168,175,131,119, 89, 3,113,236, 36,104, 37, 13,113,225,106, 48,182,111, 94, 13, 0,240,168,
-219, 12,131,250,247, 46,177,190, 25,194,249, 74,235,196,209,113, 71, 74, 74,106,227, 14, 29, 58, 32, 59, 59, 91,187, 96,193, 2,
- 52,104,208, 0, 94, 94,222, 6,165, 81, 57, 5, 91,218,131, 7, 15, 28,213,106, 53, 8, 33,105, 6, 8,178,179,101,112,224,231,
-159,127,134, 90,253,166,245,222,178,253, 18,124, 17,232,142,209,159,239,192,119,143,247, 99,227,198,141, 21,190,187, 18,104,160,
- 54,175,179, 86,198,176, 13,190,157, 59, 65, 62,114,228, 72,102,244,232,209,136,137,137,193,152, 49, 99,212,103,206,156,209, 38,
- 37, 38, 30,149,241,252,122,221,171,130,184, 92, 78,185, 92,190,243,244,233,211,216,191,127, 63, 0, 32, 50, 50, 18,158,158,158,
-175, 84, 34,124,198, 1,228, 70,175,199,173, 99, 17,104,209,103, 15,110, 29, 27, 6, 46,235, 55, 73, 83, 79,100, 87, 37, 62,171,
- 97,169, 56, 91,198,177,139, 0, 46,150,138,223, 47,119,237,218, 53, 8,192, 33, 74,233,117, 0,215, 1,236,173, 10,103, 33, 17,
- 70, 15, 14,236, 7,177,212, 20, 17, 79,227,208,190, 85, 99,216,219,217, 33, 36, 60, 10,209,241, 25,201,132, 96, 84,247, 54,242,
-101, 42,149,246,203,203,247,233,255, 42,227,116,117,117,173,121,224,192, 1, 73, 41,139, 51, 24,134,121,165, 65, 85,124,172,186,
-249,179, 88, 92,153,186,152,220,250,102, 67, 27,227, 91, 15,119,193,211,189, 39,204,186,245,196,170,189,123, 16,151,150,173,102,
- 11,216, 78,127,118, 26,253, 81,156,132, 16,175,192,192,192,235,187,119,239,182,136,141,141,197,229,203,151,225,225,225,129,130,
-130,130, 74, 27,186,175,115,170,213,106,187, 82,162,169,120, 8,195, 94,141, 70, 83, 92, 80,210,170,132,179,188,177, 85, 85, 29,
-115, 85, 70, 57, 47, 83, 72,165, 7,142, 28,218,107, 18, 22,113, 25,141, 26,182,132,137,185, 47,120, 46, 9,233, 25,121,200,124,
-154,128, 69,139,190,195,130,175,230,226,215,195, 7, 77,188,125, 26,254, 66, 8,169, 83,186,187,240,159,158,238, 32,244,147,179,
-199,118,109, 34,148,135, 42, 57, 66, 46,201,127,174, 28, 49,108, 0, 51,100,200, 16,252,250,235,175,120,244,232,209,166,242,196,
- 85,105, 78, 66,241, 73,232,229,253,155, 64, 41, 84, 41, 17,114,169,234,185,242,131,225,131,152,247,135,118,197,205,243,107,209,
-181,209,243, 80, 39, 59,244,207, 44,234, 36, 20, 51, 72,151, 43,112,205,232, 54,185, 89, 74,100, 93, 44,106, 67, 21, 11,171,139,
- 40,116, 37,245,207,183, 96, 85, 69, 88, 21, 93,207, 52,145,137, 15,253,184,224, 51, 63,197,203, 80,169, 38,244, 6, 18, 52, 60,
-221, 22,195,102,174, 41,231,158,130,130,130,252,168,168, 40,163, 81,253,251,163,181,159, 31, 28,173,173, 81,199,197, 5, 70,114,
- 25,100, 82, 73,169,242,184, 74, 45, 16,234,237,237,141, 62,125,250, 64, 34,145, 64,169, 84,194,196,196, 4, 50,153,172, 76,235,
-149, 68, 34, 49,216, 84,206, 48, 12, 66, 67, 67, 17, 29, 29, 13, 11, 11, 11, 92,187,118, 13,157, 58,117,122,195,138, 85, 90,148,
- 85,197, 20,255,122,133, 95, 44,192, 96, 96,215, 96, 49, 56,142, 32,143, 54,132,226,229, 4, 20,144,198,208,104, 88,104, 52, 26,
-252,239,170, 14,183,163,242,161,211,105,161,209,104,202,125,102, 69,214, 2, 7, 7,135,254,117,235,214, 29, 49,108,216, 48,173,
- 68, 34, 65, 65, 65, 1, 10, 10, 10, 16, 30, 30,174,237,218,181,107,242,123,239,245,177, 63,126,252, 56,165, 20,223, 85,101, 28,
- 22,165, 52,211,201,201,201, 81,161, 80,128, 82,154, 89,205,214,103,137,120,121, 29,163, 86,133, 65,204, 20,166,201,166, 77,155,
-192,113, 28, 42,202,223,106, 66,206,125,181,100,165,249,183,107,126,132,185,149, 61, 46, 93,186,196,157, 58,117, 42,151, 0,145,
- 79, 30, 61, 90,245, 30,112,226, 0,160,171, 74,248, 50, 51, 51,141, 60, 60, 60,224,226,226, 2,158,231,161,215,235, 17, 18, 18,
-130,164,164, 36,164,167,167, 67,165, 82,193,202, 56, 11,181,173, 93,192,230, 94, 68, 98,232,215,112, 52,137,192,142,211, 90,125,
- 19, 47, 60,248,203, 27,183,148,158, 0,112,226,237,137,224,108,231,224, 10, 17,213, 35, 33, 37, 29,253,122,117, 5, 35, 53,193,
-139,216, 52, 52,244,173,229, 56,252,189, 54,142, 12, 97, 49, 99,217,158,241, 0,254, 87, 25, 93, 65, 65, 1, 23, 30, 30, 46,121,
-240,224, 1, 24,134,129,153,153, 89,201,112,128,210,226,202,144,225, 0,149,137,171, 37,155, 58, 25,139, 36,249,200,225,206,226,
-135,159,110,194,211,173, 19,182, 71, 60, 81,139,179,242, 58,175, 80,171, 35,255,209,221, 67,142,142, 99,121,158, 95, 64, 41,205,
- 10, 12, 12,180,223,179,103,143,101,124,124, 60,130,131,131, 49,127,254,252, 84,142,227, 88, 74, 41,161,148,126,253, 14,242, 18,
- 95,218,178,101,100,100, 84,108,217,202, 47,101,185,202,175, 70, 25, 32, 81, 42,240,185,141, 25,233, 43, 22,153,121,176, 57,121,
- 47,210,180,244,104, 1,203,127, 79, 41,213, 87,116,175, 72, 36,250,232,224,190, 77, 78, 54,182, 60, 2,108, 59, 34, 49, 89,135,
- 37, 83, 63, 64,122,122, 46,254,183,117, 41, 0, 25,116, 44,131,118, 1, 3, 96,103,231,140, 79, 62,254,196, 97,211,230, 31, 62,
- 3,176,226,223, 98,192, 74,188,182,225, 48, 33,228,172,173,173,237,163,207, 62,249,196,214,195, 99, 36, 20, 10, 5,246,238,221,
-139, 61,235,215,115,107,128, 65,155, 9,185, 48,150,210,195, 21,242,220,252,157,103,210,184,113,182, 62, 62,227, 32,151,203,113,
-254,212, 79, 80, 39,253,156,219,171, 53,116, 5,106,244,170,209,135, 90,189, 60, 70, 50, 36, 18, 60, 5, 0,137, 2,137, 18, 32,
-229, 53,186,127,188,176,122, 67, 96, 85, 21,181,164,202,235, 91,167, 14,110,108,203,171,196,218,171,199, 16,175,225,217,229, 79,
-117,186,187, 89,116, 68, 5, 25,154,119,115,115, 67,199,166, 77,209,191,109, 91,136,197, 98, 40,100, 82,152, 42,140, 64,185, 66,
-203, 85,113, 23,161,161, 90,175, 88,216, 88, 91, 91, 67, 42,149,150, 8, 43, 67,173, 87,229,113,242, 60, 15,177, 88,140,144,144,
- 16,248,251,251,195,213,213, 21,251,247,239, 71,183,110,221,222,232, 50,172,170,184, 42, 22, 88,165,187,235, 74, 13,126,175,116,
-112,251, 27,226, 64, 75,144,166,109, 8, 66,252,192,178, 0, 71, 1,141, 90, 13, 74, 1, 74, 1,189, 78, 11,181, 90, 93,242, 76,
- 67,186, 94, 93, 92, 92,156, 60, 60, 60,166,206,154, 53,163, 78,131, 6,141,144,150,150, 6,158,231, 97, 98, 98,130,130,130, 2,
-152,153,153,161,117,235,214,247, 22, 47, 94,156, 65, 41,102, 85,117,144,251, 59,232,206, 0, 0, 4, 5, 5,189,210, 61, 88,188,
-229, 39,198, 97,244,196, 93,144,137,129,144,144, 16,212,173, 91,183, 50,113, 41,234,208,174, 13,174,223,139,100,199, 76, 95,163,
-145,164, 7, 47,115,224,249,237,113, 64,242, 91, 84, 42, 72, 75, 75, 67,114,114, 50,250,246,235,135, 61,187,119,227,229,203,151,
-240,245,245, 69,135, 14, 29, 96,103,103,135,151, 47, 95,226,246, 21, 13, 52,153, 25,200,208, 6, 67,105,218, 2, 71, 46, 69,105,
-230,109,212, 70,253, 85,133, 2, 33,164, 25,128, 49,230,230,230, 53, 10, 10, 10,146,244,122,253,254, 34,209,223, 77, 34,145, 12,
- 86, 42,149, 14,217,217,217, 47, 1,252,143, 82,122,167,210, 46, 35,133,194, 90,174, 48, 3,207,106, 32, 22,139,225,234,234, 1,
-202,105,145,153,163,194,168, 33,125,112, 47, 36, 28,167, 46,220,100,245,122,126,157,161, 97,244,242,242, 66,122,122, 58, 24,134,
-129, 82,169,132,177,177, 49,188,189,189, 17, 27, 27, 91, 34,174,170,219, 69,248, 33,224,101,230,102,114,115,241,134, 66,113,149,
-148,144,136,248,151, 20,114,153, 12,155,183,108,202, 47, 72,202,108,241, 35, 16,249, 79, 47,252,121,158,255, 58, 62, 62,222, 78,
- 44, 22, 59,176, 44,139,216,216, 88,220,189,123, 23, 19, 38, 76, 72, 78, 79, 79, 15,160,148, 86,235, 29, 21, 10, 69, 74,177,229,
- 74,161, 80,164, 84,100,217,122,155, 49, 87,132,144, 90, 30, 46,166,103,182,174,158,226,214,172, 69,107,145, 82,108,150,153,247,
- 52,201,255,234,229, 75,173, 39,172,254,223,103,132,144,174,148,210,103,229,221, 47,151, 72,122,180,108,211, 70, 12,154, 12,177,
-204, 31,223,125, 59, 4,169,105, 57,200,204,200,133, 84,106, 12,173,158, 1,199, 19,180,246,111,139,159,118,236, 67,189,143,199,
- 48, 50,137,164,203,191, 73, 96, 21, 97,233,247,223,127,239,230,237,237,141,237,219,183,227,194,206,157,120, 63, 59, 27,151, 68,
- 34, 70, 47,145,216,156,208,235,183, 0, 56,108, 40, 79,189,122,245,240,227,143, 63,226,231,159,127,142, 25,209, 41,229,151, 41,
- 35, 96,167,211,161,123,240, 99, 88,213,232, 3, 4, 63,134, 85, 19,111,212, 97,197,120, 74, 8,140, 94, 75,211,246,165,127,255,
- 13, 2, 43,128, 20,246,199,149,252, 86,118,147,177,189,247,176,221, 35,187, 52,245,173,233, 34,210,239, 95,139,248, 2, 86, 61,
-255,177,142,127,156, 75, 7,132, 85, 32, 14, 68, 34, 17,101, 24, 6,166, 70, 70,176,181,176, 40,108,105,138, 68, 0, 15,240,122,
-128,112,133, 31, 31,229, 9,170, 50,249,153,231,121,200,100,178, 50, 7,180, 87,117,236, 85,105,206,220,220, 92,188,120,241, 2,
-159,124,242, 9,148, 74, 37, 0, 32, 41, 41, 9,238,238,238, 16,139,197,136,143,143,199,249,243,231, 81,179,102, 77,200,229,242,
- 42,169,172, 82,214,164, 6,132,144, 75, 0, 26, 36, 38, 38,154, 57, 58, 58,162,202, 22, 44,158,162, 64, 67,160,213,114,120,242,
-228, 9, 18, 18, 18,240,226,249, 83, 52,203,207, 1, 5, 3, 74,105,149, 44, 88,142,142,142,222,158,158,158,139,151, 46, 93, 42,
-113,117,117, 5,207,243,176,178,178, 64,126,190, 10,233,233,233,240,245,245,133,171,171, 43,190,251,238, 59,160,176,251, 40,249,
-175,202,192,197,179, 69, 75,255,138, 68, 34, 76,124,207, 13, 25, 25, 38, 96,152,223,103,147, 86, 50, 6, 75, 10, 0, 1, 93, 3,
-197,103, 78,157, 48,102,129,133, 73, 12,179, 80, 92,121, 58,234, 57,158, 87,150,119, 62, 54, 54, 22, 18,137, 4, 7, 15, 28, 64,
- 70,114, 50, 26, 54,108,136,230,205,155,227,233,211,167,184,119,239, 30,172,173,173, 97,235,210, 10,151,158,235, 16,150,160,130,
-185,185, 57,162,226, 68,127,217,212,127, 66, 72,239,206,157, 59,175, 95,181,106,149,131,131,131,131, 36, 53, 53,149,221,176, 97,
- 67,183, 13, 27, 54,132,125,246,217,103,190,159,125,246,153,165,173,173,173, 56, 41, 41, 73, 63,117,234,212,110,132,144, 89,148,
-210,189, 21,150, 23,198,166, 86,140,212, 24,132,136, 97, 97,110, 9,177,204, 24, 60, 43, 6,199, 3,102,230,182,184,126,239, 32,
-174, 61,204, 29,155,146,142, 3, 6,124, 55,212,218,218,154, 50, 12, 3,107,107,235, 87,186, 6, 1,192,222,222, 30, 57, 57, 57,
- 96, 24, 6, 18,137,164,202, 34,171, 88, 92, 45,217,208,201,132,148, 18, 87,121,105,214,184,112, 58, 60,171, 32, 41,211,255,223,
- 32,174,138,203, 56, 74, 41,158, 63,127,142,130,130, 2, 92,185,114, 5, 95,127,253,117,234,235,226,202,222,222,254, 99, 51, 51,
-179,175,242,242,242,190, 75, 76, 76, 92, 91, 25,111,145,101,234, 93,230,201,104,188,230,142,129, 16, 34,113,117, 84,156,190,119,
-101,151,187, 57,125, 64, 16,253, 9,240, 36,231,145,233, 45,187,118, 61,155,245, 18, 53,222,248, 77,141,230, 99,103,159, 38,132,
-120,151,103,201,226, 57,174,177,177,137, 41,128, 20, 4,223,189, 88, 34,174,210, 51,178,161,209, 49,208,104, 9,212, 58, 17, 58,
-118,238,142,245, 63,252,140,248,148, 12, 20,207, 48,252,183,128, 16, 98,229,231,231, 55,110,208,160, 65, 88,184,112, 33,206,174,
- 90,165,253,148,144, 28, 49, 64,127,227, 56,240,148, 18,145, 1,131,211, 95,231, 89,177, 98,197, 97, 0, 67,151, 77, 64,171,204,
- 60,140,114,234, 67,173,106,244, 41,188,118,224, 76, 10, 0, 86,169,103,223, 24,170, 67,138,123,210,170,218,163,246,183, 21, 88,
-148,210, 75,132, 16,148,254,173,232, 6, 11, 7,239,246, 95,206,156,180,166, 77,223,206,162,164, 79,253,145,149,163,209,206, 12,
-215,139,226, 10,104,255, 48, 3, 45, 47,211, 55,108,192,189,200,194,239,215,197,206, 14, 51,134, 15, 7,101,129,107,143,194,176,
-239,236, 89, 12,233,220, 25,198, 69, 51,248, 12,181, 54,149,101,181, 42,109,189,170,170,149, 41, 43, 43, 11, 7, 14, 28, 64,243,
-230,205,161, 84, 42, 33, 22,139,209,160, 65, 3,132,135,135,163, 86,173, 90, 32,132,224,200,145, 35,232,223,191, 63,158, 61,123,
-134, 86,173, 90,153, 84, 71, 96,133,133,133,153, 81, 74,219, 21, 91, 59,170, 11,141, 70,131,136,136, 8,244,233,211, 7,150,150,
-150,112,118,222,131,179,167,119, 65,233,247, 62, 8, 65,149, 4, 22, 33,100, 96,175, 94,189, 36, 34,145, 8, 42, 85, 1,228,114,
- 5, 76, 76,204, 96,106,106, 14, 47, 47, 47, 36, 36, 36,160, 91,183,110,186, 39, 79,158,252,156,152,152,248, 91, 85,195,106,111,
-111,175,204,205,205,157,228,225,225,161, 40,106,229,118,180,177,177, 89,146,150,150,150, 87,197,194,161, 68, 88, 17, 66,192, 48,
- 76,137,192, 18,139, 68,112,116,176, 43,217, 47, 26,127, 70, 42,224,202,137, 79,215,200, 1,192,205,205, 13,235, 55,255, 42,234,
-213,171, 23, 38, 77,154, 4,189, 94,143,141, 27, 55, 2, 0,134, 13, 27, 6,157, 78,135, 95,126,249,165,240, 3, 18,139, 43,236,
-115,190,123,247, 46,130,131,131,161,215,235,145,157,157,141,147, 39, 79,226,210,229,203,216,123,228, 28, 94, 62,127,138, 6,222,
-238, 24, 51,230, 67, 72, 36, 18,236,216,177, 3,254,254,254,127,105,129, 32,149, 74, 63,216,186,117,171,243,246,237,219,179,142,
- 30, 61,154,221,162, 69, 11,227, 53,107,214,216,173, 95,191,190,131, 86,171,197,228,201,147, 83,110,221,186,149,223,183,111, 95,
-243, 45, 91,182, 56,215,169, 83,231, 61,148, 49, 46,171,168,219,103, 8,128,145, 1,205,205,197, 89,185, 42,240,172, 22,207, 95,
-190, 64,118,158, 22, 60,167, 67, 76, 92, 2,242,212, 28,210, 51,114,209,160,113,215,239, 47, 94,188, 56,151, 16, 50,135, 82,122,
-188,210, 70, 5,199,225,230,205,155,184,118,237, 26, 46, 95,190,140,232,232,232,146,115,102,102,102, 56,115,230, 12, 58,116,232,
-240, 78,196, 85,110,106,161,184,202,138,201,248,215,136,171,162, 50,104,129,163,163,227, 2, 71, 71, 71, 69, 80, 80,144,121,141,
- 26, 53,192,178,172,246,117,203, 85, 64, 64,192,151, 91,183,110,117,172, 85,171,214, 4, 0,107,171,251,188,242, 44, 91, 6,224,
- 13,119, 12, 34, 17, 62,254,110,211, 56, 27, 83, 89, 76, 2,158,172, 44,242, 5,200, 0, 5, 57,192,197,221, 16,183,153,247, 98,
- 66,191,153,150,179,182, 47,252, 24,192,198,242,136,163,158,197, 98,211,166,245,152, 50,121, 20,126,250,223,119,224,121, 49, 52,
-122, 6,110, 30, 45,161,209,241, 32, 34, 49, 26, 54,110,138, 11, 23,175, 64, 34, 2, 14,108,223,244,175, 50, 93, 81, 74, 51, 8,
- 33, 27,143, 28, 57,242,249,164, 73,147,192,243,188,236,171, 77,155, 84,169,169,169, 75, 81, 5,255, 85,101,240,244,223,180,105,
- 83,228,172,245,169,135,167,140, 0,243,242, 24,201, 8,126, 12,171,129, 51, 41, 14,126, 75,208,196, 27, 25,202,178,171,248,203,
-175,253,254,227, 45, 88, 37, 99, 83, 42, 82,140, 77,188,106,125, 99,110,101,249, 97,235,102, 62,214, 83, 39,124, 44,121,150,164,
-198,233,166, 83,179,127, 93, 61,207, 36,134, 55,158, 28, 77,115,170,100,117,217,119,254,124,201,255,229,123,246,148,121, 46,113,
-224, 64,131, 91, 98,229, 89,173,170,106,185, 2, 0,165, 82,105,209,165, 75, 23,116,234,212, 9, 3, 6, 12, 40, 25,115,213,168,
- 81, 35,236,221,187, 23,129,129,129,184,127,255, 62, 28, 29, 29, 81,183,110, 93,212,173, 91, 23, 39, 78,156,168,106,198, 6,199,
-113,240,243,243, 43,158, 69,216, 32, 46, 46,206,172,186, 9,169,209,104,144,158,158, 14, 43, 43, 43,200,100, 50,180,104,209, 28,
-159, 79,108, 1, 27,199, 31,225,231,227,141,252,252,252,146,169,235,149, 65, 34,145,120,213,169, 83, 7,169,169,169, 72, 77, 77,
-133,173,173, 45,156,156,156, 96,111,111,143,213,171, 87,211, 53,107,214, 92,226, 56,238,231,164,164,164, 42, 43, 66, 23, 23,151,
-102, 54, 54, 54,159,167,164,164, 40, 74, 21,154,138,134, 13, 27,110,118,114,114,218,152,144,144,112,173, 42, 2, 75,167,211,129,
- 16,130,223,158, 59, 33, 95, 75,144, 19, 23,140, 73,239,185,191, 34,184, 36, 18,137, 33, 3,117,243,135, 14, 29,106,231,234,234,
-130,216,168, 71, 56,120,144, 98,213,170, 85,184,124,185,240, 59,143, 44,106, 16, 20,239,119,232,208, 1, 30, 30, 30, 85,114,110,
-201,243, 60, 66, 66, 66,176,231,232, 37, 56,186,251, 32,230, 73, 4,238,157, 56,134, 26,182, 86,168,215,184, 41,244,122,253, 91,
-185,208,120, 23,208,233,116, 91, 60, 61, 61,161,213,106,207, 1,216, 26, 18, 18,210, 63, 49, 49,113,245,175,191,254,234, 52,104,
-208,160,132, 99,199,142, 77, 1,112, 56, 36, 36,100,244,226,197,139, 59,233, 11,187, 15,222, 0,195, 48, 63, 77,157, 58, 53, 96,
-208,160, 65, 68, 42,210,107,131, 78,239, 16,179,172,158, 76,159,179,141,187,120,245,146,136,101,245,100,192,208,169,252,137,243,
- 15, 69, 99, 39, 46,231, 26,181,236,133,208,208, 80,135,222,189,123, 47, 2, 80,161,192, 98, 24, 6, 28,199, 65, 34,145,148, 8,
-232,178,174,169,138,245,106, 12, 80,203,204,221,228,230,146, 13,157, 77,136, 56,239, 95, 47,174, 0, 32, 45, 45,109, 51,128,205,
- 86, 86, 86,201,198,198,198,200,205,205,125, 35,255, 17, 66, 20,222,222,222, 10,153, 76,134,174, 93,187, 90, 57, 58, 58, 70,138,
- 68,162,181,241,241,241, 85, 86, 26,101, 89,182,170,235,166,193,210, 22,189, 91,180,109,108,250,216,124,161,169, 66,172,190, 95,
- 35, 82, 97, 70, 0,100,107,236,159, 95,143, 30,146, 67, 82,228,141,154,118,104, 2, 51,177,113,239,242, 4,150,136, 97,238,101,
-103,102,245,200,201,213,226,234,181, 80, 12, 29, 82, 7, 26, 29, 1,207,139,144,151,175, 1, 24, 9, 68, 0,134, 13,255, 0,148,
-136,145,145,156, 0,134, 97, 30,226,223,135,217,227,198,141,235, 49,103,206,156,154, 69,254,171,220,139,252, 87,205, 32,132,212,
-167,148, 22, 84,147,167,198,177,189,243,166, 29,189,242, 67,118,175,214,170, 39, 77, 10,231, 68, 89, 53,241, 70,134, 68,130,167,
- 98, 6,233,148,190, 50,163, 20,197, 19,190, 74, 79,252,250,199, 11,172,202,224, 89,203,165,123,251,102, 77, 39,206,157, 51,215,
-244,201,237,203,152,187,232,123,190, 78,211,110,217, 43, 15,159,202,205, 54,171,209,177, 32, 33,226,190,161,186, 2, 0,186,117,
- 8, 68, 3,223,230,111,156,244,239, 80,232, 3,242,234,133,187, 72, 78,141, 55,184,146, 45, 18, 5,101,142,185, 50,100,106,126,
- 25, 5, 65, 86,104,104,168, 93, 92, 92,220, 43, 3,218, 61, 60, 60, 64, 8,193,173, 91,183,112,243,230, 77, 12, 29, 58, 20, 98,
-177, 24, 18,137, 4,151, 46, 93,202,173,142, 5, 11, 69,179, 8, 9, 33,221, 92, 92, 92,202,156, 61,104, 8,151, 74,165, 66,118,
-118, 54, 78,159, 62,141, 58,117,234, 96,201,146, 37,112,114,180,199,220,185,211,192,243, 60,114,114,114, 74,252, 3, 25, 96, 29,
-160,197,214, 33,158,231,145,154,154,138,154, 53,107, 98,195,134, 13, 88,189,122,245,247, 9, 9, 9, 85,158,229, 98,105,105,105,
-166, 80, 40,198,246,238,221,219,191, 95,191,126,232,214,173,219, 43,231,119,237,218,101,114,248,240,225,153,174,174,174,237,121,
-158,223, 20, 31, 31,159, 97, 8,239,143, 63, 22,186, 79, 82,182, 92,128, 89,131,106, 96,228,248, 29, 88,185,242, 16,228,114,249,
- 43,149,237,194,133, 11, 43, 20, 47, 60,165,158,210,180,235, 9,211,102,174,176, 91,186,244, 44,206,158, 77,129, 72, 36,130,163,
-163, 35, 68, 34, 17, 94,188,120, 1,145, 72, 4,119,119,119,136, 68, 34,196,199,199, 23,143,249,203,132,218, 48, 31,132, 34,145,
- 8,106,181, 26,177, 49, 47, 17, 23, 21, 9,147,156, 36,216,154, 41,145,249, 40, 4, 13,198,124, 12,189, 94,255,119,104,209,158,
- 1,112,166,212,161,131,132, 16, 61, 33,100, 56,128,125,148,210, 67, 69,199,183,161, 2,199,160, 45, 91,182,108, 52,103,206, 28,
- 73,177,219, 12, 39,183,197,172, 78,167,227, 1,192,187, 65,187, 87, 84,254,211,167, 79,177,114,229, 74,228,231,231, 67, 90,133,
-145,233,157, 59,119, 46, 25, 19, 41,149, 74, 97, 99, 99, 3,157, 78, 7,150,101,171,220, 53,104,237,238,242,253,173,224, 75,220,
-131,168, 31, 84, 15, 31,159, 52,138,123,193, 35, 47,205,230, 95, 43,174, 94,183,100,185,184,184, 44,224,121,158, 82, 74,231,149,
- 42, 91,229,110,110,110, 87,130,130,130,172, 89,150,197,186,117,235, 44,146,146,146, 44,218,181,107, 55, 11, 64,185, 2,171, 28,
- 55, 13,229,161, 90,110, 26, 56, 14, 94,102,166, 22,200, 68, 28, 52, 54,250, 70, 89,214,108,198,153,196,143,239, 59, 69, 55,246,
- 53,230,244, 53, 69, 57, 90, 56, 43, 45,192, 83, 90,174, 35, 52,141, 94,127,242,126,240,189,174,110,174,117,152, 95,143, 95, 70,
-223,254,131,160,209,136,160,214, 19, 16, 70, 2,194, 72, 81,191, 65, 99,212,173,215, 0, 20,192,221,219,215, 89,173, 94,127,230,
-223,148,246, 78,254, 19,135, 58,249,127,190, 22,148,167,101,248,193,170,217,191,127,255,165, 0, 38, 86,218, 43,209,106,226, 80,
-135,214,133, 60,165,253, 96, 77,253,124, 28, 30,221,150,152, 95, 14,254, 86,218,173, 37,126, 75, 61, 75,160, 84,252, 62,139, 80,
- 34,170,158,123,141,127,141,192,114,115,115,179,176, 51, 81,254,248,217,152, 15, 77,163, 31,220, 64, 92,200, 13, 92,187, 26,153,
-185,251,151,163,241, 57,217,169, 99,170, 32,174, 74,186,243,108, 28,107,160,102, 25, 2,203,200,212, 22, 0, 80,211,183, 57,196,
- 49,230, 85,122,145,178,172, 87,213, 17, 87,165, 43,229,178,124, 96,141, 29, 59, 22, 91,183,110, 69,155, 54,109,224,233,233, 89,
-210, 82,174,170,149,236,117,107, 82,117,102, 15,150, 70,110,110, 46,220,221,221,177,101,203, 22, 60,124,248, 16,166,166,166, 24,
- 58,116, 40,114,115,115, 75,132,149,161,131,220, 57,142,123, 25, 20, 20, 84,127,240,224,193, 84, 44, 22,147,172,172, 44,152,155,
-155, 99,195,134, 13, 5,137,137,137, 23,170, 26, 54,103,103,231, 94, 86, 86, 86, 31, 13, 25, 50,132,241,246,246, 70,114,114, 50,
-204,204, 76,181,132, 16, 25, 0,152,155,155,107,141,141,141,241,201, 39,159,160,126,253,250,205,103,206,156,217,204,193,193, 97,
-103, 82, 82,210, 47, 21,229, 37, 66, 8,246,238, 45,236,157, 26,179, 54, 2, 90,109,161, 64,217,184,113, 35,138,198,178,253,222,
- 21, 16, 21, 5, 24, 48, 51,197,196,196, 4,158,158,158,101,166,125,219,182,109,113,247,238,221,194, 46, 72,177, 24,118,118,118,
-184,118,237,154, 65,211, 50,139, 29, 56,134,134,134,194,199,195, 6, 15,207, 6,193, 70, 41, 65, 67, 39, 7,184,180,109,143,200,
-200,200,191,212,122, 69, 8,233, 11,160, 55,128, 19,148,210,195,132,144,129, 0,186, 21,239,163,138,142, 69, 89,150,165, 34,145,
-136,196,198,198,234,148, 74, 37,177,178,178, 18,203,229,114,104, 52,154, 18,161,245,244,233, 83, 28, 63,126, 28,113,113,113,176,
-178,178, 18,153,155,155, 67,167,211, 25, 52,163,148,227,184, 55,220, 51, 20, 61,183,202,226,106, 20,224,183,117,241,178, 26,114,
- 17, 99,238, 99,211, 29,207, 30, 61, 85,229,165,101, 25,253, 23,196, 21, 0,100,102,102,110, 6,176,185,120,223,214,214,118, 52,
-195, 48,115,205,205,205,205, 47, 93,186,100, 97,107,107, 75,118,236,216,161,159, 55,111, 94, 22,195, 48,153,132,144,213, 21,241,
-149,227,166,225,109, 4,160,251,155,199, 16,150,150, 29,229, 46,177,116,226, 31,168,233,245,201,177,179,234,102, 74,234,216,146,
-122,126,232,159, 18,126,117, 52, 27,213, 58, 57, 49, 73, 68,193,135, 85, 80, 6,111,155, 53,103,225,244,200,136,123,110, 10, 51,
- 5,198,142,155,131,223, 78, 93, 0, 17, 73,112,229,250, 45,104,117, 28,210, 50,178, 49,100,216, 8,184, 56,218, 32,236,230,233,
- 84,150,231, 55,252,187,196, 53,191,190,107,223,209,150,114, 35,101, 81,156,112,248,249,127,211, 32, 18,173,197,252,249,243,225,
-231,231, 55,190,104,229,134,140,138,203, 15,126,125,253,246,195, 44,165,242, 66, 30,202,115,216,114, 96, 86,145, 31,172, 41,216,
-176,249,151,250,245, 60,158,127, 85,145, 31,172,255,148,192,170, 81,163,134,220, 88,130, 79,172,140,164, 51, 62, 27,222,207, 54,
- 37,234, 17,226,194,239, 21, 42,127,141, 74,159, 24,121,169,161, 1,133,118,231,215,252,111,208,138,186,168,212,234,202, 91,240,
-175,115, 22, 87,180,175, 91,175,170, 34,174,202,226, 44, 45,178, 74,251,189,114,117,117,197,210,165, 75, 43,245,131, 85,198,187,
- 23, 31,239, 6,160, 65,177,200, 66,225, 32,247,110,134,204, 28, 44,143,211,214,214, 22,233,233,233, 0,128,128,128, 0, 4, 4,
-252, 62, 79, 65,167,211,149, 88,173, 76, 77, 77,223,176, 96,149,197,201,178,236,178,195,135, 15, 15,186,113,227, 70,239,105,211,
-166,137, 59,118,236, 88,104,191,207,207, 87, 83, 3,214, 94, 43,131,115,248,169, 83,167, 24,158,231,177,101,203, 22, 4, 7, 7,
- 83, 99, 99,147,201, 38, 38,166, 59,204,204,204,184,172,172,172,225, 31,127,252,113,191,175,190,250,138,180,109,219, 22, 55,110,
-220, 32, 53,107,214, 12, 4,240, 75,101,239,126,235,214, 45,136, 68, 34,176, 25, 49, 24, 63,107, 31,140,141,196,136,136,136, 64,
- 70, 70,198, 27,206, 71, 13,137, 79,158,231, 75, 42,238,226,173,109,219,182, 37,221,141, 45, 90,180, 0,195, 48,184,127,255,126,
-153,221,173,175,113, 82,107,107,235,146,252, 33,149, 74,113,225,194, 5,124,243,205, 55,112,179,178, 64,102,248, 67, 56, 4,116,
- 68,151, 15, 63,198,208,161, 67,193, 48, 12,172,172,172, 74, 44,189,149,189,251, 91, 10,170, 18, 78, 66, 72, 31, 31, 31,159,217,
- 97, 97, 97, 46,245,235,215,247, 37,132, 4,248,249,249, 53,123,248,240, 97,241,190,132, 82,186,191, 42,156,119,238,220, 57,184,
-126,253,250,113,163, 70,141,146,242, 60,207, 69, 71, 71,235, 1, 16, 7, 7, 7,230,206,157, 59,252,175,191,254, 10,149, 74, 5,
- 23, 23, 23,145,179,179, 51, 57,115,230, 12, 31, 30, 30,126,139, 82, 58,199,208,119, 47,158, 41, 88, 60,152, 93,165, 82, 25, 36,
-174, 94,231,172, 81,215,107, 73,167,118,222,174,105, 9,247,145, 24, 31, 5,117,134,165,254,194,233,107, 85, 18, 87,127,116, 26,
-253,201,156, 11,159, 60,121,226,172,209,104, 32,147,201,176,113,227, 70,221,210,165, 75,195,210,210,210,252, 41,165,170,234,134,
-179, 42, 14, 72, 43,227,204, 78,199,111, 71,142,222,105,102,210,127, 27,198, 39,164,150, 12, 92,164,132, 88, 29,178,247,245, 87,
- 54,175, 31, 47, 58,177, 64,148,203, 21,252, 86, 30, 39,165, 84, 75, 8, 25,212, 63,112,216,185,189,123,247,152,204, 91,176, 0,
-215,110, 61, 68,122, 86, 30,120,202,128, 39, 4,115,231,206,131,131,141, 21,114, 18,158, 20,104,116,186,254,175, 47,153,243, 79,
- 79,119, 66, 68, 19,206,252,186, 99,173,136,128,207, 79,126, 44,103,114,163,148, 35,135,246, 23, 15, 26, 52, 8,135, 14, 29, 66,
-104,104,232, 15,229,137,171,210,156,148,138, 38, 60,188,180,111, 45, 1,120, 85,234, 99,185, 56,239,185,242,131,225,253,197, 67,
-135, 14,197,225,227,215,177,247,216,243, 77,123,126,165,199,240, 31, 67,185, 2,203, 84,140, 80,127,223, 90,206,109, 27,215, 83,
-136, 57, 21,226,194,163,144,145,175,198,153, 71,209, 89, 34, 42,250,169,186, 15, 44, 28, 59, 33, 69, 76,204,147, 55,206,101,101,
- 41,138,172, 49, 85, 91,246, 73, 36, 18,189, 98,189,122, 27,203, 85,233,112,218,219,219,191,178,236, 74,233, 10,187,120,140, 79,
- 53, 92, 52,204,138,137,137, 49,139,137,137, 1,165, 20,183,110,221, 50,107,209,162,197,172,183,177, 94, 77,155, 54,237,149,229,
- 65, 74,255,150,117,172, 50,164,166,166,230, 3,248,209,222,222,254,183,233,211,167,191,223,178,101,203,182,243,231,207, 39,148,
-210,234, 70, 44,203,243, 60, 46, 94,188,136, 67,135, 14,113, 90,173,118,118, 98, 98,226,227, 82,231,127,114,117,117,189,210,175,
- 95,191,149,145,145,145, 76, 88, 88, 24, 12, 17,114, 42,149, 10,158,158,158, 96, 89, 22,223,142,119, 69,110,110,125,176, 44, 11,
-142,227, 96,108,108,252,202, 58,148,134,164,147, 72, 36,122,197, 50, 82,188,221,186,117, 11, 12,195,192,223,223, 31,247,238,221,
- 43,177, 96, 85,102,113,210,233,116, 49,246,246,246,246, 11, 23, 46, 44, 9, 87,106,106, 42,130,130,130,208,178, 85,107,248,126,
- 50, 22, 9, 9, 9, 88,189,122, 53,156,156,156,176,100,201, 18,100,100,100,128,101,217, 63,219,108,222, 61, 44, 44,204,101,248,
-240,225, 41, 15, 31, 62,116, 57,126,252,184, 69,239,222,189,141,135, 13, 27,150,242,240,225, 67, 23, 66, 72, 59, 0,251,171,248,
-253,204, 38,132,156, 90,178,100,201,172,137, 19, 39,182, 24, 53,106,148, 68, 34,145,240,241,241,241,236,158, 61,123,136,167,167,
-167, 72, 42,149,146,211,167, 79,243,183,111,223,190,201,178,236,183,148,210, 43, 85,181, 50, 23,139,171,170,142,185, 42,198,100,
- 59,249, 7,166,162, 84,255,245, 27,151,138,188, 61, 92,116, 59,247, 4,197, 94,185,241,228, 25,163, 97, 39,255, 8, 60,195,127,
- 16, 12,195,236,247,241,241, 25, 61, 97,194, 4,163,110,221,186,201,191,250,234,171,236,220,220,220, 50,197, 85, 89,168,138,155,
- 6, 84,209, 1,105, 41,252,111,246, 23,199, 39, 79,173, 63,186,214, 71, 14, 53,112, 54, 63, 5,153, 98, 70,100,102, 33, 66, 99,
-119, 6,185,105, 79,109,143,157,219,254, 2,149,248, 85,163,148,222, 33,132,116,174, 87,191,209, 47,223, 46,249,214,238,203,153,
- 51, 36,191, 28, 63, 9,202,234,112,235,210, 37,152, 72, 57, 26, 30,124, 54, 89,163,211,246,251, 55, 46,149,147,112,117,221, 94,
- 66,200, 81, 43, 43,171, 7, 31,142, 26,229,233,227, 51, 12, 74,165, 18, 7, 15, 30,196,207,235,214,113,107,128,193,155, 9,185,
- 55,150,210, 10,235,252,228, 27, 37, 60,247, 63,254,240, 67,175,198,141, 63,130, 82,169,196,129, 3, 7,176, 99,205, 26,131,121,
-254, 51, 2, 11, 34,146,123,243, 73,116,222,173, 39,209,121,224, 41,229, 41,213,136, 68,136,205,215,233,150, 68, 62,139,171,150,
- 24, 40,238, 34, 92,180,120,194,187, 84,230, 37,162,167, 58,211,178,203,169, 28,226,234,212,169,131,215, 45, 90, 21,253,215,235,
-245,113, 6,210, 47,115,115,123, 99, 93,210,101,213, 13,107,113,183,159,161,226,202, 80, 63, 88, 0,144,156,156,156, 10, 96,133,
-139,139,203,209, 30, 61,122, 12, 37,132, 36, 85, 51,141,246,118,232,208, 97, 40,165,148, 17,137, 68,187, 94, 19, 87, 0,128,216,
-216,216,231, 46, 46, 46, 91, 60, 60, 60, 74, 22,128,174,136,147,231,249,231,245,235,215,215,149,149, 22,229,237,243, 60, 95,105,
- 26,101,101,101,161,121,243,230,111,172, 57, 73, 41, 69,116,116,116,177,133,169, 36,238, 43, 18,110,121,121,121, 99, 63,255,252,
-243,205, 18,137,196, 13, 0, 41, 22,183, 28,199, 49,223,127,255,189,130,227, 56, 6, 0, 17,137, 68,172, 68, 34, 81, 31, 58,116,
-136,101, 89, 54, 70,163,209,140,253,147,203,129,125,132, 16, 9,128,204,176,176,176,118, 69,150,171,184,208,208,208,179,123,247,
-238,181, 7, 42,119,159, 80, 78,222,188, 2,224, 10, 33,164,237,198,141, 27,103,143, 29, 59,182,249,208,161, 67,197, 1, 1, 1,
-248,237,183,223,184,139, 23, 47,222, 82,169, 84,203,170, 42,172, 8, 33,121,238,238,238,133, 5,152,184,226, 81, 14, 44,203, 86,
-216, 90,179,118,151,175, 31,241,169,147, 98,203,178,160,188,180, 4,237,117,125,158,118,206,118, 32, 20,255, 97, 36, 37, 37,125,
- 65, 8,153,183,122,245,234,132,134, 13, 27,202,165, 82,169,214, 80,113, 85,212,240,177,175, 66, 30,225,171,153,183, 88, 66, 72,
-207, 85, 93, 6, 30,109, 63,247,115,143, 46, 29,252,149,174, 53,236,156,195,163,146,241,244,198,111,249, 15,142, 45,126, 73, 53,
-153,125, 41,165,172, 1, 92,183, 9, 33,117,166,205,152, 86,188,216,115,131, 78,103,142,208,255,208, 98,207,139,150, 47, 95,238,
-233,227,227,131,131, 7, 15,226,204,174, 93, 24,146,150,134, 11, 12,195,136,164, 82,235, 99, 58,221, 10, 0,134, 8,163, 69, 43,
- 87,174,244,242,243,243,195,254,253,251,113,122,199, 14, 12,174, 30, 79,121,104, 6,192,182,232,127, 26,128,199, 0,154, 0, 48,
- 2,160, 1,144, 7,192,166,212,245,233, 69,231,138,207, 95, 6,240,167, 14,116, 45,183,116,122,248,228, 69,147,119,253, 48,149,
- 74,149,225,233,233, 41,169,202, 61,122,189, 62,165,146, 2, 52,174, 86,173, 90, 6, 91, 41, 12, 17, 67,233,233,233, 77,255,168,
- 8,127,219,177, 86,175, 8, 65,158,127,233,232,232,200, 23, 87,246,101,137,175,178,142, 81,224, 69, 85,158, 19, 23, 23,247, 12,
-192, 55,213, 13,103, 92, 92,220, 73, 24,176,152,179,161,215, 1, 64, 70, 70,198, 59, 95,100,151, 80, 26,255,213, 87, 95, 85, 73,
- 88,131,210,248, 10,210,250, 33,128, 22,127,247,210,149, 82,122,185,168,240, 1, 33,164, 63, 33,164, 39,128,211,148,210,131,239,
-136,191, 68,104,109,217,178,101, 50,165, 20, 57, 57, 57,107,170, 42,172, 74, 9,255,243,239,234,221, 51,146,181,231,247,252, 16,
-215, 81,149,165,155,188, 53, 79,187, 3, 2,138,211, 76,109,103,103,247,211,200,145, 35, 91, 2,216,254, 46, 56,223,194, 77, 67,
-121, 97,124, 65, 8,105,120, 97,218, 55, 31, 94,176, 48,237, 5, 78,236, 13,173,232, 24,180,233,191, 1,248,209, 16, 43,120,233,
-247, 5,176,178,104,251,207,160,200,127,213,228,209,163, 71, 99,222,188,121, 56,189, 98,133,238, 83, 66,178, 37, 0, 61, 85,216,
-192, 20, 17, 96,166,161, 60, 31,124,240, 1,230,205,155,135, 19,223,126, 91, 45,158, 74, 96, 75, 8, 57, 14, 0,179,102,205,154,
-179,116,233, 82,203,217,179,103, 55, 88,182,108,217,146,162,253, 71,197,231,139,210,180,247,236,217,179,235,149, 58,159, 11,224,
-206,159,253, 33,253, 97, 27,128,206, 2,167,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,111,185,245, 42,148, 44,229,255,150,
-247,191,212,177, 63, 51,188, 16, 9,109, 53, 1, 2, 4, 8, 16, 32, 64,192, 63,212, 10,119,252,109,206,255,161, 97, 3,208,185,
- 28,203,214,217, 42,188, 96,231,106, 88,206,206, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,223,226,172,140,187,156,251,
-123, 17, 66,142, 83, 74,123,151,247, 91, 44,168, 94,255, 95,234, 88,149, 87, 30,121, 43, 8, 93,132, 2,167,192, 41,112, 10,156,
- 2,167,192, 41,112,254, 19,186, 8, 1,208, 89,179,102,205,254, 39,116, 17, 86, 48, 5,231, 32, 19, 31, 15, 51,153, 76, 41, 5,
- 0,173,182, 64,231,236,140, 28, 96,224, 95,182, 16,173,128,127,172, 9,215,190, 72,204, 39,191,203,107, 5, 8, 16, 32, 64,192,
-127, 6,169,197,150, 41, 0,169, 0, 72,209,190,182,232, 55,181,168,238,120,253,255, 43,231,255, 76,136,203, 19, 87,105,105, 74,
- 27,177, 56,211,139,227,212,117, 1, 64, 44, 22, 69,164,165, 89, 70,218,216, 28, 76,171,142,200,178,181,183, 15,150, 48,140,179,
- 33,215,234, 57, 46, 62, 45, 57,249, 21, 87,239, 20,248,199, 11, 59, 67,197,195,219,136,140, 63, 67,160,216,218,218,218,219,219,
-219,191,103,102,102,214, 42, 43, 43,235,118,106,106,234,225,212,212,212,228,114,194,179,148, 16,204, 40,250,255, 29,165,116,118,
- 5, 97, 55,248,218, 50,238,245, 84, 42,149,227, 9, 33,126, 69,239, 31, 90, 80, 80,176,145, 82,250,228, 63, 40,104,141, 0,244,
- 19,139,197, 31,216,216,216, 52, 79, 74, 74,250,138, 82,186,186,154, 92, 98, 0,211, 44, 44, 44,134, 90, 88, 88,212,204,200,200,
-120,150,147,147,179, 31,192, 74, 74,105,165, 83,158,191,158,228,212, 42,160, 91,192,151, 23, 79, 95, 92,180, 96,109,194,141, 55,
-206,127,225,100,221,181, 75,155,121, 23,143, 93, 95, 56,123,189, 97,203, 35,149, 10,155, 8, 40, 25, 71,202, 23,181, 82,233,223,
- 56, 93, 90, 2,152, 83, 20,230,149,148,210, 11,127,243,124,100,108,111,111,255, 45,128, 62, 98,177, 56, 44, 62, 62,254, 19, 74,
-105,220, 59,226,150, 0,176, 2,144, 97, 72, 62,122, 45, 63, 54, 3,224,135, 66,119, 26,119, 12,113,197, 96, 96,185, 54, 74, 36,
- 18, 45, 46,114,125, 51, 55, 61, 61,125,251,223, 53,109,228,114,249, 26, 7, 7,135,143, 84, 42, 85, 1, 33,132,150,246,215,200,
-178,108, 92,106,106,106,211,127, 97,209,118,231,159, 22,224, 50, 5, 86,124, 60,204,196,226, 76,175,148,164,135, 67, 18, 18, 67,
- 6, 3,128,147, 99,131,253,118, 14,245,247,197,199,203,116,205,186, 4,154, 72,148,226,141, 12, 35,105,164,214,106,108, 36, 98,
- 73,154,142,213,223, 23,105,233,248,196,136, 67,101, 58, 73,148, 48,140,243,203,200, 11,118,172, 46, 3, 18,133, 19, 36, 70,110,
-229, 6,202,201,201,169, 90, 47, 99,101, 85,219, 84, 39, 87, 76,150, 72,152, 46, 60,101,253, 40, 15,136,136, 36,148,229,244,231,
-164, 26,205,170,140,140,168,220,234, 70, 84, 93, 27,226, 64,129,161, 32,232, 2,138, 51, 4,216, 27,145, 70,147,170, 80, 48, 24,
- 36, 30,222, 82,100,148,190,119, 53,165,244,139,119,157, 97, 92, 92, 92, 44, 7, 12, 24,176,230,155,111,190, 49, 50, 49, 49, 33,
- 49, 49, 49,221,102,206,156,217,206,197,197,101,106, 92, 92, 92,194,235, 98,143, 16,204,224,249, 66, 7,165, 34, 17,153,105,111,
-111,175,100, 24,230,141,197, 67, 57,142, 83, 18,130, 9, 60, 95,184,224,184, 72, 68,102, 16, 66,214, 26, 34, 20,141,140,140,134,
- 53,111,209,122,234,183,203, 87,154,216,219,217, 25,179, 28,175,123,241,242,165,241,151,179,191,104, 97,100,100,180, 86,165, 82,
-237,169,234,123, 18, 66, 8,195, 48, 67,228,114,121,111, 0, 62, 69,135,195, 53, 26,205,113,142,227,246, 25, 90,145, 59, 56, 56,
- 92,102, 24,166, 70, 85,158,205,113, 92, 76, 82, 82,146,127, 53, 43,174, 65,110,110,110, 63,182,111,223, 94,217,188,121,115,200,
-100, 50,204,155, 55,111, 26,128,213,134, 8, 41,165, 82, 57,196,216,216,184, 86, 94, 94, 94,148, 74,165,250, 69, 38,147,117, 94,
-187,118,173,107,155, 54,109, 76,147,147,147, 9,195, 48,246,199,143, 31,127,127,221,186,117,221, 8, 33,157, 42,171,220,178,163,
-232,151,242, 62, 62,109,179,163, 46,124, 9,160,199,235,231, 89,181,226, 3,202,184,246, 86,209,123,177,168,194, 20,121, 66,136,
- 72, 34,145,172,117,112,112, 24,173, 86,171,213, 0, 40, 33,132,218,219,219,151, 84, 52, 0,160,213,106, 51, 51, 51, 51,189, 43,
-252,182,235,214,189,203, 48,140, 75, 5,233, 17, 23, 17, 17,241, 46, 42,172, 25, 73, 73, 73, 61, 37, 18, 9,113,117,117,101, 0,
- 92,168,194,251,122, 1,152, 91, 84,201,108,164,148,114,132,144, 14, 64,225,247, 14,224,187, 98,193,198, 48,204, 70,111,111,239,
-247,194,195,195, 55, 81, 74, 23, 85, 55,176, 14, 14, 14,155, 55,108,216, 48,184,111,223,190, 76,106,106,170,115,195,134, 13,119,
- 3,104,251,150,194, 74, 6, 96,182,131,131,195,103,254,254,254,214,247,238,221,203, 32,132,108, 0,176,172, 34, 95, 83,132, 16,
- 23, 0,157, 45, 44, 44, 58,205,157, 59,215,164,119,239,222,216,178,101, 75,207,173, 91,183,230, 17, 66,206, 1, 56,251,182,226,
- 79, 36, 18, 45,142,143,143,119,164,148,194,209,209,113, 49,222,145,123,138,119, 13,134, 97,214, 14, 25, 50,100,244,238,221,187,
-149, 47, 95,190, 84, 58, 59, 59,151, 56,189, 38,132, 84,187,254, 20,240, 39, 9, 44,153, 76, 41,229, 56,117,221,132,196,144,193,
-237,218,127,111, 14, 0,151, 47,125, 62,216,206,161, 94,168, 76,166,140,148,155, 41, 14, 5,246,233,220,104, 96,239,246,196,197,
-209, 14,113,137, 41,246,255,219,123,186,251,241,211, 23, 14,161,208,241, 87,153, 96,117, 25, 48,210,157,197,227,171,235, 96, 19,
-144,128,245, 39,226,112,227,193, 11, 20,100,167,161,134,131, 17,150, 79,238, 10, 7, 75,101,181, 94,196,196,222,171,131, 72,161,
-220, 55,124,216, 72,243,247,250,249, 72,220, 29, 28, 64,169, 28,145, 81,121,173, 79, 6, 93,104,246,203,129, 61,227, 77,236,189,
-134,228, 37, 71, 26, 92,168, 53,113, 34, 70,249, 58,244, 19, 51,228,253,182, 45,234,117, 26,214,179,173,200,215,167, 14,194, 30,
-133,119, 61,122,254,214,114, 95,123,209, 57,150,163, 59,141,165, 56, 18,156, 80,190, 35,190,178,132, 70,167, 78,157, 26, 27, 25,
- 25,105, 75, 95,167, 82,169,100,132,160, 83,117, 68, 70,241, 51,180, 90,141, 72, 34,145, 65, 36, 34, 83, 27, 52,104, 80, 35, 45,
- 45,237,178, 72, 36,218, 21, 23, 23,151, 89,149,248,156, 72,136, 44, 83, 44,110, 34,146,203, 29, 57,173,214, 26, 0,136, 76,150,
-233, 98,105, 89,127,238,156, 57, 38, 12,195,240,233,233,233, 40, 40, 40, 32, 31,127,252,177, 34, 42, 42, 42, 16,192,186, 74,194,
-136,173, 91,183,122, 57, 58, 58,106, 95, 63,151,152,152, 40,235,219,247,189,234, 20,216, 94, 45, 91,181,153,114,250,244, 41,159,
-156,140, 76,245,214,213, 91,238,233, 21, 70,106,143,186, 94,210,141, 91,118,152,125, 50,122,196,231,132,144,251,148,210,200, 42,
-112,186, 25, 25, 25, 29, 90,177, 98,133, 95,135, 14, 29, 36,118,118,118, 72, 78, 78, 70,120,120,184,223,249,243,231,251,237,216,
-177, 99, 26, 33, 36,144, 82,106,136,199,117,207,115, 59,127,180, 51,182,178, 6,167,215,195,169, 65,227, 18,255,100, 79,207, 7,
-129,213,233,192,235,245,240,233,221,175,208, 12,195,243,240,245,245,173,150,183, 92, 66,136, 83,189,122,245,126, 94,178,100,137,
- 84,163,209,224,214,173, 91,184,112,225, 2,159,152,152,184,172, 50,113, 69, 8, 9, 90,176, 96,129,139,191,191,191,105, 90, 90,
- 26, 56,142,179, 57,114,228,200,248,198,141, 27,155,185,186,186,202,118,238,220,137,188,188, 60,176, 44,107, 85,171, 86, 45,171,
- 97,195,134,105,119,238,220, 57, 13,192,183,229, 89,174,114,162,232,151, 73,164, 86,119,239, 38, 31, 32,137,156,234, 62,181,135,
-227, 73,179,218,164,196,146,213,163,118,109,211, 90,117,141,103,154,152,213,183,202,137, 63, 59,179, 71,237,218, 91, 79, 70, 85,
-222, 8, 34,132,136, 68, 34,209,218,192,192,192,225,123,247,238, 85,134,135,135, 43,125,124,124,192,243,124,137,199,252, 98, 71,
-177,158,158,158,134, 84, 88, 46,231,206,157,179, 51, 50, 50,122,195, 41,111,126,126, 62,250,246,237,251, 71,148,183, 85, 77,227,
-175,159, 63,127, 62,232,208,161, 67, 35,102,204,152,225, 9, 96, 2,128,121,233,233,233,237, 1,192,218,218, 90, 6,224, 2, 33,
-228,195,233,211,167,127, 58,107,214, 44,244,236,217,115, 30, 33,100,113,117,172,122,132, 16,198,198,198,166,103,223,190,125, 25,
-189, 94, 15, 99, 99, 99,232,245,250,218,111, 41,174,228, 82,169,244,215, 21, 43, 86,116, 25, 54,108, 24,196, 98, 49,120,158,183,
- 10, 10, 10,154, 63,122,244,232,182,132,144, 30,101,137, 44, 66,200, 7,159,126,250,233,128,145, 35, 71,162,105,211,166, 37,206,
-101, 87,172, 88,129,133, 11, 23,154, 4, 5, 5,245,219,185,115,103, 63, 66,200, 47,148,210,106,251, 50, 43, 94, 47, 52, 54, 54,
- 22,118,118,118, 70, 86, 86, 86,137, 0,190,202,200,200,216,242, 55,178, 42,126, 55,100,200,144,225,187,119,239, 54, 1,128,229,
-203,151, 99,202,148, 41,176,183,183,135,137,137,137,160,104,254, 9, 2,171, 50, 20, 20, 20, 52,158, 61,241,125,136, 68,133,173,
-196, 58, 53,221,176,116,206, 39,228,232,241,211,141, 43,186, 79,162,112,194,227,171,235, 32,119,157, 12,141,158,197,205, 7,207,
-113,102,121, 55, 0,128, 87,143,185,208,232, 58, 21,103,116, 43,153,145,209,119, 90,142,187, 6, 7,135, 91,136,142, 78,173, 76,
- 92,217, 58,216, 31,255,225,135,111,141,252,106,123, 67,199,234, 17,159, 18, 15, 66,228,112,113, 54,197,135, 31,244,144,180,111,
-239,100,243,245,215,155,127, 51,182,245,234,159,159, 26, 89,169,163, 79,111, 91,178,189,109, 99,207,193,195,122,249,203,235,251,
-213,131, 84,110,244,187,240,106,218, 20, 77,154, 54, 21,205,202,203,237,114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227,
- 84, 58,170,162,111,163,180,208,152, 52,105,210, 27, 11, 18, 39, 38, 38,226,226,197,183,234, 53,120,229, 25,223,124,243,141, 73,
- 86, 86, 86,231,255,253,239,127,237,156,157,157, 87,196,199,199,223, 52,132,228,125, 66,106, 64, 46,239, 52,122,229, 74,190,209,
-123,239, 49, 22, 14, 14, 34,158,227, 72,194,179,103,214,171,215,173, 11,200,120,250,212, 40,223,202, 42, 35, 83,165, 42,136,140,
-140,132, 66,161, 32, 98,177,184, 89, 25, 5, 86, 50, 33,228, 59,145,136,204, 36,132, 64, 46, 87, 68,142, 27, 55,238, 94,209,233,
- 26,199,142, 29, 83,246,233,211,167, 0,192,203, 66,179,183,194,153, 97, 68, 94,133, 3, 4,241,157, 33,194,210,216,216,120,226,
-162, 37,223, 25,231,100,100,169,116,249,249,122, 59, 51, 19, 2, 19, 19, 38, 55, 39, 47, 39, 33, 41, 85, 61,247,171,133,226,177,
- 31,142,156, 8, 96,188,161,226,170, 97,195,134,183, 15, 29, 58,100,103,109,109,141,172,172, 44,164,167,167,227,246,237,219,224,
-121, 30,129,129,129,242,214, 45,154, 55,158, 51,247,203, 27,132,144, 86,134,136, 44, 99, 43, 27, 44,247,111, 4, 0,152,255, 50,
-189, 36,125,182, 12,234, 93,114,205,194,184,108, 0,128, 66,161,120,155,165,158, 90,117,234,212, 73, 10, 0, 99,198,140,201,201,
-205,205, 93, 10, 96, 55,173,192, 25,106, 17,166,125,249,229,151,206, 53,107,214,116,223,189,123, 55,242,242,242, 0,192,174,102,
-205,154,240,246,246,230, 46, 94,188, 8, 47, 47, 47,152,154,154,226,242,229,203,184,121,243, 38,154, 52,105, 98, 42,149, 74, 7,
-151, 39,176, 2,186, 5,124, 41,239,227,211,214,187,201, 7, 48, 49,115,196,214, 61,251,240, 56,120, 71, 91,141, 46,252,203,165,
- 19,156, 71,170,168,124,148,139,167,233,172, 26, 77,219, 91,215,169,247, 30,220,155,220,179, 81,115, 87,158,207,251,172,214, 50,
-177, 66,189, 99,193,138,132,244,242,196, 21,128,229,129,129,129,131,246,238,221,107, 1, 0, 15, 31, 62, 68,114,114, 50,108,109,
-109,161, 80, 40, 32,145, 72, 74,214, 15, 53, 20, 70, 70, 70, 72, 76, 76,132, 78,167, 43,182, 90, 33, 55, 55, 23, 14, 14, 14,133,
-234,230,107, 34, 90,176,192, 48,175,227,132, 16,255, 22, 45, 90,236,114,119,119,119, 45,125,188, 87,175, 94, 24, 58,116, 40, 0,
-160,125,251,246,157, 6, 14, 28, 72,139,133, 96, 98, 98, 98,222,157, 59,119,186, 80, 74,111,149, 99, 93, 81,197,199,199, 99,250,
-244,233,120,241,226,197,103,132,144,104, 0, 10,153, 76, 86,210, 46, 38,132,120,213,171, 87,111,237,148, 41, 83, 16, 21, 21,133,
-176,176,176,219,213,237, 50,165,148,114, 30, 30, 30, 79,245,122,125, 83,150,101,161, 82,169,208,191,127,127,133,149,149, 85, 50,
-195, 48, 17,105,105,105, 35, 40,165,137, 85,176, 90,185,139,197,226,245,211,167, 79,239,212,185,115,103,132,132,132,224,208,161,
- 67, 24, 54,108, 24,186,119,239,142, 21, 43, 86,180,159, 48, 97,194, 44, 0, 11,202,160,232,180,113,227, 70,112, 28,247,198,183,
-161, 80, 40,224,239,239, 15, 95, 95, 95, 28, 61,122,180, 19,128,106, 9, 44, 66,136,215,128, 1, 3, 20,197,162,250,226,197,139,
-230, 70, 70, 70,230, 46, 46, 46, 11, 0,252,109, 4,150,187,187,251,184,189,123,247,154,148,238,237,145,203,229, 40,149, 15, 4,
-252,221, 5,150, 86, 91,160, 19,139, 69, 17, 78,142, 13,246, 95,190,244,121, 73, 23, 33, 32,138,208,106, 11,116, 0,192,241, 20,
- 57, 5, 44,140,228, 34,188, 76,202,197,163,103,105,101,125,164,175, 76,181,148, 24,185, 65,222,252, 37, 40,165,208,234, 56,104,
-178,147,176,244,183, 2,132,199,169,161,205,207,132, 86, 87, 56,204,202,198,198, 70,124,250,244,201, 41,103,207,158,255,244,167,
-159,126, 98,226,204,205,195,144,157,221,184, 44, 78, 43,171,218,166, 98, 99,163,253,155,126,152,103, 68,153,103,136,140,201, 71,
- 29,151,230,176,177,112, 69, 82, 90, 62,174,133,157, 64,196,147,227,168,233,232,142,201, 19,187, 43, 22, 45,217,189,207,210,178,
-166, 91,102,230,243,156,242,194, 89,132, 15, 54,159,138, 4,155,241, 12, 92,122, 20,184,220,132, 55,133,157,173, 27,154,116,112,
-134,173,107,109,249,168,201, 11, 63, 0, 48,170, 44, 78, 74,105, 50,195, 48, 27, 69, 34, 50,158, 16, 2, 63,191,250,207,215,172,
- 89,163, 45, 43,234,253,252,234, 63,103, 24, 81,205,194,101, 88, 68,155,120,158, 75,174, 36,156,175,136, 25,153, 76, 62,163,208,
-188,239,248,236,228,201,147,218,129, 3, 7, 98,249,242,229,210, 89,179,102,125,225,238,238, 62, 33, 58, 58, 58,169,162, 52, 10,
- 36,196,205,185,118,237,174,139,175, 93,163, 18,189,158,100,220,190,157,147,149,152,200, 38,229,230,202, 14, 68, 68,244,252,232,
-139, 47,100,174,174,174,184,122,252,184,117,106,126, 62,205,210,104, 84, 89, 89, 89,148,101,217,219,229,188,251,108,123,123,123,
-229,214,173, 91,189,198,141, 27,119, 47, 33, 33, 97,118, 81,193,176, 20,128, 47,128,151,165,142,225,135, 31,246,197,127,252,241,
-199,145,201,201,201,179, 43, 10,103, 41,212,179,179,181, 85,238,217,188, 51,196,202,212, 72,100,227,226, 40,146,152,155, 75, 88,
-185, 82, 74, 41,212, 53,107,214, 86, 2,168, 87, 78,156,157,125,173,144, 37, 70, 70, 70,135,126,253,245, 87, 59,137, 68, 2,142,
-227, 96,107,107,139, 23, 47, 94, 32, 43, 43, 11,185,185,185,120, 30, 17, 14, 15, 87, 87,124, 61,107,166,227,132,153,179, 14, 17,
- 66,154,150,174,196,202, 10, 39,167,215,189, 97,201, 43,103,129,240, 87,126, 13, 73,247,215,240, 34, 38, 38, 6, 38, 38, 38,240,
-243,243, 51,185,118,237,218,149,242,196, 85,105, 78,133, 66, 49,184, 77,155, 54,166,123,246,236, 65,147, 38, 77, 96,110,110,142,
-139, 23, 47,226,225,195,135,208,233,116,162,188,188, 60,152,154,154, 98,217,178,101,112,119,119, 71, 78, 78, 14, 98, 98, 98,172,
- 37, 18,137, 77,121,156, 23, 79, 95, 92,148, 29,117,225,203, 36,114,170,251,214, 61,251,240,241,176, 33,112,160,207,174,152,215,
- 38,139,186,246,105, 51,159, 50,174,189,141, 77, 27, 88,122,250,245,129, 84,102,130, 9, 51, 22, 34, 50,244,152,101, 65,110,200,
-103,132,139,117, 5, 48,233,117, 78, 82, 24, 49, 34, 87, 87,215,143, 14, 28, 56, 96, 90,202, 2, 85,178, 14,105,233,197,217,203,
- 91,136,189,204, 52,226, 56,232,116, 58,232,116, 58,112, 28,135,180,180, 52,228,230,230,194,194,194,162,240,130, 5, 0, 1, 33,
- 20,101, 11,150,215, 56, 71,156, 61,123,214,213,216,216,248, 13, 11, 73, 90, 90, 26, 88,150,133, 82,169, 44,121,166, 94,175,135,
- 90,173, 54,241,245,245, 29, 15,224, 86, 89,156, 60,207, 79, 29, 60,120,112,155, 91,183,110,213, 90,183,110, 29,180, 90,237,242,
-164,164, 36, 12, 24, 48, 0, 60,207,163, 83,167, 78, 45, 41,165,143,231,206,157, 11, 0,152, 50,101,138, 62, 63, 63,127,156, 33,
-239, 94,142,224,240, 29, 56,112, 96,173,115,231,206,161,109,219,182,208,104, 52, 88,177, 98,133,217, 15, 63,252, 96,182,115,231,
- 78,219, 25, 51,102,252, 8,160, 91, 69,156, 69,194,106, 78,247,238,221,167,246,237,219,215, 56, 62, 62, 30, 22, 22, 22,216,183,
-111, 31,150, 45, 91,118, 89,171,213,206,217,185,115,231,210, 67,135, 14,181, 29, 54,108, 24, 86,172, 88,241, 25, 33,100, 17,165,
- 84, 95, 22,231,243,231,207, 97,107,107, 11, 51, 51, 51, 0,133, 11,217,223,191,127, 31,103,206,156, 65,221,186,117, 13, 17,141,
-229,133,211, 43, 48, 48,240,250,238,221,187, 45, 98, 99, 99,113,249,242,101,120,120,120,160,160,160,160,210,101,197,222,245,162,
-204,149,113,170, 84, 42,117, 76, 76,140,201,183,223,126, 11, 71, 71, 71,184,187,187, 67,161, 80,128, 16, 2,189, 94, 95,110,120,
- 13, 9,103, 64, 0, 17,167,197, 91,246, 53,183,176,252,140, 82, 42,206,206,206,220,172, 67,214,193,168, 40,170,253,179,222,253,
- 95, 41,176, 8, 33,148, 82, 74,138,127,157,157,145,147,150,102, 25,105,231, 80,127,159,157, 67,189,162,117,185, 68, 17, 12, 99,
- 25,105,111, 95,144, 3, 0, 58,150,226,122, 68, 22, 66,158, 38,225,225,211, 36, 24,203, 13, 91,166, 70,163, 99, 11,231, 89, 82,
- 10,117,222,239,141, 84, 93, 65, 38, 52,186,194,225, 28, 90, 77, 1,178, 83,195,200,160,254, 93, 20,159,126, 58, 22,142,142,206,
-182,229,241,233,228,138,201, 19,166,244,180,176,178,144,224,248,181, 83,104, 89,183, 63, 20,114, 9,210,179,213, 0, 1,158, 60,
- 59, 3,240,166, 8,141,140, 65,139,122, 74,116,235,234, 99,114,248,224,227, 47, 0,204, 51, 36,188,108,220,109, 72, 61,123, 64,
-194,233,161, 79,123, 12, 62, 43, 26, 48,118,128,138,152, 32, 61, 49, 26, 17, 87,126, 49,104,137, 82,142,227, 38,216,216,216,164,
-204,158, 61,219,223,203,203, 75, 59, 97,194,132,208, 23, 47, 94,204, 45,125,141,135,135,199,226,245,235,215, 35, 50, 50,242,229,
-210,165, 75,175,166,165,165,125, 83,197, 15,115, 22, 33,100, 77,145, 53, 44,237,215, 95,127,109,112,249,242,229,241,171, 87,175,
-182,253,236,179,207,164, 19, 39, 78, 28, 1, 96,121, 69,221,130,198,114,121,231,197,151, 47, 83, 54, 46, 78,243,243,247,223,203,
- 54, 92,191, 62, 87,199,243, 78, 54,118,118,164,117,139, 22,249, 74,145, 40, 45, 61, 57,153,181,173, 85,139,121,113,230,140, 53,
- 53, 50, 74, 56,121,242,100, 78, 94, 94,222, 47, 21,116,193, 20,148,213, 45, 88, 22, 28, 29, 29,181,101,141,209,170,160, 34,200,
-225, 41,213, 89,214,244, 64,215, 78,173,235, 60,125,252,236,153,220,220,130,241,244,172,225, 29, 22,241,242, 22,207,178, 26, 66,
- 72,142, 33, 92, 12,195, 12, 89,179,102, 77,125, 51, 51, 51,240, 60, 15,115,115,115,164,166,166, 66,171,213, 34, 39, 39, 7,218,
-220,108,104,179,179,241, 48,250, 5,218, 4, 4, 96, 80,247,174, 62, 59,143,252, 58, 4,192,222,138,120,157, 26, 52, 46,177, 92,
- 45,172, 97,253,123,159, 79,108, 86,137,216,250,182,177, 39,164, 38, 38,232, 50,117,214,219, 20,204,247,100, 50,217,137,192,192,
-192,158, 95,124,241,133, 40, 49, 49,241, 20, 33,164, 13,165, 52,172, 66, 11,176,137, 73,237, 98, 65, 97,110,110,142, 53,107,214,
-192,222,222, 30, 5, 5, 5,184,115,231, 14,117,113,113, 33, 23, 46, 92,128,139,139, 11,210,210,210,160,211,233,144,159,159,159,
-164,213,106,203,237, 22, 47,234, 6,236, 49,181,135,227,201,199,193, 59,218, 58,147,231,119, 6, 79,107,255,244,241,195,136,152,
-160, 51,215,190, 97,213,138,216,172,184,179, 51,107, 54,187,103,243,217,244,175,177,126,249, 2, 60,190,117, 57,195,222, 45,103,
-131, 17,209,108,111,209,165,252,240,230,231,231,171,195,195,195, 77, 67, 66, 66, 64, 8,129,185,185, 57,148, 74,101,153, 34,203,
- 80,112, 28, 87,242,155,150,150,134,212,212, 84, 68, 70, 70, 98,199,142, 29, 72, 72, 72,176, 89,109,110,150,100, 35,147,134, 72,
-179,200, 28,157,142,222,171,132,110,115,151, 46, 93,134,184,185,185,153,150, 62,216,172, 89, 51,140, 29, 59, 22,155, 54,109,194,
-245,235,215, 95, 89,239, 50, 41, 41, 41, 81,175,215,111,175, 32,109,179, 8, 33,221,251,247,239, 31,124,229,202, 21,179,109,219,
-182,129,101,217, 50,183,173, 91,183,226,230,205,155,243, 40,165, 17,213,180,230,212, 29, 48, 96,192,229, 93,187,118, 89,164,166,
-166, 34, 45, 45, 13,121,121,121,200,207,207, 7,199,113,240,246,246, 38, 44,203,122, 87,214, 29,104,107,107,123,226,210,165, 75,
- 29,188,189, 11, 47,213,235,245,184,118,237, 26,222,123,239,189, 28,173, 86, 59,128, 82,154, 78, 8,153,125,240,224,193,235, 45,
- 90,180, 64,179,102,205,172,162,163,163,173, 0,148,105,185,206,203,203, 67, 94, 94, 30, 36, 18, 9, 28, 28, 28,176,104,209, 34,
-104,181,133,197,138,151,151, 87,105, 11,231,234,186,117,235,246,143,136,136, 88, 70, 41,221, 80, 78, 57, 51,150,231,249, 5,148,
-210,172,192,192, 64,251, 61,123,246, 88,198,199,199, 35, 56, 56, 24,243,231,207, 79,229, 56,142,165,148, 18,157, 78, 23, 36, 22,
-139,163,125,125,125,157,194,194,194, 18, 56,142,155, 71, 41,253,249, 47,236, 34, 36, 18,137, 4, 99,198,140,129, 88, 44,134,145,
-145, 17,212,106, 53,244,122,125,137,136, 71, 21,187,159, 61, 61, 77,173,197,144,126,236,229,213,110,242,160, 73,189,109, 29,157,
-156, 97, 97, 38, 71,120,120, 88,155,243,231,206,124,239,235,109,251, 3,175,213,255, 16,241, 34, 43,230, 79,120,191, 87,180,200,
-191,180,139,112, 32,103, 99,115, 48, 45, 62, 94,166,147,201,148,145,197, 86,173, 66,113, 53,144, 3,246,128,213,233,139, 10, 8,
- 90,180, 25, 40,176,244, 28,158, 62, 14,197,149,160, 95, 97, 83, 16,143,180,231,141, 0,105,125,104, 85,217, 80,107,117, 69,173,
- 53, 14, 15,130,207, 33, 39, 59, 3,126, 77,123, 3, 34, 81,185, 93, 91,230,214,164,119,235, 38, 13,152,167, 49,161,104,230, 53,
- 16,181, 92,218, 34, 58, 49, 7, 89,121, 26,100,230,168,209,200,111, 22, 82, 51, 85,200, 41, 80, 35,236,233, 78, 56, 59,213, 18,
- 17,241,179, 78,134, 10, 44, 77,216, 33,104, 34,142, 66,234,222, 6, 50,239,247,192,184,251, 35, 38,228, 2, 30,156, 92,141,184,
- 71, 87, 65,121, 14,142, 94,205, 97, 96, 5,190, 57, 40, 40,168, 81,187,118,237,196,157, 58,117,242,115,113,113,241,139,139,139,
- 11, 5, 0, 23, 23, 23,191,238,221,187,251,217,217,217, 97,237,218,181, 5, 12,195,108,174,102, 37, 91,186,112,186,231,232,232,
-184,226,208,161, 67,223,141, 29, 59, 22, 14, 14, 14,190, 21,221,155, 42,145, 52, 28,181,100, 9,149, 48, 12,221,187,126,189,244,
-235, 83,167, 86,254,180,125,187,180, 99,135, 14,132, 82,138,251,247,239, 43,191, 93,191, 94, 57,188,111,223,151,209, 41, 41,236,
-165,235,215,117,137,113,113,185, 41,249,249, 95, 39, 36, 36, 36,253, 21, 25, 88,175,215,223,120,241,252,153, 75,227,230,141,108,
-239,133, 61, 15,235,214,169,117, 43,145, 72, 36,138,120, 22,125,195,214,214, 76,121, 46,232,172, 78,175,215,223, 48,132, 75, 46,
-151,247,238,216,177,163, 56, 51, 51, 19, 78, 78, 78, 72, 77, 77, 69,124,124,124,161,133, 33, 59, 19,186,236,108,232,115,178,192,
-229,231,225,249,157,219,104, 84,171,166,252, 64,225, 32,248,189,149,164, 73,153,150,169,210,150, 44,153,169, 41,100, 38, 38, 32,
- 85,236, 30, 36,132,244,181,176,176,152,153,149,149,117,130, 82,186, 72,167,211, 77,152, 57,115,102,179,117,235,214,217, 44, 94,
-188,216,236,147, 79, 62, 57, 64, 8,105, 68, 41,213,148,199,145,151,151, 23,197,178,172, 13, 0,187,115,231,206,193,206,206, 14,
-217,217,217,197,150, 21,109, 65, 65,129, 34, 61, 61, 29, 26,141, 6, 90,173, 22,102,102,102,184,123,247,110, 38,203,178,191, 86,
- 22, 62,179,218,100,145, 70, 23,254,165,181,143,113,130,142,181,108,159,146,193,103, 46, 88,145,176, 16,192,202, 30,181,107,111,
-213,241,151,159, 63, 9, 61,102,249,226,206,197,140,132, 39,249,181,182,254,246, 44,183,130,120,164,132, 16,158, 16, 66,189,189,
-189,145,150,150, 6,134, 97,160, 84, 42, 97, 98, 98,130,186,117,235, 34, 54, 54,182,218, 2,139,101,217, 18,113,117,252,248,113,
- 36, 38, 38, 98,207,158, 61,112,117,117, 21, 1,176,141,141,141,237, 50,104,208,160, 22,214,214,150, 75,211,211, 51,151, 85, 16,
-206,251, 0,204, 94, 75,167, 14, 54, 54, 54,231, 53, 26, 13,158, 61,123,134, 35, 71,142, 4, 80, 74, 47, 85,241,219,126, 70, 8,
-233,238,239,239,191,163, 73,147, 38,181, 41,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,206,206,230,207,
-156, 57,243, 19,128, 21, 85,173,184,139,226,215,123,192,128, 1, 87,119,239,222,109,153,158,158, 14,149, 74,133,252,252,124, 28,
- 56,112, 0,109,218,180,129,141,141, 13,118,237,218,197, 82, 74,143, 85,192,165,176,176,176, 56,113,245,234,213,128, 58,117,234,
- 32, 44, 44, 12,231,206,157, 67,141, 26, 53, 32,147,201, 48, 98,196, 8,179, 77,155, 54,125, 78, 8, 89, 38,145, 72, 22, 13, 24,
- 48, 0, 28,199,225,218,181,107,233, 0, 50, 12,248,230,145,149,149,133,172,172, 44, 24, 25, 25,149,254,198, 8,128,109,171, 87,
-175, 30, 61,121,242,100,212,174, 93,123, 17, 33,100, 83, 89, 11, 74,243, 60,255,117,124,124,188,157, 88, 44,118, 96, 89, 22,177,
-177,177,184,123,247, 46, 38, 76,152,144,156,158,158, 30, 64, 41,141, 36,132,108, 12, 12, 12,252,116,213,170, 85,112,117,117, 69,
-108,108,172,219,212,169, 83,119, 18, 66,240,103,139, 44,111,111,203,122, 50, 70, 62, 73, 42,149, 88,103,102,102,150,148, 29, 90,
-173, 22, 26,141,230, 21,203,149, 84, 42,177,110,222,216,253, 55, 85, 65,238,156, 71,145,153,229, 46, 92,238, 91,199,162,129,210,
-216,124,114,175,238,131, 70,116,237,222,143, 97,245,122,156, 62,125, 12,255,251,223, 70,116,240,247, 66,173, 58,245,241,249,196,
- 73,230, 26, 45, 59,235,204,153, 83, 51, 91, 55,175,121, 42, 55, 39,107,118, 69,156, 2,202, 16, 88,101, 43,198,129,156,179, 51,
- 50,139, 62, 24, 27, 75, 75,203,245, 28,199,117, 0, 62,134,196,196, 1, 97,119,111, 33, 35, 83, 2,141,138, 3, 79, 11, 69,150,
- 65,130, 69,163,197,229,211, 71,177,102,245, 74,164,167,167,195,191, 93, 0,242,196,174,112,115,117,131, 90, 85, 80,244,177, 0,
- 58,173, 30,182,246,238,184,119,239,129, 62, 39, 63,191,220,130, 72,170,208,249,184,217,123, 65,163,107, 5,133, 76,134,236, 92,
- 45, 50,139,196,213,174,131,131,161, 41, 80,129,213,234,192,106,245,176,117, 27,128,186,246, 29,193,115,199,234, 85, 41,150,120,
- 14,186, 23,151,161,123,113, 25, 70,173, 38,226,215,165,195, 94, 43,248, 12, 91, 16, 62, 57, 57, 57,213,197,197,229, 84,112,112,
-112,239,193,131, 7,227,226,197,139,163, 0, 76, 45,170,220, 71, 13, 30, 60, 24,193,193,193,136,136,136, 56,149,156,156,252, 78,
-124,118,200,100, 50,117,113, 43, 79,161, 80, 40, 42,185,214,185, 89, 96,160, 40,251,222,189,156,213,215,174, 45,216,186,109,155,
-180,115,167, 78, 68,207,178,224, 57, 14,117, 60, 61, 73,215,174, 93,141,119,238,223,111,205,232,245, 55,167, 79,152,112,110,211,
-200,145,185,183,242,242, 12, 29, 64, 94,163,168,107, 16, 0,106, 84,112,204, 96,104, 52,154,117,227,198,126,212,229,194,197, 75,
-174, 53,220,157, 77,131,206, 93,126, 32,147, 75, 69,181, 60,106, 49, 89, 89, 89,226,175, 22,204, 54,210,104, 52,223, 27, 72,231,
- 99, 99, 99,131,164,164, 36, 60,125,250, 20, 26,141, 6,122,189, 30,124, 65, 62,180,153, 89,208,102,103,128,168, 85,144,115, 28,
-212,105,201,168, 81,171, 38,240,251, 12,195,202, 42,176, 50, 5, 86,241,175,194,204, 12, 82, 99, 19,136, 36, 18,131, 23, 45, 39,
-132, 52,105,222,188,249,254, 95,126,249, 69,250,225,135, 31,182, 32,132,172,167,148, 70, 19, 66, 58,205,155, 55,239,246,250,245,
-235,229, 99,199,142,245, 94,177, 98,197, 7, 0,202, 21,236,106,181,122,255,111,191,253, 54,220,221,221,221,238,225,195,135, 80,
-171,213,224,121, 30, 61,122,244, 0,128,146, 60,243,248,241, 99,149, 90,173, 78, 9, 13, 13,205,137,142,142,214,194,128, 89,127,
- 11,214, 38,220,152, 58,200, 37,208,222,193,249,166,194,168,134, 7,205,187,215,127,234, 32,151,229,171, 14,196,169, 79, 70, 69,
-229,206,251,172,214,178,252,220,144,207, 44, 92,242, 54,156, 60,246,204,144, 89,190,180,120, 90,186,181,181, 53,196, 98, 49, 36,
- 18, 9,164, 82, 41, 0,192,222,222, 30,217,217,217, 21,118, 17,150, 39,176,114,114,114,144,157,157,141,136,136, 8, 36, 38, 38,
-226,198,141, 27,224, 56, 14,133,147, 20, 1, 23, 23, 23,220,190,125,219,180, 89,179,102,115,136,148, 92,160, 58,106,240,180,113,
-134, 97, 38,143, 28, 57, 18, 90,173, 22, 67,135, 14,197,214,173, 91, 39, 3,184, 84,213,252, 78, 41,189, 73, 8,241,124,240,224,
-129, 25,128,247,134, 12, 25,178,125,192,128, 1,184,116,233, 18,142, 29, 59, 22, 0, 32, 18,128, 10,192,210,162,133,149,151, 86,
- 52,193,163,200, 21,195, 70, 91, 91,219,247,234,213,171,247, 96,192,128, 1,126,187,119,239,182, 72, 73, 73, 41,158,212,128, 23,
- 47, 94,224,199, 31,127, 76,220,182,109, 91, 14,199,113,214, 34,145,232,183,172,172,172,242,102, 65, 43,140,141,141, 79, 94,189,
-122,181,125,157, 58,117,112,246,236, 89,204,153, 51, 7,237,219,183,199,158, 61,123, 80,183,110, 93,212,175, 95, 31,118,118,118,
-159,101,100,100,180,222,178,101, 75, 64,203,150, 45,177,107,215, 46, 36, 38, 38,110, 44,207,101, 67,101, 93,117,122,189,158, 0,
-104,177,122,245,234,154,147, 39, 79,198, 47,191,252,130,198,141, 27,155, 63,123,246,108, 69,113, 25,251,154,192, 2,165, 20,207,
-159, 63, 71, 65, 65, 1,174, 92,185,130,175,191,254, 58,181, 88, 92, 1, 64,239,222,189, 63, 93,181,106, 21, 6, 13, 26, 4,157,
- 78,135,169, 83,167, 98,213,170, 85, 56,122,244,232, 55, 0,254, 52,129, 85,215,211,122, 89,243,102,237,103, 58, 58,215,193,174,
-221,123,144,145,145, 81, 18, 39,197,241, 66, 41, 69,110,110, 46,146,146,146, 96,110,102,138,229, 43, 22,245, 28,255,201,104, 87,
- 20,186,179,120,179,160,171,109,181, 98,224,208,143,166, 13, 29, 62, 26, 15, 31, 4, 99,231,246,205, 8,125,120,191,132,143,213,
-235, 16, 25,126, 23,145,225,119, 97,239,224,142,174,157, 3,200,176, 97,195,122,140, 28, 62,196, 22,192, 31,230, 2,226,223,100,
-189, 42,183,139,240,181, 15,198,198,210,210,242,209,190,125,251,172,253,253,253, 25,150,101,113,234,244,105,124,246,233,251,248,
- 96,228, 44,232, 96, 9, 86, 43, 5, 47, 85, 24,244, 64,149,170, 0, 20, 20,249,249,249,184,126,253, 58, 40,207, 98,231,150,149,
-160,148, 47, 17, 88, 0,133, 86,167,131,179,155, 55, 54,110, 93,204, 66, 34, 41,183, 32,203, 73,103, 56, 61, 75, 17,159, 18,131,
-152,196, 80,152,155,186, 65, 44,113, 67,122, 86, 1,196, 34, 7,232,213,143,193, 21,153, 79, 11,242,227,160,210,189, 93,186,113,
-217,111, 90, 73, 41,207, 27,124,127, 65, 65,193,254, 93,187,118,117, 93,181,106,149,180,103,207,158,181, 93, 92, 92,154, 3, 64,
- 96, 96, 96,109, 83, 83, 83,236,218,181, 75, 87, 80, 80,176,255, 29, 90,120,218, 53,107,214, 12, 25, 25, 25,120,249,242,101,133,
- 45, 15, 78,171,181, 54,177,179, 99, 82, 46, 92,208,167,102,102,186,118,236,216,145,232, 89, 22, 34, 66,144,145,157,141,232,151,
- 47, 97, 97, 97, 65, 30, 61,126,108,242,253,231,159, 31,246,242,243, 19, 23,207, 48, 52, 4,199,142, 29, 83,162,112,220, 85,133,
-199,170,248, 65,230, 19, 66, 70,125,254,249,231,135,127,254,121,151,121, 82,114,242, 19,185, 76,206,154,152, 24, 57,142, 28, 49,
- 68,156,149,149, 53,156, 82,154,103, 40, 95,102,102, 38,158, 63,127, 14, 35, 35, 35, 72, 37, 18,240,170, 2,112,249,121, 80,103,
-164,130,209,105, 33,227, 56, 88, 41,229,112,181,183,135,155,173,141, 65,156, 79,207, 7,149, 12,104, 47,221, 45,184,188,185, 15,
-100,198, 38,144,153,154, 96,252,241,139, 69,173, 79, 41, 48,175,242,158, 97, 66,136,141,179,179,243,175,187,119,239,150,166,166,
-166,226,254,253,251, 15, 40,165,217,132, 16, 83, 0,124,120,120,248,217,208,208,208,222, 69,179,232, 42,155,253,181,242,208,161,
- 67, 93,252,253,253, 89, 15, 15, 15,227,228,228,100,183,244,244,116,146,152,248,234, 24,230, 19, 39, 78, 40, 84, 42, 85, 62,207,
-243,135, 81,232,199,169, 82,255, 67, 83, 7,185, 40,174,223,195,196,246,221,106,212, 55,179,105,128, 12,246, 94,253,155, 15, 18,
- 39, 78, 29,228,178,110,213,129, 56,181, 17,209,108, 39, 92,172,171, 88,161,222, 97, 96,122, 83, 27, 27, 27, 80, 74,113,251,246,
-109, 92,189,122, 21,151, 47, 95, 70,116,116,244,239, 86,109,115,115,156, 57,115, 6, 29, 58,116,168,202,119, 9, 71, 71, 71, 88,
- 90, 90, 98,231,206,157,216,179,103, 79,201, 64,247, 98,164,165,165, 65,169, 84, 98,213,170, 85, 38, 3, 7, 14,252, 6, 64, 87,
- 3,133,112,205, 46, 93,186,244,114,116,116, 68,122,122, 58, 28, 28, 28,224,239,239,223,135, 16,226, 65, 41,125, 81,205,172, 63,
-190, 91,183,110,139,190,254,250,107,232,245,122,140, 25, 51, 6, 79,158, 60,217,255,228,201,147, 53,110,110,110, 19,103,204,152,
- 97,111,111,111,143,193,131, 7, 27, 3, 8, 44,143,196,202,202,106,233,230,205,155,135,247,234,213, 75,164,211,233,218,157, 63,
-127, 30, 47, 95,190,132, 86,171, 5,203,178,136,138,138,194,132, 9, 19, 18,211,211,211,219, 83, 74,163, 12, 8,215,172,160,160,
-160,246, 62, 62, 62, 56,126,252, 56, 2, 3, 3, 47, 88, 88, 88,120, 53,104,208,192,209,201,201, 9, 7, 14, 28,128,153,153, 25,
-220,220,220,172, 22, 47, 94,220,177, 95,191,126, 56,126,252, 56,166, 76,153,114, 17,192,178,234, 68, 4,207,243,100,245,234,213,
-126,171, 87,175,118, 41, 22, 87, 34,145, 8,251,246,237,195,131, 7, 15,250,150, 37,176, 40,165, 11, 28, 29, 29, 23, 56, 58, 58,
- 42,130,130,130,204,107,212,168, 1,150,101,181,148,210, 72, 23, 23,151,120, 39, 39, 39, 11,185, 92,142, 57,115,230, 32, 39, 39,
-231,131,199,143, 31,239,108,216,176, 33, 29, 49, 98, 4,124,124,124,156,255,204, 74,154, 17,145, 81, 75, 22, 78,199,157,123,143,
-113,232,144, 20,119,238,220,129,189,189, 61,228,114, 57, 40,165,208,104, 52, 72, 77, 77,133, 94,167, 65,253,122, 53,177, 99,219,
- 50,164,164,164, 2, 34, 82,238,208, 26, 34, 34, 35, 70,191,223, 31, 87,174,158,198,166, 77,155,145,151,151, 95, 78,163, 91,129,
- 58, 94, 62,112,118,178, 67,108, 92, 44,136, 8, 54,127,228,187,254, 71,186, 8,127,135,133,133,197,154,189,123,247, 90,119,232,
-208,129,201,207,207, 7,207,243,104,235,239,143,137,147, 39,227,216,238,221,240,108, 49, 20, 68,107, 2, 86,105,216, 44, 6,181,
-170, 0,190,141, 91, 99,208,224, 33,136,137,142, 70,183,222, 3,160, 86, 23,148,180, 40,138, 45, 88, 90,173, 14, 54,118,174, 8,
- 10, 10, 98, 48,102,204,163,114, 69,129, 78, 22, 18, 25,165,110,147,165,186,135,235,119,118, 66,167,209,161,126,253,121,208,241,
-214,176,115,249, 4,122,253, 17,228,164,158, 47,236,174,176,238,128,184,152, 24,136, 24,233,163,234, 70, 24,159,159, 90,229,214,
-213,107, 21,120,142,163,163,227,209, 27, 55,110, 12, 10, 12, 12,196,153, 51,103, 62, 40, 18, 88,184,113,227, 6,158, 63,127,126,
- 52, 51, 51, 51,231, 93, 36,174,139,139, 75,143,128,128,128,192,102,205,154,225,248,241,227,224, 56,238,186, 65, 31,180, 68, 66,
- 69, 34, 17,120,158, 7, 1,144,158,149,133, 39, 79,158, 32, 61, 45, 13,122,189, 30,249,121,121,188,143,151, 87, 30,229,121,211,
-170,132,167,244,140, 65,148, 49,139,176,248, 88, 53, 68, 86,180,137,137, 73, 76,110, 94,158,173,153,165, 85,174, 66, 38,227,178,
-179,178,179,195, 30, 61,212, 26, 88, 41, 20, 35, 60, 52, 52,212, 47, 33, 33, 1, 49, 49, 49, 96,243,115,193,104,180, 16,105, 10,
-208,169,117, 43, 24,129, 66, 1, 30, 18, 94, 15, 9, 35, 65,110,225,108,187,240, 74, 69,185, 94,255,134, 37,139, 16, 82,216, 45,
-104,108, 12,153,137,233, 43, 22, 45, 67,242,147, 92, 46,223,125,224,192, 1, 71,103,103,103, 44, 92,184, 16, 46, 46, 46,117,235,
-215,175, 95,208,182,109, 91, 35,123,123,123,248,250,250,162,117,235,214, 56,121,242, 36, 0, 68, 85, 18,127, 44, 33,164,235,149,
- 43, 87,166, 93,187,118,109, 16, 33,132,204,154, 53, 11,221,187,119,135, 66,161, 64, 65, 65, 1, 50, 51, 51,177,101,203, 22, 66,
- 41,109, 92, 20, 86,119,133, 66,177,135, 16, 18,167, 82,169, 6,191,206,185,115,117, 3,167,148, 12,126,140,189,131,115,255,246,
-221,106,212,239,216,173, 51,106,122,118, 68,199,110, 49, 0,176,204, 74,252,114,232,242, 47,253, 14,219,184, 90,253, 24,116,234,
-204, 2,255,246, 29,231,206, 26,107,185,104,217,230,202,243, 62, 33, 4, 28,199, 65, 44, 22, 67, 36, 18,149,105,165, 18,139,197,
- 96, 24,195,134,162,112, 28, 23,215,175, 95,191,146,253,132,132, 4, 27, 87, 87, 87, 81,177,229, 10, 0,178,179,179, 17, 27, 27,
- 11,189, 94, 15,107,107,107,232,116,186, 6, 85,200, 87, 19, 63,252,240, 67,162, 82,169,240,209, 71, 31, 97,235,214,173, 24, 58,
-116, 40,185,116,233,210, 68, 0,147,171,154,223, 69, 34,209,242, 25, 51,102, 76,155, 48, 97, 2, 50, 50, 50,112,226,196, 9,244,
-232,209, 3,251,246,237,179, 61,113,226,196,146, 14, 29, 58,128, 97, 24, 28, 63,126, 28, 44,203, 62,174,136, 75, 42,149,190,215,
-171, 87, 47, 81,108,108, 44,164, 82, 41,154, 54,109,138,184,184, 56, 20, 20, 20, 32, 62, 62, 30,147, 38, 77, 74, 42,178,234, 68,
- 25,144, 46,146, 58,117,234, 76,168, 91,183, 46,206,156, 57,131,129, 3, 7, 94,210,235,245,189, 82, 83, 83, 39,100,102,102,126,
- 55, 98,196, 8,248,249,249, 33, 50, 50, 18, 93,186,116, 65,155, 54,109,112,226,196, 9,124,244,209, 71, 23,245,122,125,175, 10,
-252, 96,229,166,164,164,152,215,174, 93, 27,201,201,201,200,203,203,195,141, 27, 55,204, 46, 94,188,232,225,228,228,100,241,236,
-217, 51,250,229,151, 95, 42, 39, 79,158,140, 53,107,214,224,254,253,251,216,185,115, 39, 58,118,236,168,127,250,244,105,153, 86,
-214,180,180,180,205, 0, 54, 91, 89, 89, 37, 27, 27, 27, 35, 55, 55, 23, 38, 38, 38,159,184,184,184,196, 95,191,126,221,201,213,
-213, 21,233,233,233,248,244,211, 79,161, 82,169,224,230,230, 86,103,241,226,197,136,141,141, 69,102,102,230,159, 90, 73,243, 28,
- 15,128,135,135,171, 9, 78, 31,219,134,224, 7,207, 16,252, 32, 20, 50,121,225,224,118,149,170, 0,141,235,215, 65,139,166,205,
-145,144, 24,143,159,119,110,131,149,141,115,133,229, 8,165, 20, 82, 49, 7, 31, 47, 7,236,222,185, 25,199, 79,156,195,206,159,
-247,148,140,105, 19,139, 37,104,212,184, 5,154, 54,245,199,179,231, 81,216,182,109, 19,108,237, 92,133, 62,191,234,118, 17,150,
-254,125,173,117,208,209,223,223,159,201,203,203,131, 90,173, 70, 82, 82, 18, 94,190,124, 9, 11, 75, 11, 60, 75,120,129, 0,165,
- 14, 73,124, 14,194, 31, 60,226, 8, 35,185, 95,217, 3,123,181,111, 4,180,111,132,207, 62, 28, 90,126,226,131,194,216,204, 6,
- 26,141, 6, 58,189,254, 41,214,173, 43,183,165,204,114,250,179,167,207,156,111,254,225, 7,239, 73,130,206,111,133, 94,203, 67,
-165, 55, 71,190, 90,139,124,157, 4, 34,243, 30, 64,218, 37, 48, 98, 57, 90, 54,172,131,195,135, 78,234, 40,171, 63,103,112, 4,
-217,251,129, 77, 14, 45, 37,176, 82, 94, 57,175, 48,181, 50,184,139,176, 84,156, 30,222,189,123,119,207, 86,173, 90, 41, 59,116,
-232, 80,171,168,194,212,238,222,189,187,160,200, 58, 80, 85,213,255,138,247,118,103,103,231, 6, 98,177, 56,176,119,239,222, 13,
- 70,143, 30,141, 71,143, 30, 97,215,174, 93, 79,189,188,188,174, 86, 40,172,100,178,244,188,148, 20, 11, 19, 15, 15,177,165,169,
-105,194,201, 19, 39,220, 59,119,233, 66, 98, 98, 98,144,158,158, 14,181, 90,141,251, 15, 30, 80, 9,195,196, 17, 51, 51,209,227,
-123,247, 68,140, 76,150, 94,133,160,190,172,100, 22,225,210,234, 90,179, 92, 29, 45,107, 47,152, 61,174,166, 90,173,246,203,201,
-201, 97,197, 18,137,196,197,193, 34,186,138,221,141,199,207,158, 61,219,175,115,231,206,242,200,144,251, 96,179,179,161,205,206,
-132,148,231, 96,213,184, 33, 24,157, 6,208,234,225,236, 67,161,206, 82,226,210,173,199,122,141, 70, 83,233, 74,237,197, 2, 75,
- 84,202, 25, 32, 0,200, 76, 76, 32, 55, 53,131,220,196,228,245, 46, 68, 82, 73,122, 43,223,123,239,189, 78, 45, 91,182, 4,165,
- 20, 91,182,108,129, 78,167,147,233,116, 58,104,181, 90,232,116, 58,228,228,228, 96,231,206,157,216,184,113,227, 53, 0, 63, 25,
- 32, 82, 89,137, 68, 50,129,101, 89, 59,185, 92,174,179,181,181,149,238,223,191,191,196,109, 68,163, 70,141, 96,108,108,172, 33,
-132,232, 0,192,193,193, 65,191,125,251,118,113,223,190,125,165,101,241,121,215,175, 59,189, 38,107,217, 94, 97, 84,195,195,204,
-166, 1,106,122,118, 4, 0,116,233,253, 33,106,214,113, 67, 78, 90,136,135, 90,245,178,191, 84,156,105,249,104, 93,124,152, 81,
- 47,191,209,249, 41, 23,159, 0,216,102,224, 55,132,206,157, 59,163, 91,183,110, 37,221,129,118,118,118,208,106,181,101, 78,231,
-175, 8,197, 78, 68,191,254,154,136,176, 0, 88,109,110,150, 4,192,182,180,184,138,137,137, 65, 76, 76, 76,177, 85,184,210, 52,
- 42,149, 86, 70,158,158,158,163, 26, 55,110,140, 19, 39, 78,224,206,157, 59,241,167, 79,159,118,246,247,247,135,135,135,199,104,
- 66,200, 28, 74,203,247,161, 87, 86,151, 94,187,118,237, 62,159, 48, 97, 2, 66, 67, 67, 49,110,220,184,244,216,216,216,195,251,
-247,239,255,104,193,130, 5,162,110,221,186, 33, 49, 49, 17,203,151, 47,231,174, 94,189,186, 2,192,194, 74,210, 61, 34, 54, 54,
-214, 69,173, 86, 35, 35, 35, 3, 44,203,162,160,160, 0, 39, 79,158,196,206,157, 59,139,199, 35, 61, 53, 48,120, 86,254,254,254,
-150, 79,158, 60,193,182,109,219,160,213,106,231, 82, 74,213,132,144,159,102,206,156, 57,199,222,222,222,188, 75,151, 46,104,220,
-184,208, 23,220,190,125,251, 48,105,210,164,139, 90,173,182, 87, 37,113,176,202,193,193,225,147,113,227,198,213,157, 58,117, 42,
-162,163,163,205, 78,156, 56,209,230,250,245,235,164, 88, 8, 89, 91, 91, 99,205,154, 53,152, 50,101,202, 79, 0,146,111,221,186,
- 53, 42, 42, 42,234, 27, 74,233,166, 74,222,127,129,139,139,203, 2,158,231,149, 93,186,116, 57,185,114,229, 74, 50,104,208, 32,
-104,181,218, 18,215, 7,150,150,150, 59,100, 50, 25,218,182,109,139,105,211,166,129, 97,152, 17,127,118, 69, 77, 41,135,130,204,
- 80,112, 26, 75, 52,170,239,141, 70,126, 53,112,250,124, 48, 0,160,211, 0,127, 20,228,231, 98,251,246, 45,120,250,244, 9,196,
- 18, 9, 44,172, 28, 12,250,134,180, 57, 17,200,210, 37,162,115,135,166,232,209, 45, 0, 63,237,216, 7, 86,175,195, 71, 31, 14,
- 71,102, 86, 22,118,236,216,134,103,207,163, 32,150, 72, 96,109,227,244, 39,188,103,249, 90,228, 95,105,193, 42, 46, 80,120,158,
- 71,124,124, 60,238,222,189,139, 23, 47, 94, 64,169, 84, 66,197,114,252,166,179, 87,121, 66,164,113, 60,165,215, 40, 91,226, 85,
-248, 77, 14,142,139, 47,229, 97,214,220,210,210, 82,166,209,168,192,178,250, 82, 37, 21, 1, 8, 32, 21, 3,142, 78, 53, 17, 27,
- 19, 75, 85,106,245,197, 10, 91, 96, 26,245,154,163,135, 15, 76,104,221,198,223,166, 71,167,175,113,248,200, 60,100,230,228, 64,
-173,147, 32, 95,173, 67,129, 26,176,176,242, 66,179,250, 13,144,144,144,142,144, 59,151,242,196,154, 2, 67, 6,128, 62,249,126,
-238,135,158, 31,126, 54, 29, 70,238,109,160, 9, 63, 12, 62, 47,185,196,130,165, 48,177,132,149,155, 15,178,242, 53, 56,112, 46,
- 24, 0, 12, 94,146, 37, 57, 57,185,192,209,209,241,224,248,241,227,151,221,191,127,175, 38, 0,220,190,125,251,121, 66, 66,194,
-172,228,228,228,130,170, 36, 96, 41,239,237,196,200,200,232,150,167,167,231,139, 30, 61,122,152,245,235,215, 15,182,182,182, 8,
- 14, 14,198,183,223,126,251, 68,171,213,206,191,120,241, 98,133, 93, 58, 90,173, 54, 62,248,200, 17,179,128,247,223,183,152,222,
-167,207,242, 9, 19, 38,172, 89,184,112,161,196,211,211,147,232,117, 58, 60,124,248,144,238,222,181, 75,191,113,246,236,213, 50,
- 99, 99,241,237,163, 71, 37,172, 70, 19,255, 87,103, 98, 23, 23,151,246, 61,187,183,247, 89,177,106, 29,212,170, 60,220,186,254,
- 27, 50, 51, 83,177,121,203, 33, 31, 23, 23,151,246,113,113,113,151, 12,180,100,236,251,241,199, 31,167,181,104,220,184,113, 45,
- 87, 87, 60,140,126, 1, 25,207, 65,202,178, 96,116, 26,136, 88, 53, 92,253, 40,136,200, 20,137, 73, 57, 88,188,247, 96, 40,199,
-113,251, 42,227,173,219,243, 61, 44,140,203, 6, 33, 4, 43, 91,249, 65,102,106, 2,169,177, 9,198,255,122,190, 68, 84, 29, 95,
- 56, 27, 50, 19, 19,212,110,225,111, 72, 33, 84, 96,106,106,122,247,225,195,135,205,252,252,252, 48,109,218, 52,188,124,249, 18,
- 60,207, 35, 57, 57, 89,157,152,152, 24,159,154,154,250, 18,192, 97, 0, 91,169,129, 45, 0,150,101,237,130,131,131, 1, 64, 10,
- 0,231,206,157,131,147,147, 19,204,205,205,145,147,147,131,233,211,167,203,231,207,159, 15, 0,184,123,247,174,164,120,128,113,
- 89,120, 24, 28,190, 34, 43,151,102,210,188,123,253, 51,216,123,245, 59,118,139, 69,151,222,163,113,230,248, 79, 56,127,250, 44,
-172,196, 47, 95,192, 56,247,100,218,139,180,156,184,124,207, 31,124,154,124,196, 36,230,159,254, 97, 98, 95, 75,198,209,145, 63,
- 48,107, 99,118, 86, 37,113, 0,134, 97, 74,198, 96, 21, 15,104,175,170,184, 42,141, 5, 11, 40, 79, 64,136,141, 76, 26, 18, 27,
- 27,219,197,197,197, 5,201,201,201,136,141,141, 69, 76, 76, 12, 98, 99, 99, 81,167, 78, 29, 60,123,246, 12, 82,169,244,190,129,
-180,195, 7, 15, 30,108,170,213,106,177,103,207, 30, 22, 64,239, 3, 7, 14,220,109,214,172,153,184,123,247,238,166, 27, 54,108,
- 24, 14, 96,107, 21,130,105,108,102,102, 38,213,233,116,216,176, 97, 3, 98, 99, 99,219, 83, 74,195, 9, 33, 63, 12, 30, 60,120,
-163,159,159, 95,157,208,208,208, 39,121,121,121,227, 41,165, 33, 6,148, 69, 31, 54,109,218,244, 0,207,243,238,157, 59,119, 54,
- 94,181,106,149,217,227,199,143,225,226,226, 2,158,231, 31, 86,113,169,169,140,179,103,207,102,182,110,221,218,178,104, 64,251,
- 98, 66,200, 55, 12,195, 44, 11, 12, 12, 52,223,189,123, 55, 78,156, 56, 1,173, 86,139,136,136,136,212,208,208,208,239, 1,172,
-168,104, 2, 70, 81, 90, 63, 7, 48,147, 16,210,224,135, 31,126, 24,234,236,236, 60,252,250,245,235,228,202,149, 43, 88,185,114,
- 37, 59,111,222, 60,113,145,248,121, 14,224,163,162,252, 62,199,192, 30,133,205, 0, 54,187,184,184,196,175, 92,185,210,244,202,
-149, 43, 72, 74, 74,242, 4,208,162, 89,179,102, 59, 54,109,218, 4,107,107,107,196,198,198,162,117,235,214, 28, 33,100,132,165,
-165,229,190, 6, 13, 26, 32, 36, 36,228,207, 42,226,244, 58,157, 22,102, 86, 53,145,151, 21,131,212,216,235, 80,154, 58,160, 91,
-199,134, 40, 80,105,113,236,232, 47, 8,121,248, 0, 34,145, 8,246, 14,174,176,176,180, 65,100,228, 19, 0, 8,171,152, 83, 7,
- 83,203, 26,200,203,142,133, 54, 37, 24, 70, 38,118, 24,253,126,127, 20,168,116, 56,116,248, 23,132,134,134,128, 97, 24, 56, 56,
-186,194,220,162,144,147,208, 10, 57, 5, 84, 85, 96, 49, 12,115,225,212,169, 83, 3, 91,180,104, 33,126,250,244, 41,158, 62,125,
- 90,156, 49, 89, 2,238, 96,114,200,145, 97, 21, 84,254,157,139,125,101,148, 94, 91,208,196,212, 52,254,113, 68,184,125,102, 70,
- 50, 30,220,187,138,167,145, 15,241,226, 89, 56,116, 58, 53, 24,145, 8, 34, 70,132, 26, 53,235,225,234,181,235, 90, 45,199,221,
- 40,143, 19, 0, 50, 50,162,114, 77,236,189,134, 44, 90, 56,231,248,148,233, 95, 25, 13, 26,184, 9, 33,143,195,144,199, 58,128,
- 82,192,193,218, 24,141,106,205, 64,124, 66, 42,246,254,180,161,128,215,233, 70,148,246,129, 85, 22, 39, 0,216,167,193,119,227,
-150,159,198,108,221,185,251,171,233,159,143,181,239, 27, 56, 2,178,140, 48,232, 19,130, 81,179, 89, 15, 16,185, 5, 78, 4,157,
-199,165,187, 97,201, 60, 71,191,178, 79,199,255, 42,227, 44,141,236,236,236, 59,201,201, 73, 53, 75,121,109,175, 41,151, 43,238,
- 84, 34,166, 58,191,230, 23,232, 21, 15,241, 12, 35,106,177,112,225,194,124, 71, 71, 71,109,104,104, 40,126,248,225, 7,254,238,
-221,187, 23,100, 50,217,230,132,132, 4, 77,101,156,182,122,253,131,221,179,102,249, 54, 15, 12,164,195, 62,255,188, 0,114,249,
-196,229, 43, 87,206, 74,205,204,116,162, 60, 15, 91, 43,171,184,229,179,103, 47, 29, 56,120,112,230,163,171, 87,141,174, 31, 57,
- 98, 36, 99,217,224,202,194,249, 46, 80, 17,103, 92, 92,220, 37,207,218,110,216,190,117, 21,116, 58, 13, 18,227, 11, 13, 87,105,
-233,217,168, 72, 92,189,206, 89,212,249, 31,248,229,252,249, 55,191,156, 50,217,161, 93,167,206,136,121,112, 31,186,140, 84, 16,
- 61, 11, 9, 17, 35, 63, 69,137,148,228, 60,204,252,121,127, 74, 94, 65, 65,224,235,142, 28,203, 11,103,177,133, 74,110,102, 10,
-169,177, 9,100, 38,166,175, 88,173, 20,102,102,144, 25,155, 64, 44,147,149, 53, 24,254, 13,206,188,188,188, 1, 3, 7, 14, 12,
-185,125,251,182,229, 71, 31,125,132,214,173, 91,223, 83,169, 84, 29, 40,165,185,213,141, 79,177, 88,156,210,164, 73, 19, 59,137,
- 68,194,142, 25, 51, 70,156,150,150, 86,226, 9, 61, 47, 47, 15, 39, 79,158, 68,241,148,251, 71,143, 30,161, 94,189,122,229,114,
-126, 52,227, 97, 60,128,133, 83, 7,185, 44,191,249, 32,113, 34,128,101, 53,235,184,226,252,233,179,184,114,254,250,172,150,126,
-252,186,158, 35,154,125,163,236, 48,120,186, 79,147,143, 24, 19, 51, 71,236, 56,244, 11, 19, 30,188,109,113, 65,193,195,218, 0,
-190, 40, 47,156, 69,179,184,222,112,201,160, 82,169, 12, 18, 87, 21,229, 37, 10, 74,165, 89,100,206,160, 65,131, 90,220,186,117,
-203,212,196,196, 4, 58,157, 14,148, 82,212,174, 93, 27, 98,177, 24,223,127,255,125,126, 90, 90,218, 60, 67, 56,141,141,141, 39,
-116,235,214, 13, 17, 17, 17,184,115,231,206, 47,148,210, 16, 66,200, 47, 79,159, 62, 29,210,182,109, 91,252,244,211, 79, 19,202,
- 19, 88,229,113,242, 60, 95,218,231, 81, 70, 81,222,125, 0,160,101, 85,223,189,200, 89,104, 27, 0,176,182,182,142,181,183,183,
- 55,123,240,224, 1,220,220,220,160,211,233, 90, 84, 37, 47, 81, 74,245,132,144,245, 23, 47, 94,156,223,166, 77, 27, 76,152, 48,
-161,253,197,139, 23,219,183,105,211, 6, 62, 62, 62, 56,127,254, 60,118,237,218,117,144,227,184,241, 0,178, 40,165, 92, 85,210,
-168, 72, 48,134,212,175, 95,127,184,171,171, 43, 86,174, 92,169, 11, 9, 9,153,180,104,209,162,213,247,239,223,151,215,171, 87,
- 79, 20, 18, 18,194, 87, 39,221, 45, 45, 45, 81,204,105, 97, 97,241, 84,171,213,182,144,201,100, 24, 48, 96, 0, 52, 26, 13, 18,
- 18, 18, 56, 43, 43, 43,241, 95, 81,214, 81, 66,230,126,244,241,196, 31, 62,254,104,184,162,105,147, 70, 40,200,137,131, 42, 47,
- 25, 5,185, 73,248,126,107, 16, 8, 17,193,214,214, 17,118, 14, 46,136,142,142,193,181,223, 78,104,243, 11, 84,107,100,122,126,
- 89,197,156,159, 23,114, 54, 46,228, 44,200, 79,129, 42, 47,165,132,211,206,206,169,136, 51, 26, 87,175,159, 80,171,242,243, 87,
-105, 41,249,238,143,124,247,255,156,192,202,204,204,156, 52,118,236,216, 14, 51,103,206,180,102, 89,150,177,178,178, 66,116,116,
- 52,123,240,224,193,140,188,188,188, 73,213,122,168, 68, 18,226,233,229,221,161,111,223,190,236,123,239,245,145,142,252,176,187,
-216,214,206, 14,217, 89,233,136,140,184,143,199, 97,193,240,244,110,136, 5, 11, 87, 3, 22, 22,149,206,212,201, 75,142,188, 96,
- 98,239,213,251,235, 47,191,216,215,166,125, 87, 51,239,122, 13,165,141,106,155, 67,167,103, 17, 23, 23,135,163, 71, 30,232, 66,
-239, 94,201,225, 89,237,144,252, 84,195,150,202,185, 88, 56,128,119,115,125,123,178,107,201,242,239,167,109,216,188,125,250,204,
-137, 31, 25,183,245,239,130,135,103,127,194, 47,199,247,229,171, 53,218,229, 82, 6, 43, 31,166,209,130,170,198,129, 90,173,214,
-191, 62,116, 68,173, 86,235,223, 54, 65,183,111,223,142,164,164, 36, 93,108,108,236, 89,150,101, 15, 87,101, 54,226, 58, 74,181,
-129,132,156,253,210,223,191,251,151,167, 79, 43, 70,205,152,161, 29, 49,114,228, 23,208,104,116,144,201,168,216,216, 88, 4,185,
- 92,242,232,234, 85,163,181,159,126,106, 69,180,218, 51, 63, 85,210,250,124, 13,239,124, 22, 97, 41, 11, 22, 70,125, 52, 5,170,
- 82, 22,172, 27,119, 34, 81, 21, 11, 86, 81, 33, 30, 67, 8,105, 57,113,238,151,135,134,116,235,228,227,231, 94, 67,110,235, 81,
- 3, 38, 14, 14, 72, 79, 77,197,213, 59,143,245, 11,247, 29, 10, 45, 18, 87, 6,249,133,225,121,190,100,150, 91,167, 73, 51, 65,
- 24, 6, 40, 18, 2,197, 51,129, 60,154,181, 6, 17,139,193, 81, 30, 26,141,134, 26, 16,206, 56, 66,200,128, 17, 35, 70,156, 59,
-126,252,184,168, 91,183,110,141, 14, 31, 62,204,191, 77,222,209,235,245, 46, 69, 66, 43, 71,169, 84,138, 71,143, 30, 13,189, 94,
-143,130,130, 2,100,103,103, 35, 60, 60, 92, 51,104,208, 32,121,145,112,208, 15, 25, 50,164,210,242, 99,213,129, 56,245,212, 65,
- 46,235,172,196, 47,135,230,164,133,120, 88,137, 95,190,104,233,199,175, 91,117, 32, 78,253,245, 20,139, 69,105, 47, 47, 69, 38,
-230,159,254, 97,199,161, 95,152, 15,250, 15,224, 92, 76,158,204, 82,216,209,131, 29,251, 84, 90, 9,189,225, 84,244, 45, 60,224,
-191, 2,157,142,222,179,182,182, 92,218,188,121,243, 57,171, 86,173, 50,177,181,181, 5,203,178,120,254,252, 57,214,175, 95,159,
-159,153,153,185,152, 82,122,215, 16, 46, 47, 47, 47, 15,177, 88,140,189,123,247, 2,192,250,162,195,235, 15, 31, 62, 60,228,163,
-143, 62, 66,141, 26, 53,124, 9, 33,114, 90,133,239,136, 82, 90,210,171,240,142, 43,246,103,107,215,174,117,118,112,112, 32, 39,
- 79,158,100, 25,134, 57, 86, 13,154,165,187,118,237,106,197,243,124,167,182,109,219,162, 78,157, 58,197, 22, 79, 28, 57,114,100,
- 31,199,113, 35, 42, 18, 86,134, 32, 60, 60,252, 74,108,108,236,208,105,211,166, 73, 87,173, 90,181,122,234,212,169,242,216,216,
- 88,132,133,133,221,122, 11,206,107,177,177,177,131,139, 56,213,102,102,102,242, 37, 75,150, 96,202,148, 41, 52, 34, 34, 98,148,
-149,149,213,206,191,170,146,142,120,146,190,179,126, 45,251,211, 11, 23,173,154, 95,187,150,199,184, 49,163, 7, 51, 94,158,245,
-144,159, 29, 7,107, 27,123,184,184,214, 68,106, 74, 26, 78,157, 58,201,165,165,101,253,200,137,200,215, 79,158,164, 39,188, 13,
-167,179, 75, 77,164,164,164,224,196,137, 19, 92, 86,102,206, 22,232, 69, 11,195, 94,102, 38, 67, 64,149,251, 60, 43,221, 0,216,
- 88, 90, 90,238, 49, 51, 51, 75, 54, 51, 51, 75,182,180,180,220, 3,192,198,128,251, 58,151,252,167,148,121,101, 27, 56, 80, 1,
-133,162, 37,196,226,169, 22,150,150, 39,205,205,205,211, 3, 2, 2,180, 63,252,240,131, 58, 60,252, 17, 31, 31, 31, 75,205,205,
-205,115,138,175, 47,139,243,245,205,210,178,150,169,177, 99,189,249,230, 46,141,174,154, 56,250,230,154, 56,250,230,154,187, 52,
-188,102,236,232,251,149,165,101, 45, 83, 67,194, 89,222, 86,211, 14,182,158, 54,216,224,109, 75, 84,158, 54,216, 80,211, 14,182,
-134,190,123, 5,215, 44, 37, 4, 28, 33,224, 80, 56,157, 26, 85,229, 44,197,193, 51, 12,243,147,155,155,155, 3, 0,198,144,116,
- 45,143,115, 36, 80, 99,164, 92,254,241,129, 89,179, 70,189,184,120,113, 68,206,243,231,195,178,159, 61, 27,124,127,223,190, 33,
-235,135, 12, 25, 57, 76, 46,255,100, 32, 80,203, 80, 78, 71, 71,199,165,193,193,193,199, 13,221, 28, 29, 29,151, 86, 53, 62,107,
-213,116, 62,221,173,115, 11, 58, 97,108, 32,157, 48, 54,144,118,235,220,130,214,170,233,124,186,186,105, 4,128, 48, 12, 51, 84,
-169, 84,238, 49, 86, 42, 31, 26, 43,149, 15,149, 74,229, 30,134, 97,134, 2, 32,134,114, 90, 91, 91,223,181,183,183, 79,174,202,
-102, 99, 99,115,175, 10,225, 28,230,225,225, 17, 43, 18,137, 86, 27,154,230, 6,112,182,102, 24, 38, 27,128,174,244, 38, 22,139,
-227, 74, 93,227, 46,151,203,111, 40, 20,138,253,134,112,126, 55,183,222,252,107, 65,159,133,124, 55,183,222,252,215,207,125,222,
-207,242,195,155,231,190, 78,255,188,159,229,135,134,132,211,206,206,238,162,157,157, 93,162,157,157, 93,162,189,189,125,133,155,
-141,141,205,221,234,124,155,148, 82, 64,130,102, 54, 54, 54, 65,102,102,102,169,102,102,102, 41, 54, 54, 54,167, 1, 52,173, 74,
-124,138, 68,162,101,190,190,190,106,134, 97,254,247,218,245, 43,106,215,174,173, 22,139,197,203,171,248,189,155,181,109,219,150,
-123,240,224, 1,109,223,190, 61, 5, 96,249, 14,211,221,193,210,210,242,164,153,153, 89,140,169,169,233,247, 0,140,171,195, 89,
-212,197, 60,171, 86,173, 90, 73, 1, 1, 1,180, 86,173, 90, 49, 0, 62, 3, 32,122, 71,225,108, 18, 24, 24,168,139,137,137,161,
-148, 82, 26, 19, 19, 67, 3, 3, 3,117, 0,154,188, 5,103,179,114, 56, 71,190,109, 57, 95,213,173, 34, 78,159,154, 54,181,234,
-214,177,220, 63,124,128, 63, 31,116,116, 53, 93, 48,103, 28,237,210,190, 30,245,174,109,121,200,211,211,218,243, 93,112,206,159,
- 51,150,118,110,231,203,251,212,178,220,231, 83,211,166,214,159,249,238,255,182,141, 84,115,169,170, 42,155, 58,137, 33,222,101,
-157,156,156,144,158,222, 66, 33, 22,251,203,229,242, 14, 34,145,232,114, 70, 90,218,231,133,166,123,112,127, 69,247,211,235,168,
- 93,155,200,202, 91, 58,160, 58,156,175, 15, 80,175, 14,103, 85, 56, 12,229, 44,111,177,103, 94,163, 73,176,102,217,187,235,104,
-249,113,240, 58,167,139,139,203,199, 60,207,123, 24, 26, 38,145, 72,244, 34, 46, 46,110,107,117,226,211,203,203,139, 62,121,242,
-196,160, 65,146,127,117, 94,250, 47,113,238, 92,221,192,201,187,126,221,233, 15,131,195, 87, 20,117, 31,150,224,235,137, 86,166,
-254, 29, 3,230, 93, 61,127,241,155, 5,235, 50,114,255,109,239, 78, 8, 17,149, 53, 14,174,120, 46,122, 85, 57,165, 82,233, 15,
-205,155, 55,255,248,230,205,155,255, 99, 89,246,147,191,235,187, 23, 45,109, 36,163, 85,179,114, 27, 20, 78, 66, 72, 19,134, 97,
-166,250,250,250,182, 8, 11, 11,187,197,113,220, 42, 74,105,240,223,141,243,143,202,159,190,158,214, 77, 41, 45,113,150,189, 56,
-252,105,250,237,119,198, 73,121,142,167,204,162,199,207,210,238,253,217,239,254,159,235, 34,124,103,150,178, 34,129, 84, 33, 18,
- 18, 98, 1,196, 2, 56,240,119,141, 48, 67,196, 85, 21, 45,136,201,127, 7,142,178,186, 11, 1, 92,127, 23, 92,175,139,165, 63,
- 18,145,145,145, 68,248,172,255,126,120,127, 74, 72, 2,128,201, 77,203,112, 77, 85, 36,170,166,119,120,239, 95,219, 75,192,151,
-115,188, 90,173, 91,157, 78, 55,142, 16, 50,181, 42,179, 15,255,162,247,166, 0, 52,127, 16,119, 48,128, 97,127,119,206, 63, 10,
- 97, 79,210,239, 2,232,243,119,231,252,175, 67, 36, 68,129, 0, 1, 2, 4,252,227, 68,155, 74,136, 5, 1, 2,254,222, 32, 0,
- 58,151,243, 1, 27,108,250, 35,132,116,174, 70, 1,113, 86,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,255, 22,231,127,169,
- 37,244,135,109,248,147, 7, 0, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,207,228,252,183,109, 66, 23,161,128, 63, 28,
-223, 7, 18,231,239, 3,137,243, 31,117,189, 0, 1, 2, 4, 8, 16,240,119,131,248,175, 14, 0, 33,196, 9,133, 14,242,106, 3,
-120, 12,224, 10,165, 52,243, 45,248,108, 0, 12, 38,132, 12, 42,178,208, 29, 0,176,159, 82,154,102,200,253, 70, 70, 70,201,106,
-181,218, 14, 0, 20, 10, 69,138, 90,173, 46,189,230, 0, 41,181, 1, 0, 45,222, 42, 26,176, 90,179,102,205,100,141, 70, 99,103,
-192,227,179, 41,165, 33, 34,145,232,161,137,137,201,249,199,143, 31, 31,175,202,187,119,236,216,113, 20,195, 48,139, 1,128,227,
-184,185,231,207,159,223,254, 7,166, 91, 11, 87, 39,135,159,116,122, 29,155,156,154, 49,143, 82,122,180,172,235, 54,246, 33, 75,
-197, 4,211,139,254, 47, 31,127,140,206,174,136,183,170,215, 87, 16,190,166, 18,137,100,130,189,189,125,143,184,184,184,187, 0,
-102, 80, 74, 43,245, 66,236,230,230,246,190, 88, 44, 30,193,113, 92, 45,134, 97,158,177, 44,187, 43, 38, 38,102,167, 80, 84, 8,
- 16, 32, 64,128,128, 63, 76, 96,213,181, 33, 14, 20, 24, 10,130, 46,160, 56, 67,128,189, 17,105, 52,201,208,251,123,213, 37,122,
- 61, 91,248, 76,169, 8,220,201, 40,209,150, 94,189,122,185,124,254,249,231,104,221,186, 53,110,222,188,217,234,199, 31,127,252,
-144, 97,152, 16,158,231, 47, 0,184, 73,169, 65, 46, 17,140, 1,244, 5, 48,188, 71,143, 30,157, 23, 47, 94,204,212,171, 87, 15,
- 42,149, 10, 23, 47, 94,244, 95,190,124,249, 26, 66,200, 89, 0,187, 1, 28,165,148,230,151,199,165, 86,171,237,138,181, 18, 33,
-196,110,192,128, 1,119, 74,175, 17, 71, 8,129, 72, 36, 2,165,244, 6,128, 27, 60,207,223, 56,112,224, 64,108, 93, 66, 90,140,
-245,144, 30,156,244, 92,235,242, 58,167, 70,163,177, 59,242,221, 18,136,229,114,104,114,115,208,106,244,239, 51,171,207,204,159,
- 14,194,179, 96, 64, 51, 59, 44, 90, 19, 2,224, 97, 66, 66, 66, 72,251,246,237, 95, 84, 53, 49, 25,134, 89,124,234,212, 41, 71,
- 74, 41,186,117,235,182, 24,192, 31, 34,176, 8, 33,242,150, 77, 27, 94, 56,246,203, 30, 69, 94, 70, 50,186,247, 29,178,139, 16,
- 50,138, 82,250,203, 43, 98,169, 39,177, 39, 98, 76,255,116,201,110, 6, 0, 54,206, 25, 62, 99, 77, 55,178,110,242,105,154, 68,
- 8,233, 0,148, 44,173,244, 29,165,244,194,198,158,196, 30, 12,102,126,186,100, 55, 1,128, 77,115,134, 79,223,216,147,172, 29,
-127,162,106,179, 36, 9, 33,227, 71,141, 26,181,110,241,226,197,140,163,163, 35,226,227,227,187,251,250,250,122, 17, 66,124, 43,
- 26, 28,236,225,225,177,175, 67,215,126,181, 2, 7, 13, 53,178,177,182, 68,124, 98,170,249,254, 61, 63,142,245,240,240,232,241,
-226,197,139, 33, 66,113, 33, 64,128, 0, 1, 2,222,153,192,106,226, 68,140,242,117,232, 39,102,200,251,109, 91,212,235, 52,172,
-103, 91,145,175, 79, 29,132, 61, 10,239,122,244,252,173,229,190,246,162,115, 44, 71,119, 26, 75,113, 36, 56,161,226,153, 45,122,
- 22,226,160, 35,187, 1, 0,227, 63, 28,206,220,190,125,187, 78,147, 38, 77, 74, 86, 80,239,212,169, 19, 58,117,234, 68, 54,110,
-220,216, 48, 40, 40,168,225,182,109,219,116,132,144,159, 40,165,191, 85, 80,153, 78,168, 93,187,246,242,117,235,214,201,219,183,
-111, 15,185, 92, 94,114,206,196,196, 4,125,250,244, 65,159, 62,125,152,132,132,132,110,199,142, 29,235,246,221,119,223,105, 9,
- 33, 95, 80, 74,215, 27, 18, 65,243,231,207,111, 82,198,225, 83,132,144, 40,150,101,239, 53,104,208, 32,214,155,144, 58,227,122,
-182, 62, 51,190,141,167,113,185, 17, 45,147, 97,199,168,194, 58,186,180,192,122,113,254, 36, 76,204, 76,211,149,166,166, 33, 0,
- 30, 2, 8,161,148, 62,140,138,138, 10,247, 33,164, 97, 75, 75,209, 79,219, 50,184, 6, 85, 16, 89,136,141,141,133,185,185,185,
- 81, 64, 64, 64, 34, 33,228,171, 11, 23, 46,108,121,199,249,166,197, 87,211,199, 75, 51, 95,134, 32, 41,226, 6,166, 14,242, 87,
- 78,254,254,215,111, 0,252, 82,177,240, 17,137,190,187,206,207,154, 12, 76, 2, 48, 47, 61, 61,189, 61, 0, 88, 91, 91,203, 0,
- 92, 88,125, 11, 61,167,180, 33,213,118,179, 64, 8,145, 50, 12,179, 97,199,142, 29, 31,189,255,254,251,133, 75, 60, 92,189, 10,
- 19, 19, 19, 44, 92,184,176,198,180,105,211,150,162,240,217,101, 90,174, 2,186,244,171,185,102,249, 55, 62,185, 25,217,154,205,
- 27,246,223,113,246,243,102,198, 77,152,102,186, 94,175,117,112,115,115,123, 95,176,100, 9, 16, 32, 64,128,128,119, 34,176,188,
-109,201,246,182,141, 61, 7, 15,235,229, 47,175,239, 87, 15, 82,249,239,139,187, 54,105,218, 20, 77,154, 54, 21,205,202,203,237,
-114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, 84, 58,202,208,135, 23, 47, 22,187,184,175,125,199,252,172, 20, 5, 0,
- 24, 91,216,169,231, 28, 73, 58,223,166, 77, 27,184,184,184, 72,207,157, 59, 55, 6,192,111, 21,208,204,121,252,248,177,156, 97,
- 42,246, 99,234,228,228,132,129, 3, 7,194,219,219, 91, 22, 16, 16, 48, 7,191, 47, 91,241, 10, 20, 10, 69, 10, 33,196, 14, 0,
-172,172,172,184,175,190,250,234, 1, 45, 2, 0,240, 60,127,131, 97,152, 27, 60,207,223, 58,122,244,104, 92, 61, 66,236,122, 55,
-241,190, 50,126,228, 64, 37, 61,184,166, 92,113,160,206,201, 41,243,184,210,196, 56,213,200,216, 56, 68,174, 84, 60, 4, 16, 2,
-224,161,179,179,115,120, 61, 66, 92, 90,122,123, 4,109,156, 50,220,212,144,184,108,210,164,137, 87,135, 14, 29, 20, 28,199, 33,
- 63, 63, 31,155, 54,109, 50, 55, 50, 50, 50,239,209,163,199, 2, 0, 37, 2,203,151,144,250, 3,156,152, 79,190,138,103, 63,171,
-134,128,177,104,219,170,233,203,239,151, 45, 48,107,218,178, 45,158, 92,248, 25, 25, 25,185,200,206,202, 3,207,243,111,172,252,
- 59,254, 4, 77,222,216,135, 44,223, 56,123,248, 76, 34, 18,145,134,253,103,224, 61,135,236,137,132,144, 71, 0, 36,197,171,213,
- 3, 16, 19, 66,156,252,252,252,150,215,233,218, 22,155,230,142, 4,229,121, 10, 96,185,161,214, 43, 66,136,157,169,169,233,209,
-160,160,160, 22,205,154, 53,195,205,155, 55,241,252,249,115,140, 31, 63, 94,251,217,103,159, 73, 63,248,224, 3, 50,117,234,212,
-207, 9, 33, 7, 41,165,215,222,248, 16,196,226, 17,125, 3,135,200,242,178,114,212, 58,173, 78,107,109,109, 78,213,249,234,220,
-244,204, 28,213,224,161, 31,233, 30, 6,223, 28, 1,224, 13,129,245, 54,241, 41, 64,128, 0, 1, 2, 12, 70, 51, 0,182, 0, 82,
- 1,220,121,109, 31, 69,255, 81,198,126, 26, 10,135,245, 88,151,226, 74, 67,225,240, 30, 91, 20,250,232,188, 13, 32,243, 93, 7,
-152, 80, 74, 81,228, 80,184,216,177, 48, 41, 37,176,232,227, 84, 10, 54,227, 25,184,244, 40,112,185,111, 46,111, 68, 20, 22,200,
- 86,113,136,125, 22,142, 81,147, 23,226,113,106,249, 30,180,123,213, 37,122,115, 25,196,166, 82, 64,170,180,208, 12, 91,118,250,
-122,211,166, 77,213,115,218,139,122, 45,221, 88,104,217,154,250,201,112,180,154,114,240,244,179,103,207, 88, 39, 39, 39,188,255,
-254,251,160,148,246,174,160, 98, 77,206,189,115,221, 46,162,119,107, 52, 79, 46,123, 24, 84,100,100, 36, 46, 95,190,140,152,152,
- 24,212,170, 85, 11, 99,198,140, 73,161,148,218,151,199,217,189,123,247, 75,223,125,247, 93,187,149, 43, 87,134,236,216,177,163,
- 13,165,101,175, 53,232, 75,136,113,195, 26, 14,119,182, 45,157, 89,139,156,252, 73, 82, 16,243, 20, 22,151, 84,164, 12,113, 71,
- 19, 18,126,143,187,111,189, 28, 97,108,110, 10, 99, 51,147,228, 15,130,238,150, 88,174,138,126, 31, 55, 33,196,204,197,209,250,
-238,222,213,243,156, 69,231,247, 41,164,155,111,144,202,196, 85, 64, 64,192,245,197,139, 23, 91, 38, 36, 36,224,236,217,179,168,
- 81,163, 6, 10, 10, 10,176,106,213,170,196, 43, 87,174, 56, 21,133,215,190,185,183,123,200,166,105,163,205,165, 99,230,203,171,
-154, 89,164, 98,241,250,235,167,246,125,102, 46,167,200, 74,120,142,168,240, 71,184, 29,246, 66,191,243, 76, 8,151,163,210,244,
-162,148,158, 47,235,190, 9,254,164,206,133, 4,219, 99,167, 46,222,241,116,116,116,196,216,177, 99,145,148,148, 4, 74, 41,120,
-158, 47,153,113, 49,103,206, 28,120,121,121, 97,212,208,247, 10,228, 25,193, 1,199,194, 12, 91,239,141, 16,226,231,238,238, 30,
-116,225,194, 5,123,103,103,103, 92,185,114, 5, 73, 73, 73,112,112,112,192,185,115,231,176,108,217,178, 29,159,126,250,233,160,
-197,139, 23, 43,134, 13, 27, 22,127,250,244,105,215,215,199,204,213,168, 81, 35,252,216,233, 43, 38,231, 14,159,126,102,105,106,
- 12, 19,123, 43, 48,166,150, 42, 80,168,236,109,205,165, 67,250,117,174,253,242,229, 75,159,215,210,255,173,226, 83,128, 0, 1,
- 2, 4,188, 82,150,151,169, 69,138, 37, 4, 33,228,120,145, 30,208, 2,144,149,218, 7, 33,228, 56, 0,188,190, 63,107,214,172,
- 57, 75,151, 46,125, 84,188, 95,124,205,236,217,179,235, 45, 91,182,108, 73,171, 86,173,246, 94,191,126,253, 43, 0, 79,255, 84,
- 11, 86, 49,216,184,219,144,122,246,128,132,211, 67,159,246, 24,124, 86, 52, 96,236, 0, 21, 49, 65,122, 98, 52, 34,174,252, 82,
-168, 5, 43,193,111, 17, 84, 66, 8, 57, 23, 30, 30,142,136,136, 8,196,198,198, 66,169, 84,190,113,221,213,171, 87, 97,100,100,
- 4, 71, 71, 71,131, 94,130,106, 95,117, 22, 28,210,196, 29, 38,173,218, 35,109,216, 56,156, 59,119, 14, 41, 41, 41,144, 74,165,
-144,201,100, 96, 89,182, 82, 62,145, 72, 68,138, 18,129, 2, 40,211, 11,115, 0, 33, 98, 23, 43,147, 99, 27, 23, 76,242, 16,221,
- 56, 46, 81,197, 60, 69,130,154,131,133, 33,150, 59, 19, 99, 40,141,149,137, 70, 70,202,215,197,213,147, 38,132, 72,140, 77, 20,
-199,126, 90, 52,213,129,185,119, 78,161,122, 26, 2,105, 25, 28, 93,186,116, 25, 11, 96, 1,165, 52, 43, 32, 32,192,126,241,226,
-197,150,241,241,241, 8, 11, 11,195,254,253,251, 83,217,194, 23, 37,148,210,175, 1,160, 21, 33, 10, 55, 91,139,211,235,231, 79,
- 50,197,133,125, 50,140,153, 95,229,204, 98,238,211,231,183, 1, 31,124,250,217,186, 73,125,144,159,171,194,238, 51,247,112, 42,
- 56,234, 61, 0, 87, 43, 26,215,182,254, 42,125, 74, 8,233, 20, 24, 24,120,255,242,229,203, 54,219,182,109, 3,203,178,101,110,
-219,182,109,195,217, 43,193, 19, 13, 93, 76,151, 16,226,228,225,225,113,246,214,173, 91,182, 74,165, 18,103,206,156, 65, 86, 86,
- 86,137,229,106,212,168, 81, 36, 43, 43,107,232,166, 77,155, 6,188,124,249,114,197,149, 43, 87,210, 81,184,108,211, 43, 25,129,
- 97,152, 40,150,213,213,117,242,241,100, 6,245,105,219, 54, 47, 61, 4, 38,214, 13,112,243,126,212,241,236,172, 12, 21,195, 48,
- 81,165,175,127, 23,241, 41, 64,128, 0, 1, 2,170, 44,194,142, 83, 74,123,151, 22, 76,175, 11,173,226,255,197,215, 45, 93,186,
-180,119,105,241, 5, 0,203,150, 45, 91, 82,106,191,224,143, 8,171,248,119,189, 64, 40,128,128,178, 46,210,132, 29,130, 38,226,
- 40,164,238,109, 32,243,126, 15,140,187, 63, 98, 66, 46,224,193,201,213,136,123,116, 21,148,231,224,232,213,220,208,103,170,235,
-214,173, 11,181,186,112,232,149, 70,163,129,212,216, 82, 61,245,147,225, 10, 0,224,197, 10, 77, 41,149,105, 16,161,105,155, 14,
-104,158, 76,113,219,190, 80,240, 22, 91,178, 22,141, 30, 13,169, 84, 10,169, 84,138,226,129,234,134, 8,172,162, 53,180,138, 87,
-171,167,101,157,111, 42,151,236,222,187, 96, 66,115,249,203,135, 50, 77,232, 13, 36,104,120,122, 44,153,251,205,215,128,240, 42,
-141,149,241, 70, 74,229, 67, 35, 19,227,210, 2, 43, 10, 0,168, 68,178,243,231,175, 39, 52, 48, 78,126,102,172,190,115, 14,137,
-106, 94,103, 86, 54,205,215, 39, 79,158,180, 19,139,197, 14, 28,199, 33, 38, 38, 6,143, 30, 61,194,218,181,107,147,115,115,115,
- 3,130,131,131, 35, 75,133, 87,212,204, 72,182,127,231,194, 73, 53,197, 33,151, 20,154,168,208, 50, 69, 91, 69,176,173,223,191,
-219,123, 1, 13,127, 27, 59,114, 46,250,245,236,138, 15, 2,124,233,139,132, 12, 53,128, 51,148,210, 74,151, 65,162,148,198, 19,
- 66,186,180,107,215,110, 87,163, 70,141,124, 40,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,201,201,209,
- 5, 5, 5,173,161,148,254,104,224,135,166,180,180,180, 60,117,254,252,121, 91,165, 82,137,160,160, 32,168, 84, 42, 56, 58, 58,
-226,179,207, 62,147, 45, 91,182,108, 71, 78, 78,206,160,165, 75,151, 42, 94,188,248, 63,123, 95, 29, 94,197,241,127,125,102,247,
-122,238,141,187,160, 9, 9, 49, 8, 78,112,135,226, 46,197,161, 72,177, 34, 45,238, 69, 10, 20, 43,180,184, 22,119,119,119,135,
- 16, 2,129,144, 16,119, 79,174,239,206,251, 71,164, 33, 68,110,128,190,191,126,219,123,158,103,159,123,215,206,206,206,204,206,
-156,249,204,204,103, 66,215,157, 63,127,190, 34,114, 22,156,253, 36, 19,104, 52,154, 77,123,118,237, 88, 59,102,236, 56,231, 43,
-247, 2, 47,171,179, 50,204,203,149,143,200,176,177, 82, 40, 86, 45,155, 95, 78,163,209,140, 44, 58, 62,175,125, 86,124, 26, 97,
-132, 17, 70, 24, 81,148,237,162,120, 45, 82, 80, 52, 21, 22, 89,101, 17,103, 0,148,211,166, 77,155, 65, 8, 57,149,107,225, 82,
- 2,136,254, 91, 4, 22,165,244, 58, 33, 4,148,210,235,197, 94,201,115,208,134,222,128, 54,244, 6,100,254,227,113, 98, 73,191,
- 66, 47,205,127,118, 32, 58, 45,184,120, 69,173, 86, 11,118,236,216,145, 63, 46, 11, 0, 56,142,251,234,169,103,136,192, 66,238,
- 18, 66,185, 2,235,147, 64, 84,146, 40,174,111,154,216,171,190, 53,151, 45,212,220, 58,137, 40, 53,175, 95,241, 86,155,253, 48,
-149, 46,155, 81, 12,225,177, 31, 70, 34,226,230, 37,152, 40, 20, 17,195,111,188, 40,104,181,122, 14,224, 61, 0, 84,146,154, 93,
- 62, 48,169, 95, 35, 7, 17, 68,154,211, 7, 17,173,230,213, 27,194,116,219,214, 20,157,201, 64, 41,197,251,247,239,145,157,157,
-141, 59,119,238,224,240,225,195, 9,133,197, 85,110,120,175,109,253,169,127, 61,179,140, 88,145,230,225, 37, 68,171,121,181,135,
- 33,162,170,122,183,134, 34,134, 92, 32, 12, 43,107,223,216, 27, 63,124,215, 13,171,182,158,208,107,236, 26,119, 92,123,252, 76,
-239, 76,181,118,134, 33,226,170, 64,152,159, 3,240, 38,132, 72, 0, 52,239,219,183,239,153, 30, 61,122,224,250,245,235, 56,121,
-242,164, 59,128,152,220,143, 96, 1, 0,123,228,204, 46, 12, 41,230, 67, 97, 68, 34,209,190, 75,151, 46,249, 56, 57, 57,225,210,
-165, 75, 80, 42,149, 24, 61,122,180,102,236,216,177,162,193,131, 7,147,180,180,180,124,203,213,157, 59,119,146,138, 19, 87, 0,
- 16, 25, 25,121,182, 98,197,138, 13,155, 52,105,210,181,178,123, 85,179,144,140,244,120,133,137, 84,118,243,250, 85,209,227,135,
-119,215, 69, 70, 70, 62, 40, 58, 62, 47, 27, 28,159, 70, 24, 97,132, 17, 70,148, 88, 71,148,174, 69, 10, 89,162,202,200,159,119,
-159,112,201,146, 37, 47,151, 44, 89,242,145,133,235,239,178, 96,149, 9, 92, 90,248,167, 1,231,249,178,188,228, 39,199, 44, 45,
- 45,245, 50,153,236, 35,129,197, 27,200,153,124,116, 47, 66,190,255, 54,223,114,149,103,201, 66,187,193,159, 37,176,242, 44, 88,
-185,131,161, 63, 10,132,220,190,106,191,125, 3, 90, 55,244,174,236,204,232, 14,172, 65,100,182, 94, 53,247,181, 86, 21,148, 65,
- 59, 7, 22, 49,120, 58,159, 83,175,131, 84, 46,251, 32, 83,200, 11,139,171, 48, 0, 80, 56,120,244,216,217,175,121, 51,191,170,
-110,140,126,255, 74, 68,101,235, 50,167,189,210,106, 67,178,232,145, 98,226,112,110,155, 54,109,230, 90, 91, 91, 75,215,174, 93,
-107, 94,161, 66, 5,232,245,122, 77, 97,113, 37,183,175,218,111,255,224,118, 13, 61, 28, 44, 25,221,161,223, 16,161,228,178,215,
-132,232,118,110, 48, 64, 92,217,152, 43,206,111, 88,252,189,204, 68, 34,132, 74,165,194,210,223, 15,225,194,237,128,142, 9, 47,
-142,158, 7,112,254, 11,242,221,240,142, 29, 59,174, 90,176, 96, 1,116, 58, 29,134, 13, 27,134,119,239,222, 93,120,253,250,245,
-154,242,229,203, 79,249,233,167,159,156, 28, 28, 28,208,187,119,111, 17,128,193,197,112,252,178,103,207,158,142,126,126,126,184,
-126,253, 58, 82, 83, 83,225,232,232,136,177, 99,199,138,151, 44, 89,178, 51, 61, 61,189,215,226,197,139,165,239,223,191, 47,209,
-114, 85, 40,111, 44,220,184,234,251,201,117,234, 55, 98,222,190,125,163, 15,175,219,148,185,122,233,228, 13, 75, 75,203,157, 31,
-197,231,144,111,202, 28,159, 70, 24, 97,132, 17, 70,124, 53,156, 6,208,161,176, 85,171,176,248,202,179, 80, 21,220, 47,124,125,
-238,249,191,101, 81,114, 65,129, 0, 26, 60, 61,158,207, 74, 48, 72, 52, 21, 70, 7, 79,162, 27, 89, 7,130, 25, 77, 25,136,228,
-150,170, 78, 11, 46, 94, 41,238, 90,185, 92,110,176, 5,139, 87,171, 74, 19, 76,101, 18, 88, 44,203, 18, 0,231,120,158,191, 91,
- 80, 96, 89, 56, 84,109, 58,107,234,132,213,141,122,180, 99,226,190,243, 71,106,166, 90,253, 83,160,158,143,204, 46, 89, 92,229,
-168, 82, 93,168,137, 92,241, 66, 42,255,104,220, 85, 56, 0,200,236,171,212,157, 54,113,220,239, 45,250,117, 34, 9,163, 27, 33,
- 37, 85,169,158,242, 82, 79,162,148,180, 87, 32,165, 87,139,162,187,124,249,242, 70, 0, 27,155, 53,107, 22, 39,151,203,145,153,
-153,249, 73, 26,228,133,183, 97,143,118, 76,220,240,122, 72,206,210,170,127,122,169, 71,180,146,223, 87,154,184,178,181, 48, 61,
-191, 97,209,247, 38,209,145, 97, 16,137, 68, 80, 40, 20,184,120,235, 5, 18, 2,142,125,137,176, 2,203,178,243,102,204,152, 49,
-119,204,152, 49, 72, 74, 74,194,201,147, 39,209,190,125,123,236,221,187,183,194,153, 51,103, 86, 53,111,222, 28, 44,203,226,212,
-169, 83,208,233,116,193,197,164,103,183, 17, 35, 70, 76,233,209,163, 7, 30, 60,120,128,152,152,152,143, 44, 87,169,169,169,125,
-127,255,253,247, 30,161,161,161,165, 90,174, 10,161,110, 37,183,154,162,233,179,127,133, 58, 59, 94,144, 16,117,239,250,229,139,
-204,221,228,228,100, 19, 0,105,159, 27,159, 70, 24, 97,132, 17, 70, 24,108,128, 41, 78,139, 36,228,138,167,132,162,246, 11, 8,
-171,162,246, 73, 33,171,151,166,208,249,103,255,103, 22, 44,129,189, 47,244,113, 1, 5, 4, 86,252, 71,231,165,166, 86, 6,117,
- 17,234,244, 16,108,216,150,239, 7, 75,154,148,148, 36,181,177,177, 81, 21, 20, 6, 38, 38, 38,112,114,114, 66, 74, 74, 10, 54,
-109,218, 4, 0,165, 13,118,214,155,245, 24,128,186,253,134,225,161,139, 24, 84,167,205,183,100,109, 24, 50,228, 35,145, 37, 18,
-137,242,198,126,149, 86,217,222, 39,132,132,241, 60,127,151, 82, 74,107,121,184, 46,148,202,229, 67,106, 87,119,179,249,225,251,
-225,194,208,120, 53,174, 52,154,158,122,232,151,169,138, 8,170, 24,243,129,166,222, 46,133, 47,164,203, 31,187, 11, 91,174, 34,
-107,122,184,206,148,154, 72,191,171,239,235,225, 48,109,210,247,194,208, 56, 53,185, 82,247,167,244,195,203,126, 50,121, 15,211,
- 41, 17, 52,229,170, 1,201, 51,183,125,251,246,115, 41,165,148,231,249,217, 0, 80, 48,188,147,198,126, 39, 12,137, 85,225,114,
-163,153, 41,135,127,153,106, 26,129,146,195,107, 91,189, 91, 67,123, 75,179,243, 27, 22,143, 49,137,137,250, 0,137, 68, 2, 83,
- 83, 83, 68,196,165, 65, 40, 96,149, 95,146,217, 8, 33,146,166, 77,155, 78,253,254,251,239,241,226,197, 11,140, 30, 61, 58, 38,
- 60, 60,252,200,254,253,251, 71,207,153, 51, 71,208,182,109, 91,196,196,196, 96,249,242,229,186, 91,183,110, 45, 6,176,188,200,
-252, 40, 16, 12, 95,184,112, 33,141,142,142, 38,239,223,191,135,163,163, 35,198,141, 27, 39, 94,188,120,113,254,152,171,178, 88,
-174,242, 16, 25, 25,121,221,221,173, 60, 58,159, 93, 13,189, 78,125, 61, 53, 41,252, 70, 80, 72,202,117, 43,177,120,114,163, 90,
-213, 63, 43, 62,141, 48,194, 8, 35,140,248, 42,120, 88,202,254, 63, 14,165, 9,172,224,223,102, 14,117, 31, 58,230, 71,200, 42,
- 52,132,250,213, 81,240,153,113,249, 22, 44,169,194, 18, 86,229,189,144,154,165,198,193,203,143, 1, 32,184, 44, 15,207,200,200,
- 64,173, 90,181,176,126,176, 71, 11, 85, 70,146, 84, 6, 64, 45, 49, 83, 29, 19, 55,190,114,230,204,153,108,158,231,247, 1, 56,
- 83, 10,205, 60, 31, 31,159,117,191,254,250,171,216,171,223, 80,100,222,187,249,209, 73,134, 97, 32,147,201, 32,145, 72,240,252,
-249,115, 92,185,114, 69, 3, 96, 94, 41, 66,224,190, 94,175,127,118,240,224,193, 8,119, 87,151,118,205,234,212, 29, 63, 99,250,
- 52,211,192,155, 23, 48,123,241, 58,190, 74,237,182,105, 75,247, 30,203, 72, 83,148,111,153, 29, 29,244,212,128, 87,125, 86, 72,
- 92, 69,123, 85, 46,223,194,191,102,141, 31,103,207,158,105,246,242,230, 69,204, 89,182,129,186,251,181, 74, 91,118,248,120,122,
-162, 73,197, 54,202,184, 87, 15, 12,137,195,107,215,174,109, 4,176, 49,111,191,112,120,167, 45, 88,195,123,212,105,151,178,116,
-239,225,172,116,211,242,173, 74, 10,175,157,119,247, 6,229, 28,173,206,255,246,243, 40,147,216,168,112, 72, 36, 18, 40, 20, 10,
-132,199,164, 98,238,234, 3, 89, 90,158,111,247,133,249, 77, 98,106,106, 42,209,106,181, 88,191,126, 61,194,195,195,253, 41,165,
-225,132,144, 13,125,250,244, 89, 91,173, 90, 53,207,151, 47, 95, 6,103,102,102,142,161,148, 6, 21, 71, 98, 97, 97,225,111,107,
-107, 75,238,222,189,139, 81,163, 70,105,198,141, 27, 39, 26, 52,104, 16, 73, 73, 73,249, 92,203, 21, 0,192,197,197,165,105,151,
- 14, 13,208,176,245,232,235, 26, 85,234,141,208,160,157,215, 25,122, 91, 90,171, 70,245,207,138, 79, 35,140, 48,194, 8, 35,254,
-219,230,184, 98,183,166,128,192,195, 26, 35,125,156, 69,177,187,126, 25, 71, 51, 66,238, 80,229,131,141, 52,253,232,119,244,244,
-242, 65,244,204,111, 63,208,209, 29,124,168,167, 29,137,245,176,198,200,166,128,160,164,213,182,219, 87,133,174,181, 27,104,107,
- 55,208, 14, 30,208, 1,152, 81,179,102,205, 99, 99,235,130,210,192, 61,148, 6,238,161, 99,235,130, 2, 24, 5, 64, 97,232, 10,
-222, 0, 28, 1,108,170, 85,171,150,254,234,213,171,244,117,175, 86,244,137,167, 13, 29, 51,102, 12,157, 51,103, 14,253,246,219,
-111,169,173,173,173, 30, 57, 14, 55, 29, 75,227,236,220,185,179, 11,165, 20,229,202,149,179,168,237, 85, 37,246,249,229,147,244,
-198,174,181,116,235,216,238,180, 94, 53,175, 68, 7,207, 38,207,100,142, 85,107, 24,186,210,184,131,131,195,116, 74,105, 59, 74,
-169, 35,165, 20,238,238,214,138,154,158, 85,162,159, 93, 58, 73,111,238, 94, 71,183,142,237, 78,235, 87,247, 78,114,241,106, 30,
- 36,181,243,172,251,185,171,151, 23, 25, 94, 95,207, 68,251, 42, 13,158, 22, 23,222,130,156,149,235,246, 62, 30, 25, 29, 71,239,
-223,191, 79,207,156, 57, 67,111,222,188, 73,119,237, 63, 78,203,215,233,149,105, 83,173,107,195, 47, 93,101, 29,128,121,135, 14,
- 29,104,112,112, 48,253,230,155,111, 40, 0,243,207,225, 4,112, 44, 52, 52,148, 6, 4, 4,208, 25, 51,102, 80, 0, 59,190,255,
-254,123,101, 90, 90, 26,109,213,170, 85, 56,114, 38, 41, 8, 62, 39,156,174,149,156,151,118,235,212,120,222,216, 81, 61,154,126,
-105,124,254,147, 87,173, 55,114, 26, 57,141,156, 70,206,127, 26,231,191,109, 43,209,130,117, 45,167,245,191,177,154, 61,249,115,
-241,242,223, 38,175,223,184,227,199,169,227,135,203, 27, 55,106,141, 23,151,182,227,240,169,253, 89, 42,181,102,185,136,197,175,
- 47, 18,105,169,126, 36, 78, 7, 81, 97, 17,214, 34, 19, 43, 55,228,251, 80,122,155, 2, 80, 74, 55,148, 81, 36,198, 0, 24, 65,
- 8,249,181,121,243,230,139,190,107, 88,183,251,216, 6, 45,160,211,233,176,107,215, 46,124,248,240,225, 8,128,153,148, 82,131,
- 44,108, 47, 94,188, 72,244,169, 82,113,130,149, 76,244,227,152,111,187,217, 38,188, 11, 68,228,171, 39, 0, 0,181, 90,169,139,
-121,115,221,175, 44,225,147,201,100,247,109,109,109, 95,219,218,218,166,112,234,204, 17, 82,129,217,236,209,125,187,216, 37,133,
- 6, 33,226,101, 78, 15,168, 90,149,173,141,120,115,197,243,115, 68,114,197,138, 21, 37,114, 33, 70, 22, 25, 94,141, 74, 23, 27,
-252,170,134, 33, 60,217,106,205,226,249,171,118,181,249,249,199, 33, 18, 51, 51, 51, 60, 14,120,139,217, 43,247,102, 41, 53,186,
-118, 9,207,143,222,254, 90,130, 94,167,211, 25, 60,129,161, 24, 76,245,243,243,171,186,104,209, 34,247,193,131, 7,227, 75, 45,
- 87, 5,241,238,125,228,180,102,205,154,121,191,125,253,184,185,149, 76,244,231,151,196,167, 17, 70, 24, 97,132, 17,255, 93, 24,
- 52, 6,235, 69, 28,205, 6,176,192,213,158,108,152,190,104,213, 92,134,172, 30,194, 83,186, 93,207, 96,126, 72, 34, 77,248,194,
- 10, 55,187,131, 39,209,183,233,250,173, 0, 0,132, 2,232,191,128, 43, 24, 64, 15, 66, 72,157,205,183, 31,204,202, 61,252, 51,
-165,180, 76,125,181,166, 2, 4, 52,242,118,117,110, 92,211, 71,202,114, 74, 68,190,122,135,228, 44, 21, 46,190,252,144,202, 80,
-102,123, 89,195, 21, 18, 18,114, 13, 0,124,171, 84,124,213,216,219,173,124,147, 90, 62, 38, 66,162, 65,100,224, 99,164, 41, 53,
-184,240,242, 67, 26, 8,249,236,129,210, 95, 43,188,177,207,143, 61,180,173,222,173, 21, 33,228,210,140,177,253, 36,115, 87,238,
-251,170,226, 10, 64,118, 84, 84, 84, 82,118,118,182,117,116,116,180, 6,159,233,220,141, 82,250,150, 16, 82,237,135, 31,126, 88,
- 48,101,202,148, 31,127,249,229, 23,209,231,140,185, 42, 14, 41, 81, 31,142, 54,241,249,122,233,111,132, 17, 70, 24, 97,132, 81,
- 96,149, 44, 20,226,104, 2,128, 49,110,110,100,210,187,119, 84,243,181, 2, 81,148,101,235, 11, 69,219, 67, 0,157, 62,155,128,
- 33, 25,247,130, 63,100,222, 15,254,144, 9,158, 82,158, 82, 53,195, 32, 34, 75,171, 93,252, 38, 36,242,243,103,209, 17,194, 61,
-124, 27,174,124,244, 46, 66, 69,121,158,242,148,106, 8, 65,172, 78,199, 47, 14, 8, 9, 59,254, 79, 8,111,194,243,163,183, 29,
-188,187, 55,190,125, 63, 96, 82, 86,150,118, 93, 66,224,209, 59, 95, 49, 93,116,132,144,254,254,254,254, 67, 57,142,219, 64, 41,
-213,125, 1,151, 6,192, 84, 66,200,145, 23, 47, 94, 28,184,115,231, 78,204,215, 16, 87,127,107,250, 27, 97,132, 17, 70, 24, 97,
- 20, 88, 37,225,107,138,171,127, 34, 94, 4,135,214,250, 59,120, 3,130, 67,125,255, 23,194, 27, 27,120,228, 17,128,190,127, 71,
- 88, 41,165, 23, 0, 92,248,154, 98,154, 16, 82, 9, 0,251, 85,196,213,223,152,254, 70, 24, 97,132, 17, 70, 24, 5,150, 17, 70,
-252,207, 32,119,205, 72,189, 49, 38,140, 48,194, 8, 35,140,248,167,128, 0,104, 85, 76,165,117,201, 96, 18, 66, 90,125, 70,165,
-120,201,200,105,228, 52,114, 26, 57,141,156, 70, 78, 35,231,127,139,243,191,212,250,255,219, 54, 24,167,176, 26, 57,141,156, 70,
- 78, 35,167,145,211,200,105,228,252, 15,110,140, 81, 98, 26, 97,132, 17, 70, 24,241,183,117,147, 16, 34,201, 93,224,253,179,206,
- 27, 97,196,255, 42, 4,159,241,177, 84,201,181,124,189,253, 27, 63,200,177,142,142,142, 35,170, 87,175,238, 37, 18,137,152,140,
-140,140,249, 87,174, 92,153, 87,248,186, 38, 62,194, 71, 44, 3,151, 2,119, 2,132, 5, 24, 6, 28, 69,228,141,103,217,181,141,
- 73,252,143, 46,120, 43,200,204,108, 79, 16,134, 21,115,122, 45, 56,157, 22,192, 95,203, 38,241,188,254,131, 94,163,106, 91,220,
-253,142, 53,186,151,215,115,116, 41,192,255, 78,192,140,166,224,255, 32,148, 25, 77, 25,252, 78,120,140,130, 64,183, 28,122,225,
- 20,129, 72, 48, 51,250,241,193,136,127, 67,156, 29, 58,116,136,253,146,251,123,246,236, 89,228, 2,159,206,206,206,167, 76, 76,
- 76,220,138,187, 47, 43, 43, 43, 38, 58, 58,186,249,191, 60, 63, 54, 1,240, 27, 0,159, 66,167,130, 0, 76,160,148, 94,254,210,
-103, 52, 35, 68, 96, 15,140, 20, 1, 63, 1,128, 22, 88, 22, 7,108,188,246,149, 38,104,124, 13,216,217,217,221, 16, 8, 4,238,
- 89, 89, 89, 89,233,233,233,174,102,102,102, 33,114,185, 92,174,215,235,131,227,227,227,155,148, 49, 78,191, 71,238,146, 87,132,
-144, 31, 41,165,191,151,229,188, 17, 70,252,171, 5, 22, 33,196, 3, 64,211,220,173, 73,157, 58,117,236,179,178,178, 64, 8,137,
- 3,112, 3,192,117, 0,215, 41,165,111,190, 70,128, 88,150, 93,177,102,205,154,201,227,198,141,203, 95,164,249,249,243,231, 69,
- 95,203,192,229,234,169,203,118, 15,159,191, 70,157, 86, 61,115, 5, 22, 3,100,199,162,121,171, 58,159, 91,200,154, 90, 90, 90,
-206, 39,132,244, 98, 24,166,212,202,140,231,121,142, 82,122, 48, 37, 37,101, 46,165, 52,163, 44,207, 82,200,165, 58, 61,199, 21,
-249, 12, 1,203,114,153, 89,170, 98,221, 87, 88, 91, 91,223, 97, 24,166,114,193,133,172,115,195, 95,228,255,130,251,122,189, 62,
- 50, 33, 33,161,182, 1,113, 33,101, 4,162, 9,132,136, 90,131,225, 61, 0, 2, 2,230, 13,207,105, 46,242,122,237, 26, 74,169,
-234, 75,196,149, 99, 57,215,155, 19,103, 46,117, 9,120, 21,132, 25, 99,191,197, 47,191,237,192,244, 9, 67,177,102,211, 94, 76,
- 24,209, 15,222,222, 62, 37,114,112,148,204,159, 61,161,127,243, 69,107,246,212,153, 57,225, 91,249,162, 53,123,234,204,252,225,
- 91,197,162,181,123,106,207,252,161,191,226,231,181,127,214,158,245, 67,127,179, 69,107,247,104, 1, 12,251,156,112,246,247,112,
-206,130, 94, 95,116,235, 90, 32, 80,255,249, 38, 74,254,127,241,225, 14, 30, 60,184,186, 82,169,124,252,109,235,154, 75,107,120,
- 56, 71, 21,117, 77, 82,108,148,115,200,235, 39,211,132, 34, 89,173, 46,211,118, 60, 47,137, 79, 34,145, 84, 14, 10, 10,114,231,
-121, 30, 28,199, 65,175,215,231,255,106, 52, 26, 52,105,210,228,171, 76,136, 33,132,116, 2, 48, 63,231, 99,197, 18, 74,233,129,
- 47,224, 82, 8, 4,130,137, 98,177,184,169, 94,175,247, 2, 0,161, 80,248, 74,173, 86, 95,215,235,245,171, 40,165,153,101,164,
- 92, 29, 21, 21,229,173, 80, 40,160,213,106,243, 23,134,103, 89,214,179,124,249,242,235, 1,184,127,233,251,219, 3, 35, 27, 52,
-106,180,102,208,228,201,172,242,198, 13,172,217,182,109, 53,210,211, 1, 96,125,105,247, 74, 36,146,243, 12,195, 84, 40,203,243,
-120,158,255,160, 86,171,219,150,169, 82, 16, 8,220,163,163,163,237,156,156,156, 0, 0,114,185, 92, 94,112,191, 44,150, 43, 0,
-203, 41,165, 50, 0, 96, 24,102, 77,131, 6, 13,252, 9, 33,122, 0,148,231,121,134, 16,210,143,231,121, 65,238,245,203, 9, 33,
-219, 40,165,106, 99,213,108,196,191, 90, 96, 17, 66,206, 0,104, 90,167, 78, 29, 89,223,190,125,209,180,105, 83,184,187,187, 67,
- 42,149,230, 20,222, 73, 73,246, 79,159, 62,237,125,227,198,141,222, 39, 79,158, 4, 33, 68, 9,224, 22,165,180,200,143,185, 85,
-167,198,227,164, 10,201, 90, 0, 72,136, 76,138,137,124, 31,191, 54, 38, 38,102, 57, 45,176, 74, 52, 33,196,117,208,160, 65,147,
-198,143, 31,143, 83,167, 78, 97,239,222,189, 80,171,213,200,200,200,192,149, 43, 87,138,105, 90,199, 35,229,202, 82, 64, 30, 6,
-132, 95, 3, 76,236, 0,185,253,103, 71,136,165,165,229,252, 9, 19, 38,252,224,237,237,157,239,117, 92,167,211, 65,175,215, 67,
-167,211, 33, 37, 37, 5,147, 38, 77, 66,174, 21, 15, 60,207,227,236,217,179,227, 70,140, 24, 1, 0, 19,139,226,244,175, 93,254,
- 17, 67, 24,151, 60,219, 12,229,184,200,187, 79, 34,106,235, 57,142, 85,169,180, 69,174, 28, 46,149,138, 74, 20,119, 66,161,208,
- 37,240,196, 9, 59, 70, 44, 6,229, 56,128,231, 65,121, 30, 64,129,141,230, 28,163, 28, 15,170,227,192,235,121,232,149,106,212,
-253,254,123, 67, 10,199, 6, 66,177,108,111,255,239, 38, 59,212,171, 95, 95, 88,177,156, 19,244, 28,143,119,161,145, 14,143, 31,
-221,107,120,112,231,250,209,132,144,126,148,210,207,242,147, 37, 54, 49,187,176,238,143,205, 46, 15,159, 6,224,242,213, 27,184,
-116,229, 58, 0,224,252,213, 28, 58,134, 97, 74, 11,159,165,181,123,243,234,227,134,118,149,255,252,235, 22,201,184,161, 93, 5,
-127,253,110,150,140, 27,218, 69,176,104,213,102,201,184,161, 93,132, 11,151,173,171, 65, 8,177,164,148,166, 20,199, 87, 92, 26,
- 65,175,151,252, 25, 18,199, 2, 64,194,134, 13,208,197,199,195,105,238,220, 28,241,229,106,111,112,183,134,173,173,237, 35,161,
- 80,232, 82,218,117, 58,157,174, 84,241, 59,120,240, 96, 63,165, 82,249, 72,175,215, 83,129, 64, 48,237,219,110,109,142,181,107,
-236,151, 84,240,154,231,207,159, 89, 47, 94,124,162,235,129,199, 25,180,119, 45,211,199,167, 86, 12,174,221,113,202,142,103, 37,
- 84,196,140, 90,173, 70,112,112, 48, 10, 46,190, 94, 80,207,126,166, 8, 98, 0,172,177,182,182,174,151,148,148,212, 31,192,140,
-244,244,244,234, 44,203,194,202,202,106, 6, 33,228,157,185,185,249,150,180,180,180, 59,185, 86, 34,222, 64,222, 38,102,102,102,
-187,142, 30, 61,106, 89,179,102, 77, 38, 33, 33, 1,149, 43, 87, 70,114,114,114,221, 27, 55,110,212, 26, 54,108,216, 48, 66,200,
- 64, 74,233,141, 50, 4,183,170,137,137, 9, 29, 52,104, 16,225,184,191, 94,119,235,214,173,104,235,171,119, 27,213, 78,158,173,
-210,208,180,203,193,230,163, 68, 34,209,173,176,176,176,180,178,198,135, 8,248,105,208,228,201,172, 34, 44, 12,138,103,207,208,
- 63, 61, 93,240, 75,142, 53,171, 84,129,197, 48, 76,133, 93,251,182,187,139,197,226,252,114,169,184,141,227, 56,104, 53, 90, 44,
-253,121,249,103,151,133, 38, 38, 38, 38, 78, 78, 78,113, 38, 38, 38, 38, 95,163,178,145, 72, 36,130,157, 59,119,246, 19,139,197,
- 0, 0,141, 70, 3, 95, 95, 95, 98,172,134,141,248, 47, 90,176,190, 73, 79, 79, 7,199,113, 48, 53, 53, 5,203,178,133, 45, 40,
-104,221,186, 53,154, 52,105,130,190,125,251, 34, 48, 48, 80,214,183,111,223,214,197,145,125, 59,185, 35,202,185,219,231, 86, 34,
-188,227,237,211, 79,151,110, 93,120,200, 22,192,228, 2,151, 13, 27, 57,114, 36, 73, 74, 74, 66,175, 94,189,110,168,213,234,206,
-148,210,244, 98, 45, 24, 60, 34,155,247,253, 22, 60, 37,178, 85,247, 55, 17,141, 74, 73, 25,134, 81,230,117, 17,126,102,133,208,
-203,201,201, 9,251,246,237,131, 70,243,169,187, 47, 51, 51, 51,188,124,249,178,160,197, 13,245,235,215,103, 9, 33,189,138, 19,
- 88,132, 48, 46,183, 31,134,217,229,237,119,108,237, 35,242,175, 93, 33,206,214,218,148, 2, 32, 51,103,206,204, 23,108, 0, 48,
-127,254,124, 67,194, 9, 70, 40, 68,194,245,235,127, 21,192, 2, 6,140,136,128, 8, 1, 70,144,211, 91, 10, 10, 80, 14,224,245,
- 0,175, 3,164,142,229, 12,225,174,235, 92,222,253,212,226,149,191, 91,168,117, 20,251,142, 95, 70,104,232,123,176, 12, 3, 87,
- 55,119,180,105,214, 88, 88,171,142,127,185,101,243, 38,159, 36,132,124, 67, 41,125, 80,230,136,230,169,212,173,188, 13,182,108,
-125, 12, 91, 75, 5,122,117,109, 15,153, 84,130, 95,126,219,142,159,167,143,133,187,107, 5,108, 92,189,168,216,219,205,205,205,
- 23,212,172,230,233,186,253,192, 57, 52,109,210, 64,176,227,192,121, 52,107,210, 80,176,253,192, 57, 52,107,218, 88,176,227,192,
- 57, 52,107,210, 72,184,227,192, 57,212,175, 93,205,237, 78,210,243, 5, 0,198, 22,255,206,133,210,168, 77, 78, 26,185, 11, 68,
-249, 21, 64,216,232,209, 0,144, 47,176,202, 2,161, 80,232, 18, 29, 29,109, 87,218,117,165, 89, 9,114, 45, 87,143,244,122, 61,
-226,227,227, 73,106,106, 42,181,176,176,232,122,110,227,140,163,109, 27,249, 37, 3,192,179,103,207,172,150, 44, 89,220,117,255,
-163,116, 40,239,173, 35,127,158,184,206,247,239,220,244,209,241,165,131,107,245,236,217,243, 73, 81,188,106,181, 58,180, 70,141,
- 26, 52,247,191,179, 68, 34, 17, 21,202, 19, 78,238,238,238,159, 88,169, 13,232, 58, 92,115,247,238,221,177,222,222,222,240,244,
-244,188, 83,175, 94, 61, 51,185, 92,142,115,231,206,193,203,203,203,199,204,204,236,254,193,131, 7,133, 83,167, 78,245,219,182,
-109, 27, 0,140, 51, 32,127,182,106,222,188,249,190, 83,167, 78, 73, 69, 34, 17,148, 74, 37, 94,190,124, 9, 11, 11, 11,136,197,
- 98,116,233,210,133,109,216,176,161,117,179,102,205, 14,231, 54, 2, 12,158,209,164, 82,169,232,140, 25, 51, 96, 98, 98, 2, 19,
- 19, 19,200,229,114,200,229,114, 40,164, 32, 27, 38,148,151,141,223,148, 42,155, 56,119,195,210, 93,191,207,187, 90,190,124,249,
- 57,225,225,225,169,101,205, 11,202, 27, 55,160,120,246, 12, 40,240,237, 26, 10,115, 19, 43, 76,155, 54,173, 52, 11, 20, 68, 34,
- 17, 26, 52,104, 80, 42,159,181,181,245, 17,129, 64,240, 81,139,148, 82, 42,157, 54,109, 26,247,230,205, 27, 57,195, 48,114,158,
-231, 49,109,218, 52, 78,175,215, 75,237,237,237,239,240, 60, 31,151,144,144,208,189, 52,110, 74,169,154, 16,242, 35,195, 48,107,
- 36, 18,137,160, 98,197,138, 31,102,207,158,125, 55,215,122, 9, 74, 41, 83,177, 98,197,186, 50,153,172,130, 90,173,214, 3,248,
-209,104,189, 50,162, 4,212,202, 49, 2,231, 67, 3, 64,156,103,176,207,169,237, 96, 83,232, 56, 0, 36,230, 54, 16,237,139,217,
- 79, 2, 16, 8,160, 42, 0,187,220,115, 15, 1, 36,127, 21,129, 69, 8,161, 5, 62,138,252, 10,197,212,212, 20, 15, 31, 62, 4,
- 33, 4,166,166,166, 48, 51, 51,131,185,185, 57,210,211,211, 17, 24, 24,136,160,160, 32,132,133,133,129, 16, 2, 87, 87, 87,228,
-125, 56, 5,184,242, 11,182, 61,191,158,130, 84, 33, 1, 33, 64,205, 22,213, 81,189,137, 47,234, 60, 8,153,224,228,228,180, 41,
- 58, 58, 58,152, 16, 34,240,245,245, 29, 86,191,126,125,172, 92,185, 18,106,181,122,101, 81,226,170, 32,231,141,151,186,218,185,
-149,210,148,221,231,222,153, 12,104,231,150, 29, 29, 29,189,162,172,145, 80,184, 0, 78, 76, 76, 52,120,173, 60,158,231,145,146,
-146, 82, 34,103, 97,139,192,170, 53,235, 44, 50,210,226,176,240,151,221,208,233,116,152, 60,121, 50,120,158,207,223, 82, 83, 83,
- 13, 10, 39,229, 10, 25, 21,152,156,141, 48, 0, 17, 0,229,251,228,232,137,240,125,235, 64, 40, 64, 56, 0,133,222,171, 48, 39,
- 33, 68,202,138,100,251,231,253,178,214,226, 73, 80, 36,142, 95,126, 2,109,122, 20, 98,158, 29, 5, 0,184, 54,232,135, 3,106,
- 22,245,170,187,225,135,153,203, 44,103,253, 48,112, 63, 33,196,179, 96,119,161, 33, 21, 26,165, 28, 22, 46, 88,128, 77,107, 87,
- 98,217,202,181, 72, 79, 75,133, 80,104, 3, 0,208,235, 57,112,133,222,237,147,119,167,180,221,172, 41, 35,201,154,205,135,225,
- 91,197, 1, 39, 47,222, 65,109,159, 10, 56,123,229, 1,234, 87,171,132,243,215, 31,163,126,245,202,184,126,239, 37, 38,143, 25,
- 68,110,159,221,209,174, 44,105,180,122,245, 58,139,140,244, 56,156, 90,180, 19,241,235,215,227,195,216,177,168,155,123,205, 3,
- 66, 32,114,113, 1, 68,165,167, 81, 97,188,122,245, 10,106,181,186,168,214, 61,188,188,188, 74, 77,119,165, 82,249, 88,175,215,
-211,184,184, 56, 18, 23, 23, 7,185, 92, 78, 94,190, 12,224,124,124,124,187,209,160, 67,155, 1, 96,201,146,197,221, 14, 60, 78,
- 71,246,157,181, 80,222,253, 13,162, 74,207,153, 77,243, 71,106, 71,204,221,248,184, 64,229,246, 81, 56, 99, 98, 98,190,201,251,
-239,234,234, 26,244,230,205,155,170,121, 93,202,185, 93,133, 34,189, 94,239,158,215,109,168,215,235,161, 86,171,209,170, 85, 43,
-182,164,119,183,180,180,172,239,229,229,133, 39, 79,158, 96,237,218,181, 86,205,155, 55,199,219,183,111, 65, 8,193,226,197,139,
-137,183,183,183, 48, 49, 49, 17,109,219,182,197,145, 35, 71, 26,148, 22,159,132, 16, 83,185, 92,190,237,228,201,147, 82,134, 97,
-144,145,145, 1,158,231,209,168, 81, 35, 48, 12,131,128,128, 0,204,156, 57, 19, 71,142, 28,193,177, 99,199,100,181,106,213,218,
- 70, 8,241, 42,216,125, 95, 66, 26, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49, 50, 85,192,136,
- 85, 31,212,172,212,134,247,169,209,200,109,200,248,197,204,138,217, 67,175, 0, 56,110,104,158, 7,114,198, 92,173,217,190,125,
-109,255,180, 52, 6, 0,182, 16,194,107, 41, 93,102,200,247, 14, 0, 25,170, 84, 84,112,115,193,225,125,199,208,163,111,215, 34,
-197,149, 80, 40,130, 72, 40,132,169,149, 73,169,156, 34,145,200, 62, 40, 40,200, 90, 40, 20,230, 91,228,117, 58, 93,220,236,217,
-179,109, 59,116,232, 96,122,246,236, 89,166, 67,135, 14,188,141,141, 77,214,147, 39, 79,226,181, 90,173,117,195,134, 13, 13,206,
-243,148,210,223,107,212,168, 81,243,232,209,163, 67,167, 77,155,246,104,202,148, 41, 11, 11,158, 95,190,124,249,130, 51,103,206,
- 84,232,214,173,219,174,167, 79,159,254, 94,150, 50,228, 75,203,121, 35,231, 63,143,179, 56, 45,146, 11,123, 66,200,169, 2,231,
- 59,230,237, 79,155, 54,109,198,146, 37, 75, 94, 18, 66, 78, 21, 60,158,119, 93, 46,247,169,162,246,115,239,181,154, 62,125,186,
-239,210,165, 75, 23,251,251,251,239,187,115,231,206,251,175, 38,176,242, 94,164,224,203, 21,138, 72,164,167,167, 35, 61, 61, 29,
- 17, 17, 17,216,176, 97, 67,238,135, 44,132, 64, 32,128, 64, 32,200, 31,175, 80, 28, 46,157,188,249, 27,128,223,106,213,170, 37,
-124,113,247,224,217,159, 54,141,111, 89,187, 85, 77,246,241,229, 23, 61, 1,252, 12,224,155, 65,131, 6,217, 0,192,206,157, 59,
- 19, 1,156,253,191,144,200,148,210,131,193,193,193, 63, 56, 58, 58,230,143, 65, 41,216, 77,168,215,235, 33,149, 74,145, 55, 86,
- 69,165, 82, 97,195,134, 13,122, 74,233,193, 18, 56,241,230,229, 21, 4,191,188,154,115, 31,207,131,231,254,186,127,222,188,121,
- 5,167,190, 98,116,174,165,164, 84,113, 87, 84,156,211, 66,191,133,142,127, 34,202, 62,233,134, 16,141,239, 57,112,172, 35, 79,
- 4, 56,113,229, 41,132, 66, 33,248, 2,214, 75, 33,155,211, 58,126,249, 54, 26, 78,246, 62,232,220,111,164,195,209, 93,235,198,
- 3,248,165,172,113,237,233,231,143, 9, 63,252,128,205,155, 54, 97,230,220, 5,249,234, 92,207,113,208,151, 26, 78,134,105, 88,
-219, 27,153, 73,145, 96, 89, 22, 13,106,184,129,101, 89, 52,174,237, 1,150,101,209,168, 78, 85, 8, 4, 2, 52,171,239,141, 42,
- 85,170, 64, 32, 16, 48,165,164, 59,222,188,188,140,224,151,215, 10,136,221,156, 52,209,198,196,124,114,189, 46, 38, 6,180,188,
-117, 89,243, 22,134, 13, 27,150, 26, 17, 17,161, 45,124,174, 92,185,114,162, 27, 55,110, 88, 20,211, 61,151, 15,153, 76, 86, 75,
- 32, 16, 60, 78, 78, 78,230, 77, 76, 76, 24,158,231,120, 31, 31, 95,246,220,198, 25, 71,243,174,153, 62,125,198,209,222,181,204,
-186,237, 62,120,138,138, 42, 54, 34, 68, 40,209,127, 55,119,163, 72, 40,146, 25,228,161, 62,175,187,240,245,235,215, 40, 45, 60,
- 69, 20,130, 31, 33, 37, 37,101,144,151,151,215,141,223,126,251,205,138, 16,130,155, 55,111,130,101,217,252, 45, 36, 36, 4, 12,
-195,224,167,159,126,210,166,167,167, 15, 47,181,192, 18, 8,126, 56,124,248,176,185, 88, 44, 70, 70, 70, 70,254,119,195,178, 44,
-130,130,130,176, 98,197, 10, 12, 26, 52, 8,225,225,225,112,114,114,194,228,201,147, 21, 75,151, 46,253, 1,192, 2, 3, 94,253,
-185, 70,163,169,109, 98, 98, 2,169, 84,138, 60,161, 5, 0, 23, 94, 10, 3,178,179,179,171,217,216,216, 56,216, 94, 63,117,162,
- 65,243,206,126,214,182,142,254,121, 2,203, 80,188, 3, 54,189,215,235,103,125,115,244,168,221,237,163, 71,249,187, 39, 78, 68,
- 74, 51, 51, 55, 26, 76,160, 99,241,225, 93, 36,106,213,170,133,199,143, 31,163, 86,173, 90, 5,197, 18,196, 98, 49, 68, 34, 17,
- 68, 34, 17,108, 44, 12, 26, 42, 65, 25,134,193,237,219, 31, 47, 55,218,184,113,227,228,171, 87,175, 42, 0,224,195,135, 15,180,
- 99,199,142,169,129,129,129,112,119, 47,121, 24,154,131,131,195, 13,150,101, 43, 22,250, 86, 45,187,119,239,142,148,148,148,246,
-221,187,119,111,148,123, 44,234,208,161, 67, 3, 0, 64, 44, 22,131, 97, 24, 14, 70,252,231, 81,154, 22, 41, 40,144, 10, 11,173,
- 37, 75,150,116, 44,124,172,160,152, 42,234,127,193,123,151, 46, 93,186,184, 0,183,242,107,188,143,160,160,114, 44,173,176, 44,
- 9,165, 9,172, 60, 60,126,252, 88,231,236,236,188, 57,248,105, 88, 75,183,234,174,144,201, 37,109, 8, 33,191, 73, 36,146, 73,
- 3, 7, 14,196,189,123,247, 16, 16, 16,176,245, 75,151, 61,169, 86,173,218,121,137, 68, 82,161,152,238,144, 15, 47, 94,188,104,
- 91, 76,133, 48, 55,119, 76, 89,177,131,220, 11,142, 7, 43, 56,200,189,216, 12,193, 83,232,180, 58,100,101, 43,255,170,188,115,
- 5, 86, 86, 86, 22,250,244,233,243,145, 5, 43, 62, 62,222, 16,165,143, 21,199,143,227,226,193,131,104,239,231,135, 35, 15, 30,
- 96,233,192,111,225, 89,193, 25,148, 35,160, 4, 8,223,187, 14, 73,233,153,216,115,249, 54,146, 51,178,209,191,113, 99,184,155,
-217,148,204, 43, 20,181,174, 91,223, 95,116,233, 78, 32,132, 66, 1, 24,240,160,186,108, 56,121, 53, 3,203, 48, 48,183,175, 4,
-145, 80, 8,161, 80,128,144,136, 68,120,249,214, 17,159, 18, 75, 91,127,142,192, 42, 95,161, 50,120,142,195,160, 65,131,176,111,
-223, 62, 88, 59, 84,128,121, 57, 95,252,188,114, 19,218,183,106, 92,234,251,231,181,216, 5, 2, 1, 88,150,253,228, 55,239,191,
- 33,214, 72,202, 83,104, 11,167, 17, 79, 65, 1,184, 44, 90, 4,151, 69,139,240, 32,247,153,222, 89, 89, 80, 42,149, 64, 61,159,
- 50,137, 43,141, 70,131,136,136, 8,109, 76, 76,140,125, 17, 21, 83,156, 70,163, 41, 85,208,236,216,177,227,249,224,193,131,107,
- 91, 89, 89, 61,122,254,236,153,174,186,159,159,240,236,134, 25,199,242,186, 7, 1,192,207,207, 47,121,198,140, 25,199, 6,244,
-234,216,245,247,105,125,185,239, 23,236, 18, 72,100,178,218, 29,167,148, 60,208,189,192,247, 17, 90,189,122,117,106,200,181,217,
-217,217,177, 37,164, 81, 39, 0,243,107,214,172,105,214,188,121,115,220,184,113, 3, 61,122,244, 80,107,181,218, 96, 0,232,208,
-161,131,199,158, 61,123,196,129,129,129,176,181,181, 21,126,248,240, 97, 27, 33,164,196,129,239, 98,177,184, 89,157, 58,117, 24,
-181, 90,253,137,184, 90,186,116, 41,250,245,235, 7, 15, 15, 15,240, 60,143,204,204, 76, 52,111,222, 92,184,118,237,218,102, 6,
- 10,172, 9,158,158,158, 43,144, 51,139,176, 96, 89,248, 10,192,143,185,214,237,216,142, 61, 6,189,108,220,170,123,237,138, 85,
-124, 29, 75, 35,180,183,183,159,206, 48, 76,111,158,231,217,244,244,244, 8, 13, 33, 85,188, 43, 86,180,111,216,181, 43,210,132,
- 66,118,205,229,203, 76, 92,102,166, 2,128, 65, 93,141, 74, 93, 38, 42,184,229, 12,229,235,209,183, 43, 30, 63,126,140,158,253,
-186, 65, 36, 18, 65, 32, 16,230,124,155,162, 28, 11,150,133,141,169, 97,154, 77,167,251, 36,175, 82, 74, 97,102,102,150,223,147,
-145,119, 76,167,211,149, 88,249, 1,112, 63,176, 96,182,157,204,204, 28,156, 78, 7,159,174, 61,243,243,244,253, 45,191,203,192,
-243,178,212, 15,161, 24,119,240,164, 16, 70, 24, 81,140, 21,171, 36, 45, 82, 80, 32,125,133,103,157,154, 54,109,218, 12, 0,116,
-218,180,105, 51,242,246,151, 44, 89,162, 4, 16,245, 85, 4,214,151,138,171,188,110,132,146,208,162, 69,139,113,166,166,166,107,
- 1,160,118,237,218,136,184, 23,133,136,123, 81,240,170,234,211,176,166, 95,237,180,126,253,250,193,218,218, 26, 83,166, 76,161,
- 0,182,150,245,249, 33,111, 94, 42, 0, 80, 39, 39,167, 41, 0,224,228,228,228,247,224,193, 3,219,135, 15, 31,162, 78,157,191,
-102, 20,106,181, 90, 52,106,212,168,164,138, 48, 3, 57, 99,169, 38,126, 61, 85,206, 67,171,213, 34, 59, 91, 9,141, 70, 11,189,
-142,135, 94,175, 71, 45, 31, 83,236,218, 52, 45,231,152, 62,207, 90,150, 99, 37,115,113, 48, 69,173,106, 14, 58,134, 33,202,135,
-207, 98,204,138,226,213,104, 52,120,254,225, 3,158,133,133, 1, 0, 58, 47, 89, 86, 98, 56,118, 93,190, 1,111,111,239,210, 66,
-235,230,226,228,128,232,139,207,115, 10,109,101, 4, 30,222, 58, 0, 83, 83, 5, 0,192,167,105,127,136, 68, 57, 2, 43, 75,169,
-133, 77,213,114, 32,148, 22, 59,189, 95,110,229,120, 94, 32,146, 86,160, 28, 15, 74,121, 80,158, 3,165, 60, 36,166,214, 38, 99,
- 71, 13, 1,207,115,168, 91,183, 46, 8,203,130,211,169,209,171, 83,107,164,164,101,192,218,194,204,160,184, 21,137, 68,104,218,
-180,169,172,184,243,111,223,190, 85, 22, 20,100, 37,167,145, 14, 89, 89, 74,168,213,106,104, 53,122,104,117,122,240,149, 69, 88,
- 56,235, 91,232,181,122,100,247,245,207, 57,246, 67, 55,104, 53, 58,132,155, 48,140,159,183,173,142, 1, 81, 62, 9,140, 55, 43,
- 77, 96,229,137,130,226, 80,212,152,191, 98, 68,214,179,193,131, 7,215,170,238,231,247,184,119, 43,191, 95, 95, 4,188,140,126,
- 17,240,242,147,235, 42,120,248,133,126,191,116,223,100,161, 72, 86,203, 80,113, 5,124,220, 93,248,133,152,145,145,145, 81, 93,
-161, 80,224,205,155, 55, 96, 89, 22,132,144,183,148,210,234, 0, 48,114,228,200,119, 2,129,192,149,101, 89,172, 95,191,158, 8,
- 4,130,106,254,254,254, 51, 0, 28, 40,161, 33,231,101,106,106,250,145,245, 74, 36, 18, 97,218,180,105, 24, 48, 96, 64,190,184,
- 18,137, 68,216,177, 99, 7,106,215,174, 13,141, 70,227,101,160, 8,126, 8,160,177, 1, 22, 62,146, 43,202, 75, 21,161,122,189,
-126,112, 82,239,222, 85,112,253, 58, 26,186,186,122,215,170, 85, 11, 90,237, 95, 6,204,202,149, 43,151,203,200,200,136, 37,132,
-252, 9,224,119, 74,233,211, 18,249, 84, 20, 31,222, 69,230, 53, 86, 81,183,110,221,124,139, 85, 65,235,149, 72, 36,130, 76,164,
- 40,179,192,162,148, 34, 43, 43,139, 57,119,238,156,141,151,151, 23, 1, 0,111,111,111,114,239,222, 61, 43,153, 76,150,232,228,
-228, 84,106,195, 87,102,102,142, 29,131,251, 0, 0,230,180,106,151,223, 32, 58, 55,127, 6,132, 66, 33, 90, 78,153,241, 73,190,
-231,121,158,133, 17, 70,113,101,128, 22,249, 90,226,170,176, 5,107,201,146, 37, 47,151, 44, 89,242,137, 53,236,171, 89,176, 12,
- 49,249, 27,218, 10, 42,140,149, 43, 87,162, 90,181,106, 37, 86, 64,107,215,174,197,238,221,187, 87, 82, 74, 67,202,250,252,142,
- 45,107,250, 96,213,209,151,174, 30, 62, 4, 0, 22,252,208,137,201,202,202,194,237,219,183, 97,110,110,142,183,111,223, 26,154,
-192,166,230,230,230,243, 25,134,233,197, 22, 30,217, 95,180,176,228,120,158, 63,152,150,150, 86,172,155, 6, 74, 1,173, 78,143,
-172,108, 21, 52, 26, 13,126,248,105, 93,169,225, 88, 2, 16,173, 38, 67,208,180,137,191,172, 56, 11, 78, 93,223,166, 24, 51, 64,
-254, 73,165,205,230,184, 2, 67,141,186, 57,107, 75, 63,185, 31, 0, 74, 1,142, 3,108,236,172,176,117,223,175, 37, 70,129,158,
-227,115, 91,195, 28, 50,213, 28,188,234,119, 68,228,171,235,249, 22, 35,177, 40,167,107, 88, 36, 20,130,167, 36,199,123, 67,113,
- 2, 72, 44,171,144, 18, 19,226,190,233,212, 11,140,232, 88, 13,135, 46, 61, 71,207, 86,213,113,245,126, 32,154,215,243,198,203,
-224, 48,248,184, 87,196,250,109, 7, 65, 41, 50,254, 88,245,115,236, 95, 21,153,254,131, 33, 22,172,123,247,238, 41, 11, 91,173,
- 10,254,210,210,235,193,156,174,192, 92, 11,150, 82,165,198,148,233, 6,185,227,201, 73,163,198,245,101,134, 92, 92,146,133,202,
- 16, 1, 86,216,146,133, 82,220,172, 84, 6, 80, 27,152,250,127, 89, 96,114, 28,135,211,167, 79,231,167, 71, 81,233, 88, 48,237,
- 12, 16, 55,248,240,225, 3, 2, 2, 2,224,239,239,143,180,180, 52, 8, 25, 6,147, 95,188,128,247,192,129,208,136, 68,224,121,
- 30, 98,177, 24, 35, 71,142, 52, 56, 62,203, 88, 42,231,142, 99,227,104, 41,101,201,175, 29, 59,118,172,242, 38, 43, 11, 47,131,
-130,208,106,222, 60, 0,192,233,211,167, 63,202, 19,147, 38, 77, 18, 7, 6, 6, 14,123,244,232,209, 48, 66,200, 74, 74,233,228,
-226, 56,181, 84,149, 63, 6,171,119,255, 30,168,226, 85, 25,187,183,237,205, 63, 63,233,167, 9, 16, 10, 69, 16, 10,133,176,176,
-176, 48,232,109, 10,150,221,217,217,217,204,161, 67,135, 92,154, 53,107, 38, 26, 49, 98, 4, 1,128, 77,155, 54, 49, 91,182,108,
-145, 95,184,112, 65,100,110,110, 30, 83,170,168,212,106, 63, 73, 99, 66, 8,132, 66, 33, 68, 98, 17,192,243, 32,132,200,151, 47,
- 95,190,224,229,203,151,117, 60, 61, 61,161, 86,171, 7, 18, 66,158, 24,253, 96, 25, 81,154, 22, 41,106, 44, 85,174, 21,170, 56,
- 36, 20, 28,151, 85,156, 64, 43, 56, 38, 11,192, 87,153,108, 33, 40, 77, 84,177, 44, 91,170,117,138, 97,152, 82,187, 8, 39, 77,
-154, 4, 83, 83,211,226, 42, 30,250,226,197,139,192,152,152,152, 77,148,210,117,159,243, 34,167, 46, 63,121, 57,127, 98,183, 12,
-228,246,157, 90, 88, 88, 36,182,104,209, 34, 19,128,246,192,129,143, 27,196,106,181,186,216,138,219,220,220,124,254,150, 45, 91,
-198,119,237,218,149, 41,236, 42,160, 96, 55, 94,222,166,211,233,112,224,192,129,241, 83,167, 78, 69,113, 86,175,188,202, 59, 59,
- 75, 9,101,238, 0,231,119, 1,135, 12, 45,204,139, 61,165,176,116,130,139, 43, 87,108, 37,194,136,114,198, 8, 57, 84,240,203,
- 63,102,106, 42, 5, 87, 2, 39, 33, 76, 72, 88,120,180,115, 57, 7, 43,188,139, 72,128,125,197,106, 72,137,250, 43, 30, 4, 2,
- 22,194,220, 46, 66, 11, 51, 57, 18,226,227,193, 48,108,137,130,248,231, 61, 79,112, 63, 32, 12,135, 47, 61,133, 86,149,133, 85,
- 59,207, 65,171,206,132, 86,149, 5,173, 42,231,119,241,212,239, 64, 8, 98,181,170, 76,143, 50,101, 96,129, 0,245,234,213, 43,
- 86,224, 68, 69, 69, 25,104,193,162,249, 22, 44,165,170,140,105,100, 88, 75,169, 68, 11, 85,222,249,207, 21, 4,121,174, 27,100,
- 50, 89,237, 29, 59,138,119,199, 80, 20, 28, 29, 29,207, 42, 20,138, 74,134, 94, 95, 6,167,163,139, 45, 44, 44,230,123,122,122,
-122,173, 90,181, 74,200,178, 44, 90,182,108,233,241,221,119,223,125, 0,128,106,213,170, 57,229,149, 49,223,127,255, 61,189,119,
-239, 94, 64, 78,219,162,120,136,197,226, 32,115,115,243,218, 45, 90,180, 64, 90, 90, 26, 34, 34, 34, 32,151,203,225,253,235,175,
-120,241,253,247,240,219,176, 1, 76,139, 22, 32,132, 64, 44, 22,227,197,139, 23,144,201,100, 65, 37, 20,230,245, 0, 44, 3,208,
- 16,127,117, 11, 82, 0,183, 1,252, 68, 41,189, 95, 68,121,199, 0, 0,199,243,165, 37,214,183, 83,166, 76, 65,170, 80, 8,116,
-232, 0, 81, 72, 8,180, 90, 45,252,253,253, 81,187,118,142, 39, 14,127,127,127, 8, 4, 2, 84,175, 94, 29, 78, 78, 78, 88,191,
-126,253,183,248,120,102,245,199,101, 87,166, 14, 31,222, 69,194,223,223, 63,223, 82,213,161, 67,135,124, 11,150, 80, 40,204,183,
-100, 17,142, 53,168, 50, 43, 40,176,116, 58, 29, 17,137, 68,130, 81,163, 70,145,225,195,135, 83,157, 78,199,139, 68, 34,102,243,
-230,205,228,222,189,123, 2,165, 82, 89,106, 3,220,183, 91, 47,204,105,157, 99, 4,253,185,146, 45,132, 34, 33,196, 34, 17,166,
- 4, 69,230,167,139,217,142,125,226,165, 75,151,246,244,244,244,204,233,110, 7, 4, 70, 63, 88, 70,148, 98,224, 73, 40, 36,142,
- 52, 5,246, 19, 0,144,220,253,132, 2, 66, 42, 1, 57, 51, 2,235, 20,186, 54,239,188,166,208,111,222,249,103, 95,227,125, 74,
-106, 1, 7,223,189,123,215,189, 86,173, 90, 8, 15, 15,255,100,102, 91, 94,133, 37,151,203, 33,147,201,112,231,206, 29, 0, 8,
- 46,142,236,202,149, 43,191, 33,199, 75, 50, 0,192,201,201,201,191,121,239,102,119,234,182,171,131, 61, 75,246,166,197,196,196,
- 84,207,243,129, 67, 8, 33, 78, 78, 78, 3,132, 98, 65, 31, 87,223,242, 77,193,243,203, 46,157,184, 53,175,164, 23,113,245,240,
-201, 4,160, 44, 48,139,112,197,231, 68, 8,195, 48,189,186,118,237,202, 4, 6, 6,162, 79,159, 62,216,189,123,119,177,215, 14,
- 24, 48, 0,251,246,237, 67,215,174, 93,153,233,211,167,247, 42, 77, 96,229, 88, 71, 52, 95, 45, 51,190, 9,126,134, 93,123, 55,
- 23, 59,198,200,206,206, 22, 0, 16, 31,159,144,127,172,118,237,146, 29, 49,243,122,205,197, 39,143, 30,248, 55,104,210, 82, 20,
- 17,151, 10, 94,175,134, 42, 35,241,175, 22,110,106, 28,168, 94, 5,145,137, 21, 28,108,204,241,248,238, 5,141, 86,163,186, 88,
- 18,231,248,174, 62,248,190,147, 23, 64,121,116,155,188, 21,167,214,141,203,239,222,105,212, 99, 2, 46, 31, 88, 99,240, 24,190,
-194, 16, 10,133,120,241,226,133,178, 56,235, 21,203,178,165,250,212,250,203,202,168, 67,118,182, 18,217, 74,213, 87, 75, 35, 66,
-136,173,189,189,253, 31, 86, 86, 86,210,162, 4, 20, 33,196,214,214,214,246, 15,107,107,107,169,161, 93,132,197,137,171, 92,191,
- 88,143, 6, 15, 30, 92, 38,145, 37,145, 72, 42, 5, 7, 7,231, 59, 25, 45,233, 87,163,209,160,121,243,230, 2, 3, 11,203,147,
-132,144,247,142,142,142,183,189,189,189,205,223,189,123,135,189,123,247,138,132, 66, 97,249,188,242, 35, 35, 35, 3, 44,203, 34,
- 62, 62, 94, 7, 96,104,105, 93,100,106,181,250,250,245,235,215,107,116,234,212,137, 13, 10, 10, 2,203,178, 57,225,242,247,135,
-223,134, 13, 8,152, 56, 17, 77,195,194,160,210,106, 33,149, 74,113,254,252,121,109,118,118,246,245,226,248,100, 50,217,166,208,
-208, 80, 31,169, 84, 10,173, 86, 11,158,231,193, 48, 12, 17, 8, 4,141, 44, 44, 44,214, 2,168,243,241, 55,101,103, 55,114,210,
- 47, 85, 57,189,158,139, 9,127,151, 80, 90, 28, 36, 37, 37,225,228,201,147,168, 95,191, 62,154, 54,109,138,168,168, 40,132,132,
-132,160, 67,135, 14,249,215, 60,123,246, 12, 79,158, 60,129,155,155, 91,233, 22, 60, 86, 7, 55,207, 74, 16, 9, 69, 16,138,132,
- 57,191, 66, 97,238,150,243, 63,239, 88,158,207,194,178, 88,176, 0, 64,161, 80,228,229, 11,190, 82,165, 74, 49, 49, 49, 49,142,
- 0,216, 60, 7,172,134, 52, 86,242,234,136, 60,113, 37, 18,139,242, 45, 89, 0,144,154,154,170,234,218,181,235,159,106,181,122,
- 8, 62, 99, 69, 17, 35,254,147,120,248,127,116,239,223, 34,176,218, 55,104,208, 96, 67,191,126,253, 90,174, 94,189, 26, 10,133,
- 2, 49, 49, 49,249, 21,161, 88, 44, 70,185,114,229,144,156,156,140,141, 27, 55, 34, 50, 50,242, 10,128,145,134, 62, 56, 38, 38,
-230,222,219,167,193, 73,205,123, 54,176,246,105, 80,213, 34, 34, 56,178, 62,128, 59,185,226,106,107,191, 73,237,135, 52,239, 94,
- 23, 34,177, 16, 17,111, 99,255,191, 69, 8,203,178, 44, 33, 4,125,250,244, 49,232,250,190,125,251,226,250,245,235, 40,169, 59,
-145,207,179, 96,101,171,144,165,252,122,141,179, 49,227, 7, 96,204,248, 1,249, 34,194,144, 46,150, 28,113,187,191, 4,129,165,
- 93,125,106,255,198, 17, 53,235,250, 87,168,237, 83, 9,247, 31, 61,197,158, 13,127, 25, 21,182,253,182, 0,191,108,187,130,114,
-246,150,208,170,179,112,246,208,230, 88,173, 58,123,245,103, 26,225,114, 68, 45, 33, 48,208,191,228, 71, 86,211, 60,129,229,235,
-235, 91,172, 5, 43, 57, 57, 89, 89, 90,133,144,159, 70, 26, 29, 50,179,148, 80,102,127, 29,129, 69, 8,241,107,212,168,209,197,
-131, 7, 15, 90,219,217,217, 33, 58, 58,250, 35,129, 69, 8,241,107,216,176,225,197,131, 7, 15, 90,219,219,219, 35, 34, 34,194,
- 96,247, 32, 69,136, 43, 36, 36, 36,144,148,148, 20,222,210,210,178, 76, 34,139, 97, 24,168,213,106,188,122,245,202,208,199, 26,
- 60,227,203,220,220,124,199,190,125,251,204, 19, 19, 19,193,178, 44, 94,189,122,245,209, 44,194,188,109,235,214,173,162,110,221,
-186,109, 1, 80,163, 36, 62,189, 94,191,114,192,128, 1,195,162,162,162, 44,237,236,236, 16, 19, 19, 3,177, 88, 12, 74, 41, 72,
-243,230,104,252,254, 61,180, 28, 7,153, 76,134, 55,111,222, 96,211,166, 77, 89,106,181,122,101, 49,233, 35, 54, 49, 49,113, 23,
-137, 68,232,223,191,255, 71,231,118,238,220,137,206,181,217,218, 35, 90, 75, 50,245,144,170,227,100,223,156,101, 89,150,140,156,
-178,204,163, 94,147, 14,190,175, 3,238,191, 75,136,139,188, 93,202,235,235, 52, 26, 13, 60, 61, 61,241,240,225, 67, 92,186,116,
- 9, 45, 90,180, 64,211,166, 77,241,252,249,115, 92,184,112, 1, 79,158, 60, 1, 33, 4,214,214,214,121,195, 44, 74, 28,107,161,
-201,210, 35, 62, 42,233, 19,107, 85,225,125,145, 72, 4,181, 88,107, 80, 26, 5, 5, 5,225,225,195,156,250, 39, 59, 59, 27, 2,
-129, 64, 63,101,202, 20, 48, 12, 67, 3, 2, 2, 96,103,103, 71,127,250,233, 39, 78, 32, 16,232,195,195,195, 13,205,251, 57,214,
-170, 92,113, 37, 16, 9, 63, 18,102, 60,207,103, 60,123,246,108, 4, 33,228, 57, 33, 36,207, 27,170,209, 15,150, 17,255, 42, 8,
- 74,104,133,188, 7,208,138, 16,242,237,177, 99,199, 86,174, 93,187,214,182, 99,199,142, 72, 73, 73, 65,133, 10, 21,224,232,232,
-136, 83,167, 78,225,204,153, 51,137, 28,199, 77,166,148,238, 46,226, 35,107, 85,156,175, 12, 74, 41,117,114,114, 58,168,206,204,
-252,190, 86, 83, 47, 92, 57,112,115,137,163,163,227, 72,103,103,231, 31, 6,207,232, 50,164, 89,215, 58,120,243, 36, 20,247, 46,
-188, 64, 92,120, 34, 6, 55,254,169, 68,206,194,131,220, 45, 44, 44,134,153,152,152,136, 1,104,139,104, 5,127, 52,139,176, 32,
- 39,199,113,156, 70,163,193,254,253,251, 13, 18, 89,123,247,238,133, 74,165, 2, 87,168, 31,181, 32, 39,229, 41, 17, 8, 37,112,
- 42,231, 9,173, 54, 11, 60,255,121,214,154,130,156,132, 16, 48, 12,131,119, 98, 49,236, 18, 19,113,255,254,125,131, 56, 10,182,
-156,139,138, 79, 74,169,138, 16,210,127,205,162, 41,167,198, 78, 91,102,209,162, 65, 13,204,249,117, 39,180,218,109, 96, 88, 6,
- 50,137, 8,181,234, 54, 4, 11, 53,254, 88,250, 99,106,118,122, 74,255,194, 75,230,124,194, 89, 82, 79, 10, 5, 56,158,199,165,
- 27, 15, 12,126,247,252, 90,158,227, 32, 16, 8,240,246,237, 91,101, 81,179, 7, 89, 54,167, 59,147, 97,152, 34, 91,221, 31,167,
- 17, 79,132, 34, 41,202, 85,240,134, 70,157,249, 85,210,200,206,206,238,199,163, 71,143, 90,231,185, 60,120,254,252, 57, 8, 33,
-175, 10, 88, 67,126, 60,122,244,168,181, 82,169, 68, 64, 64, 64,222,146, 80,175,202,242, 29,229, 89,174, 18, 18, 18, 72, 76, 76,
- 12, 76, 76, 76,152,231,207,159,171,171, 87,175,254, 8, 37,175,212,144,207,169, 82,169,194,138, 27, 31,169, 82,169,156,165, 82,
-169,176,208,189, 78,238,238,238,111, 10,119, 21, 22, 21,206,180,180,180,251, 83,167, 78,173,213,174, 93, 59,252,248,227,143,201,
-150,150,150,166,127,252,241,135,128,101, 89, 50,118,236, 88, 46, 62, 62, 62,115,243,230,205,230,199,142, 29, 67,106,106,234,157,
-210,222,157, 82,154, 65, 8, 25,209,160, 65,131,157,231,206,157, 51,113,119,119, 71,122,122, 58, 40,165,216,177, 99, 7,198,142,
- 29, 11,169, 84,138, 55,111,222,160,115,231,206,217,217,217,217, 35, 10,143,141, 44,192, 73, 8, 33,148,231,121,204,158, 61, 59,
-223,169,104,158,147, 81, 83, 25,193,166, 73,149,229, 19, 54,167,201,191,157,179,121, 32, 0,112,122, 61,247, 58,224,254,187, 29,
-235,230, 92, 21,137, 68, 55, 74, 73,163,153, 19, 38, 76,248,163, 67,135, 14, 50,133, 66,129,228,228,100,220,190,125, 27,119,239,
-222,197,189,123,247,160,209,104, 96,109,109, 13, 75, 75, 75,196,196,196, 32, 40, 40, 72, 9, 96,102, 73,156, 98,185, 16,174, 85,
-243,102,242,254,101,189,202,223, 23, 9, 33, 20,252, 53,147,208,144,188,212,164, 73, 19,212,171, 87, 47, 79,248,112, 31, 62,124,
-136, 81,171,213,164,128,216,143,202, 19,226,229,203,151,215,111,221,186,149,150,196,121,111,211,122,156, 91, 56, 19, 98,145, 8,
-147, 95, 69,228,139,173,157, 45,106, 66, 40, 22,193,171, 83,143,130,245,192,239,132,144,109,185,255,213,134,228,249, 47,104,240,
- 24, 57,255,225,156,255, 25,129, 85,224, 3,216, 67, 8, 57,251,221,119,223, 45,245,243,243,251,110,213,170, 85, 68, 36, 18, 97,
-222,188,121, 52, 58, 58,122,123,110,171, 35,229,115, 30, 78, 41,221,126,237,200,157,209,131,166,117, 37,147, 86, 15,110,244,232,
-114, 64, 80,181, 6,238,168,214,192, 29,143,174, 4, 98,221,140,189,187, 57, 29, 55, 59, 38, 38,166,180,102,147,186, 85,195,170,
-133, 7,185, 91, 95,191,122,217,186,172,179, 8,121,158, 63,184,119,239,222,241,221,187,119,103, 30, 60,120,240,201,152,171, 60,
-103,124, 60,207,227,226,197,139,208,106,181,216,190,125, 59,207,243,124,241,126,176, 64,143,175, 89,189,116,208,246, 93,199,197,
- 98, 17,193,221, 27,135,145,150, 82,178, 85, 78, 36, 18, 98,235,142, 35, 90,145, 72,248,186,168,243, 90,173, 54,226,242,229,203,
-246,109, 57, 78,200, 48,204, 39,194,169, 56, 28, 60,120, 80,199,243,252,135, 82,210,229, 14, 33,194, 78, 63,255, 56,116,111,135,
-222,223,217, 55,104,208, 72,104, 99,103, 15, 66, 8,226,227,226,241, 38,224,129,238,236,225, 45,113, 89,217, 25, 6, 45,149, 51,
-116,197,181,252, 49, 87, 0,208,113,236,218,252,241, 87, 0,208,105,240, 84, 52,175,239, 3, 98,136,169,233, 47,113,197,235,245,
-122,200,229,114,232,245,250, 34, 93, 53,152,155,155,203, 84, 42,149,146, 82, 10,142,227, 74, 52, 13, 81,224,171,167, 17,199,113,
- 94, 41, 41, 41,200,202,202,194,221,187,119,233,162, 69,139, 18, 18, 18, 18,242, 7, 99,234,116, 58,175,228,228,100,100,102,102,
-226,206,157, 59,116,233,210,165, 9, 73, 73, 73, 51,202,242, 13,201,100,178,218, 2,129,224, 81, 74, 74, 10,111, 98, 98,194,232,
-116, 58, 93,245,234,213, 37, 50,153,204,224,133,206,163,163,163,219, 21,119,206,205,205, 45, 56, 56, 56,184, 10,199,113, 5,215,
- 40, 20,169, 84, 42,247, 6, 13, 26, 24,210,181, 51, 97,219,182,109, 56,114,228, 72,221,244,244,244, 1, 31, 62,124,216, 9,160,
-174, 64, 32,192,211,167, 79, 95,169, 84,170,126,221,187,119,223,145,146,146,114, 31,192, 4, 3,203,141,115,132,144,254, 94, 94,
- 94,219,230,207,159,175,104,218,180,169,192,201,201, 9,117,234,212,193,155, 55,111,112,250,244,105,221,239,191,255,158,149,157,
-157, 61,148, 82,122,177,228,100, 7,209,235,245, 16,139,197,249,155, 68, 34,129, 72, 36, 66,134,146, 98,248,175, 33, 74, 61,100,
-202,149,243, 70,156,166, 0,137,141, 8, 73,140,143,141,184, 79, 8,185, 17, 29, 29,157, 86, 76,156,137, 85, 42, 85, 13, 71, 71,
- 71, 1, 33,100,181, 86,171, 29, 50,110,220, 56,135,197,139, 23,163,106,213,170, 72, 76, 76,132, 92, 46,135,187,187, 59, 18, 18,
- 18,240,224,193, 3, 46, 59, 59,123, 3,128, 5,148,210, 18,187, 29, 83, 19,210,225, 98, 95,254, 35, 75, 39,165, 20, 84, 15,232,
- 56, 14,156,150, 66, 67,116, 16, 10,117, 16,137, 68,134, 84,146,148,231,121,164, 56, 58, 34,234,252,121,228,174, 42, 81,172, 21,
-237,212,169, 83, 6, 36, 16, 15,177, 68,252, 81,183, 32, 33, 4, 34,177, 24, 66,177,232,147, 25, 49, 70,171,149, 17,255, 89,129,
-149,251, 1,164, 2, 24, 73, 8,217,217,172, 89,179, 83,148, 82, 33,128, 14,148,210,155, 95,242,240,152,152,152,199, 78, 78, 78,
-211,237, 93, 44,151,126, 51,160, 17,170,214,168, 0, 78,207,225,246,153,167,216,190,248,216,190,168,136,168,193,134,172, 77,198,
-243,252,213,134,181,171, 50, 40,224, 91,219,201,201,137,255,156, 89,132,105,105,105,115, 39, 79,158,140, 31,127,252,177,204,179,
- 8,139,187,230,249,171,248,145,126, 94,182, 46,157,190,105,220, 22,132,161, 26,141,186,132, 2, 15,249, 30, 71, 69, 34,225,235,
- 7,207,162,171, 23,117, 93, 66, 66, 66,219, 33, 67,134, 92, 20, 8, 4,149,202, 18,231, 60,207,127,136,139,139,107, 89,122,154,
-235,110, 19, 66,220, 79,238,219, 56,241,220,145,109,109,121,158,115, 35, 0, 88,129,232,157, 78,171, 61,175, 86,166,175, 50,116,
-177,231,229, 35,253, 49, 97,205, 5,172,255,177, 19,198, 45, 61,128, 45,179,135, 99,250,175,123,177,236,199, 9, 88,180,246, 79,
-204,153,208, 31, 61,191, 29,194, 83,194,220, 50,244, 61, 88,150, 61,183,113,227,198, 65,195,135, 15,207,159,140, 64, 41,253,168,
- 64,215,233,116, 74,158,231,177, 97,195, 6, 30,192,185,146,248, 62, 78, 35, 66, 75, 26, 15,101,104, 26,165,167,167, 15,245,247,
-247,223, 1, 64, 66, 41,125,155,146,146, 50,138, 82,154,191,132, 83,102,102,230,208, 6, 13, 26,236,160,148, 74, 8, 33,159,156,
- 55, 4,185, 46, 27,106, 91, 90, 90, 62,202,181, 92, 73, 62,103,160,123, 73, 81, 93, 66,247, 33,103, 64,217,193,163,192,242, 55,
-132,144,197,117,235,214, 45,184,216,243, 43, 0,181,203, 26, 40, 74,233, 69, 66,136,207,236,217,179, 39, 74,165,210,230,217,217,
-217, 30, 0, 32,151,203,223,168,213,234,171, 74,165,114, 85,110,185, 85, 18,135,198,196,196,228,141, 94,175,247,181,181,181,205,
-153, 33,155, 43,178, 0,224,196, 35,238, 17,165,250, 50,175, 26,127,230,204,153,138,150,150,150,109, 8, 33, 61, 41,165,158, 25,
- 25, 25,234, 89,179,102,221, 61,114,228, 72,106,133, 10, 21,190,233,208,161, 3,177,178,178,194,195,135, 15,105, 82, 82,210, 97,
- 0, 51, 12,153, 57,205,243,252,135,229,203,203,182,182, 96,105,141, 41,173, 86, 27,123,230,204, 25,155,118,241,241, 2, 43,158,
-255,104,134, 99, 81, 19, 46, 94,191,126, 13,181, 90, 93,162, 19, 70,117, 90, 10, 90, 76,156, 10,228,206,230,204, 67,142,229,138,
-130,106,140,122,202,136,255, 6,200,223, 50,141,185,140, 38, 68, 39, 39,167, 62, 82,185,100, 76, 5, 15,199,234,209, 33,241,129,
- 25,105,217,187, 99, 98, 98, 54, 82, 74,185,207,229, 44,139,163, 81,163,153,247,239,227,252,203, 15, 22, 7, 74, 57, 80,158,130,
- 82, 30, 60,207,229, 44, 68, 77,121, 80,142, 35,132,224,150, 58, 59,109,184,161,225, 36,132, 88,218,216,216, 44,160,148,182, 99,
- 89,150, 41,104,252, 42,248, 63,215,114,117, 46, 33, 33, 97, 78, 97, 75,235,255, 98,124, 30, 58,116,168, 72,209,111,232, 44,194,
-158, 61,123,114,101,252, 54,175,202,229,242, 34, 29,106,102,101,101,133, 71, 71, 71,183,249, 39,196,103,158,245,147, 26, 80,160,
- 21,234,106, 47,243, 44,194,210, 56, 43, 86,172, 40,209,106,181, 53, 1,120, 0,176, 0,144,172,211,233,206, 37, 36, 36,196, 17,
- 66,106, 3,152,157,123,219, 66, 74,233,163,255,203,239,157, 16, 34,179,177,177,217,198, 48,140,139, 33,247,235,245,122, 77,114,
-114,242,160,130, 13,129,130,156, 54, 54, 54,143, 4, 2,129,139, 1, 60,145,137,137,137,181,141,229,167,145,243, 63,111,193,250,
-187, 17, 29, 29,189, 31,192,254,175,201, 89,156,167,118, 35,254,255, 34, 43, 57,230,111, 73,135, 92,177, 52,246,191, 22,159,121,
- 2,169,136,227,143, 1,144,191,225,219,108,254,191, 16, 47,244, 51, 91,138,185, 2,170,241,215, 12, 75, 88, 88,152, 26,192,157,
-220,173,240,243, 30, 1,232,244, 15,138, 55, 37,128, 62, 95,139,175, 36,209,100,132, 17,255, 53, 48,198, 40, 48,194, 8, 35,140,
- 48,194, 8, 35,140,248,186, 32, 0, 90, 21,211,178, 49,216,244, 71, 8,105,245, 25, 45,167, 75, 70, 78, 35,167,145,211,200,105,
-228, 52,114, 26, 57,255, 91,156,255, 25,228, 57,124,252, 59, 54, 0,173,140,156, 70, 78, 35,167,145,211,200,105,228, 52,114, 26,
- 57,255,107,155,177,139,208, 8, 35,140, 48,194, 8, 35,140, 48,226, 43,195, 96,129,165,112,240,242,178,173,232,183,195,170, 92,
-245,231, 86,229,170, 63,183,173,232,183, 67,225,224,229,245, 95,140, 52, 66,136,140, 16,242,173, 80, 40,188,232,232,232,152, 78,
- 8,153,248, 47,125, 79, 51, 66, 72, 79, 66,200, 2, 66, 72, 55, 66,136,201,215,228,111, 70,136,160, 47, 33, 99, 6, 17, 18, 62,
-136,144,240,190,132,140,105, 70,200,191,110,217,140,249, 19,156,252,111,158,235,127,118,254, 4, 39,255, 34,207, 79,113,178,190,
-127,177,247,154, 37, 99,157,173,190, 82,186,153,218,219,219,111,114,112,112, 8,179,183,183,255, 96,111,111,191,141, 16, 98,110,
- 44,238,140, 48,194, 8, 35,254,255, 65,144, 91, 32, 55, 5,112, 13, 64, 51, 74,233,245,194, 23, 89, 85,168, 54,220,203,179,234,
-143, 63,207,155, 73,108,109, 44,101, 58, 29,167,141,136,140,241,158,251,243,146, 67, 86, 21,170,173, 76,254,240, 98,203,103, 84,
- 2,132,101,217, 62, 18,137,164, 35,128, 60,161,246, 74,173, 86,159,226, 56,110,191,161,179,130, 28, 28, 28,110,176, 44, 91,177,
- 44,207,230, 56, 46, 60, 54, 54,182,209,103, 86, 94,189,202,151, 47,191,173,105,211,166, 38,117,235,214,133, 88, 44,198,236,217,
-179, 39, 3, 88,101, 40,135,149,149,155,169, 86, 34,253, 65, 32, 22,183,166, 58,141, 47, 5, 5, 24, 73, 0,175, 87, 95, 22,169,
-213, 43,147,147,223,101, 24, 24,150, 25, 0, 6, 35,103, 90,249, 22, 74,233,242, 47,201, 12,131,107, 18,157,142,203,201, 19, 34,
- 1, 56,115,115,243,107, 51,103,206, 20,116,236,216, 17, 91,182,108,105,180,105,211,166, 17,132,144,203, 0, 78, 80, 74,223,125,
-105,230,179, 7, 70, 54,104,212,104,205,160,201,147, 89,229,141, 27, 88,179,109,219,106,164,167, 3,192,250,178,230, 37,145, 8,
- 61,109,108,132, 29, 41, 69, 77, 2, 16, 2, 60, 77, 72,226,207,104,181,220,126, 90,214,117,120, 62,230,254, 22, 31, 79,171,223,
- 83, 86,142,180,119,116,150,164,147, 87,227,180,119, 87,103, 1,248,166,240,121,189, 74, 58,136,178,229, 58, 42,233,147, 8, 0,
-191,126,161,184, 50,177,181,181,125,126,252,248,113,151,186,117,235, 10, 0,224,209,163, 71, 3, 59,118,236,216,130, 16,226, 75,
- 41, 77,255, 63, 18,235, 82, 1,195,140, 17, 11,133,173, 57,142,171, 6, 0, 44,203,190,208,232,116, 23,245, 60,191,222, 80,159,
-106, 70, 24, 97,196,191,218,120, 81,162, 22,249,159, 20, 88, 0,174, 81, 74, 9, 33,132,162,208, 84,111,133,189,167,183,143,143,
-215,228,115, 71,119,150, 75, 75, 78, 85,253,246,235,174, 39,153,172, 40,203,195,203, 93,252,219,170,229, 22, 99, 38, 76,250, 65,
- 97,239,121, 63, 51, 46, 40,176, 12,145, 88, 94, 38,147, 29, 89,177, 98,133,111,243,230,205,133,118,118,118,136,139,139,195,171,
- 87,175,124,175, 92,185,210,117,231,206,157,147, 9, 33,221, 41,165,134, 44,124,229,126,121,215, 54, 59,185,149, 53, 56,157, 14,
- 78,213,107,230, 59,200,123,123,229, 2,244, 90, 45,120,157, 14, 94, 29,187, 2, 0,120,158,135,183,183, 55,251,153,137,239,228,
-227,227,179,123,241,226,197, 34,181, 90,141,251,247,239,227,234,213,171,124, 76, 76,204, 82, 67, 57, 20,246, 30,205, 25,153,124,
-127,159,254,223,153,119,233, 88, 89, 88,222,222, 22,128, 9, 94,135,234, 27,156,189,112,165,206,209,253,219,191, 87,216,123,244,
-201,140,123,115,181,100,145,102, 85,159, 16,178, 40,207,163, 51, 33,100, 89,165, 74,149,230, 20,188,166,240,186,118,148, 82, 8,
- 4,130,184,140,140,140, 62,137,137,137, 79, 10,115,234, 56, 8,246,236,201,209, 15,179,198,124,203,222,186,117, 75,238,237,237,
-173, 6,128,229,203,151, 99,193,130, 5,226,243,231,207,183,223,181,107, 87,123, 66,200,106, 74,233,137, 47,201,124, 34,224,167,
- 65,147, 39,179,138,176, 48, 40,158, 61, 67,255,244,116,193, 47,192, 79,101, 17, 88,132,144,202, 14, 14,194, 67,147, 39, 13,241,
-114,117,171, 47, 18,137,108,114, 22,215,214, 36,122,132,135, 63,233,185,244,151, 77,211, 8, 33, 61, 40,165,111, 13,228, 19, 0,
-152, 15, 64, 10, 96, 22,128,217, 9, 9, 9,238, 28,199,193,193,193, 97, 54, 33,228, 24,128,159,109,109,109,105, 66, 66,194, 84,
- 74,169,190, 36,203, 85,250, 59, 58, 43,150,184,182,171, 90,107, 16, 98,201,185,118,147,190,113, 60,107,230, 70,126,158,187, 38,
-250, 46, 0,124,227,230,102,234,234, 41,159,170, 48,171,102,149, 30,117,105,234, 55,110,110,155,207,190, 51, 76, 96, 23, 22,153,
- 0,224,228,228,180,124,215,174, 93,229,234,213,171,151,159,199,107,212,168,193, 46, 95,190,220,121,226,196,137,171, 1, 12, 49,
-144,207,195,214,214,246, 60,199,113,234,164,164, 36,143,188,227,118,126,221, 27, 88,155,202, 91, 38,164,100,220, 72,124,121,236,
-186,129, 92,117,165, 34,209,225, 19,187,215, 56,214,168,231,207, 40,108,236,160,138,138, 70,166, 78,219,234,234,237,123,205, 70,
-140,249,105, 66,110, 26, 61, 48, 86, 49, 70, 24,241,159, 70,177, 90,228,127, 89, 96, 33,247,133, 62,129, 68, 34,158, 54,119,230,
- 84,146,154,148,170, 84,103,100,106,244, 42,149,146, 17,242,170,231,175,222,199, 51, 2, 54,117,210,248,241,166, 83,103,204,156,
- 6,160,191,161,226,202,207,207,239,193,145, 35, 71,236,172,172,172,144,150,150,134,164,164, 36, 60,120,240, 0,148, 82,116,239,
-222, 93, 82,175, 78,157,154,179,102,207,190, 75, 8,241, 55, 68,100,201,173,108,176,188, 81,206, 26,177,115,194,146,242,158,131,
- 77,189, 58,230, 95,179, 32, 50, 13, 0, 32,149, 74,243, 23, 10,254, 12,248,183,108,217, 82, 4, 0,195,134, 13, 75,207,200,200,
- 88, 2, 96, 15,165, 52,202, 80,113,101,227,232,116,234,143, 13,203,101,213,220,220,161,213,233,241, 33, 54, 26, 2,161, 5, 92,
- 92, 68, 24,210,191,181,176, 73, 3, 43,155, 69, 11, 55,157,150,219,122,116,203, 74,120,115,190, 56, 46, 11, 11,139,157,251,247,
-239,199,129, 3, 7, 0, 0,111,222,188,129,187,187,187,188,180, 48, 4, 4, 4,184,118,238,220,121, 31,128, 42,165, 93, 91,216,
-145,189, 68, 34, 65,163, 70,141,224,237,237,141,227,199,143, 55, 3,112,226, 75, 51,160,242,198, 13, 40,158, 61, 3,174,151,189,
-177, 66, 8,169, 92,171, 86,133,123,103, 78,239,182, 57,125,230, 21,126,253,117, 27,222,189,203, 49,172,185,186,186,226,219,126,
-189,132, 47, 94,220,241,233,217,243,219, 59,132,144, 70,148,210, 55, 6,208,206,223,188,121,243,140, 74,149, 42,161,103,207,158,
-189,124,124,124, 28,204,204,204,176,113,227, 70, 56, 58, 58,186,106, 52,154,183,199,143, 31,119,138,141,141,197,248,241,227, 1,
- 96,114,113, 68,205,218, 54,155, 37,233,228,213,184,106,173, 65, 80,152, 57, 98,243,222,253,120,253,120,103, 99,181,246,213,172,
- 37, 99,157, 7, 40,169,100,176,139,187,233,180,138,181,155, 90, 87,241,233,140, 10,181,158,216,168,184,155,239,103,143,113, 93,
- 42,144,170,118,206, 93, 17,157,244,201, 59,247, 58,196,250,166, 7, 89, 5, 92, 68, 18,165,115,249, 92, 97,149, 95, 16,113, 20,
-157,155, 52,105,146,159,112, 97, 97, 97, 80,171,213,240,242,242, 98, 52, 26, 77,115, 3,227,213,163, 77,155, 54,183,206,156, 57,
- 99,237,225,225,241,209,210, 45, 14,214, 22,109,175, 31, 89, 61,126,209,154, 63, 61,237,188,187,165,198, 7, 30,125, 81,154,184,
-106, 88,191,214,165,179, 71,118, 43, 72,102, 4,196, 22,137, 0,159,132,144,125, 91, 65, 76,172,208,103,244, 36, 65,243,150, 45,
-156, 91,127,211,227, 18, 33,164, 37,165,244,161,177,142, 49,194,136,255,180, 21,139,254, 91,222, 69, 80,192,186, 65,138,122, 49,
-158,242,213, 29,236,172,101,171, 87,236,120,200,106, 53, 26, 19, 11, 51,173,185,153, 57,133,169, 25,171,213,105, 51,203,187, 87,
- 18,241,148,175, 94, 20,121,225,169,154,132, 16, 34,147,201,142,156, 56,113,194, 78, 40, 20,130,231,121,216,218,218, 34, 52, 52,
- 20,169,169,169,200,200,200,192,187, 87,175, 80,169,124, 57,204,155, 54,213,113,252,212,105, 71, 8, 33,181, 11,118, 23, 22, 53,
-253,147,211,105, 11, 39, 80,113,139,251,126,244, 91, 18,103, 49, 8, 13, 15, 15,135, 66,161,128,175,175,175,226,246,237,219, 55,
-139, 19, 87,133, 57,173,172,220, 76, 5, 10,217,129,223,255,152, 45,211,234, 2, 16, 24,146,140,170,149, 26,195,222,186, 60,162,
-147, 53,184,247,224, 4, 2,158,239,129,155,115,121,140, 29,221, 66,186,116,249,161,253,150,150,149,203,167,164,188, 79, 47,138,
- 51, 61, 61, 93, 81,185,114,101,148, 47,159,179, 46, 25,199,113, 8, 12, 12, 4,199,113,249,251, 5,127,119, 28,190, 2,125,250,
- 7, 12, 26, 56, 16, 73, 73, 73,138,162, 56,133, 44,244,147, 70,124, 43,144, 9, 1,177,220, 74,147,153,153,153,111, 13,212,106,
-181,120,250,244, 41,252,253,253,155, 30, 60,120,176, 68, 53,100,104,124,106,129,101,107,182,111, 95,219, 63, 45,141, 1,128, 45,
-132,240, 90, 74,151, 25,154,151,236,236,132,135,207,157,221,101,195, 50, 65,176, 50,255, 5, 15, 30,124,128, 86,155, 19,222,164,
-164,120,140, 27,147, 14,145,208, 20,199,143,255,105,237,229,213,232,112,110, 23, 25, 95, 74, 56,165,103,207,158,197,184,113,227,
- 16, 24, 24,232,196,178, 44,238,223,191, 15,153, 76,134, 21, 43, 86,176, 94, 94, 94, 78,114,185, 28,231,206,157, 67, 92, 92, 28,
- 41, 41,156,215,206, 95,251, 57,237,221,213, 89,177,228, 92,187,205,123,247,227,187,126,125,224, 64, 67,110,154,187,145,159,219,
-116,106, 56,135,178,229, 58,202, 77,171, 91,186,251,118,130, 72,172,192,216,159, 22,224, 77,192, 73,203,236,140,231, 99, 8, 23,
- 81, 14,185,107,243,125,180,216,241,193,158,220,218,189,119,106, 93, 44,255,176,130, 83,173,145,247, 1, 60,255, 75, 96,185, 10,
- 8,195,153,231, 89, 43,223,190,125,139,119,239,222, 65, 32, 16, 64,169, 84, 66,175,215, 23, 25, 78,103,103,231,145,122,189,126,
- 78,110, 58,239,112,116,116, 28,186,123,247,110,235,130, 2, 59,207,114,149,156,154,158,114,231,225,203,215,147, 70,246,108,118,
-227, 94, 64,132,133, 95,215,240,212,103,199,210,138, 73, 35,169, 76, 44, 62,124,238,232,159, 10,221,251, 43,144,123, 53,131, 80,
-225, 14, 78, 23,133,236,148, 44,100,188,139,129,250,143,117,168, 49,102, 34, 78, 30, 59,164,240,169, 86,251, 32, 33,196,157, 82,
-170,249,140,111,211, 96, 24, 57,141,156, 70,206,127, 38,103, 73, 90, 4, 64, 45, 0,246,185,255,147,144, 51, 52,198, 6, 64, 34,
-114,150,237,178, 7,160, 1, 32, 46,112, 79,225,253,130,215, 22,222, 47,248, 63, 41,247,191, 93,238,239, 67, 0,201,159, 45,176,
-138, 87,147, 76,186,158,231, 37, 98, 91, 91,245,208,222,173,124, 47, 92,122,244, 84,110,109, 46,104,211,188, 86,211, 7, 47,222,
-221,101,192,232, 8, 97, 12, 26,215,193,178,108,159,213,171, 87, 87, 51, 51, 51, 3,207,243, 48, 55, 55, 71, 66, 66, 2, 52, 26,
- 13,210,210,210,160,206, 72,135, 54, 35, 29,207, 34,194,208,176,105, 51,244,104,215,198,235,207, 99, 39,250, 0,216, 87, 18,175,
- 83,245,154,249,150,171, 5, 21,173,255, 50, 69, 68,164,230,139,173, 95,106,186, 67,164, 80,160,245,164,105, 95,146,240, 79,196,
- 98,241,217,238,221,187,127, 51,101,202, 20, 38, 38, 38,230, 28, 33,164, 33,165,180,212,238, 81,173, 68,250,195,247, 63,116,180,
-180, 84, 80, 28,188,120, 2, 77,106,246,131,137,152, 69, 82,186, 22,132, 0,175, 94, 30, 1, 33, 86,120,254, 38, 6,141,107,152,
-161, 77, 91, 47,197,177, 67,175,166,224,175,241, 63,159, 36, 77, 74, 74, 10,226,227,227,161,211,233,160,211,233,208,179, 87, 47,
-236,218,185, 19, 89, 89, 89, 80, 42,149,208,104, 52,224, 56, 14, 12,195,224,226,169,131,136,120,255, 10, 13,252,253, 81,156,233,
-117,199, 19, 42, 36,132,220,123,253,250, 53, 94,189,122,133,200,200, 72, 72,165, 82, 56, 56, 56, 96,193,130, 5, 80,171,115,214,
- 16,235,213,171, 87, 83, 0, 47,190,244, 67,122, 7,108,122,175,215,207,250,230,232, 81,187,219, 71,143,242,119, 79,156,136,148,
-102,102,110, 52,228, 94,145, 8, 61,151, 47, 27, 93, 85, 46,151, 35, 50,124, 53, 60, 61, 69,152, 60,209, 26, 75,126, 73, 4, 0,
-140, 31,231,130, 58,181,109,144,158,122, 8, 54,118, 51,176,118,237, 4,183,193,131, 87, 14, 4,176,163, 20,234, 89, 39, 78,156,
-232,225,238,238,238,252,228,201, 19, 34, 22,139, 33,147,201, 32,147,201, 32,149, 74, 17, 31, 31,143,208,208, 80,186,124,249,242,
- 40,228,116, 33, 22,139,220,110,192,111, 38,125,227,120,246,245,227,157,141,157,217,247,207,122,140,109, 20,246,252,222,147,140,
- 11, 23,111, 47,212,171,164, 17,169,145,151,166, 86,174,243,196,102,204,143,243,177,110,249, 92,188,190,127, 35,217,190,124,250,
-122, 25, 81,239,168,215,186, 8,171, 88,179,249,130, 49,179,123,235, 71, 14,238, 97,113,210,254,206,200, 51, 2,146, 16,155,248,
-120, 5, 66,159, 40, 37, 85,106, 14,240,112,101, 52, 87,174, 92,145, 53,105,210, 4, 42,149, 42,223, 18,185,123,247,110, 94,175,
-215, 23,217,237,172,213,106,231, 68, 69, 69, 57, 42,149, 74,180,107,215,110,252,138, 21, 43,228,121,107,200,113, 28,247,145,229,
-234,231, 85,187,206,255, 48,103,253,213,243,251,126,113,250,121,218,208,102,253,199, 46,186,138, 98,214,121, 20, 48,204,152,147,
- 71,183, 57, 72, 45,117,144, 89,181,129, 42, 78,137,215,155,190, 67,118,186, 10,117,126,158, 15, 64, 12,141,142,193,198, 78, 61,
- 33,180,118,194,220,225, 67,157,102,110,220, 60, 26,192,106, 99, 59,222, 8, 35,140, 40, 4,123, 66,200, 41, 0,152, 54,109,218,
-140, 37, 75,150,188, 36,132,156,162,148,118,204,109,208,157,162,148,118,204,187, 38,183,206,254,100, 63,239,218,194,251,133,255,
- 79,159, 62,221,103,233,210,165,139,253,253,253,247,221,185,115,231,253,231, 8, 44, 38, 79, 49, 22,252,253,200,130,197,243, 55,
-222,134,132,101,183,109, 93,223,249,228,181, 23,143,134, 12,233,208,178,119,231,198,109,222, 71,196, 7,185, 85,112,176, 9,120,
-249,204,140,231,249, 27,134, 60, 76, 34,145,116,108,209,162,133, 32, 37, 37, 5, 38, 38, 38, 72, 72, 72, 64, 84, 84, 20,180, 90,
- 45, 84,105,169, 80,167,165, 66,149,154, 2,109, 90, 10,222, 61,122,128,234,110,174,146,220, 65,240,165, 9,159, 34, 45, 83, 5,
- 45, 89, 98, 83, 83, 72, 76, 77, 65,202,216, 61, 72, 8,233, 98,105,105,121,143, 16, 50, 43,183, 50, 26, 51,117,234,212, 68,158,
-231,177,104,209, 34, 51,133, 66,113,144, 16, 34, 41,141,199,212,150,237,232, 95,195,151, 9, 10,125,142, 70,126,131,224, 81,185,
- 61, 66,227,148, 72,204,208, 34, 62, 85,139, 58, 77,126, 67, 69,191,249, 40, 87, 99, 9, 94,125, 72,134,147,179, 59, 3,129,164,
-196, 69,153,227,226,226, 62,218,223,183,119, 47,178,179,179,225,230,230,134,126,253,250, 97,234,212,169,232,215,175, 31,156,156,
-156,208,191,119,103,204,157, 59, 23,241,241,241,165, 5, 85,237,225,225,161,174, 80,161,130,186, 66,133, 10,106,173, 86,139,204,
-204, 76,164,166,166, 22,142,239, 9,101,254, 58,236,237,167, 59, 58, 58, 62,183,183,183,127, 41,149, 74,207, 60, 37, 36, 72, 93,
-177,162,125,195,174, 93,137,119,239,222,108,184,137, 9,185, 14, 40, 12,225,178,177, 18,118,104,222,226, 27,113,106,202, 54, 0,
- 57, 70,169,161, 67,108,113,235,186, 15,110,223,172,141,113, 99,220, 64, 24, 41, 8, 35, 70,118,214, 21,212,171,235, 47,178,176,
- 32, 29, 75, 73,235,111, 1, 60,109,216,176,161,211,216,177, 99,137, 68, 34,193,248,241,227,181,195,135, 15, 15,238,215,175, 95,
-240,229,203,151,185, 10, 21, 42,160, 92,185,114,164, 92,185,114,142, 0,158,230,222, 83, 34,204,220,200,207,106,237,171,155, 22,
-238,242,247, 28,108, 26,100,234, 36, 61,231,174,136, 78, 90,184, 62,228,215,208,215,217,174,175,239,223, 72, 10, 14, 56,201,135,
- 62,188,150, 24, 29,156,225,186,112,125,200,175,211,215, 69, 21,249, 49, 95,191, 14,254,200,169,235,218,236,172,108, 65,215, 78,
-205,179, 71, 14,235,227, 97,165,240,217, 13,231, 54,126, 21,203,187,244,159,187,120,173,118,248,232, 31,180, 91,182,110,163, 25,
- 25, 25, 72, 79, 79,199,218,181,107,245, 39, 79,158,140,226, 56,238,135,226,218, 62, 0,160,211,233, 48,114,228, 72,185,153,153,
- 25, 34, 34, 34,242, 45,160, 0, 16,147,144,244,226,246,195,128,160, 73,163,122, 53,205, 82,171,213,231,175, 61,122,229,237, 94,
-193,133, 16, 90,236, 4, 19,177, 80,216,186,118,189,122, 44,165,169, 32,130,242,120,183,115, 57,210, 99,147,145, 30,159, 12, 86,
- 40,135, 30, 18,232,120, 49, 44,170,215,197,155,135, 79,224,108,107, 47,144, 8,133,198, 37,174,140, 48,226, 63,138,146,180, 72,
- 65,145,180,116,233,210,197, 37,157, 47,240,171, 41,180,159, 47,160, 10,139,175,130,255, 1, 96,233,210,165,139, 41,165, 29,239,
-220,185,179, 23,128,242,115,222,167, 84,181,193,170, 52, 75,166, 76,157, 5,115, 51,153,121,189,154,238, 14,199,206, 93,123,124,
-227,206,163, 87, 21, 93,108,108,169, 78, 99,185,108,229, 58, 23,146,173, 52,116,144,183,151,141,141, 13,180, 90, 45,222,190,125,
-139,200,200, 72,104,181, 90,232,179,178,160, 78, 77,133, 42, 37, 5, 92, 86, 6, 68, 28, 7,101, 66, 60,172, 77,164,192, 95, 51,
- 12, 75, 19, 66, 69, 10,172,188, 95,169,153, 25, 36,166,102, 96,132,194, 34,187, 15,139,225,172, 85,183,110,221, 3, 1, 1, 1,
-245, 90,181,106,181,144, 16, 98, 78, 41,253, 16, 21, 21,213,114,246,236,217,106,123,123,123,140, 28, 57,178, 42,128, 65,165,138,
- 75,177,198,171,130, 67, 85,120,184, 14, 66,197,114, 45,144,154,165, 67, 66,186, 14,241,169, 90,108,252,205, 31,135,183,212,197,
-173,195,141, 17,112,190, 53, 82,117, 14, 80, 56,117, 1,229, 52, 62, 37,113,222,185,115, 7, 27, 54,108,192,134, 13, 27,240,199,
- 31,127, 96,221,186,117, 72, 73, 73,129,175,175, 47,194,195,195,113,246,236, 89,196,196,196,192,198,198, 6, 79,159, 62,197,198,
-141, 27,241,224,193, 3, 67, 50,185, 65,215,148,181,175, 92,175,215, 15,142,233,218,181, 90,156,149,149,119,205,154, 53,191, 25,
- 63,126,188,107,195,134, 13,243,207, 87,174, 92,185,188, 76, 38,139, 37,132,108, 33,132,212, 40,137,139, 7,106,218,218,250, 66,
-163, 14,202, 77, 43, 33, 8,145,162, 69,235, 87,104,216,248, 17,180, 58, 17, 24, 34, 1,195, 72,161,215, 39,193,210,210, 9,148,
- 18,223, 82,130, 56, 59, 33, 33,193,253,210,165, 75, 76,104,104, 40,164, 82, 41, 0,132,205,155, 55,111,221,175,191,254, 26,104,
-109,109,205,157, 58,117, 10,199,142, 29, 67,199,142, 29,217,225,195,135,187,151, 43, 87,110, 67,105,239, 61,119, 77,244,221, 61,
- 43,207,246, 21,234, 44,107, 72,101, 21, 43, 33, 75,209,101, 76, 51, 91, 57, 0,156,125,247, 46,195,174,124,250,210,172,140,231,
-225, 22, 46,153,191,148, 54,192,157,210,185,252,227,224,160,123,123,142,158, 75,139,143, 75, 17,214,172,230,163, 92,178,224, 71,
- 81,197, 74, 85,150,205,157, 58,202, 33, 42, 93,154,218,122,252,217,160, 35,231, 30,100, 14, 24,242,157,126,216,136,177,170,179,
-231, 46, 30,229,121,190, 90,113, 51, 8,121,158, 71, 76, 76, 12, 94,190,124,137,144,144, 16, 36, 36, 36, 32, 49, 49, 17, 25, 25,
- 25,249,221,138, 38, 25,233,167,215,109, 63,249, 76, 46,147,153,212,171,230, 94,254,254,147,192,120,185, 76,102,226, 94,169,188,
- 7, 33,243,139, 44, 71, 56,142,171, 38, 53,145, 1, 32, 72, 13,184,129,204,148, 76,100,166,102, 34, 35, 57, 19,106, 45, 11,149,
-154,129, 82,195,160, 66,211, 54,200,204, 82, 33, 51, 41, 13, 60,199,249, 25,171, 25, 35,140, 48,162,132,122,249,212,180,105,211,
-102, 24,120,185,193,221,152,133, 5,215,180,105,211,102, 16, 66, 78, 77,159, 62,221, 7, 6,140, 89, 46, 10,165,186,105, 72, 76,
-124,147,105,102,235,221,125,226, 79,115,206,238,221,186,222, 86,163, 81,134,219, 88, 42, 56, 83, 19,137,229,240,145,139,144,145,
-153,210, 45, 51,217,240, 89, 79, 41, 41, 41,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,165, 18,156, 50, 11,202,148, 36, 48, 90,
- 53, 68, 28, 7, 43, 19, 25, 42, 56, 57,160,162,189,131, 65,156,111,175, 92,200, 31,208, 94,176, 91,112,121, 93, 47,136,229, 10,
-136, 77, 21,248,254,212, 53, 0,128, 72, 36, 2,102, 47, 52, 36, 17,109,156,157,157, 79,236,217,179, 71,148,144,144,128,167, 79,
-159, 62,163,148,166, 17, 66, 76, 1,240,175, 94,189,186, 20, 16, 16,208,209,221,221, 29, 0,220, 74,227, 75, 79,100, 56,157,158,
- 34, 34, 54, 12,161,145, 79, 96,101, 94, 25, 66, 19, 15,196,167,106, 33,145, 85,134, 78,253, 87, 47,163, 42,253, 3,148, 90,195,
- 38, 58,106,181, 90,104,181, 90,232,116, 58,168,213,106, 12, 24, 48, 0,183,239,220,193,190, 99,151,241,254,221, 27, 84,173,228,
-128,129, 3, 7,160, 70,141, 26,120,248,176,228,241,195,131,107, 18,221,204, 38, 16,172,252,134,129, 88, 97,173,174, 63,245,252,
-125, 67, 68, 86, 73,173,141, 2,241,249,107,199,142, 29,171,188,201,202,194,203,160, 32,180,154, 55, 15, 0,112,250,244,233,252,
-107, 52, 26, 13, 38, 77,154, 36, 14, 12, 12, 28,246,232,209,163, 97,132,144,149,148,210,162, 7,145, 83,224,244,233,187, 24, 53,
- 42, 16, 9, 9, 57,227,176,247,239,253, 75,143,134,190,215,162, 93,135,156,158, 43, 11, 11, 11,172, 92,233,107, 80,124,114, 28,
-135, 77,155, 54,229,119, 11, 2,128, 64, 32,104, 56,105,210,164,238, 69, 93, 95,165, 74, 21, 81,105,156,147,122,185, 72,159,126,
-144,141, 49,175, 82,209,199,204,166, 58,146,116, 79,124,159, 68,197,140,155,212,203,101,245,202,131,145, 42, 25, 81,239, 32, 92,
- 68, 57,129, 84,181,211,144, 48,190, 59,187, 86, 99, 81,113,200,206,216,132,244,153, 99,191,251,214,218,204,194, 46,107,203,186,
- 37,150, 12,203,208, 19,143,180,169, 62,174,214, 22, 93,234,175,201, 28, 53,113,246, 19,141, 62, 98, 44, 34, 78,188, 41,201, 85,
- 5,199,113,136,142,142, 70, 66, 66, 2,194,195,195,145,152,152,152,251,237, 39,126, 50, 19,181,140, 5, 33,148,225,225,248,112,
-116, 11, 42, 14, 24,128, 58, 11, 23,128,227, 5, 80,102,115, 88,217,160, 37, 82,210,148, 80,243, 4, 78,181, 26,224,187, 51, 55,
-193, 80, 14,216,184,222, 88,131, 24, 97,196,127, 87, 60, 21,171, 69, 10, 11,161, 37, 75,150,116,252,218,207, 47, 40,178,150, 44,
- 89,242,114,201,146, 37, 95,244,172, 82,221, 52, 0, 64,122, 66, 96,136,117,133,234,209, 89,202, 76, 19, 59,123, 27,141, 66, 42,
-225,211,210,179,216, 39, 47,158,105, 51, 99,222,190, 46,195,243, 94, 5, 4, 4,248, 70, 71, 71, 35,252,195, 7,232,149, 89, 96,
-212, 26, 80, 85, 54, 90, 53,106, 0, 41, 0, 41, 67, 32,226,181, 16,176, 98,100,100,166, 3,192,171, 82, 43, 69,157,238, 19, 75,
- 22, 33, 4, 98, 83, 83,136,229,114,136, 21,166, 31, 89,180, 12,177,208, 72, 36,146, 61, 7, 15, 30,116,116,118,118,198,130, 5,
- 11,224,226,226,226, 89,173, 90,181,236,198,141, 27,203,236,237,237,225,237,237,141, 6, 13, 26,224,236,217,179, 0, 80,170, 79,
- 40,157, 94,250,252,117, 24, 26, 38, 38,223,193,205,107,127, 64,163, 84,163,102,211, 63,160, 21, 84,132,173,207,124,240,111,119,
- 35, 59,246,120,142,181,192,161, 19, 34,195,195, 64, 88,241,203, 50,102, 14, 60,127,254, 28,123,143, 95,135, 99, 5, 47,132, 7,
- 7, 33,232,234, 37,220,182,181, 70, 69,111, 31,232,116,186, 18,223, 93,199, 65,240,243,250,124, 55, 13,146,228,228,100,137,149,
-149,149, 58, 47,238, 28, 29, 29,191, 68,100,125, 59,101,202, 20,164, 10,133, 64,135, 14, 16,133,132, 64,171,213,194,223,223, 31,
-181,107,215, 6, 0,248,251,251, 67, 32, 16,160,122,245,234,112,114,114,194,250,245,235,191, 69, 49,179,244, 24,130,167,122,125,
-146,167,171,171,107,190,192,218,185, 43, 1, 79, 30,181, 6,129, 24,107,215,253,229,149,161,124,249,242,136,141, 9, 1, 33, 52,
-160,148, 48, 46,116,112,112,152,237,232,232,232,250,235,175,191,178, 82,169, 20,163, 71,143,174,156,153,153, 89, 49,215,100,140,
-233,211,167,231, 88,165,230,206,197,188,121,243,160, 86,171,179,139, 35,219,181,170,186, 83,124, 50, 63,204,222,193,185, 91,115,
-155,138,213, 90,180,109,133,202,238, 45,208,162,109, 56, 0, 44,182, 18,132,245, 94, 62,203,247,168, 77, 57,171,109, 23,206, 93,
-156,219,168,105,139,153,211, 70, 90,254,188,116, 99, 74,169, 99, 26,211, 62,236,200,120, 45,238,179,234,183, 13,187, 86,205,153,
- 62, 65, 26,158,160, 73,137, 74,161,153, 10,137, 64,225,102, 79, 20,227,126, 90,248, 62, 58, 58,100, 50, 34,206,149, 58,115,146,
-231,121,132,132,132,228,143,217, 83,169, 84,200,202,202, 66, 68, 68, 68,126, 23,161, 82,110,214,110,236,144, 78,126, 89, 74,101,
-246,253, 23,193,225,179,198,247,247,207, 82, 42,179,131, 67,195,223, 80,186,166, 72, 21,198, 48,204,139,236,140,236, 86,217,169,
- 42, 36, 60,125, 13,151,150, 21,160,211, 19,104,244, 28, 18,146, 50,160,214, 3, 28, 35,132, 79,239,129,224,136, 0,137,209, 81,
- 96, 88,246,153,177,154, 49,194,136,255, 44, 74,117,211, 64, 8, 57,229,239,239,191,175,160,149, 41,239, 63, 0, 53,128,146,134,
-236, 36, 20, 20, 81,121,221,134,197, 61,167, 16,239,103, 11,172, 18,187,123, 8, 33,196,175, 90, 5,167,229,115,191,117,225,245,
-250,170,241,137,113,122,129, 64, 34, 44,103,174,140, 41,203,195,212,106,245,169, 75,151, 46,117,109,221,186,181, 36,248,197, 51,
-104,210,210,160, 73, 75,133,144,215,195, 74, 86, 27,140, 86, 13,162,209,192,217,147,135, 42, 67,134,235,183, 3,116,106,181,250,
-148,161, 2,139, 97,217,143,199, 93, 41, 20,144,152,154, 65,162, 80, 20,238, 66, 36,165,168,104,147,206,157, 59,183,172, 95,191,
- 62, 40,165,216,180,105, 19,180, 90,173, 88,171,213, 66,163,209, 64,171,213, 34, 61, 61, 29,187,118,237,194,239,191,255,126, 27,
-192,246, 82, 43, 49,189,230,210,249,139, 87,234, 14,237,223, 81,120,230,212, 74,232, 53, 28,148,196, 5, 89, 89, 58,100,106, 76,
-192, 89, 15, 0,226, 78,131, 21, 72,225, 95,189, 50,142, 31, 58,162,133, 94,125,217, 16, 81, 85, 16, 42,149, 10, 17,225, 97,136,
-124,247, 6,138,244, 88,216,154,153, 32, 59,228, 13,106, 12, 28, 4,141, 70, 83,230, 12, 82,174, 92, 57,240, 60,143,230,205,155,
-231, 15,154,254, 92,145,149,148,148,132,147, 39, 79,162,126,253,250,104,218,180, 41,162,162,162, 16, 18, 18,130, 14, 29, 58,228,
- 95,243,236,217, 51, 60,121,242, 4,110,110, 37, 27, 5, 19,147,117,103, 34, 35,158,246,234,210,165,139,232,222,189,123,160,148,
-194,221,221, 12,102,166,114, 16, 70, 2, 47, 47, 59, 0, 57,218,191, 89,179,102, 72, 79, 15,209,167,164,208, 51,165,196,229, 30,
- 66,200, 49,141, 70,243,182, 73,147, 38, 78,239,222,189,195,196,137, 19, 5,251,247,239,207, 51, 25, 99,218,180,143, 39, 73, 40,
-149,197,119,205, 87,173,230,249, 99,101,189,101, 83,169,172, 98, 37, 51,155,234,168,236,222, 2, 0,208,186,227, 80, 84,174, 82,
- 30,233,137,207, 43,169,148, 97,221, 68,130, 20,203,231,107,163, 2,101, 29,124,135,168,226,175, 5, 3, 48,196,113, 47, 85, 6,
-239,143, 11, 23, 14, 56,112,236,196,217,145,237, 59,118, 22,234, 56,189,222,183,130,208,226,224,209,211,241, 81, 31,194,215, 32,
-252, 92,192, 95,246,190, 18,173,118, 92,122,122, 58,228,114, 57, 2, 2, 2,212, 29, 58,116,144, 48, 12,131,183,111,223,230, 11,
- 44, 59, 27, 43,239,134,117,124, 61,127, 94,181,235,188, 92, 34,145,180,109, 86,219, 43, 48,248, 67, 36,165, 36,172, 56, 94,141,
- 78,119,241,197,211,103,205,109,157,170,176, 33,215,238,193,186,113,123,168,213, 12,148, 26, 30,106, 61,160,103, 69,112,172, 81,
- 15, 22,110, 94,160, 0, 30,222,187,173, 83,235,116,231,141,117,140, 17, 70,252,167,173, 88,180, 36,113,148,251, 63, 25, 64,216,
-146, 37, 75, 18, 11, 88,151, 18, 0, 60, 3,224,151,123, 93, 66,161,251, 18,144, 51, 27,176, 78, 1,158,132, 2, 66,171,224,127,
- 77,161,107, 62,171,225, 87,170,155, 6, 0,176,177,177,177,171, 89,179,182,219,230,173, 7, 64, 41,197,235, 39, 43,144, 18, 31,
-132,217,139,239,186,185,184,184, 52,141,140,140,188,110,200,195, 56,142,219,191,109,219,182,201,245,106,213,172, 89,201,197, 5,
-207,194, 66, 33,162, 28, 68, 28, 7, 70,171,134,128,211,192,197,151, 3, 67, 20,136,142, 78,195,210, 61, 7, 2, 56,142,219, 95,
- 26,175,103,251,206, 88, 16,153, 6, 66, 8,126,245,247,133,216, 84, 1,145, 92,129,239, 79, 92,201, 23, 85,167, 22, 76,135, 88,
-161,128, 91,189,210, 29,184, 83, 74,179, 77, 77, 77, 31,189,120,241,162,142,175,175, 47, 38, 79,158,140,176,176, 48,240, 60,143,
-184,184, 56, 85, 76, 76, 76, 84, 66, 66, 66, 24,128,163, 0, 54, 27,226, 41, 92,164, 86,173, 62,117,120,231, 88,255, 70, 77,109,
-186,116,251, 29,199, 14, 77, 66,106, 90, 58,178,245, 50,100,169,244,200, 82,179,176,178,174,134,122,213,171, 35, 58, 42, 30, 47,
-239,157,207, 20,168,179, 87,148,197,122,197, 48, 12,158, 61,123, 6, 87, 39, 83,188,185,121, 29, 54, 38, 66,248, 57, 57,192,169,
- 97, 35,132,132,132,148,202, 33,100,161,255,246,219,111,243, 61,185,183,105,211, 38,116,192,128, 1,142,147, 38, 77,194,214,173,
- 91,113,251,246,237, 79, 6, 94, 55,109,218, 20, 55,110,220,152, 15, 96,110,105, 70, 60,141, 70, 3, 79, 79, 79, 60,124,248, 16,
-151, 46, 93, 66,139, 22, 45,208,180,105, 83, 60,127,254, 28, 23, 46, 92,192,147, 39, 79, 64, 8,129,181,181, 53,116, 57,162, 89,
- 87, 28,153, 86,139,131,191, 44,219, 54, 99,213,170,223,125,250,247,239,143,195,135,247, 97,232,144,170, 32,140, 4,132, 72,208,
-185, 83, 85, 44, 88,248, 16,245,234, 53,131,141,141, 16,171, 86, 30,127,175, 84,114,187, 12,136,202,159, 47, 92,184,224,164, 82,
-169,144,154,154, 74, 21, 10, 5, 73, 74,202,153,161, 90,148, 5, 43, 59, 59, 91, 90, 28,209,139,199,175, 86,164,102,208, 20,154,
-249,164, 91,178,254, 73,181, 22,109, 35,208,186,227, 16, 92, 60,181, 29, 87,206, 95,130,149, 32, 44, 20,242,140,179,137,161,137,
-233, 49, 89,238, 27,188,106, 13,103, 35,179,206,111, 24,223,197,146,117,116,228, 15, 78,251, 61, 45,181,132,244,166,132, 16,146,
- 28,184,251,196, 81,138,206, 13,252,235, 85,241, 45,239, 40, 78, 73,140,167,135,142,159, 13,208,134, 30, 62,153, 39,172, 74, 91,
- 21,129, 82,186, 96,218,180,105,115,114,255,239,152, 53,107,214,240,165, 75,151,218,198,198,198,230,143,193,138, 79, 76,190,210,
-160,195, 56, 46, 41, 53, 77,179,109,213, 79, 61,101, 82,137,120,214,210,109,215,116, 44,238, 21,199,171,231,249,245,189, 39,206,
-158, 16,252,250,137,115, 69,153, 24,199,127,154,139,103, 23,174, 66,199,136, 48,234,210,125,168,181, 28, 82, 19,147,112,121,216,
- 24, 40,236, 45,241,251,181,195,113, 60,207,255, 97,172, 98,140, 48,226,191,139, 18,180, 72, 81, 99, 92,226, 12,184,238,161, 1,
- 60,127, 11, 12,154, 82,151,152,152, 24,127,227,198,125, 92, 59,245, 51,174,159,250, 25, 47,159, 60, 67,116,148, 6, 81,113, 42,
-152,153,153,221, 45, 65,137,182, 42, 92, 41,100,103,103,119,159, 53,123, 78,172, 84,102,130, 38, 45, 91,194,193,214, 14, 38, 34,
- 33, 88, 61, 15,150, 8,145,153, 96,129, 55,207,179, 49,117,219,238,248,204,236,236,238,133, 43,135,194,156, 5,142,131, 16, 2,
-137,153, 41,196, 10, 83, 72, 76,205, 62,234, 46,148,154,153, 65,106,106, 6,129, 88, 92,212, 96,248, 79, 56, 51, 51, 51,123,244,
-236,217, 51, 37, 45, 45, 13,195,135, 15,199,245,235,215,159,156, 63,127,222,236,217,179,103,178,248,248,248, 42,148,210, 54,148,
-210,141,197,137,171,194,156,201,201,239, 50,168, 94,221,103,201,156, 31,148, 42,189, 53,122, 13,218, 15, 57, 19, 1, 61,199,131,
- 2,112,178, 18,163, 97,171,133,136,215, 52,192,254, 13,139,178,121,173,170,127, 65, 31, 88,133, 57, 41,165,212,218,218,250,163,
-119, 97, 24, 6,215,174, 93, 67,175,158, 61,208,182, 91, 87,216, 86,114,133, 93,171,246,104, 59,124, 20, 54,110,220, 8,134, 97,
- 96,101,101,245,145, 69,163, 32,231,142, 39, 84,184,231, 57, 37,123,158, 83,178,253, 49, 21, 0, 24,184,123,247,238, 95,252,252,
-252,174,222,190,125,123, 5,128, 62, 5,227,187, 64, 88,230, 21,180, 94, 21,147, 70, 51, 39, 76,152,160, 12, 14, 14,134, 92, 46,
-135, 94,175,199,237,219,183,241,251,239,191,227,215, 95,127,197,147, 39, 79, 96,109,109, 13, 55, 55, 55,168,213,106, 60,124,248,
- 80, 9, 96,102, 9,121,137, 79, 72,208,247, 88,187,118,105, 82,199,142,141,177,109,219, 58, 56, 56, 52,128, 80,224, 0,129,208,
- 22,114,133, 39,182,108,254, 5,223,124, 83, 19, 39,142, 31, 72, 78, 76,210,247, 40,236,117,189,152,112,170,238,223,191,143, 13,
- 27, 54,160,103,207,158, 81,189,122,245,226,210,210,210,242, 45, 88,121,171,164,207,203, 29, 67,166, 86,171, 37,197,113, 14,255,
-233, 69,212,143, 63, 7, 44,136,139,141,170,127,253,234,221,111,175,156,191,132,247,193, 87,112,229,252, 37,220,188,114,103, 90,
- 92,108, 84,253,154,117, 61, 68,221,135,143,253,113,231,145,195,172,194,204, 17, 59,143, 28,102,251,141,251, 97, 81,237,182, 45,
-102,150,150,231,115,211,145,102,198,199, 77, 95,188,226,183, 76,189, 86,197, 44, 95,179, 62, 90,153, 16, 51, 19,121, 83, 43,139,
-177, 94, 21,228,204,206,206,222,168, 84, 42,157,148, 74,165,147, 74,165,154, 25, 22, 22,214,100,242,228,201, 9, 28,199,229, 91,
- 72,227, 95, 30,191,251,234,230,246,197,118, 54,150,178, 6,117,124,170,174,220,120,232, 90,120, 68,220,159,121, 62,176,138, 73,
- 35, 85,166, 82,213,163,107,247, 1, 89,169, 41,106,248,255, 48, 13,188, 84, 1, 53, 7,232, 40, 11, 61, 17,224,197,207, 43, 33,
-179, 50,197,158,208,199,217,105, 58,109,143,130, 62,176, 74,121,247, 47,105, 33, 27, 57,141,156, 70,206,127, 32,231,191, 13,130,
- 60,197, 88,240,183, 48,156,157,157,155,116,233,220, 10,205, 58,206, 2,165, 20, 65,143,151, 33, 37,225, 53,156, 29, 36, 8, 9,
- 79,247, 7,112,221,208, 7, 82, 74,195, 9, 33,245, 39,204,156,117,164, 87,155,150, 94,190,149, 42, 73, 42, 86,172, 0,185,157,
- 29, 18, 19, 19,112,235, 94,160,110,209,222,131, 1,185,226,202,144,165,114,192,243,124,206,224,117, 0, 45, 39, 76, 5, 97, 89,
- 32,215, 29, 67, 94,133, 88,169, 78, 3, 16,129, 0, 28,229,161, 86,171,169, 1,225,140, 36,132,244,232,223,191,255,229, 83,167,
- 78, 49,109,219,182,173,113,244,232, 81,254, 75, 34, 59, 51,238,205, 85,133,189, 71,199, 69,211, 71,238,175,223,162,171,153,187,
- 79,109, 81,237,138, 44,180, 58,130,232,168, 15, 56,117,228,129, 54,240,254,249,116,170, 87,245,201, 74, 40,121,169, 28,173, 86,
- 27,110,111,111,111, 63,127,254,124,232,245,122,232,245,122,112, 28,135,196,196, 68,220,189,123, 23,213,234,212,131,215,144, 97,
- 72, 72, 72,192,218,181,107,225,226,226,130,197,139, 23, 35, 57, 57, 25,122,189, 62,220,192,180,226, 0,156,207,221, 62, 18,178,
-121,173,140,210,186, 7,221,220,220,196, 42,149,170,134,163,163,163,128, 16,178, 90,163,209, 12,153, 62,125,186,195,226,197,139,
- 81,181,106, 85, 36, 38, 38, 66, 46,151,195,221,221, 29, 9, 9, 9,120,240,224, 1,151,157,157,189, 1,192, 2, 74,105, 66, 41,
-225,123, 75, 8,169, 63,126,252,247, 71,126, 89, 58,210, 93,165,110, 38,182,178,106, 4, 74,245, 72, 72, 8, 67, 70,250,109,237,
-194, 5,219,223,197,197,235,186, 83, 74,131, 13, 76,166,185, 99,199,142, 5,114,151,202, 9, 9, 9,121,234,229,229,229, 94,156,
- 5,203, 16,172, 60, 24,169, 2,176,119,249,196, 6, 19,211, 19,159,187, 91, 9,194, 66,235,251,242,107, 87, 30,140, 84,205,159,
-104,241,115, 98,216,245, 55, 49, 89,231, 55,236, 60,114,152, 29,212,173, 7,231,162, 8,158, 38,181,163,135, 90,116, 42, 53,125,
-104,141, 26, 53,202, 17,146, 92, 57, 62,233,245,163,161,195, 71,246, 54, 23, 41,207,248,185, 36,185, 49,229,107, 74,159, 60,121,
- 18,106,232,154,158,133,120,223, 16, 66,154, 76,159, 62,253, 60,165,244,163,177, 7,241,137,201, 87,252, 59,142,165,169,169,105,
- 79,227, 3,143,191, 48,128,235, 1, 33,164,165,111,181,154,135,127, 89,188,212,190,217,132,201,130, 55, 87,175, 1,156, 14, 31,
-174, 95, 3, 39,209,240, 43,239, 92,140, 75,211,106,187, 25,189,184, 27, 97,132,209,122, 85,146, 22,249,159, 20, 88,165, 33, 50,
- 50,242,186,155,171,203,133, 55,111,154,180, 41,239, 98, 11, 0, 8, 9,141, 70, 84,156,250,130,161,221,131, 69,136,172,218,187,
- 79,158,233, 35,145, 72, 58,146, 92, 87, 12,244, 51, 22,123,214,235,245,145,149, 42, 85, 42,230,108,209,174,154, 56,142,139, 51,
- 48,156,215, 8, 33, 3,220,220,220,150,126,248,240,225, 8,165, 52,235, 75, 35, 60, 51,238,205, 85, 43, 43, 55,215, 59,151, 14,
-255,112,239,218,169, 86, 84,175,169, 6, 0, 68, 32, 46,211, 98,207,153,153,153, 35, 71,143, 30,189, 81, 40, 20,150, 71,238,152,
-178,188, 25, 95, 28,199,177, 90,173, 86,202,113, 28, 11,128, 48, 12,163, 23, 10,133,170, 35, 71,142,232,245,122,125,184, 90,173,
- 30,249,165, 31,128,161, 56,115,230, 76, 69, 75, 75,203, 54,132,144,158,148, 82,207,140,140, 12,245,172, 89,179,238, 30, 57,114,
- 36,173, 66,133, 10,237, 58,116,232, 64,172,172,172,240,240,225, 67,154,148,148,116, 8,192, 76, 74,105, 72, 25,194, 19, 66, 8,
-241, 27, 57,234,143,190, 86, 86, 27, 59, 80, 10, 63, 80, 16,194,224, 69, 90, 26,127, 38, 59,155,251, 51, 87, 40, 26,202,167, 47,
-100, 57, 91, 24, 16, 16,176, 29,128,176,168, 49, 88,101,130, 73,230, 9,149, 50,172, 7, 81,100, 31, 93,185, 38, 82, 5, 0,115,
- 87,165,166, 1,216, 50,190,155, 21,255,234,241,150,101,206,102,193, 63,173, 57,154,188,205, 16,186,154, 53,107,186, 50, 12,211,
- 7,128,175,157, 36,181,138,173, 56,141, 35,132, 54, 39,132,177, 1,240,220,219,219,251, 20,128,200,207, 76,231, 55, 0, 42, 20,
- 62, 30,255,242,248, 93, 0,119,203,200,245,128, 16, 82,101,226,148, 73, 99,196, 66, 97,107,112, 92,245,133,199, 14, 82,227, 98,
-207, 70, 24, 97,196,191,222,130,101, 8,222,133, 68,182, 5, 0, 15, 15, 15, 26, 28, 28,252,197, 10, 51, 87, 64,237, 67, 41, 94,
-218, 75, 67, 98, 98, 98,237,191, 89, 81,239, 5,176,247,107,114,230, 10,168, 5,185,219,231,134,235, 5,128,122,255,215,173,141,
-220,190,242,249,197, 93,211,166, 77,155, 15, 90,173,246, 82,110, 69,111, 1, 32, 89,167,211,157,211,104, 52,113,132,144,218, 43,
- 87,174,204,243, 84,191,144, 82,250,232, 51,195,193, 3,216,147,187,125,237,119,220,227,228,228, 52,201,218,218,218, 77,165, 82,
-137, 85, 42,149,168,160,246,151,201,100, 9,134,114, 89,152,146, 29, 34, 65,138,181,133, 41,249, 68, 64, 89, 57,227,176, 50, 43,
-160,170,149, 51, 14, 27,202,247,228,201,147,144, 26, 53,106,236,102, 24,166, 18,165,212, 30,160,230,148, 34,129, 82,154, 40, 16,
- 8,162, 2, 3, 3,163,254, 41, 5, 77,174,128, 90,145,187, 25, 97,132, 17, 70, 24, 5, 86, 97,188,121,243,134, 24,163,205,136,
-130, 34,171,164,243, 97, 97, 97,106, 0,119,114,183,194,247, 62, 2,208,233,159,254,142,209,209,209, 53,191, 6,207,240,159, 94,
- 68, 1,248,161,118, 17, 75, 46,207, 93,155,156, 1,224,199,230,157,203,198,249,244,233,211,112, 0,225,198,156,104,132, 17, 70,
- 24,241,207, 2, 99,140, 2, 35,140, 48,194, 8, 35,140, 48,194,136,175, 11, 2,160,200,153, 0,101, 89, 41,251,115,102, 19,148,
-198,111,228, 52,114, 26, 57,141,156, 70, 78, 35,167,145,243,223,199,249,159, 65,222, 44,187,191, 99, 3,208,202,200,105,228, 52,
-114, 26, 57,141,156, 70, 78, 35,167,145,243,191,182, 9,140, 18,211, 8, 35,140,248,175,226,208,161, 67, 6, 45,250,217,247,167,
- 45, 29, 21, 10,203,217,153,233,105, 75,247,173, 24,122, 52,239,120,207,158, 61, 57, 99, 44, 26, 97,132, 17, 69,161, 88,129,229,
-234, 90,206,155,225,248,134,148, 50, 44,101,168,142,164, 43,247,191, 75, 78,254,200,125, 64,249,242,229, 45,132, 12, 58, 17, 74,
-229,132,240, 28,207, 50,183, 67, 66, 34, 2, 13,125, 56, 33, 68,108,105,105, 57, 86, 36, 18,181,210,104, 52, 46, 12,195, 68,170,
-213,234, 75,217,217,217,235, 10, 59, 28,252,191, 68,213,170, 85,251, 93,187,118,205,162, 81,163, 70,106,153, 76,166, 87, 42,149,
-130,115,231,206, 73,190,249,230,155,212,183,111,223,126,214, 12, 67,103,103,231, 22, 91,182,108,169,220,182,109, 91, 84,169, 82,
- 37,171, 79,159, 62, 34,127,127,127,209,240,225,195,223, 71, 69, 69, 93, 41, 11, 23, 33,196,155, 16,178,139, 16,194,242, 60, 63,
- 48,119,134,225, 87, 7, 33,132, 1, 48, 2, 64, 87, 0,174, 0, 66, 0, 28, 3,176,201, 16,111,246, 69,240,245, 0,208, 30,128,
- 95,238,161,103, 0,206, 80, 74, 15,127, 65, 24,123, 0,104, 79, 8,169,145,107,161,125,250,181, 56,133, 66, 97, 13, 0,208,233,
-116, 79,255, 41,225, 36,132, 12,145,201,100,223, 1,128, 82,169,220, 76, 41,221, 94,230,192,108,244,162, 0,224,189, 44, 8, 0,
- 16,248,147, 39, 12,221, 15,124, 95,198,217,196,197, 60, 11, 35, 95,145, 47,136,203,246,253,251,247, 95,252,231,159,127,206,165,
-148, 30,255, 59,242,190,131, 67,185,117,191,174,217,228,244,195,216, 97, 75,145,179,130, 67,137,240, 33,164,181,152,101, 59,107,
- 56,238,102, 32,112, 16,128,192,202,202,170,159, 88, 44,110,162,209,104, 28, 5, 2, 65,140, 70,163,185,145,150,150,182,151, 82,
-170,251,226, 0, 6, 17, 75,109, 54, 28, 8,255,215, 58,108,148,129, 90,100,130, 88,120,210,148,146,110,101, 89,118,133,179,179,
-243,136,212,212,212, 76,134, 97, 40,201, 65,110,212,230, 59,107, 38, 60,207, 71, 37, 39, 39,215,254,204, 52,146, 2,152,135,156,
- 53,221,214, 80, 90,114,152,138, 9,231, 15, 78, 78, 78,221,210,211,211,179, 89,150,165, 5,194, 71, 0,128, 97, 24,194,243,124,
-124, 82, 82,210, 64, 99,213, 94, 60,156,156,156, 24,145, 72, 52,136, 97,152,149,122,189,190,114,120,120,120, 10, 0,216,217,217,
-249,197,199,199, 27,215, 2,253,218, 2,171,128, 91,250,102,148,210,235,174,174,229,188,123,118,237,190,120,212,200,209,132,101,
- 25, 4,188,124, 41,248,118,224,144, 54, 86, 86, 86,206, 10,181,218, 11,132,240,217, 82,105,128, 78,167,141, 58,184,247, 79, 83,
-207,170, 85, 57,142,227,177, 97,227, 31,223,184,186,150,155, 97,136,200, 34,132,120, 56, 56, 56,236,154, 54,109,154, 67,231,206,
-157, 89, 7, 7, 7,132,133,133, 89,236,219,183,175,234,111,191,253,214,155, 16, 50, 48,215, 23, 79, 89, 63,228,198, 14, 86, 76,
- 27, 83, 25,105,137, 12, 14, 25, 58, 92,142, 85,226, 2,165,244,230,231, 70, 82,118,118,246,184,236,236,236,122,117,234,212,161,
- 91,183,110, 37,131, 7, 15,166,132, 16,162, 84, 42,119,224, 51, 93, 56,200,229,242,245,109,219,182,117,119,119,119, 15,121,247,
-238, 93,251, 3, 7, 14,156, 25, 52,104,144,171, 92, 46, 15, 6,224, 81, 70,186,237, 73, 73, 73,126, 74,165, 18, 46, 46, 46, 91,
- 1,212,250, 27,196, 21, 1,112,216,202,202, 74,181, 96,193,130,205,205,154, 53,115,142,142,142,230,166, 78,157,218,240,233,211,
-167,237, 8, 33, 93, 13, 21, 89,132, 16, 75, 0, 27, 20, 10,133,201,212,169, 83,111,180,110,221, 58, 84,161, 80, 72,159, 63,127,
- 46,156, 58,117,234, 8, 66, 72, 47, 0,163,202, 82, 8,231,113,218,218,218, 90,204,157, 59,247, 69,131, 6, 13,174,139, 68, 34,
-209,235,215,175,133,211,166, 77, 27,243, 37,156,238,238,238,166,115,230,204,121, 88,163, 70,141, 56,169, 84, 42,122,247,238,157,
-112,198,140, 25,163, 88,150,237,197,243,252,103,113, 90, 89, 89,153,205,152, 49,227, 81,211,166, 77, 19, 36, 18,137, 56, 48, 48,
- 80, 48,125,250,244, 81,101, 9,167,181,181,117,115,107,107,235, 77,177,177,177, 2, 0,112,116,116,172,235,230,230,246, 91,158,
- 63,180, 92,225,134, 92, 81,152,161, 82,169,250, 39, 37, 37,125,226,192,214,123, 89, 16,126,156,179,163,223,143,115,114,246,119,
-230, 30, 47,109, 31, 24,108,112,222,247,174,156, 83,198,140,153,242,251,128,156,223,156,227,127,228, 6,117,125,101, 66,203, 34,
-214, 8, 33, 93, 90,180,104, 49,239,202,149, 43,127, 52,107,214,108,234,238,221,187,237, 34, 34, 34,126, 33,132,148,235,219,183,
-239,224,203,151, 47, 47, 73, 72, 72, 56,244,181,242,191, 88, 36,145, 16,134, 64, 38, 53, 49, 51,228,122, 33,195,116,188,211,165,
-203,119,155, 95,191,174,249, 91, 80, 80,229, 44, 71,199,122,227,199,143,183,239,222,189, 59, 83,174, 92, 57,188,125,251,214,122,
-247,238,221, 94,155, 55,111,238, 70, 8,153, 64, 41,253,240, 37,226, 42, 43, 21,213,212, 26,212,164, 20, 22,127,197, 17, 82, 37,
- 90, 60,145, 7,145, 23,197,137, 44, 66,200,170, 46, 93,186, 12, 60,118,236,152, 98,247,238,221,138, 6, 13, 26,192,222,222, 30,
-132, 16,112, 28, 7,158,231,193,243,124,238, 90,159,238, 95, 50,131,124,245,205,155, 55, 71,188,125,251, 22,195,135, 15,103, 1,
-204, 42, 99,249, 51,169, 91,183,110, 29,142, 28, 57, 34, 59,120,240,160,172, 78,157, 58,112,112,112, 0,128,252,240, 81, 74, 81,
-185,114,229,127, 93, 37,237,234,234, 74,197, 98, 49, 88,150, 5,165, 20, 60,207, 67,167,211, 65,163,209, 68,168,213,234,110,241,
-241,241, 79, 12,229,178,183,183,103,164, 82,233, 96,153, 76,182,149,101, 89,232,245,250,171,110,110,110, 45, 56,142,131, 68, 34,
-185, 10,252,149,127,254, 47, 80, 88,139,252,107, 44, 88, 5, 87,176,102, 56,190,225,168,145,163, 73,159,126,125, 99,223,134,188,
-231, 5, 66,113,191,115,231,207,155,120,123,123, 51,234,117,235,160, 79, 72,128,110,226,196, 6,151, 46, 93,210,245,234, 55, 64,
- 41,100,201,118,215,202,149, 76,246,239,221,231,112,228,240,161,134, 0, 2, 75,179, 92, 57, 56, 56,236,186,118,237,154,115,229,
-202,149,145,154,154,138,176,176, 48,100,101,101,161,119,239,222,194,134, 13, 27, 58,247,236,217,115, 23, 33,164,145,161,150, 44,
- 66,136,125, 21, 23,193,169, 95,231,244,246,248,166, 77, 67,185,115, 57, 55,208, 88, 21, 34,222, 5,213, 57,117,237,222,120,119,
- 11,230,205,219, 52,218,145, 82, 26, 87,214, 72, 74, 76, 76,252,169, 91,183,110,135,155, 55,111,110, 43,145, 72,224,228,228, 68,
- 58,119,238, 28, 31, 29, 29, 61,255, 11, 50, 18,114, 91, 93, 92,193,223,194,203,248, 24, 8, 23, 75, 75, 75, 88, 90, 90, 2,128,
-243,151,100,136, 94,189,122,177,225,225,225,223,241, 60,239, 85,240,184,157,157, 93, 85,142,227, 82, 62,124, 8,175,170,212,104,
-189, 70,143,157, 49,175, 79,207, 86, 22,119,238,220,225,219,182,109,171,190,113,227,198, 8, 0, 27, 12,124,204,134,234,213,171,
-191, 91,189,122,181, 58, 56, 36,180, 82,192,171, 96,200,165, 34,174, 92,185,114,146,192,192, 64,245,236,217,179,179,214,172, 89,
-179, 1, 64,175, 50, 4,125,195, 55,223,124,147, 50,107,214,172,248, 55,239, 66, 29,159, 5,190,161, 10,137, 72,103,111,111,199,
- 62,122,244, 72,245,203, 47,191,240, 75,150, 44, 41, 51,231,128, 1, 3,162,167, 78,157, 26,154,144,148,234,156,146,154, 65,197,
-217,217, 90, 23, 23, 23,193,213,171, 87, 51,127,255,253,119,245,212,169, 83,203,204,217,172, 89,179,216,133, 11, 23,134, 7, 5,
-135, 56, 61, 9,120, 13,133, 68,168,115,112,176, 99,159, 60,121,146,189,100,201, 18,237,178,101,203, 12,226,148,203,229, 59, 15,
- 28, 56, 32, 56,126, 60,199,104,115,247,238, 93,198,213,213,213,164,224, 53, 74,149, 26, 12, 1, 18, 19, 19, 77,252,253,253,119,
- 2,112, 41,142,111,208,160, 65,177,101,201, 43,131,212,203, 12,182, 90,229, 9,171,209,163, 71, 23,231,155,107,128,119, 25, 68,
- 86,251,246,237,103,158, 62,125,218,109,247,238,221, 43,247,236,217,163, 1, 0,169, 84,106,179,111,223,190, 37,189,123,247, 70,
-239,222,189,103, 3,248,106, 2,139,163,156, 22, 0, 36, 82,137, 36, 40, 40,136,120,122,122,150,232, 8, 89,203,243,143, 54,191,
-126, 93,251,123, 79,207, 58,201, 60, 95, 69,244,205, 55,153,147, 38, 77, 74, 76, 79, 79, 71, 88, 88, 24,180, 90, 45, 6, 15, 30,
-204, 54,107,214,204,169,119,239,222,107, 9, 33, 61, 40,165, 90, 3,172, 56, 43,156,157,157, 71,164,165,165,101,230, 89,113,188,
- 42,153, 10,154,212,208, 75,170, 87,209,137, 69,172, 94,212,105, 34, 79, 46,172, 35, 89,158,149,113, 11, 0, 68,217, 72, 16, 1,
- 41, 69,148, 65,203,186,116,233,210,251,216,177, 99,150, 0,112,232,208, 33,100,103,103,163, 66,133, 10, 16,137, 68, 16, 10,133,
- 16, 10,133,249,255,203, 82, 54, 17, 66,166, 40, 20,138,246,153,153,153,199, 40,165,107, 1,184, 55,106,212, 8,174,174,174, 0,
-208, 48,247,154,129, 44,203,246,229, 56,110, 19,165,244, 88, 9, 92,227,187,116,233,210,250,200,145, 35,166,121,225,212,233,116,
-112,117,117,133, 72, 36,130, 88, 44,206, 15,231,191, 17, 98,177, 24, 82,169, 20, 2,129, 0,148,210,188,245, 65,175,233,116,186,
-241, 0,222, 91, 90, 90, 50, 41, 41, 41,134, 54,110, 89,129, 64,176,178, 64,218, 86,227, 56,110,187, 94,175, 47,175,213,106,205,
-255, 9,239, 91, 80,139,252,175,167, 29, 83, 72, 57, 54,203,121, 65,134,101, 89, 6,239, 67,194,116,205,155,183, 28, 20, 30, 30,
-174,168, 87,175, 30, 35, 20, 10,145,117,229, 10, 84, 15, 31, 66,161, 80,160, 91,183,110,194, 27, 55,110,152,153, 41,204,134,135,
-190, 15,205, 96, 89, 6,148, 50,165,142,105,176,180,180, 28, 59, 99,198, 12, 7,119,119,119,232,245,250,124, 15,228,122,189, 30,
- 17, 17, 17, 80, 40, 20, 24, 56,112,160,157,137,137,201, 88, 3, 51, 77, 69, 15, 87,187, 39,215,206,108,172, 53,105, 84,123,185,
-135,201, 69,200, 35, 38, 64,113,232,123,120, 69,159,195,180,174,245,228, 23,214,207,174,233,230,100,245,132, 16, 82,177,172,145,
-164, 82,169,110, 5, 4, 4, 12,191,126,253, 58, 15, 0, 87,175, 94,165,175, 94,189, 26,249, 37,173, 78,158,231,145,154,154, 10,
-158,231,217,220,253,188,223,255,179,204,208,171, 87, 47, 54, 34, 34, 98,164,151,151,151,199,253,251,247,113,226,196, 9, 92,186,
-116, 9,231,207,159,135, 88, 44, 46,223,179,103,207,132,132,164, 84,203,212,212, 52,105, 76,228,187,186,251, 54,109,114,138, 14,
- 13,189,243,231,159,127,102, 34,167,219,208,144,180,234,161, 80, 40,100, 43, 87,174,204, 50,181,112,232, 80,175,126,227, 58, 66,
-169,153,141, 72,162,176, 77, 75, 75,215, 62,123,246, 44,104,249,242,229, 30, 85,171, 86,181,204,237, 70, 51,136,211,198,198,198,
-124,230,204,153, 90, 19, 83,219,198,117,234,213,247, 21, 75,205,172,132, 98, 19,171,134, 13, 27,118, 11, 10, 10, 10,157, 59,119,
-174,115,141, 26, 53,236,202,194, 89,185,114,101,211,169, 83,167,170,205,204,173, 90,123,123,121,215,108,224, 95,183, 79,173, 90,
-181, 6, 10, 4, 2, 46, 46, 46, 46,120,210,164, 73,206, 77,155, 54,181, 46, 11,167,165,165,165,233,194,133, 11, 53,149, 92,171,
-246,232,212,169, 99,115,169,137,133,149, 88,102,106,165, 84, 42,185, 87,175, 94,189, 93,176, 96,129,179,159,159,159,141, 33,156,
-217,217,217, 66, 27, 27, 27,248,250,250,194,219,213, 21,105,105,105, 56,114,228, 8,182,111,223,142, 45, 91,182, 96,239,222,189,
-168,221,168, 13, 76, 77, 77, 17, 29, 29,141,244,244,116, 97, 81, 60,249,221,116,127, 7, 54,122,209, 63,248,177, 3, 70,143, 30,
- 29, 85,130,184,194,232,209,163,163,198, 76,249,125, 64, 94, 23, 98, 73,150,171,150, 45, 91, 62, 63,115,230,204,187,221,187,119,
-195,219,219, 27,109,219,182, 21, 3,192,216,177, 99,197,189,123,247,198,129, 3, 7,112,232,208,161, 64, 15, 15,143,219,132,144,
- 46,134, 4,115,224,192,129,141,122,245,234,117,179, 87,175, 94, 79,251,244,233,179,105,228,200,145, 78, 5,207,199, 68, 71, 62,
-210,104, 52,240,171, 89,199,100,225,214,251,253, 75,227,123, 5,236,222, 20, 20,180,125,233,203,151, 31,102,123,123, 91, 84, 8,
- 13,181,218,177, 98,133, 77,222,226,217, 58,157, 14, 17, 17, 17,176,180,180, 68,255,254,253,109, 36, 18,201, 64, 3,242,207,170,
- 46, 93,186, 12, 9, 15, 15, 87,108,222,188,217,241,233,211,167, 78, 49, 49, 49,142,151, 47,157,183,253,113,242, 88, 83,115,133,
- 88, 28,157,144, 35, 80, 67,163, 33, 15,122,143, 70,148,194,162, 96,183,225, 71,173, 50, 23,151, 17,199,142, 29,115, 40, 80, 46,
-127, 36,168, 10,255, 7, 67, 25, 43, 31,178,173, 98, 23, 18,111,225, 77,126, 40, 33,156, 29, 14, 30, 60,184, 60, 52, 52,180,105,
-199,142, 29,215, 16, 66, 42, 20,113,141,109,243,230,205, 55,191,126,253,186,109,151, 46, 93,142, 18, 66,218, 20,219,122,116,113,
-233,118,236,216, 49,235,188,125, 27, 27, 27, 72,165,210, 79,196,149, 72, 36, 2,195,252,251, 60, 15,177, 44, 11,129, 64,144,159,
- 14, 2,129, 0, 44,203, 94, 96, 24, 38,130, 97, 24,173,161,226, 42, 87,188,176, 28,199,245,227,121, 62,147, 16, 2,161, 80, 8,
-137, 68,210, 81, 44, 22,251, 10,133,194,127,196,251, 22,212, 34,255, 26,129,149,235, 48,242, 26, 0, 80, 66,178,158, 7, 4, 8,
- 89,177,120,192,159,123,246, 72, 68, 34, 17, 62,124,248,128,192,192, 64,100, 95,190, 12,229,157, 59,136,139,139, 67,102,102, 38,
-236,237,237,177,113,235, 86,185,134,163, 67, 95,191,121,195, 82,230,175,241, 4,197, 77,213,148, 72, 36,173,186,119,239, 94,172,
- 16,139,142,142, 70,251,246,237,133, 44,203,182, 42, 34,131, 92, 42,148, 24,196,201,150,156,188,124,120,161,163,163, 56, 16,120,
- 59, 9,200,120, 2, 80, 53,160,215, 0, 81, 47,128,211,243, 81, 33, 51,136,156, 95, 56,200,193,217, 68,112,146, 20,106,138, 25,
- 48, 77,213,213,211,211,115,203,128, 1, 3, 24, 0,104,209,162, 5,241,244,244,220, 68, 8,113, 45, 33, 35, 95, 42,165,114,188,
-151,146,146,130,222,189,123, 91,187,185,185, 93,234,221,187,183,117,222,241,207,229,204,235, 57,242,241,241, 73,146,201,100,123,
- 9, 33, 18, 3, 62,184,124,206,240,240,240,239, 60, 61, 61,171,108,222,188,153,101, 89, 22,155, 55,111,198,254,253,251,113,235,
-214, 45, 36, 37, 37, 41, 38, 77,154,100,126,234,210,189,115,183,111, 61, 56,177, 98,214, 20,235,110, 45,155,185, 90,166, 37,164,
- 59, 59, 59,183, 66,206,152, 44, 67,194,217,126,220,184,113, 23,158,190, 10,177, 99,133, 34,145, 88, 40,144,217,218, 88, 84,112,
-176,181,172,226,108,109, 89,197, 84, 44,180, 72, 79, 79,127,127,224,192,129, 76,228,140,207, 50,136,115,206,156, 57,207,130, 66,
- 34,172, 25,161, 64, 32, 18,136,196, 22,230, 10,235,206, 29,219, 52, 7, 0, 25, 75, 36,233,233,233, 17, 59,119,238,204, 42, 11,
-231,236,217,179,239,198, 36,164,216,137,164, 82, 86, 34, 17,230,199,165,165,153,194, 94, 46,145,200,178,179,179, 63,108,217,178,
- 37,173, 44,156,211,167, 79,127,248, 50,248,131, 13, 97,192, 50, 32, 66, 75, 75, 83, 59, 91, 11, 83, 7, 59, 51,133,131,148,129,
- 52, 61, 61, 61,108,231,206,157,233,134,112,106,181, 90, 97,124,124, 60,130,130,130, 80,174, 78, 29, 92,186,116, 9,229,203,151,
- 71,239,222,189,209,183,111, 95,200,100, 50,180,240,175,134, 25, 51,102,224,221,187,119,208,235,245,226, 50,230, 37, 56, 57, 57,
- 93, 43,238, 92,222, 56,170,226, 56,189, 43,147,124,113,101, 8,119, 81,215, 21,230,108,223,190,253,204,203,151, 47,187,237,218,
-181,171,243,192,129, 3,111,237,218,181, 11,245,235,215,199,171, 87,175, 80,169, 82, 37,236,216,177, 3,125,251,246,189,181,118,
-237,218,206,143, 31, 63,246,171, 92,185,242,140,210, 56,251,244,233, 51,166, 70,141, 26, 87, 98, 99, 99,253,147,147,147,125,143,
- 28, 57, 50,180, 91,183,110,239,251,245,235,215, 50,223,130,165,211,237, 57,125,226, 48, 58,116,238,142,170, 62,190, 27, 6,207,
-216, 93,173, 36, 78, 74, 41,125, 9,108,218, 30, 19,147,176, 71,165,202,238, 45, 20,154,152,220,191,111,117,232,143, 63,108, 10,
-174, 4, 16, 21, 21,133, 78,157, 58, 9, 69, 34, 81,227,146,194, 73, 8, 89,214,181,107,215,222, 71,142, 28,201,183, 54,221,185,
-115, 7, 47, 94,188, 64, 88, 88, 24, 82, 83, 83,209,114,100, 38, 70, 47,201,225, 30,189,132,162,205, 88, 42, 47,137, 51, 51, 51,
- 83,121,244,232, 81,244,234,213, 11, 35, 70,140, 64,229,202,149,243, 69, 86, 97,113,117,253,193, 69,136,125,147,173, 26,109,194,
-144,214,199, 97, 43,119,193,244, 98,194, 41,106,213,170,213,198,206,157, 59,131,227, 56,168, 84, 42, 30, 64,114, 81,186,161, 82,
-165, 74,194,114,229,202,225,231,159,127,134,133,133,197,106, 66, 8, 91, 20,103, 86, 86,150,250,204,153, 51, 24, 56,112, 32, 38,
- 76,152,128, 42, 85,170,228,135,115,231,238,253, 54,125,135,142,242,168,213,168,137,159,119,173,250,213, 51,212,108, 29,145,137,
-213,119,164, 8,115,219,223,225, 58,224,255, 7,103, 94,183, 96,222, 70, 8, 1,203,178, 75, 89,150,237,201, 48, 12, 45, 11, 39,
-207,243,122,189, 94,127, 95,175,215, 15,206, 19, 89, 44,203,130,101,217, 50,139,211,191,203, 21, 67, 65, 45,242,175,233, 34, 44,
-184,228,137,142,199,201, 1,131,134,118,186,116,249,178,137, 88, 44, 70,104,104, 40,226,226,226,176,127,239, 94,238,160,157, 93,
-182, 80, 40,164,253,183,111, 55, 29,246,221,119, 68, 40, 20,194,211,211, 19, 61,123,246,148,245,232,221, 47,222, 86, 40,220,111,
-128, 66,117,204,235, 63, 31, 58,116, 40, 86,173, 90,245,209,249, 31,127,252, 17,123,247,238, 5, 33,196,193, 16,195,203,248,249,
- 93, 93, 44, 43, 91,196,209, 39, 59,133,132, 53,177, 2,107, 2, 48, 34, 64,202,230,136, 44,134,133,250,241,149,100,166,254,129,
-244,238,141,179,157,215,156,219,216, 11,192, 1, 67, 35,201,201,201,105,246,149, 43, 87,108, 39, 77,154, 68,211,211,211, 73, 76,
- 76, 12, 93,188,120,177,237,152, 49, 99,102, 3, 24,244, 57, 17, 31, 29, 29,189,176, 67,135, 14,109, 79,159, 62,109, 63,104,208,
- 32,115, 0,232,208,161, 67, 92,116,116,244,194, 47, 73, 80,145, 72,196,190,124,249,210,106,229,202,149,125, 39, 79,158,236,227,
-235,235,235,144,154,154, 26, 22, 21, 21,213,179, 52,139, 27,207,243, 94,155, 55,111, 6,203,230,148,115, 12,195, 64, 44, 22, 67,
- 44, 22,195,204,204, 44, 37, 36, 36,132,175,104, 47, 19,103,197,197,164, 89, 10, 44,133,196,209,193,218,194,193,177, 89, 82, 82,
-210,125, 0,134,154,151,253,218,181,107,247,252,206,211,183,220,168, 65,205,171,152,136, 24,161,169, 76,202,202,196, 66, 66, 40,
-229,180, 58,141,255,250,157, 87,183,121,120,120,120, 27,106, 34, 38,132,212,168, 95,191,254,229,167,175, 62,224,233,139,119,145,
-182, 86, 38,214,237, 90, 52,172,154,119,190,122,221,250,125, 11, 92,158,106,208,135, 33, 16,248,213,169, 83, 39, 50, 46, 57, 11,
-118, 86,230, 31, 9,105, 75, 27,187, 86, 0,144,149,150,182,190, 92,185,114,158, 2,129,160,146,161,225,108,220,184,113,204,227,
-192,112, 56,216, 90, 89,229, 30,254,104, 76, 79, 98, 76,204, 6,119,119,119, 79, 67, 44,173, 26,141, 70,114,236,216, 49, 60,126,
-252, 24, 11,125,124,240, 99,197,138,176,181,181,197,229,203,151, 65, 41,133, 66,161, 64,106,106, 42, 14, 28, 56,128,150, 45, 91,
- 66,163,209,200,139, 19, 74,121,227,171,138, 19, 66,209,209,209,127, 75,139,178, 48,183,247,178, 32, 4,150,176, 82,230,153, 51,
-103,118,239,222,189,123,137,183,183, 55,126,248,225,135, 70,171, 87,175,190,229,235,235,219,168, 69,139, 22,184,114,229, 10,134,
- 14, 29,122,107,237,218,181,141, 70,141, 26,133, 13, 27, 54,224,253,251,247, 91, 75,122,126,159, 62,125,230, 13, 31, 62,124,214,
-186,117,235,144,215,130,239,218,181,107, 94,217,184,173, 87,175, 94, 73,121,215, 30,220, 18,121,167,178,171,123,131, 49,227,167,
-136,199,142, 26, 56, 13, 64,223, 82, 42, 10,234,228,228,148,161,111,210, 36,249,192,221,187,232, 35, 18,153,236,121,250, 20, 39,
- 85, 42, 52,238,214, 45, 17, 0,166, 79,159,142, 93,187,118, 1,128,125, 73, 92, 46, 46, 46, 35,142, 30, 61,154,159, 87,172,173,
-173, 33, 22,139,115, 68,144, 64, 8,150, 99,113,105,131, 28, 33,225,217, 24,189,132,226,143,233, 4,149,156,144, 85,163,106,137,
-249, 17, 13, 27, 54, 68,122,122, 58, 88,150,133,169,169, 41,172,172,172, 62, 18, 87,233,153,169, 88,190,117, 30,226,171, 94, 67,
-235, 19, 96, 8, 11, 60, 91, 4,100,188, 45,118, 73,167, 78, 43, 87,174,116, 84,169, 84,184,122,245, 42, 46, 95,190,252, 27,165,
- 52,179,176,222,161,148,198,178, 44,187,125,217,178,101, 67,157,156,156, 48,122,244,104,143,197,139, 23,119, 5, 62,229, 37,132,
-160,118,237,218, 80,169, 84, 16, 10,133, 48, 51, 51,131, 70,171, 23,246, 26, 48,194,181,130,155,175,100,241,138,197,140,189,149,
- 0, 2,198, 10,193, 31,148,230,107, 86,253,188,230,222,205, 27,195,136,137, 77, 55,154,157, 24,243,191, 94, 73,115, 28, 7,157,
- 78,151,183,238,170,107,158, 40, 18, 8, 4, 91, 88,150, 77,181,177,177, 57,150,152,152,104,144,208,226,121,158,227, 56, 46, 83,
-167,211,165,232,116,186, 44, 66,136,130,101, 89,112, 28, 7,142,251,103, 76,136, 45,109,249,181,255, 57,129, 85,120,185,147,240,
-240,240, 84, 43, 43, 43,231,170, 85,171, 50, 26,141, 38,167,235,225,208, 33,110,203,182,109,167, 85, 42,213,120, 0,162,117,191,
-255,190,193,217,197,165,249,128,129, 3,137, 78,167, 67,135, 14, 29,196,167, 78,157,178,126, 23, 23,151, 97, 64, 4,126,244,188,
-193,131, 7, 99,245,234,213, 0,128,113,227,198,229,155,208,137, 1,157,254, 10,115,180,111,219,177,182, 89,132,252, 55, 51,109,
- 3, 93,102,197,119,166,247,228,153,178,218, 96,196, 2, 72, 89,240, 90,157, 62, 56,190,219,163,119,193, 94,222,178,228,164, 74,
-173,124,154, 98,203,197, 93,237,203, 34,176, 76, 76, 76,234,154,154,154,226,209,163, 71,201,181,107,215, 78,165,148,154, 47, 92,
-184,208,198,196,196,164,238, 23,168,244, 80, 66, 72,147,134, 13, 27,142,101, 24,166, 21,207,243,151,226,226,226,214, 81, 74, 67,
- 13,204,132,163, 1,204, 69,129,113, 38, 26,141, 6, 12,195,128, 82,138, 62,125,250, 96,250,244,233,222, 47, 94,188,192,149, 43,
- 87,172, 90,181,106,117,143, 16,146, 10, 96, 24,165,180, 88, 43, 89, 82, 82, 18,254,248,227, 15,176, 44, 11, 11, 11, 11,152,154,
-154, 66, 42,149,162, 81,163, 70,177, 75,151, 46,245, 58,124,248,112,118,106,124, 60,145,101,164,169,137,181,181, 20, 78,229,219,
- 13,238,214, 61, 0, 57,179, 9, 13,130, 92, 46, 55, 17, 67,157,193,112, 42,102,249,188,245, 2, 19,145,136, 72, 69, 2, 72,248,
-108,118,198,210,159,169,148, 80, 97,174,117,149, 26,202, 41,149, 74, 69,114, 49, 85, 11, 37,140,206,132,161, 95,165,159, 85, 44,
- 22,139, 36,194, 44,101,177, 98,150, 33, 44,203,178,146,178,112,202,100, 50,145, 66,204,169,139,125, 15, 6, 44,195, 48,197,114,
-246,242, 33,244,224,216,252, 46,189,252,176,233,245,122,212,173, 91, 23,251,142, 95,197,153,203,119,144,248,225, 57,198,143, 30,
- 10,119,119,119,156, 63,127,254,139,226, 33, 58, 58,186, 72,145, 85, 98,215, 98,238,184,171,146,186, 5, 63,226,158, 99, 94,234,
-172, 68, 66, 72,151,198,141, 27,143,217,179,103,143,166, 93,187,118,226, 62,125,250,192,215,215,183,209,144, 33, 67, 0, 0,173,
- 90,181,194,234,213,171, 27, 13, 25, 50, 4,251,247,239,199,145, 35, 71,212,205,154, 53,155, 74, 8,137,162,148,158, 41,166,194,
-233,180,113,227,198,194,150, 65,232,245,122,232,116, 58, 71,189, 94,239,152, 91, 22, 97,205,154,181,137, 23,206,159,194,212, 25,
-243, 97,103,235, 80,195,192,238, 29, 50,120,202,148,196, 29, 43, 86, 96,197,254,253,152, 82,169,146,201,174,192, 64, 92, 80,169,
-112,224,202,149,196,220,231,148, 58,190, 41, 43, 43, 75,121,230,204, 25,179, 3, 7, 14,192,194,194, 2, 85,170, 84,201, 23, 67,
- 12, 43, 3, 43,178, 68, 85,159,186, 0, 30, 0, 0, 42, 57, 33,203,179, 50,110, 17,130, 84,202, 64, 93, 66,126,132,131,131, 3,
- 4, 2, 1,158,190,126, 0,211, 84, 51,212,242,169, 7,161, 80,136,140,172, 52,140, 89,209, 19,238, 63, 39,160,154, 39,160,140,
- 3,238, 79,130, 46,246, 14, 86,102, 71, 96,125, 49,148, 53,203,151, 47, 15,181, 90,141,205,155, 55,211,220, 50,170,184,202,126,
-230,175,191,254, 58,104,206,156, 57,108,157, 58,117, 0,160, 70, 81, 2, 43,183,204,128,179,179,115,190,240,235, 51,104,148,235,
-200, 73,163,100,221,218, 52,135, 64, 96,131,212, 44, 29,146, 50,116,176,180, 81, 96,234,164, 94,210, 75,181,157,235,108, 92,251,
-231, 9, 66, 72, 29, 90,208,100,248, 63, 8,173, 86, 11,158,231, 79, 51, 12, 51,139,101,217,159, 5, 2, 65,135,220, 83, 25, 12,
-195,196,179, 44, 75,202, 82, 86,242, 60, 63, 64,175,215,175,212,104, 52,102,121, 22, 49,142,227,160,209,252,223, 79,220,255,210,
- 53,142,255,177, 22,172, 79,186,241,116,186,170,234, 13, 27,144,117,233, 18,196, 23, 46,224,128,147, 83,166, 74,165,154, 76, 41,
-141,200, 45,236,126,216,190, 99,199,237,206,119,239,154,105,130,130,224,250,226, 5,132, 22, 22, 53,202, 26,128,109,219,182, 33,
- 61, 61, 29,105,105,105, 0,128,223,126,251, 13,233,233,233,121, 3,249, 74,127, 1, 17, 26, 57,216, 85, 66, 44,130,193, 11, 24,
- 69, 88,213,236,250, 10,149,105,180,115,184,125, 86, 26,227,140,160, 15,245,228,202, 36, 77,125,194,106,160, 74,204,134,115,195,
- 42, 16, 64,208,168, 44, 97,204, 51,157, 10, 4,130,228, 55,111,222,116,242,240,240, 56, 9,192,230, 75,251,251, 41,165,111, 1,
-140,255,156,123, 89,150,157,251,254,253,123,187,173, 91,183,142, 93,184,112, 33, 45, 40,176,242,254,231, 13,138, 52, 55, 55,135,
- 80, 40,180,191,115,231,142,125,189,122,245,214,231, 22,100,197,137, 73,216,219,219, 67, 40, 20,194,220,220, 28, 89,233, 41,242,
- 63, 22,207,106,102, 98,105,111, 53,101,202, 20,102,240,224,193,239,214,175, 95, 95,222,161,106, 85,207,231,207,159,127,232,220,
-179,215,227, 51,103,206, 0,192, 38, 3,131,254,236,197,139, 23, 98,119,183,138, 2, 94,167,228,229, 34, 64,250,108, 13, 47, 54,
-117,128,148,101, 33, 32,160, 50, 19,185,221,219,176,176,104, 0,241, 6,198,227,211,224,224, 96,161,139,147,189, 32, 35, 75,149,
- 42, 23,240,226,247, 15, 31,188,170, 92,167,174, 23, 0,168, 30,222, 57, 42,169,234, 99,250, 62, 62,193,204,213,213, 53,204, 16,
- 78,189, 94,255, 44, 52, 52, 84,228,236,236, 44, 12, 14,126,251,167,181,153,169,147,149,189,125, 51, 0,208, 36, 39,220, 32, 74,
- 85,180, 80, 40,116,142,142,141, 77,208,235,245,209,134,134,243,205,155, 55, 34, 23, 39,123,193,201,211,103,246, 57,200, 77, 28,
- 45,100, 18,115, 41, 3, 34,165,124,154, 88,175,143,149,153,200,157,222,135,135, 39, 82, 74, 35,139,227,249,131, 31, 59, 32, 39,
- 15, 76,217, 82,240,248,173, 91,183,112,245,209,123,152,179, 28,132,186, 44,220, 59,114, 0,221,199, 77, 44,245, 91, 10,252,201,
- 19, 80, 47,219,235, 93,121,240, 71,194, 41,167, 11,208,177, 72, 33, 84,170,192, 42, 13, 27,189,174, 21, 18, 89,136,142, 46,185,
-112,237,223,191,255,252,221,187,119,231, 79,226,120,245,234, 21, 90,180,104, 1, 0,152, 63,127, 62,218,182,109,139,122,245,234,
-225,213,171, 87,112,119,119,199,149, 43, 87, 36, 44,203, 74, 6, 12, 24,176, 24,192,153,210,130,180,105,211, 38, 12, 29, 58,180,
-168, 1,211,239, 0,168,136,165,103,230,244,165, 59,109,146,147, 18, 17,159, 16,251,180, 12, 45,114, 12,158, 50, 37,113,163, 70,
-131, 61,247,239, 99,160, 92,110,178,227,237, 91,116,168, 87, 15,213, 90,180, 72, 52,164,172, 43,202,138, 99,109,109, 13,145, 72,
- 4, 86,232, 4,129,216, 15,140, 72,132,154,141,253,176, 98,178, 60,123,208, 55, 88, 75, 8, 82, 37, 98, 60, 17,153, 32,182, 56,
- 78,189, 94, 15,161, 80,136, 3,231,118,224,185,197,159, 64, 6,112,251, 73, 23, 76, 28, 58, 19, 63,173, 30, 1,143,197, 9, 48,
-247, 0,226,239, 1, 15, 38, 49,124, 90, 40, 63, 92,157,128,179,148,210,164, 98, 4,155,151, 76, 38, 67, 86, 86, 22,130,131,131,
- 63, 80, 74,211, 75,248, 30,226, 90,181,106, 21,207,178,172,163,179,179, 51, 0,148, 47,174, 65,206,243,124,254, 56,171, 93,123,
- 14,218,212,104,226, 42,109,221,200, 27, 59, 79, 46,194,247,189,214, 66,200, 18,112,156, 22, 43, 87,119, 4,167,206, 68,175,206,
- 35, 72,211, 86,238,126,151, 78,106,134, 3,216,252,191, 92, 73,107, 52,154,227, 90,173,118, 34, 33, 36,131,101,217,241, 66,161,
-208,158, 97, 24,119,142,227, 6, 18, 66, 94,136, 68,162,138,142,142,142,201, 49, 49, 49,105,165,113, 37, 37, 37, 81, 0,219,114,
- 55, 35,254,102, 48,185, 25,184, 41, 33,132, 18, 66,154,230,171, 92, 74,121,125,114, 50,168, 58,167,241, 35, 20, 10, 41,128,130,
- 51,148, 76, 44, 44, 44,136,208,197, 5, 68,146,211,224,166,192, 87,179, 49,234,116,134,185,134,225, 57,176, 32, 90,208, 2, 2,
- 62, 75, 74,176,200,166, 37,198,139,103, 35, 86,108, 81,240,139, 6,244, 20, 28,120,182,140,193,161,153,153,153,208,235,245,150,
-110,110,110,167,245,122,189,101, 94, 23,192,255,161,217, 56,132,101, 89,140, 29, 59, 22,200,237, 74,211,104, 52,136,141,141,133,
- 90,173,134, 70,163,193,251,247,239,145,150,150, 6,141, 70,131,151, 47, 95,162,114,229,202, 96, 89,214,177,148,214, 13,108,109,
-109,225,232,232, 8,117, 86,186,252,240,166,213, 29,150,205,159,110,211,207,141, 50, 91,215,254,202,187,184,184, 36,249,248,248,
- 56, 72, 36, 18,109,173, 90,181,212, 39, 79,158,188, 0,160,123, 25,252, 96,157, 89,176, 96, 65,189,122,245,234, 85,180, 80,200,
-181, 18, 49, 11,137, 62,139, 74,212, 73, 84,160, 76,164, 21, 92, 42,106, 33, 87,212,237,211,167,143,216,144, 74, 49,143,243,167,
-159,126,170,226,229,229,101, 99, 97, 38, 79, 23, 48,136, 18,113, 92, 84,202,163, 59, 23, 1, 64,100, 99,167,132, 92, 81, 55,119,
- 12,157,193,156, 83,167, 78,245,113,118,118,182,102, 24,146,170,215,106, 63,228, 23,248, 42,101, 28, 43,145,102, 65, 34,109, 60,
-108,216, 48, 97, 25, 57,189,170, 87,175,110,109,105,110,150, 42,100, 72,184,136,211, 71,200, 40, 23, 41,214,105, 19, 36,118,246,
-153,144, 43, 26,246,235,215, 79, 80, 28,103,158,245,170,176,101, 72, 32, 16, 32, 42, 42, 10,217,209,207, 33,138, 10,130,159, 66,
-136,250, 14, 54,144,203,229,165, 55, 86, 70,190, 34, 24,249,138, 4,190,167, 36,240, 61, 37, 5,247, 63,177, 54, 45, 72,195, 71,
-215, 21,131,194,227,179, 62, 17, 87,133,238,205, 21, 89, 37,126, 79,127,254,249,231,140,230,205,155,199,183,109,219, 86,115,250,
-244,105, 16, 66,112,229,202, 21, 68, 69, 69,161,109,219,182,160,148,226,222,189, 28,227,236,211,167, 79,209,170, 85, 43, 77,147,
- 38, 77,162,254,252,243,207,185,134, 36,206,208,161, 67,161,211,233,144,153,153,137,228,228,100,156, 58,117, 10,126,126,126,212,
-196,196,164, 59, 91,174,205,162, 94,195,103, 52,240,173, 94, 3,235,215,174,208,136, 5,194,165,101,236,246,192,160,201,147, 19,
-211,106,214, 76,222,149,149,149, 61,216,204,204,196, 45, 34,194,234,209,249,243, 54, 90,173,214, 32,142, 60, 43,142,139,139, 75,
-190,184, 18,137, 68, 16,136,109,193,202,171, 65,108,221, 22, 38, 14,221,113,245,137, 68,109, 46,199, 81, 83, 5,206,201, 45,240,
-162, 4, 63, 88, 68,175,215, 67, 36, 18,225,218,227,179,240,155, 9,248,205, 4,162,235, 30, 71,223,137,237, 96, 51,254, 13,204,
- 61,128,216,155, 64,234, 10, 63,232,222,155,167,171, 19,112,160, 56,113, 5, 0,106,181, 90,197,113, 28, 8, 33, 16,137, 68,226,
- 2,167,110, 95,187,118, 13,151, 47, 95, 6,128,224,188,131, 41, 41, 41,148, 97, 24,200,229,114, 0,144,151,212, 77,150, 55, 30,
-236,218,189, 27,214,125,123,116, 36,119,158, 93, 68, 67,191,126, 72,202,212, 34, 46, 77,139,212,108,192,167,206, 44,248,182, 58,
-138,231,239, 51, 80,163,186, 47,203,138,229,131,240, 63, 14,141, 70, 51, 82,173, 86, 39,168, 84,170, 12,149, 74,149,152,157,157,
- 61, 76,169, 84,118,210,235,245,183, 4, 2,129,167, 84, 42,125,108, 98, 98,114,188,124,249,242, 12, 0, 56, 59, 59, 51, 78, 78,
- 78, 59,254, 23,223,181, 40, 45,242, 63, 47,176, 0, 92, 43, 60,176, 76, 47,145,188,212,143, 25, 3,139, 19, 39, 32, 12, 14,198,
-144, 65,131,204, 76, 76, 76,214, 18, 66,106, 17, 66, 26, 42, 20,138,245,243,230,205, 51,181, 89,178, 4, 78, 55,110, 32,236,212,
- 41,232,132,194,135,159, 19, 8,165, 82, 9,129, 64,144,111,121,145,203,229,121,253,193,165, 10, 24, 78,143,187, 81,113, 65, 16,
-163, 34,120,208,204,115,233, 77,238,247, 11,153,101,119, 42,189,178,251,219, 44,145,251, 2,219,250,118,107, 43, 52,186,159, 69,
- 4,153, 98, 11, 41,194,195, 35,192,129,191, 91,150,240,169, 84,170,180,172,172, 44,212,168, 81,195,250,209,163, 71,110,126,126,
-126, 86,185,199, 31,124, 97,102,242,119,118,118, 62,232,226,226, 18,234,236,236,124,144, 16,226, 95,134,219,183,222,188,121, 19,
- 44,203, 98,222,188,121,200,200,200,128, 86,171, 69, 82, 82, 18,194,195,195,161,209,104, 16, 25, 25,137,215,175, 95, 67,163,209,
- 32, 44, 44, 12,106,181,218, 32, 97,107,106,106,138,212,164,120,249,254, 63,126,237,176,104,254,108, 89,218,219,199,136,140,142,
- 3,207, 41,163,151, 47, 95,254,218,221,221,253,178, 86,171, 45,199,243,124, 83, 74,233, 70, 67,133,102,174,163,210, 91,158,158,
-158,245,150, 47, 95,222,116,246,210, 45, 18, 83, 54,131,138, 77, 37,188,216, 84, 76,197,158,245, 49,124,238, 58,233,210,197, 11,
-159, 62,123,246, 44,217, 16,167,155,121,156,245,235,215,247,137,141,141,109,228,231,231, 87,195,161,138,135, 84,226,236,148, 40,
-118,170,144, 68,149,217,151,152,242,149, 58,173, 93,187,246,209,189,123,247,226,202,194,233,236,236, 92,237,247,223,127,175, 83,
-190,124,249, 58, 82,115,115, 89,102,106,234, 38,117,106,242, 22,161,141,131,140,177,182,233,181,107,215,174,187, 23, 46, 92, 72,
- 44, 11,167,183,183,183,239,226,197,139,107,213,172, 89,179,150,163, 71, 85,169,204,217, 37, 65,228, 92, 33, 94, 86,189,182,148,
-169,224,218,115,245,234,213,247, 31, 62,124,152, 96, 8,167, 64, 32,224, 24,134,129, 80, 40,132, 92, 46,199,245,235,215,209,175,
-123, 59, 56,216,153,193,163,106, 85, 52, 27, 57, 14,167, 79,159,134, 88, 44, 6,195, 48, 96, 24,230,139, 29, 90, 26, 34,132, 74,
- 67,113,226,171, 52,110, 74,233,153,107,215,174,253, 50,120,240, 96,113,251,246,237,113,255,254,125, 12, 29, 58,244,214,145, 35,
- 71, 0, 0,247,239,223,199,196,137, 19,111, 93,190,124, 25,163, 70,141, 66,139, 22, 45,196, 55,111,222, 92,111,136,243, 81,189,
- 94,143,109,219,182, 65,175,215, 67,161, 80,192,202,202, 10, 29, 59,118, 68, 64, 64,192,168,237,219,183, 7,177, 66,225,183, 29,
- 58,247,192,233, 19, 71,240,250,101,192,168, 29,139, 7,148,217,153, 47,195, 48,104, 63,104, 80, 98,162,143, 79,242,142,244,244,
-236, 97,150,150, 38,158,177,177, 86, 87, 15, 30,180, 49, 32,255, 16,142,227,242, 69, 85,158,216,200,159, 89, 38,182,133, 64,238,
- 11,129,105, 29, 60,127, 43,210, 9,235,210, 39,162,218,244, 85, 73, 78, 70, 9, 33,224,121, 30, 66,161, 16, 53,171, 52,196,219,
-221, 57,199,171, 12, 0,106,237, 76,130, 93,131,156,110,193, 15,203,237,240,227,176,249, 16,178, 34, 93,105,110,115,120,158,127,
-153,148,148, 4,129, 64, 0, 15, 15, 15, 7, 66, 72,158, 85,106,101,243,230,205, 23, 12, 28, 56,112, 25,128, 31,114,159, 95,161,
- 87,175, 94, 78, 90,173, 22, 79,159, 62, 5,128,199, 37,164,125,254,172,193,228,244, 48, 73, 37,167,106,240,243, 26, 9, 75,203,
-234,136, 74,214, 32, 58, 89,131, 45,127,116,197,227,155, 63,227,209,133,129,248, 16, 27, 11,153, 67, 55,112,122,181,239,255,122,
- 37,157,144, 3,101, 66, 66,130, 94,171,213, 42, 53, 26,205, 91,173, 86,251,144, 82,234, 42, 20, 10, 47, 74,165, 82,115, 19, 19,
-147, 38,114,185,124,187,135,135,135, 64, 38,147,109,151, 72, 36, 69, 10, 75,115,115,115, 98,110,110,206,154,155,155, 11,138,218,
-242,174,115,117,117,165, 94, 94, 94,212,215,215,151,250,248,248,208,170, 85,171,210,138, 21, 43,166, 59, 58, 58,142,180,182,182,
-102,255,198,215,189,246,111, 26,228, 94,216, 77, 3, 0,192,205,202,202, 84,167,211, 70, 94,188,120, 81,203, 48, 12, 76, 76, 76,
- 48,120,232, 80,230,143,223,127,111,220,207,223,255,202,136,214,173,207, 94,185,124,185,102,189,122,245, 64, 41, 5,195, 48,216,
-191,127,191, 82,165, 82, 38,149, 47, 95,222,194,144,194,162,224,135,147,158,158,158, 47,176,210,210,210, 96,111,111,111,112, 23,
- 97, 86, 58, 46, 93, 62,247, 56,133,114,223,135,183,127,187, 74,187, 52,182,107,189, 84,158, 19,164,113, 58,164, 41, 41, 50, 84,
- 16,220,103,172,234, 13,118,239,166,125,223,170,222,235,235, 65,119,146, 84,156,170, 76,179, 31,226,227,227,103,246,234,213, 43,
-201,209,209,145,152,153,153,193,217,217,153,233,210,165, 75, 98, 68, 68,196,130,207,141,120, 27, 27,155,190,205,155, 55, 63, 25,
- 21, 21,213,243,250,245,235, 21,111,220,184,209,179,121,243,230, 39,109,108,108,250, 26, 72,113, 96,198,140, 25, 89, 98,177, 24,
-245,235,215, 71, 70, 70, 6, 52, 26, 77,169, 91,169, 22, 65,158,135, 84, 42,197,193, 45,171,219, 44,154, 63, 91,150,244,234, 46,
-158,223,186,136,115,161,234,236,185, 75,215,220,147, 74,165,159,245,190,238,118,242,106,213,156, 76, 95, 77, 28,218, 39,122,250,
-180,105,166, 47, 94,188,144,141,159,240, 3,194,226, 82,169,184,253, 74, 22, 77,103, 51,207,178,108, 72,135,111, 90,224,151,197,
-115,154, 2, 24, 85,106, 69,109, 39,175,230,235,100, 26, 56,101, 68,191,144, 9, 19, 38,200,150, 46, 93,170,170, 91,183,174, 46,
- 38, 38,198, 92, 97, 99, 87, 91,104,109,227, 31, 26, 27,103, 81,187, 78,157,183, 19, 38, 76, 80,149,149,115,206,156, 57, 38,183,
-111,223, 22,181,108,217,146,198,199,199, 91,138,100,178, 6, 66, 83,243,166,209,137,137, 86,173, 90,181,122, 59,100,200, 16,238,
-115, 56,223,188,121, 35,170, 93,187, 54,141,137,137,177, 52,177,182,173, 47,178,182,109,242, 62, 38,214,178, 70,205,154,193, 19,
- 39, 78,212,149,196,217,107,221, 95,226, 68,161, 80,196,248,249,249, 97,238,220,185, 88,184,112, 33,122,247,238,141,208,176, 80,
- 52, 29, 50, 2,149, 7,143,194,169,123, 15, 16, 29, 29,141,153, 51,103,194,221,221, 29, 66,161, 48,248,107, 20, 26,134,136,172,
-226,186, 15,189, 43,147,107, 37,141,179, 42,141,187,103,207,158, 99,242, 92, 49, 12, 27, 54,236,214,218,181,107, 27, 13, 27, 54,
- 12, 0, 80,191,126,125,252,252,243,207,141,102,205,154,117,107,209,162, 69,104,217,178, 37, 92, 93, 93, 75,245, 39,198,113, 28,
-244,122, 61,250,245,235, 7,189, 94,143,132,132, 4,188,121,243, 6,155, 54,109, 2,165, 84, 10, 0,142, 78, 46,181,197, 98, 49,
-158, 61,121,152, 61,123, 88,189, 63,203,208,136, 34, 5,191,173,204,204, 76,244, 28, 61, 58, 49,178, 74,149,228, 13,137,137,217,
-195, 45, 45, 77, 42,125,248, 96,101,170,209, 56,151, 52,230,180,160, 24, 42,232,150,160,240,150, 55, 65,197, 80,228,113,142,234,
- 55, 17,210,115,141,243, 69,150,162, 2,192,235,129,199,211,132, 24,219,109, 46,252,170,213,128,129, 51,214,238,221,191,127, 31,
- 98,177, 24, 19, 39, 78, 36, 44,203,174, 38,132, 16, 74,105, 10,165,116, 46,165,116, 42,165, 84, 69, 8, 33, 18,137,100,227,208,
-161, 67,161, 86,171,113,235,214, 45, 0,184, 92,156, 48,165,148,230,191,123,102, 50, 1,199,139,113,251,201, 57, 92,184,113, 8,
-161, 81, 9,248, 16,175, 2, 4,230, 80,101, 69, 66,171,140,130, 38,245, 9,210,213, 38,255,186, 46,167,228,228,100,158,227, 56,
- 13,199,113, 90,158,231, 43, 2, 48, 19, 8, 4, 16,137, 68,144,201,100, 3, 77, 76, 76,158,200,100,178,129, 98,177,184,200,251,
-211,210,210,104, 90, 90, 26,151,150,150,166, 47,106,203,187, 46,207,247,150, 76, 38,131, 68, 34,129, 72, 36,138, 21, 8, 4, 3,
- 9, 33, 7,240, 55,251,167, 42,168, 69,254,215, 81,148,163, 81, 80, 51, 89,159, 67,235,255, 48,239,213,111, 64,150,159,159,159,
-165,179,179, 51, 8, 33,232,218,173, 27,105,126,253,186,169,208,201, 9,214,181,106,229,123,207,189,116,241, 34,206,157, 59,151,
-117,250,216, 81,231,161,195,135,119, 66, 65,103,207,159, 70,158,192,205,205, 45,255,185, 49, 49, 49,121, 9, 8, 0, 72, 79, 79,
-135,173,173, 45, 98, 98, 98, 96,160, 97,100,215,244,105,247,166,197,215,155, 89,185,158,169,144,156,205,138, 5, 71, 41,132,132,
- 3,148, 20, 58, 14, 80,235, 40,106, 87, 98,173, 46, 40,245,150,167,238, 31,121, 15, 96, 87, 25, 45, 88, 87, 9, 33, 35,121,158,
- 63, 4,128,185,126,253, 58, 31, 24, 24, 56,198,208, 1,233, 69,193,196,196,228,167, 43, 87,174, 88,253,244,211, 79, 41,167, 78,
-157, 74,235,216,177,163,249,166, 77,155,172, 90,180,104,241, 19,128,125,165,246, 89, 82,170, 36,132,236,140,136,136, 24, 83,167,
- 78, 29, 36, 39, 39, 67,171,213,226,241,227,199,112,119,119,199,163, 71,143,224,225,225,129,135, 15, 31,162,106,213,170,121, 83,
-166,193,243,124,169,221,184,209, 17, 31, 20, 38,234, 20,179,232,251,103,240,250,249, 35,156, 9, 81,103, 47,223,182,255, 76,181,
- 26,181,179,202, 90,128, 3, 64, 85,123,185,143,179,157,245,133,165,243,231,216,133, 93,221,143, 35,219,214,241,215,206,158,245,
- 22,155, 98,100,179,190, 19,122,104,116, 40, 15, 64,210,160, 94, 29,250,141,197, 27, 94, 86, 17,177,151, 95,150,236,201,188,170,
-189,220,199,201,214,250,252,242,165, 11, 77,223,157,221,142, 3, 27, 87,210,195,187,247,250,169,128,122,213,170, 85,107, 79, 8,
-113, 4,160,207, 77, 35,131,150,160, 41,138,243,242,169, 83, 53, 85, 64, 61, 55, 55,183,246, 66,161,176, 98,174,149, 47,234,107,
-112, 86,175, 94,189,125,110, 11,159,230,142,185, 42,211, 82, 57,195,134, 13, 91, 49,101,202,148,137, 58,157,206,186,128, 5,146,
-221,180,105,147,128,227, 56,134, 82,170,101, 24, 70,123,254,252,121, 78,175,215, 71,171, 84,170,209, 95, 90, 96,244,232,209, 3,
-247,238,221,155,143, 18, 6, 47, 23,170, 16, 4, 86, 86, 86,250,210,132,151,161,220,215,175, 95, 95,248,237,183,223, 78,223,183,
-111,223,155,181,107,215,118, 30, 53,106, 20,246,239,223,143, 42, 85,170,224,217,179,103,152, 57,115, 38, 0, 52,154, 53,107,214,
-137,173, 91,183,186,134,133,133,173, 48,196,106,171,215,235,177,119,239, 94,116,237,218, 21,182,182,182,112,114,114, 2, 33,228,
-234,240,225,195,127, 7, 0,150,176, 34, 0, 80,171,212,106, 79,207, 58, 6, 91,108, 93, 93, 93,243,203,186,216,216,216,252,153,
-127,109,190,253, 54,113,203,210,165,248, 83,169,196,112, 75, 75,147, 72, 23, 23,199, 19,239,222,141, 32,132,108, 42,206, 34,156,
-103,197, 41, 77, 92,149,193,162,140,188,177, 77,246,246,246,152, 53,118, 9,150,252, 49, 11,111,113, 13, 85,250, 3, 47, 87, 1,
- 93, 93,199,161,142, 95,125, 56, 57, 57, 25,154, 69,174,126,255,253,247, 15, 3, 3, 3,235, 84,175, 94, 29, 11, 22, 44,232, 50,
-111,222,188, 11,132,144, 17,121,179,152, 9, 33,149, 88,150, 93,125,241,226,197,214,102,102,102,120,245,234, 21, 14, 30, 60,248,
- 22,121, 35,244,139, 8,103, 94,165, 47, 20, 10, 81,190,156,135,234,117, 88,166, 73,124,212,109,220,186,121, 12, 85,252,126,128,
-204,161, 19,172, 60, 23, 65, 27,180, 6,154,164, 11,176, 42,215, 17,145, 97,239,192, 10, 36, 1,255, 54,145,149,146,146, 66,173,
-173,173,121,142,227,206,115, 28, 55,147,227,184, 69, 2,129, 32,111,252,173,175, 94,175,255,226, 25,129,121,190,183,242,120, 41,
-165,114,129, 64,144,206,178,172,146, 16,242,183, 78, 55, 44,168, 69,254, 53, 22,172,143, 50, 52, 79,132, 85, 61, 60, 56, 17,131,
-237, 93, 59,117,202,126,250,244,105,126, 43, 79,245,224, 1,178,206,157, 3,199,113,160,148,226,198,245,235, 24, 56, 96, 64,166,
-144, 37, 91, 42, 85,170, 72, 9,253,203,247, 10, 33,228, 19, 63, 86, 34,145,168, 87,175, 94,189,242, 11,157,136,136, 8,200,229,
-114,136,197, 98,240, 60, 15,189, 94, 15,150,101, 97,110,110, 14,189, 94,175, 41,226, 99,107, 85, 40, 49,116, 92,114, 86,207,173,
- 29,250,199, 56,101,106,233, 72,139, 74,168, 32,146,229,127,148, 14,102, 4,157,253,132,176, 17,196,211,203, 43, 90, 71,243,234,
-164,158,133,215,254, 42, 42,156,133,206,123, 84,175, 94,253,247,129, 3, 7, 50, 0,208,170, 85, 43,166,122,245,234,191, 17, 66,
- 60, 74,184,167, 68, 78,169, 84, 42, 1,128,147, 39, 79, 38,191,121,243,166,221,201,147, 39,147, 11, 30, 55,144,115,211,178,101,
-203, 96, 98, 98, 2,189, 94, 15,141, 70,147, 63,254,170,224,175, 86,171,133,141,141, 13, 78,159, 62, 13,142,227, 78,151, 22, 78,
- 47,223,234,153,105, 2,139,184, 29, 39, 46,227,108,152, 54,179,172,226,170, 32,103, 21, 71, 69, 85, 7, 27,235,139,203, 23, 47,
-180, 77,121,251, 24,145,145,145,244,252,185,211,119,149,148, 70,165,166,211,217, 41,153,180,106,182,154,202,234,186, 34,252,226,
-198,169,116, 86, 19,232, 64, 62,237, 26, 46,200,233,227,168,168,234,108,107,125,126,229,138,165,166,169,193,143, 16, 19, 27,139,
- 51,167, 79, 62, 85, 82, 26, 69, 41, 61, 76, 41, 29,194,243,124, 53,158,231,171, 81, 74,135, 20, 39, 90,202,202,169,213,106,171,
-105,181,218,175,202, 89,214,112, 22,152, 65,136,249,243,231, 7, 71, 70, 70,142,138,139,139,235,145,183, 37, 39, 39,119,205,200,
-200,232,152,157,157,221, 94,185,170,162,121, 86, 86,150, 93, 70, 70,134,163, 82,169,172, 77, 41,125,108,104,254, 44,140,130, 21,
-108,116,116,244,188,232,232,104, 82, 98,254, 28,249,138,172, 95,241,253,238,131, 7, 15,218,127, 9,119,225,112, 38, 36, 36, 28,
-218,187,119,111,141,202,149, 43,187, 14, 25, 50, 4, 27, 54,108,192,218,181,107,213, 0,176,117,235, 86,117, 1,203, 85,185,208,
-208,208, 58, 69,117, 15, 22,228,100, 24,102, 87,155, 54,109,232,141, 27, 55,208,181,107,215,124, 7,160,155, 55,111,134, 94,175,
- 79,111,217,178, 37, 15, 0, 74, 85,118, 58,229, 41, 52,218,162,251,217,139,138, 79,177, 88,252, 77, 65,127,127,121, 78,148,197,
- 98, 49, 40,165,168,218,168, 81, 98,170,159, 95,242,182,180,180,236,121,213,170,153,141,240,244, 28,226, 5, 12, 40,138,147, 16,
-242,145, 21,167,240,246, 57,223,102, 30,242, 56, 92, 92, 92,176,112,242, 74,184, 60,232,129,171,141,173, 81, 35,105, 8,218, 54,
-238,140,170, 85,171, 26,204, 73, 41,165,241,241,241,163,230,204,153,195,139,197, 98,124,247,221,119, 56,114,228, 72,171,142, 29,
- 59,134, 57, 59, 59,135,249,248,248,196,142, 25, 51, 38, 36, 49, 49,177, 99,253,250,245,145,156,156,140,209,163, 71,107,147,147,
-147,123, 21, 28,199, 89, 56,156,121, 78, 49, 69, 34, 17,186,116,104,149,252,199,111, 43,249,150, 77,199,192, 68,102, 6,157,176,
- 28,146, 51,117, 72,201,162,208, 72,234, 65, 44,146,160,173,191, 15,238,157,223,145,205,105,178,118,126,110,158,255,220,248,252,
-255,193, 73, 41,165, 28,199,169,244,122,253, 86,158,231,103,231,245, 36,229,249,179, 42,108, 12, 45,107, 56,121,158,207,119,221,
-144,203,173, 16, 8, 4,199, 89,150,245,201,155, 72,245,119,188,251,191, 13, 31,185,105,200,251, 37,132,231, 56,142, 71,165,202,
-149, 76,195, 66,195,215,245,238,221,107, 88,251,246, 29, 76, 58,116,232, 32,245, 9,202,233,162, 56,121,242, 36,142, 28, 57,146,
-125,225,194,133,116,137,144,221, 90,174,124, 57,123,142,227, 65, 72,201, 22, 18, 83, 83,211, 9, 51,102,204,144,165,165,165, 97,
-237,218,181,124,141, 26, 53, 24,185, 92, 14,173, 86,139,173, 91,183,234,124,124,124,132, 12,195, 32, 45, 45, 13, 12,195,188, 54,
- 80,241, 62, 39,132,180,253,189,121,247, 35,117,198, 14,181,246,110,222,192,178, 89, 57,103,232,106, 81, 68, 71,132,226,205,229,
- 11, 41, 47,207,175, 78,130, 42,174, 59,165, 52,176,172,145,228,228,228, 52,247,194,133, 11,118,227,198,141,163, 42,149,138,132,
-135,135,211,197,139, 23,219,125,247,221,119,115, 81,138, 47,156,146,190,163,212,212, 84, 16, 66,248,220,204,154, 87,184, 24,108,
-126,165,148, 6, 16, 66,142,119,235,214,173, 75,203,150, 45, 17, 20, 20,148,223, 21, 88, 80, 96,229,205, 38, 92,178,100, 73, 42,
-240,151,131,192,226, 32,145, 72,176,249,208,185,179,209,145, 31, 76, 42, 85,114, 83,153, 91, 90,242,159, 99,185, 2, 0, 49,195,
-204,251,101,225, 28,187,196, 87,247, 72,192,221, 43,252,193,231,113,241,122,142, 22,237,161, 63, 35,154,230,170,254,146, 91, 47,
- 12, 59,111,217,146,133,230,121,221,151,251,158,196,164, 19,142,142,251,178,166,198,255, 8,231,255, 1,114,102,248, 69, 19, 39,
- 39, 39,154,215,133, 87,148,192, 42, 13, 69,117, 15,126, 46,247,251,247,239, 23,215,170, 85,107, 74,112,112,240, 65,111,111,239,
- 81, 0,202,171,213,234,212, 89,179,102, 45,223,186,117,235, 48, 67, 44, 87, 0,176,127,255,254,213, 67,135, 14, 61,215,169, 83,
-167,169, 60,207, 87, 47, 80, 33,189,183,179,179,203,247,200,149, 16, 23, 59,109,228,176,126,211, 50, 51, 83, 12,246, 83,167, 80,
- 40, 70,204,154, 53, 75,154,149,149,133,245,235,215,243, 62, 62, 62, 76, 94, 99,104,247,238,221,122, 15, 15, 15, 65,175, 49, 99,
- 18, 87,197,198,226,231,155, 55,179,166,249,250,214,216,246,230, 77,237,162, 44,236,121, 21,102, 81,150,171,188,225, 21,159, 81,
-145,127, 36,176,242, 68,214,220,137, 75, 17, 21, 21, 5,145, 72, 4,119,119,119, 20,215,221, 84, 66,185,244,140, 16,210, 47, 60,
- 60,124,231,250,245,235,197,245,235,215, 71,221,186,117, 33, 20, 10, 43,228,133, 87,163,209,224,249,243,231,152, 49, 99, 6,125,
-240,224,193,119, 37, 45, 80,207,113, 92,188,135,135, 71,126,247, 17, 33, 36, 41, 93, 77,204, 15,120,213, 83, 12, 25,121,144,220,
-122,120, 7,209, 90, 30,106, 29,143, 74,149,107,162, 89,187, 85, 56,113,246, 5, 23, 29, 22, 24,168, 83,166,108,249, 55, 86,220,
-201,201,201,212,206,206, 78,159,107,148,104,152, 55,164, 38,111,102,232,151, 90,176,114, 27,236, 33, 60,207,199, 49, 12,211, 48,
-215,247,150,153, 64, 32,184,204, 48,140, 13, 0,253,223,241, 94,133,181,200,191,166,139,240, 35,245,202, 50,183, 55,108,252,227,
-155,253,123,247, 57,176, 44,227,240, 46, 36,228, 97,231,238, 61,163, 46, 94,188,104, 37, 50, 55,175, 11,128,215,140, 26,117, 87,
-171, 86, 38,159, 58,126,188, 66,165, 74, 21,253,114, 23,123,166, 60,203,220, 46,233,129,153,153,153, 89, 55,111,222,204,158, 62,
-125, 58,137,136,136,216, 99,111,111,223,231,236,217,179,138,238,221,187, 43,131,130,130, 14, 59, 56, 56,116,105,222,188,185,233,
-148, 41, 83,212,153,153,153,235,202,144, 48,129,132, 16,175, 7,115, 86,124,251, 96,217, 31,173, 33, 96, 27, 66, 45, 4,120,221,
-109,104, 51, 46, 2,216, 67, 41,253,172, 76, 33,151,203,253,228,114, 57,158, 62,125,154, 82,175, 94, 61,141, 74,165, 18, 45, 90,
-180,200, 90, 46,151,251,125, 65, 70,162, 41, 41, 41,224,121, 94, 0,128,228,254,130, 47,251, 90, 57,125, 59,119,238,124,252,192,
-129, 3,109, 58,116,232, 0, 87, 87, 87,232,116, 58,120,120,120, 64,163,209,192,221,221, 29,106,181, 26,243,231,207, 71, 90, 90,
-218, 36, 67, 22, 17,150, 74,165, 16,139,197,168,234,229,155, 45,149, 74,241,185,226, 10, 0,228, 66,198,245,245,169,109,136, 79,
- 74,228, 15, 60,139,139,203,214,114,109,131,227,179, 94, 22,190, 46,155, 67, 86,243, 33,227,163, 0, 64,205, 35,179, 68, 78, 49,
- 92, 95,159,218,132,184,248, 68,236,127, 18,147,154,165,229,219,189, 46,130,179, 76,225,252, 31,225,236,181, 46, 8,205,190, 55,
-252,218,131, 35,191,172,128,248, 28, 33,149,135,192,247,148, 96,163, 23,197,198,117, 69,250,184,250, 18,238, 92,203,212,241,220,
- 74, 37,162, 95,191,126,211, 66, 67, 67, 23,230,250,187,218, 88, 22,174,109,219,182, 5, 3, 24, 90,210, 53,251, 86, 12, 61, 10,
-224,104, 89,120, 51, 50, 50, 84,143, 31, 63, 86, 77,153, 50,133, 68, 68, 68,156,117,112,112,104,115,238,220, 57,147,238,221,187,
-171, 3, 2, 2, 46, 59, 57, 57, 53,105,213,170,149,226,204,253,251, 81,217,239,222,157, 58, 21, 26,234,162,227,249, 83, 37, 9,
-162,175, 37,174,242,248, 10, 90,134,242, 68,150,147,147, 19, 42, 84,168,240, 69,223, 61,165,244, 0, 33,228, 85,163, 70,141,142,
- 12, 25, 50,164, 74,189,122,245,224,225,225,129,228,228,100, 68, 70, 70,226,214,173, 91,216,180,105,211,125,165, 82, 57,174,160,
-101,181, 40, 36, 37, 37,125,178,140, 16,145, 89, 59,237, 88, 63,239,228,195, 91,117, 61, 26,119, 24, 44,243,117,226,241,255,216,
-187,238,248,166,170,247,253,156,123,111,246,106,186, 7, 45, 45,171, 20, 1,129,150,189, 17, 20, 4,148, 33,227,167, 40, 75, 11,
-136, 95, 69,144,161,236, 45, 8,130,202, 16, 4, 4, 68, 16,112, 34,160, 50, 4, 89, 2,130, 34,101, 83, 40,208, 61,210,149, 54,
-205,186,247,252,254,104, 18, 67,233, 72, 74,193,130,121, 63,159,243,105,146,155, 62, 57,251, 60,231, 61,239,121, 95,147,153,226,
-206,173,235,152, 61,125, 93, 97,202,173,171, 23,204, 86,115,191, 71,221, 7, 86, 5,210,132,231,249,111, 45, 22, 75, 77,155, 54,
-182,202,124, 90,153, 76, 38,189,213,106, 29,198,113, 28, 47, 18,137, 54,177, 44, 91,207, 22,214,110, 30,165,148,123, 80, 4,235,
-177,212, 96,149,148,248,248, 59, 23,234,212, 9,123,239,155,175,119,182,163,148, 97, 41, 33, 5, 90,173,247,174,219,183,111,223,
-229, 5,187,174,143,143,122,196,107, 35, 6, 19,129,136, 8, 17,120,129,101,142,197,199,223,185, 80, 65,195,141, 26, 60,120,240,
-199, 10,133, 98,154, 78,167,251, 83,171,213,254,213,180,105,211,185,148,210,233, 6,131,225,123,181, 90,125,178,109,219,182,243,
-195,195,195,151, 83, 74,255,112,115, 80, 91, 81,108,255,181,169,138, 85,182,115, 0,120,113, 28,151,251,247,223,127,111,141,138,
-138,122,145, 82,234, 69, 8,201,173, 44,102, 81, 81,209,255,114,114,114,252, 98, 99, 99, 45,107,215,174,141, 26, 54,108,216,148,
-184,184, 56, 81, 81, 81, 81,188,155,101, 54, 18, 66,250, 12, 26, 52,104,157, 72, 36,234,202, 48, 12, 17, 4,129, 58, 61, 7,165,
- 20, 60,207,255, 80, 81,189,136, 68, 34,253,179,207, 62,171,170, 80, 43, 37,145,232, 93, 94,100, 76,252,184,213, 7,227, 22, 22,
- 89, 40,181, 10,116,212,229,180,130, 82,175,144,157,186, 76, 27,185,140, 89, 36,140,251,248,231, 11, 11,141, 22, 65,176, 10,116,
-116, 89,152,110, 45,134,143, 8, 38, 0,140, 97, 86,124,129, 53, 43, 28, 6,239,246, 99,195,146,239,171, 90,236,154, 38,184,227,
-101,217,230,142,225,194,168, 7,128, 93, 10,217,114, 87, 6, 12, 24,240,192,236, 73,204,102,243,212,231,159,127,126,174, 86,171,
-253, 32, 35, 35,227, 79,173, 86,123,161, 65,131, 6,227, 4, 65, 88, 94, 88, 88,184, 75,173, 86, 63,215,162, 69,139,241, 17, 17,
- 17, 27, 19, 40,221, 88, 30, 22,207,243, 73,118, 45, 14, 0,106,215, 62,217, 9,132, 51,145,176, 88, 44,137,174,228,143,231,249,
-164,166, 77,155, 18,103,109, 86,201,191,206,226, 42,110,137, 77,111,131,185,115,231,182, 5,240, 20,128,166, 0,242, 0,220, 2,
-112,130, 82,250, 83,165, 9,156, 33, 43,153, 16, 18,115,241,236,145,209, 87, 46,156,125,201,126, 91,144,101, 37,231,121,115,225,
- 38,139, 33,123,221, 99, 78,174,144,158,158,254, 39,128,240, 7,129,109, 52, 26, 95, 36,132, 92, 98, 89,150,138, 68,162,151, 88,
-150,253, 85, 16,132, 15, 76, 38,211, 22,190,186,184,124,127, 4,132, 60,200, 62, 72, 8,233, 86,213,241,138, 60,152, 30, 76, 15,
-166, 7,211,131,233,193,244, 96, 62, 56, 76, 95, 95, 95, 5, 0, 19, 33,132,178, 44,171,100, 24,198,155, 82,106,224,121, 62,215,
-106,181, 90,178,179,179,133, 7,145,207,255,132, 6,203, 35, 30,241,136, 71, 60,226, 17,143,252, 55,133,231,249,162,156,156, 28,
- 1, 0,124,124,124, 10, 8, 33, 38, 74, 41, 79, 41,229,179,179,179, 5, 79, 13,185, 72,108, 1,148,122, 19,192, 29,102, 90,153,
-219, 4, 21,225,123, 48, 61,152, 30, 76, 15,166, 7,211,131,233,193,124,252, 48,255, 51, 98,183,209,121, 16, 9, 64, 55, 15,166,
- 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 90, 98, 60, 20,211, 35, 30,241,136, 71, 60,226, 17,143,120,164,106,197,
- 99,131,229,166,216, 98,202,189, 14, 96, 0,128,186, 0,174, 3,216, 9, 96,149, 27, 1,143,157,241, 52, 0,166, 0,104, 7,160,
- 54,128, 27, 0,142, 0,120,159, 82,170,247,212,120,233,226,239,239,255,158, 72, 36,210, 2,197, 78,241,236,127,157, 95,243, 60,
-159,147,155,155,187,224, 1,245, 3,150, 82,202,187,147, 87,231,188, 57,255,181, 88, 44, 15, 44,159, 30,169,182,243, 72,125, 31,
- 31,159, 45, 58,157,110, 8,165,244,138,167, 70, 60,242, 56, 73, 64, 64,192,104,179,217, 60, 77, 44, 22,207, 79, 79, 79, 95,253,
-159, 39, 88,132,144,195, 0, 64, 41,237, 4, 0,106,181,250, 56,195, 48,181,109,207, 0, 0, 78, 30, 92, 75,253, 43, 8,194,141,
-172,172,172,182,101,253,152, 66,161, 56,206,178,108,109, 66,136, 61,248, 44, 24,134,129,197, 98, 81,179, 44,155, 95, 6,102,162,
- 78,167,107, 94, 77, 38, 69, 2,224, 71,111,111,239,162,185,115,231,174,234,220,185,115, 88,114,114,178,117,210,164, 73, 29,255,
-250,235,175, 94,132,144,103,221, 33, 89,132,144, 54,132,144,141,205,154, 53,251,118,232,208,161,219, 91,181,106, 37,201,202,202,
- 82,239,220,185,179,198,166, 77,155,206, 16, 66,134,184,235,170,226, 17, 88, 88,184,178,252,145,149,247,172,164,136, 68, 34,109,
- 98, 98,162,218,214,103, 29,158,135, 45, 22, 11, 44, 22, 11, 10, 10, 10,208,180,105,211, 42,207,127,112,112,112, 52, 33,100, 69,
-100,100,100,243,144,144,144,211, 0,198, 38, 39, 39,255,229, 78, 94,173, 86, 43, 40,165,142,124, 54,108,216,208, 51, 35,187,215,
-135, 94,149, 72, 36, 61, 34, 35, 35, 91, 26,141,198,236, 27, 55,110,156,226,121,126, 6,165, 52,181,138,240,189, 0,204,144, 74,
-165,173,234,214,173, 27,118,245,234,213, 59,102,179,249, 36,128, 57,148,210,220,170, 32, 87,157, 58,117, 58,186,114,229, 74,223,
- 49, 99,198, 28, 37,132,180,247,144, 44,143,252, 91, 82,179,102, 77,109, 65, 65,193, 58, 0,209, 34,145, 40,200, 22,131, 48, 85,
- 42,149,254, 41,151,203, 71, 30, 61,122, 52,199, 93, 76,158,231,103, 36, 36, 36, 4,181,110,221,122,113,227,198,141,103,103,102,
-102, 22,153,205,230, 3,217,217,217,227, 41,165,121, 21,140,143,187,184,200, 35, 79,176,108,113,127, 58,223,245,128,227, 66, 19,
- 18, 18, 2,212,106, 53,120,158,119,104, 7,236,139,153,179,123, 7,155,159, 37, 52,104,208,192, 92,193, 66, 19,150,152,152, 24,
-160, 82,253,227,106,201,108, 54, 35, 40, 40, 72, 72, 74, 74, 10, 40, 25, 72,216,100, 50, 33, 52, 52,180, 58,249, 50,121,221,199,
-199, 39,247,246,237, 59, 77,139,140,230, 57,175,253,239,221,247,134, 12,120,218,251,248,241,227,194,179,207, 62,107, 60,124,248,
-240,235, 0, 92,114,142, 74, 8,241, 34,132,108,154, 52,105,210,108,153, 66,227,123,240,248, 5,227,166,157,187,147,154,213,175,
- 69,198,143, 31,207,190,249,230,155,191, 69, 71, 71,111, 33,132,196,184,163,201, 82,171,213, 63, 73,165,210, 8,150,101, 97, 54,
-155,111,235,116,186,103,170,209,194,216, 12,192, 89, 66, 72, 52,165,244, 79, 87,159,149, 39, 89, 89, 89, 48, 24, 12,247,164,134,
- 13, 27,162,170, 93,144, 16, 66,184,176,176,176,239, 23, 46, 92, 88, 35, 53, 37, 5, 31, 46, 91,214, 26,192, 42, 0,173, 93,249,
-255,244,244,244,123,242,217,160, 65, 3,120,196,173, 54,152, 50,123,246,236,133, 47,189,244, 18,120,158,135,193, 96, 8,185,118,
-237, 90,163,105,211,166,245, 35,132,180,164,148,198,223, 39,190,127,100,100,228,165,113,227,198,249,180,108,217, 18,182,168, 18,
- 33, 71,142, 28,105,189,126,253,250, 87, 8, 33, 13, 40,165, 25,247,243, 27, 62, 62, 62, 91, 62,251,236, 51, 95,133, 66,129, 31,
-126,248,193,183,107,215,174, 71, 8, 33, 29, 42, 75,178, 8, 33,140,175,175,239,155, 0,158, 18, 4, 65, 2,224,100,118,118,246,
- 60, 74,169,217,211, 99, 60, 82,158,248,249,249,189,154,159,159,191, 82, 42,149,138,189,189,189,161, 80, 40,236, 49, 8,107, 74,
-165,210,154, 82,169,180,231, 83, 79, 61, 53,246,224,193,131,229,122,196,111, 27, 29, 52, 28, 12,153,195, 18,134, 5,128,134,145,
-190, 26, 47, 47, 47,204,153, 51, 71,217,167, 79, 31, 37, 0, 28, 61,122,116,232,176, 97,195,186, 18, 66, 26,151, 69,178, 74,227,
- 34,143,133, 6,139, 82,122,184, 68, 65, 33,151,203,177,125,251,118,176, 44,123, 87, 20,247,210, 94,215,172, 89,179,194, 31,179,
-107,192,118,237,218, 5,141, 70, 3, 47, 47, 47,199, 2, 35,149, 74,113,224,192, 1,136, 68, 34,112, 28, 7,145, 72,132,230,205,
-155,163,156, 0,243, 15, 68, 6, 54, 42, 14, 50, 89,154,243,198, 14,117,229, 24,240,230,172,193,133, 69,230, 22, 0, 10,114,178,
-179,179, 79,127,243, 77,114,179,250,245,197, 91,182,108,105, 89,163, 70,141, 1,174, 18, 44, 0, 83, 98, 98, 98,190,102,229, 94,
-126, 67,135, 13, 31, 58,146, 99,204,175,140,122,103,254,157,148,204,130,216,216,216,111,126,248,225,135,161,139, 22, 45,186, 56,
-113,226,196, 41, 0,166,186,154,127,137, 68, 18,113,237,218,181, 72, 65, 16,240,228,147, 79, 86,155,112, 3,118, 2, 69, 41, 5,
- 33,228, 46, 34, 85,222,179,138,196,174,177, 42, 45, 85,181,212,168, 81,163,193,203, 47,191,236,167,203,204,196,135,203,150,217,
- 63,110, 94,209,113,161,253, 40,208,100, 50,225,133, 23, 94,120,153,231,121,206, 78,254,140, 70,163, 41, 55, 55,183,200,233,166,
- 78, 6,165,244,105, 23,234,179,182, 82,169,252, 0, 64,180,193, 96,168, 1, 0, 74,165, 50, 73, 16,132,111, 11, 10, 10,166, 82,
- 74, 13,149,108,167, 48, 0,141, 80,118,200, 38,186,112,225,194,171, 83,166, 76,137,127,216,152,132,144,136,192,192,192, 5, 3,
- 7, 14,196,238,221,187,177,103,207, 30,139, 92, 46,231,134, 13, 27, 70,198,142, 29,235, 61,110,220,184,158, 0, 62,186,207,102,
-238, 57,123,246,108,159, 39,158,120, 2, 59,119,238,196,185,115,231, 12,145,145,145,242,206,157, 59,131,227, 56,159,247,222,123,
-239, 89, 0, 27,239,231, 7,116, 58,221,188,119,222,121,103,211,214,173, 91,213, 55,110,220,192,138, 21, 43,252, 6, 15, 30,124,
-152, 16,210,201, 85,146, 69, 8,145, 2,120, 19, 64, 23,150,101, 59, 12, 27, 54,204,250,191,255,253, 79,196, 48,140,101,217,178,
-101,254,235,215,175, 31,236,231,231, 23,157,153,153,233, 49, 51, 40, 71, 88,150, 53, 11,130, 32, 2, 32,163,148, 26, 43,122,255,
- 56,149,221,215,215,119, 76,118,118,246,170,160,160, 32, 4, 6, 6,222,179,214, 26,141, 70,200,100, 50,113, 80, 80,208,103,125,
-251,246, 21,125,247,221,119,101, 30,245, 17,150,204,248, 97,219,220, 26, 62,222,106, 0,192,242, 79,127, 46, 4,128,239,190,251,
- 14,201,201,201,240,246,246, 70,227,198,141,217,185,115,231, 6,143, 31, 63,254, 67, 0, 35,203,194, 42,201, 69, 30, 11,130, 85,
-214,194, 96, 15, 36,106, 39, 82,118,242, 83,242,181,157,148,149,168,168,253, 37, 38, 5,162,215,235, 29,228, 74,163,209,192,182,
-168,194, 98,177,220,131,203,243, 60, 74, 70,213,118,229,250, 39, 33,100, 12,128, 3,148,210,235,174, 84,130, 51,230,142, 55, 26,
- 96,147,116,210,139,118,151,231, 61,223, 41,254,187, 9,192,241,155, 35, 87,172,236,212,169,198,155,211, 63,158,101,200, 74,206,
-124,239,229,231, 34, 34,131,124,229,202,156,244, 92,159,168,168,238,112, 10, 31,224, 66, 62, 59, 14, 29, 58,116,243, 47,191, 39,
- 16,153, 76, 44,230, 88, 86,212,254,201,250,190, 97, 94,172,151, 26,240,186, 19,127,245,248,240,225,195,159,156, 56,113, 98, 7,
-119,202,206, 48, 12, 52, 26, 13, 54,111,222, 12,198,206,104, 93, 44,123, 85, 73, 41,237,206,217, 9,148, 78,167,195,238,221,187,
-209,171, 87,175,179,132,144,104,219, 87,206, 82, 74,145,151,151,135,148,148, 20, 4, 7, 7,159, 37,132,136,156,143, 11, 75, 98,
-218,181,168,118, 50, 53,108,216,176,151,173, 86, 43,231, 52, 57,148, 36, 46,247,144, 23, 87,203, 30, 18, 18,242, 11,128,167, 89,
-150,133,169,168,200,244,193,210,165,206,143,255,112, 38, 87,101, 97,218,243,202,243, 60,119,246,236, 89,145,125,204, 0, 16, 1,
- 80, 2,240,179, 5, 85,253,219,133,250,108,160, 80, 40,142,239,218,181, 75,211,188,121,115, 34,145, 72, 96,181, 90,113,254,252,
-249,176, 69,139, 22,141,218,191,127,255,179,132,144,134, 37,131,154,187,216,238,141,142, 28, 57, 82, 80,167, 78,157, 82, 9, 99,
- 94, 94, 30, 87,191,126,253, 78, 0,226,255, 5,204,196,180,180,180,190, 79, 63,253,244,232,212,212,212, 75, 86,171,117, 50,128,
-198,126,126,126,103,251,247,239, 15,185, 92,222,197, 21,130, 85, 94,187, 7, 4, 4,244,105,219,182, 45, 86,172, 88,129, 69,139,
- 22,117,163,148, 30, 32,132,116,205,203,203,219,255,252,243,207, 67,171,213,246, 45,141, 96,185,218,151, 8, 33,245, 59,118,236,
-248,217,156, 57,115,212,187,119,239, 70,100,100, 36,242,243,243, 49, 97,194,132,128,153, 51,103, 30, 34,132,116,182,147,172,178,
- 48, 9, 33, 13,165, 82,233,198,173, 91,183,170,234,212,169, 83, 71, 44, 22, 51,117,234,212,129, 78,167, 67, 81, 81,145,116,254,
-252,249, 79,202,229,242,191, 62,250,232,163,141, 0,250, 63,236,241, 94, 34,175,185, 0, 52, 0,180,238, 28,175,150, 83,246, 92,
- 0, 82,199,224, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,245,234,213,233, 18,137,100, 25, 74, 9,229, 82, 26, 38,249,103,
-209,106, 74, 8, 57,197,178,108,185,239, 75,154,128, 60,236,250,180,229, 57,148, 16,178, 28, 64,151,226, 41,159, 57,236,231,231,
-247, 86,106,106,234, 45, 87, 49, 67, 66, 66,124,245,122,253, 71,193,193,193, 8, 12, 12,116,172, 29, 53,106,212,128,197, 98, 65,
- 90, 90, 26, 40,165,200,201,201,129, 66,161, 64, 72, 72,200, 71,163, 70,141,218,185,102,205,154,172, 82, 49, 5, 44,122,126,240,
-180, 25, 44,203, 50, 0,192,114, 42,213,184,119,129,136,136, 8,180,111,223, 30, 69, 69, 69,200,205,205, 69,163, 70,141, 56, 66,
-200, 80,134, 97, 52,148,210,213,148,210,131,143, 51,129,183, 47, 72,179, 75,158,123, 18, 66, 32, 8, 2, 56,142,187,139, 96,149,
- 76,118, 50,100,235,167,164, 34, 85,182,201,100,114,144, 43, 47, 47, 47, 7, 57,179, 90,173,101, 17,172,202, 48,243, 38,130, 32,
-212, 38,132,172,113,149,100,149,148,161, 67,135,222, 99,207, 49,126,252,248,196,244,244,116,250, 66,247,166,202, 75,123,147, 83,
-234,122,171,228,254,106,117, 45,153,183,143, 54, 43, 43,235, 4, 0,173, 27, 63, 81, 47, 38, 38, 70,190,233,155, 35,137,175,189,
-189,112,110,243, 58,190,154, 38,161,126,222, 65, 94,114,137,138, 33, 5, 50,171, 37,209,199,199, 39,178, 18, 59, 50, 0,128, 86,
-171, 5,199,113,213, 66,131, 69, 41,181, 18, 66,162, 9, 33,103,119,239,222,141, 86,173, 90, 57, 72,150,157,124,228,230,230,226,
-252,249,243,232,216,177, 35, 0, 68,187, 98,139, 37, 8, 2,204,102, 51,204,102,179,131,184,136,197,226,123,136,139,253,187, 44,
-203,254, 93,201, 34,204,245,246,246,238,216,165, 75, 23,201,182,237,219, 37,148,210, 2, 20, 7,164,214, 83, 90, 70,224,234, 18,
- 98,181, 90, 29, 90, 53,145, 72,132,219,183,111, 59,180,192,118, 77,112,201, 35,242,178, 68, 42,149,190,243,213, 87, 95,105, 90,
-182,108, 73,178,178,178, 32, 8,130, 99,114, 92,181,106,149,108,192,128, 1, 53,206,156, 57,243, 30, 42, 17,118, 6, 0, 41,139,
- 8, 1,128, 70,163,177, 2,110,223, 62, 46, 21,211,106,181,146,118,237,218, 77,204,204,204,124,210, 96, 48,204,119,165, 31, 1,
-248,193,150,236,115,202, 95,151, 46, 93, 50, 12, 26, 52, 72, 94,171, 86,173, 86,247,219, 87,235,215,175,223, 70, 36, 18,225,228,
-201,147, 70, 0,246,157,244,225,115,231,206, 25,251,247,239, 47, 13, 11, 11,107,227,134,230,174,126,131, 6, 13,246, 5, 4, 4,
-200,237, 26,203,129, 3, 7,138,214,174, 93,171, 78, 74, 74,130,217,108,198,148, 41, 83,208,187,119,111,248,249,249, 97,252,248,
-241,129,139, 23, 47,222, 2, 32,166, 28, 76,153, 68, 34,217,124,237,218,181,200,224,224, 96,249,239,191,255,142, 38, 77,154, 32,
- 51, 51, 19,169,169,169,208,235,245, 72, 77, 77,197,200,145, 35, 3, 62,252,240,195,144,106,180,214,228,136,197, 98, 40, 20, 10,
-109, 78, 78, 78,238,125,224, 72, 1, 72,156,201,149, 84, 42,133, 84, 42,133, 76, 38,131, 32, 8,143, 69,144,224,114,218,191, 6,
- 33,228,130, 88, 44,150, 42, 20, 10, 49,195, 48,144, 74,165,221,125,124,124,226,158,121,230,153,198,191,252,242, 75,130, 43, 56,
- 69, 69, 69,155,165, 82,169, 40, 32, 32, 0, 0, 16, 25, 25,137, 38, 77,154,160,160,160, 64,200,205,205,133, 86,171,101,110,221,
-186, 5,131,193,128,148,148, 20,132,135,135,139, 24,134,217, 12,224,217,210,240,142,157, 73,249, 20,192,167,246,247,254,254,254,
-105, 0,228,246,247, 50,153, 12, 53,106,212, 64, 82, 82, 18,212,106, 53, 59,115,230,204,254,219,183,111,239, 71, 8, 25, 74, 41,
-253,194, 9,106,246, 99,103,131, 69, 41,157, 69, 8,233, 84,218, 2,102, 59,143, 45, 83,115,101, 79,174, 16, 33,123, 32,202,192,
-192, 64, 40, 20, 10, 40, 20, 10, 71,192, 81,158,231,239,193,183,237,232,221, 46,148, 82,169,196, 75, 47,189, 68, 87,175, 94, 61,
-218, 70,178,174,185,250,191, 3, 87, 92,114,104,173, 74, 74,195,134, 13,143,191,247,222,123,125,126,253,245,215,164,230,117,106,
-113,202,228, 91,122,153, 70,171, 69,104,205, 94,195,250,246, 63,135,226,219,132,174,202,181,252,252,124,121,221, 80,133,137, 97,
-138, 72, 77, 41,167, 14, 86,138,165, 65,222,222, 53,196, 38, 99,186,198,219, 91, 98, 52, 26,115, 0,148, 27,156, 89,163,209,252,
- 44,149, 74,195, 89,150, 5,203,178,240,243,243,243,162,148, 66,171,213, 34, 52, 52, 84, 21, 21, 21,117,133,227, 56, 48, 12, 3,
-189, 94,127,235,230,205,155,221, 43,202,152,183,183,247,207, 82,169, 52,220, 30, 60,148,101, 89,199,133, 4,251,107,150,101, 65,
- 8, 65, 97, 97,161, 75,152,148,210, 63, 9, 33,209,189,122,245,114,144,172,189,123,247,162, 71,143, 30,200,201,201, 65, 92, 92,
-156, 51,185,114,233,120,208,217,168,157, 82, 10,177, 88,140,203,151, 47,223,117,116,109, 79,106,181,186,210,131,196,199,199,231,
-232,192,129, 3,241,217,103,159, 81, 91,148,119, 37, 33,164,137,151,151,215,229, 11, 23, 46,184,100,231, 66, 41,133,217,252,207,
- 87,237,125,220,121,124,185, 65,162,187,199,196,196,144,220,220, 92, 59,113,116,108,132, 88,150,197,202,149, 43,229, 45, 91,182,
-156, 38,147,201, 38,138,197,226, 60,139,197,178,173,168,168,104, 62,165, 52,167, 58, 77, 62, 29, 58,116,120,251,206,157, 59,189,
-195,195,195,119,221, 7,121,167, 45, 90,180, 48, 1,144,179, 44, 43,170,130, 5,140,181,245,173, 34, 59,201,167,148, 90, 99, 98,
- 98,138,108,139,187,203, 17,144,253,252,252,182,236,217,179, 39, 52, 60, 60, 28, 22,139, 5, 86,171, 21,122,189, 30,135, 15, 31,
-134,209,104,132,213,106, 69,100,100, 36,102,204,152, 81,244,214, 91,111,201,214,172, 89,147,174,215,235,135, 84, 0,251,214,206,
-157, 59,149,193,193,193,114,131,193,128,248,248,120,196,196,196, 32, 63, 63, 31, 5, 5, 5, 40, 44, 44,132,217,108, 70, 94, 94,
-158,150,231,121, 83,181, 89,104, 56, 14, 82,169, 20, 98,177, 56, 39, 60, 60, 28,132, 16, 89, 66, 66, 66,101,142,220, 52, 0,242,
- 68, 34,145,196,153, 88, 73,165, 82,156, 60,121,114,170, 76, 38,251, 16,110, 4, 34, 46, 25,175,176,162,247,213,128, 96, 45, 23,
-139,197, 82, 31, 31, 31,177,211, 58, 45, 86,169, 84, 8, 8, 8, 88, 1,160,167,139,229,110,230,227,227,227,152,223,155, 54,109,
-138, 59,119,238,124,155,155,155,251, 74,122,122, 58, 24,134,217,204, 48, 76, 63, 59, 15,200,206,206, 70, 88, 88, 88,179,178,240,
-218,197, 4,143, 6,161, 14, 13, 86,195,122, 62,170, 18,235, 20, 52, 26, 13,110,222,188,137,130,130, 2,122,245,234, 85, 50,102,
-204, 24, 98, 50,153, 62, 39,132,156,160,148,222, 40,143,139, 60,234, 26,172, 82,207, 61,237, 71,132,165, 17,170,146,132,203, 21,
- 34,100, 50,153, 84, 49, 49, 49,130,125,225,182, 39, 0,164, 44,130,101,211, 20,184, 45, 34,145, 72, 61,102,204,152,252,213,171,
- 87,143, 34,132,172,165,148, 94,173,108, 37,237,250,122,107,224,162, 25, 83,102,248,132,212,170, 59,113,226,116,238,185,231,158,
-251,125,211,166, 77,188,207, 19, 61,187, 30,252,249,139,192,143, 38, 76,218,187,103,207, 30,160,216,224,217, 85, 57,250,227,143,
- 63, 6,141,127,115, 44,102,188,243,214, 79,154, 72, 63,137,138,248, 40,101,198,130, 12, 21,168, 65, 90,175, 65,239,111,118,237,
- 74, 1, 80,110,164,121,185, 92, 30,126,245,234,213, 72,103, 2, 97, 54,155,161,213,106,177,105,211, 38,127,181, 90,237,175, 82,
-169,192,113, 28,154, 52,105,226,170,134, 36,252,202,149, 43,145,106,181, 26,133,133,133, 48, 26,141,176, 88, 44, 16, 4, 1,132,
- 16,136, 68, 34, 72, 36, 18, 40,149, 74,183,110,234, 57,147,172,189,123,247,162, 81,163, 70,200,206,206,198,165, 75,151,220, 38,
- 87,206, 90, 33,103,123, 43,142,227,176,165, 78, 29,188,150,156,236, 32, 46,203,189,188, 48, 67,168, 92,116,135, 39,159,124,146,
- 30, 59,118, 12, 63,253,244, 19,158,127,254,121,242,253,247,223,155,121,158, 23, 39, 37, 37,185,172, 13, 19, 4,193,145, 87,251,
-124,237, 76,172,220, 37, 88, 86,171, 85, 45,145, 72, 80, 84, 84,228, 56,194,119, 78,181,107,215,134, 78,167,227,242,242,242,184,
-228,228,100,197,188,121,243,254,119,232,208,161, 96, 0, 47,254,155,147,205,234,213,171,195, 95,123,237,181,219, 28,199,209, 30,
- 61,122,188,124,235,214,173,190,193,193,193, 7,126,253,245,215,165, 0,234,187,139,231,239,239,255, 7,199,113,161, 42,149, 74,
-188, 99,199, 14, 75,126,126,190, 56, 32, 32, 32,205, 78,104,237,117,109,177, 88, 18,115,115,115,155,187,130,231,239,239, 47,254,
-228,147, 79, 44, 89, 89, 89,226,160,160,160, 52, 59,142, 82,169, 20,239,216,177,195,146,151,151, 39,214,106,181,127,228,228,228,
- 84,136,151,153,153, 57,100,232,208,161, 71, 14, 28, 56,224,199,178, 44,110,221,186,133,172,172, 44,104,181, 90,108,222,188, 25,
-225,225,225,216,185,115,167, 78,167,211,189,250,193, 7, 31, 76,211,235,245,174,184,108,232,216,170, 85,171,240,156,156, 28,104,
-181, 90, 20, 20, 20,224,143, 63,254, 64,195,134, 13,145,156,156, 12,134, 97,160,213,106,177,106,213,170, 66, 66,136,174, 58, 44,
- 50, 44,203, 58,180, 76, 78,164,168,168, 77,155, 54, 56,120,240,224,100,119, 72, 17,165,212, 36, 18,137,238, 34, 86,246,215, 98,
-177,216,234,110,222,120,158, 23,219,108, 64,137, 43,239,171,129,116,146,203,229,226,146, 31, 22, 22, 22,138,131,131,131, 59,184,
- 65,120,125,229,242, 98, 5, 83,120,120, 56,114,115,115,121,147,201, 52,120,243,230,205, 22, 0,136,137,137, 25,204,243,124,145,
-213,106,101, 37, 18, 9, 10, 10, 10, 16, 16, 16,224, 91, 38, 32,131,201, 63,108,155, 23, 84,210, 6, 43, 56, 56, 24,209,209,209,
- 48, 26,141, 72, 73, 73,193,225,195,135, 45, 60,207,127,185,122,245,106,193,223,223,127,196, 11, 47,188,192,158, 57,115,230, 13,
- 0,111,151,199, 69, 30,105,130,101, 99,140,135, 0,116,182, 23,206,249,136,176, 60,205, 85, 9, 13, 22,169, 96,160,229, 36, 38,
- 38, 42,149, 74,165,227, 51,139,197,130,144,144, 16, 65, 16, 4, 82,242,119,236,249,168,172,136, 68, 34,245,187,239,190,155,179,
-106,213,170, 87,224,162,161,248,142, 55, 26, 96, 83, 9,114,245,233,162, 57, 43, 62, 89, 60,207,231,250,222,207,177,238,227, 37,
- 60,207,227,204,147, 79, 62,217, 65,175,215,115, 94, 74, 11, 50,115,176, 23,197,126,176, 92, 34,131, 54, 95, 90, 27, 78,157, 58,
-117,166,103,207,158,199, 54,124,245,141, 79,114,124,252, 9,105, 94,102,138,166, 94, 36, 39,174, 17,222, 47,191,168, 72, 60,120,
-240, 96,127, 0, 47,148,135,197, 48, 12,226,227,227,145,144,144, 0,149, 74, 5,181, 90, 13,149, 74, 5,141, 70, 3,181, 90, 13,
-181, 90,237,118, 29, 50, 12, 3,158,231,241,245,215, 95, 67,161, 80, 64,169, 84,222,149,236,228,234,126,218,166, 71,143, 30,208,
-233,116, 80,169, 84,142, 99, 77,119,196,110,131,101, 50,153, 96, 50,153, 96, 54,155,121, 0, 34,142,227, 48, 50, 49,209,161,213,
-113,135,184,148,148, 38, 77,154,208, 19, 39, 78,224,216,177, 99, 40, 40, 40,192, 39,159,124,130,224,224,224,167, 0, 76,119, 99,
-199, 89, 39, 40, 40,168,199, 51,207, 60, 19, 98,177, 88,160,215,235,153,191,255,254, 27, 50,153, 12, 44,203, 34, 49, 49, 17, 91,
-183,110,197,205,155, 55,237,218,195, 80, 66, 72, 45, 74,233,205,242, 22, 5,142,227, 28,187, 79,123,114,214, 98,177, 44,139,192,
-192, 64, 4, 5, 5,225,211, 79, 63, 21,215,170, 85,171,247,191, 57,209, 44, 94,188,184,222,242,229,203,215,111,218,180,105,239,
-144, 33, 67,182,159, 63,127,126,184,151,151,215,223, 7, 15, 30,156, 39,149, 74,133, 74,142,239,208,228,228,228, 0,231,143, 4,
- 65, 80, 88,173, 86, 7,161, 45, 44, 44, 68,227,198,141, 93,198,187,112,225,130, 2, 0,230,205,155, 39, 2,160,176,187,255,176,
- 99, 22, 22, 22,138, 26, 54,108, 24,234, 34, 25,184, 66, 8,233,208,173, 91,183,227,251,246,237,243, 14, 15, 15, 71, 82, 82, 18,
-146,146,146, 80,175, 94, 61, 44, 88,176,160, 32, 47, 47,175,157,141, 84,125,239, 98,177, 67,188,189,189, 69,183,111,223,134,213,
-106, 69,179,102,205,176,106,213, 42, 12, 30, 60, 24,141, 27, 55, 70, 94, 94, 30, 46, 92,184,128,141, 27, 55,122,139,197,226, 23,
-254,237, 5,198,118,132, 85,102,170,140, 88,173, 86,141, 76, 38,203,147, 74,165, 18,187,253,213,225,195,135,221,214, 94, 57,111,
-252,220,121, 95, 29,200,106, 73,145, 72, 36, 8, 10, 10,114, 25, 71, 42,149, 18,251,220,104,181, 90,145,155,155,203, 7, 7, 7,
- 59,142,241,207,158, 61,203, 71, 68, 68,240, 44,203,178, 18,137, 4,132, 16, 40, 20,138, 50, 39,124,202,211, 57,207, 13,158,238,
-184, 69,200,136,148,154,113,239, 22,111,246,207,158, 61, 11,179,217,140,195,135, 15, 91, 62,248,224,131,228,156,156,156,113, 0,
-184,159,127,254,121,232,164, 73,147,216,128,128,128,110, 78,243,229, 61, 92,228,113,208, 96, 29,162,148, 18,155, 65, 57,177, 19,
- 27, 74,233, 61,164,170, 44,194,101,211, 96,145,138, 6, 27,203,178,248,233,167,159, 28, 68,192,126,139,144, 82,138,170, 38, 88,
-190,190,190, 5,173, 90,181,210,220,185,115,103,107,101, 53, 87,159, 46,154,179,226,253,121,179,124,178, 46,158, 64, 98,114, 10,
-116,233,150, 51, 71,255,190,249, 45,128,111, 1, 0,107,158, 56,132, 81, 23, 87,186,138,249,132,191,162,233,147, 33,234,111,159,
-238,217, 59,108, 80,236,219,204,235,175,191,222,126,232,208,161,185, 67,134, 12,121, 83,165, 82,213, 55,155,205,217,223,236,222,
-157, 48,104,208,160, 90, 60,207, 15,173,200,103,136,197, 98,185,213,191,127,127, 71,221, 6, 5, 5,105,182,109,219, 22,168, 86,
-171,241,242,203, 47,103, 36, 36, 36, 56,142,133,242,243,243,111,185,146, 71,179,217,124,171,105,211,166,101, 30, 11,218, 53,144,
-238, 96,218,218,210,113, 91, 48, 43, 43, 11,151, 47, 95, 6,199,113,104,221,186, 53,142, 30, 61,138,246,237,219,187,117,131,176,
-168,168, 8,225,225,225, 40, 42, 42, 66, 65, 65, 65, 33, 0,233,230, 90,181, 0, 0,111,100,101,225,143, 15, 62,192,239, 11, 23,
- 86,170, 31, 53,109,218,148,158, 60,121, 18,127,255,253, 55,140, 70, 35, 94,125,245, 85,216,142, 7, 1,224, 25, 23,203,219,184,
- 65,131, 6,251, 15, 30, 60,232,175, 86,171,161,215,235,161,215,235, 49, 98,196, 8,140, 30, 61, 26, 22,139, 5,171, 87,175,198,
-119,223,125, 7,141, 70, 3,189, 94,143,130,130, 2,239, 94,189,122, 29, 39,132,116, 44,235,104,155, 82, 74,110,222,188,137,247,
-223,127, 31,130, 32, 96,210,164, 73,136,140,140,116, 16,171, 91,183,110, 97,222,188,121,224,121, 30, 51,103,206, 68,189,122,245,
- 96,177, 88,100,238,248, 25,171,106, 25, 63,126,252,245,111,191,253,118,239,157, 59,119,158, 93,180,104, 81, 39, 66,136, 48,113,
-226,196,247, 53, 26, 13,127, 63,184,217,185,249,184,124,237,150,131, 0,149, 76,254,126, 62,110,227, 93,141,191,227,248,127,158,
-119,198,227,225,235,227,237,110, 22, 11, 45, 22, 75, 65,191,126,253,180, 95,127,253, 53,169, 87,175, 30,110,220,184, 97,223,148,
- 22, 86,194, 53, 67,146, 78,167,139,100, 89, 86,124,237,218, 53, 68, 68, 68,160, 85,171, 86,152, 63,127, 62, 50, 51, 51, 97,181,
- 90, 17, 16, 16, 32, 88, 44,150,179, 38,147,233,183,127,123,129,113,214, 50, 57,167, 95,127,253,117,178, 76, 38,163, 0, 78, 2,
-112,139, 96, 83, 74, 77, 53,107,214,188, 11,187, 50,218,171, 7, 72,130, 30,216,205,196,224,224,224,195,106,181,186,119,118,118,
-246, 93, 90,172,118,237,218,153, 3, 3, 3,143,184,138,163, 82,169,178, 89,150,245, 5,128,164,164, 36, 40,149, 74,113,124,124,
-252, 66, 66,200, 20, 0,168, 85,171,214, 66,157, 78, 39,174,101,155, 79,131,130,130, 96, 50,153,202, 52, 87, 57,126, 54,245,115,
- 0,159, 59,173,189, 41,185,185,185,242, 37, 75,150,232, 23, 46, 92,104,224,121,222, 8,224, 96, 78, 78,142,195, 15, 86, 68, 68,
- 68,174, 72, 36,242,209,106,181, 53,156,160,238,225, 34,143, 3,193,186,231,182,158, 51,233,113,133,100,185,162,133, 32,132,192,
- 96, 48,220,165, 13,177,223, 34, 44,141, 96,217, 22,242, 74, 29, 17,218,200,149,124,219,182,109, 95,126,252,241,199,199, 92,253,
- 63,103, 27,172, 53, 75,231, 46,178,147,171,115, 71,247,225,251, 75,185,153,147, 22, 46, 91, 94,217,202,110,232,175,108, 18, 20,
-232,119,232,131,133,115, 53,215,247,126,142,237,107, 62,164,231, 78,159,110,121,250,244,233, 87,198,142, 29, 91,211,214,161,116,
- 0,254, 2, 48,200,149, 91, 55, 25, 25, 25,119,217, 63, 69, 70, 70, 94,209,106,181,129, 50,153, 12,241,241,241,250,184,184, 56,
-183,143, 94, 74, 98, 86,133,148, 36, 87,113,113,113,232,210,165, 11, 0,224,232,209,163,104,215,174,157, 91, 36,203, 98,177,228,
- 60,241,196, 19, 14,109, 86,110,110,174, 0, 0,177, 41, 41, 88, 27, 28, 12,142,227,240,251,194,133,152,106,177, 96,190,200, 61,
-211,156,102,205,154,209,211,167, 79, 35, 33, 33, 1, 86,171, 21,125,250,244,113, 38, 87, 46, 75, 80, 80,208, 59, 7, 15, 30,244,
- 95,187,118,173,113,203,150, 45, 70, 65, 16,152,102,205,154,169,163,163,163,177,124,121,113, 55, 26, 52,104, 16, 38, 77,154,132,
-184,184, 56, 40, 20, 10,116,232,208,129,159, 53,107, 86,192,184,113,227,222, 64,241, 53,252,210, 22, 24,218,189,123,119, 28, 57,
-114, 4, 44,203,162,101,203,150,200,202,114, 92,238, 65, 96, 96, 96,105,207, 88,219,120,255, 87, 22, 34,142,227,232,225,195,135,
- 23,117,234,212, 9,119,238,220,121, 54, 38, 38,230,147,225,195,135, 39,221, 47,174,183,151, 26, 77, 27,214,129,209,104,132,209,
-104, 68, 72, 72, 8,242,243,243,113,253,250,117, 24,141, 70, 4, 6,104,221,198,139,110, 92,207,129, 23, 16, 16,128,130,130, 2,
-220,188,121, 19, 38,147, 9,126,126,222,238,244,249,176,238,221,187,255,250,229,151, 95,250,110,220,184,209,212,185,115,103,201,
- 39,159,124, 66, 52, 26, 13,210,211,211, 43, 91,228,195, 71,143, 30, 13,239,214,173, 91,212,197,139, 23,113,248,240, 97,152, 76,
- 38, 68, 71, 71,227,234,213,171,104,211,166, 13,244,122,253,201,211,167, 79,255, 80, 29, 22, 24,251,241,157, 61, 29, 57,114,100,
-170, 70,163,177, 0, 88,118, 63,125,241,246,237,219,210, 38, 77,154, 24,101, 50,153,196, 70,214, 62,252,183,250,118, 41,237,126,
- 95, 55, 19, 43,152, 83,198,249,249,249,117,171, 93,187, 54,210,210,210,196, 18,137, 4,237,218,181, 51,183,104,209,194, 28, 20,
- 20,244,134, 27,237,114, 81, 44, 22,119, 44,222, 68,240,184,125,251, 54, 40,165,147, 26, 55,110,252, 86,126,126, 62,178,178,178,
- 36, 26,141,198,177,153,142,138,138,130,209,104,188,232, 6,201,156, 19, 17, 17, 49, 77, 44, 22,207,207,200,200, 88, 93, 74, 29,
- 73,154, 54,109,170, 17,139,197, 48,155,205,198, 18,207,170,149,221, 91,149, 16, 44, 39,214, 88, 82,109, 94,225,241,160,171, 54,
- 88,132, 16,152, 76, 38, 40,149, 74,199,209,147,179,231,246,210, 8, 86,101, 36, 44, 44, 12,173, 90,181,146,111,223,190,125,203,
-146, 37, 75,142, 87, 6, 99,231,151, 95, 4,123, 9,133, 97,201, 39,247,224,242,185, 63,240,237,133,156,204, 73, 11,151,189,249,
-220, 11, 47,166,149, 36,100, 59, 70, 85,140, 87, 63, 64,217,184, 70,160,239,161, 15, 63,120, 95,147,117,241, 4, 82, 82, 83,177,
-231,228,233, 51, 38, 74, 47, 0,152, 84, 85, 13,234,124, 27,173,186,116, 84,103, 55, 13,153,153,153,184,112,225,130,157, 92, 69,
- 3, 64,251,246,237,207,218, 73,214,153, 51,103, 16, 19, 19,115,143,155,134,123, 52, 13,217,217, 11, 74,252, 70, 55, 0,126,118,
-162,207,113, 28,218, 77,155,230, 54,185, 34,132, 80,158,231,161,211,233,236, 59,195, 74,145, 43, 27, 86,187,194,194, 66,108,217,
-178, 37,243,218,181,107, 97,181,107,215, 30,247,249,231,159, 47, 83, 40, 20,119,171, 56, 10, 11,209,173, 91, 55,140, 25, 51, 6,
- 51,102,204, 16,134, 15, 31,206, 50, 12, 83,102, 4,123,158,231,197,181,106,213, 58, 0,224,169,139, 23, 47, 2,192,113, 74,105,
- 59,251,243,242,158,185, 32, 66,126,126,190, 72,173, 86,151,234,226, 65, 92,124, 77,211,221, 35, 61, 7,230,177, 99,199,222, 95,
-186,116,233,183, 19, 38, 76,184,118,159,152,165,106,176,122,247,238,141, 34,163, 5,137,105,185,224,121, 43, 12,230,116,183,241,
-156, 53, 88,189,123,247,134,161,200,132,219, 41, 58, 88,173, 60,242, 13, 86, 87,219, 94,241,244,211, 79,255,188,109,219,182,160,
- 19, 39, 78,128,231,121,225,234,213,171, 55,251,245,235,167,153, 56,113,162,175,147,141,169,187,242,241,139, 47,190, 56,224,216,
-177, 99,186,168,168, 40,159,147, 39, 79, 34, 61, 61, 29, 86,171, 21, 79, 61,245, 20, 36, 18,201,237,133, 11, 23,138, 1,124, 92,
- 93, 8,150, 84, 42,197, 31,127,252, 81, 37,196,202, 89, 36, 18, 73,165,143, 25, 31, 85, 57,121,242,100,210,216,177, 99, 27,106,
- 52,154,229, 29, 58,116,232,226,235,235,203,120,123,123, 31,174, 81,163,198, 91, 77,154, 52,113,249, 52, 65, 36, 18, 13, 87, 42,
-149,215,173, 86, 43,107,211,156, 3, 0,172, 86,171,132, 97, 24,212,170, 85,203,161, 52,105,217,178, 37,130,130,130,248, 75,151,
- 46, 13,119, 21, 63, 61, 61,253,174, 91,133,165,200,168,118,237,218,113, 70,163, 17, 9, 9, 9, 71, 75,106,232, 31, 23,146, 85,
-166,129, 10,195, 48,160,148, 66,214,188, 57, 82,246,237,195,215, 95,127, 93, 46,208,154, 53,107, 80, 82,165, 71, 8,233,230,236,
- 43,195,126, 91,240,181,215, 94,115,124,231,204,153, 51, 14, 99,247, 62,125,250,220,133,121,234,212,169,123, 72, 86, 73,204, 50,
- 26,247,226,142, 29, 59, 78, 47, 94,188,248,164,139,147,161, 3,211,110,131, 53,224,165,151, 83, 86,188, 63,227,252,198, 31, 14,
- 52, 78, 49,208,148, 73, 11,151, 77, 40, 73,174, 92,197,124, 34, 72,245, 68,104,128,239,225,165, 31,188,239,101,215,134,109, 59,
-155,154, 11, 43, 29,229, 78, 99,185, 82,118,103, 77, 34, 33, 68,168, 10,204, 74, 16,139,187, 48,157,221, 52,164,164,164, 56,200,
-149,147,163,209,232,246,237,219,159,181,145, 43,251, 51,107,101,242,201,113, 28, 38,232,245,224, 56, 14,157,103,207,198, 83,115,
-231,186, 93,118,158,231,193,113, 28, 34, 35, 35,221, 38, 87,206,152,148,210, 99,231,207,159,143, 24, 54,108,152, 58, 50, 50, 50,
-158, 16, 34, 26, 49, 98,132, 16, 28, 28,204,252,254,251,239,160,148,162,125,251,246, 72, 75, 75,131, 32, 8,216,188,121, 51,134,
- 13, 27, 70,254,250,235, 47, 42, 8,194,254,242,242,153,144,144, 48,170,107,215,174,107,138,138,138,184,172,172,172, 81,174, 62,
-171,168,236, 59,118,236,184, 22, 25, 25,217, 9,101,187, 98, 16, 0,156,184, 31, 76,155,246, 46,234,126, 48,203,210, 96,125,245,
-213, 87, 16, 4, 1, 97, 65, 90, 24,141, 70,148, 36,179, 21, 97,150,212, 96,109,223,190, 29,130, 32,160,102,176, 15, 76, 38, 19,
-236,134,193, 21, 97,250,250,250,126,184,105,211,166,208, 75,151, 46, 33, 49, 49, 17,203,150, 45,187,149,147,147,211, 51, 39, 39,
- 71, 58,107,214,172, 67, 47,189,244, 82,160, 32, 8, 70,119,199, 38,165,212, 72, 8, 25,222,182,109,219,205,243,230,205,187,209,
-160, 65,131,154,237,218,181,211,102,101,101,101,252,249,231,159, 55,215,172, 89,163,178, 90,173,195,203, 58,122,122, 24,227,221,
- 89,146,146,146,102,219,214, 25,183,136,149, 43,249, 60,117,234,212,187, 54,236, 83,174, 96, 63,172,178,223,239,205,196,138,242,
-185,114,229,202, 68,148,240,111,230,110, 62, 79,157, 58,149,208,173, 91,183,185,129,129,129,179,100, 50, 25, 50, 50,138,131, 19,
-216, 53,141,246,245,186,121,243,230,232,222,189, 59,174, 92,185, 50,119,218,180,105, 9,247, 83,159,182,141,118, 29, 0,175,116,
-237,218,117,226,128, 1, 3,176,114,229, 74, 80, 74,215, 63,174,132,216,238,166,129, 56,255, 5, 0,139,197,114,231,250,245,235,
-193,245,178,179,217, 16, 66,208,178,101, 75, 56,199, 16,180,219,229,216, 13,229,126,251,237, 55,171, 32, 8,229,250,156,226,121,
-254,206,177, 99,199, 2,247,237,219, 39,178, 55,164,205, 88, 83, 72, 78, 78,102, 14, 29, 58,228,208,134,113, 28,135,195,135, 15,
- 91,205,102,243,109,119, 11,117,229,202,149, 42,217,189,253, 22,151,240,214,207,123,190,243,107,221,170, 67,142,198,199,167,212,
- 1,108,247,248, 94,110,199,226,152,249,139, 23,206,213,218,201,213, 87,103, 83,115,138,140,124,151,139, 25,133,231,170,186, 65,
-243,243,243, 19,236,183, 5,245,122,253,237,234,210,209,236, 55, 8,131,131,131,207,162,196,109, 65,251,179,152,152,152,123,158,
-185,165, 38, 17, 4,120,121,121, 57, 38, 7,119,237,174, 8, 33,212,126,100, 93,114, 60, 84, 70, 82, 83, 83,151, 76,155, 54,237,
-153, 5, 11, 22,248,239,221,187, 87, 99,195, 68,255,254,253,211,207,159, 63,223, 1,128,180,160,160, 96,255,130, 5, 11,252,157,
-226, 17,114,189,122,245, 74, 75, 75, 75, 91, 81, 65,125,222, 0,208,213,221,103, 21,201,128, 1, 3,226, 81,138,195,207,251,145,
- 7,129,105, 23, 93, 78, 30,226, 19,146,108,177, 40, 5,240,183,210, 28,118, 83, 22,139, 21,186,188, 44,183, 53, 88,215,111, 38,
-217, 66,131,241,224,249,100, 27, 94,177,161, 59,205, 46,116, 69, 59,208,126,249,242,229, 61, 25,134, 97,126,255,253,119,227,226,
-197,139,239,100,100,100,244,161,148,222,182,245,179,206, 27, 55,110,220,226,130, 75,134,178,218,254, 2, 33,164,205,228,201,147,
-223, 4,208, 30, 64, 77, 0,183, 1, 28, 5,240,113, 53,243, 56,190,236, 17,197,174,180, 60, 42, 55, 19,247,239,223, 63,187,111,
-223,190, 92,120,120,248,123,225,225,225, 76,118,118, 54,244,122, 61, 24,134, 65, 80, 80, 16, 26, 53,106,132,160,160, 32,225,226,
-197,139, 11, 38, 79,158, 92,161, 79,189,134, 13, 27,214,177, 88, 44,117, 25,134,169, 3,160, 14,165,180, 14, 33,164, 14, 0, 31,
-155, 38, 76, 19, 17, 17,193,181,110,221, 26,173, 90,181,194,161, 67,135,176,115,231,206,207, 41,165, 63, 59,107,175,170, 98,238,
-173,246, 26,172,236,236,236,238, 61,123,246,220,199,178,108,173,210, 22,172, 82,130, 50, 39,164,165,165, 61, 91,238,228,149,157,
-221,253,173,183,222,218,199,178,108, 45,187,102,202,106,181, 26,117, 58,221,235,157, 59,119, 94, 37, 18,137,164,206,184,130, 32,
-220, 74, 75, 75,123,168,177,244, 74,250,193,234,222,179,111,230,253, 98,170,196, 76,221,203, 63,174, 69, 90,122, 38,190, 58,155,
-154,157,111,226, 59, 95,201, 40, 56,255, 32,242,159,144,144,208,163,186,118, 54, 27,145, 42,245,232,175,188,103, 46, 74,134, 11,
-142, 68, 51, 42,200, 31,177,145, 44, 82, 69,229, 61, 79, 8,105, 59,118,236,216,233, 10,133,162, 37, 0, 20, 22, 22,254,158,156,
-156, 60,215,126, 75,176,162,231, 30, 41, 91, 44, 22, 75, 98,163, 39,162,236,117,125,151,107, 6,231,215, 86,171, 53,209, 29,188,
-210,112,156,223,243, 60,159, 88,129, 22,121, 66,171, 86,173,216, 9, 19, 38,164,237,221,187,215, 30,224,182,208,169, 95, 92, 65,
- 57,206, 68, 93,236, 91, 70, 0,139,109,201, 35,213,112,174,115,231,253,191, 37,223,125,247,221,244,193,131, 7,111,244,241,241,
-249,162, 78,157, 58, 81,129,129,129, 26,185, 92, 14,163,209,152,111, 50,153, 46, 95,185,114,101,200,180,105,211,110,184,130,181,
-113,227, 70, 22,128, 88, 16, 4, 25,195, 48, 74, 0, 26, 66,136,183,157, 96, 17, 66, 96, 54,155,145,144,144,128,169, 83,167,242,
- 7, 14, 28,248, 0,192, 76, 55,178,219, 2,128,191,211, 60,238, 15,192,132, 98,199,179, 25, 0, 78, 63, 50, 4,203,230,173,186,
- 77, 21,119,186,242, 48,195,171, 75,165, 12, 53, 46,222,138, 53,139,239,138, 67,104, 39, 95,165,190,175,224,160, 47,215, 96, 29,
-251,241,207,113, 75,140, 86, 42,152,173,194,136, 43,233, 5, 23,254,195, 19,143,181, 50,207, 92,192,125,186,138,242, 71,170,184,
-188,241, 0,134, 86,246,185, 71,202, 97,203, 25, 25,205,171, 35,158,201,100,122,171,109,219,182, 31,241, 60,191,212, 98,177, 28,
-245,180,148, 71,170,179,124,245,213, 87, 55,236,235,242,192,129, 3, 89, 0,216,177, 99,135,219,183,123,135, 13, 27,198,219, 2,
-140, 23, 1, 40, 0,144,135, 98, 71,217, 4, 0, 10, 10, 10,178,147,147,147, 47,242, 60,127, 17,192,150, 74,220,160,245, 39,132,
-252, 72, 41,237,109, 35,108, 63, 82, 74,123, 59,127,246,200, 16,172,255,170,236,136,251,103,129, 45, 73,156, 42,122, 95,150, 92,
- 78,213, 31,190,223, 29,171, 71, 60,226,145, 71,102, 19,113, 27, 64, 31, 79, 77,120,228,145, 91,255, 42, 65,172,236,114,225,194,
-133, 7,102, 10,240,168, 10,227,169, 2,143,120,196, 35, 30,241,136, 71, 60,226,145,170, 21, 2,160, 91, 25,187, 48,119,110, 7,
-116,171,196, 46,111,191, 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 22,102, 37,165, 87, 5, 71,132,187,171, 29,195,
-114, 54,226,172,234, 4,160,155, 7,211,131,233,193,244, 96,122, 48, 61,152, 30, 76, 15,230,125,166, 46, 83,166, 76,121, 23,197,
-241,137,233,148, 41, 83,222,165,148,246, 42,166, 49,180,215, 67,206,139, 75,201, 99,131,229, 17,143,120,196, 35, 30,241,136, 71,
-170,187, 28, 95,184,112, 97,225,194,133, 11,237, 6,237, 25, 0,136, 77,123,149, 81, 29, 51,252,175, 17, 44, 66, 72, 8,195,137,
- 95, 22,137,165, 93, 64,133, 70, 0, 0,134,141,227, 77, 69,191, 90,173,230, 47, 40,165,201, 46, 96,148,122,227, 43, 10,120, 34,
- 82, 43,255,222,200,243,226,219,249,166,129,151,139, 29,209,149,166,189, 43,215,225,219, 64, 66,218,201, 36,146, 95, 36, 90,109,
-169,222, 5, 77, 57, 57,134, 34,147,233,153, 29,148, 30,243,244,125,143,120,196, 35, 30,241,200,163, 32,132, 16,165,183,183,247,
- 1,134, 97,194,157, 62, 67,105,175, 1,128,231,249, 20,157, 78,247, 12,165, 52,243, 97, 98,150, 92,114, 81,198, 90, 94, 93,133,
-179, 21,220, 78, 52, 42,140, 96,221, 32, 88,213, 33,170, 78,248,151,201,169,105,103,243,138, 76, 35, 47, 39,229,235,220,254, 81,
-177,236, 53,173, 95,208,252,255, 27,254,150,111,100,253, 40, 18, 22, 86, 3,160,192,237, 59,137,129,215,175, 93,237,186,125,211,
-199,227,197, 50,217, 84,115, 81,209,103,238, 98, 71, 2,202, 8,149,244,200,103, 83, 94,210,114,176,226,197,121, 95,238, 21,244,
-230,154, 87,139,175,141,186, 44, 3, 9,105,231,237,227,243,243,226,125,251,228,234,102,205, 74, 18, 51, 8,130, 0,253,217,179,
-242, 41, 61,122,252, 60,144,144,238, 30,146,245, 88, 78, 66, 65, 26,141,102,156, 72, 36,234,108, 54,155,195, 37, 18,201, 29,158,
-231, 15,103,103,103, 47,167,148, 38,121,106,200, 35, 30,169,112, 12,149, 25, 96,252,223, 12, 62, 14, 0,106,181,250, 15,134, 97,
- 66,157, 23,127,187,127,198,146,126, 30,157,252, 61,222,200,202,202,106, 91, 78,121,235,248,248,248,172, 2,208,162, 34, 71,199,
-182,253,253,105,157, 78,247,186,205, 93, 75,105,120,106,111,111,239,217,132,144,129, 12,195, 84, 24,240, 87, 16, 4,158, 82,186,
- 35, 59, 59,123, 38,165, 52,191,172,239,121,123,123,239,191,116,233, 82,139,128,128,128, 10,221,210, 88,173, 86,220,190,125,219,
-191,101,203,150,191, 1,104,240, 32, 49,221,225, 34,143, 12,193,178, 53,182, 75, 17,172, 5, 1, 47,111,152,255,122,141,148, 91,
-215,106,140, 90,176,181,126, 3, 63, 69,231, 75,153,133,169,174,254,160, 68,174,254,161,253, 83,189,187,140,121,115,130,242,207,
-243,151,241,203,161, 19,200, 43, 48,130,101, 24,104,213, 10,212,175, 95,151, 44, 91,251,181,223,231,159, 46, 91, 42, 87,105,123,
- 25,244, 57,207,187, 83, 32, 47, 5,247,222,164,126, 45,149,190, 62, 60, 32,240,120,167,103, 83,229,123, 63,158,125, 15,133,214,
-247,220, 38, 87,251,247, 43,210,211,210,240,129,175, 47, 56,139, 5, 50, 66, 32, 39, 4, 50, 0, 42,169, 20, 29,190,252, 18,243,
-119,239, 86, 76,237,213,203, 67,178, 30, 51, 81,171,213,195,235,215,175,191,120,221,186,117,190,181,107,215,134, 82,169,132, 78,
-167,243,187,114,229, 74,179,183,223,126,123,168,151,151,215,180,220,220,220, 53,158,154,242,136, 71,202, 36, 27,205, 0,148, 26,
-188,189,188,103, 15, 75, 24,134, 9, 77, 74, 74, 10, 80, 40, 20,224,121,222,230,189, 95,112,108,160,157, 15, 56,108, 14,102,209,
-160, 65, 3,115, 5,243,198,202,244,244,244,110,206, 33,203,202, 59, 40, 73, 74, 74,234,214,176, 97,195,149, 0,158, 41,131,180,
-204,126,243,205, 55,199, 53,110,220,216,174,245,177, 69, 45, 40,254,155,153,153,137,177, 99,199, 58,126, 67, 16, 4,236,219,183,
-239,205,225,195,135, 3,192,219,229,148, 61, 60, 32, 32,128,140, 26, 85,190,175,161, 89,179,102, 97,214,172, 89,248,248,227,143,
-137, 72, 36,210, 86, 80,159, 85,130,233, 42, 23,121,164, 8,150,203,157,146, 10,123,230, 45, 95, 55,114,206,176,246,100,195,219,
-221, 34, 71,127,188,255, 68,195, 16,121,199, 11,201,134, 59, 46,104,174, 70,180,238,248,108,231,177,227, 38, 41,183,126,119, 16,
- 87, 46,158,195,165,163,219,238,250, 78,243,103,134, 35, 53, 51, 31,195,199,188,163, 34, 44,215, 89, 44, 83,140, 48, 23, 21,110,
-112, 37,111, 81, 64, 96,184, 84,242,191, 54,173, 26,137, 80, 51, 17,160, 64,251,152,122,162,176,159,255,254, 95, 62,172, 31, 95,
- 6, 42,140, 37, 88,146, 92,109,125,225, 5,244, 48, 24, 16,136, 98,159, 22,246, 84, 8,224,114,223,190,104,240,237,183,152,253,
-253,247,138,153,125,250,184, 77,178, 20, 10,197,231, 6,131, 97, 81, 37, 28,174,253,155,147,102,125,181, 90, 61, 53, 47, 47,239,
-229,106,148,167, 96, 0, 25,165,196, 47, 20, 3,208, 82, 74,221,138,248, 43,147,201, 94,123,241,197, 23,151,173, 88,177, 66,145,
-150,150,134,228,228,100,240, 60, 15,153, 76,134,200,200, 72,178,127,255,126,223, 73,147, 38, 45,209,104, 52,210,188,188,188,143,
-220,200, 39, 35, 18,137,134,249,248,248,244, 13, 12, 12, 12,200,200,200,200,200,206,206,222,101, 52, 26, 55, 84,118, 39,111,195,
- 28, 18, 17, 17,209, 55, 36, 36, 36, 48, 41, 41, 41, 51, 49, 49,241, 7,163,209,248, 57,165, 84,184,207, 58,109, 2,192,215,246,
- 81, 74, 68, 68, 68,220,205,155, 55,211,171, 16, 51, 57, 34, 34,226,130,187,152,132, 16, 37,128,237, 0, 66, 42,248,106, 50,128,
- 65, 54, 7,199, 30,249, 23,200,149, 45,244,212, 93, 68,170,188,103, 15, 91,228,114, 57,182,109,219, 6,145, 72, 4,145, 72,132,
-236,236,108,132,134,134, 58,222,139,197, 98,199,235,154, 53,107, 86,136,199,243,124, 75,150,101,161,215,235,193,243,188, 35,229,
-228,228,128, 82, 10,169, 84, 10,158, 47, 14,187,228,244,188,101, 57,245, 56, 48, 36, 36, 4, 91,183,110,133,201,100,186,231,185,
- 70,163,193,249,243,255, 4, 5, 97, 89, 22,173, 90,181, 98, 8, 33, 3,203, 35, 88,118, 77, 81,108,108, 44, 88,150,117,132,190,
-179,191,182, 39,158,231, 49,107,214, 44, 56,135, 16,123,152,152,143,252, 56,176, 21,146,150, 22, 38,164, 65,144,234,245,238, 93,
- 90,127, 32,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,158,105, 18,140, 54,181, 21,200,208,229, 97,212,154, 83,121,
- 73, 73,198, 86,231,179,242,175,148, 83,249, 33,106,109,192, 95,159,110,254,206,239,151, 19,151, 16,119,238, 44,206,238, 93, 85,
-234,119,187,189, 56, 5, 13,155,180,192,147,245,130, 48,113,244,128,204,172,244,228,166,165,217,100,149,180,193,106,171, 22,111,
- 94, 49,164,203,139, 77,154,105, 25,116,178,173, 87,251,173, 56,115, 34,149,127,235,135, 63,183,158,200, 55, 15, 45,193,148,239,
-217, 90, 12,149, 74, 11, 63, 57,113, 66,158,158,158,142,173, 47,188,128, 24,131, 1,153, 34, 17,158,176, 88, 28, 36, 43, 7, 64,
- 22,199, 33,200,106, 69,145, 70,131,160,175,191, 6,207, 48,152,210,163,135, 97,179,201,164,112,181,242, 85, 42, 85, 6,203,178,
-124, 94, 94, 94,231, 71,129,100,217,200,213, 33, 66,136, 56, 55, 55,215,167, 26,228,135, 1, 48,103,228,200,145, 35,142, 28, 57,
-114,253,250,245,235,221,108,158,132, 65, 8,225,234,214,173,123,176, 67,135, 14,117,214,175, 95,255, 25,128, 57,174, 16, 14, 66,
- 72,141,218,181,107,255, 25, 23, 23,231,119,245,234, 85,232,245,122,136, 68, 34, 12, 25, 50, 4, 95,127,253, 53,196, 98, 49,164,
- 82, 41,196, 98, 49, 58,118,236,152,121,243,230,205, 22,148,210, 91, 46,224,178, 94, 94, 94,159,175, 90,181,170, 94,159, 62,125,
- 56,163,209, 8,158,231,177, 99,199, 14,203,204,153, 51, 19,178,178,178, 94,113,151,100, 17, 66,152,224,224,224, 13,159,125,246,
- 89,253,167,158,122,138, 51, 24, 12, 16, 4, 1,187,119,239,182,188,247,222,123, 55, 82, 82, 82,134, 82, 74,249, 74,212,107, 51,
-133, 66,209,240,245,215, 95,207,232,211,167,143, 25, 0, 78,159, 62,205,156, 59,119, 78, 83,187,118,237, 91,211,167, 79, 63, 91,
- 9,204, 24,181, 90, 29, 53,106,212,168,204,222,189,123, 91,196, 98,177,112,236,216, 49,238,202,149, 43,154,136,136,136,248,247,
-222,123,239,156, 27, 88,123,142, 31, 63,222, 41, 52, 52, 84,176, 77,234,212, 62,193, 51, 12, 67,109,127,113,249,242,101,174, 83,
-167, 78,135, 40,165,207,195, 35, 15,115, 92,114, 0, 44,148, 82,232,116, 58,156, 60,121, 18,189,122,245, 2,128,104,219, 87,206,
- 82, 74,145,151,151, 7,131,193,128,224,224, 96, 0, 16, 61,236,227, 66,173, 86,155,150,145,145, 17,240,253,247,223, 67, 36, 18,
- 97,223,190,125, 88,189,122, 53,182,109,219, 86, 42,201, 10, 14, 14, 70,100,100,100, 98,114,114,114, 88, 57,115,122,174, 94,175,
-215,228,230,230,130,231,121,156, 60,121, 18,235,214,173, 67, 64, 64, 0,252,252,252,224,239,239,143,150, 45, 91, 66,169, 84, 58,
- 72, 86,135, 14, 29,242,244,122,189, 87,105,120,190,190,190,201, 19, 38, 76, 8, 62,115,230, 12, 44, 22, 75,169, 4,107,220,184,
-113,206, 90, 36, 40, 20, 10,180,105,211, 38, 37, 43, 43,171,204, 13,136,191,191,127, 74, 70, 70, 70,208,185,115,231,238, 34, 63,
-165, 17, 34,150,101,161, 86,171, 81,171, 86,173,180,148,148,148,160, 7,137, 89, 22, 23,121,228, 53, 88,182,137,170,243, 93, 26,
-161,136,160,169,139,199, 13,148,131, 55,131, 90, 12,128,185, 16, 48,235, 33,152, 10, 65,196,114,192, 98,128,191, 84,135,237, 99,
-162, 52,147,183,198, 95,124,194, 95,211,235, 98, 70,222, 79,165,106,190, 56,241,144,129,195,222,244, 77, 76,207, 67, 82, 90, 46,
- 88,230, 31, 31,167,209,221,134,129, 99, 25,156,250,185, 88, 81,197,176, 44,114, 11,140,200,209,155, 49, 96,216, 56,159,207,150,
-205, 24, 2, 96, 81,121, 5,105, 4, 68, 54, 82,169,250, 53,110, 20,206,160, 94, 10, 72,157, 93,197, 36,234,200,115,104,150, 29,
-192, 54,248, 69,210, 79,159,111, 94, 16, 7, 92, 45, 15, 71,162,213,202,213,205,154, 97,177,175, 47,122, 26, 12,184,206,113,120,
- 81,167,195,111,227,198,129,219,176, 1, 28, 0,227,136, 17,104,183,124, 57,206,251,248, 32, 36, 47, 15,230, 17, 35, 32, 57,115,
- 6, 98, 47, 47,185, 59,149, 47, 22,139,205,235,214,173, 11,121,245,213, 87, 15, 17, 66,170, 53,201, 34,132,212,247,241,241, 57,
-244,254,251,239, 7, 78,159, 62, 61,165,138, 48, 3,149, 74,229,142,130,130,130,113,238,238, 96,109,228,106,222,154, 53,107, 70,
-199,198,198,106, 95,125,245, 85,122,253,250,117, 45, 0,187, 54,196,191, 67,135, 14,117,215,173, 91, 23,212,162, 69,139, 55, 71,
-141, 26, 37, 38,132, 76,171,136,100,169, 84,170, 49,235,214,173,243,203,204,204,116,144, 43,145, 72,132,196,196, 68,200,229,114,
- 71,176,115,145, 72,132,247,223,127,223,119,204,152, 49,227, 0,140,171, 40,191, 82,169,116,216,170, 85,171,234,117,239,222,157,
- 75, 72, 72, 0,195, 48,144, 74,165,120,233,165,151, 68,133,133,133,225,115,230,204,137, 5,176,202,157, 58, 16,137, 68, 67,214,
-174, 93, 91,191, 93,187,118,220,165, 75,151,208,166, 77, 27,156, 58,117, 10, 47,188,240,130, 40, 63, 63,191,214,164, 73,147, 70,
- 2, 88,235,174,150, 73,161, 80, 52,254,245,215, 95,239,132,133,133, 57, 54, 32,181,106,213,226,123,245,234,165,187,116,233, 82,
-212,137, 19, 39,178,218,180,105,115,219, 13,204, 26, 10,133,162,193,158, 61,123, 82,230,204,153,211,117,205,154, 53,125, 0,160,
-101,203,150, 63,204,157, 59,247,160, 78,167,107,116,228,200, 17, 93,135, 14, 29, 18, 93,132, 12, 9, 14, 14,230,199,142, 29,171,
- 42,239, 75,235,215,175,207, 1, 80,147, 16, 82,219, 22, 0,219, 35, 15, 65, 40,165, 86, 66, 72, 52, 33,228,236,238,221,187,209,
-170, 85, 43,236,222,189, 27,189,122,245, 58,107,123,142,220,220, 92,156, 63,127, 30, 29, 59,118, 4,138, 3,188,255, 43,182, 88,
- 60,207,131,227, 56, 36, 38, 38, 98,253,250,245, 88,176, 96, 1, 34, 35, 35, 97,177, 88, 28, 99,159,227, 56,136, 68, 34,187,182,
-197,165, 69,223,106,181,226,244,233,211,248, 98,243,102, 76,155, 58, 21,106,181, 26, 0, 96, 54,155,161,203,206,134, 76, 38,115,
-104,176, 42,168,203, 29,215,174, 93, 27, 23, 26, 26,122,215,209,160,253,175,109,206,130, 32, 8,176, 90,173, 40, 42, 42,194,178,
-101,203,172,148,210, 29, 21,140, 73,135,198,107,220,184,113, 48, 26,255,137, 15,222,164, 73, 19, 0, 64, 68, 68, 4,154, 54,109,
-234,120,207, 48, 12,117, 21,243,179,182,141, 97,112,250,118,212,172, 37, 0,128,208,208, 80, 68, 69, 69,217, 73,117,169,152,165,
-113,145, 71,154, 96,149,197, 20, 47,222, 76, 93,244,234,164, 37, 75,148, 50, 86,244, 86,223, 39, 81, 83, 43, 6,228, 62, 16,119,
-156, 12,162, 13, 47,238, 0,186, 27,192, 47,147,177,180,159,142,137,221, 82,244, 93, 93, 31, 31,255,235, 58,221, 61,198,117, 34,
-177,172, 75,157,122,245,201,237, 20, 29, 56,142,131,210,203, 15,109,251,190, 13,150,101,160,210,250,129,240,134,127,212,156, 12,
- 11,142,229,160,203, 55, 32,162,118, 61, 70, 42,147,119,169,136, 96,121,121,137, 86, 78, 28,220, 86,198,200, 50,129, 16,137,211,
- 84, 44, 1,227,155,143, 9, 61, 34,229,177, 63,252,189, 18,185,150,174, 46, 85,140, 93, 99,101,181,226,183,113,227,208,117,237,
- 90,252, 14, 64, 4, 32,102,237, 90, 92,142,141, 69,128,197, 2, 41, 0,214,104,132,181,196,153,189,139, 11, 15,250,246,237,139,
-204,204,204,192,169, 83,167, 86,154,100,201,229,242, 47, 8, 33, 61, 69, 34,145,153, 16, 2,134, 97, 28,193,185,237,175,205,102,
-179,152,101,217, 61,153,153,153,110, 31,237, 17, 66,234,123,123,123, 31, 58,126,252,120,160, 82,169,196,172, 89,179,170,132, 92,
-169,213,234,223, 71,142, 28, 89,243,139, 47,190,248,137, 16,210,195, 85,146, 85,146, 92,173, 93,187, 54,103,253,250,245,159, 57,
- 31, 5, 82, 74, 83, 8, 33, 27, 90,180,104,241,122,108,108,172, 22,192,232, 81,163, 70,161, 34,146, 37,149, 74, 59,215,169, 83,
- 7, 58,157,206, 49,193, 74,165, 82, 0,128, 82,169,132,151,151, 23,196, 98, 49,140, 70, 35,162,163,163,137, 68, 34,105,239, 74,
-158,213,106,117,207,126,253,250,113,199,142, 29, 67,106,106, 42,188,188,188,160, 84, 42,193,243, 60, 94,123,237, 53,241,242,229,
-203,159,117,151, 96,133,133,133,245,233,218,181, 43, 23, 23, 23,135,155, 55,111,194,104, 52,226,202,149, 43,208,104, 52,120,229,
-149, 87,196,139, 23, 47,126,206, 93,130, 5,160,113,108,108,108,154, 51,185,178,139, 82,169, 36,245,235,215,215,249,250,250,198,
- 0,184,237, 14,230, 27,111,188,145,190,112,225,194,142,251,247,239,159,108,255,112,255,254,253,147, 0,224,163,143, 62, 58,226,
-239,239, 31, 3,192, 85,130, 5, 74,169,240,127,255,247,127,183, 36, 18, 9, 68, 34, 17, 36, 18,201, 93, 73, 44, 22,131, 97, 24,
-181,125, 74,121,140,181, 69, 45, 0,124,136,226, 27, 86, 83, 41,165, 39,171, 9,201,250,147, 16, 18,221,171, 87, 47, 7,201,218,
-187,119, 47,122,244,232,129,156,156, 28,196,197,197, 57,147,171,127,203, 6, 11,130, 32, 64, 36, 18, 97,201,146, 37, 48,155,205,
-216,178,101, 11,118,238,220,121,215, 28,170,209,104,240,241,199, 31,187,117,156,197,243, 60, 54,110,220,136,201,147, 38, 57,200,
-149,109, 83,141,160,192, 64,248,250,249, 33, 62, 62,190, 66,130,149,157,157, 61,115,215,174, 93, 40,207,200,125,215,174, 93,142,
-215,206, 70,238,174,228,147,101, 89, 24,141, 70, 60,253,244, 63,161, 92,223,120,227, 13,199,107,157, 78, 7,150,101,237,117, 65,
- 92,197, 52, 80,160,175,236,159,207,122, 78,152,224,120,157,153,153, 89, 38,230,227,160,181, 42, 85,131, 85,154, 92, 77, 47, 88,
-193,145,148,166, 11,199, 62, 51,172,102,128, 23,168, 62, 13,226,167,102,226,175, 12, 57,150, 44,219, 3, 0,120,231,165,230,104,
-210,109, 30, 76,159, 63,131,113,109, 88,201,203,137,198,137, 0,166,223, 59,224,132, 6,161, 53, 66,240,215,245,243,224, 88, 22,
- 18, 47, 63,120,249, 4, 66,176,154,144,155,126, 19,135,190, 89, 9, 0, 88,179,113, 7, 24,134, 1,199,177, 48,154,120, 68,214,
- 12,129, 32, 8, 13,202,203,231, 19, 64,219,206,129,126,173, 34, 34,124, 8, 26,230,224,158, 8, 64,205,164,136, 76, 86,145, 54,
- 42,121,203,236,220,188,182, 23,129,227, 21, 85,140,204,134, 18, 12, 64,188, 97, 3,126, 7,208,122,109,241, 90,117, 37, 54, 22,
-170, 13, 27,160,180,125, 71, 74, 8,242,120,190, 82, 3, 28, 0,162,162,162,176,102,205,154,192, 49, 99,198, 84,138,100, 21, 21,
- 21,205,215,104, 52, 93, 55,108,216, 16,216,175, 95,191,123,158, 95,191,126, 29, 29, 59,118, 76, 75, 77, 77,157,127, 63,228, 74,
-171,213,226,206,157, 59,247,125,110,110, 39, 87,251,246,237, 11, 15, 13, 13, 69,116,116,180,255, 59,239,188,227, 14,201,154,238,
- 76,174, 70,141, 26,245, 55,128, 0, 66, 72, 73,130, 66,108,207,158,116, 34, 89,185, 0, 22,151,179,243, 12, 87, 42,149, 72, 79,
- 79,199,176, 97,195,112,245,234, 63, 10,207,144,144, 16,199,206, 46, 62, 62, 30,254,254,254, 32,132, 4,184, 82,102,127,127,255,
- 64,147,201,132, 17, 35, 70,224,206,157,127,204, 21,107,212,168, 97,175, 83, 63,119,235, 49, 48, 48, 48,208, 96, 48,160, 67,135,
- 14, 40, 42, 42, 2, 0, 12, 26, 52, 8, 34,145, 8,233,233,233, 16,137, 68,126,149,104, 30,191, 94,189,122,149,233, 34, 69,163,
-209,152,189,189,189,159,112, 19,211,247,185,231,158, 75, 90,187,118,237, 61, 71,117,167, 78,157,122,222,199,199,103,191,143,143,
- 79,125, 55, 49, 5,103, 50, 37, 22,139,239, 34, 88, 34,145, 8, 12,195, 8,120,252,229, 3, 0,246, 91,109,171, 1, 52,173, 70,
-154, 44, 7,201,218,187,119, 47, 26, 53,106,132,236,236,108, 92,186,116,233, 95, 39, 87, 78,132, 4, 28,199, 57, 54,199, 50,153,
- 12,209,209,209, 14,114, 69, 8, 65, 97, 97, 33, 56,142,179,207,215, 46, 77,126, 57, 57, 57, 8, 14, 10,130, 90,173, 70,189,200,
- 72, 92,179,205, 35,246,215, 82,169, 20,132, 16, 88,173,214,138,234, 48, 31,197,182, 84,111, 87,117,243,216,201, 80,185,170,226,
-144, 16, 8,130, 96,159,243,105, 85, 96,250,249,249, 65,175,215,187,138,249,232, 19, 44, 66, 72, 39, 0,135,224,116, 53,146, 16,
-194, 60, 17,168, 90,191,112, 76,215, 97,207, 52,242,131, 33,227, 38,100,106, 63, 16,109, 4,150, 44,219,131,184, 27, 89, 0,128,
- 37, 95,254,129,173,115,122, 2,114, 31, 68,121,101, 34, 72,205,245, 43,141, 96, 17, 80, 34, 80, 10,142, 45, 62,143,229, 56, 22,
- 44,203, 64,151,145,130,229, 51, 71,219,200,213, 78,236, 62,114, 9,161,117, 26, 57,206,105, 65, 8, 64,203,239,212,254, 94,226,
- 53, 99,250,183,150, 19,109, 14,160, 21,221,251, 5,111, 49, 72, 4,131,177,157, 67, 21,167,119, 21,173,185,152,107,110, 88,161,
- 86,136, 16,135, 65, 59, 7, 64,236,244, 76,108,211,100, 49,246,173,177,237,214, 73, 37,136,134, 67,197, 27, 24, 24,136, 5, 11,
- 22, 4, 78,153, 50,101, 11,220, 12, 12, 77, 41,189, 66, 8,233,252,218,107,175, 29,202,202,202, 10,140,138,138,130, 74,165,130,
- 74,165, 66, 90, 90, 26, 6, 12, 24,144,150,154,154, 90, 89,237,216,230,145, 35, 71, 6,138,197, 98, 92,191,126, 29, 62, 62, 62,
- 14, 98, 88, 89,114,165,209,104,126,223,191,127,127,120,221,186,117,113,249,242,101, 60,241,196, 19,216,190,125,187,255,139, 47,
-190,232, 18,201,146,203,229,125,109,132, 9,177,177,177,218,216,216,216, 78, 0, 58, 85,244,219,177,177,177,218,183,223,126,251,
-185,242, 8,150, 72, 36,186,163,211,233,130,228,114, 57,190,249,230, 27,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161,
- 80,128, 82, 10,139,197, 98,159, 36,178, 92, 41,119, 70, 70, 70, 26,207,243, 97, 63,253,244, 19, 50, 50,254,241,137, 23, 30, 30,
- 14,155,189, 70,166,187,117,153,156,156,156, 70, 8, 9,251,235,175,191,144,144,144,128, 30, 61,122,224,187,239,190, 67,243,230,
-205, 1, 0, 38,147,169, 50,206,247,120,150,101,105, 57,237, 71, 0,120, 87, 37,166,109,209,114, 11, 83, 16, 4,193, 78,174,156,
-255, 58,147,174, 10,126,243,113, 17, 47,231,253, 65,117,205,100,143, 30, 61,160,211,233,160, 82,169, 42, 92,128, 31, 54,193, 18,
-137, 68,152, 61,123, 54, 70,143, 30,141,192,192, 64, 76,158, 60, 25, 28,199, 57,146,243, 73,128, 59, 18, 16, 24, 88,238,115,187,
- 13, 86, 5,243,165,218,203,203,107, 54,195, 48, 3, 89, 23, 42,142,231,121, 94, 16,132, 29,185,185,185,229,186,105,176, 27,164,
-187,210, 22,206,117, 80, 65, 94,239, 27,179, 52, 46,242, 40,139,189,116,135,108,170,185, 67,206,228,234,253,209, 93,134, 61,211,
-200, 27, 63, 28, 56, 9,177, 57, 7, 48,229,151,211,178, 22, 16,177, 18,129, 94,162,208, 82, 43,159, 97, 47, 39, 38, 37,195,215,
- 91,101, 35, 87,182,196, 48,104,210,168,120,243,186,251,200, 37,132,214,110, 4,142,101,193,177, 44, 84,114, 41,210, 82, 83,192,
-113,204,229,178,126,182, 49,139,254,253,235,135, 69, 4, 6, 72,128,198,229, 12,128, 24, 53, 66,131, 37,232,238, 43, 11,111,204,
-162,127, 5,132, 5, 82, 27,193,202, 7, 96, 26, 49, 2,209,107,215,226, 74,108, 44,110,198,198,162,214,218,181,192,136, 17, 16,
-240,207,173, 66,190, 18, 26, 44,123, 71,180, 19,161,233,211,167,167,101,101,101, 13,169,228,110,241, 74,118,118,118,231,169, 83,
-167,166,101,102,102, 66,161, 80, 32, 37, 37,229,190,200, 21, 0, 24, 12,134, 87,214,174, 93,155,118,232,208, 33,168, 84, 42,168,
-213,234, 74, 19, 44,187,230,106,230,204,153, 53,195,194,194, 16, 31, 31, 15, 47, 47, 47,248,250,250,162, 73,147, 38, 56,118,236,
-152,127, 88, 88,216, 79,182, 91, 70,229,229,233,251,181,107,215,230, 0,192,218,181,107,115, 8, 33,135, 9, 33,159, 18, 66, 86,
-151, 72,159, 18, 66, 14, 59,127,215, 96, 48,124, 91, 30,182,201,100, 58,124,233,210, 37,170, 80, 40,192,178, 44,204,102, 51,100,
- 50,153,163,189,236,134,185, 0, 96, 51, 60, 61,234, 74,217,243,243,243,247,126,254,249,231,150,176,176, 48, 60,249,228,147,136,
-137,137, 65,155, 54,109, 16, 30, 30,142,217,179,103,155, 10, 10, 10,246, 86,130, 96,237,222,190,125,187, 37, 44, 44, 12, 49, 49,
- 49,144, 74,165,104,210,164, 9, 66, 66, 66,176, 96,193, 2, 83,110,110,238,222, 74, 52,211,237,243,231,207,179,229,144, 91, 13,
- 92,184,141, 91, 66,238,156, 62,125,154,109,221,186,245, 15, 37, 31,180,108,217,242, 7,149, 74,229, 5,192, 93,187, 62,234, 76,
-170,164, 82,169, 35,217, 63,231, 56,238,191,160,193, 26, 7,224,111, 0,241, 0, 38, 87,167,140, 57,223, 22,204,202,202,194,165,
- 75,151,112,230,204, 25,180,110,221, 26, 71,143, 30, 5,138,221, 52, 52,251, 23,243, 7, 74, 41, 68, 34, 17,162,162,162,240,246,
-219,111, 99,207,158, 61,184,114,229, 10, 44, 22,139,131, 0,217,109, 46,221,209, 96,137,197, 98, 4, 6, 6,194, 98,177, 56,180,
- 87, 0,112,237,234, 85,112, 28, 7, 65, 16, 96, 50,153, 42,212, 96,121,121,121,205, 94,183,110,221,155,153,153,153,193, 25, 25,
- 25, 1,206, 41, 45, 45, 45, 32, 37, 37, 37, 32, 41, 41, 41,224,206,157, 59, 1,183,110,221, 10,184,121,243,102,240,162, 69,139,
-222,244,242,242,154,237,234, 26,212,164, 73, 19,188,241,198, 27,142,180, 98,197, 10, 71, 58,116,232,208, 63,202, 14, 55,214,181,
-168, 89, 75,208, 51,131, 58,210, 30,127,226, 72,113,239,140, 42, 15,243, 46, 46,242, 88,104,176,156,217, 39, 0, 52, 8, 82,204,
-123,255,181,142,195,158,126,194, 11,223, 31,248, 3,115,190,189,113, 57,114,152,127, 84, 93,239, 12, 8, 25,151,240,206, 75,205,
-177,228,203, 63, 0, 20, 31, 17, 10,233,113,160,217,241,160,234, 48,220,212,101,150,122,188, 96, 53, 21, 29,188,113,253,106,151,
-168,198, 45,152,212, 76,253, 93, 55, 12,162, 59, 15, 0, 33, 4, 53,106, 55, 2,203,113, 96, 89, 6, 28,203, 66,171,145,225,210,
- 95,127, 9, 70,131,225, 96,105,152,209, 0,231, 43,151,124,242, 82,247, 38, 50, 4,235, 1,185,244,159,217,247,198,128, 18, 43,
- 3, 7, 52, 86, 99,120,146,175,252, 96, 90,209, 39,162, 2,243, 15, 0, 44,101,237,106,212, 82, 41, 10, 1,100,138, 68,104,179,
-124, 57,174,198,198, 66,189, 97, 3, 88, 20, 91, 81,251, 47, 95,142,252,205,155,193, 88,173,160, 50,217,125,105,176,210,210,210,
- 48,104,208,160,251, 34, 66,206,154,172, 49, 99,198, 28, 90,176, 96, 65,224,244,233,211,171, 12,115,242,228,201,135,190,252,242,
-203,192, 90,181,106, 85,186,179,169, 84,170, 73,130, 32,104, 23, 47, 94,156,186,116,233, 82,148,180, 23,179, 17, 28,169, 86,171,
- 93, 2,160, 75, 57, 80,115, 70,141, 26, 37, 6, 48,218,166,201,122,114,212,168, 81,199, 41,165,211, 74,212,239,172, 53,107,214,
- 12,114, 58, 74,252, 20,192,242,242,242,152,151,151,183,250,237,183,223, 30,241,219,111,191,249,201,100, 50, 16, 66, 32, 22,139,
- 81,175, 94, 61,155,230,181,216,224,149, 82,138, 9, 19, 38,100,166,167,167,187,228,166,193,104, 52,110,156, 51,103, 78, 23,131,
-193, 16, 62,124,248,112,177,183,183, 55,210,210,210,240,225,135, 31,154, 54,110,220,120,167,160,160,192, 93, 91, 41, 88, 44,150,
-141, 51,102,204,232,172,215,235,107,191,250,234,171,226,220,220, 92, 24, 12, 6, 76,156, 56,209,180, 97,195,134, 68,131,193,224,
-182,163,222, 54,109,218, 92,191,117,235, 86,251,194,194,194,108,133, 66, 81, 82,187, 71,148, 74,101, 11, 0,155,221,193,140,142,
-142,142,191,125,251,118,235,121,243,230, 29,182, 88, 44,162, 83,167, 78,245,177,147,171, 79, 62,249,228,144, 76, 38,235, 10,247,
-141,241, 5,169, 84,122,151,198,170,228,107,142,227, 30,123, 13, 22,165,244, 16,138, 93, 95, 84, 43, 41, 73,174,226,226,226,208,
-165, 75,241,144, 62,122,244, 40,218,181,107,135,163, 71,143,162,125,251,246,255,170,155, 6, 59,193,226, 56, 14, 47,190,248, 34,
-186,117,235,134,154, 53,107, 58,198,185,179,145,187, 59, 36,195,106,181,162,113,227,198, 48,154, 76, 16,139,197,142, 35, 72,142,
-227,224, 31, 16,128,235,215,175,187,164,193, 98, 24,102, 96,223,190,125,153, 11, 23, 46, 96,240,224,193,248,226,139, 47,202,252,
-238,203, 47,191,140,109,219,182,161,111,223,190,204,187,239,190, 91,174,155, 6,187,113,185, 43,101,178,175,211, 21,105,240,170,
- 10,211,153,139, 60, 54, 4,203,201,185, 23,106,251, 43,134,119,171,199,225,251,131,127, 96,206,247,183, 55,242,148,126,243,205,
-217,236, 31, 39,183, 3,204, 59, 94, 66,147, 1,155,139,143, 5, 1, 8,233,113, 48,239,120, 25, 68,225,135, 35, 73, 34,228, 26,
-204,187, 75,239,112,230, 47,190,219,178,242,237,214,171,218,251, 7, 7,120, 65,151,107,112,144,172,179,135,118, 2, 0,250,143,
-154, 15,142, 45, 62, 58,212,168,100,144,139, 89,124,189,233,163, 76,179,185,168,212, 94, 37,136,152,209,175,182,173,231,229,229,
- 69,129,134,226,187, 27,169,246,206,123,137, 86, 51,111,248,197,101,227,165,186, 42,205,242, 11, 57,163, 1,124,114,143, 6, 35,
- 39,199,144,127,230,140,188,195,150, 45,184,212,175, 31,106,228,231, 35,206,219, 27,254, 86, 43, 84,118,109,213,134, 13,200,255,
-226, 11,200,172, 86,192,203, 11, 89, 43, 87,194,122,254, 60,172,121,121, 6,119, 9,214,181,107,215,238, 91,203, 84, 26, 33,154,
- 50,101,202,150,172,172,172, 33, 85,137,249,202, 43,175, 28, 58,112,224, 64, 96,101,113,242,243,243,199, 3, 24, 95, 5,249, 17,
- 8, 33,211,108, 14,237, 70,199,198,198,106, 79,159, 62, 61,130, 16,178,138, 82,154, 98,171,219,128,145, 35, 71,190, 86,130, 92,
- 85,120,139,144, 82,122, 91,165, 82,205, 29, 63,126,252,252,165, 75,151,170,236, 6,237,231,206,157,131,213,106,133, 72, 36, 2,
-207,243, 24, 57,114,164, 62, 43, 43,107, 73, 89, 30,152, 75,193,181, 18, 66, 94,158, 63,127,254,200,143, 62,250,168, 55,203,178,
-254, 60,207,103, 24, 12,134,159, 12, 6,195,218,202,220,162,178,213,195,208,233,211,167, 15, 93,182,108, 89, 95,134, 97, 2,172,
- 86,107,102,126,126,254, 46,131,193, 80, 41,223, 90,199,143, 31,207, 88,181,106,213,141,140,140,140, 6,161,161,161,185, 42,149,
-202,100, 50,153, 88,185, 92,174, 81, 42,149,209, 0, 78, 0,184,232, 14,230,153, 51,103, 82, 63,253,244,211, 4,163,209, 24,245,
-233,167,159, 30,209,104, 52, 7, 8, 33, 68, 44, 22,123,203,229,242, 46, 0, 14, 3,184,230,150,234,157, 97, 4,103,109, 85, 73,
-251, 43,137, 68,242, 95,177,193,170,118, 98,115,211,112,150, 82,138,204,204, 76, 92,184,112,193, 78,174,162, 1,160,125,251,246,
-103,237, 36,235,204,153, 51,136,137,137, 57, 75, 8,121,232,110, 26,156, 53, 88,118, 34, 85,179,102, 77,199,123,231,228,100,131,
-229,146,240, 60, 15,177, 88, 12,142,227, 16, 28, 18,226,248, 45, 74, 41,174, 95,191, 14,157, 78,231, 18,193, 98, 89,150, 37,132,
- 96,240,224,193, 46,253,238,255,253,223,255,225,240,225,195, 96, 93,100,131, 44,203, 34, 34, 34,194,165,147, 22,184,104, 47,197,
-178, 44, 66, 67, 67, 43,141,233,204, 69, 30, 27,130,229, 44,241,233,134,121, 47,127,120,236,221,139,169, 69,223, 92, 74, 43,124,
- 27, 0,221, 17,167,248,165,137, 63,251,204, 51,245, 19, 97, 92,219, 30, 68, 83,236,116,141,234, 83, 64,148,129, 72, 20,106, 96,
-214, 15,151, 83,173, 32,139,203, 88, 12,146,197, 50,197,180, 77,235, 62, 89, 58,114,204, 4, 85, 92,124, 26,114,245, 70,176, 44,
-227, 60,105,130,227, 88,104,148, 50,132, 5,121,225,203,207, 62,204,207,207,203,153, 94, 86, 92,194,112,181, 56,182,107,139,186,
- 82, 4, 21, 0, 69, 50,160,232,159,206, 74,255,234, 99, 91,213, 75, 40,169, 26,105,241,236,237, 2,217,119,183, 11, 98, 75, 35,
- 88, 69, 38,211, 51,239, 62,251,236,207,243,126,252, 81,209,224,155,111,144,246,194, 11, 8,201,203,131, 20,184,203, 38,139,177,
- 88, 0, 47, 47,100,126,241, 5, 10,121, 30, 75,135, 15, 47, 44, 50,155,187,187,169,129, 16,119,234,212,169,202,200,149, 51, 33,
-130,155,118, 92,174,146,172,110,221,186, 29,162,148, 74,171,193,206,221, 78,178,204,167, 79,159,126,237,200,145, 35,241,184, 59,
-224,103,206,145, 35, 71,226, 95,125,245, 85,178,126,253,250, 13, 0,102,184,234,120, 83,175,215,127,162,213,106,209,177, 99,199,
- 25, 11, 23, 46,244,109,222,188, 57, 2, 2, 2,144,159,159,143, 51,103,206, 96,220,184,113,186,188,188,188,133,217,217,217, 75,
-221,204, 51,111,211,212,172,173,202,122, 0,240,185, 45, 85,137,188,254,250,235,231,226,227,227,179,252,253,253, 91,137,197,226,
- 39, 81,108,231,147, 10, 96,131,187, 68,200, 46,163, 71,143,254, 43, 62, 62, 62,179, 70,141, 26,173,109,152, 90, 0, 73, 0,214,
- 85, 2, 51,249,143, 63,254, 8,109,209,162, 5, 35, 18,137, 40,203,178, 16,137, 68,148,227, 56,106,179,155,161, 0,176,107,215,
- 46, 41, 0, 29, 60,242,176,199,166,195, 77, 67, 74, 74,138,131, 92, 57, 57, 26,141,110,223,190,253, 89, 27,185,178, 63,179,254,
- 75,121,197,156, 57,115,176,102,205, 26, 84,228,129,220,118, 91,143, 84,132,103,215, 96,241, 60, 15,179,217,140,184,184, 56, 16,
- 66,192,243,188,227, 88,208,238,162,193,106,181,150,123,251,156,231,121,222,100, 50,225,171,175,190,114,137,100,109,221,186, 21,
- 69, 69, 69,224, 43, 96,110,206, 46, 21,154, 54,109, 10,157, 78,231,184,196, 19, 29, 29,237,248,158,217,108,118,139,176,218, 49,
-163,162,162,144,153,153, 9, 63,191,226,123, 54, 97,175,196,254,163,108, 41,248,239,248,253, 37,174,186, 22,104,170,213,122, 25,
- 37,150,111,159,111, 36,237, 60, 48,218, 11,181,131,212, 16,137,101, 72,206,179, 98,255,197, 60,172, 59,148,122,199, 96,225,123,
- 95, 73, 47, 56, 95, 30,142, 76,233,245, 83,243,182,221,218,189,242,218, 56,165,222,200, 35, 33,225, 22, 50,210, 83,192, 16, 6,
-193, 53, 66, 17, 30, 30, 1,185,132,193, 23,107,151, 22,156, 61,126,224, 88,126,158,174, 71, 89, 88,189,181,146,227,203, 94,104,
-215,186, 78, 29, 53,129,213, 2,240, 22,192,106, 1, 4,219, 95,251,103,194,221,125,237,194,133, 28,250,238,159,186,223,127,204,
- 49,149, 26, 83,106, 32, 33,237,188,189,189,127,158,243,253,247, 10,193,100,130,105,196, 8,200,141, 70,200, 9, 1,161, 20, 12,
- 0, 34,147, 33,107,229,202, 98,114, 53,108, 88, 97, 78,110,174,219,161,114,252,253,253, 63,207,204,204,124,228, 60,185,251,250,
-250, 78,173,140,187,135, 7,152,167, 0, 0, 57,118, 39,163, 37,118,210,254,118,173, 86, 37,112, 35,252,253,253,223,101, 24,166,
- 13,165,212,151, 97,152,108, 65, 16, 78,164,167,167, 47,162,148, 94,247, 44,165,255, 90,123,219, 61,185, 87,116, 94,157, 14,224,
- 45, 0,249,148,210, 4, 79,205, 61,244,118,106, 6,224, 44, 74,185, 45, 88,222,179,135, 37,190,190,190, 39,127,254,249,231,230,
-181,107,215,102,156,205, 21,236,190,238,236,199, 88, 28, 87,172,135,248,237,183,223,172,131, 7, 15, 62,145,154,154,218,177, 44,
- 76,141, 70,243,203,223,127,255,253,116,110,110,238, 61, 68,202,217,179,187,253,125, 65, 65, 1,198,140, 25,179, 47, 47, 47,175,
-212, 80, 57, 90,173,118,217,210,165, 75,223,236,223,191, 63, 99,119, 43,225,156,236, 97,125,236,201,108, 54, 99,243,230,205,194,
- 71, 31,125,244,113, 78, 78, 78,153, 71,132, 33, 33, 33,119,146,147,147, 67,237, 46, 19,202, 74,206, 18, 17, 17,145,146,144,144,
- 16,242, 48, 49,255, 51, 4,203, 54, 40, 72, 84,128,114, 16, 5, 6, 50, 16, 26, 51,132, 72,172, 20, 87, 64,241,139,130, 43, 92,
-117, 38,153,186,116, 68, 38, 86, 40,198,170, 85,222, 51,251, 15,121,195, 55,162, 78, 36, 9, 12,174, 1, 2, 6,105,169, 73,184,
-117,227, 42,253,118,203,202,172,130, 60,221,236,194, 66,253,202,242,112, 26, 16, 82,183,142, 70,188, 93,194,163, 62,236,229, 40,
- 17, 63,234,158, 29, 6, 0,179,136,185,124, 35,223, 50,248, 82, 57,139,164,157,100,205,216,185, 83,193, 53,108,120,143,131, 55,
- 65, 16, 96, 61,127, 30, 75,135, 15,175, 20,185,242,136, 71, 60,114,223, 11,120,109, 84,236,227,202, 2, 32,241,223, 12, 42,252,
- 31,111,163,106, 27,236,153, 16,162,244,241,241, 57,192,178,108,184, 93, 3,227,108, 19, 84, 74,160,231,132,180,180,180,174,148,
-210,194,114, 48,235,168,213,234,149, 60,207,183,116, 37,216, 51,203,178,167,242,243,243,199,150, 23,236,249, 65,220, 34,244,243,
-243,187,126,235,214,173, 58,246, 91,209,206,107,101,201,122, 0,128,107,215,174,161, 83,167, 78,183, 82, 82, 82, 34, 30, 38,230,
-127,138, 96, 85,113,231, 14, 17, 75, 85, 67, 37,114,217, 83,130,197, 26, 5, 2,112, 34,209,101, 83,145,225,160,209,160,223, 84,
-214,177, 96, 73,194,119, 63,121,160, 21, 20,126, 32, 33,237,164, 98,241, 47, 98, 47, 47,121,105, 95,181,230,229, 25,138,204,230,
-103, 60,228,202, 35, 30,241,136, 71, 60,242, 8, 17,223,250, 62, 62, 62, 63,139, 68, 34,169, 51,137, 44,249,218,177,214, 89,173,
- 69, 25, 25, 25, 61,202, 59,109,121, 16,152,143,188,216,153,166,171,201,206, 75, 92,252,110, 55, 87, 49,109,169, 83,117,199,124,
-128,101,167, 85,136,217,201,134, 57,235, 17,201,103,167,234,138,233,196,195, 93,194,117, 7,211,213, 62,229,102, 62,105, 85,231,
-243, 65, 97, 86,213, 56, 42, 37,159,244, 1,180,251,172, 71, 36,159,157,170, 27,102,201,254,227, 10,174,187,152,174,244,169, 74,
-228,147, 86,117, 62, 31, 20,230,253,142,163,114,242, 73,239,183, 47,149,209,246,179,220,229, 30,143, 98,226,220,100,189,244, 1,
-145, 60,226,132, 79,170, 43,166,115, 61, 84,165, 75,255, 7, 16, 30,224, 80, 85, 99,150,168,207,170,146, 89,182, 27, 35,135,225,
-130,163, 80,119,202, 94, 21,237, 94,162,172, 85,130,235,140, 89, 85,117,233,140, 83, 85,253,254, 65, 99, 86,213, 88, 42,137, 89,
- 21,253,190,180,118,127,128,109, 84, 85,249,172,146,177,244, 32,250,124, 41,253,231,190,113, 75, 98, 86,197, 88, 42,137, 89, 21,
-253,254, 97, 96, 86,197, 88, 42, 13,179, 42,250,125, 89,109,255, 95,209, 20, 50,149,169,172, 7,164,178,172,242, 0,143, 15, 34,
- 34,247,131, 32,153,132, 16,106,243, 96, 91,237, 49,171,184,141,102,217, 48,103, 85, 33,102,231,170,106,163, 7,209,223,157, 49,
-171, 10,191, 36, 78, 85,180, 83,105,152,247,155,223, 50,242, 89,229,101,191,223,126,255,176, 48,171,184,141,170,100, 44,149,192,
-236, 92,197,155,128,206, 78,239,103, 85, 37,102, 85,141,165, 82,242,121,223,237, 84, 26,230,253,230,183,140,124, 86,121,217,171,
- 98, 13,121, 80,184,143,130,112,213, 33, 19, 15,130, 8,217, 7, 93, 85, 98, 63, 8, 45,206,131,210,180, 85,149, 22,167, 20,220,
-195, 85, 8,119,168,170,243,105,203, 31,121,156,156,213,121,198,146,103, 44, 61,202, 99,169,180,126, 67, 41,157, 69, 8,153, 89,
-157,250,121, 73,204,170, 34, 66,165,148,253,190,198, 82,201,255,173,138,177, 84, 1, 38,121, 16,229,175,234,241, 84, 29,133,169,
- 46, 25,177,177, 90,250, 0,240, 58, 87,231, 6,120, 64,249,236,252, 40,148,253, 65,228,147, 16, 50,235, 1,149,253, 81,169, 83,
-207, 88,242,140,165,106, 55,150, 74,244,201,206, 85,165, 25,170,234,141, 84, 73,204,170,248, 13,103,140,170,234,163, 15,186,236,
- 85, 57,150, 30, 68,219, 63, 42,242,255, 3, 0, 76, 61, 50,167, 83, 88, 95, 69, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
+137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0,
+ 13, 73, 72, 68, 82, 0, 0, 2, 90, 0, 0, 2,128, 8, 6, 0, 0, 0, 68,254,214,163, 0, 0, 0, 9,112, 72, 89,115, 0, 0,
+ 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67,
+ 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21,
+ 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,
+128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215,
+ 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129,
+ 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,
+155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70,
+ 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0,
+ 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,
+216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200,
+ 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,
+113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,
+160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,
+112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178,
+ 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,
+254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,
+207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,
+243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99,
+ 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160,
+ 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,
+192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,
+176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129,
+ 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20,
+ 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188,
+ 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26,
+ 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147,
+ 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97,
+ 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,
+249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,
+177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,
+133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,
+229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,
+205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,
+232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,
+199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,
+170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235,
+ 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,
+188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,
+170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222,
+ 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,
+166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,
+245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,
+253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67,
+ 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,
+163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155,
+ 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,
+133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,
+241,182,201,182,169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,
+125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233,
+ 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,
+203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,
+238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79,
+ 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60,
+ 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128,
+ 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,
+143,130,173,130,229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,
+139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,
+155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108,
+ 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,
+133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,
+194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,
+132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,
+182,103,234,103,230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,
+166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,
+159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134,
+ 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235,
+ 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,
+127,216, 40,220,120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,
+170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,
+184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,
+236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,
+109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199,
+ 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,
+172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,
+252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220,
+ 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,
+219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,
+181,123,102,247,233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,
+221,126,114, 39,253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,
+220,127,106,192,119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56,
+ 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,
+152,209,161,151,242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,
+193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,
+243,252, 99, 51, 45,219, 0, 0, 0, 32, 99, 72, 82, 77, 0, 0,122, 37, 0, 0,128,131, 0, 0,249,255, 0, 0,128,233, 0, 0,
+117, 48, 0, 0,234, 96, 0, 0, 58,152, 0, 0, 23,111,146, 95,197, 70, 0, 3, 37,246, 73, 68, 65, 84,120,218,236, 93,117,184,
+ 84, 69, 31,126,231,236,217,222,219, 93,112,131,238, 70,186, 67,105,165,249, 16, 68, 12, 66, 76, 16, 12,148,144, 80, 36, 21,196,
+ 6, 20, 73, 5, 65, 41,165,187, 59, 37, 47,151,219,189, 29,103,190, 63,238,158,117,239,178,123,119, 47, 92, 16,113,222,231, 57,
+207,238,169,247,204,156, 51,241,206,111,126, 51, 67, 40,165, 96, 96, 96, 96, 96, 96, 96, 96, 96, 40,123,112,236, 21, 48, 48, 48,
+ 48, 48, 48, 48, 48, 60, 34, 66,107,227,198,141, 62,155,192, 8, 33, 29,124,229,180,111,173, 31,117,206, 7, 24,119, 90,134,156,
+173,237,156, 31,254, 75,194,217,250, 81,229, 20,227,235, 43,111,105, 56,125, 77, 83,165, 12, 39, 45,235,112, 62, 40,206,178,202,
+ 71,110,194, 73, 31,192,119,255,240, 95, 18,206,214,143, 26,167,107,250,241,133,183,180,156,190,164,169,123, 8, 39, 45,235,112,
+ 62, 40,206,251,205, 71, 37,132,147,222,111, 90,242,240,237, 63,196,127, 8,252,131, 18, 89,165, 65,215,174, 93,137, 19, 63,121,
+ 84, 57,157,223,131,200, 95,150, 97, 45, 67,236, 40,107, 78,151,247, 89, 86,248,176,107,215,174,100,227,198,141, 59, 1,180, 46,
+203,184,151,197,119,119,137,107,153,240,150, 86,100,149,150,179,172,210,253,131,230, 44,171,188,228,202, 89, 22,233,222,221,119,
+127,128,223,168,172,194, 89, 38,121,233, 65,164,121, 55,233,231,190,121, 93, 57,203, 34, 47,185,114,150, 69,186,127, 24,156,101,
+145,151,220,113,150, 69,186,247,244,237,153, 69,235,225, 10, 2,215, 12,222,230, 81, 22, 68, 15, 74,108,250,106,129,121, 20, 56,
+203,248, 27,125,104,231, 44,203,214, 77,155,178,250, 70, 15, 34,189, 59,115,150, 21,191, 43, 79, 89,124, 39,119,156,247, 27, 94,
+ 15,225, 44,243,184,223,111,186,127, 88,156,101,252,141,202, 36, 47,185,112,182, 41,227,198, 64, 27,167,253, 15,203,146,179,172,
+242,146,155,112,222,247,119,114,199,121,191,225,245, 16,206, 50,143,123, 89,212, 33, 15,138,247,177,181,104, 61, 72,145,245,160,
+ 42,181,178,228,126, 16, 86,157, 7,101,121, 43, 43,171,142, 27,222,157,101, 72,183,163,172,195,105, 15, 31,121, 80,214,215, 71,
+ 29, 44, 47,177,188,244,168,229, 37,119,233,166,107,215,174, 31,110,220,184,241,131, 71,173, 17,237,204, 89, 86,130,200, 77,220,
+239, 43, 47,185,222, 91, 22,121,201, 11, 39,121, 16,241, 47,235,252,196,132, 86, 41, 44, 69,101,220, 50, 65, 25, 91, 96, 30, 88,
+188,203, 56,156,109, 30,132,133,240, 1,160,204,195,105,111, 41,127,240, 0,226,254,111,121,167, 44, 47,177,188,244,200,229, 37,
+151, 52,217,166, 12, 45, 69,101,106,121,118,229, 44,139,103, 56,115,148, 85, 26,125,208,113, 47,203,188,244, 32,190,253,191, 14,
+148,210, 7,182, 1,232,192, 56, 25, 39,227,100,156,140,147,113, 50, 78,198,249, 95,221,216,244, 14, 12, 12, 12, 12, 12, 12, 12,
+ 12, 15, 8,132, 77, 88,202,192,192,192,192,192,192,192,240, 96,224,209, 71, 43, 54, 54,118,131, 90,173,174,232,233,188, 86,171,
+189,147,146,146,210,150,189, 66, 6, 6, 6,175, 45, 58, 66, 56,252, 61,202, 89, 0, 64, 41,107,229, 49, 48, 48,252,151,133,150,
+ 66,161, 72, 58,127,254,124,101, 65, 16, 96,179,217, 96,181, 90, 29,191, 38,147, 9,173, 90,181, 42,181, 35,125, 84, 84,212, 46,
+137, 68,146, 80,154,123,108, 54,219,205,212,212,212, 22, 37, 20,224,251, 0, 36, 17, 66,156,143,149,248, 11, 32,197,108, 54,215,
+ 47,137,147, 16,146,228,202,231,129, 75,252, 95, 34,103, 80, 80,208, 17,158,231,227,220,113,121,250, 47, 8,194,213,244,244,244,
+102, 44,153, 62, 28, 68, 69, 69,237,226,121,190,212,233,243,206,157, 59, 30,211,103, 76, 76,204,113,142,227, 98, 74, 65, 41, 17,
+ 4,225,226,157, 59,119, 90,120, 18, 34, 98,154,247, 34,108,138,253, 39,132, 36, 91,173,214,134,222,242, 81, 73, 92,110,210,104,
+137,156,206, 34,139,231,249, 25, 17, 17, 17, 35,116, 58,157, 1, 0,149, 72, 36, 52, 52, 52, 84, 12, 27, 0,192,106,181,102,228,
+228,228,212, 98, 41,145,129,129,225, 63, 33,180, 4, 65,224,140, 70, 35, 46, 93,186, 4, 15,229,189,237, 30,158, 87,249,232, 31,
+ 91, 35,252, 35, 34, 97, 53,155,161, 9, 11,119,112,167,157, 59, 3,171,197, 12,171,201,132,242,141,154,136,149, 24,106,212,168,
+ 33,241,194, 25, 55,115,230,204, 8,127,127,127, 24, 12, 6, 24, 12, 6, 24,141, 70, 24, 12, 6,152, 76, 38,152, 76, 38,152,205,
+102,152,205,102, 88,173, 86, 24,141, 70,108,219,182,205, 91,216,227, 62,250,232,163,136,128,128, 0, 7,159,184,137,156, 34,175,
+197, 98,129,193, 96,192,159,127,254, 89, 34, 39,207,243,113, 41, 41, 41, 17, 50,153, 12,148, 82, 8,130,224,206,185,176, 24, 42,
+ 84,168, 96,102, 73,244,161,162,242, 71,203, 55, 70, 4,170, 20,176, 10, 2,186,213,169,224, 56,113,245,235, 85,160, 86, 27, 4,
+171, 21,149, 70, 15, 6,138, 76, 50,168, 94,189,122,137,233,147, 82, 26,255,209,242,141, 65,190,114,102,102,102,234,171, 85,171,
+150,130,162,161,207,158, 44, 62,113,122,189, 62, 66, 12,131,171, 32,226, 56,174,216,182,121,243,102,116,235,214,205, 91,220,227,
+ 94,127,253,245, 8,139,197, 2,147,201, 4,163,209, 8,139,197, 2,171,213,234,216,108, 54,155, 99, 51,153, 76, 56,120,240,160,
+175,150,172,153, 29, 59,118, 28,182,113,227, 70,205, 47,191,252,162, 73, 72, 72,128, 76, 38,131, 68, 34,129, 68, 34, 1,199,113,
+224,121, 30, 79, 60,241, 4, 97, 73,144,129,129,225, 63, 35,180,140, 70,227,181,122,245,234, 81,251,255, 88,133, 66, 33,115, 41,
+ 64, 99, 42, 87,174,124,209,245, 62,111, 93,138,254, 17,145,152, 80, 46, 4, 0, 48,241, 70,150,163,130,248,184, 89, 93,199, 53,
+147,111,231, 1, 0, 84, 42, 21,136,115, 51,218, 3, 52, 26, 13, 58,118,236, 8,185, 92,142,134, 13, 27, 66, 42,149,186,221,100,
+ 50, 25,164, 82,169, 47,149, 3,252,252,252, 48,105,210, 36, 81, 36, 65,163, 84,224,149,102, 13,161, 4,197,151,103, 46,195, 36,
+ 80,240, 60,239,216,124,225,148,201,100, 56,125,250, 52,120,158,135, 68, 34,113,252,138,255,215,175, 95,143, 62,125,250,128,231,
+121,168, 84, 42,224, 63, 52,207,200,163,130, 64,149, 2, 67, 22,253, 12, 0,184, 53,103,180,227,219, 29, 28, 57,209,113, 77,252,
+139,253, 64, 8,129, 84, 42, 5,199,113,101,198,153,157,157,173, 31, 48, 96,192, 30,127,127,255,205,249,249,249,240, 34,224,112,
+235,214, 45,240, 60,239, 49,189,115, 28,135,217,179,103,227,202,149, 43, 62,197,221, 96, 48,224,171,175,190,130,205,102, 43,198,
+ 43,254,119, 61,230,163,200,154,218,169, 83,167,193, 27, 55,110, 12, 38,132,224,179,207, 62,131, 76, 38, 67,151, 46, 93, 16, 26,
+ 26,138, 45, 91,182, 64, 38,147, 97,220,184,113, 44,241, 49, 48, 48,148, 4, 41,128,186, 0,194,237,134,158, 2, 0, 65, 78,231,
+ 51,236,191,225, 78,251,135,221,240, 52,178, 95, 35,158, 23,247, 77, 0,228,110,142,103, 1, 80,217, 55, 35,128,125, 0,106, 58,
+ 61, 71,188, 15,158,158,203, 3, 69,235, 15, 1,216, 1,160,141, 56,137,222,157, 59,119,158,114,178,172,156,191,120,241, 98, 85,
+ 81,243,216,187, 16,101, 86,171,181,178,216,157, 40, 90,139, 58,116,232, 80, 98, 11,223,106, 54,223, 37, 64,220,105, 41,119,221,
+ 21,158, 4,140,217,108, 70,191,126,253,138,190,132,135, 74,199,121,243, 65,187,193,100, 50,129,231,121, 84, 41, 23,142,247, 59,
+215, 67, 99,106,129,182,144,192,154,167, 69, 79, 63, 11,206, 87,175,143,197, 55, 51,112, 35,191, 16, 60,207,251,196, 41, 8,130,
+ 71,145, 37,145, 72,176,104,209, 34, 12, 24, 48, 0, 18,137,196, 39, 62,134,178,135, 85, 16,220,166, 67, 79,105,214,151,239,228,
+ 11,103,118,118,182,190, 91,183,110, 7, 20, 10,197,146,200,200,200,148,228,228,100,175, 66,203, 85,252,184, 54, 42, 62,253,244,
+ 83,204,159, 63, 31,109,219,182,245, 41,156, 70,163, 17,132, 16, 44, 94,188,248,174,115, 83,166, 76,185,235,121, 37,113,218, 27,
+ 72, 92, 76, 76,204,200, 77,155, 54, 5,136,215,134,133,133, 65, 42,149,162, 86,173, 90,240,247,247,199,158, 61,123, 96,179,217,
+124,206,151, 12, 12, 12,143, 47,220,105, 17, 39,180,154, 48, 97, 66,195, 25, 51,102, 76,107,218,180,233, 79,251,246,237, 91, 78,
+ 8,217,224, 84, 38,118,179,151, 61, 27,156,246, 27,185,136, 30, 41,128,112, 66,200, 6,241,122,231,125,167,227, 29, 0,200,197,
+253, 9, 19, 38,212,156, 49, 99,198,180,241,227,199,191, 51,125,250,116,217,132, 9, 19,106,207,152, 49, 99,154,248, 28,119,225,
+112,103,209, 42,113, 86, 97,177, 27,241,194,133, 11,240,230,191, 74, 41, 45,177,180,212,132,133, 59, 44, 89,147,227, 67, 29,199,
+ 39, 37,231, 58, 42,176, 5, 13, 42, 66,163,209,160,243,228, 79,124,178, 20,153, 76, 38,164,167,167, 59,172, 12,222, 54, 95, 57,
+213, 42, 37,182,189, 94, 11,183,178,228,248,112,127, 54, 54,158,184, 2,169, 84,138, 39,171,215,194, 83, 50,127,188, 23, 47,199,
+235,151,175,195,226,163, 79, 47,165,212,173,192, 18,255,139, 93, 40, 76,104,253,115,232, 86,167,130,195,234,116,208,191,189,227,
+120, 31,237,105,199, 55,121,115,209,199, 0,128,182,245,159,128, 47,254,220,222, 56,179,178,178,244, 45,218,183,217,105,211,155,
+190, 31, 60,120,240,181,237,219,183,171,124,106,222,185, 17, 90,162,213, 86, 20, 89, 60,207,195,100, 50,249, 20,119,147,201,228,
+ 49,127,200,100,178, 82, 91,180, 0, 64,171,213,154,214,173, 91,135, 5, 11, 22, 32, 52, 52, 20,157, 58,117, 66,116,116, 52, 86,
+173, 90, 5, 74, 41, 70,143, 30, 13,149, 74, 37, 90,175, 89, 2,100, 96,248,111,163, 36, 45,162,152, 49, 99,198, 52, 87, 33,227,
+188,239, 44,160, 92,196,148,179, 88,171,233,165,254,223,224, 42,158,196,231, 18, 66, 54, 76,159, 62,189,155,151,112,100,120, 18,
+ 90, 37, 78,223,111, 52, 26,175,213,169, 83,199, 39, 53,161,211,233, 82,189,137, 13,119,173,122,103, 43,129,159,159, 31, 52, 1,
+126,224,124, 44,119, 45, 22,139, 67,168,108,221,186, 21, 42,149, 10, 93,186,116,185, 47,139,150,217,108,134, 92, 38, 5, 23, 22,
+137, 33,115,182, 35,171, 64,239,168, 96,118, 92,189,134, 99,105,233,120,189,105,123,104, 84,233, 40, 52,153,124,178,188, 9,130,
+112,151,200,226,121, 30,253,250,245,115, 88, 19,156,253, 86,192,186, 14,255, 49,184, 75,159,174,199, 5, 23, 75,213,189,112,102,
+101,101,233,187,117,235,118,192,166, 55,125,127,251,246,237, 3, 0,148,141, 27, 55, 46,181,208, 18, 5,150, 84, 42,197,236,217,
+179, 49,127,254,124,199,121, 95,133,150,213,106, 45, 38,160, 46, 95,190, 92,236, 89,174,194,174,164,110, 83, 74, 41, 37,132, 8,
+ 0,132,164,164, 36,199, 61, 81, 81, 81, 8, 10, 10,130, 32, 8, 16, 4, 1, 74,165, 18, 42,149, 10, 50,153,140, 37, 58, 6, 6,
+134,146,180,136,126,252,248,241,239, 16, 66, 54,216, 45, 75,103, 74, 16, 84,238,208,200, 69,172,101,120, 40,187,186,185, 19, 91,
+206,255, 69, 76,152, 48,161,166,155,112, 28,246, 40,180, 92,166,221, 47, 6,231,110,196,178,170,196, 74,170,200,252,130, 2,160,
+210,104, 32,145,112, 32,132, 80,111, 92,102,179,217, 81,240,143, 24, 49,162, 68,191, 21, 95,253,169,204,102, 51, 56, 94,130, 59,
+ 81,137,176,113,187, 29,247,138, 27,199, 75,113, 35,170, 42, 36, 23,142, 67,234, 99,133,235,106,209, 26, 61,122, 52,190,250,234,
+ 43,112, 28,231,120, 39, 60,207,163, 82,165, 74,184,118,237, 26,203,113,143,136,200,242,116,220,102, 19,124,182,194,184,187, 46,
+ 43, 43, 75,223,183,111,223,157,121,121,121,223,215,168, 81,227, 50,138,166, 63,224,124,229,227,121,190,152,192, 18, 69,214,188,
+121,243,138,137, 34,139,197,226, 83, 67,192, 98,177,220, 37,120,102,205,154, 85,236, 23, 0,154, 53,107,230,147,101, 24, 0,229,
+ 56,142,202,100, 50,116,236,216, 17,181,107,215,198, 47,191,252, 2, 65, 16, 48,106,212, 40,168, 84, 42,204,157, 59, 23, 86,171,
+ 21, 51,103,206,100, 22, 45, 6, 6,134,146,180,136,113,250,244,233,103,166, 79,159,238,176, 44,185, 90,180, 60, 81,218, 69, 85,
+184, 40,210, 80,228,107,117,184,132,186,186,155, 39, 1,230,124,108,198,140, 25,211,220,132,195,181,187,242,225,175,117,152,122,
+246, 52, 62,105, 94, 15, 64,241,238,194, 69, 79, 84,133,198, 79, 3,141,191, 31,250,174,223, 13, 0,246, 66,127,188, 79, 22, 45,
+ 81,104,101,101,101,149, 40,178, 74, 99,209,226,228, 60, 86,199,229,128,202,165,224, 77,150, 98, 66, 75,194, 75,113, 43, 52, 17,
+156, 84, 6,222,102,245,137,147, 82,122, 87, 87,225,208,161, 67, 65, 8,113,140, 16,171, 83,167,142, 51, 23,171,121, 30,118,250,
+ 60,242, 53,206,175, 25, 9, 0,104,161,213, 58,190,197, 71,117,254, 30,223, 49,231,244, 78,135,245,113, 50,222,186, 39,206,172,
+172, 44,125,227,106, 53, 15,200, 66, 2,191,191,121,243,230, 1, 0, 92,255,254,253,131,234,212,169,227, 83,158, 20, 7, 87,184,
+138, 44,103, 75,150,248,107,177, 88,124,138,187,232, 43,229, 13, 98, 55,162,183, 52, 79, 41,165, 33, 33, 33,224, 56, 14, 1, 1,
+ 1,240,243,243,115,140,184, 85, 42,149, 80,171,213, 14,255, 78, 31,133, 27, 3, 3,195,127, 23,193,162,208,177,139,165, 98,150,
+ 38, 74,105, 55,103, 49,228,169, 11,209,110,129,218,229,205,176,102, 23,104,110, 33, 90,214, 92,202,228, 13,158, 68, 26, 47, 42,
+ 72,231,223,232,232,232,223,253,252,252, 18,125,141,125,105, 38, 47,181, 89,204,119, 89,182, 8, 33,240,243,247,131,202, 79, 3,
+149,191,159, 71,171, 87, 73, 66, 75,180, 20,137,149,206,146, 37, 75,224,231,231,135,231,158,123,174,212, 62, 90, 14,161, 37,227,
+176, 69,241, 39, 36,114,190,152,200,226,121, 30, 18,169, 20,169,126,209,224,164, 82,240, 86,223,172,100,121,121,121,224,121, 30,
+239,191,255,190,163, 5,239, 44,178, 74, 19,103,134, 7, 3,106,179,220,101,133,242,100,125,189, 87, 78,209,146, 37, 11, 9,252,
+190,106,213,170, 14, 75,150, 90,173, 22, 71,155,122, 5,199,113,110, 69,150,235, 8, 65,158,231,139,210,178,151,209,145,206, 22,
+173,233,211,167, 59,120,157, 45, 89, 34, 74,147,143,196,176,238,220,185, 19,199,142, 29,195,136, 17, 35,160, 82,169, 48,127,254,
+124, 88,173, 86, 76,153, 50, 5, 42,149, 10,114,185,156, 37, 62, 6, 6,102,205, 42,166, 69, 92,144,225,226, 7, 69, 92, 68, 77,
+134, 59,129,229,220, 77,232,244,223,226,134,215,228,210,165,232,122, 92,252,205,154, 62,125,250,118,209,146,229,116,188, 88, 56,
+188, 90,180, 20, 10, 69,226,165, 75,151, 28,147,149,150,244,107, 50,153,208,182,109, 91,159, 45, 99,226,168, 67,158,151, 20, 19,
+ 22,106,127, 63,168, 3,252,161,242,243,115, 21, 28,196, 91, 33, 46,182,136,157,133,214, 7, 31,124, 0,158,231,241,213, 87, 95,
+ 1, 0,222,122,235, 45,159,125,180, 68, 78,216, 8,146,233, 95,168, 55,167, 15, 76, 63, 88,144,182,247, 36,120,158, 71, 68,147,
+167, 32, 52,238, 3,157,202, 15,188,205,234,243,168,195,236,236,108, 92,187,118, 13, 18,137, 4,111,188,241, 70,177,185,142, 92,
+ 71,178,109,221,186,149, 89,180,254, 9,161, 37, 88,125, 18, 85,165,177, 58, 58,115,138, 62, 89,121,121,121,223,223,188,121,243,
+ 32, 0,110,240,224,193, 65,106,181, 26,223,124,243,141, 14,128,124,213,170, 85, 42,111,162, 72, 76, 55,222, 68,150, 84, 42, 45,
+ 74,203,190,196,157, 22,159,178,196,155, 99,188, 47,105, 94, 12, 43, 33, 4, 54,155, 13, 42,149,170,152, 37, 75,169, 84, 66,161,
+ 80,176,132,199,192,192,224, 13,135, 75,113,109, 35, 39,209,116,248, 30,121, 15,151, 85,192,121, 79, 66,195,104, 52,226,220,185,
+115,190,242,248, 60,121,105,185,134, 79, 96,242,237, 60, 16, 66,240,101,179, 26,208, 4,248, 65,173,209,160,247, 47, 59, 29, 5,
+247,233,105,111, 65,161,241, 67, 76,203, 78, 62, 21,228, 98,215,161,179,208,202,205,205,133, 84, 42,197,212,169, 83,193,113, 28,
+102,206,156,137,216,216, 88,220,185,115, 7,171, 86,173,242,201,162, 37,177, 73, 16,253,108, 53,168,135, 6, 34,224,217, 86, 8,
+238,248, 1,110,155,120,236, 51,168,209,202,112, 22,242, 45,243, 96, 18,108, 62,143,192,178, 90,173,216,185,115,167,171,195, 59,
+ 40,165,142, 89,247, 45, 22, 11,204,102, 51,102,206,156, 9,182, 66,201,195, 71,116,147,209, 8,111,248, 50, 0, 96,253,244,231,
+ 29,199,223, 63,253,119,250,156,253, 67,209, 2, 0, 85, 19, 58,149,138, 51, 43, 43, 75,255,100,219,102,187, 12,130,244,187, 90,
+181,106, 21,179,100, 41,149, 74, 98,223,247, 73, 92,115, 28, 7,137, 68,114, 87,119,161, 39,177,229,139,143,150,213,106,117, 76,
+ 36, 90,146, 63,227,189, 88,180,158,127,254,121, 68, 71, 71, 59, 44, 89,147, 39, 79,134, 74,165,194,132, 9, 19, 96,177, 88, 48,
+111,222, 60,150,248, 24, 24, 24,254, 9, 81,246,192,225,182, 36, 53, 24, 12,215,107,215,174, 13, 15,231, 98,149, 74,165,212,165,
+144,142,169, 92,185,242, 69,215, 46, 68, 66, 72, 7, 74,233, 54,119,133, 58, 33, 4,254, 1,254, 80,250,105,160,118,177, 98, 41,
+253, 3,160,240,243, 3, 39,147,186,171, 16,238,226, 20,125, 75,156,133,150,184,229,229,229, 65, 42,149, 98,193,130, 5, 8, 8,
+ 8,128,209,104,244,202, 41, 86, 58, 18,137, 4,186, 91, 5, 56, 63,109, 27,228,202,125,168,216,105, 0,162,165, 42,200,246,172,
+133,222,102, 41,113,194, 82,119,156,149, 43, 87,198,196,137, 19,239,154,214,193, 19, 98, 99, 99,189,198,253,126,193, 56,221,115,
+150, 52, 42, 86,132, 64,109,238,174,115,203, 41, 90,178, 12,130,244,187,107,215,174,137,150,172, 64,181, 90,141, 47,190,248, 66,
+ 7,128,155, 50,101,138, 58, 62, 62, 94,226, 75, 90,146, 72, 36,152, 51,103,142, 91,159, 44,119,162,171, 52,249,200,249,222,214,
+173, 91,187,157,176,212,157,120,115,199, 41,134, 53, 52, 52,212, 97,201,178,217,108,142,209,134,226,236,243,158, 26, 21, 44,125,
+ 50, 78,198,249,223,225,124, 92,225,182,150, 79, 73, 73,121,210,211, 13, 21, 43, 86,188,116,233,210,165, 74,226, 82, 28,246,130,
+ 83,102, 48, 24, 42, 55,107,214,204,171,105, 71, 16, 4, 40, 20, 10, 80, 74,209,110,226, 12, 16, 14,224, 80,188, 18,139,104,222,
+ 30, 18, 9, 15,161,104,169, 15,175,163, 14,245,122,125,177,202,193,221, 86, 88, 88, 8,163,209,232,243,108,222, 6,131,161,216,
+ 20, 12,132, 10,184,241,199,202,187, 70, 31,138,155,175,126, 59, 74,165,178, 88,215, 79, 73,240, 54, 39, 25, 67,217, 67, 28,176,
+ 0, 0, 85,154,117,129, 32,216, 64,109,182, 98,203, 36, 85, 75,124, 18, 2,181,193,108,209,193,104, 52,122, 51, 59,146,204,204,
+ 76,125,223,190,125,119, 2,248,182,103,207,158, 23, 81, 52,226,133,250,249,249, 41,164, 82,169, 0, 32, 27, 0,205,201,201, 9,
+188,125,251,182, 96, 48, 24,202,123, 11,231,198,141, 27,113,238,220, 57,180,108,217,178,216,114, 80,162, 85,212,121,118,119, 95,
+210,167,216, 93,238,110, 70,120, 79, 66,206, 87, 72, 36, 18, 4, 6, 6, 66, 38,147, 97,234,212,169,144,201,100, 80,171,213, 0,
+128,121,243,230, 57, 38, 95,101, 96, 96, 96,248,207, 8, 45,111,229,102, 9,221,138, 37,118, 33, 90,173,214,228,248,248,248, 82,
+ 61,204,102,179,165,121, 17,110,201,171, 86,173,146, 57, 91, 33,188,253, 82, 74,211,188, 84,182,201,235,215,175,151,185,179,110,
+120, 90, 96,218, 27,167,205,102, 75, 78, 72, 72,240,104, 49,113, 7,139,197,114,155, 37,209,135, 7,155,205, 86, 66,250,124,247,
+ 94,211,231,229, 42, 85,170,220, 14, 10, 10,250, 45, 50, 50, 50,107,239,222,189,161,141, 26, 53, 10,117,190,166, 81,163, 70,209,
+ 46,183,153,224,121,157, 67, 16, 66,146,123,246,236,233, 54,205,139,162,201, 77,250, 76,246,150,230, 15, 29, 58, 36,115,190,223,
+ 19,191, 83, 62, 74,246, 65,184,222,168, 87,175, 30,231,204,227, 41,237, 91, 44,150, 12,150, 10, 25, 24, 24,254,243, 66, 75,175,
+215,223,170, 93,187,182,213,195,185,155, 37,221,155,153,153,217,176,172, 35, 96, 54,155,155,253, 27, 56, 51, 50, 50, 26,178,228,
+246,104,227, 65,124,163,180,180,180,198,101,205,105,181, 90,203, 60,125, 90, 44,150,102, 15,226,157,102,101,101, 53,101, 41,139,
+129,129,129, 9,173, 82,192,215,105, 28, 24, 24, 24, 24, 24, 24, 24, 24,254,235,224,216, 43, 96, 96, 96, 96, 96, 96, 96, 96,120,
+ 48, 32, 40, 90,165,250, 46,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, 39,227,100,156,143, 31,
+167, 55,238,199,110, 52,163, 56,154,234, 65,108, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113,254, 87, 55,214,117,
+200,192,192,192,192,192,192,192,240,128,192,179, 87,240,207,128, 16, 34,161,148,218,202,144, 50, 24,128,167, 5,227, 76, 0,114,
+238, 37,152, 0,100,246, 77,156,232,200, 2,192,108,223,124,152,186,126, 18,151,146, 18, 92,147,218,164,141, 40, 33, 82, 65,192,
+137,242,229,203, 29, 7,158, 52, 1,128, 95, 84,245,234,126, 26, 85, 7,163,217,148,168,144,202,207,229,106, 11,183, 26,210, 46,
+ 94,103, 41,132,129,225, 31, 41,151,186, 3,152,100,207,251,211, 41,165, 43,217, 91, 97, 96,120, 64, 66,203,223,223,255, 8,199,
+113,113,222,230,231,113,202,160,176,217,108,201,217,217,217, 13,125,204,208, 60,128,190,126,126,126,109,165, 82,105,115, 0,176,
+ 88, 44,123, 11, 11, 11,183, 3, 88, 69, 41,181,222, 99, 65, 17, 0,160, 31,128, 65,246, 67, 63, 2, 88, 73, 41,205,191, 71,190,
+218,129,129,129,107,164, 82, 41,205,204,204,108, 2, 0,161,161,161, 7, 44, 22, 11,201,207,207,239, 77, 41, 61, 85, 74, 62, 78,
+ 42,149,206,110,217,178,101, 43, 66,200,183,148,210, 5,101,244, 45, 21, 28,199,185, 21, 40,130, 32, 36,220, 3,159, 12, 64,224,
+130, 5, 11, 66,151, 45, 91, 86, 47, 57, 57,185, 22, 0,196,197,197,157, 30, 60,120,240,241, 87, 94,121, 37, 11, 64,158, 93,112,
+121, 68, 74, 74,112,205,244,212,171, 35,210,210,207,245, 3,128,168,232, 90, 43, 37, 18, 78, 22, 27,123,108,191, 58,108, 80, 88,
+149,170, 21, 94,254,233,155, 5,178,132,196,114,248,115,223,177,186,175,188,250, 78, 77,101,100,149, 79,153,216,122,120, 8, 8,
+ 8, 56,194,113, 92, 92, 73,121,220, 93,158,183,217,108,201, 89, 89, 89, 13, 61,113,242, 60, 31, 87, 82,121,225,238,152, 32, 8,
+ 87, 51, 50, 50,220, 78, 53, 17, 24, 24,184,159,231,249, 68, 95,185,196, 95,171,213,154,236,105,106,153,192,192,192, 35, 18,137,
+ 36,174,164,120,186, 59, 39, 8,194,213,244,244,116, 79,225,188, 43,238,101, 17,206,123,225, 44, 41,156, 98,121, 4, 96, 94,104,
+104,232, 19, 89, 89, 89,255, 3,240, 78,126,126,126, 29,137, 68,130,144,144,144,119, 8, 33, 87, 2, 3, 3,191,206,203,203,219,
+ 7,224, 85, 74,169,192,114, 12, 3, 67, 25, 9, 45,142,227,226,110,223,190, 29,161,209,104, 0,252,189, 30,159,184,152,180, 32,
+ 8,160,148, 58,126,173, 86, 43,170, 85,171,230,171,216,168, 21, 16, 16,176,122,194,132, 9,229,251,246,237, 43, 23,151,154, 73,
+ 73, 73,169,188,102,205,154,255, 77,157, 58,245, 3, 66, 72, 31, 74,233,105, 95,197, 11,128,246, 0,134,214,171, 87,239,153,201,
+147, 39,203,218,181,107, 7,155,205,134,223,126,251,173,229,148, 41, 83, 22, 16, 66,214, 2,248, 30,192, 31,190, 22, 22,132,144,
+ 22, 81, 81, 81,203,247,236,217, 19,125,237,218, 53, 91,223,190,125, 87, 0,192,145, 35, 71,146,108, 54, 27,105,210,164,201, 70,
+ 66,200, 64, 74,233,158, 82,188,243,103,198,140, 25,211,127,244,232,209, 17,207, 61,247,220, 48, 0, 11,236,207, 34,246,247, 92,
+218, 5, 14, 29,150, 44, 74,169,172,132,235,162, 74, 97,217,210, 92,187,118, 45,184, 89,179,102, 35,211,211,211, 95,119,230, 77,
+ 75, 75,195,209,163, 71,205,211,166, 77,155,179,111,223,190,133,137,137,137, 57, 0,180,158,136,168, 77,218, 40, 45,253, 92,191,
+ 86, 77, 23, 4, 2,192,170,245, 35, 7, 28, 58,158,225,191, 97,211,226,255,201,149, 50,227,178, 47,231,200, 42, 85, 76,192,142,
+ 35,151,113,240, 92, 54,169,213,162, 27,159,183, 97,105, 71, 0,139, 89,246,124, 56,144, 72, 36,177,201,201,201, 17,106,181,218,
+237,194,241, 46,126, 25,226, 4,168,168, 92,185,178,231,130,133,231,227,110,223,190, 29,161, 84, 42, 29,101,135,107,153, 33,150,
+ 43,142,180, 66, 41,170, 84,169, 98, 46,161, 76,138,191,121,243,102,132, 90,173,118,240,184, 11,159,171,224,168, 82,165, 74, 73,
+113, 47, 22, 78, 95, 56, 41,165,168, 84,169,146,205, 91,220,197, 21, 48,188,197, 91,228, 76, 76, 76,164,165,225,244, 37,156, 21,
+ 42, 84, 48,123,249,252,243, 46, 94,188, 56,186, 92,185,114,168, 84,169,210,190, 39,158,120, 34, 64,163,209, 96,211,166, 77,168,
+ 94,189,122,205,128,128,128,131,171, 86,173,146,142, 27, 55,174,238,119,223,125, 7, 0,175,176, 28,195,192, 80, 70, 66,139, 16,
+ 2,141, 70,131, 21, 43, 86,120, 92,142,195,249,127,249,242,229,125,122, 32, 33,164, 97, 98, 98,226,206, 61,123,246,168,162,163,
+255,158, 16,219,100, 50, 33, 56, 56, 24,163, 70,141,146,119,239,222,189, 82,167, 78,157, 14, 16, 66, 90, 83, 74,143,120,225,123,
+ 38, 60, 60,252,179,247,223,127, 63,178,127,255,254, 8, 13, 45, 54,233, 54,250,246,237,139,222,189,123,203, 46, 94,188, 56, 96,
+201,146, 37, 3, 22, 45, 90,148, 74, 8,121,133, 82,186,182, 36, 94,181, 90,221,179, 98,197,138, 95,236,217,179, 39, 34, 34, 34,
+ 2, 73, 73, 73,220,184,113,227, 42, 85,174, 92, 89, 21, 23, 23,199,221,185,115, 7,191,252,242, 75,236,192,129, 3, 87,203,229,
+242,151, 77, 38,211, 58, 31,226, 46, 15, 13, 13,125,231,229,151, 95, 14,203,207,207,183, 30, 61,122,244,146,120, 92, 46,151, 79,
+105,218,180,105, 35, 66,200, 15,148,210,175,239,197,146,101,183,218,185,174,101, 98, 17,207,251,104,217,146,159, 56,113, 34,164,
+105,211,166,107,141, 70, 99,253, 17, 35, 70,220,156, 54,109,154, 42, 32, 32, 32, 0, 0,201,207,207,207,153, 52,105,146,105,238,
+220,185,111, 87,175, 94,189,253,254,253,251,159,169, 91,183,174,197, 46,226,238, 22, 90,132, 56,194,115,235,118, 6,118,238, 19,
+228, 19, 39,188, 21,247,241, 71,137, 55, 14,159,189, 37,240,170, 0,252,186,235, 12,210,178, 10,241,251,254,179,136, 10,245, 39,
+ 50,133,180,102, 80, 92,205,214,121,183,207,238,162,108,101,237, 7, 14, 66, 8,212,106, 53,126,253,245,215,187,150,174,114,183,
+172, 21,207,243, 8, 10, 10,242,186,186,129, 82,169,196,214,173, 91,221,174,189,232,110, 73,159,192,192, 64,160,132, 69,181, 9,
+ 33, 80, 42,149,216,187,119, 47, 56,142,115,187, 52,144,235, 49,141, 70, 3,174,132,181,174, 68,206, 93,187,118,121,229, 18,127,
+253,252,252, 0, 64, 82, 98,166, 84, 40,176,103,207, 30,143,113,118,253,239,103, 95,239,213, 27,231,222,189,123,139, 45,253,229,
+186, 36,152,243,190, 70,163,113, 52,224, 60,182,210,130,131,155,196,197,197,225,208,161, 67, 88,181,106, 85, 72,205,154, 53,113,
+249,242,101, 16, 66, 48,109,218, 52, 82,163, 70, 13,105,106,106, 42, 90,182,108,137,159,127,254,185, 25,203, 45, 12,255, 32,164,
+ 0,234, 2, 8, 71,209, 42, 52, 5, 0,130,236,117,143, 28, 64, 22, 0,149,125, 51, 2, 40, 4, 16,102,191, 55,211, 94,182, 56,
+ 11,132, 12, 20, 95,124,186,145,157, 91, 92,161, 34,220,233,156,248, 12,215,125,215, 95,183,220, 60, 0,108,220,184, 81,172,204,
+218,116,237,218,117,103,177,152,249, 32,178,196,117,202, 92,243,180,155, 5,102, 21, 26,141,102,205,129, 3, 7, 84,225,225,127,
+199,193,104, 52,162,160,160, 0,133,133,133, 40, 40, 40,128,191,191, 63, 86,173, 90,165,106,223,190,253, 26, 66, 72,101, 74,169,
+209, 19, 39,128, 57,119,238,220,137,180, 90,173,144,203,229,158, 90,194,168, 86,173, 26,222,121,231, 29,116,238,220, 57,170,109,
+219,182,115, 0,172, 45,129, 19,106,181,250,139,163, 71,143, 70,168,213,106, 92,186,116, 9,201,201,201,120,243,205, 55,203, 9,
+130,128, 91,183,110,225,242,229,203,184,125,251, 54,150, 44, 89, 18,209,171, 87,175, 47, 0,172, 43, 41,238,118,140,120,253,245,
+215,171, 6, 7, 7,115,159,124,242, 73,174, 86,171,253,220,126,124,226,252,249,243,159,109,213,170, 85,196,240,225,195, 41, 33,
+100, 25,165,244, 46,225,226,194,233,206,146,101, 3,112,222,229,182,106, 46,150,174, 40,123, 34,204,117,195, 73, 0, 4,118,234,
+212,233, 13,163,209, 88,127,207,158, 61, 87,154, 55,111, 30, 15,224,142,152,248, 2, 3, 3, 53,115,230,204,137,236,214,173,219,
+197,118,237,218,213,239,212,169,211, 27, 25, 25, 25,211,236,231,169, 43,167, 32,224, 68, 84,116,173,149,187,246,191,210,111,199,
+ 94,147,236,173, 87, 63,184, 89,190, 92, 66,222,137, 75,217,182,179, 87, 51, 80,160,183,226,233,118, 69, 11,152, 55,169, 85, 30,
+159,173,216,131, 81,175,189, 43, 93,187,114,105,239, 43, 20, 26, 0, 27, 75,120,159,247, 5,198,249,183,216, 16, 4, 1, 82,169,
+ 20, 79, 61,245, 20, 8, 33,119,173,229, 41,149, 74,177,127,255,126,180,107,215, 14, 82,169, 20,207, 63,255,188, 79,156, 60,207,
+163, 83,167, 78,142,117, 20,157,249, 92, 69,131, 59, 77,224, 26,119, 74, 41,120,158, 7,199,113, 30, 23,210,118,229,244, 86, 46,
+137,225, 44,137,203,249,156,183,112,138,214, 36, 95, 69,150,175,156, 98, 56,121,158, 71,179,102,205,112,252,248,241, 18, 69,151,
+ 59,125,233, 26,247,156,156,156, 33,149, 43, 87,222,181, 96,193,130, 16, 0,200,202,202,114, 44,120, 47,145, 72,112,225,194, 5,
+152, 76, 38,124,248,225,135,230,252,252,252,225, 44, 31, 49,206, 7,201, 89,146, 22, 1,208,106,194,132, 9, 13,103,204,152, 49,
+173,105,211,166, 63,237,219,183,111, 57, 33,100, 3,165,180,155,248, 59, 97,194,132,154, 51,102,204,152, 54,126,252,248,119,166,
+ 79,159,126,134, 16,178, 1, 0, 92,247,237,225,239,230, 34,226,194, 69, 30,123,158, 43,118,173,187,125,215, 95, 15,220,127, 91,
+180,186,118,237, 74,236,145, 36,206,133,154,175, 66,203,151,181,251,120,158, 31, 61,109,218,180,200,146, 68, 86, 97, 97, 33, 82,
+ 82, 82, 16, 31, 31,143,231,159,127, 62,114,193,130, 5,163, 1,204, 42,129, 86, 38,145, 72,112,232,208, 33,164,167,167,163,118,
+237,218, 72, 76, 76, 44,118,193, 95,127,253,133,223,126,251, 13,185,185,185,104,208,160, 1, 80,228,127,228, 22,117,235,214,253,
+176, 90,181,106,157, 58,117,234,100, 85,169, 84, 56,113,226, 4,234,215,175,143, 21, 43, 86,160,124,249,242, 80,171,213,184,120,
+241, 34,106,215,174,141,157, 59,119, 34, 60, 60, 28,245,234,213,179, 54,104,208, 96,119,118,118,246,246,235,215,175,127,232,161,
+229, 44,139,141,141,253,224,165,151, 94,146,167,164,164, 8,223,127,255,253, 30, 74,233, 30, 66,200,232,119,223,125,119, 88,231,
+206,157, 35,142, 29, 59,150,119,248,240,225,131,238, 68,150,143,150, 44,171,107,165,100,179,217,140,122,189,222,100, 52, 26, 45,
+ 28,199, 93, 39,132,152,108, 54,155,167, 62, 31,229,208,161, 67, 43,100,102,102,142,122,237,181,215,174,217, 69,214, 5, 20, 57,
+192, 3, 0,172, 86,171,177,176,176, 48,191,105,211,166,241, 3, 7, 14,188,178,124,249,242, 81, 67,135, 14, 93,245,253,247,223,
+ 23, 2,208,187, 18,150, 47, 95,238,184, 68,194,201,180, 5, 33, 87, 87,175,250,250,245,223,214,143, 46,119,235,214,237, 74,161,
+ 97,225, 90,153, 95,120,202,170, 31,191, 59, 2,192,148,146,145,143, 83,127,165, 66, 42,149,224,220,173, 60,180,122,178,175,244,
+202,165,143, 90,136, 66,139,225,129,130,138,139, 80,239,216,177,163, 68,139,214,254,253,251, 33,149, 74,161, 82,169, 48,119,238,
+220, 18, 73, 69, 97, 32, 90,139,188,137, 25,142,227, 74, 44, 71, 68,177, 33, 46,244,238,186,125,254,249,231,120,237,181,215,138,
+ 61,195, 46, 54,136, 55, 78, 79,225,139, 79, 72, 64,122, 90, 90,177, 99,190, 44, 74,111,179,217, 32,149, 74,241,213, 87, 95,161,
+ 91,183,110,216,176, 97, 67,137,191, 79, 61,245, 20, 56,142,163,190,188,207,102,205,154,193,108, 54, 59,194,124,225,194, 5,183,
+188,139, 22, 45,242,102,201,236, 14, 96, 82,253,250,245, 3,218,182,109,139, 93,187,118,161,119,239,222, 70,179,217,124,201, 94,
+ 39, 84, 89,176, 96,129,252,232,209,163, 8, 13, 13,149,222,188,121,243, 91, 66, 8,115,144,103,120,160,112,167, 69,196, 58,111,
+198,140, 25,211, 92, 69,140, 51,196,243,132,144, 13,211,167, 79,239,230, 44,138,156,247,157,172, 78,206, 34,174,166,179, 69,202,
+ 89, 68,121, 18, 80, 46,245,173,243,245, 25,110,133,150, 61, 98,109,156,173, 64, 98,225,235, 77,100,121,106, 57,186, 34, 48, 48,
+176,203,211, 79, 63,237, 16, 57, 6,131,193, 33,176, 68,145, 37,238, 95,188,120, 17, 13, 27, 54,148, 5, 6, 6,118,241, 34,180,
+ 68, 17,135,152,152, 24,100,102,102,226,244,233,211,136,143,143,135,197, 98,193,230,205,155,145,151,151, 7,169, 84, 10,153, 76,
+ 6,179,185,100,151,133,106,213,170, 61,181,108,217,178,134, 75,151, 46,205, 17, 91,116, 63,254,248, 35, 40,165, 8, 15, 15,135,
+ 78,167, 67, 90, 90, 26,182,111,223, 14,171,213, 10, 63, 63, 63, 36, 37, 37,201,123,246,236,217, 98,210,164, 73, 82, 0, 31,122,
+160,110,214,187,119,239,192,128,128, 0,188,250,234,171,212,108, 54, 79, 39,132, 52,235,221,187,247, 7,175,188,242, 74,232,245,
+235,215, 77, 47,188,240,194, 33,179,217,252,137,189, 16,148, 82, 74, 45, 94, 90, 20, 30, 45, 89, 22,139, 69,124,167,215, 10, 11,
+ 11, 17, 22, 22, 22,239,197,135, 11, 0,100,123,247,238,109, 6, 64, 50,101,202, 20, 37,128, 52,103,145,101, 50,153, 80, 88, 88,
+ 8,173, 86,107,201,203,203, 75, 31, 59,118,172,117,249,242,229, 18,251, 61,231,220, 9, 45,224, 73, 83,141, 26, 26, 57,165,146,
+119, 23, 47, 94,236,215,185,115,103,206,207,207, 15, 5, 5, 5, 1,191,111,218,228,215,190,109,139,164,105, 51, 62,222, 18, 16,
+ 87, 59,109,239,137,171,184,157,154, 7,147,197,130,164,232,192, 34,123, 24,195, 3,135,125, 32,139,195,162,229, 44, 42,118,237,
+218,133, 39,159,124,210,145,215,101, 50, 89, 49,203,151, 55, 78,158,231,241,228,147, 79,222,101,225,217,177, 99,135, 91,235,147,
+ 55, 56,139, 34, 87,113,228, 78,128,113, 28, 7,111,189,207,162, 53,207,157,216,114,182,234,187,136, 55,111,173,125,240, 60,143,
+ 87, 94,121, 5, 82,169, 20,227,198,141, 3,207,243,168, 87,175, 30,120,158, 71,211,166, 77, 33,149, 74,209,174, 93,187, 82,199,
+253,192,129, 3,168, 95,191,190, 35, 76,245,234,213, 67,163, 70,141,192,243, 60, 90,182,108, 9,169, 84,138, 78,157, 58,249,194,
+249, 78, 65, 65, 65, 29, 63, 63, 63, 92,188,120, 17, 18,137, 4,132,144,203,148,210, 58, 0,240,210, 75, 47, 93,209,233,116, 21,
+ 12, 6, 3, 94,122,233, 37, 98, 50,153,106,143, 27, 55,238, 93, 0, 76,104, 49, 60, 48,184,106, 17, 39,232,199,143, 31,255, 14,
+ 33,100,131,104,161,114,181, 60,185,219,119, 83, 54,137, 98, 72,236,218,107,228, 34,226,196,110,191,174, 37,220,107,114, 17, 86,
+174, 93,135,135,125,182,104,137,133,175,175, 66,203, 27, 12, 6, 67,221,136,136, 8,143, 34,203,249,215,100, 50, 33, 49, 49, 17,
+ 6,131,161,110,105, 43,141,232,232,104,152,205,102,124,253,245,215,144,201,100,144,201,254,214, 23, 38, 83,201,198,162,179,103,
+207, 94, 59,112,224, 64,253, 6, 13, 26, 4,255,252,243,207, 25,173, 91,183, 14,239,220,185, 51, 84, 42, 21,244,122, 61, 44, 22,
+ 11,154, 52,105,130,106,213,170, 33, 57, 57, 25,191,255,254,123,102,229,202,149,195, 14, 30, 60, 40,164,166,166,222, 40,129,186,
+ 99,251,246,237, 65, 8,193,166, 77,155, 50, 41,165,135,149, 74,229,111, 31,125,244, 81,176,201,100, 18, 6, 15, 30,124, 51, 59,
+ 59,251, 53, 0,102,133, 66, 49,191, 83,167, 78, 77, 37, 18,201, 15, 54,155,109,110,105, 19,170,235,187,213,106,181, 80, 42,149,
+190, 76, 37, 33,205,206,206,174, 5, 0, 26,141, 38, 4,192, 21, 71, 10,215,235,139,137, 97,147,201,100, 8, 9, 9,209, 0,128,
+253, 30,169,135,239, 17,174, 86,171, 87,223,184,113,213,223,217,127, 46, 40, 40, 8,131, 6, 14,228,154, 55,107, 38,175, 83,183,
+110,167,247, 62, 93,186, 34, 38, 52,192,148, 20, 19, 10,139,205,130,109, 91, 54, 11, 84,176,108, 97,197,206,195, 17, 90,162,216,
+112,181,104, 73,165, 82,236,220,185,243,174, 99, 50,153, 12, 95,126,249,165, 79,194, 64, 20, 85,158,186,206, 92,186,186,136, 55,
+ 1, 35,149, 74, 33,145, 72,240,213, 87, 95, 65, 16, 4,188,254,250,235,197,186, 19,157,249,125,236, 2,113,220, 83,237, 3, 1,
+128, 9,201,179, 21,142,251, 93,195,107,191,199, 39, 43,217,130, 5, 11,124,178,104,117,237,218,213,171,112,117,238, 97,112, 14,
+215,241,227,199,221,242, 46, 94,188,216,235,251,180,217,108,216,184,113,163, 67,164,138,120,255,253,247, 95,138,139,139,139,220,
+189,123, 55, 82, 83, 83,161,213,106, 81, 88, 88,136, 38, 77,154, 36,117,232,208,225, 68,106,106,234,245,179,103,207, 62,205,114,
+ 15,195, 67,180,104, 25,167, 79,159,126,102,250,244,233,110, 45, 86,174,150,165,146, 44, 79, 78, 2,235, 48,236, 93,134,227,199,
+143,127, 7, 69,110, 53,135,125,184, 87,238,218,117, 88,162, 33,200, 69, 69, 78,114, 87,248,250,210,125,232,163, 57,157, 39,132,
+192, 96, 48,184, 21, 88,206,226,192,108, 54, 35, 59, 59, 27, 54,155,237,158,231,250,114,215,146,245, 38,180, 78,159, 62,253,220,
+176, 97,195, 82, 2, 3, 3,235,100,100,100,164, 11,130,208,110,255,254,253,225, 60,207, 35, 32, 32, 0, 1, 1, 1,248,237,183,
+223,160, 86,171,241,202, 43,175,164,219,108,182, 93,254,254,254,161,122,189,254,100,106,106,234,123, 30, 21,140, 84,218,169,101,
+203,150, 56,122,244, 40,114,114,114,182, 18, 66,234, 13, 31, 62,252,201,114,229,202,145,143, 62,250,200,240,215, 95,127,205, 5,
+144,174,209,104,150, 45, 91,182,172,109,131, 6, 13,252, 7, 15, 30, 12, 66,200, 98, 74,169,193,215, 56,107,181,218, 98, 2, 43,
+ 63, 63, 31, 5, 5, 5,208,104, 52, 86, 31,223,153, 20, 69,190, 86,162,191,149,227,219,216,173, 89,226,247,161, 60,207,211,162,
+ 75,168,212, 19,159, 70,163,153,178,116,233, 82,149,235, 32, 5,155,205,134,180,180, 52, 4, 4, 4,224,253,247,222,147, 77,126,
+115,120,125,137, 95,228,126,142, 35, 48,153,105, 46, 21, 76,155,181,105,253,119,179, 98,231,225, 64, 20, 6, 61,122,244,184,171,
+187, 80, 38,147, 97,235,214,173,232,213,171,151,163,225,210,160, 65, 3,175,141, 43, 81, 24,116,239,222,221, 97, 25,218,188,121,
+179,219,110, 63,209, 34,229,139, 32, 20,175, 29, 51,102, 12,120,158,199,103,159,125,134, 55,222,120, 3, 28,199, 97,246,236,217,
+224, 56, 14, 19, 39, 78,244, 89,100, 58, 11,152,235, 31, 23,253,198,189,145,143,172, 69,145, 0, 0,255,128, 0, 49, 66,165, 42,
+123,120,158,119, 88,178,234,214,173, 11,169, 84,138,166, 77,155,130,231,121,135, 37,171, 75,151, 46,206,239,145,250,194,201,243,
+ 60, 46, 93,186,228, 8,115,211,166, 77,139, 89,178,120,158, 71,215,174, 93,125, 9,230,180,160,160,160, 73,213,170, 85,171, 62,
+103,206, 28,169, 68, 34, 65,251,246,237,171,188,240,194, 11, 55, 66, 67, 67, 67,167, 76,153,162,118,115,143, 10, 64,157,234,213,
+171,107, 88,174, 97,120,128, 22,173, 73,110, 78, 5, 59,251, 92,149,162, 33,185,193,249,122,145,195, 85, 28,217, 45,100,187,188,
+113,185,187,215, 27,120, 81, 65,150,100, 82,247, 69,104,217,205,206, 37, 62, 76,173, 86,159, 74, 79, 79,111,170, 82,169,138,137,
+ 44,119,130, 75, 34,145, 32, 53, 53, 21,106,181,250, 84, 89,126, 68,111, 93,135,118, 81,243,166,211,139,237,208,165, 75,151,239,
+183,110,221, 26,189,109,219, 54, 28, 60,120, 16,225,225,225, 88,176, 96,193,157,180,180,180,231, 40,165, 91,125,121,110,133, 10,
+ 21,106,249,249,249, 97,239,222,189, 0,176, 19,192,240, 81,163, 70, 17,139,197,130, 69,139, 22,105, 1,108, 10, 10, 10,218,184,
+106,213,170,250,117,234,212,145,111,219,182, 45,255,224,193,131,127,248, 40,178,108,130, 32,220, 37,176,156,223,169,191,191,191,
+ 47, 22, 45, 75, 96, 96,224,233,252,252,252,190,122,189, 62, 95,161, 80,248,231,231,231, 27,157, 5,150,200,207,243,188,244,210,
+165, 75, 41, 0,146, 2, 3, 3, 79,195,169,139,177, 88, 2,227,249,246,237,219,183,231, 93,191, 65, 90, 90, 26, 82, 83, 83, 97,
+ 54,155,209,160, 65, 3, 34, 33, 22, 73,246,205,147, 47,177, 98,230, 31,177,104, 81, 49,175,139,163, 4,221,141, 52,220,188,121,
+179, 99,159,227, 56,216,135,251,123, 21, 69, 91,183,110, 45,209, 97,221,165,235,208,171,105, 92,188,126,225,194,133, 69,203, 91,
+216, 45, 89, 28,199, 97,252,248,241, 80, 40, 20,248,232,163,143, 48,126,252,120,240, 60,239,181,235,208, 89,192, 36,140,211, 57,
+ 55,142,138, 50,133,221, 31,138, 16,226, 44,182,136,175,226,173, 36,107,158, 47, 61, 1,206,156,226,125, 74,165,210,163, 35,188,
+ 11, 39, 41, 33,222,191, 18, 66,174, 70, 71, 71,239,109,218,180,105,224,145, 35, 71, 48,123,246,108,153,209,104, 44,191,109,219,
+ 54,199,115,221,189, 47,173, 86,171, 98, 57,135,225, 65, 88,179, 74, 56,157,225,226, 95, 69,156,187,241, 74,248,117,189, 30, 78,
+199,156,121, 51, 92,234, 49,231,227,174,226,202,245, 25,206,215,100,120,180,104,121, 43, 44,188, 9, 46, 95, 44, 90, 58,157,238,
+143, 77,155, 54, 53, 26, 56,112, 32, 95, 82,183,161, 86,171, 69,100,100, 36,206,156, 57, 99,213,233,116,127,248, 96, 41, 43, 51,
+161,229,166, 80,217, 22, 21, 21, 37,177, 88, 44,168, 84,169, 18, 98, 99, 99, 97, 48, 24,144,155,155, 43,241, 85,100, 17, 66,100,
+ 13, 27, 54,148, 0, 64,110,110, 46, 80, 52,212,180, 74,229,202,149,113,244,232, 81,100,103,103,175, 5,208,121,210,164, 73, 13,
+154, 52,105, 34, 91,177, 98,133,110,196,136, 17,107, 45, 22,203,135, 62, 90, 35, 76, 86,171, 53,145,227, 56,115,110,110,238,109,
+231,247, 25, 25, 25, 25,162,209,104, 72, 90, 90,154,197, 23,161, 85,167, 78,157, 67, 55,111,222,196,148, 41, 83, 50,166, 77,155,
+ 86,185,160,160, 32, 39, 47, 47,207,234, 44,182, 12, 6, 3, 23, 22, 22,166, 88,180,104,145, 10, 0,234,212,169,115,200,147,208,
+210,106,181,229,212,234,191, 27,198, 70,163, 17,169,169,169, 72, 77, 77, 69, 90, 90, 26, 10, 10, 10,144,148,148, 4,157, 78, 23,
+207,138,153,127, 76,104, 21,235, 62,115,206,223,206, 21,121,105,242,186,179,128,233,209,163,135,195,183, 75,180,144,137,219,234,
+213,171, 93, 29,204,125, 18, 90, 11, 23, 46,196,152, 49, 99,160, 84, 42, 49,103,206,156, 98, 93,135,174,226, 64, 16, 4,226, 75,
+220, 19,223,214, 35,117,126, 8,164, 82, 41, 66, 71,164, 21,235,162,115, 35, 56,124, 10,231,180,105,211,202,164,235,208,153, 51,
+ 62,190, 40,171,124,245,213, 87,232,219,183, 47,118,239,222,125,207, 93,135, 53,107,214,252,113,195,134, 13,129,103,207,158, 69,
+126,126, 62, 50, 50, 50, 96, 52, 26,145,156,156,236,177, 87,192, 94,150, 43, 89,206, 97,120,200, 56,252,144,121,203,236,121,188,
+151, 10,220,103,161,229,139, 69,203,104, 52,206,121,245,213, 87, 71,117,232,208, 33,196,223,223, 31, 41, 41, 41,119,137,172,194,
+194, 66,248,249,249, 65,175,215, 99,253,250,245,249, 70,163,113,142, 55,113, 96,177, 88, 16, 17, 17,129,204,204, 76, 8, 30,252,
+167, 57,142,131, 74,165, 66, 97, 97, 33, 60,137,130,146, 42, 12,179,217, 12,139,197, 2,139,197, 2,179,217,140, 82, 78,239,164,
+ 22, 39,126,213,106,181, 0,160,141,137,137,169,164, 84, 42,113,237,218, 53,160,104,100, 95,135, 39,159,124, 82,154,149,149, 69,
+ 95,120,225,133, 61,148,210,151,188,204,142,111,218,181,107, 87, 34, 0,168, 84,170,139, 0,144,156,156,108,201,205,205, 45,102,
+ 41, 84,171,213,180, 87,175, 94,209,148, 82,236,218,181, 43, 81, 38,147, 81,120,152,243, 10,128, 97,221,186,117,103, 3, 3, 3,
+151,207,152, 49, 99, 96,183,110,221,206,212,170, 85, 43, 81,171,213,166,235,245,122,189,193, 96,160, 18,137, 68, 22, 28, 28,172,
+220,178,101,203,149,253,251,247,119, 8, 8, 8, 88,190,110,221,186,179, 0,220, 90,222, 52, 26, 77,178, 78,167, 75, 16,191,169,
+179,200, 74, 77, 77, 5,165, 20, 87,175, 94,133, 90,173,190,201,202,145,127, 14, 98,163,202,213,242,226,122,204, 87,145,229, 44,
+ 12,182,108,217, 82,226, 28, 90,190,114, 58,139,162, 55,222,120, 3,243,231,207,191,203,162,245,209, 71, 31, 1, 0,222,123,239,
+ 61,159,125,180, 68,235, 85,234,252, 16, 68,141,201, 46, 22,118, 0, 32, 98,248, 74, 57,165, 27,207,243,152, 50,101,202, 93, 78,
+234,206, 93,123, 62,118,241, 21, 11,103,122,122, 58,120,158, 71, 72, 72, 8, 6, 13, 26,132, 78,157, 58, 57,186, 32, 75,203,123,
+254,252,249,189,111,191,253,118,237,154, 53,107, 98,234,212,169,217, 65, 65, 65,254, 47,190,248, 34,159,155,155, 75, 74,178,104,
+ 49,161,197,192, 80, 6, 66, 75,204, 96,190,142, 58,116, 87, 88, 18, 66, 58, 56,207,181, 65, 41,205, 35,132, 12,234,216,177,227,
+207, 43, 87,174, 84, 85,168, 80, 1,231,207,159, 71,118,118, 54, 76, 38, 19,100, 50, 25,162,163,163,145,155,155,139,239,190,251,
+ 78,175,211,233, 6, 81, 74,243, 74,226, 4,240,110,195,134, 13,191,152, 53,107,150,178, 94,189,122,200,206,206, 70, 97, 97, 97,
+177, 89,172, 3, 2, 2,160, 82,169,112,232,208, 33,108,222,188, 89, 15,224, 93, 47,156,238,212, 28,204,102,179, 67,112,121, 19,
+ 90, 46,156, 26,209,170,163,211,233, 0,192, 82,174, 92,185, 40, 0,184,122,245, 42, 0, 92, 79, 74, 74,154, 84,161, 66, 5,178,
+108,217, 50, 74, 41,221,236, 78,100,185,112,102,183,108,217, 50, 7, 64,148,201,100,146, 1, 64, 94, 94,158, 57, 44, 44, 44, 66,
+161, 80, 8, 42,149, 74, 80, 42,149, 66, 74, 74,138,213,106,181,202, 0,160,101,203,150, 38, 0,169,112,242, 5,113,225, 20, 0,
+228, 47, 94,188,120,210,224,193,131,155, 54,107,214,172,230,200,145, 35, 79,191,240,194, 11, 92,108,108,108,112, 65, 65,129,225,
+242,229,203, 57,159,126,250,105,193,129, 3, 7, 58, 72,165,210, 27,139, 23, 47,158, 4, 32,223,126,239, 93,156, 86,171,245,143,
+109,219,182, 61,215,173, 91, 55,254,246,237,219, 72, 75, 75,115,136,172,180,180, 52, 84,171, 86, 13,251,247,239,183,153,205,230,
+109,165,120,159,101,101,201, 97,156, 69,141, 16, 42,230,117, 79, 2, 75,108, 76,249,202,233, 44,138,250,246,237, 91,204,138, 37,
+147,201,176,102,205, 26,183,229,134,155, 25,206, 59,184,206, 39, 37,134,233,237,183,223, 46, 38,218,222,127,255,125,143, 65,243,
+246, 62, 69,158,188,175, 98,139,143, 58,244,144,207, 75, 10,167, 88,118, 74,165, 82,188,255,254,251, 62, 91,180,224,226,163,229,
+142, 83,140,123,235,214,173,161,211,233, 28, 66,214,147, 69,203,219,251,180,217,108, 99,230,207,159, 79, 3, 2, 2,158,200,207,
+207,255,223,205,155, 55,151,232,116,186,198,121,121,121, 37, 90,180,140, 70,163,130,229, 35,198,249, 32,230,210,250, 79, 9, 45,
+123, 37,137,114,229,202, 21, 91, 59,139,227,184, 98, 91,105,252, 12,236, 25,119, 11, 33,228,153,230,205,155,255, 48,102,204, 24,
+255,122,245,234, 73, 19, 18, 18,160,213,106,113,237,218, 53,156, 57,115,198,186,110,221,186,124,157, 78,247, 63, 74,233, 22, 31,
+248,150, 18, 66, 54,119,238,220,121, 98,147, 38, 77, 94,254,224,131, 15, 36, 85,170, 84, 65, 94, 94, 30,130,131,131, 17, 17, 17,
+129, 11, 23, 46, 96,253,250,245,182,204,204,204, 47, 0, 76,166,148,102,148,182,193,111, 54,155, 49, 96,192, 0, 8,130,128,185,
+115,231,130, 16, 82,154,230,173,217,108, 54, 83, 0, 36, 51, 51, 19, 0,116,246,217,165,113,249,242,101, 0,184,145,152,152,232,
+ 15, 0,219,182,109, 35, 0,124, 93,210,135, 58, 91,182,170, 85,171,118,205,181,112, 20, 45, 89,162, 21, 12,222, 23,130, 54,244,
+235,215, 47, 93,167,211,117,126,227,141, 55, 38, 46, 92,184,112,224,194,133, 11,239,186, 40, 32, 32, 96,249,236,217,179, 39,247,
+235,215, 47,221,147, 53,203,110,193,123,111,200,144, 33,253, 78,157, 58,229,175, 84, 42,161,213,106,145,149,149, 5,179,217,140,
+164,164, 36,164,167,167, 99,233,210,165, 5,122,189,254, 67,150, 29,255, 25, 56, 11, 3, 79, 86, 45,111, 34,171, 36,171,206,175,
+191,254,234,118,142,170,210,114,186,138, 13, 95,231,182, 42,169, 81, 36, 78, 75,227,110,202,136,210,148,107,238,120,121,158,199,
+ 39,159,124,226,152,180,213,157, 37,171, 52, 22, 45,145, 51, 36, 36,164,200, 76,110, 95, 50,169,107,215,174,247,204,107, 95,142,
+236, 21,167,103, 76, 27, 59,118,236,164,106,213,170, 85, 1,160,112,126, 7,108,145, 6, 6,134, 50, 22, 90, 54,155, 45,185,106,
+213,170,197, 10, 56,111,139,153, 90, 44,150,100, 31, 51,247,102, 66, 72,210,236,217,179, 95,213,104, 52, 29,116, 58, 93,109,123,
+193,113, 74,171,213,110, 51, 26,141,243, 74,179, 8,180, 93, 56,141, 38,132,204,237,220,185,243, 71,237,218,181,235,243,230,155,
+111, 18, 74, 41, 22, 45, 90, 68,255,250,235,175,213, 0,222,165,148,254,117, 47, 47, 41, 36, 36,228,236,119,223,125, 23,249,243,
+207, 63,195, 98,177, 96,222,188,121,240,247,247, 63, 91,138,240,165,243, 60,255,125,179,102,205,158,221,191,127,255, 82, 74,233,
+ 73,185, 92,190,164, 69,139, 22, 67,246,239,223,255, 35,165,244, 12,207,243, 75,154, 52,105, 50,228,240,225,195,171, 40,165,199,
+ 75, 17, 60,135,101,203,106,117,223,211,232,206,146,229, 5,249,195,134, 13, 51, 15, 27, 54,236,205,126,253,250,125,125,248,240,
+225,198,185,185,185,181, 1, 32, 40, 40,232, 84,163, 70,141, 14,173, 92,185,242,130,221,146,101,240,246,109, 8, 33,189,106,215,
+174,189,118,234,212,169,154,154, 53,107,242,149, 42, 85,194,245,235,215,113,250,244,105,235,183,223,126, 91,168,215,235,123, 80,
+ 74,115, 88,118,252,231,132, 22,165, 20, 65, 65, 65,197, 26, 81,226,144,255,210,118, 23, 58, 87,204,226, 82, 61,174,188,158, 56,
+ 75,154, 54, 65,132,159,159,159, 99,114, 83, 95, 92, 22, 4,161,228,249,216, 40,165, 14, 78,113,243, 65,100,121, 29, 33,104, 95,
+ 2,199,103, 78, 95,166,119,208,104, 52,176, 88, 44, 14, 94, 31, 70,126,146, 82,126,179, 95, 1,252, 90,169, 82,165,203, 0, 42,
+ 50,113,197,192,240, 0,133, 86,118,118,118,195, 7,249, 96,187,144,154,108,223,202,138,243, 47, 0,253, 8, 33,179,254,252,243,
+ 79,177, 31, 97,138,183,245, 18,189,225,252,249,243,221,164, 82,233,151,203,151, 47,111, 66, 41, 69, 96, 96,224,129,235,215,175,
+191, 88, 26, 14,171,213, 58,140, 16, 50, 74, 28, 69,104, 50,153,134, 17, 66, 94,165,148, 22, 58,157,119,236,151, 54,234, 0,140,
+148,210, 24, 15,231,141,165, 16, 89, 14,203, 22, 0,211,202,149, 43, 11, 1,156,192,223,243,100, 89,236,155, 1, 78,221,133, 94,
+190,203,118, 66, 72,165,247,223,127,127,154, 68, 34,105,175,213,106, 99, 53, 26,205, 45,171,213,250,135, 78,167,123,151, 82,154,
+197,178,226, 63, 7,147,201,116,187,106,213,170,188,187, 6, 84, 73, 21,121, 73, 13, 43,155,205,150, 92,185,114,101,175,141, 51,
+ 55,156,183, 75, 72, 71, 55,146,146,146, 56, 95,185, 68,152,205,230,244,146,194,153,148,148,132,210,114,122,139,123, 98, 98,162,
+219,184,123, 17,132,183, 75, 40, 63,238,137,179,164,247, 89, 18,244,122,125, 78,120,120,120,161,193, 96,144, 26,141, 70,169,213,
+106, 45,102,126, 84,169, 84, 25, 44,231, 48, 48,220,167,208,250, 55,195, 46,172,186,151, 33,159, 17,192,179,101,192, 99,112,217,
+ 47, 44,105,191,148,120, 16, 22, 33, 1,128,174,140,222, 97, 38,128, 23, 88,150,123,244,144,153,153,249, 68, 89,115,102,101,101,
+149,121, 67, 45, 35, 35,163,233, 3,136,123,195,255, 42,103, 73,184,125,251,246, 19, 44,103, 48, 48,148, 13, 56,246, 10, 24, 24,
+ 24, 24, 24, 24, 24, 24, 30, 12, 8,128, 14,238, 78,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25,
+ 39,227,100,156,143, 31,167, 55,238,199,110, 52, 35,165,244,129,109, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113,
+254, 87, 55,214,117,200,192,192,192,192,192,192,192,240,128,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12,255,
+ 70, 16, 66,170,148, 47, 95,254, 92,213,170, 85,111, 19, 66,134, 62,224,103, 13,106,218,180,105,150, 82,169,220, 66, 8,169,194,
+222, 62, 3, 3, 3, 19, 90, 12, 12, 12,143,181,200,170, 93,187,246,158,243,231,207, 87,219,182,109, 91, 76,108,108,236,199, 15,
+242,121, 13, 27, 54,156,185,123,247,238,144, 77,155, 54,117,140,138,138,218,117, 47, 98,139, 16, 82, 37, 62, 62,254, 92,213,170,
+ 85,147, 9, 33,131,202,248,125, 12,109,214,172, 89,182, 66,161,216,204,132, 32,195,127, 32,255,215, 34,132,212,102, 66,139,129,
+129,129,225, 1,138,172,125,251,246,133, 26, 12, 6,156, 63,127, 30, 25, 25, 25,199, 31,228, 51, 47, 94,188,152,179,111,223, 62,
+196,197,197,225,199, 31,127, 12, 79, 76, 76,220, 93, 26, 65, 35,134,249,220,185,115,213,182,109,219, 22, 27, 17, 17,241,105, 89,
+134,175,113,227,198, 31,237,222,189, 59,120,203,150, 45,157,194,195,195,119, 49,177,197,240, 24,230,123, 5, 33,228, 89,142,227,
+ 14,213,170, 85,235, 84,205,154, 53, 79,114, 28,183,159, 16,210,151, 16,194,255, 39,223,137,184,196,194,198,141, 27,119, 2, 64,
+215,174, 93, 91,179,164,194,192,192,112,159,133,109,205,154, 53,107, 30, 56,112,224,128, 90,175,215, 99,213,170, 85,248,224,131,
+ 15, 44,217,217,217,187, 1,104,221,220,114, 24,192,231,190, 44,189, 69, 8, 9, 0, 48, 10, 64, 35, 55,167, 53, 33, 33, 33, 45,
+ 39, 77,154, 36,125,242,201, 39, 97, 48, 24,208,187,119,111,195,197,139, 23,235, 81, 74, 47,250, 42, 12,245,122, 61,142, 28, 57,
+130, 30, 61,122,108,177, 88, 44,157,203,234,189, 4, 6, 6,158,249,245,215, 95,107,196,196,196,224,234,213,171, 24, 50,100, 72,
+ 70, 90, 90, 90, 43,111, 97, 99, 96,248, 23,228,249, 4, 0, 47,251,249,249, 13,111,211,166, 77,112,143, 30, 61, 16, 26, 26, 10,
+171,213,138, 91,183,110, 97,195,134, 13,216,183,111, 95,138,201,100,154, 15,224, 43, 74,105,174, 59,158,199, 81,139, 16, 74, 41,
+ 54,110,220, 72, 1,180,177, 71,110, 39, 75, 50, 12, 12, 12,247, 89,232,238,211,233,116, 77,117, 58, 29, 10, 10, 10, 80,174, 92,
+ 57, 72,165, 82,183,215,166,167,167, 99,239,222,189,120,229,149, 87,206,166,166,166,182, 42,105,221, 75, 66, 72,112,253,250,245,
+247,109,223,190,189,138,191,191,191,227,184, 32, 8, 48,155,205,176, 88, 44, 48,155,205, 48, 26,141, 48, 26,141,144,203,229, 80,
+169, 84, 8, 9, 9, 57, 77, 41,173,237,171,200, 58,118,236, 24, 6, 15, 30,156,145,149,149, 85,166, 34,136, 16, 82, 37, 34, 34,
+ 98,215,210,165, 75,195,147,146,146,112,243,230, 77, 60,255,252,243,153, 55,110,220,104,201,196, 22,195,191, 56,191,143,127,230,
+153,103, 62,138,140,140,228,106,213,170,133,232,232,104, 24,141, 70,232,245,122, 80, 74,193,243, 60, 40,165,200,203,203,195,174,
+ 93,187,176,125,251,118, 99, 78, 78,206,119, 0,230, 81, 74, 47, 57,137,172,199, 82,139, 56,132, 86,215,174, 93, 9, 75, 46, 12,
+ 12, 12,101, 84,240,158,202,203,203,171,101, 52, 26,161,213,106,125,186,231,234,213,171, 24, 58,116,232,217,212,212,212,230,238,
+ 44, 91,132,144,128,250,245,235, 31,220,181,107, 87, 21,131,193,128,252,124,239,235,206,203,229,114, 40,149, 74,132,134,134,238,
+167,148, 54,243,212, 18,175, 85,171,214,145,253,251,247,135,232,245,122, 28, 63,126, 28,131, 6, 13, 50,103,103,103,239,129,123,
+235, 27, 0,100,163,104, 29,213, 27,110,248,226, 1,188, 10, 32,193,195,189,154,240,240,240, 22,203,150, 45,147, 85,168, 80, 1,
+ 58,157, 14,125,251,246,205,190,120,241, 98, 35, 74,233, 53,150,122, 24,254,133,249,253,226,249,243,231, 43,219,108, 54,100,102,
+102,194,104, 52, 66,167,211, 57,132,150, 68, 34, 1,165, 20, 86,171,213,209, 48, 58,122,244, 40,182,109,219, 70,175, 94,189,250,
+ 1,165,116,138, 40,180, 30, 71, 45,194,179, 36,194,192,192,240, 0,208,175,113,227,198,199,127,255,253,119,165, 92, 46,199,250,
+245,235, 61,118, 29, 70, 70, 70,214, 92,178,100, 73, 98, 82, 82, 18, 22, 44, 88, 80,163,119,239,222,163, 0, 76,115,195, 57,106,
+251,246,237, 85, 12, 6, 3,142, 31, 63,142, 33, 67,134, 92, 75, 75, 75, 59,227, 42, 98, 18, 19, 19, 91,126,250,233,167,210, 6,
+ 13, 26, 32, 63, 63, 31, 29, 59,118,212, 1,120,185,132,176,142,222,177, 99, 71,136, 94,175, 71, 65, 65, 1,218,180,105,131,172,
+172, 44, 25,128,118,158,110,208,235,245, 72, 72, 72,168, 2,224, 46,241, 22, 26, 26,250,205,205,155, 55,219,170, 84,170, 18, 95,
+144,217,108, 70,114,114, 50,130,130,130,176, 97,195,134,144,138, 21, 43,190, 7, 96, 24, 75, 58, 12,255, 70,152, 76, 38,252,244,
+211, 79,168, 95,191, 62,170, 87,175,142,194,194, 66,135,232, 50,153, 76, 14,145, 5, 0, 28,199,161, 81,163, 70,168, 92,185, 50,
+121,253,245,215, 7, 1,152,242, 56,191, 27, 81,104, 77, 98, 62, 90, 12, 12, 12,101, 5, 74,233, 69, 66, 72,189, 14, 29, 58,236,
+ 94,189,122,117, 88,151, 46, 93, 80,177, 98, 69,233,211, 79, 63, 29,174,213,106,219,187,180,134,131,135, 12, 25,114,228,214,173,
+ 91,137,246, 67,141, 60,208, 54,242,247,247, 23,125,155,174,165,165,165, 53,116,237,102, 84, 40, 20,155, 79,156, 56, 33,149,203,
+229, 56,124,248, 48,134, 14, 29,154,121,237,218, 53,111,221,114, 65, 38,147, 9, 18,137, 4, 0,144,156,156,236, 53,126, 55,111,
+222,132, 32, 8, 70,119,231, 56,142, 83, 28, 61,122, 20, 49, 49, 49, 37,114,112, 28, 7,153, 76,230,124, 40,151,165, 28,134,127,
+ 41, 44, 38,147, 9, 13, 27, 54,196,181,107,215,112,244,232, 81,135,224,202,204,204, 68, 74, 74, 74,177,139, 15, 29, 58,132, 99,
+199,142,161, 85,171, 86,174, 60,143,165, 22,225,237, 17,250,112,227,198,141, 76, 96, 49, 48, 48,148,181,216,106,217,189,123,247,
+ 93, 75,151, 46, 13, 47, 87,174, 28,252,253,253, 3,220, 92,151, 67, 8, 57, 35,149, 74, 19,125,229, 78, 75, 75, 59,227,206,151,
+ 43, 42, 42,170,158,201,100,194,177, 99,199, 48,104,208,160, 12,187,207,151, 55,223,167,169,237,219,183,239,190,101,203,150, 16,
+165, 82,137, 51,103,206,248,210,117,120, 29,192, 60,119, 39, 50, 50, 50, 6,181,106,213,234,125, 0, 33, 30,238,213, 84,174, 92,
+185,197,145, 35, 71,100,132, 16, 92,191,126, 29,125,251,246,205, 6,240, 25, 75, 53, 12,255, 82, 76,124,230,153,103,190, 29, 53,
+106, 84, 96,147, 38, 77,144,156,156,236, 16, 92,245,234,213, 67,157, 58,117,240,215, 95,127, 97,243,230,205, 56,118,236, 24, 20,
+ 10, 5, 42, 86,172,136,194, 89,159, 2,159,194, 34,146, 60,174, 90,196, 49,234,144,129,129,129,225,129, 20, 50,132, 84,145,201,
+100,115,195,195,195,235,222,190,125,251, 13, 74,233,143, 46,231,131,251,244,233,115,102,197,138, 21,209,215,175, 95, 71,133, 10,
+ 21,214, 83, 74,123,186,225, 89, 71, 41,237,113,245,234, 85, 52,111,222,220,173, 69,139, 16, 50, 52, 42, 42,106,114, 65, 65, 65,
+158, 78,167,235,235,171,131, 57, 33,164, 74,165, 74,149,118,175, 95,191, 62, 76,173, 86,227,220,185,115, 15,204, 25,190,106,213,
+170,123, 14, 29, 58, 20, 42,149, 74,113,248,240, 97, 12, 25, 50,132, 57,195, 51, 60, 14,249,220, 31,192,216,164,164,164,183, 70,
+140, 24,161,168, 81,163, 6,146,147,147,145,145,145,129,156,156, 28, 28, 56,112, 0, 0, 16, 27, 27,139,216,216, 88, 92,184,112,
+ 1,123,247,238,205, 47, 44, 44, 28, 70, 41,253,249,177,126, 55, 76,104, 49, 48, 48, 60,228, 2, 57, 30, 78,206,226,125,250,244,
+105,184,108,217,178,232,172,172, 44, 28, 60,120, 16,189,123,247,126,151, 82, 58,205,205,125,239,164,166,166,126, 4, 0,167, 79,
+159,118,245,209,242,232,156, 94, 26, 17,148,144,144,176,123,213,170, 85, 97,161,161,161, 56,127,254, 60,250,246,237,123, 70,171,
+213,214, 42,171,184,171,213,234, 45,169,169,169, 29,101, 50, 25,246,239,223,143, 65,131, 6,177,233, 29, 24, 30,183,252, 29, 1,
+224,189, 26, 53,106,188, 60,124,248,112, 62, 62, 62, 30,183,111,223,198,159,127,254,137,138, 21, 43,226,214,173, 91,216,190,125,
+187, 41, 35, 35, 99, 46,128, 25,148,210,188,199,254,165, 60,200, 21,171,193, 86, 54,103,156,140,147,113,222,125,221,230,179,103,
+207, 82, 17, 54,155,141,222,190,125,155,110,217,178,133, 70, 69, 69,157, 1, 16,224,142, 19, 64, 64,245,234,213,207, 95,184,112,
+129,222,188,121,147,154,205,102, 7,199,249,243,231, 41,128,157,247, 27, 78, 0, 85, 98, 99, 99,211,119,236,216, 65, 47, 92,184,
+ 64,163,162,162,110,149,101,220, 19, 18, 18,210, 51, 50, 50,232,159,127,254, 73,195,195,195,211, 1, 84, 97,105,137,113, 62,142,
+156,246,134,212,178, 6, 13, 26,216,230,207,159, 79, 95,126,249,101, 26, 31, 31,111, 3,240, 13,128,216, 7,169, 61, 30,181,141,
+141, 58,100, 96, 96,120,216, 80, 28, 56,112, 0, 10,133,194,113,224,228,201,147,206,243,104,229,123,104, 20,230, 19, 66,154,119,
+233,210,101,247,252,249,243,171, 91, 44, 14,215, 14,236,216,177, 3, 0,140,101,208,240,188, 72, 8,105,213,185,115,231,121,161,
+161,161,117, 83, 83, 83, 39,150,101,196,175, 95,191,254, 70,237,218,181,167, 21, 20, 20,228,151,166,107,147,129,225, 95,104,196,
+185, 14, 96, 48, 33,228,227,163, 71,143,190, 11,128, 2,152, 74, 41, 61,247, 95,123, 23, 76,104, 49, 48, 48, 60,108, 12,125,225,
+133, 23, 92,157,197,125,154, 25,222,238, 56,223,172,107,215,174,174, 51,195,123,116, 78,191, 23,177, 5,160,211, 3,170,124,126,
+ 4,240, 35, 75, 2, 12,255, 33,193,117, 6, 64,255,255,242, 59, 96, 66,139,129,129,225, 97, 23,188, 55, 0, 60,127, 31,247,231,
+195,253, 60, 91, 12, 12, 12, 12,143, 28,216,162,210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, 48, 48,252,
+187, 64, 0,116,112,119,130, 82,186,205,103, 18, 66, 58,148,246,193,222,248, 25, 39,227,100,156,140,147,113, 50, 78,198,249,248,
+113,122,227, 46,141,254,248, 87,192,199, 97,156,132, 13,125,101,156,140,147,113, 50, 78,198,233, 11,167,189, 17, 79, 80,212,107,
+194,137,251,143,248,116, 4,228, 81,141,251,127,133,243, 63, 57,189, 3, 33,196,241,178, 8, 33, 2, 0,129,150,193, 12,167,132,
+ 16,241, 67,148, 9, 31,195, 3, 48,117, 22,125, 35,242,183, 30,103,223,137,129,129,161, 84,101,135,196,169,178,181, 1,176, 17,
+ 66,240,168,149, 37,101, 89,207, 61,136,184,255,151, 57, 31, 23,240, 37,189, 48,137, 68,178, 37, 44, 44,172,109,102,102,166, 96,
+ 63, 14,185, 92, 14,142,227, 32,149, 74,245, 5, 5, 5, 1,247,240, 49,190,137,140,140, 28,154,149,149, 37,112, 28, 7,165, 82,
+ 9, 66,136,131, 51, 55, 55, 55,224,159,126, 41, 9, 9, 9, 57,122,189,222,207,245,184, 82,169, 52,220,184,113,195,255,191, 80,
+ 80,202,100,178,103, 66, 66, 66,130, 50, 50, 50,168,184,248,173, 68, 34, 17, 23,194,181,230,230,230,126,239, 43, 95, 72, 72,200,
+161,144,144,144, 32,241,126, 66, 8,178,178,178,114,211,210,210, 26, 3,128, 74,165,218,171,209,104, 66,121,158,135, 68, 34,129,
+ 68, 34,129, 78,167,203,202,204,204,108,206,170,173,127, 39, 86,175, 94, 45,233, 28,251,124, 69,158,234,235,112, 28, 13, 20, 4,
+146,103, 37,170,147,155,111,127,115,197,151,251,251,244,233, 99, 99,111,241,225, 65,161, 80,204,141,140,140, 28, 94, 88, 88,168,
+ 35,132, 80, 66, 8,138,170, 1,220,245,107,179,217,146, 51, 51, 51, 27,122,169,108,165,114,185,124,118, 84, 84,212, 16,157, 78,
+167,179,243, 81, 66, 8,162,163,163,139,241, 1,128,197, 98, 73,206,200,200,104,232, 75, 88, 35, 34, 34, 22,171, 84,170,255,233,
+116, 58,173, 93, 24, 57,247,208, 56, 87,230,127,101,100,100,180,244, 38, 12,228,114,249,188,200,200,200,231,236,113, 7, 33,132,
+134,135,135,223,119,220, 35, 35, 35,135,104,181,218, 98,113,143,136,136,112,203,233, 41,238,238, 56,157,195, 73, 8, 65,120,120,
+248,125,135,243, 81,228,124,236,133, 22, 0,142, 16,178,174,121,243,230,109,118,238,220,201,157, 63,127,158,171, 86,173, 26,108,
+ 54, 27, 4,161, 40, 93,199,197,197,169,239,161, 2, 95,210,178,101,203, 1,187,118,237,226,214,173, 91,199, 53,106,212, 8,132,
+ 16,216,108, 54,216,108, 54,212,170, 85, 75,117,159, 2,193,143,231,249,215,229,114,121,107,171,213, 90, 29, 0,164, 82,233, 57,
+163,209,184,211,106,181,206,161,148, 22,250,194, 99, 54,155,213,233,233,233,119,189,155,164,164, 36,249,189,134, 45, 32, 32, 96,
+ 31,199,113, 73,142, 23,108, 23, 28,238, 50,179,248, 75, 41,189,154,145,145,209,204, 19,103,112,112,176,131,211, 19,135,235, 49,
+ 65, 16,174,166,167,167, 55,243, 34,178,122,183,108,217, 50,112,219,182,109,228,214,173, 91, 68,165, 82, 65, 16, 4,216,108, 54,
+ 88, 44, 22,212,168, 81,163, 84,211,130, 4, 5, 5, 5,140, 31, 63,190,226, 83, 79, 61,133, 53,107,214,224,217,103,159, 69,139,
+ 22, 45, 46,137,231, 53, 26, 77,232,217,179,103, 43,135,132,132, 64,167,211, 33, 47, 47, 15, 29, 59,118,252,215,103,174, 38,245,
+203, 77, 37, 28,113,204, 21, 69,173,182,236, 3, 39,110,191,119,191,188, 65, 65, 65,199,228,114,121,164,248, 93, 57,142,115,251,
+173,157,143, 25, 12,134,180,204,204,204,250, 94,242, 79, 2,128,238, 18,137,164, 18,207,243, 85, 1, 36, 88,173,214, 72, 0,144,
+201,100,105, 18,137,228,186,197, 98,185, 96, 50,153, 46, 3,248,213, 62, 33,161, 91,116,142,125,190, 34,177,234,250, 20, 24,133,
+ 46,234, 10, 51,170,232,254, 26,127, 81,173,208,253,214, 57,246,249,213,190,138,173,127,176,161, 81, 5,192, 74, 20, 45, 40,253,
+178,125, 30,160,251,225,139, 5,208, 3, 64, 21,153, 76,150,104, 54,155, 51, 1, 28, 5,176,141, 82,122,137, 16, 18, 31, 30, 30,
+254,163, 32, 8,198,172,172,172,231,221, 45, 35,212,180, 97,249, 35, 28,199,197,193, 46, 35, 4,106, 75,222,127,228, 86,153, 84,
+ 80, 18,137,100,222,211, 79, 63,253,220,234,213,171,213, 71,143, 30, 85, 87,175, 94,221, 81, 62, 9,130, 0, 87, 67, 68, 98, 98,
+137,107,127, 19, 0, 60,199,113,115,251,244,233, 51,112,217,178,101,234, 27, 55,110,168, 99, 98, 98, 28,156,206, 34, 78, 68, 76,
+ 76,140, 79, 97, 13, 13, 13,253,230,169,167,158, 26,188,116,233, 82,233,250,245,235, 85, 97, 97, 97, 8, 13, 13,133, 76, 38,187,
+235,218,230,205,155, 11, 94,232, 56,142,227,230,245,236,217,115,240,138, 21, 43,212, 7, 15, 30, 84,215,170, 85, 11, 18,137,228,
+190,227,222,171, 87,175,129, 63,253,244,147,250,212,169, 83,234, 74,149, 42,129,227, 56,112, 28,119, 23, 31,199,113, 40, 87,174,
+156, 79,156, 61,122,244, 24,184,114,229, 74,245,177, 99,199,212, 85,171, 86,117,188, 79,167,110,187, 82,135,243, 17,231,124,124,
+133,150,221,140,186,172,121,243,230,157,119,238,220, 41, 1,128, 99,199,142, 33, 59, 59, 27,177,177,177,240,243,243,131, 66,161,
+128,193, 96,160,165, 44,108,190,177,139, 44, 41, 0,172,253, 95, 47, 92,149, 2,175,164,155, 32,147,201,240,215, 95,127, 65, 34,
+145,208,251, 40,204, 90, 5, 4, 4, 44,253,249,231,159,131,235,215,175,207,101,102,102, 34, 49, 49, 17,217,217,217,141,119,237,
+218,213,224,249,231,159,127,158, 16,242, 44,165,116,151,175,156,191,253,246, 27, 52, 26, 13,212,106, 53, 52, 26, 13, 76, 38, 19,
+185,231, 23,205,243,113,215,175, 95,143,240,243,243,131, 32, 8,142,205,165,127,219, 1, 65, 16, 80,185,114,101,179,151, 2, 50,
+238,198,141, 27, 17, 42,149, 10,148,210, 98,124, 54,155, 13, 10,133,194,185,229, 0,155,205,134,164,164, 36,179, 55, 75,150, 40,
+178, 0, 96,249,242,229,136,138,138, 66, 68, 68, 4, 52, 26, 13, 84, 42, 85,177,138,221,199,130, 28,157, 59,119,198,135, 31,126,
+136, 25, 51,102, 96,236,216,177,197, 10, 90,169, 84,138,144,144, 16,108,218,180, 9, 1, 1, 1,136,143,143,135, 84, 42,253,247,
+ 91, 6, 57, 18,178,255,200, 77,135,133,246,201,118,213,248, 38, 13,226, 23,218,191, 48, 56, 14, 16,132,162,170,147, 16, 80,171,
+ 69,200, 57,124,242,246, 68, 31,222,103,204,141, 27, 55, 34,156,103, 86, 47, 9, 54,155, 13,177,177,177, 18, 47,249,167, 75,205,
+154, 53,215,142, 28, 57, 82, 86,169, 82, 37, 34,147,201,192,243, 60,120,158, 23,211, 99, 60,165, 52, 94, 16,132, 54,105,105,105,
+116,193,130, 5, 31, 19, 66,158,166,148,254,230, 54,189, 83,125,157, 2,163,208,101,247,113, 52,238,211,225,109,108, 90, 53,190,
+113,203,122, 2,252,213,250, 43, 0, 30, 89,161, 69, 8,169, 82,179,102,205,227, 7, 15, 30, 84,154,205,102, 52,105,210,228, 0,
+ 33,164,193,189,204,224, 78, 8, 9, 6,240,233,132, 9, 19, 6,143, 28, 57, 82, 18, 20, 20, 4,185, 92,142,130,130, 2, 92,185,
+114,101,200,247,223,127, 79, 9, 33,159, 3,240,191,126,253,122,211, 67,135, 14,161,109,219,182,175, 2,120,253,110, 69, 32,137,
+219,123,232, 90,132,184,223,163,115,109, 89,179, 70,241,105, 69, 13, 50,215,171, 41, 4,155,144,124,240,120,114, 67, 31,194,248,
+241, 51,207, 60, 51,104,245,234,213,126, 0,176,104,209, 34, 60,243,204, 51, 8, 9, 9,129, 90,173,134, 76, 38,131, 84, 42, 45,
+246,235,197, 66, 36, 1,240,113,255,254,253,251, 44, 91,182,204, 31, 0,150, 45, 91,134, 94,189,122, 33, 52, 52, 20,254,254,254,
+144,203,229,144, 72, 36,165,254, 54,161,161,161,223,180,104,220,120,216,210,165, 75, 1, 0,239,190,246, 26,158,122,226, 9,248,
+169, 85, 80,171,228, 16,223,133, 92, 34,197,147,175,140,241, 22,111, 14,192,172,103,158,121,166,223,138, 21, 43,252, 1,224,232,
+209,163, 72, 79, 79, 71,100,100, 36, 84, 42, 21,228,114,185, 35,206,132, 16,168, 84, 42,159,226,254,204, 51,207,244,249,233,167,
+159,252, 1, 96,201,146, 37,232,220,185,179, 35,238, 10,133, 2, 50,153,172,216,230, 42, 58,221,113, 62,253,244,211,125, 86,174,
+ 92,233, 15, 0,223,127,255, 61, 58,116,232,128,224,224, 96,199,251, 20,185, 74,243,141, 30,101,206,199, 90,104,137,190, 83,145,
+145,145,253,118,239,222,205, 57,137, 4, 40, 20, 10, 40, 20, 10,200,229,114, 71,247, 97, 41, 10, 28, 18, 25, 25, 57,116,215,174,
+ 93,142,155, 76,244, 46,211,117,169, 43,112, 39,254, 14,109,219,182,253,105,195,134, 13, 74,153, 76, 6,189, 94,143, 51,103,206,
+ 32, 48, 48, 16,114,185, 28, 61,123,246,148, 52,111,222, 60,180, 77,155, 54,107, 8, 33, 3,125, 25,209, 64, 41,133,159,159, 95,
+ 49,161,117,191, 93,204, 42,149, 10,235,215,175,135, 68, 34,113, 91,128, 57,255,143,136,136,240, 37,222, 80, 40, 20,216,183,111,
+ 31, 36, 18, 9,164, 82, 41,120,158,135, 84, 42,197,198,141, 27,241,230,155,111, 34, 51, 51, 19,132, 16, 72,165, 82,248,251,123,
+237,245, 36, 33, 33, 33, 65,162,200, 18, 69,144, 74,165,130, 84, 42, 37, 60,207, 19,177,107,143, 16, 66,124,237,115,231, 56, 14,
+ 63,252,240, 3,102,206,156,137,113,227,198, 97,241,226,197,168, 83,167,142,179, 8, 69,126,126, 62,130,131,131, 17, 28, 28, 12,
+165, 82,121,207,105,225, 81,130,235,219,153, 61,103,190, 26, 2, 69,145, 19,136, 0, 8, 0, 5,133, 64, 5,164,221,190,130, 15,
+ 62,252,196,231,218, 71,161, 80, 96,239,222,189, 14, 49,196,243, 60, 8, 33,112, 22, 72,226, 22, 21, 21,229,149, 79, 38,147, 77,
+250,229,151, 95,228, 63,252,240, 3, 86,172, 88,225, 72, 91, 26,141, 6, 65, 65, 65, 8, 13, 13,117,108,113,113,113,228,219,111,
+191,149,213,169, 83,103, 18,128,223,220,127,115, 26,168,174, 48,163, 74,159, 14,111, 3, 0,250,188, 77,145,115,233,163,186, 92,
+238,196,192, 71, 89,100,213,174, 93,123,207,190,125,251,148, 58,157, 14,130, 32,224,183,223,126, 83,119,232,208, 97, 55, 33,164,
+101,105,197, 86, 66, 66,194,250,125,251,246, 53, 15, 15, 15, 71, 94, 94, 30,242,243,243, 97,177, 88, 32,145, 72, 16, 31, 31,143,
+143, 63,254,152,244,236,217,115,244,144, 33, 67, 12, 42,149, 74,180,108, 36,120, 42,143,156,177,224,179,133, 65,148, 22,165, 31,
+ 42,208, 98,191,217,233,215,241,218, 27, 31,248, 20,198,114,229,202,189,188,102,205, 26, 63,103,203,146,179, 8,112, 46,163,196,
+205,147, 48,176, 91, 53,184,242,229,203, 15,251,241,199, 31, 29,156, 97, 97, 97,142,114,137,231,121,112, 28,135,221,187,119, 99,
+250,164, 9, 8, 14,143,193,252,207, 22,121, 13,103, 68, 68,196,226, 46, 93,186,252,111,201,146, 37,142, 99,181, 43, 84, 64,215,
+230, 79, 32, 34, 44, 0, 97,193, 69,101, 27, 21, 8, 78, 94,184,230,181, 62, 2,192,149, 43, 87,238,249, 85,171, 86,249, 57, 55,
+ 8,197,184, 2,128, 78,167,115, 88,241, 77, 38, 19, 26, 54,108,232, 83,220,157, 57, 69,107,155, 40,218, 92,203,122,177, 33, 83,
+ 18,103,185,114,229,134,137, 66, 24, 0, 66, 66, 66,138,113, 72,165, 82,172,218,180,244,174,186,225,126, 57, 75,251,221, 93, 57,
+175, 95,191,142,105,211,166, 57,202, 36,209,170, 71, 8, 65,108,108, 44,230,207,159, 95, 18,167, 59, 52, 2, 16,238,180,111, 2,
+ 32,119,250,205, 64,209, 10, 19,174,215,137,199,165, 0,234,218,207,217, 0, 20, 0, 8,114,195,231,137, 39, 19, 69,203, 8,133,
+187, 92,239,250, 28,247, 66,107,227,198,141, 20, 0,214,175, 95,223,182, 71,143, 30,123, 51, 51, 51,133,243,231,207,115, 71,143,
+ 30,133, 84, 42, 69, 68, 68, 4, 26, 53,106, 36,118,171, 65, 42,149, 66,163,209,144,160,160,160, 52,177,226, 21, 95,162,115, 95,
+187,147,160,225,178,179,179,133,173, 91,183,114,203,158,238, 4, 19, 5,234,189, 63, 29,157,187,117,195,230, 88, 57, 36, 0, 26,
+159,207,132, 90,173,230,165, 82,169, 69,252, 24, 34,167,179,239,150,171, 72, 34,132,248,107, 52,154,111,127,253,245, 87, 37,199,
+113, 40, 40, 40,128, 32, 8,104,222,188, 57, 56,142,195,233,211,167,241,238,187,239, 98,237,218,181,248,229,151, 95, 84,245,235,
+215,255,150, 16, 82,157, 82, 90,224, 84,136,109,115,151, 72,253,253,253,161, 86,171, 29, 66, 75,140,179,179, 9, 92,188,158, 82,
+122, 59, 51, 51,179, 65, 73,156, 54,155, 13,189,122,245, 2, 33, 4, 18,137,164, 88,225,227,252, 43,147,201,112,250,244,233,187,
+ 18,161, 59,129, 40, 8, 2, 90,180,104, 1, 0, 80,171,213,240,243,243, 19,215,125, 3, 0,212,171, 87, 15, 38,147, 9, 97, 97,
+ 97, 56,119,238,156,187, 2,188, 24,103, 70, 70, 6, 77, 73, 73, 33,203,150, 45,131, 84, 42, 69,104,104, 40,212,106, 53, 89,186,
+116,233, 4,153, 76, 22,103, 48, 24, 4,147,201, 4,185, 92, 62, 95,180,110,241, 60,175,205,203,203, 11,245,196, 41,145, 72, 48,
+114,228, 72,188,245,214, 91, 88,188,120, 49, 94,122,233,165,187, 44, 94, 6,131, 1, 97, 97, 97, 14,177,229, 75,220,239, 95, 8,
+ 61, 96, 78,129,226,204,177,205, 56,123,106, 27, 4,155, 0,155, 64, 65,169, 13,130, 21, 56,186,245, 64,229, 59, 87, 83, 98, 41,
+ 40, 96,239,224, 80,228, 21, 90,219,132, 41,170, 2, 88,183, 35,211, 56,215, 91,250,228,121, 30, 22,139, 5,191,254,250, 43,174,
+ 92,185,130, 45, 91,182, 64,175,215, 59,222, 99,211,166, 77, 49,108,216, 48,183, 66,203,149,147, 82,186,228,214,173, 91,245, 90,
+180,104, 65,114,115,115,145,155,155, 11,189, 94, 15,155,205, 6,171,213, 10,158,231,161, 84, 42,161, 82,169, 16, 25, 25, 9,131,
+193, 64,141, 70,227, 18, 79,156,130, 64,242,116,127,141,191,184,105,213,248,198,125,222,166, 88, 61,147,160, 98,121,133,238,143,
+ 35,254,195,214,237, 25,219, 17, 0, 21,236,218,129, 3,168,197, 38,100,190, 53,225,211,209, 15,253, 27,221, 45,178, 66,245,122,
+ 61, 10, 10,138,138, 7,185, 92,142,213,171, 87,135,117,239,222,125, 23, 33,164,149, 39,177,229,142,211,223,223, 63, 94, 34,145,
+224,244,233,211,248,226,139, 47,240,199, 31,127, 32, 45, 45, 45, 39, 38, 38, 38,176, 77,155, 54,220,107,175,189,134,122,245,234,
+225,187,239,190, 83,122,227,164,148,226,250,165,221,184,126,121, 15, 4,129, 58, 89,197,221,255,167, 62,198, 93,171,213, 26,142,
+ 31, 63,238,247,245,215, 95, 35, 34, 34, 2,137,137,137, 80,171,213, 80, 42,149,197, 42, 89,231,138,215, 91,222,212,235,245,134,
+235,215,175,251,253,244,211, 79, 8, 13, 13, 69, 66, 66, 2,212,106, 53,228,114,185,163, 65,176,108,217, 50, 44,255,112, 16,174,
+ 95, 56,133, 94, 93, 59,122, 13,167, 90,173,254,223,146, 37, 75,138,153, 64, 34,131,131,193, 75, 57, 72,164, 4,193,237,159, 6,
+ 0,228,252,249,179,199,217, 33, 93, 56, 73, 65, 65,129,225,224,193,131,126, 71,142, 28,129, 32, 8, 72, 72, 72,128, 78,167, 67,
+ 64, 64,128, 35,254, 91,183,110, 69,207,158, 61,241,195, 15, 63,160,105,211,166, 94,227, 94, 88, 88,104, 56,117,234,148,223,143,
+ 63,254,136,144,144, 16,148, 43, 87,206, 17,119,113,147, 74,165,144, 72, 36, 72, 74, 74, 66, 94, 94, 30,252,252,252,188,126,163,
+163, 71,143,250,253,248,227,143, 8, 14, 14, 70, 92, 92,156,195,226, 38,138,163,153, 11, 63, 44,198,161, 36,209,247,205, 89,218,
+239,238,202,217,171, 87, 47, 84,172, 88, 17, 1, 1, 1,208,104, 52, 14,238,146, 56, 69, 45, 2,160, 77,215,174, 93,119,186,124,
+194,112, 66,200, 6,167,231,119, 35,132,108,112,254,245,116,157,253,111,171, 9, 19, 38, 52,156, 49, 99,198,180,166, 77,155,254,
+180,111,223,190,229,158,248, 60,241, 76,152, 48,161,230,140, 25, 51,166, 57, 95,239,230, 57,158, 45, 90, 93,187,118, 37,246, 72,
+242, 0, 80,173, 90, 53,100,103,103, 67,161, 80,160, 81,163, 70,200,204,204,132,159,159, 31,100, 50, 25, 40,165, 24, 61,122,180,
+100,236,216,177, 17, 28,199,193,106,181, 58, 10,126, 15,125,237, 2,199,113,104,214,172, 25,206,216,123,132, 58,119,235,134,184,
+184, 56,136, 78, 30, 74,165, 18,163, 71,143, 38,111,190,249, 38, 47, 90, 51, 40,165,208,235,245,136,142,142, 86,149,208, 37,247,
+218,154, 53,107, 2, 69,147,188,216,117, 38,145, 72,112,254,252,121,204,154, 53, 11, 67,134, 12,193,205,155, 55, 17, 19, 19,131,
+183,222,122,203,111,198,140, 25,175, 1,152,236,173, 64,246,243,243,115,136, 44,181, 90,141,215, 94,123,141,111,222,188,121,132,
+159,159, 31,252,253,253, 33,118, 3,218,108, 54, 84,168, 80,193,171, 52, 23, 4, 1,155, 55,111, 6,207,243, 94, 45, 90,246, 4,
+232, 19,231,193,131, 7, 29, 34,205,185,149, 68, 8,193,153, 51,103, 28,162,206, 7, 78,202,113, 28, 52, 26, 13,162,162,162,160,
+ 82,169,160, 86,171,201, 79, 63,253,244, 94, 98, 98, 98,244,155,111,190,201,229,231,231,115,205,154, 53,195, 51,207, 60,195, 11,
+130, 0,179,217,140,154, 53,107,122,181,188,237,220,185, 19, 95,124,241, 5, 94,122,233, 37,183, 22, 45,209, 89, 50, 32,224, 31,
+ 31, 11, 81,102, 16, 0,152,173, 22,232, 10,245,142,174, 93,155,205,134, 83, 59, 78, 84,190,122,226, 82,205, 13, 63,253, 32, 5,
+ 0,195,142,159,157,111,139,126,102,225,202, 42,109, 66,100, 7,119,100,155, 15,122,179, 20,142, 25, 51, 6, 19, 39, 78, 68,255,
+254,253,177,117,235, 86,188,251,238,187,120,254,249,231,139, 89,180,124,129,197, 98,249,242,217,103,159,125,105,245,234,213, 85,
+223,126,251,109, 78,180,104,169,213,106,209,199, 11, 70,163, 17,122,189, 30, 23, 46, 92, 16, 94,120,225,133,139, 38,147,233, 75,
+ 79,124, 86,162, 58,169, 86,232,126,171, 16,199, 85,212, 94,251,196,191,197, 19, 9,122,162,106,144,247,116,149, 14,180,203,208,
+132, 96, 80, 10, 42, 0, 2, 5,140, 70, 45, 70,143,126, 85,242, 79,125, 39,103,145,101, 48, 24,112,252,248,113,180,109,219, 22,
+183,110,221,194,185,115,231, 80,185,114,101, 44, 93,186, 52,124,224,192,129, 37,138, 45, 87,156, 58,117,106, 66,221,186,117,231,
+ 21, 22, 22,102, 23, 22, 22,206, 3,176,156, 82,154, 75, 8,169,126,229,202,149, 5,155, 55,111,110,249,193, 7, 31, 72, 92,124,
+116, 36,158,204,163, 22,139, 21,122,189,177, 68,129, 37,238, 83, 42,248, 26,119, 90,181,106, 85,116,239,222, 29, 82,169,212,209,
+ 88,115,238, 54,115, 21, 92, 37,149, 31, 0, 4, 66, 8, 98, 98, 98,208,165, 75, 23,200,100,178, 98,156, 98,197,218,165, 75, 23,
+140,153,252, 62,190, 28,211, 14, 95, 60, 91, 25, 29,166,166,149, 24, 78,157, 78, 87,184,125,251,118,213, 91, 47,189,132,186,149,
+ 42, 33, 44, 32, 0,229, 35,195,161, 82,200, 33,115, 14, 19,241,110,100,167,148, 82, 66,136, 32,145, 72, 80,171, 86, 45,164,165,
+165,225,218,181,107,184,118,237, 26, 56,142, 67,139, 22, 45, 28, 86,152,203,151, 47, 99,242,228,201, 48, 26,141, 62,199,189, 82,
+165, 74,104,215,174, 29,228,114, 57,212,106,117,177, 46, 67,241,157, 22, 20, 20,160, 98,197,138, 88,183,110, 29,170, 84,169,226,
+149,179, 90,181,106,104,221,186,117,177,247,169, 82,169, 28,245, 6, 0,220, 58, 88,232,120, 70,108,108,108,169, 56,183, 28,186,
+137,175,183,110,135,209, 36, 32, 95,103, 41,118, 67,116, 88, 0,246,252,248,182, 79,113, 23, 57,191,250,234, 43,228,230,230, 58,
+202, 32,209,104, 34, 26, 41,202,149, 43,135, 69,139,220, 91, 50,157,180, 8,241,240,253,186,249,216,160, 18,175, 19, 19,151, 98,
+198,140, 25,211, 92,239,247,198,231,124,222,229,126,147,139, 56, 75,243,169,235, 80,172, 31,196,204, 16, 27, 27, 11,209, 15, 68,
+204, 40,142,130,212,106,197,218,181,107, 17, 17, 17,225,216, 2, 3, 3, 61, 38,108,209,143,104, 76, 70,145,139,208,166, 24, 25,
+174, 3,232,154, 65, 29,126, 36, 54,155, 13,107,214,172,129,179,144,241,247,247, 47,177, 27, 73, 46,151,183,105,212,168, 17,103,
+ 52, 26,239, 18, 89, 51,102,204,192,192,129, 3, 81,165, 74, 21, 8,130,128,194,194, 66,180,109,219, 86, 58,127,254,252, 54,165,
+ 17, 90,106,117,145,223,191,201,100,194,142, 29, 59, 16, 28, 28,140,208,208, 80,132,132,132,192,223,223, 95, 28, 57, 73,189,137,
+ 13, 74, 41,122,245,234,229, 72,124,206, 86, 44, 87,209,181,111,223, 62,159,186,228, 40,165,120,226,137, 39,160,209,104,224,231,
+231, 7, 63, 63, 63,108,222,188,217,113, 77,227,198,141, 33, 8, 2, 34, 34, 34,176,127,255,254, 18,187, 63, 41,165, 84, 38,147,
+ 57,174,151, 74,165,100,233,210,165, 19,146,146,146,162,223,120,227, 13, 78, 34,145,224,216,177, 99, 56,123,246, 44, 18, 18, 18,
+124,246,217,202,205,205,189, 51, 97,194, 4,219,132, 9, 19, 0, 0, 53,107,214, 68,110,110,110,186,120, 62, 63, 63, 63,171, 83,
+167, 78,197,252, 54, 50, 51, 51,179,254,245, 66, 75, 16, 96, 53, 91,161, 51, 24, 80, 88,160,115, 88,135,210, 83,210,130,222,126,
+243,117,233,172,209,207, 1, 0,222,156,251, 25, 10, 22,255, 93,144,253,252,230,128,136,167, 63, 93, 49, 30, 64, 79, 47,149, 15,
+140, 70, 35,226,227,227,113,232,208, 33, 20, 20, 20,160, 67,135, 14,197, 44,166,226, 59,245,102,162,167,148,154, 8, 33,205,187,
+117,235,118,120,206,156, 57, 21,170, 87,175, 78,180, 90, 45,116, 58, 29,156,127, 79,157, 58, 69,151, 47, 95,126, 85,167,211, 53,
+163,148,154, 60,241,109,190,253,205,149,206,177,207,175,254,227,152,164, 91, 68,197,139, 1,183,115, 42, 88,179,110, 43,180,249,
+250, 11, 6, 27, 61, 11,106, 3,108, 16, 64,173, 2,108,246,110,175,127, 10, 42,149,106,193,158, 61,123, 66, 13, 6, 3,142, 30,
+ 61,138,193,131, 7,155, 50, 51, 51,229, 0,240,191,255,253,207,180,108,217, 50,121,197,138, 21,177,116,233,210,240,103,158,121,
+102, 21,128, 90, 62, 22,244, 63, 0,248,193,245,120,104,104,232,252,155, 55,111,182,113,246,249, 17, 27,171, 0,220, 54, 42,169,
+ 0, 88, 44, 22,232,245, 70,228,229, 21,192,100,182,216,203, 76, 1, 54,155,213,254, 43,192,106, 47, 71,229, 50,222,191, 65,237,
+232, 66, 74, 41, 56, 66,114,143,156,186, 83,206, 83,185,228,169,139,203, 23,107,150, 27,216,196, 81,102,161,161,161,144, 74,165,
+248,225,135, 31,112,114,239,102,200, 37, 20, 54,171, 5, 86,139, 25, 54,139, 9, 82,137, 4,127, 28,187,134,142,213,188, 15,228,
+ 38,132,208,176,176, 48,116,109,218, 20,221,154, 54, 45, 26,222,198,243,240, 83, 40,160,150, 41,139, 44, 89, 0,168,141, 3,124,
+ 75, 74,130, 24,206,200,200, 72, 28, 57,114, 4, 99,198,140,193,204,153, 51,161, 82,169, 28,163,159,207,159, 63,143,149, 43, 87,
+162, 99,199,142,165,142,187,104,193, 27, 63,126, 60, 82, 82, 82, 48,119,238, 92, 52,104,208, 0, 82,169, 20,185,185,185,104,214,
+172, 25,210,210,210,124,226,116,238,222,147,203,229,197,172, 79,162, 0, 44,237, 55,114,230,124,174, 87, 52,214,239, 93, 14, 2,
+130, 3, 63,190, 94,172, 46, 90,180, 98,119,169, 57, 39, 78,156, 88, 44,156,190, 88,179, 74,209, 48,218,224,139,216,114,186,238,
+168,104,108, 29, 63,126,252, 59,132,144, 13,227,199,143,127,103,250,244,233,103,124,225,243,112,126,163,168, 11,157,142, 29,245,
+ 89,104, 81, 74,169, 92, 46,135, 32, 8,197,196,149,171,227,173,104, 10,116, 54, 53,122, 19, 5,130, 32, 56, 18,133,107,179, 77,
+ 34,145, 96,255,254,253,216,191,127,127,177,227, 95,127,253,117,137, 21,185,213,106,173,238,239,239, 95,204,154, 37,147,201, 48,
+126,252,120, 12, 30, 60,216, 33,178,100, 50, 25,190,255,254,123, 52,108,216, 16, 38,147,169,186, 23,127, 21, 93, 84, 84, 20, 39,
+ 22, 68, 26,141,134,140, 25, 51, 70, 98,181, 90, 29,239, 68,220, 68,223, 53,111,137, 70, 28,197,178,101,203, 22,159, 44, 90,190,
+250, 40, 81, 74,113,226,196,137, 98,226, 77, 28, 53, 3, 0, 39, 78,156,112,248,111,249,194, 41,145, 72, 96,179,217,160, 82,169,
+136, 76, 38, 35, 50,153, 44, 78, 20, 89, 18,137,196,241,189,157,125,246,188,197,253,246,237,219,109, 75, 58,159,158,158,254,216,
+ 78,227, 96,182, 88,160,215,153, 80, 80,168,199,164,233,223, 21, 29,156,132,131, 0, 14, 54,127,121, 12, 70,118,238,216,206,197,
+ 15,192,151,130,198, 81, 57,174, 89,179, 6, 82,169, 20,235,214,173, 67, 64, 64, 0,122,244,232,129,128,128, 0,188,253,246,219,
+232,223,191,191,207, 22, 45,123, 90,202, 35,132, 52,127,237,181,215, 14,127,242,201, 39,229,203,149, 43, 7,147,201, 4,179,217,
+ 12,147,201,132, 43, 87,174, 96,249,242,229,183,116, 58, 93,115, 74,105,158, 55,190,205,183,191,185,178,118,215,155, 41, 29,250,
+ 63,163, 63,159,182, 9,169,169, 89,176, 90,111, 67,176, 89, 97,182, 22,141, 96,182, 89,173,176, 90,109,144,201, 36, 1,159,124,
+244,250, 86, 1, 20, 28, 71, 76,125,250,244,121,234, 97,125,163,160,160,160,154, 25, 25, 25,184,116,233, 18,134, 12, 25,146,154,
+149,149,117, 14, 64,123, 0,200,202,202,218, 51,120,240,224,234, 75,150, 44,137, 74, 76, 76,132,159,159, 95,128, 15,223,199, 15,
+192, 72, 0,157,236,126, 32, 34,178, 1, 76, 9, 15, 15, 87, 28, 61,122,244, 46,235,255,174, 93,187, 0,224,160,123,147,129,221,
+162,101, 48, 32, 35, 43, 7,195, 95,126,207, 97, 74, 0,104, 49,113, 65, 65, 49,226, 21, 40, 1, 32, 51,237, 10,158, 27, 62, 70,
+225,173, 65,224,174, 34, 44,133,143,142,179,165,200,145, 70,253,252,252,138,186,223,214, 45,199,198, 79, 95, 6,108,102, 80,139,
+ 30, 48,235, 0,115, 33, 4,147, 14, 68,166, 2, 44,122,159,132,150,159,159, 31,252, 84, 42, 68, 4, 5, 21, 77, 2, 41,145, 64,
+ 42,229, 33, 88, 0, 98, 35, 14, 65, 42,216,124, 74,235, 52, 44, 44, 12,130, 32, 64,165, 82,225,250,245,235, 24, 57,114, 36,204,
+102, 51,122,245,234, 5,147,201, 4,131,193, 0,189, 94,143,164,164, 36,232,116, 58,159,226, 46,150,243, 98,239,207,235,175,191,
+142,134, 13, 27, 98,242,228,201, 24, 55,110, 28,146,146,146, 48, 98,196, 8, 44, 95,190, 28, 53,107,214, 44,145,215,249,125,138,
+156,226,119,113,237,226, 3, 80,234,111,228,202, 89, 52, 62, 0,119,125,247, 87,159,109, 95,106,206, 25, 51,102, 32, 35, 35,227,
+ 46, 75,150,248, 63, 54, 54, 22, 11, 23, 46,188,215,174,127,209,122, 20,233,206, 32,230,198, 18,213, 8, 69,190, 83,198,233,211,
+167,159,153, 62,125,122, 55, 66,200,134,233,211,167,119, 43,193,162,213,213,139,197,171, 43,138,124,178,124, 2,239,210, 55,218,
+198,217, 82, 34, 86,164, 98,133,238, 92,200,171,213,106,172, 93,187, 22,226, 8, 16,231,107, 74, 18, 90,191,133,219, 77,199,118,
+ 75,150,243,126,247,238,221,145,152,152, 88,204,154,165, 82,169, 74, 76, 60,130, 32,224,198,141, 27, 56,115,230, 12,154, 52,105,
+130,188,188, 60, 72, 57, 14,111,158, 58,133, 26,207, 62, 11,147,221, 66, 35,151,203,241,210, 75, 47,249,228,208,126,237,218,181,
+ 96,231,253,176,176,176,228,150, 45, 91,198, 30, 58,116,200,225, 32,111,239, 86,115, 8, 14, 95, 68, 12,165, 20,189,123,247, 46,
+102,197,114, 22, 89,206,219,166, 77,155,124,234, 58,164,148,162,101,203,150, 14,107,150,191,191, 63,126,249,229, 23,199,183,106,
+213,170, 85,145, 63, 67,100,164, 79,156, 98, 60,236, 14,240, 48, 24, 12, 66, 65, 65, 1,119,244,232, 81,200,229,114,135, 5, 79,
+165, 82, 65,169, 84, 66,161, 80,220,211, 8,162,255, 2, 40, 21, 96,178, 88,160,215,235, 81, 88, 88, 52,179,200,149,211,107,138,
+ 11, 49, 99,254, 61,243,139, 86,171,130,130, 2,252,241,199, 31,248,249,231,159,209,160, 65,131,187,156,225,125,177,104, 57,165,
+167, 12, 66, 72,139,177, 99,199, 30,152, 58,117,106, 76, 72, 72, 8,204,102, 51,110,222,188,137,111,191,253, 54, 69,167,211,181,
+160,148,102,248,254, 18, 0,139,197, 10,131,206,136,188,252, 2,124,248,209,247, 30,147, 30, 0,100,167, 95, 64,247, 30,125,229,
+ 15,243, 59,165,164,164,188,209,162, 69,139,143, 10, 10, 10,114,117, 58, 93, 95, 0,179,156, 13,135, 89, 89, 89, 45,123,244,232,
+ 49, 39, 36, 36,164, 65,122,122,250, 59, 62, 80,142,191,126,253,250, 59,241,241,241,197, 14,218,173,143, 85,210,211,211, 7,181,
+106,213,234,125, 0, 33, 78,167,253, 1,108, 1,176,208, 83, 90, 18,187, 14, 11, 11,245, 8, 8,138,198,237,107, 59,189, 6, 68,
+ 38, 49,128, 10,130,215, 6,160, 59, 43,150,115,249, 84,138,244, 67, 69,159, 64,177,194,126,170,247,179,120,106,228, 12,168,165,
+192,180,231,154, 35, 41, 8,128, 42, 4,178, 86,111,131, 4,217,223,209,200, 95,125,226, 31,247,197, 23, 56,118,169,104,102,152,
+184,240,112,140,237,223, 31,212, 2,236, 59,123, 22, 43,182,111, 71,255,182,109,161, 86, 42,125,110,176,136,141,240, 43, 87,174,
+ 96,223,190,125,168, 86,173, 26, 46, 95,190, 92,108, 26, 10, 74,169, 79,241,167,148, 82,113, 16,147, 66,161,128, 84, 42, 69,106,
+106, 42,186,117,235,230,104,232,239,220,185, 19, 99,199,142,197,176, 97,195,208,166, 77, 27,183,126,179,174,156,225,225,225, 14,
+ 3,130,235, 64, 5,231,238,220,210,124, 35,119,156, 34,238,245,187, 59,115, 78,157, 58,213,237,128, 10, 95, 56,157,181, 72, 9,
+ 56,234, 98, 77,130,232, 47, 37, 10, 35,215,125, 0,193,226,177,241,227,199,191,227,235,125,206,251,162, 69,172, 52, 93,152, 14,
+161,213,181,107, 87,226,174,178, 21,205,200,238,160,209,104, 48,106,212, 40, 76,156, 56, 17, 97, 97, 97, 94,125,107, 68, 37, 91,
+ 18,126,253,245,238,204,182,110,221, 58,111, 93,135,231, 3, 3, 3, 27,182,109,219, 22,121,121,121,184,117,235, 22, 52, 26, 13,
+106,124,250, 41, 78,141, 28,137,186, 95,124, 1,174, 93, 59,199,100,171,167, 78,157,130, 74,165, 58, 95, 90, 11,130,191,191, 63,
+130,131,131, 29,125,238,162,224,114,178,104, 81, 31, 18, 35,126,251,237, 55,183,173,198,123,241,209, 18, 11,129, 3, 7, 14, 20,
+243,207,114, 22, 62, 7, 14, 28,112, 88,180,196,219,124,233,242, 82,169, 84, 84,228, 83,171,213, 8, 9, 9,129, 66,161,128, 74,
+165, 42, 38,178,124,177,230,121,155,144, 84,165, 82, 29,210,104, 52, 65,226,121,169, 84,138,130,130,130,220,172,172,172,198,255,
+234,174, 67, 80, 88,205, 86,232,245, 6, 20, 22,232,203,156, 95, 28,152,178,118,237, 90, 60,241,196, 19,119,137, 44,241, 93,223,
+ 67,139, 49,153, 16,210,102,222,188,121, 7,103,207,158, 29, 92, 88, 88,136,239,190,251, 46,175,176,176,176, 13,165, 52,185, 84,
+ 92, 2,133,197,108,134,206, 96,132,182,176,232, 29,252,117,102,205, 35, 38,136,233,114, 0,203, 93, 45,134, 78,231,255, 2,208,
+173, 20,148, 79,196,199,199, 35, 53, 53,181,216,193, 27, 55,110,192,102,179, 25,237,243,100, 61,239,244, 60, 9,165,212,230,173,
+236, 48,219,187, 14, 11, 11,139,172, 32, 6,109,102,217,164, 83,187,216,240,228,147,117, 47, 93, 60,226, 72,103,137, 68,130,209,
+163, 71,227,212,201,147,104, 31,147,143,164, 40,127,208,252,219,144,181,251, 0, 39, 50, 84,152, 53,231,183, 82,115,175,116, 26,
+236, 51,107,229, 74,183,231,254,234,217,179, 84,113,191,120,241, 34, 84, 42, 21,108, 54,219, 93,245, 77,105,227,239, 44, 96,230,
+204,153,131,177, 99,199,226,251,239,191,199,169, 83,167, 80,183,110, 93,116,232,208, 1,233,233,233, 56,121,242, 36,140, 70,163,
+207,225,116,246,155,187,120,245, 44,182,237,251, 29, 55,146,175, 33, 37,245,214, 61,127,119,103, 78, 87,161,181,118,219,113,244,
+238, 88,255,158, 56, 63,252,240, 67,164,167,167, 23,179,100, 57, 15, 32,243,100,209,114,213, 34, 46,200,116,241,133, 18,247, 77,
+ 46,162,199,117,223,245,122, 0, 72, 7, 32,241,114,159,235,126,230,244,233,211,119,136,150, 48, 59,175,196,155,127,150,219,174,
+ 67, 81, 20,137, 25,197,213, 82, 37,254,215,104, 52,240,247,247,135,191,191, 63, 2, 2, 2,188, 90,138, 68,161,213,242,106, 65,
+ 49, 95, 47,209,178, 5, 0,195,134, 13,187,203,162,229, 60,177,167, 59, 24,141,198,157, 59,119,238,172,215,189,123,119,201,249,
+243,231, 33,145, 72, 32, 8, 2, 76, 77,155,162,238, 23, 95,224,244,235,175,163,245,245,235, 48,152,205, 80, 42,149,216,188,121,
+179, 89,167,211,237, 44,109,185,225, 44,180, 52, 26, 13, 2, 3, 3, 29, 66,195, 23,149, 46,102,222,146,252, 31,196,205,121, 48,
+128, 47,153, 90,172, 80,157,253,114, 8, 33,208,235,245, 14,167, 78, 95,172,142,206, 93,135,206, 25,144,227, 56, 4, 5, 5, 57,
+ 10, 15,209,162,229,171, 53,207,219,132,164,106,181, 58,224,194,133, 11, 21,197,233, 39, 50, 51, 51,209,174, 93,187, 75,255,122,
+147,150, 0,152,173, 54, 20,234, 13, 40,212,235,202,140, 86, 76,107, 63,252,240, 3,174, 92,185, 2,179,217,140,233,211,167,223,
+ 37,176, 74,227, 12,239, 38, 93, 93,169, 95,191,190,240,228,147, 79,226,192,129, 3, 80, 40, 20, 22, 74,105,169,231,191, 18,168,
+ 0,179,213, 10,131, 94,143, 66,173,246,191, 98,204,116,168,234,115,231,206,193,100, 50, 97,242,228,201,182,195,135, 15,239, 0,
+240,178,253, 27,114, 0, 6,181,110,221,122, 74,215,174, 93,131, 8, 33,175, 82, 74,191, 47, 41,159, 91,172,118,209, 94,134,239,
+ 81, 76, 75,158,202,164,123,153,102,197,185, 98, 21, 4, 1, 47,190,240, 2, 58,196,228,227,233, 6,225,208,222,185, 4,117, 96,
+ 56, 72, 80, 2,102,205,249, 13,103,174,250,236,138, 73, 1,224,201,214, 61, 81,167,218,221,211,131,181,104, 95,212, 38,219,243,
+199, 33,164,101,166,148, 58,238, 90,173,214,163,229,202, 87,139,150,200, 41, 78,179, 34,149, 74, 81,175, 94, 61, 84,174, 92, 25,
+ 59,118,236, 64,253,250,245,113,249,242,101, 92,190,124, 25,215,175, 95,199,169, 83,167,144,147,147, 83,234,111,244,203,150, 21,
+200, 41,200,134, 92, 38, 71,118,110, 38,110,220,190,134,200,208,168,251,254,238, 34,170,118,253, 16, 0, 16, 19, 30, 88, 42,161,
+229,204,249,241,199, 31,223, 37,222,203, 96,202,158, 67, 94,246, 75,123,255, 67, 3,239,193, 74,164, 15, 9, 9, 81, 57,247,175,
+114, 28,135,192,192, 64, 50,115,230, 76, 9,199,113,240,247,247, 71, 96, 96, 32, 68,115,161, 55,200,229,114,125, 66, 66,130, 74,
+ 76,136, 98, 70, 12, 8, 8,144,204,156, 57,147,124,253,245,215, 30,173, 92, 94,124,180,102, 15, 30, 60,248,249,228,228,228,224,
+136,136, 8,220,185,115, 7,114,185,188, 40,115,180,109,139,150, 87,175,194, 92,228,115,132,139, 23, 47,226,203, 47,191,212, 26,
+141,198,217,165,125, 81,126,126,126, 8, 13, 13,117,116, 25,138, 22, 29, 39,209,232,147, 11,102, 73, 38,122,177, 5,120, 47, 93,
+ 72,174, 98,235,229,151, 95, 46, 38,186,124,133, 76, 38,179,138, 51,191,115, 28, 7,179,217,140,250,245,235, 35, 61, 61,221,145,
+105,156, 45,121,190, 8, 45,111, 19,146,242, 60, 15,147,201,132, 86,173, 90,129, 16,130,207, 62,251,236,241,232,142, 20, 4,226,
+231, 23,138,152,152, 42, 8,143, 48, 64, 16,202,110, 85, 25,171,213,138, 17, 35, 70, 20,179, 96,137, 35, 27,197,174,127, 74, 41,
+ 44, 22,203, 61, 79,254, 42,230,235,251,153, 63,142, 2,142, 46, 47,173,214,240,175,251,132, 17, 17, 17, 77, 8, 33,235, 92, 14,
+103, 3,152,226,110, 6,119, 59, 28, 31,250,214,173, 91,232,220,185, 51,126,255,253,119,201,207, 63,255,220,126,253,250,245,103,
+ 43, 86,172,120,171, 95,191,126,229, 94,122,233, 37, 69,171, 86,173,144,153,153,137, 6, 13, 26, 76, 2, 80,130,208,178,191, 71,
+131, 17, 90,109,217, 91, 71, 75,106,240,221,143,128,155, 56,241,125,116,136,206, 69,175,186,129, 88,178, 97, 47, 6,213, 83, 1,
+ 38, 69,169,249,196,176,132,196, 36, 34,161,102,147,187,206, 43, 2,138,186,236, 18,106, 54, 1,119,235,114,169,227,238, 28,102,
+215,242,242, 94, 44,122,206,239,115,248,240,225,120,251,237,183,209,169, 83, 39, 92,190,124, 25,187,118,237,194,229,203,151, 49,
+102,204, 24,212,172, 89, 19,117,235,214, 45, 21,231,250,109,171,145, 95,152, 7,142,112,200,206,203,130,193,168,199,184, 17, 19,
+239,251,187,139,184,182,109, 58, 0, 96,205,214, 99,247,204,249,238,187,239, 34, 53, 53,181,152, 37,235,126,252,178,254,237,112,
+ 43,180,178,178,178,220,246, 3,134,135,135,167,117,236,216, 49,226,206,157, 59,240,243,243,243, 42,178, 8, 33, 29,196,185, 54,
+ 82, 83, 83,221,114,250,251,251,155, 59,118,236, 40,141,142,142, 46, 54,218, 80,163,209,220,149,201, 92, 57,237,149, 64, 1, 33,
+228,197,230,205,155, 47,217,180,105,147,186,114,229,202,200,207,207, 7,165, 20,223,127,255, 61, 70,143, 30, 13,165, 82,137,139,
+ 23, 47,162, 71,143, 30, 58,157, 78,247,162,243, 28, 90,238, 56, 61,181,208,196, 89,241,221,136,172, 18,227,238,156, 89,231,205,
+155,135,105,211,166,225,157,119, 74,118,245, 88,188,120, 49,224,210,205,231,142,147, 82,138, 89,179,102,149, 25,103, 86, 86,214,
+247, 46,214,168,207,158,126,250,105,254,214,173, 91,197,196,149,243,230,166, 96, 42,198,233,109, 66, 82,137, 68,130,200,200, 72,
+ 76,157, 58, 21,161,161,161,136,138,138,186,203, 18,227,237, 27,221, 99,101,240, 64, 57,109, 84, 56,250,201,140,247, 91,124,183,
+108,189, 84, 33, 7,246,239, 90,131,252,156,226,221, 73, 70,243,223, 67,169,229,245,219,195,116,236, 15,159,194,105, 52, 26,241,
+241,199, 31,227,195, 15, 63,196,135, 31,126,232,203,119,191,175,184,251, 34,182,220,114, 10,148,168, 53,193, 80,106, 98, 80,163,
+102, 48, 4,106,125,164,190,145, 7, 28, 62,116,232, 80,143,208,208, 80, 36, 39, 39,135, 75,165,210, 30,197,204, 85,122, 61, 18,
+ 18, 18,170, 0,104,230,141,115,204,152, 49,198,247,222,123, 79, 49, 96,192, 0, 60,253,244,211, 24, 48, 96,128, 66, 38,147, 85,
+162,148,194,108, 54, 35, 57, 57, 25,127,252,241, 7, 50, 50, 50,206,151, 20, 78,129, 82,162, 82, 7, 65,169,137, 70,141, 90, 65,
+ 16, 4,107,153,196, 93,172, 4, 93,173, 89,165,156,144,218,109, 89, 7, 0,135,255, 88,135,137,175,215,194,247, 27, 15, 98,254,
+ 33,160, 78, 80, 58,106,132,103, 64,200, 56,143,183, 6, 53,196,172, 31,143, 0, 0,118,237,244,250,141, 74,156, 31,217,160, 55,
+223, 87,220,157, 45, 87,206,207,241,230,163,229,142, 83,108, 36, 22, 20, 20, 32, 55, 55, 23, 75,150, 44,193,115,207, 61,135,244,
+244,116, 92,191,126, 29,151, 46, 93,194, 79, 63,253,228, 24,205, 94,218,111,244,230, 11,239,226,189, 89,111,128,130,162,106,197,
+ 26, 24, 63,242, 67, 52,170,211,244,190,191,187, 43,188, 89,179, 74,226,156, 59,119,238, 61,165,165,255,148,208, 42,169, 85,193,
+113, 28,194,194,194, 28,137,196, 57, 1,222, 75,203, 87, 34,145,192,106,181, 58,124,127,196, 13, 0,186,119,239,142, 95,127,253,
+213,151,145, 20,155, 8, 33,255,171, 94,189,250,183,147, 38, 77,242,107,221,186, 53, 31, 19, 19,131, 70,141, 26,225,226,197,139,
+216,184,113,163,101,225,194,133, 90,157, 78, 55,140, 82,186,245, 94,202, 39,113, 73, 27,231,173, 52,173, 30,179,217,124,235,242,
+229,203,209,179,102,205,146,112, 28,135,185,115,231, 58, 50,165, 56,225,171, 51,118,237,218,101, 21, 4,161,196,174, 26,139,197,
+114,235,242,229,203,209,159,126,250,169,132, 16,226,224,228, 56, 14,206, 11, 56,151,134,211,157,200, 20, 7, 70,184,219,220,133,
+221,221, 55, 46,105, 66, 82,158,231,113,241,226, 69, 76,156, 56, 17,132, 16,172, 89,179,230,177,200, 92,167,206,103,126, 93,183,
+ 70, 68,112,247,167, 90,212, 6, 33, 48,155,238,158, 13,193, 47,167,208, 33,178,158,254,116, 5,126,126,179,191, 47,162,231,202,
+158, 61,123, 66, 62,254,248, 99, 94, 34,145, 96,206,156, 57,197, 38, 13,118,253,238,187,119,239,182,222, 75,183,159,152,159,205,
+102, 51,244,250,123,179,162, 80, 74,247, 77,255,232,189,142, 75,127,248, 77, 74,136, 9,251,119,174, 65, 94,174,123,119, 6,185,
+148,199,215, 75,214, 90,101, 82,201,173,127,248,211,125,222,171, 87,175, 1, 11, 22, 44,168,225,238,228,173, 91,183, 32, 8, 66,
+ 73,206, 53,215, 13, 6, 3,110,223,190, 13,157, 78,183,122,194,132, 9,230,223,126,251,237,249,103,158,121, 6,117,235,214, 69,
+116,116, 52,238,220,185,131, 43, 87,174, 96,201,146, 37,116,239,222,189,171, 1,140,242,242, 30,215,205,248,232,189, 33, 75,126,
+252, 77,206, 17, 51,246,239, 90,131, 60, 23,209,126,183,117, 90,138,111,190, 95,107,150,201,164, 23,188,149,235,206,214,172,178,
+172, 24,123, 12, 30,137,167,231,205, 71,133, 70,157, 49, 99,102, 7,124,243, 81, 95,204,126, 82, 6,243,170, 65,168,211,103, 41,
+150, 79,238, 2, 0,136,249,198, 71,107, 9, 47,195, 77, 55, 22,171,220, 60,165, 93,220,148,206,106, 42,198,189,164, 50,188,180,
+ 22, 45,142,227,144,152,152,136, 10, 21, 42,160,121,243,230,168, 95,191, 62,218,182,109,139,147, 39, 79,226,228,201,147, 24, 51,
+102,140, 71,145,229,203, 55,106,211,172, 35, 14,182,188,112,223,223,198,245,187,151, 5,124, 73, 75, 35, 71,142, 4,128,255,148,
+117,139,191,151,151, 40, 38,204,251, 93,146, 70,228, 52,153, 76,142, 46, 57,231,121,153, 68,231,120, 31, 71,244,109, 37,132,212,
+124,255,253,247, 95, 87, 42,149,109,117, 58, 93, 21,187, 69,230,162,209,104,220,174,215,235,231, 80, 74,115,239, 39,172,206,211,
+ 57,184, 11, 66, 73,247,230,228,228,116,238,220,185,243, 86,158,231, 19, 93, 23,252,117,151,145, 5, 65,184,158,150,150, 86,226,
+ 16,247,172,172,172,206,157, 58,117,114,203,233,174,128,240,133,211,221,247, 17, 4,193,163,200,242,165, 32,242, 54, 33, 41,207,
+243,208,104, 52,248,229,151, 95, 16, 22, 22,246, 88,101,176, 19,103,211, 63, 46,233,124,155, 48,197, 78, 0,225, 79,127,186,226,
+230,142, 76, 83,124,155, 48,249,141,159,223,236, 95,190,164,123, 50, 51, 51, 59, 61,247,220,115,191,243, 60,159,232,250,254,221,
+125, 11,171,213,122, 45, 53, 53,181,212,211, 37, 80, 74,113,225,194, 5, 97,248,240,225,153, 25, 25, 25,125,239, 37,254,227, 39,
+206,159, 61,109,210,232,208, 39, 59, 54,105, 4, 14, 48,121,118,254,165, 4,160,188, 84,114,107,236, 59,115, 95,248, 39,191, 25,
+165, 52,159, 16,210,188,119,239,222,163, 80, 52, 52,252, 46, 33, 5, 96, 94, 9, 20,243,202,149, 43, 87, 75, 34,145, 40, 0, 76,
+164,148,222, 32,132,124,190,119,239,222, 78, 0,158,144, 72, 36,209, 54,155,237, 54,138,214,124, 92, 65, 41, 61,225, 61, 29,165,
+189, 84,183,122,120,220,147, 29,158,232, 12, 66,168,201,100,244,210, 64, 2, 5,165, 84, 38,147, 94, 56,116, 34,165,142, 55,107,
+189,125, 5,142, 50,239,178, 31, 53,106, 20, 70,141, 26,229, 72, 79,159,125,214, 18,171, 79,239, 65,159, 58,201, 48,126,217, 2,
+ 36,160,188,207, 13, 62, 0,120,247,253,225,101,105,217, 44, 54, 72,171,172,124,180, 36, 18, 9, 50, 51, 51,113,241,226, 69,164,
+165,165, 65,167,211,225,220,185,115, 48,155,205,200,201,201, 65,173, 90,181,238, 57,156,101,245,141,254, 73,206,255, 98,247, 97,
+169,132,150,213,106, 77,246,182,202,186,197, 98, 41,213,168, 36,169, 84,106,168, 92,185, 50,113, 55, 58, 65,252,175,209,104,244,
+ 62, 22,144,185, 0, 38, 2,152,104, 95,207, 10,217,217,217,247,173, 6,109, 54, 91, 74,124,124,188,196,147,128,177,191,155, 52,
+ 47, 97,211, 2,104, 90,198, 21, 66,153,115,186,249, 62,218,106,213,170, 57,124,189, 92,231, 68,177, 47,182, 90,162,119,174,183,
+ 9, 73,181, 90,237,157,206,157, 59,219,156,207, 59, 79,104,250, 88,131,208, 27, 93, 6, 60, 31,191, 35,211, 20, 15, 0,162,216,
+130,103,255, 31, 80, 74,245, 0, 90, 63,232,160, 93,189,122,213,244,196, 19, 79,252, 80, 80, 80, 48,146, 82,122,207,222,252,239,
+124,240,217, 59,255,182,207, 66, 41,205, 7, 48,237, 30,239,189, 1,160,157,203,177, 19, 0, 78,220, 79,152, 78,156,203, 40,243,
+185,197,172, 86,107,114,133, 10, 21, 74,101,185,241, 86,198, 91, 44,150, 18,235,137, 51, 8,196, 59, 7,128,162,101,226,178,124,
+226, 52, 24, 12,217, 77,155, 54,149,150, 50,110,233,190,198, 61, 58, 58, 26, 49, 49, 49,142, 95, 17,174,199,189,133,211,106,181,
+ 38,199,197,197, 33, 44, 44,204,227,140,239,174, 62, 89,190,112,150,245, 55, 42,137, 51, 38,102,105,153,115,150,149, 94,248, 79,
+ 8, 45,113, 13,195,178, 68, 90, 90,218, 3, 89,115,133,150,133,185,237,111,203, 81, 35,252, 71,145,149,149, 21,122,191, 28,222,
+ 38, 36, 77, 75, 75,107,251, 95,125,191, 59, 50, 76, 67,239, 58,102, 23, 93,255, 52,180, 90,109,121,111,211, 14,120, 66,159, 62,
+125,108, 96,120,228,145,153,153, 89,230,101,250,131,168, 39,178,179,179,107,255, 87,227,254, 32,194,249,111,225,124, 92,192,188,
+212, 24, 24, 24, 60, 53, 86,152, 88, 98, 96, 96, 96,184, 79, 16, 0, 29, 60, 20,178, 62,143,244, 33,132,116,184,135, 66,124, 27,
+227,100,156,140,147,113, 50, 78,198,201, 56,255, 91,156,222,184,203,122,164,241,163,208,106,125, 96, 27,128, 14,140,147,113, 50,
+ 78,198,201, 56, 25, 39,227,100,156,255,213,141,117, 29, 50, 48, 48, 48, 48, 48, 48, 48, 60, 32, 48,161,197,192,192,192,192,192,
+192,192,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48,
+ 48, 48, 60, 56,144, 50,156,215,147,129,129,129,129,129,129,129,129,193, 9, 60, 0,108,220,184,209,161,182,186,118,237, 74,216,
+107, 97, 96, 96, 96, 96, 96, 96,120,152,120, 92,181, 8,207, 4, 22, 3, 3, 3, 3, 3, 3,195,163,128,199, 81,139,112,238,148,
+ 36, 3, 3, 3, 3, 3, 3, 3,195,195,198,227,168, 69,184,199, 89, 69, 50, 48, 48, 48, 48, 48, 48,252,123,240,216, 91,180,152,
+ 85,139,129,129,129,129,129,129,225,159,194,191, 85,139, 16, 66, 40, 33,132, 58,239, 59,254,179, 81,135, 12, 12, 12, 12, 12, 12,
+ 12, 12,247, 38,176, 40,165,196,211, 47,192,230,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 39,136, 98,202,121,223,217,154,245,192,
+133, 22, 33,164, 3,227,100,156,140,147,113, 50, 78,198,201, 56, 25,231,127, 69,112, 81, 74,137,243, 62,207, 94, 15, 3, 3, 3,
+ 3, 3, 3, 3,195,125,139, 79,234, 78,120, 49,161,197,192,192,192,192,192,192,192,112,159, 34,203, 89, 92, 49, 31, 45, 6, 6,
+ 6, 6, 6, 6, 6,134,135, 0,102,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 15,184, 58,193,179,174, 67, 6, 6, 6, 6, 6, 6,
+ 6,134, 50, 22, 91,238,142, 19, 0, 29, 60,220,176,205, 87,242,123, 25,125,224,141,159,113, 50, 78,198,201, 56, 25, 39,227,100,
+156,143, 31,167, 55,238,210,232,143, 71, 5,132,144,214, 0,118, 0,104, 99,255,253, 91,120, 81, 74, 31,216, 6,160, 3,227,100,
+156,140,147,113, 50, 78,198,201, 56, 25,231,227,188, 21,201,169,191,127,157, 55,230, 12,207,224, 77,165,243,132, 16,254, 94,207,
+ 63, 44, 78, 6, 6, 6, 6, 6,134,127,184,190,164,226,175,179,191, 22,239,225,226, 74, 0,222, 1, 16,232,116,248, 16,165,116,
+186,203,117, 63, 2, 80, 59, 29,210, 2,152, 76, 41,189,236, 67,152,100,118,126,133,125, 19, 0, 24, 0, 24, 1, 20, 0,176,176,
+207,246,143, 39,154,166, 0,186,217,255,111,160,148,238, 47,205,249,135,197,249,176, 16, 19, 19,163, 10, 14, 14,238,116,236,216,
+ 49,249,185,115,231,176,123,247,110,250,245,215, 95,155,115,114,114,182,164,164,164,232, 89,138,121, 44,210,124,103, 0,227,237,
+187, 51, 40,165,155,239,147,143,168,213,234, 49, 26,141,166,139, 66,161,136,177, 90,173, 68,167,211,165,104,181,218,173, 86,171,
+245, 83, 74,169,112, 15,156, 61, 67, 66, 66,158,175, 90,181,106,165,235,215,175,223, 78, 73, 73,249, 17,192, 42, 0,125, 99, 98,
+ 98, 6, 37, 36, 36,196, 94,184,112,225,114,118,118,246, 55,148,210,117,255, 84, 56, 25, 24,254, 75,240,228,159,229, 81,104, 1,
+152, 72, 41, 29,228,146, 17,239,186,168, 93,187,118, 61,182,108,217,162, 22, 4, 1,226,166, 82,169,172, 0,134,122, 9, 83,232,
+190,125,251,226, 71,142, 28,249,116, 74, 74, 74,195,130,130,130,198, 0,160, 86,171, 15, 70, 68, 68, 28,158, 55,111,222, 79,157,
+ 58,117, 74,182, 11,174, 82, 89, 74,164, 82,233,115,193,193,193, 93,172, 86,107,125, 74, 41,164, 82,233,177,156,156,156,205, 22,
+139,229, 27, 74,105,169,197, 27, 33, 68,206,243,252, 40,133, 66,209,217,106,181,214, 6, 0,158,231, 79, 25,141,198,205, 86,171,
+245,115, 74,169,233, 30, 56,149,114,185,124, 84, 64, 64, 64, 71,147,201, 84, 27, 0,228,114,249,169,252,252,252,173, 38,147,233,
+115, 74,169,225, 17,168,112,120, 0,221, 40,165, 82, 0,144, 72, 36, 61,155, 54,109, 26, 79, 8, 17,196,249, 65, 56,142,171,103,
+179,217, 56,251,245,221, 8, 33,135, 41,165,214,210,112, 62,241,196, 19,229,120,158,167,246,153,116, 57,142,227,234,148,134,179,
+172, 16, 30, 30, 62, 77, 16,132,152,146,174, 9, 12, 12,108,120,236,216,177,170, 43, 87,174,180,125,249,229,151,185,195,134, 13,
+243, 27, 57,114, 36,255,217,103,159,125, 14,224, 85,215,235,195,194,194,102,115, 28, 23,230,203,243, 5, 65,200,204,204,204,124,
+131, 21, 87,255, 56,198, 47,220, 86,208,138, 82, 96, 84, 71,127, 14,192,125, 9,173,216,216,216, 37, 67,134, 12, 25, 80,187,118,
+109,158, 82, 10,139,197, 2,163,209, 88,117,255,254,253,109,214,172, 89,211, 16, 64,223, 82,230,203, 23,222,126,251,237,169, 83,
+166, 76, 9,147, 74,165,196, 98,177, 84, 92,185,114,101,253,151, 94,122,233,181,197,139, 23,151,235,215,175,159,191,120,124,226,
+196,137,141, 8, 33, 73,148,210, 79, 31,118, 56, 25, 24,254,131,141,180,214, 40,238,163, 53,137, 82,250, 97, 73, 66, 75, 99,191,
+ 49, 13,192, 33,209,162,229,122,209,159,127,254,185,158,231,121,209,162,213, 88,171,213, 70,186, 88,193,220, 33, 97,240,224,193,
+ 77, 87,175, 94, 61,173, 95,191,126,169,106,181,186,242, 51,207, 60, 83, 64, 8,145,172, 92,185,178, 94,133, 10, 21, 84,221,187,
+119, 31,220,174, 93,187, 55,127,255,253,247,221, 0, 50,124,140,100,141,144,144,144,181, 31,127,252,113,124,231,206,157,101, 97,
+ 97, 97,160,148, 34, 37, 37, 37,118,227,198,141, 79, 78,154, 52,233, 77, 66, 72, 47, 74,233,217, 82,188,184, 70, 42,149,106,245,
+164, 73,147,162,159,124,242, 73, 62, 42, 42, 10, 6,131, 1,231,206,157,235,176,121,243,230, 86,139, 23, 47,126,149, 16,210,135,
+ 82,122,184, 20,156,141, 3, 3, 3,215,124,247,246,219,145, 77,158,123,142, 15, 9, 9, 1,165, 20, 25, 25, 25, 29,246, 44, 93,
+218,102,196,199, 31,191, 74, 8,233, 77, 41, 61,244, 40, 37, 34,185, 92,206, 45, 91,182,172,174, 92, 46, 7, 0,152, 76, 38,212,
+172, 89,147,220, 15,167, 84, 42,229, 62,253,244,211,250, 60,207,195,108, 54, 11, 5, 5, 5,244,153,103,158,225,254,161, 76, 18,
+151,146,146, 18, 40,147,201,220,158,183,217,108,104,213,170, 85,162, 76, 38,195,167,159,126,106,201,204,204,172,183, 96,193,130,
+ 99,203,151, 47, 15,251,252,243,207,251,184, 19, 90, 28,199,133, 37, 39, 39,187,229,180,217,108, 48,155,205,176, 90,173, 48,153,
+ 76,168, 94,189, 58, 43,169, 30, 13,196, 3,192,111, 39, 13, 0, 16,114,191,100, 26,141,166,218,192,129, 3,249,140,140, 12, 72,
+165, 82,152,205,102,164,166,166,162,102,205,154,146, 31,126,248,161, 74,105,249, 42, 86,172, 56,108,198,140, 25,225,191,253,246,
+155,121,217,178,101,166,142, 29, 59, 74,135, 13, 27, 22,208,170, 85,171,234,113,113,113,220,183,223,126,107,220,186,117,171,101,
+240,224,193,242,233,211,167,135,111,220,184,177, 59,128, 79, 31,118, 56, 25, 24,254,131,216,225,186,168, 52,128, 18,133,150,136,
+ 67,148,210,158, 0, 32,147,201,234,149, 43, 87,110,137,213,106,141,178, 91,117, 82,165, 82,233,167,102,179,249,184,189,162, 90,
+ 39, 8, 66, 15,111,150,172,193,131, 7, 55,253,253,247,223,103,237,223,191, 63, 47, 43, 43, 43,106,253,250,245,134, 55,223,124,
+243, 58, 0, 92,189,122, 53,169,123,247,238,177,163, 71,143, 78,238,212,169,211,188,182,109,219,190,178,125,251,246,173, 40,234,
+146, 44, 81,100,213,172, 89,115,223,174, 93,187,252,131,130,130,138,171,186,132, 4,188,242,202, 43,178, 30, 61,122, 84,104,223,
+190,253, 94, 66, 72, 75, 74,233,105, 95, 4, 81,165, 74,149,182,253,249,231,159,126,193,193,193,200,205,205, 69,106,106, 42,116,
+ 58, 29, 2, 2, 2,208,175, 95, 63, 89,235, 22,205,203,141, 30,243,234, 54, 66, 72, 7, 95,196, 22, 33,164,113,243, 26, 53,182,
+ 45,159, 62,221,207,114,243, 38, 84, 42, 21, 10, 11, 11, 1, 0,254,254,254,104,152,152,200, 31, 89,186, 52,118,208,184,113, 34,
+231, 67, 23, 91,132, 16,133,221, 12,106, 36,132,108,144, 72, 36, 61,229,114, 57,215,179,103, 79,108,219,182,141, 24, 12, 6, 30,
+ 0,148, 74,165,181,103,207,158, 80,169, 84, 48,153, 76, 2,128, 13,158, 44, 79,238, 56,165, 82, 41,215,182,109, 91,221,161, 67,
+135,178, 69, 78,181, 90,109,105,219,182,109,168, 92, 46, 87, 89,173, 86, 90, 18,231, 3, 18,147,184,114,229, 74,177, 99, 5, 5,
+ 5,200,200,200, 64, 86, 86, 22,140, 70, 35,114,115,115, 33, 8, 2, 81,169, 84, 25,130, 32,128,227,138,140,111,158, 56,101, 50,
+ 25, 46, 94,188, 88,236,152,213,106,133, 86,171,133,209,104,132,217,108, 70, 65, 65,129,202,223,223,191, 82,141, 26, 53,146, 1,
+172,203,206,206,254, 52, 53, 53,245, 6, 43,183,254, 17,220,220,112,220, 80, 30,128, 9,192,181, 50,224, 19, 0, 96,247,238,221,
+ 72, 75, 75, 67,102,102, 38, 50, 50, 50, 16, 23, 23,135,123,233,142,187,114,229,202,194, 90,181,106,145, 51,103,206,108, 6,240,
+217,202,149, 43,135,102,103,103,143, 31, 59,118,108,200, 39,159,124,146, 61,110,220,184, 25, 0,190, 95,185,114,229,203,213,170,
+ 85,235,114,254,252,249,197,255, 68, 56, 25, 24, 30, 0, 26, 1, 8,183,255,207,180,151,187,161, 78,251, 39,237,249, 86,188,206,
+ 4, 64,238,230, 87,132,184,159, 1,224,176,211,125,226,254,189,212,159,212,249,215,209,232, 6,128,141, 27, 55, 82,113,115,119,
+115,100,100,228,152,118,237,218,205, 58,122,244,104,245, 59,119,238, 4,223,185,115, 39,248,232,209,163,213,219,181,107, 55, 43,
+ 50, 50,114,140,120,157,221,227, 30, 78,251,206, 67, 52,101,251,246,237,139, 95,187,118,237,140,109,219,182,229,213,171, 87,207,
+244,231,159,127, 90, 59,117,234,148, 14,192, 10,192,218,169, 83,167,244,237,219,183,219,154, 52,105,162,250,253,247,223,111,237,
+221,187,119,246,234,213,171, 35, 1, 72, 60,112,130, 16, 34, 13, 10, 10,250,101,231,206,157,119,137, 44,103,148, 43, 87, 14, 27,
+ 54,108, 8, 8, 10, 10, 90, 71, 8,145,149, 16, 78, 16, 66,148, 74,165,114,205,246,237,219,253,252,253,253,145,158,158, 14,169,
+ 84,138,136,136, 8,228,229,229, 33,245,206, 29,220,184,116, 9,156,201,132, 57, 31, 77,241, 87,169, 84,171, 9, 33,114,111,156,
+129,129,129,107,150, 79,155,230,151,181,109, 27, 78, 76,157, 10,179,217,236,232,114, 53,155,205,216, 59,114, 36, 50,254,248, 3,
+223, 78,156,232, 23, 24, 24,184,134, 16,162, 44,137,179, 44,224,204, 73, 8, 25, 9, 32, 27, 64, 54, 33,100, 36,165,116,127,205,
+154, 53,143,158, 59,119, 14, 45, 91,182,196,170, 85,171,234,140, 29, 59,118,228,216,177, 99, 71,174, 90,181,170, 78,203,150, 45,
+113,238,220, 57,212,172, 89,243,168,179, 47,149, 47,156, 59,119,238, 68,187,118,237,114, 86,173, 90,149, 52,113,226,196,105, 19,
+ 39, 78,156,182, 98,197,138, 10,237,218,181,203,153, 59,119,174,177, 36,206, 7, 17,119,103, 75,147,243, 38, 8,127,215, 49, 49,
+ 49, 49,233,107,215,174, 69,191,126,253, 56,185, 92,126,167,127,255,254,138, 61,123,246, 80, 0, 27, 74, 19, 78,131,193, 0,189,
+ 94, 15,173, 86,139,171, 87,175,170, 62,254,248,227, 22, 31,126,248, 97,197,109,219,182,197,190,243,206, 59, 35,194,195,195,143,
+ 69, 69, 69,197, 63,236,184, 51, 78, 0, 64, 42, 0,179,189,113,119,227,126, 56,219,183,111, 95,171, 98,197,138,145, 43,207, 4,
+ 35, 71, 86, 21,130, 44, 8,130, 44, 8,182,208, 70,184, 34,127, 10,229,203,151,143,244,247,247,111, 90, 26, 78, 74,233,178,211,
+167, 79, 63, 65, 41,253,144, 82,154, 69, 41,157, 53,110,220,184, 73,132,144,221,227,198,141,155, 66, 41,157,101, 63, 62,245,220,
+185,115, 77, 40,165,203,255,137,112,178,180,196, 56,239, 5, 94,180, 72, 56, 33,100, 3, 33,100,195,132, 9, 19,218, 2, 8,117,
+217,111,230,124, 29, 0,185,187, 95,113,115, 58, 30, 14,160,171,211,125,225,247,248, 62,136,235, 86, 76,104, 1, 64,215,174, 93,
+ 73,215,174, 93,197, 19,135, 8, 33,235, 1, 28,146,201,100,245,234,214,173,219,115,211,166, 77,254,225,225,127, 63, 63, 60, 60,
+ 28,171, 87,175,246,175, 81,163, 70, 79,153, 76, 86, 15,192,161,128,128,128,245,112,211,197,104, 71,208,200,145, 35,159,126,246,
+217,103,243,235,213,171, 7, 0,185,103,207,158, 85, 55,105,210, 68,107,181, 90,137,213,106, 37, 77,154, 52,209,158, 61,123, 86,
+109,177, 88, 10, 26, 53,106,164,105,223,190,253,245, 55,222,120, 99, 48, 0,101, 9,241, 27, 56,115,230,204,184,224,224,224,146,
+ 94, 0, 10, 10, 10, 16, 25, 25,137,145, 35, 71, 70, 73,165,210,231, 75,122, 97, 60,207,143,154, 57,115,102, 68, 80, 80, 16,114,
+114,114, 16, 23, 23, 7,147,201,132,139, 23, 47,194,160, 45,132,165, 32, 31,150,252, 92,100,252,117, 25, 65, 82, 30,131,123,116,
+139,228,121,126,148, 23,107,201,168,111,198,141,139, 52, 93,191,142,171,171, 86,193,102,189,219, 80, 99, 53,155,113,234,171,175,
+ 96, 72, 78,198,140,225,195, 35,229,114,249,168,135,108,201,250,132, 82,170,162,148,170, 8, 33,243,154, 53,107,246,131, 74,165,
+ 26, 57,125,250,244,206, 91,182,108,121,114,215,174, 93,109,172, 86,171,212,106,181, 74,119,239,222,221,210, 96, 48,240, 10,133,
+ 2, 60,207, 83, 95, 57,155, 54,109,186, 68,165, 82,141, 88,180,104, 81,231,237,219,183, 15, 62,114,228,200, 40,155,205, 38,183,
+217,108,242, 35, 71,142,188,164,215,235,165,148, 82,155, 39,206,135, 13,169, 84, 10,153, 76, 6,149, 74,133, 22, 45, 90,252,245,
+245,215, 95, 91,226,226,226,164,107,214,172, 9,142,137,137,209,124,246,217,103,185, 5, 5, 5, 51,125,229, 51,155,205, 48, 26,
+141,208,235,245, 48, 24, 12,248,243,207, 63, 19, 71,143, 30,205, 27, 12, 6, 91,247,238,221,179, 45, 22,139,113,220,184,113, 1,
+ 33, 33, 33,111,178, 6,236, 63, 2, 43,128, 66,187,208, 50, 58,167,101, 66, 72,109,209, 58,235, 11,114,115,115, 23,127,243,205,
+ 55,113,156, 34, 8,123, 76, 93,240,147, 48, 9, 91, 2, 63, 67,122,252, 91,136,136,171,136, 1, 3, 6, 68, 80, 74, 63, 43,131,
+ 10,111, 1,165,180, 21,165,116,222,189,220,255,160,195, 73, 8,137,247,243,243, 91, 21, 16, 16,176,199,207,207,111, 21, 33, 36,
+254,126,227,220,169, 18,233,208,179,186, 36,185, 83, 69, 66,123, 86,151, 36,119,170, 84,250,185,158, 24, 30, 77,184,104, 17,103,
+100, 80, 74,187, 81, 74,187,205,152, 49, 99,154, 83,250, 23,247, 85, 62,230,151,110,148,210,110, 46,105,116, 67, 25,212,161,212,
+117,115,104, 10,103, 37, 41, 70,206,121,116, 97,185,114,229,150, 44, 89,178,196,223,149,244,206,157, 59,200,207,207,199,123,239,
+189,231,255,236,179,207,190,122,235,214,173, 33, 94,194, 33, 79, 77, 77,173, 63,104,208, 32,165,217,108,206, 17, 4,129,203,207,
+207,231, 3, 3, 3,109,226, 5,129,129,129,182,188,188, 60,169, 86,171,149,216,108, 54,227,179,207, 62, 43, 31, 62,124,120, 67,
+103,139,214, 93, 18, 55, 60,188, 99,151, 46, 93,228,158,206, 91, 44, 22,104,181, 90,104,181, 90,152,205,102,180,104,209, 66,241,
+245,215, 95,119, 2,176,200,211, 61, 10,133,162, 99,199,142, 29,165,217,217,217, 8, 12, 12,196,141, 27, 55,112,237,218, 53, 24,
+ 11, 11, 97, 46,204,135,185,176, 0,214,130,124,208,252, 60,100, 93,190,128, 38,213,170,202,126, 84, 40, 58, 3,152,237,137, 51,
+ 32, 32,160, 99,147,161, 67,121,141, 70,131, 54,131,138,198, 25,252, 94,173, 26,168,205, 6,193,102,131,205,106, 69,231,139, 23,
+ 97,177, 88,192,113, 28, 26,101,103,243, 1, 75,151,118, 4, 48,235,159, 72,236, 10,133,130, 95,182,108,217, 64,185, 92, 14, 74,
+ 41, 49,153, 76,216,178,101,203,125,115, 46, 93,186,116,176,200,105, 54,155,105,173, 90,181,238,202, 80, 70,163,145, 62, 42,153,
+ 94, 46,151, 67,169, 84,194,108, 54, 35, 33, 33, 65, 63,104,208,160,125, 31,125,244, 81,121,142,227, 52, 50,153,108, 83, 86, 86,
+214,180,148,148,148,171,190,242, 89, 44, 22,152, 76, 38,152, 76, 38,232,245,122,252,245,215, 95, 81,137,137,137,100,228,200,145,
+ 54,157, 78,151, 52,127,254,252, 43, 91,182,108, 81,207,156, 57,243, 25, 0,175,176, 98,247,225,193,110,149, 14, 44, 31,202,107,
+165, 18, 20, 2,240,183,139,130,103, 8, 33, 77,170, 87,175, 30,124,238,220,185, 28, 66,200, 1, 0, 63, 81, 74,239,148,196, 39,
+ 8, 2, 17, 4, 1, 47, 53,206,197,200,166, 18, 88, 44,121,200,203,203,195,141, 27, 55,112,246,236, 89, 28, 60,120,246,158,194,
+169, 84, 42,159,247,243,243,235,164, 84, 42, 19,172, 86, 43, 87, 88, 88,120, 67,167,211,109, 19, 4, 97, 49,117,237, 86,240, 1,
+ 15, 42,156, 34, 52, 26,205,199,239,188,243, 78,243,192,192, 64, 28, 63,126, 60,105,197,138, 21, 31,227, 62,157,235,149, 82,238,
+219,217,115, 63,139,141,141, 8,194,201, 93,191,198, 78,251, 98,229,183, 0,226, 88, 42,254,247,195, 89,139,184,224, 48,128,174,
+246,209,232,221,238, 35,159,223,215,253, 37, 89,180, 92, 23,150,190, 75,104,121,136, 24,172, 86,107,148,179, 37,139, 82,138, 59,
+119,238,224,246,237,219,200,200,200, 64,112,112, 48,204,102,115,148, 47,245,108, 65, 65, 65,227,208,208, 80,157, 84, 42, 53,234,
+245,122,168,213,106, 65, 42,149, 82,251,115,136,125,212,162,205,104, 52, 18,158,231, 45,254,254,254,126, 70,163,177, 42, 74,240,
+ 37,163,148, 54, 14, 13, 13,117,123,206,104, 52,162,176,176, 16, 90,173, 22,133,133,133, 48, 26,141,136,140,140,132,213,106,173,
+ 95, 98,147,214,106,173, 29, 30, 30,142,148,148, 20,168, 84, 42, 36, 39, 39,195, 84, 88, 0,115, 65, 1,172,218,124,216,242,242,
+ 32,228,231, 67,208,230,195, 98,210, 33,182,114, 53,136, 35, 18, 61,193,100, 50,213, 14, 13, 13,133, 86,251,183,187, 25,181, 11,
+ 44,171,213, 10,171,221, 57, 90,236, 78, 12, 11, 11,131, 56, 34,241, 97,192,238, 63, 53,150,227,184,121, 10,133,130, 31, 49, 98,
+ 4,238,220,185, 83, 44, 77,140, 24, 49,194,225,147,213,170, 85,171,221, 74,165,210,154,145,145, 1,163,209, 40,245,133, 51, 33,
+ 33,225,198,123,239,189,119,200,100, 50,197,197,196,196, 4, 25,141, 70,125,149, 42, 85, 98, 84, 42, 85,164,201,100,178, 53,108,
+216,112,177, 74,165,178, 20, 22, 22, 82,171,213, 74, 30,133, 76, 79, 8, 1, 33,164,232, 27, 89,173, 8, 11, 11,211,102,102,102,
+ 30,204,201,201, 25,120, 47,124, 22,139, 69, 28,209, 5,189, 94, 15, 74, 41,142, 31, 63, 14,165, 82, 41,181,217,108,103,172, 86,
+171, 90, 42,149,130,179, 59,127, 49, 60,180,239,220,166,106,144,124,246,244, 38, 17, 65,117,187,107,180,106,185, 68, 43,220,168,
+155,240,221, 39,103, 87, 60, 59,248,121,255,201,147, 39,199,135,133,133, 41,175, 92,185, 98,152, 50,101, 74,226,178,101,203,136,
+183, 70,208,205,155, 55,127,126,231,157,119, 66,186,116,233,146,164, 80, 40, 72, 94, 94, 30, 50, 50, 50,144,150,150,134,107,215,
+174,209,147, 39, 79,254,101, 52, 26, 87,149, 38,156, 49, 49, 49, 95,143, 30, 61,250,217, 6, 13, 26, 72, 69, 11,169, 86,171,173,
+183,115,231,206, 30,191,255,254,123, 75, 0,165, 78,151,183,110,221, 90,245,238,187,239,106,158,122,234,169,170, 10,133,130, 43,
+139,112, 58,131,227,184, 72, 63, 63, 63,108,219,182, 13, 65, 65, 65,224, 56, 46,242,126,191,151,193, 44,196,198, 68,133,194,176,
+119, 54,170,134,199,195, 96, 22, 98, 89, 42,126,124, 44, 90, 30, 78, 53, 18, 45, 82, 94,196,146,126,252,248,241,239, 16, 66, 54,
+140, 31, 63,254, 29,119, 22, 45,251, 95,155,243,117, 78,215, 27,203, 90,108,149,106, 82, 72, 65, 16,112,251,246,109,164,164,164,
+224,246,237,219,200,202,202, 2,199,113, 37,206, 31,225, 28, 6, 66,136,176,117,235,214,224,125,251,246,105, 27, 53,106,148, 43,
+250,191, 88,173, 86, 98,177, 88,136,221, 47,134,220,184,113, 67,182,103,207,158,160,243,231,207, 71,162,200, 97, 77,240, 18,185,
+187,142,137, 2,203,121, 51, 24, 12, 80, 42,149, 62,197, 85,172, 8,143, 31, 61, 90, 36,178, 10, 11,236, 93,134,121,176,229,231,
+129,106, 11, 32,183, 89, 32, 7, 5, 49,232,124,126,127,206, 16, 69,150,217, 46,180, 76, 38, 19, 44, 22, 11, 4, 65,128,213,106,
+125,232, 9,156, 82,186,176, 94,189,122,245,127,254,249,231, 97,183,111,223,190,235,124,175, 94,189,240,202, 43,175, 96,244,232,
+209,231,187,118,237,122,242,215, 95,127,197,168, 81,163, 32, 8, 66, 93, 66, 72, 30,165,244,247,146, 56,199,143, 31,127,228,214,
+173, 91, 59, 46, 93,186, 52, 34, 34, 34, 66, 81,187,118,237,203,181,107,215,150,252,252,243,207,145, 47,188,240,194,209, 39,159,
+124,242,250, 31,127,252, 17,178,109,219, 54,165, 32, 8, 13, 8, 33,183,255,233,121,180,140, 70,163,195, 2,101, 48, 24, 96, 54,
+155,129, 18,156,223,189,165, 77,241,219, 90,173, 86,145,155,252,252,243, 90,236,222,189,155, 59,123,246, 76,220,136, 17, 35, 69,
+135,123, 86,226, 62, 28,129,245,148,156, 35, 95,142,173, 27,170,124,179, 78,168, 86,206,147,194,139, 95,190, 83,120,173,124,128,
+ 54,178,156,218, 20,151, 24, 20, 51,109,218, 71,209,231,207, 95, 48,190,247,222,123,231,250,247,239, 31,241,230,155,111, 86, 95,
+179,102, 77, 75, 66,200, 55,148,210, 92, 15,188,202,161, 67,135, 30,136,136,136, 72,252,226,139, 47,210,111,221,186, 21,108,177,
+ 88, 52,102,179, 89,208,106,181,215,244,122,253, 54,179,217,188,141, 82,122,180, 52,225,245,247,247,175, 51,116,232, 80,105,110,
+110, 46,236,163,117,145,158,158,142,230,205,155, 75,214,175, 95, 95,227, 94,222, 65,118,118,246,108, 66,200,142,229,203,151,119,
+ 10, 8, 8,104,160, 80, 40,162, 0,216, 10, 10, 10,210,180, 90,237,137,123, 9,103,177,114,206,102, 75, 59,122,244,104,133,128,
+128, 0,220,188,121, 19, 54,155, 45,237,126,191,155, 82,198,221, 58,181,107,125,185,106, 97,137,216,179,239, 0,148, 50,238, 22,
+ 75,205,143, 61, 68, 31, 42, 56, 11, 40, 55, 2,105,223,244,233,211, 85, 51,102,204,192,244,233,211,207,184,179,104,137,130,107,
+250,244,233,103,196,235,156,174,223,117, 31,229,137,103,139, 86, 9, 10, 18, 60,207,167,102,100,100, 4, 7, 5, 5, 57, 4, 86,
+ 74, 74, 10, 82, 82, 82, 32,151,203,113,227,198, 13,200,229,242, 59,190, 52, 66, 84, 42,213,145,122,245,234, 85,185,122,245,170,
+108,202,148, 41,229,142, 30, 61, 26,208,188,121,243, 90, 42,149,202, 70, 41,133,193, 96,224,206,157, 59,231, 55,107,214,172,216,
+198,141, 27,155, 26, 55,110,124,108,229,202,149,122,148, 48,121, 41, 33,228,208,157, 59,119,146, 18, 18, 18, 68,209, 86, 76, 92,
+ 57, 11, 46,160,168,203,147,231,249, 99, 37, 5,148,231,249, 83, 23, 47, 94,236,160, 86, 42, 96, 42,200,135,185, 48, 31,214,130,
+ 2,216, 10,242, 96,203,203, 3,180,249,144, 91,173,144,218, 44, 80, 41,149,184,157,156, 12,158,231, 79,149,196, 41,151,203, 79,
+165,165,165,117, 8, 10, 10,114, 84,162, 22,171,181,104,179,217, 96,178, 90, 29, 22, 45,169, 84,138, 91,183,110, 65, 46,151,159,
+122,216, 41,153,227, 56,155, 56,133,131,135,120, 32, 50, 50, 82,104,210,164, 9, 70,141, 26, 5,155,205,102,255, 12,164, 13, 33,
+100, 15,165,180,208, 19,167, 32, 8,220,185,115,231,158,190,114,229,138, 68, 42,149,114, 79, 60,241, 68,205, 22, 45, 90,152,228,
+114, 57,100, 50, 25, 95, 88, 88,232,191,109,219, 54,165,197, 98, 33,118,206,135, 54,143,150,152,118,238,106, 26,217,157,214,245,
+122, 61, 10, 11, 11,145,147,147,195,171, 84,170, 42,181,106,213, 58, 96, 50,153, 86, 89,173,214,111,175, 94,189,154,239,137,211,
+ 46,204, 28,162, 75, 16, 4, 80, 74, 97,179,217, 96,177, 88, 32,147,201,132,157, 59,119, 97,214,156,143,177,228,219,101,180, 71,
+143, 30,100,253,250,245, 16, 4, 33,153,149,171, 15, 5,159,230,254,244,145, 18, 86,155,214,184,115,121,225, 15,151,242,181,147,
+127,152,123,196, 36,151,228, 55,108, 29, 89, 59, 41,177,138, 36, 40, 40,152, 91,180,120, 94,214,143,203, 86, 95,185,121,243,102,
+254,231,159,127,222,180, 74,149, 42,129, 39, 78,156,136, 5,224, 86,104,169,213,234, 74,207, 63,255,252,208,156,156, 28,217,146,
+ 37, 75, 86,222,185,115,231, 8,128,179,148, 82,173, 83,217,213,149, 16,242, 61,138, 70, 62, 69,218,203,185, 61,148,210, 41, 37,
+181,215, 8, 33,216,190,125,251, 93,163, 3,133,251, 83,231, 65, 21, 43, 86,236,119,245,234,213,221,169,169,169,189,221,228,251,
+201,149, 43, 87,238,124,230,204,153, 73,148,210,223, 74, 67,172,211,233,198,173, 94,189,250, 19,137, 68, 18, 99,179,217, 82,244,
+122,253,184,251,182,104, 89,132,225,211, 23,173,248, 74,111,178,149, 87,201, 37, 55, 13, 22,225, 5,150,148, 31,107,107, 22, 96,
+247,209, 18,255, 3, 32, 46,251, 39,236,255, 77, 78,215,102, 56, 89,177, 76, 46, 86, 48,119,231, 50,112,143,147,165,187, 27,113,
+ 40,138, 46, 79, 51,195, 79, 0,208, 24,192, 33,169, 84, 58,239,217,103,159,157,245,227,143, 63,250,231,231,231, 35, 45, 45, 13,
+233,233,233,224,121, 30, 1, 1, 1, 88,184,112,161, 62, 45, 45,109,158,243, 61,174, 51,200,139,121, 35, 44, 44,236,200,178,101,
+203,162,190,252,242, 75,126,200,144, 33, 55,186,118,237, 90,117,225,194,133, 87,101, 50, 25,181,217,108,196,104, 52,146,151, 94,
+122,169,194,156, 57,115,174, 75, 36, 18,117,191,126,253,136, 70,163, 57,132, 34, 7, 85,247,111, 62, 35, 99,235, 47,191,252,242,
+244, 27,111,188,161, 48,153, 76,110, 45, 89,226,177,160,160, 32,236,221,187,215,148,147,147,179,197,139, 21, 99,235,166,223, 54,
+182,250, 95,255,254, 50, 75, 65, 62, 44, 5,249,176,230,231,195, 86,144, 11, 82,152, 15,169,205, 10,149, 76, 64, 84,156, 18, 86,
+189, 31, 54, 30, 62, 97, 49, 26,141, 37, 78,108,152,159,159,191,117,207,146, 37,109, 26,199,199,243,123,199,140,129,217, 98,193,
+ 83, 23, 47, 58,196,149,217,108,198,186,218,181, 97, 35, 4,117, 95,124, 17,151,173, 86,107,126,126,254,214, 71, 49, 51,156, 60,
+121, 50,125,208,160, 65, 71, 5, 65,168, 95, 26,235,142, 8, 63, 63,191,130,194,194, 66,100,102,102,218,178,178,178, 12, 0,144,
+158,158,158,179,126,253,250,115,130, 32, 52,190, 23,206,178,128,197, 98,185,203, 26,101,179,217,138,172,142, 69,150, 3,249,198,
+141, 27, 91,157, 59,119, 78,118,250,244,105,236,222,189,187,238,143, 63,254, 56, 33, 62, 62,190,246,141, 27, 55, 82,189,137, 55,
+119,147,254,194,238,127,184,114,249, 42,188,252,242,203, 36, 53, 53, 21, 63,253,244, 19,188, 77,158,202, 80,102,208,194,106, 83,
+153,118, 46, 47,236,250,219,205,130,253,119,244, 83, 0,108,166,122, 43, 45, 87,174,220,201, 6, 13,130,195, 0,192,104,176, 69,
+ 85,170, 84,169, 53,207,243,114,123, 26,110, 16, 26, 26,186, 16, 64, 11, 55,229,167,164,127,255,254, 77, 34, 34, 34,234,253,254,
+251,239, 39,238,220,185,115,134, 82,122,208,245,186, 10, 21, 42,188,119,254,252,249, 70, 82,169,148,120, 73, 35, 0,128, 54,109,
+218, 84,137,143,143, 15,253,237, 82, 32,242,101, 21, 65, 37,121, 0,175,132, 45,168, 14,110,200,170, 35, 46,238, 64,104, 80, 80,
+ 80,221,220,220,220, 19,165,172, 32,218, 62,253,244,211,223, 46, 89,178, 36,174,117,235,214,148, 16,194,185, 78,233, 80,161, 66,
+133, 78,251,247,239,175,255,194, 11, 47,124, 97, 31, 61,236,179,243, 48,165,244, 6,128, 62,101,249,209,182, 92,166,219, 96,159,
+243,140,225, 63,131,195, 15,232,218, 50,193,189,204, 12,223, 88, 16,132, 30, 28,199,193,108, 54, 79,143,140,140, 92,215,175, 95,
+191, 94, 19, 38, 76,240, 11, 13, 13,117, 88,178, 22, 46, 92,168,191,118,237,218, 26,179,217,124,156, 16, 50, 49, 37, 37,165, 71,
+ 76,140,199,250,161, 96,254,252,249, 43,186,119,239, 62,228,197, 23, 95,212,215,174, 93, 59,160,106,213,170,186,125,251,246,249,
+117,236,216, 49, 95, 34,145,208,189,123,247,250, 87,168, 80,193, 64, 8, 81,252,241,199, 31, 89, 7, 14, 28,168, 48,125,250,244,
+111, 80, 52,220,218, 19,150, 79,157, 58,245,189, 30, 61,122, 84, 8, 13, 13, 69,126,126,126, 49,177, 37,254, 87, 42,149, 72, 77,
+ 77,197,218,181,107,239, 88, 44,150,111,188, 88, 54, 62,255,108,225,162, 87,219, 54,121, 34, 54, 64,173, 66,106,242, 13,216,242,
+114, 0,109, 33,228, 86, 11, 84,114,138,216,138,106,240, 18, 13,174,164, 22, 98,201,190,195,169, 86,171,245,243,146, 56, 77, 38,
+211,231,175,204,153,243,234,254, 69,139, 98,227,251,246,197,217,165, 75, 29, 93,133,162,208,178, 17,130,242,237,219,131, 11, 12,
+196,180, 47,190, 72, 51,153, 76,159, 63,236,196, 34, 8,130,196,100, 50,149, 20, 15, 8,130,144,124,246,236,217, 21,132,144, 2,
+ 66, 72, 27,251,169, 29,238,172, 89,206,156, 28,199, 9,213,171, 87,255, 57, 50, 50,242,105, 0,218,234,213,171,255,172, 80, 40,
+218,153, 76,166, 39, 4, 65, 72, 62,126,252,248, 90, 66, 72, 42, 33, 68,108,117, 60,212,121,180, 44, 22, 11, 38, 78,156,136, 25,
+ 51,102, 96,252,248,241,142,248,138,221,135,185,185,185,137,123,246,236,145,237,220,185,147,126,241,197, 23, 89, 67,134, 12, 9,
+122,241,197, 23,131,190,252,242,203,215, 1,140,243,196, 57,110,220, 56,124,241,197, 23,120,249,229,151,239, 86, 89, 18,137,144,
+156,124, 11, 6,131,129,206,159, 63, 63, 69, 42,149, 6,127,243,205, 55,170, 23, 94,120,129,176,114,245,161,224, 93,213,160,247,
+ 95,179,151, 49,243, 40,165, 59,196, 19, 1, 1, 1,170,159,127,254,133, 7,128, 53,171,215, 74, 41,165,129,226, 4,179, 63,252,
+240,131,178,121,243,230, 17, 30, 10, 92,155, 82,169, 52,206,156, 57, 51,116,248,240,225, 79,254,249,231,159,193,132,144, 38, 0,
+142, 0, 72,179,139,235, 8, 0,103,195,194,194, 2, 86,174, 92, 25,219,169, 83, 39,141,183,128, 22, 20, 20,124,179, 98,197,138,
+132, 57,123, 2,241,155,246,105,220, 18,250,130, 6, 81,132, 68, 20,160,186,223, 77, 12, 28, 56, 48,102,222,188,121, 95, 1,104,
+ 80, 10,145, 53,176, 87,175, 94, 51,150, 44, 89, 18, 51,124,248,240,212, 99,199,142,165, 1, 88,226, 70,240,101, 62,251,236,179,
+119,150, 46, 93, 26, 77, 41, 93, 68, 8,145, 83, 74,215,176,228,195,192,224,200, 75,173, 81, 52, 35,252, 93,226,139,184,243,111,
+ 34,132,172,179, 90,173, 61,120,158, 95,239, 60, 97,105,100,100,228,171, 38,147, 41,154, 16, 66,101, 50, 89,106, 90, 90,218, 60,
+231, 9, 75,147,147,147,123,196,197,197, 57,238,177, 79,186,233, 60,215, 70,192, 83, 79, 61,213, 97,255,254,253, 11, 54,108,216,
+144, 94, 80, 80,224,183,122,245,106,213,140, 25, 51,110, 8,130, 64,223,126,251,237,248,206,157, 59,235,108, 54,219,157, 23, 95,
+124,177, 66, 98, 98,226,139,231,207,159,223,230, 44,180,220,112,130, 16, 82,163, 98,197,138,123,215,172, 89, 19, 16, 20, 20,132,
+244,244,116,100,103,103, 67,171,213,194,102,179, 65, 42,149, 34, 35, 35, 3, 83,166, 76,201, 79, 73, 73,185,107,194, 82, 15,156,
+141, 19, 98, 99,183,206,155, 52,209, 63,136,231,144,117,225, 28,172, 57, 89,144, 90, 45, 40, 87, 35, 16, 50,185, 10,151, 47, 22,
+224,245,229,107, 11,110,102,231,222, 53, 97,169, 39,206,134,149, 42,109,251, 98,236, 88, 63,195,173, 91,136,126,238, 57,232,116,
+ 58,152,205,102,112, 28,135,191,230,205,131, 44, 60, 28,239,173, 92,169, 61,115,243,102,123,215, 9, 75,221,113,150, 65,226,112,
+112, 18, 66, 70, 18, 66, 28,206,240,189,122,245, 42,118,237, 47,191,252,130, 69,139, 22,193,104, 52, 90, 41,165,175, 82, 74, 23,
+ 18, 66,252,236, 9,170,208, 27,103, 66, 66,194,205,154, 53,107, 30,182,217,108,188, 93,100,208,179,103,207, 54,184,118,237, 90,
+ 57, 23, 78,222,206,105,125, 88,113, 15, 13, 13,157,247,251,239,191, 39, 68, 68, 68, 16,231, 25,219,237, 66, 17, 0, 48,106,212,
+168,246, 7, 14, 28, 80,212,171, 87,207,152,153,153,217, 40, 60, 60,252,207,101,203,150,133,245,235,215, 47,229,204,153, 51,177,
+174,156, 97, 97, 97,179,214,172, 89, 83,177, 98,197,138,156,104, 21,115,237,158, 28, 54,108, 88,135,101,203,150,201,159,126,250,
+105,163, 86,171,141,244,247,247,191,178,102,205,154,176,158, 61,123,166,158, 57,115, 38,250, 97,196,157,113,186, 71,205,154, 53,
+ 47,159, 57,115,166,162,184,175,215,235,145,145,145,129,204,204, 76, 4, 5, 5,161, 99,199,142,127, 93,187,118,173,162, 59, 78,
+ 66, 72,189, 62,125,250, 76,250,234,171,175, 58,104, 52, 26,217,174, 93,187,180,219,182,109, 51,220,184,113,195,106,177, 88,104,
+116,116, 52,223,162, 69, 11,101,151, 46, 93, 52, 10,133,130,123,255,253,247, 51, 63,250,232,163, 48, 66,200,114,113,249, 51, 87,
+206,250,245,235, 31,220,180,105, 83, 99, 66, 8, 36, 18, 9, 76, 38, 51,114,115,115,113,251,118, 50,206,158, 61,139,253,251,247,
+ 99,203,150, 45, 39, 10, 11, 11,235,249,152,223, 67, 1,236, 50, 26,141, 85,229,114,185,207,194,222,102,179,129,231,249, 11, 0,
+ 58, 81, 74,147, 89, 90, 98,156, 12,127,251,103,149,202, 25,222, 46,192, 26, 19, 66,214,217, 15, 29,114,157,194,129, 16, 50,129,
+ 16, 50,209,201, 10,230, 45, 44,249,191,255,254,251,238, 14, 29, 58,140,106,223,190,253,156, 78,157, 58,221,185,115,231, 78,210,
+236,217,179,227,172, 86,171,249,236,217,179,220,149, 43, 87,110, 28, 57,114,164, 98,229,202,149, 95, 60,127,254,252, 78, 47,214,
+ 44, 49,172,103, 9, 33,205,219,182,109,187,246,197, 23, 95, 44,223,164, 73, 19,121, 80, 80, 16,120,158,199,213,171, 87,113,226,
+196, 9,211,202,149, 43,147,115,115,115,125, 94,130,135, 82,122,136, 16,210,177,223,232, 87,215,188,216,171,123,216, 19, 85,171,
+200,163,163,163, 1,189, 30, 23,110,166,226,192,133, 19,230,175,119, 31,200, 48, 26,141,189,125, 93,130,199,206,217,161,221,216,
+177,107, 38,255,239,127,145,184,115,135,143,142,142,134, 92, 46,199,181,107,215,112, 69, 16,172, 51, 23, 47, 78,203,207,207,127,
+232, 75,240,136,115, 94, 9,130,192, 3,128, 74,165,194, 43,175,188, 2,231, 37,119, 22, 45, 90, 4,189, 94, 15, 0, 60, 33,228,
+ 19, 66,200,183,158,172, 88, 30, 56,203,255,246,219,111,229,157, 57,171, 85,171,230,142,211,248,176, 51, 73,118,118,246,123, 79,
+ 61,245,212,116,158,231, 61,206,122, 27, 28, 28,140,130,130, 2, 88,173, 86,219,237,219,183, 47, 4, 7, 7, 67, 42,149,130, 82,
+234, 54, 31,101,101,101,189,215,187,119,239,169, 28,199, 69,120,226, 12, 8, 8,184,241,231,159,127, 86,122,225,133, 23,184,239,
+190,251,238,234,240,225,195, 21,127,254,249,167,141, 82,186,150, 21, 93,143, 22,156, 27,165,246, 70, 28, 45,225,218,227,132,144,
+ 57, 71,142, 28, 9, 31, 53,106, 84,210,255,254,247,191,128,182,109,219,250, 57, 95,163,215,235,133, 95,127,253, 85,187,104,209,
+162,188,221,187,119, 95, 31, 54,108, 88, 19, 20,249,151,184,197,205,155, 55, 55, 78,155, 54, 45,176, 75,151, 46,149, 1, 56,252,
+179, 50, 50, 50,112,227,198, 13,156, 62,125,250,134,217,108, 94, 95,138,248,100, 17, 66, 38, 15, 24, 48,224,147,165, 75,151,198,
+ 12, 31, 62, 60,117,229,202,149,167, 81, 52,193,176, 43,130,122,245,234, 85,123,233,210,165,209,195,135, 15, 79, 5, 48,133, 82,
+202,252, 8, 25, 24,254, 70, 27, 87, 63,173, 18,125,180, 0,228, 9,130, 0,131,193, 16, 41, 8, 66, 15, 65, 16,224,231,231,231,
+238,186,198, 41, 41, 41, 61,156, 23,149,134,151,229,114, 0,100,108,219,182,109,235,242,229,203,219,191,253,246,219,255,203,205,
+205,109,124,242,228,201, 38, 0, 32,149, 74,247,107, 52,154,131,211,167, 79,127,110,220,184,113, 25,190,136, 44, 23,177, 85,125,
+214,172, 89,101,182,168,180, 93, 24, 85,250,124,213,218, 81,223, 40, 20, 29, 93, 22,149,222,106, 95, 84,218,112, 47,156, 99,191,
+250,106, 84,192,170, 85,143,236,162,210, 70,163,209,250,244,211, 79,127,195,113,156, 96,111,197,242, 70,163,241, 57,148,114,164,
+170, 43,103,175, 94,189,190,147, 72, 36, 86,187,165,136, 51, 26,141,207,223, 15,103, 25, 86,162,133, 0, 70,151,116, 77,173, 90,
+181,150,173, 95,191,126, 80,143, 30, 61,108,102,179, 57,189,123,247,238,252,193,131, 7, 41,199,113,219, 60,112, 26, 1,188, 85,
+ 18,103, 84, 84, 84,252,103,159,125,118,108,204,152, 49, 1,203,151, 47, 15,217,179,103,143,109,254,252,249,249,217,217,217,159,
+178,114,235,209,130, 84, 42,133, 90,173,134,201,100, 66, 70, 70, 6,188, 77, 89, 69, 41,221, 78, 8,233, 50,118,236,216,103,198,
+142, 29,219, 37, 42, 42,170, 66, 66, 66,130,154,227, 56,220,190,125,219,154,146,146,146,110,177, 88,182, 2, 88, 11, 0, 21, 42,
+ 84,120, 22,192,215,158,248,178,178,178,166, 18, 66,182, 47, 93,186,180,171, 70,163,169,174, 84, 42, 67, 44, 22, 11, 87, 80, 80,
+144,173,215,235,207, 25, 12,134, 13,148,210,125,165, 76,247, 43, 9, 33,153, 67,134, 12,249,118,201,146, 37,113, 87,175, 94, 45,
+ 56,114,228,200, 83,174,215, 85,175, 94,125,207,210,165, 75,163, 95,120,225,133, 59, 43, 87,174, 44,149,143, 22, 3,195,127,164,
+ 33,182, 19, 30,252,139, 61, 85,112,211,228,114, 57, 15,251,226,210,162, 69,203,205,117,135, 92,124,178,242, 0, 76,243, 33, 76,
+218,129, 3, 7, 94, 27, 56,112,224, 39,246, 48, 72, 80, 52,133,131, 21, 69, 30,255,102,120,153,210,193, 67, 68,173, 0,190,178,
+111,101,245,242, 12, 40,154, 47,103,214,163,204, 89, 6, 97, 50, 18, 66,198, 18, 66, 62,177, 31, 26,123,252,248,241,133, 46, 22,
+170,147,206,231,189, 89,158,220,113,158, 56,113,194,149,243,116,105, 56,255, 73,228,230,230,190,250,217,103,159, 29, 26, 63,126,
+188, 98,232,208,161, 56,125,250, 52,102,204,152, 97,204,205,205, 93,126,175,156,169,169,169, 55,162,162,162,234,207,157, 59,247,
+205, 57,115,230,244, 36,132,176,181, 14, 31, 17,232,245,250,191,234,212,169, 3, 82,228,176, 68,173, 86,171, 99,180,168,125,134,
+255,191,124,177, 26, 1, 88,108,223, 64, 8, 9, 65,209, 40,195, 44, 74,169,107, 67,114,172, 15,124,251, 1,236, 47,227,188,191,
+157, 16,242,220,149, 43, 87,166,253,245,215, 95,110,133,218,229,203,151,119,180,104,209,194,255,228,201,147,239, 82, 74, 55,178,
+212,193,192,224, 59,120, 15, 25,239, 50,128,255,249,144, 65,167,223,199,179,109, 62, 88,191, 24, 30,174,216, 90, 72, 8,249,214,
+201, 26, 83,170,243, 15,139,243,159, 66,114,114,114, 14, 0,199, 82, 36, 73, 73, 73,119,249,177,221,171,216, 66,209, 44,240,108,
+ 38,248, 71, 8, 87,175, 94,125,234, 1,228,177,236, 71, 52,239,239, 0,208,196,211,121,139,197, 50, 17,192, 68,150, 42, 24, 24,
+ 74, 15, 54,251, 52,131,107,129,107, 44, 73,240,120, 59,255,176, 56, 25, 24, 24, 24, 24, 24, 30, 21,184, 89,235,176,181,227, 28,
+128, 14, 30, 42,191,109,165,120, 64,169, 23,244,244,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211,137,123,142,
+135, 83, 23, 92,248,190,252, 55, 10, 47,199,232, 67, 74,233, 3,219, 0,116, 96,156,140,147,113, 50, 78,198,201, 56, 25, 39,227,
+188,199,231,188,248, 48,158, 83,198, 97,166, 0, 90,139,251, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24,202, 4, 62,205,163,181,122,
+245,106,137,248,127,192,128, 1,195,108, 54,155, 99,216,187, 68, 34,249,236,167,159,126,250,182,164,135,244,233,211,199, 86, 18,
+167, 59,120,123,142, 59,206,154, 85, 2, 71,132, 6,170, 95,205,205,211,205,189,154, 98,219,109, 48, 24,170,139,231,148, 74,229,
+185,111,191,253,246, 82, 89,135,115,216,176, 97,149, 93,159,147, 16, 39,109, 19,226,175,124, 37, 59,183,112,246,233, 75, 5, 95,
+178,100,246, 96,209,183,111, 95, 73,105,174,191,118, 45,136, 59,134,232, 79, 3, 52,178,238,133, 90,203,167,182,163, 19, 23, 60,
+ 14,239, 33, 58, 58,186,106, 64, 64,192, 96, 0, 53,116, 58, 93,132, 90,173, 78, 7,112, 54, 63, 63,127,217,157, 59,119, 46,248,
+202,211, 38,145,220, 0, 80,222,190,123,115,199, 53, 26,239,203, 57,111,232, 92,145, 24, 40,160, 32, 4,230,205,151,169, 99, 1,
+205, 39, 43, 17,131, 64,239, 62,222,185, 18, 49, 81, 10, 25, 1,140,155,175, 80,229,227,146, 94, 9, 33, 1, 0, 58, 2,168, 9,
+224, 36,128, 45,148, 82, 29,203,201, 12, 12,143, 15, 92, 39, 42,117,222,231, 61,136,137, 86, 50,158, 44,160,160, 65, 0, 13, 53,
+ 26,141, 82,185, 92, 14,147,201, 4,181, 90,245,249, 75,195,135, 77, 2,135, 92,139, 21,175,124,251,237,183,247,188,210,117,105,
+158,211,167, 79,159,237,174,247, 7, 7,168,166,238,248,245,237,224, 86, 93,103,206, 48, 93,203, 28, 87, 80, 80,192, 41, 20, 10,
+ 24,141, 70, 4, 6, 6, 54, 31,241,226,139, 13, 56, 41, 53,201,100,154,125,115,230,204, 73,189,215,112,190,254,250,235, 81,102,
+179,161,153, 32, 8,114,147,201,164,112,125, 78,160, 90, 51,115,199,175,111,171, 91,119,155, 49, 9, 0, 19, 90,143, 16,138, 68,
+ 86,212,151,175, 13,124, 98,232,199, 99, 58, 32,168,205,204,113, 0, 22,252,203, 51,180, 36, 41, 41,105, 84,124,124,124,255,197,
+139, 23,203,146,146,146,160, 84, 42,161,215,235,163,255,250,235,175,232, 17, 35, 70,180,174, 80,161,194,138,171, 87,175,126, 78,
+ 41,181,249, 64, 89,126,199,247,239, 3, 0,154, 15,158, 82,158, 16,242, 22, 0, 29, 0,180, 78,248,251, 92,155,161, 83,202, 19,
+ 66,198,162,248,104,225, 59,148, 82,183,147,100, 82, 64,190, 97,233, 44,244,120,246, 45,158, 16, 50, 66, 60,222,165, 50,176,233,
+135,121,120,114,192,171,197,142,119,174, 0,254,215,165,179,208,237,217,183, 60,174,106,254,100,101,206, 34, 8,212,163, 37,158,
+227,136,117,243,101,234,110,129,225, 52, 74,233,102, 55,239,178, 51,138, 22,116,118,123,125,183,106,124,154,217, 98,115, 59,225,
+172, 76, 42, 73,223,112,222,122,215,189, 67,235, 19,139,197, 86, 84,182,202,120,216, 2, 3, 3,119,188,251,238,187,124,183,110,
+221,240,245,215, 95,183,248,242,203, 47, 95, 36,132,252, 1, 96, 61,165,244, 10,203,165, 12, 12,143,175,224,242, 40,180,120, 9,
+190, 88,191,230,219,138,105,233,153, 24,242,194,155, 88,190,124, 57,114,114,114, 16, 28, 28, 12,185, 76, 38,157,251,201,251, 81,
+ 1, 1,154,168, 33, 47,142,251, 2, 64,213,123, 13, 80, 41,159, 83,233,174, 8,217, 39, 52,229, 37,156, 84, 46,151,115, 43, 86,
+172, 64,110,110, 46,130,130,130, 32,151, 75,185, 57, 51, 38,168, 2, 2,252, 84,207,143, 28,223, 2,192,170,123, 13,167,201, 84,
+216,226,231,229,223, 6,100,100,100, 96,232,203,227,224,250, 28,153, 76,102, 19, 43, 22,150,204,254, 57,100,102,102, 18, 0, 8,
+ 11, 11,163,197, 69, 86,147,161,115,222,232,132,215,103,111,129,206, 96,250,225,223, 30,207,164,164,164, 81,125,251,246,237, 63,
+117,234, 84, 25,199, 21, 13, 28,214,106,181,208,235,245,136,141,141,197,142, 29, 59,100,239,189,247, 94,255, 95,126,249, 5, 0,
+230,151,150,255,204,153, 51, 9,229,203,151, 55, 0, 64,247,218,254,174,231,226,197,115, 0,224,239,239,239,149, 47, 52, 72, 99,
+ 60,115,230, 64, 13,241,190, 81,237, 99,109, 30,142, 27, 0,168, 75,226, 18, 4,202,111, 89, 48,194,227,249, 23,166,254,104, 61,
+185,106,119,213,164,164, 36,189,243,113, 15, 19, 46, 3, 64,100, 97, 97, 97,121,215,131,226,245,102,139, 45,194,211,243, 58,189,
+178,200,173, 0,179,216,192,255,248,227,143, 0,128, 79,223, 26, 36,249,234, 96, 38,207,243, 69, 69,237, 39,159,124,130,201,147,
+ 39,203, 55,111,222,220,101,233,210,165, 93, 8, 33,115, 61, 9, 85, 6, 6,134,127,159,200,114,254, 45, 81,104,113,132,248, 7,
+248,251,161,207,192,151,240,251,239,155,208,170, 85, 43,199,185,196,196, 68,244,237,221, 19, 63,125, 63, 7, 0,252,239, 39, 80,
+247,251,156,156, 60,237, 7, 79,246, 95, 48,229,102,106,225,254, 13, 27, 54,160,101,203,150,197,238, 31,216,175, 15,126,248,230,
+ 19, 80, 74,101,247,245,242, 40, 39,243, 15,208, 96,192,144,151,225,238, 57, 47, 14,237,181,161,115,223,121, 29,210,178,180,115,
+ 88, 82,123,184, 56,127,254,188,196,104, 52, 14, 8, 8, 8,104, 34,149, 74, 35, 21, 65,229,133, 20,190,113, 86, 6, 73,186,154,
+ 30,161,107,245, 70,135,200, 39, 63,125,173, 45, 94,159,189, 5,115,151, 31,248,190, 62, 82,255,213,115, 1, 69, 71, 71, 87,141,
+143,143, 47, 38,178, 10, 10, 10, 80, 88, 88,136,252,252,124, 20, 20, 20,128,227, 56,140, 27, 55, 78,182,115,231,206,254,209,209,
+209,219,124,232, 70,188,217,124,240,148, 34,177, 33,145, 22, 78,156, 56,209, 24, 17, 17, 97, 84,171,213,148,151, 41, 10,218, 12,
+157,226, 15, 0, 28, 47, 43,152, 59,119,174, 41, 54, 54,214,192,243,188,252,213, 87, 95,245,105,122, 24,163,209, 72,157, 57, 77,
+ 38,163,227,248,204,153, 51, 77,145,145,145, 70,181, 90, 77,205,102,147,207,239,225,212,181,108, 40,100, 18, 40,100, 18, 40,229,
+ 82,248, 39, 52,130, 34,231, 52,172, 86, 43, 62,254,248, 99,115, 84, 84,148, 73,173, 86, 83,185, 92, 46, 27, 51,102,140,215,112,
+ 14, 27, 54,140, 6, 5, 5,153,213,106,181,108,242,228,201,119,205,238,252,231,201,219, 80,201,165, 80, 43,120, 84, 74,140,131,
+130,234,125, 14,171, 68, 82,188,167, 91,161, 80,160, 69,139, 22,168, 81,163, 6,214,173, 91,215, 6, 0, 19, 90, 12, 12,255,114,
+184, 90,177,238, 18, 90, 27, 55,110,108, 13,251,170,211, 93,187,118, 45, 90,109, 26, 20, 99, 71,245,198,243, 67, 7,192,102, 19,
+ 28,203, 77, 16,142, 96,228,115, 93, 32, 8, 54, 95, 30,236,117,136,103,105,159,227,204, 73, 9, 39, 1,128,138,241,209,244,197,
+231,255, 7,155, 32, 20, 77,131, 10, 0, 18,224,165,161, 79, 22, 29, 43,131,112, 74, 96,195,155, 35,158,129,187,231, 84,173, 24,
+195, 89,205, 6, 16,167,197, 30, 31,196, 98,155,140,179, 56,246,237,219, 23,173, 86,171,103, 15, 26, 52, 40,102,204,152, 49,114,
+ 27, 31,196,175,222,159, 21,248,246,194,253, 49, 58,163, 89, 50,176,109, 2,222,248, 95,109,188, 49,247, 79, 81,100,189,152,152,
+152,251,175,254, 70, 1, 1, 1,131, 23, 47, 94,124,151,200, 74, 75, 75,227, 10, 11, 11, 97, 54,155,133,130,130, 2,216,108, 54,
+140, 31, 63, 94,250,222,123,239, 13, 38,132, 76,182,243, 24,221,113,238,184, 70,227, 9, 33, 99,207,156, 57, 19,255,238,187,239,
+154,219,181,107,119, 51, 49, 49, 81, 43,145, 72, 16, 29, 29, 61,175, 99,199,142, 33, 83,167, 78, 53,119,233,210,229,186, 68, 34,
+ 65,165, 74,149,180,167, 79,159,142, 7,160,242, 53,238,206,156,223,254,249,153,216,234, 67,199,142, 29,111, 84,170, 84, 73, 43,
+145, 72,112,233,215,153,212,215,247, 41,229, 57, 84,142, 13, 20,155,145,128,202, 15,200, 41,218,237,216,177, 99,114,213,170, 85,
+ 11, 57,142,195,169, 83,167,226, 0, 40,189,113,170, 84, 42,203,192,129, 3,111, 94,184,112,225,174,235, 1,128,151,112,104, 82,
+213,110,192,138,173, 15, 36,239,241, 24, 78,169, 4,214,247, 70, 13,226,131,148,128,194, 63,204,152,159,159,143,128,128,128, 34,
+ 11,153,217,140,227,199,143,163,105,211,166,173, 87,173, 90,181,147,229,119,198,201, 56,255,134, 59, 45,242,111,179,102,137,130,
+203,157,143,214, 14,215, 72,217,108, 86, 36,150,143,196,204,247,135,193,102, 19, 96,179,217, 96,181,255,218,108, 54, 88,204,230,
+ 50, 9,220,253, 60, 39, 56, 64, 53,117,211,138, 87,130,219,245,250,164,253,244,119,135,110,181,217, 0, 65,176,192, 98, 1,108,
+130, 5,130,205, 6,139,197, 84, 38,225,180, 8, 2,226,227,162, 48,253,221,161,112,125,206,178,159, 86,117,255,115,253, 56,117,
+171,110, 51,222, 4,240, 49,211,246, 15,199,146,165, 86,171,103, 47, 91,182, 44,190, 81,163, 70, 28, 0,236,190,104, 85,188,189,
+112,127,204,230,233,205, 73,243, 26,161, 72,207, 53,226,213,207, 79,224,247,253,233,155, 92, 69,214,191, 24, 53,146,146,146,138,
+137,172, 89,179,102,133, 45, 92,184, 48, 22, 0,122,247,238,125,187,125,251,246,153, 23, 47, 94, 68,116,116, 52,201,204,204,236,
+ 10,224, 85,123,198, 31, 75, 41, 93,232,129, 87, 91,190,124,121, 67,120,120,184, 81, 20, 68, 28,199,129,231,121,148, 47, 95,222,
+ 16, 17, 17, 97,172, 84,169,146, 86, 38,147,129,227, 56,136, 66,207,199, 2, 8, 18,137, 4, 34,167,171,181, 71,228, 44, 13,164,
+188,211,245,244,110, 11, 18,199,113,110,159,231, 9, 74,165,146, 2,240,120,189,132,115, 42, 30,249,146, 61, 4,190, 63, 70,165,
+132,144, 29,148, 82, 28, 59,118, 12, 87,175, 94,133, 76, 38, 67, 84, 84, 20, 38, 79,158, 12,163,177, 72,239,246,237,219,183, 53,
+128, 83, 44, 55, 51, 48, 56,176,227,223, 38,176, 92,173, 90,238,124,180, 56, 55,106,210, 33,128,138,196,142, 27,241, 99,177,194,
+ 98, 49, 3, 94, 22, 85,245, 85,104,121,122,142,205, 38,148,248, 28,209, 71, 75, 16, 40,239, 86,100, 9, 2,172, 22, 75,153,188,
+ 64,193,102,129, 32, 88,224,238, 57,132,112, 54,123,129, 47, 99,249,228,225,192,104, 52, 14, 28, 48, 96, 64,140, 40,178, 0, 32,
+179,192,194,235,140, 22, 73,243, 26,161, 92,131,182,125, 17, 17,164,192,202, 93,183, 17, 17,164,222,245,152,136, 44,232,116,186,
+ 8,165, 82, 9,173, 86,235,176,100, 45, 92,184, 48,214,100, 50,113, 38,147,137, 91,185,114, 85,220,242,173, 23,203, 45,219,124,
+177,220,226,181, 71,203,229,228,228,213,160,148,170, 40,165, 42, 0,159, 16, 66, 20, 37,241,203,100, 50,135, 64,113, 22, 64, 10,
+133,226,158, 4,140,163,160,177,139, 51,153, 76,230,246,184,107,247,154, 55,200,156,133, 22,104,145, 85,203, 69,108, 73, 36, 18,
+136,190, 81,222, 32,151,203, 29,113,119, 7, 94,226,244, 60, 73,233, 93, 49,205,102, 51, 10, 11, 11,145,155,155,235, 92, 40, 67,
+ 20,193, 12, 12, 12,238,181,200,191, 85,108, 21, 43, 63, 92,213, 36,236,171, 79, 91, 45,102,183,226,103,213,175,123,113, 51, 85,
+139,168,176, 67,160, 30, 86,170,246,132,254,253,251,127, 31, 29, 29,237, 88, 79, 75,161,242, 11,125,241,149, 15, 97,181,154,225,
+175,226,240,194,224, 39,139,137,172, 34,139,150, 9,158,228, 92, 78,158,246,131, 39,251,206,159, 18, 24, 16,186,223, 85,252, 76,
+ 95,114,180, 79, 78,190, 49,142,227, 14, 35,135, 68,219,250,190,244,225, 48,167,194,253,228,138, 69, 19,223,240,249,197, 17, 78,
+218,103,196,188, 23, 41,239, 87, 93,205, 21,236,122,123,232, 19, 63, 59,139,185,144,144,144, 13,157,250,204,237,144,150,205,124,
+180, 30, 22,228,114,121,135, 49, 99,198, 20,171,241,194,252,165, 86,181, 66,106,219,123, 54,147, 28,221,190,138,219,125, 38, 83,
+ 80,202, 36, 52,156, 94, 77,122, 92,226,173, 86,171,211,117, 58, 93,180, 94,175, 71,126,126, 62,242,243,243,139, 11, 2,169,148,
+188,248,242,232, 48,169, 76, 14,139,217,132,223,151,125,228,149,179, 77, 34,185,209, 58, 1,229,187,215,246,135, 68, 42, 47, 56,
+155,148, 52,143,231,121,112, 28,135, 95, 63,127,251,213,181,179, 95,241, 7,128,147, 27, 62,207, 31, 48,238,179,249, 28,199,193,
+104, 52, 42, 74, 19,238, 91,183,110,197, 25,141, 70,131, 93,160,137,166,117, 92,187,118,173,156,209,104,212, 59, 31,247, 5, 42,
+181, 63, 16,148, 8,168, 35,238,178,158, 93,191,126, 61,198, 98,177,232,120,158,135,201,100,242, 73, 21,113, 28, 39, 59,117,234,
+ 84,156, 32, 8,110,175,175, 81, 33, 6,136,170, 13,200, 3, 75, 83,224,250,116,141,187, 22, 48, 3,195,127,221,178,133, 82,234,
+139, 71, 65, 96,185,251,239, 44,180,218,108,220,184,145, 58,183, 16,173, 22,139, 93,100,253, 45,122,108, 54, 1, 41, 25, 6, 92,
+188,120, 9,115,231,206,197,222, 3,111, 5, 78,157, 58, 85,241,222,123,239, 25,251,247,239, 63, 91, 16,132, 58, 28,199,157,236,
+211,167,143,219, 86,154, 32, 8,229,142, 30, 61,234,168,244, 44, 22, 11,252,253,253,225,239,239,143,170,149,226,238, 18, 89, 54,
+155, 13,230, 18,186, 14, 69, 31, 45, 66, 5,106,177,216, 96, 19, 4,135,248,201,201, 55,198,173,223,118,172,162,211,229, 85,196,
+ 63, 45, 26, 85,247, 44, 6, 71, 76,118,196, 99,197,162,137,111, 76,253,250,107, 69,142, 45,124,204,128, 62,207,215,236, 59, 96,
+ 48, 6, 62,243, 84,107,163,201,180, 78,194, 81,193,226,120, 30, 56, 80, 20,243,209, 98,120,112,200,204,204, 36,122,189, 62, 33,
+ 40, 40,168, 88,133, 21,173,209, 26,199,245,171,156,210,241,237, 61, 49, 6,179, 13, 10, 41, 71, 95,237, 25,159,114,240,151,149,
+161,153,198, 76, 34,142, 70,252,151,227,236,149, 43, 87,162,203,149, 43,135,252,252,124, 88,173, 86,161,119,239,222,183,121, 94,
+ 26,199, 75,165,164,219,128,209, 66,106,106,138,133,227, 36,160,212,134,167,250,142, 32, 10,165, 74,102, 54,153,172, 0,198,122,
+ 88, 83,210,121, 10, 7,255,142, 29, 59,134,136, 35, 1,215,206,126,197,223,233, 92, 64,131, 6, 13, 66,156, 71, 29,250, 40,138,
+ 73,255,254,253, 85,229,203,151, 39, 0,112,120,217,187,162,245,140,116,239,222, 93, 89,190,124,145, 31,254, 31,159,251,190,166,
+118,152,154, 2,121,215,128,188,235,119, 89,178,186,119,239,174, 72, 74, 74, 42, 85, 94,180, 59,192,123,156,187, 75,195, 91,129,
+212, 99, 62,113, 13,173, 79, 44,239,182, 2, 63,251, 41, 14,114,191, 80, 99,147,183, 55, 31,100, 98,139,129,193, 39,184,104,145,
+127, 15,236,107, 27,238, 0,208,198,254,139, 98, 62, 90, 93,187,118,221, 89, 76, 61, 82,192, 98, 53,223, 37,178,108, 54, 27,164,
+196,136,185,115,231,226,181,215, 94, 3, 0,217, 27,111,188,241,243,212,169, 83,159, 22, 4,161, 14,165,180, 37, 33,164,164, 86,
+227,142,232,232,232, 52, 74,169,148,227,184,150,159,127,254,121, 72,151, 46, 93,224,239,239, 15, 42,208,187, 68,150,205, 38,192,
+108, 54,193,147, 73, 43, 56, 64, 53,117,211,170, 49,193,237,122,126,210,222, 38, 8, 91, 69,145, 37,216,108,128, 80,116, 83, 86,
+250,109,108,249,125, 29,190, 88,244, 69, 14, 8, 61, 15, 10,129,227,184,147,158,194, 40, 8, 66,157, 61,135,207,181,108,209,168,
+ 58,166,126,253,181,226,204,209, 59, 63,143,126,253,157,154,125, 7, 12,198,170,159,150,129,179,230, 30,115, 22, 89, 54,139,128,
+188,156,204,238,219,153,143,214, 63, 6,139,197,130,156,156, 28, 88, 10,115,172, 13,163,181,121, 31,246,141, 48,166,229, 24,120,
+169,160,179, 86, 11, 72, 55,110,207,190, 46, 81,171,213,143, 69, 92,243,243,243,151,141, 24, 49,162,245,174, 93,187,100, 28,199,
+ 33, 63, 63, 31,109,219,182,205,204, 16, 98,149, 47,190, 60, 58, 44, 37,229,182, 53, 64,197, 27,101, 50, 41,210,211,211,133,214,
+ 93, 6,233, 7, 12,123, 45,230,181,119,167, 47, 78,217,187,112,161, 47,207,112, 30, 9,232,122,238,171,175,190, 50,197,198,198,
+ 26, 20, 10,133,124,232,208,161, 62,245, 31,154, 76, 38, 58,115,230, 76,163,235,232, 66,147,201, 68,231,206,157,107,138,139,139,
+ 51,170, 84, 42,106,177,120,247,251,228, 56, 98,125, 97,234,143, 86,171,213, 90,204,138, 37,138, 44,139, 64, 10, 23, 44, 88, 96,
+142,139,139, 51,169,213,106,170, 80, 40,100,190,132,115,244,232,209, 52, 56, 56,216,172,209,104,100,227,198,141,187,175, 81,135,
+ 22, 27,248,169,159, 59,166,119, 80,248,251,251,163,160,160,192, 17,214,232,232,104, 38,182, 24, 24,220,224, 46, 45,242, 47,179,
+194,121,242,209,114,235,192, 32, 0,133,105,233,153, 17, 97,145, 9,176, 90,173,246,205, 2,171,197,130, 49, 47, 13,192,236, 69,
+ 69,243, 61,218,197, 86,199, 55,222,120,227,103,184,248,123,185,195,138, 21, 43,166,188,241,198, 27, 1,105,105,105,155,191,255,
+254,251,144, 65,131, 6, 97,236,216,177,248,228,147, 79, 32,149, 43, 17, 18, 94,206,241, 28,241,185,153, 25,217,160,160,133,110,
+ 21,164,221, 71,139, 82,240,161,225,241,176,216, 44, 16, 44, 22, 88, 44, 22, 16, 73, 81,212,182,252,190, 14,131,158, 27, 13,169,
+ 34, 32,248,179,185, 31,235,107, 54,140,126,250,189,225,195,141,222,229, 41,184, 51, 71,239,252, 60,250,181,113, 29, 69,145,181,
+102,217,162,243,159,142,239,185, 92, 33,231, 29,207,177, 8, 2, 56, 78,194,124,180, 30, 34,194,194,194,104, 70, 70,198,245,220,
+220,220, 42, 26,141, 6, 89, 89, 89,200,206,206, 70,110,110, 46,140,249, 57,214, 80, 91,174,150, 88,179,193,243, 60,210,111, 89,
+ 97,179,217, 82, 31, 19,107, 22,238,220,185,115,161, 66,133, 10, 43,222,121,231,157, 1,227,199,143,151, 10,130,128,139, 23, 47,
+ 2,132, 80,169, 76, 14,238,255,236, 93,117,120, 20,199, 27,126,103,207, 37, 23,247,132,132, 96, 73, 72,240,226,222, 98,197,139,
+187, 91,177, 66,113, 40, 86, 40, 20, 43,197,138,148, 2,197,225, 7,197,139, 20,119, 8, 30,130, 4,226,238,114,185,156,238,252,
+254, 32,151, 30,105,228, 46,161,165,208,125,159,103,159,189,155,221,125,119,102,118,119,246,221,111,190,249,134, 97, 32, 16,240,
+145,145,145,201,202,172,108,227,180,148, 39, 19, 8, 69, 96,120,194,226,134, 9, 71,182, 24,252, 38,188, 3,195, 23,102, 25, 71,
+ 2, 10,133, 66,220, 60,176, 34,179,197,224,111,173, 1, 64, 40,150,166,181,105,211, 38,162,106,213,170,202,187,119,239,122,163,
+192,168,195, 66,158, 79,125,215,193,211,120, 50,169, 68,217,186,117,235, 72, 35,103,248,217,117,153, 3,190,156, 77, 8, 79,164,
+236,216,177, 99, 68, 96, 96,160,146,199,227,225,233,145,101,153, 93, 7, 79,147,144, 63,199,244,254, 5,167, 95,210, 17, 15, 15,
+ 92,241, 91,188,120,177,174,125,251,246, 81, 70,127,177,240,240,112,247, 14, 29, 58,136,127,248,225, 7, 93,135, 14, 29,162,171,
+ 85,171,150,205, 48, 12,130,130,130, 60,139,179, 84, 25, 33,149, 74,117,195,134, 13,139,124,252,248,113,169, 70, 29,150,132,114,
+229,202,129,101, 89,180,108,217, 18,185,185,185,156,101,139, 3,135,143, 16, 5,227,104, 21, 27, 25, 94,167,215,141, 27, 53,113,
+193, 58,128, 88,153,180, 2,127, 26,150, 40,200,148, 41, 95,203, 1, 72,141, 98,107,210,164, 73,105, 37,101,194, 68,100,125,210,
+175, 95, 63,204,156, 57, 19, 43, 87,174, 52, 44, 95,190,156,247,236, 69,152,118,240,151,243,210, 11,156, 7, 20, 52,155,213,177,
+227, 10,227, 75,203, 80,206,107,218, 97,233,130,152,132,156,171,131,199,204,201,111,189, 12, 0, 50,137,155, 1, 0, 54,254,244,
+147, 82, 32,182,150,247,236, 51, 0, 0, 90,175, 91,189,236,240, 34,252, 92,178,216,162,196,127,220,164,105,118, 70,145,181,254,
+135,197,143,109, 72,194,218,241, 95, 7,235, 76,207, 3, 0,246, 10, 28,110,218, 97,105,219,196, 84,229,143,220,173,246,207, 64,
+163,209,156, 91,179,102, 77,249, 57,115,230,136, 82, 83, 83,145,156,156,140,180,180,180,252, 37, 59, 59, 27,174,174,174,248,253,
+247,223,181,153,153,153, 55, 63,166,178,191,126,253,122,253,209,163, 71,113,233,210,165,222, 51,102,204, 16,184,186,186, 18, 27,
+155, 4,162,211,106, 0, 80,154,148,148,196,202,172,108,227, 28, 93, 60, 35, 99,227, 19,253,117, 90, 13, 88,131,182, 72,111,243,
+188,240, 14, 83,158, 60,121, 82,126,197,138, 21, 26,211,145,128,125,166,173, 91, 83,167, 78, 29,251,181,107,215,106, 58,118,236,
+ 24, 97,116, 94, 55,199, 25,254,204, 43, 76,124,242,228, 81, 64, 65,206, 22, 35, 87,108, 53,114,154,142, 70,236,244,245,166,173,
+149, 43, 87,182, 15, 12, 12,140, 40,142,183, 66,133, 10, 42, 55, 55, 55,141,159,159, 95,182, 64, 32,120, 99,201,210,233,114, 42,
+ 84,168,192,186,184,184,104,170, 86,173,154,109,169,211,190, 84, 42,165, 70,171, 88, 97,176,100,212,161,128, 7,125,191,126,253,
+242, 35,195, 79,169, 92, 57,110,192,128, 1,110,147, 39, 79,198,214,173, 91,113,237,218,181,212,130,199, 52,111,222, 28,151, 47,
+ 95, 94, 0, 96, 30,247,116,115,224,240,225,161,196, 56, 90, 5,177,109,219,206, 63, 96,226,211, 84, 24, 22, 45, 90, 36,206,179,
+100,181,254,234,171,175,160, 82,169,236, 10, 81,119,173,140,177, 54, 10, 19, 89,203,150, 45,219, 67, 41,245, 4,208,196, 96, 96,
+111,109,249,121, 91, 75, 51, 20, 99, 62, 39, 37, 12,143, 97, 72,182, 72, 64,239,255,180,121,235, 91, 17,191,243,156,223,125, 65,
+240,112,221,234,101, 42, 0,173, 11,138,173, 30, 61,122,228, 20,228, 52, 98,244,152,209,249, 34,107,221,234,101,103, 3, 63,241,
+250, 98,206,240,111, 11, 21,103,223,206, 27, 37,103, 24,210,200,212, 71,171, 48,206,119,160,150, 57,206, 60,136,197,226, 61,123,
+247,238,109,223,180,105, 83,239, 26, 53,106, 48,169,169,169,200,206,206, 70,118,118,182,209,234,133,167, 79,159,178, 17, 17, 17,
+ 49, 98,177,120,239,199, 84,246,188,105,117,214,184,185,185,157,155, 59,119,238,128,228,228,228, 14,105,105,233, 14,199,183,125,
+139,118, 61,199,144,230,237,251, 42, 53,148, 47,137,142, 75,240,187,120,114,183,253,169,125,235,161,213,104, 70, 17,242, 83,136,
+ 49,188, 67, 33,249,204, 49,134,113,240,243,243, 83,154, 10, 21, 47, 47,175, 92,119,119,119,117, 96, 96, 96,126,122, 97,163,249,
+ 10, 43,187,165,156,121,254, 95,202,146,234,211, 40,218, 10,134,141,144,201,100, 48,138, 47, 75,242,105, 58,218,178,208,134,178,
+132, 81,135,166,156,219,239, 81,129,233,182,237,132,240,118,238,220,217,106,231,206,157,159, 0,184, 15,224, 12, 0, 93,222,113,
+249, 78,243,148,210,249, 0,230,115,207, 59,199,249, 95,229,252,192,173, 89,205,145,231,155,149,135, 22,148,210, 75, 69, 10,173,
+146, 96,116,124, 7,192, 76,154, 52, 41, 77,165, 82,217, 13, 24, 48,160,216, 99,226,227,227,183,238,216,177,227, 45,145,213,173,
+ 91,183, 33, 7, 15, 30, 60,151,152,152, 88,170,130,217, 89, 75, 23, 93, 58, 54,221,174,121,199,165, 95, 1, 88, 94,184,204, 4,
+ 27,248,137,219, 23,235, 86, 47, 59, 92, 64,108,253, 10,160, 91, 97,245, 5, 0,109, 62,239,130,221,219,214, 25,125,187,164,143,
+239,198,156,234,125,111, 97,161,163, 21,109,173,196, 11,243,242, 49, 25,156,143,214, 63, 2,127,127,127,195,245,235,215, 39,143,
+ 25, 51,102,213,103,159,125,230,209,165, 75, 23, 97,185,114,229, 32, 22,139,241,234,213, 43, 92,185,114, 69,251,250,245,235,152,
+156,156,156,201, 53,106,212, 48,124,140,117, 16, 23, 23,247, 44, 47, 24,233, 68,227,215,148, 88, 34, 21,246, 29,250,149,103,254,
+168,195,125,235,161,206, 85, 1, 0,159, 16,178,156, 16,242, 75, 17, 14,241,111, 4, 5,159, 47,124,240,224,129,183,209,106,165,
+213,106,197,198,244,187,119,239,122, 27, 99,107,229,230,230,154, 61,234,240,239,226,124,244,232,145,167,113,116,164,113,116, 33,
+159,207, 23, 6, 5, 5,121, 26, 57,213,106,181, 89,163, 14, 69, 34,145,240,193,131, 7,158, 6,131,225,157,141, 58, 44, 32,140,
+ 79,231, 45,198, 70,217, 40,178,140, 62, 29, 92,183, 33, 7, 14, 31, 54, 46, 22,156, 84,218,168, 39, 74, 37,180,140,142,239, 22,
+ 40, 61,126,249,242,229,219,244,233,211,231, 45,145,213,163, 71, 15,195,161, 67,135, 46,186,185,185, 37, 48, 12,243,204,210,124,
+228,251,104, 1,130,130,219, 24,134,121,216,164,110, 85, 48, 12,243,112,206,240,225,234, 69,248,249, 45,177,117,228,240,254,182,
+ 69,181,139, 0,224,224,236,129,126, 67,198,161,223,144,113,118, 0, 26, 3, 69,143, 86, 44, 46, 31, 28,254, 62, 52,106,212, 40,
+ 46, 36, 36,164,223,217,179,103,251, 94,190,124,185, 85, 78, 78, 78,121, 66, 8,164, 82,105,184, 70,163, 57, 39, 22,139,247,124,
+172, 34,171, 40,104,181, 90,253,140, 5, 43,118,240,248, 66, 61,203,106,137, 86,171, 29,106,201,115, 62, 99,198, 12, 6,133,248,
+ 94,141, 31, 63,190,208,244,247,197, 57,107,214,172, 66, 71, 9,142, 31, 63,190,216,209,131, 69,225,235,175,191,126,103,163, 14,
+205, 20, 95,156,160,226,192,225,227,179,106, 21,234, 11, 92, 42,161,197, 48,204,195, 66, 70, 23, 18, 0,180,176, 17,125,148, 82,
+ 61,143,199, 91, 96,107,107, 59, 74,169, 84,254,222,173, 91,183, 73, 61,122,244, 48, 0,111, 28,228, 75, 91,168,180, 12,229,188,
+ 22,157,190,159,156,158,173, 94, 91,112, 91, 65,203,147, 81,108,173,255,113,217,134,195, 7,247,246,136,143,141,222, 80, 84,217,
+138, 18, 84, 69,141, 86,204,200, 84, 45,104,209,233,251,175,210, 50, 85,156,143,214,123,176,108, 1,216, 9, 96,103,193, 73,165,
+255, 11,160,148,170, 9, 33, 83, 9, 33, 70,139,238,212,215, 23,126,220,240,231,131,191,230,145,233,182, 98,172, 89,113,230, 76,
+ 16, 93,216,113,197,109,251, 27, 56, 19,138,153, 32,186, 56, 36, 88,200,151, 0, 0, 66, 1, 47,177,168,201,163,133, 2, 94,226,
+ 59,186,134,198, 0,135, 11,184, 39,154, 3,135, 15,182, 45,182,204, 71,203, 40,130,138, 66, 81,113,178,138,131,193, 96,248, 30,
+192,247,239,178, 96,143, 95,100,109, 6,176,217,220,253,243,124,178, 6,229, 45,133,231, 51,229,137,197,101,235,209,163,199, 70,
+ 0, 27,185, 91,237,159,193,129, 3, 7, 12, 92, 45,188,245,128,111, 32,132,252, 98, 20, 94,230,110, 43,176,223,209,191, 33, 95,
+127, 7,231,233,127,146,239,120,136,222,229,125, 55,210, 28, 56,112,248,247,163, 48,107, 86,177,163, 14, 57,112,224,240,193,137,
+ 45,117,105,182,113,224,192,129, 3,135,119,247,177, 84,152,175, 37, 1,208,170,136,131,204, 30, 77, 64, 8,105, 85,138, 76,157,
+227, 56, 57, 78,142,147,227,228, 56, 57, 78,142,243,191,197, 89, 18,183,233,241,132,144,145,148,210,205,248, 0, 80,228,128, 22,
+ 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201,113,114,156, 28, 39,199, 89,202,243,140,252, 39,206,243, 14,242, 73, 11,
+ 46,198,109, 92,215, 33,135,191, 29,158,158,158, 96, 89, 22, 12,195, 32, 58, 58,154,171, 16, 14, 28, 56,112,224,240, 81,193, 98,
+103,120, 14,133,152, 4,189,187,206, 1,139, 89,111,254, 96, 25,141,252,109,254,127,162,220,132, 56, 2,232,168,144, 8, 59, 7,
+216, 10, 27, 62, 78,201,189,174,212, 26,142, 1, 56, 66, 41, 77, 51,135,131,101, 89, 28, 59,118, 12,157, 58,117, 50,114, 2, 0,
+220,220,220,112,236,216,177,252,253,234,212,169,147, 31,188,145, 3, 7, 14,127,243,179,109, 23, 80, 14,132, 12, 5,232,159,195,
+ 46, 89, 26, 76,211,159,110,123,107, 63,219,170, 67,192,144, 0,147, 36, 21, 40,182,208,180,224,168, 34,218, 12,227, 11,199, 54,
+ 52, 52,212,187, 82,165, 74, 17, 0,210, 11,236,246,151,109,180,152,135,159, 16, 66, 28, 43,212, 30, 40,147,200,190,212,104, 52,
+ 62, 86, 10, 69, 98,106, 74,210,198,212,200, 71,235, 77,118,179,190,117,235,150, 91,253,250,245, 99, 1,100,149,196,201,129,195,
+ 59,126, 87, 54,199,219, 1, 75,223,157, 51, 60,169,210,221, 7,122,102, 16, 40,250,131,224, 1,125,125,160,123,169,120, 42,117,
+243, 0,203,175, 7,160, 54, 64,107,203,165,146, 90, 42,141, 54,145,165,116, 32, 13,221,119,223, 98,190, 10, 61, 79, 0,104, 95,
+196,214, 5,244,245,126,203,132, 18, 75,103,223,185,124, 72,108, 43, 35,168, 84,167,219, 52,152, 68,112, 46,195,133,145, 2, 24,
+ 76, 8,249, 76, 38,147, 85,201,201,201, 9,167,148, 62, 2,176,129, 82, 26, 91, 74, 78, 6,192, 48, 43,185,188,157,183, 66, 84,
+ 59, 50, 57, 35, 38, 75,103,184, 2, 96,185,185,194,200,132, 75,228,109, 39,191,180,186, 79, 11,255,134, 1,149,193, 6, 95, 70,
+174, 70,219,249, 98,116,118,231,121, 55, 98, 39, 19, 66,106, 83, 74, 53,230,242, 49, 12, 51,194,221,221,221,199,195,195, 35,108,
+ 93,231,154, 91,198, 29,125,128, 46, 93,186, 0,192, 8,150,101,125, 60, 60, 60,194, 8, 33, 91,204,109, 27, 9, 33,110, 0,248,
+148,210,168,188,255,114, 0,129, 0, 42, 0,120, 13,224, 9,165, 84, 89,198,107,244, 65,112,122,122,122,186,179, 44, 59,220,197,
+197,165, 67, 66, 66,194, 9,134, 97,126,142,142,142,142,125,207,109,207, 38,163,127,133,185,107, 0,163, 44, 57,129, 84, 42, 77,
+200,205,205,117, 6, 0,137, 68,146,168, 82,169,254,182, 81,130,255,228,185,254,153, 55, 3, 70,156,185,250,164,157,105, 82,155,
+ 38, 1,133, 60,184, 36,224,204,213,224,102,111,239, 23,104, 40,172, 13,204,139,190,138, 5, 11, 22,144,133, 11, 23, 14,169, 88,
+177, 98,101,134, 97,158,207,157, 59,247,173,208, 55, 5,183,205,155, 55,239,207,200,173,133,112,122,250, 54, 58,210,187, 79,207,
+ 22, 99, 71, 14,182,242,112,178, 66, 92,178,210,225,167,173, 59, 87,236,220,185,187,227,240,222,173,219, 1,192,183,223,126,219,
+181, 92,185,114,229,121, 60, 94,216, 55,223,124,243,107,113,156, 28, 56,252, 13,176,108, 82,233, 18,159,207,128,158,114,228,210,
+ 30, 0, 25,220,188, 97,157, 38,163, 6,118, 34,148, 39, 65,223, 17,211,245, 22,115,149, 31, 34, 6, 79,181,168,122, 96,192,164,
+158,157, 90, 49,159, 4,150,135,155,147, 13,192, 8,176,233,100,184,195,218,101,223,108, 0, 80,191, 20,217,108,255,234,198, 30,
+196,165, 27, 64, 8, 64, 8,192, 16, 32, 59,151, 69,155,174,131,230, 89, 46,148, 8, 99, 43, 35,152,180, 39, 23, 0,120,239, 64,
+100,213,118,114,114, 90, 63, 97,194, 4,187,234,213,171,187, 73, 36, 18,153, 74,165,170, 28, 26, 26,234, 51,103,206,156,214,132,
+144,165,148,210, 67, 22,114,122, 85,242,116,223,191,118,210,176,122, 53, 42,120, 67,160,201, 6,171, 86,150,123, 17,250,178,225,
+232, 13, 7, 70, 16, 66,250, 88, 56,101,194,236, 77,227, 7,250, 87, 83, 0,218, 39,215, 32,224,241, 32,179,177, 67,107, 62, 15,
+ 60,130,170,131, 78,135,207, 34,132,204, 43,169, 29,139,141,141, 53, 90,182,124,142, 29, 59, 22,208,169, 83, 39,212,243,241,196,
+173, 78, 73,168,123, 36, 26, 0,242,211, 45, 40,235, 66, 0,179,242,218,225,221, 60, 30,239,108,171, 86,173,124,134, 15, 31, 78,
+234,212,169,131,160,160,160, 10,123,246,236,105,197,231,243,195, 12, 6,195, 35, 0,207, 41,165, 58, 51,185, 5, 0,124,121, 60,
+ 94,245,127, 51,167,187,187,187, 84,163,209, 12,242,244,244, 28,217,185,115,231,234,157, 58,117, 34,190,190,190,120,246,236, 89,
+157, 83,167, 78,205,171, 89,179,230,163,232,232,232,205, 34,145,104, 71,108,108,172,234, 61,124,225,141, 4,224,158,103,224, 88,
+ 96,198, 58, 22,192, 2, 74,105,156,185,231,200,205,205,117, 54,222,127,132, 16,231,191,179, 60,150,156,139, 16,242,148, 16, 98,
+159,247, 27,197,173, 25,134,129, 94,175, 87,234,245,250,138, 37,112,250, 2, 96, 44,200, 50,165,148, 22, 23, 8, 90, 10, 0,109,
+ 26, 7,164,130, 32,216,104,209, 42,228, 35, 51, 56, 95,128, 81, 4,156,185, 22,108,255,150, 21,172, 0, 22, 44, 88, 64,230,205,
+155,135,249,243,231,119, 2,208,148,101,217, 43,254,254,254,107,222,162,100,217,252,109,243,230,205,251,113,193,130, 5, 4, 64,
+161, 13,137,125,249,154, 3,190,248,162, 75,139,197,179,199, 91,197,164,104,241, 32, 76, 5,123, 43, 33,230, 77, 29, 35, 82,171,
+117, 13, 55,252,186,115,228,186,165,211,183, 24, 12,134, 79, 1,124, 98, 48, 24,238, 2,248,181, 56, 78, 14, 28,254, 6,180,176,
+104, 82,233,162, 76,183,168,216,189, 25, 12, 24,236, 93,206,165,199,132,225,189,164,129,254,149,144, 11, 43,132, 39, 27,112,242,
+248, 41, 0,216,103,153,213,169,247, 39,124, 33,118, 44,155, 63,213,175,105,189, 64, 60,142,209,225,110,140, 1, 57, 97, 58,240,
+ 24, 29, 12, 44, 5, 40,114, 75, 91,234,232, 52, 61,174, 62,215,128, 33, 0,143, 1, 24,134,128,199,148,146,140,213,188,248,118,
+219,189,192,228, 4, 22, 96, 53, 47,202,248, 2,250,180, 74,149, 42,171, 23, 46, 92,232,154,144,144, 96,127,247,238, 93,136,197,
+ 98,216,217,217,241,221,221,221,253, 86,175, 94,157, 49,126,252,248,169,132,144,251,148,210,112, 51, 57,253,219,127, 82,253,250,
+230,101,223,218,232,110,157, 66,250,222,255,129,199, 80, 8,229, 86,240,145, 74,113,234,139, 74,246, 61,142,135, 29, 34,132,248,
+ 83, 74, 99,204,225,172,228,234,208,166,186,191, 63,210, 14,175,195,131,180, 92,156,138, 85, 97,104,235, 6,168,102, 47, 69, 83,
+189, 1,174,114,193,167,229,228,162,121,166,243,181,153,139,244, 59, 23,240, 32,237,175,151,214, 85, 46, 48,167,172,118, 0,166,
+107, 52, 26, 70, 40, 20, 18,137, 68, 50, 96,241,226,197,218,190,125,251,230, 59,128, 53,109,218, 20, 77,155, 54, 37, 89, 89, 89,
+ 21, 46, 92,184, 80, 97,231,206,157,122, 66,200, 83, 74,233,145,162, 45, 22,178,200,220, 92, 85, 57,137, 84,154,243,211,134, 13,
+ 43,155, 53,107,198,138,197,127,206, 10, 83, 26, 78, 0,176,181,181,221, 82,165, 74, 21, 50,115,230,204,216,119,197,233,227,227,
+115,166,105,211,166, 45,219,180,105,195,111,220,184, 49,220,221,221,243,183, 57, 58, 58,162,105,211,166, 36, 42, 42,170,198,149,
+ 43, 87, 54,156, 57,115,102,141,143,143,207,133,176,176,176, 54,255,100,171,147,103,169,130, 5,194,105,115, 33,129,144, 63, 76,
+ 99, 17, 33, 86,155, 54,109,114, 54,206,201,168,211,233, 96, 48, 24,242,215,198,133,101, 89, 24, 12, 6, 44, 94,188,216, 96,102,
+157, 42,145, 23, 28,218,100, 97, 11, 91,139, 68, 34, 71, 51, 45, 91,193,110,226,244,170,114,185,220, 27, 64,251, 42, 85,170, 76,
+ 55,221, 92,217,233,205, 90,169, 84, 70,196,169,109,131, 1, 52, 43,238,118, 95,184,112,225,160,249,243,231,119,193,159,115, 86,
+ 86,239,217,179,231,133, 2,251, 85,207, 91, 43, 9, 33, 23, 25,134, 57, 6, 96, 27,128,191, 88,221,101, 50,171, 81, 19,190, 28,
+110, 21,157,172,197,162, 67,201,216,118, 57, 19,131,154, 42, 48,233,115, 27,244,235,219, 91,126,224,127, 7, 71, 1,216, 98,114,
+200, 51,127,127,127, 18, 18, 18,194,137,172,143, 11,117, 1, 56,153,252,215, 0, 48, 78,153,149,156,247, 92, 56, 20, 72, 55,221,
+207,184, 78,202, 75,119,202, 59,142,154,240, 38, 1,184, 83,202,246,238, 82, 94, 30,254, 2, 62, 0,156, 56,113,130,118,232,208,
+129, 24,215,133,183,236, 61, 78, 14,235,219,185, 93,135,207, 26,129,145,216,225, 69, 34,112, 35,146,130,207,232,192,128,226,214,
+181, 11, 20,124,118, 71,129, 19, 23,105, 61, 33, 62, 61,190,174, 94, 45,240,251,159,151, 77,228, 61, 77,228, 99,219,149, 28,104,
+115,179,145, 20, 31,137,196,216, 8,196, 69,191, 70, 76,228,235, 71, 0,153,103, 46,231, 95, 11, 14, 24,216,188,111, 64, 22,121,
+245, 89,232,200,203,146, 57,181,202,144, 10,190,129,129,105, 34, 3,160, 85,134,152, 81,233,231,138,104,128, 91, 87,170, 84,105,
+249,236,217,179, 61,159, 60,121, 98,173, 84, 42,149,167, 78,157,186, 20, 17, 17,225,226,234,234, 26, 53,102,204,152, 70, 30, 30,
+ 30,206, 93,187,118,149,237,223,191,127, 54,128,225,102,112, 6,118,110, 80,235,198,214, 53, 63,200, 83, 14,172,133, 38,244, 33,
+ 78,198, 41,113, 45, 33,135, 86,176, 17,147,113, 53,156, 96, 37,230,227,219,198,238, 86,237, 15,135,126, 15,160,159, 25,156,232,
+ 90,175, 90, 69,157, 42, 7,185, 42, 29,118, 60, 75, 85,157,141, 81, 58, 19,219,240,164, 53, 61, 26, 72,120, 73,177,240, 86,136,
+ 42, 47,104,232,142,246,135, 67,139, 44,187,167,167,231, 8,150,101,125,242,254,150, 55,174, 63,187,154,181,196,228,144,252,116,
+162,112, 92,226,238,238, 14,134, 97,194,162,163,163,183,152,123,141, 36,146,194,103, 79,177,179,179, 67,243,230,205,225,239,239,
+207,111,214,172, 89,117, 0, 71,138,226,212,106, 53,110, 44, 75,161, 80, 40,164, 14, 14, 14,118, 10,133, 34, 69,171,213,150,137,
+ 19, 0,236,237,237,187, 55,111,222,156,191,103,207,158,228,176,176,176, 91,125,251,246,125,109,109,109,253,150,245, 87, 46,151,
+163,114,229,202,248,230,155,111,248,237,218,181, 43,145,211,197,197,165,245,206,157, 59, 65, 8,201,127,105, 23,132,183,183, 55,
+ 92, 93, 93,209,190,125,123,126,247,238,221, 91,151,246, 57,178,160,161, 57, 87,136, 69,107,193,219, 98,182,232,238,183,194,246,
+ 55,227,186, 39, 26,173, 75, 18,137, 36,177, 52,249, 44,128, 34,187, 59,197, 98,113,190, 21,170,224,185, 10,227,100, 24, 6,115,
+230,204, 1, 33, 4, 2,129, 0, 66,161,176,208,117,139, 22, 45, 44,205,103, 20, 33,132, 17, 10,133,211,249,124,254,112,181, 90,
+237, 41,145, 72, 98, 13, 6,195,118,181, 90,189, 56,207, 34,106, 91,216,189, 91, 20,167, 92, 46,247,126,241,226, 69,149,162, 42,
+ 69,173, 86,163,122,245,234,128, 26, 79,139,227, 12, 13, 13,245,174, 88,177,162, 47, 0,227, 20,109,151, 41,165,205, 76,254,155,
+226, 50,165,244,243,188,223,207, 95,189,122,229,109, 20, 90,166,156, 58,173,214,199,211,217, 26, 15,194, 85,216,118, 57, 19,127,
+204,118,199,103,139, 99,209,173, 54, 31,254, 94, 86,208,107,117,190, 61,123,246,220, 1,192, 55,239, 37,217,181,103,207,158,126,
+ 60, 30,239, 60,128,223, 0,100,252, 83,247, 60,199, 89, 54,148,160, 69,156, 8, 33,199, 77,206,223,209,248,127,198,140, 25,179,
+150, 44, 89,242,132, 16,114,220, 52,221,116, 63,211,117, 94,123,115,156, 82,218,113,230,204,153,129, 75,151, 46,253,206,184,239,
+223,161, 16, 45,233, 58,180, 78,202,149,227, 74,164, 53,248, 60, 3,248, 12, 1,159, 7,128, 18, 68,132,135, 34, 43, 51,253, 42,
+125,253,191, 48,243, 44, 89, 61, 27,215,172, 85,125,217,238,213,211,152, 95,174,228, 32, 93,153,139,144,251, 23,113,231,226,111,
+241, 6,189,225, 55, 16,122, 23, 96,130,240,154,125, 70,105,233,163,128,191, 17, 90,121,226,234, 45,177,245,222,190,114, 63,247,
+243,243, 91, 50,103,206, 28,239,251,247,239, 43, 50, 51, 51,147,118,237,218,245, 76,173, 86,223, 7,240, 99,100,100,100,243, 31,
+127,252, 81,182, 98,197,138, 54,213,171, 87,247, 61,112,224, 64,142, 25,156, 53,166, 14,238,119, 99,248,132,175, 36, 79,247,175,
+135,232,105, 16,230, 60, 76, 54,252, 17,151, 51, 27,192,106, 68,101, 55, 78,202,213,159,253,161,121, 57,166,188, 66,136, 74,182,
+162, 22,102,112, 98,234,224,126,136, 13, 11,229, 83,190, 4, 26,141, 30, 89, 26, 86, 3, 64,169,214,233,181, 84,238, 40, 1, 0,
+ 62, 67,248,121,156, 69, 27, 2,243,186, 11, 77,211,142, 29, 59, 38, 3,240, 23,103, 16,211,244,226,186, 17, 41,165,105,132,144,
+239, 69, 34,209, 28, 66, 8,173, 91,183,238,131,106,213,170,101,219,217,217, 65,165, 82, 65,173, 86, 67, 40, 20, 66,165, 82, 33,
+ 34, 34, 2,183,110,221,130,157,157,157, 69,215, 42, 59, 59, 27, 10,133, 2, 44,203,150,153,211, 96, 48,144,141, 27, 55,202,159,
+ 60,121, 34, 63,120,240,160,203,164, 73,147, 82,170, 86,173,122,183,119,239,222, 47,157,157,157,213, 15, 31, 62,196,245,235,215,
+145,150,150,134, 6, 13, 26,152,197,169,209,104,192,231,243,161, 82,169, 32, 22,139,193,231,243,161,215,235,193,178,108,190,248,
+202,206,206, 70,106,106, 42,132, 66, 33, 52, 26,205, 63,126,191, 27, 45, 90,166, 40,174,251,173,176,253, 75,194,187,246,147, 42,
+174,187, 51, 61, 61, 93,106,107,107, 59,221, 28, 11, 29, 33, 4, 60, 30, 15, 66,161, 16,132, 16, 52,107,214, 12,195,134, 13, 67,
+237,218,181, 17, 26, 26,138,189,123,247,226,206,157, 59, 16, 8, 4,249,251,155,221, 63,209,162, 5, 79, 34,145, 92,239,220,185,
+115,224,236,217,179, 37,229,203,151,199,211,167, 79,189,150, 46, 93, 58,253,220,185,115, 93, 8, 33,159, 80, 74,217,146,173,244,
+121, 93,130,111,186, 11,219,171,213,106, 60,125,250,212,146, 99,254,106, 5,175, 84, 41,130, 97,152,151, 44,203, 94, 1, 80,157,
+ 82,218,140, 16,114, 10,128,188,192,174, 74, 74,233,231,132,144, 76, 0,143, 24,134,121,206,178,108, 68, 97,150,113,133, 66,145,
+ 20,157,152,233,226, 96, 37,193,192, 38, 86,248,108,113, 44,122,124, 34,134, 88, 72,240, 44, 44, 30,149, 42,150, 39, 15,174, 30,
+249, 36, 79,100,213,141,139,139, 3,128, 79, 0,132, 69, 69, 69,185, 25,133, 22,135,143, 3, 5,197,144, 81, 64, 45, 89,178,164,
+ 99, 97,226,170,144,103,243,173,244,165, 75,151,126,103,242, 63,173, 12,109, 71,115,188,237, 12,223, 34,207,202,245,167,208, 58,
+113,226, 68,241, 10,132, 69,183,227,135,246,220,252, 76, 75,188, 3,235, 52, 49,177, 14, 81, 4,221,186, 14,128,110, 55, 43, 51,
+238,157,164,140, 76,190,125,227,119,227,153, 77, 23,115, 16, 21,155,136,235, 39,183, 35, 41, 46,124, 27, 64, 39,209,215, 7, 50,
+203,220, 88, 86,232, 25,232,236,232,128, 92, 45, 5, 75, 1,252, 69,108,189, 23,145,213,201,215,215,119,225,141, 27, 55,188,115,
+115,115, 21,215,174, 93, 75,223,185,115,231, 75,141, 70,243, 51,165,116, 87,222, 62, 71,147,147,147,191,165,148, 66,161, 80,240,
+ 5, 2,129,180, 56,103, 78, 66, 72,237,169,195, 7, 93,253,126,227, 86,201,203,199, 15,240,227,193,147, 72,207,201, 49, 92, 76,
+ 84,117,165,148, 30,207,219,231,252,189,100, 85, 12, 5, 45, 39, 96, 8,220,228, 2, 87, 66,136,132, 82,154, 91,164,200, 26, 62,
+ 8,223,111,220,138,105,131,251, 50, 58, 47, 31, 92,209,231,194,195, 65, 44,162, 73, 57,152, 49,168, 39,239,190, 74,135,107, 15,
+159,194,209,202, 90,152,199,137,162,186, 15, 25,134, 9, 51, 17, 77,229,143, 29, 59, 38,235,212,169, 83, 14, 0,211, 46,209,191,
+164, 51, 12, 19, 86,194,195, 54,151, 16,226,178, 99,199, 14, 70,167,211,101,135,134,134,194,213,213, 21, 46, 46, 46,176,177,177,
+ 65, 72, 72, 8,254,248,227, 15, 60,123,246, 12, 44,203,162,102,205,154, 22, 93,175,148,148, 20, 60,124,248, 16,237,219,119,152,
+148,148,148,104,109,103,239,160,188,122,229,242,138,210,112,178, 44, 75, 0, 32, 48, 48, 16,129,129,129,146,152,152, 24,207,227,
+199,143, 59, 47, 90,180, 40,210,219,219,123,183, 74,165,122,203,114, 96,174,208,202, 19, 46,249, 34, 80, 34,145, 64, 40, 20, 34,
+ 51, 51, 19, 9, 9, 9,200,202,202,122,211,151, 99,107,251, 94,132, 86, 97, 22,170,119,185,255,223, 41, 14, 11, 19, 83,132,144,
+254, 0,166,155, 89, 22,232,245,122, 8,133, 66,212,175, 95, 31,107,215,174,197,157, 59,119,240,219,111,191,193,203,203, 11,131,
+ 7, 15, 6,195, 48,120,242,228,137,165, 89,100,111,220,184, 49,189,107,215,174,129, 59,118,236,144, 68, 68, 68,224,217,179,103,
+176,181,181,197,218,181,107,197, 35, 71,142,172,116,225,194,133,185, 0,150,151, 88, 86,147,209,133,238,238,238,189,170, 87,175,
+254,151,125, 92, 93, 93,109, 78,159, 62,237,108, 20, 96, 5, 71, 36, 22,130,244,185,115,231,254,224,239,239,191, 58,175,187,176,
+ 41, 0, 57,165,180,197,193,131, 7, 9, 0,244,232,209,131, 18, 66,140, 47,164, 71, 7, 14, 28,104, 25, 18, 18, 66,231,207,159,
+ 95,104, 59,151,148, 24,183,241,135,181,155,126,248,126,193, 84,209,228,246, 54,232,241,137, 0, 18, 33,129,181, 76,128,197,107,
+182,232,238,221,186,252,208,205,205,237, 56,128,174,113,113,113,112,115,115,203, 6,240,156,199,227,133, 25, 12,134, 88,206, 23,
+254,195, 66, 97, 90, 36,207,170, 28, 87,152, 80, 42,141, 80, 51,181,120, 25, 49,115,230,204,192, 37, 75,150,220, 46,139,200, 50,
+117,130, 39,132, 80, 66, 72, 11, 74,233,165,124,143,165, 34,187, 12,243,109, 95,140,155,171,139,163,253,140,193,141,193,178,128,
+222, 0,232, 13, 20,202, 28, 21,158, 62,190,147, 3, 9, 57,104, 86,142,196,162,101,139,102,127, 85,225, 65, 52,131,216, 52, 45,
+ 46, 29,217, 68,147,226,194,187,211,215,251,135,190, 43,145,229,234,236,120,113,207,166,111,113,231,181, 6, 6,246,141,206, 98,
+ 89,154,255,251, 61,188,112, 42, 59, 58, 58,174,184,121,243,102,121,177, 88,172,120,241,226,133,225,192,129, 3,177, 26,141,102,
+131, 81,100,229,161,127,157, 58,117,116,114,185, 28,217,217,217,106,173, 86,155, 93,140,200,242,108, 81,187,198,229,239, 55,110,
+149,228,106, 52,200, 80,169,193,115,112,126, 75,100,229,161, 81,203, 42, 30, 30, 68,162, 0, 5, 16,158,169,141, 45, 78,100,181,
+168, 93, 3,223,111,220,138, 92,141, 6, 86, 54,182,140,231, 39, 45,240,201,196,181,200, 36, 10, 10, 0, 14,110, 30, 76,203, 47,
+ 23,163,221,143,151,160,100, 20,108, 30,103,145, 62, 90,209,209,209, 91, 98, 99, 99,103,198,198,198,206, 52, 17, 87,225, 0,102,
+ 86,181, 17,254, 37, 61,192, 86, 52, 51, 54, 54,118, 38,203,178, 91,204,168,218,216,126,253,250, 69, 7, 4, 4,100,248,251,251,
+103,164,164,164, 32, 56, 56, 24,105,105,105,248,241,199, 31,241,244,233, 83,176,236, 27,101, 93, 88, 55,138, 25, 2, 9,105,105,
+169, 86,148, 82,164,165,166,200,103,207,158,109, 83, 26, 78,131,193,240,214,179,229,225,225,129, 49, 99,198, 8,115,114,114,108,
+ 35, 35, 35,173, 77,183,153,203,169,209,104,242,235,156, 82, 10,141, 70,131,140,140, 12,104, 52, 26,188,124,249, 50, 95,100,229,
+157,255,189, 89,180,140,191,165, 82,105,130,209, 65, 84, 34,145,128, 16, 82, 88,247,219, 59,137,254,108, 60, 23, 33,132, 74,165,
+210,132, 82,136,195, 18,203, 99,230,117,135, 80, 40,196,176, 97,195,112,251,246,109,132,134,134,130,199,227, 65,169, 84, 34, 39,
+ 39, 7,173, 91,183,134, 72, 36,178,212,162, 69,133, 66, 97,255, 89,179,102, 73,194,194,194,144,156,156,108,116,166,135,193, 96,
+192,164, 73,147,164, 98,177,184,191,165,166,251,216,216,216,182, 47, 94,188,240, 45,184,196,199,199,103,152,250, 20,150, 22, 7,
+ 15, 30, 36, 61,122,244,160, 61,122,244,160, 70,193,101, 46,210,163,131, 55,254,118,244,248,217,175,191, 89,150,157,163,204, 66,
+ 69,119, 41,178,179, 50,176,120,201,247,186, 27, 55,174, 92,156, 62,105,116,195, 3, 7, 14, 44, 5,240, 60,239,144,231, 7, 14,
+ 28, 24,244,205, 55,223,252,138,188, 48, 15, 28, 62, 28, 20,166, 69, 76,159,189,119,209,189, 87, 24, 71, 94,247,161,180,148,148,
+198, 17,135,205,141,194, 43, 79,116, 93,124,203,162, 85,108,227, 83,169,119, 45, 23, 71,135, 11, 59,214, 45,176, 58,254, 24,136,
+142, 10, 71, 82, 92, 4, 62,105,216, 2, 79, 31, 63, 0,171, 51, 28,162, 47, 14,148, 56, 60,157,248,244,172,226, 95, 53,224,203,
+230, 13,171, 97,217,241,108,188, 8, 58,141,244,164,184,117, 52,108,255,161,119,113,129, 72,133,158,129, 46, 78,142, 23,127, 93,
+191,208,254, 84, 48,131,168,168,112, 28,249,117, 53,116,218,191,232,138,147, 22, 55,222,172, 70,148,157,158, 0, 77,150, 1, 18,
+ 38, 71, 98,225, 69,125,233,228,228,180,227,135, 31,126, 24,221,176, 97, 67, 89,223,190,125, 95,164,165,165, 45,162,148,238, 55,
+105,224, 63,245,245,245,157,178,110,221,186, 74, 81, 81, 81,248,227,143, 63, 94, 0,184, 91, 12,103, 52,143,199,219,240,199,175,
+ 91,166, 74, 43,248,225,199, 89, 95,235, 15,222, 9,238, 76, 41, 61,101,194,233,223,170,122,149,227,139,166,140,101,216,123,191,
+227, 97, 68, 2, 94,103,168,255, 40,134, 19, 60, 30, 15,127,252,186, 5,210, 10,126, 8, 77, 87,234, 4, 98, 41,172, 92,203,227,
+ 69,182, 65,200,231,243,111, 15, 31, 62, 76,200,240,248, 96,248, 66, 4,167,229,234, 30, 38,241,240, 58,163,116, 83,233,189,200,
+ 54,128,207,231,195,217,249,207, 30,164,224, 52,139,198, 62, 88,221,190,125,155,225,241,120,111, 9,116, 83, 11,145,165,150, 34,
+ 75, 96, 46,103, 65,161,101,132, 94,175, 39,165,229, 84,171,213,133,138,219,194,124,181, 88,150,253, 91,202,111,137,133,202,180,
+203,208,232, 79,151,155,155,235, 44,149, 74, 19,140,221,127,239,202,162, 85,150,145,136,197,117, 95, 90,146, 63,134, 97,192,178,
+ 44,132, 66, 33,106,214,172,137,227,199,143,195,222,222, 30,214,214,214,176,182,182,134, 84, 42,133,131,131, 67,190,208, 98, 24,
+179, 71,233, 80,181, 90,237,229,229,229,133,151, 47, 95, 66, 34,145,228, 47, 98,177, 24,129,129,129, 80, 42,149, 30,239,207,118,
+255,247, 96, 68,239, 86, 93,214,239, 60, 60,240,248,241, 19, 95,106,213,185,213,252,252,124,233,221, 27, 23, 30, 78,159, 52,186,
+ 29, 39, 77,254, 91, 48, 90,163, 76,125,173,102,204,152, 49,171,180,124, 51,102,204,152, 85,152,133,171,180,130, 11,111,186,250,
+140,107,228, 11, 45,163,130, 44, 76, 73, 26, 69,214,182,181,243,173, 15,223, 7,162,163,195,112,118,255,154, 44,157, 86,147,198,
+178, 58,239,215,207, 30, 0, 12,182,155,149, 5,134,214,235,210,190, 37, 57,251, 68,131,204,244, 36, 60,191,123, 58, 28, 42,209,
+204,119, 41,178,118,172, 95, 96,127,236, 49, 65, 84, 84, 56, 78,237, 93,157,161,211,107, 63,165,175, 15,220, 47, 11,247, 0,145,
+168, 75,239,170,182, 29,135, 55,141,133,129, 24,208,255,105,200,231,238, 77, 73,151,216, 43,197,143, 12, 51, 69, 82, 82,210, 98,
+ 43, 43, 43,102,249,242,229, 67,115,115,115,231, 83, 74, 15,154,220, 56,173, 43, 86,172,184,108,227,198,141,158,145,145,145,162,
+171, 87,175,166, 94,188,120,145, 2, 88, 82,194, 11,124, 26, 33,132, 87,187,188,199,248,123,225, 49,157, 41,165,191,155,112, 6,
+118,172, 19,112,109,235,146,185, 10,221,181,131,200,142,139,194,204,107,209,153, 0,102,150,244, 21,158,247,162,177,119,116,116,
+ 36, 3, 6, 12, 96,179,178,178, 32, 20,137, 88,157, 78,199,107,212,168,145,225,171,175,190, 98,226,227,227,145,153,149,205,239,
+122, 44,193, 30, 64,106,105,234, 85, 40, 18, 65,167,211,193,195,195, 35, 63, 45, 51, 43, 27,132, 16,184,185,185,149,244,176, 45,
+ 4, 48,169, 81,163, 70,164,126,253,250,183, 86,175, 94,125,166, 56,177, 82, 26,139, 86, 73, 48,151,147,101,217, 66,223,162, 58,
+157,142,148,150,211,212,162, 85,146,208,122,159, 22,173,194, 68,139,169, 72, 52, 21, 66,165,241,209,250, 59,197,161, 37, 34,172,
+ 48,235,176,209,162,245,224,193, 3,148, 43, 87, 14, 90,173, 22, 10,133, 2, 10,133, 2, 86, 86, 86,200,202,202,130, 64, 32,128,
+133,101,102, 37, 18, 73,100,112,112,176,175,147,147, 19, 12, 6,195, 91, 98,235,197,139, 23,144,203,229, 49,150, 90,180,220,221,
+221, 79,231,141, 58,124, 11,174,174,174, 54,239,162, 94, 77, 45, 89, 61,122,244, 40, 85,191,194,250, 37, 83,119, 2,216,217,179,
+103,207, 29,143,110,156,248,196,205,205,237,132,191,191, 63, 1, 0,110,132,225,199,101,205, 42,162,135, 45,169,128, 37, 74, 99,
+242, 63, 9, 0,201,251,159,100, 34,196, 76,127,107, 10, 73, 75, 89,178,100,201, 5, 19,255,174,164, 50, 22,193, 24,226,225, 45,
+ 95,104,126, 73,150, 44,103, 7,251, 11, 63,255, 56,223,122,127, 16, 16, 19, 21,134, 75,135,214,102,232, 13,218, 79,193,210,184,
+ 27,231, 14, 29, 4, 65, 14, 94, 31,188, 4,236, 55,163,137, 64,237,218, 85,189,241,219, 19, 29,146,162, 95,128, 82,118, 27, 77,
+248, 53,167,204,141, 99,158,200,218,182,118,190,253,225, 7, 4,209, 81, 97, 56,187,127, 77,134,222,160,253,180, 52,193, 78,141,
+ 24, 78,136, 29, 79, 46,217, 48,176, 77,221, 94,222, 21, 61,193, 82, 29, 88, 33, 69,183,105,142,252,231,247,114,126,243,106,195,
+219,207,102,179, 95, 70,223, 48, 47, 16,104,118,118,246,183,132,144,195,148,210,167, 38, 13,242,231,149, 42, 85,250,238,167,159,
+126, 42, 31, 19, 19,163,184,119,239, 94,230,230,205,155,195, 88,150, 93, 72, 41, 45,113, 20, 21,165,244,107, 66,200,207,166,241,
+114, 8, 33, 53,166, 14,237,119,163,223,144,225,146,176,115, 59, 97, 23,246, 20, 83,174,197, 26,158,167,105,250, 82, 74,227,205,
+200,170,189, 88, 44, 62,120,242,228,201,151,181,107,215, 38, 74,165, 18, 58,157, 14,201,201,201, 56,124,248,112, 48,165, 20,118,
+118,118, 56,121,242, 36,219,175, 95,191,131,106,181,186, 71, 81, 98,171,168, 81,135, 0,150,168, 84, 42,163,200,202, 79,183,182,
+182, 94, 98,109,109,109,244,209,218, 82,196, 75,204, 24,222,129,228,133,119,104,240,251,239,191,135,180,107,215, 46,186, 48,177,
+ 34, 22,139,145,155,107, 89,148,144,162, 70, 49,150,134,179, 40,139, 86,193,116, 75, 56,141,221,151, 70, 39,248,130,233, 70,240,
+120, 60,176, 44,251,151,244,127, 90,180,152,142, 14, 44,141,200,121,203,186, 92, 66,224,208,210,140, 68,124,215, 22, 45,227,181,
+ 16, 10,133, 56,122,244, 40,134, 12, 25, 2,131,193, 0,153, 76, 6, 43, 43, 43,200,229,114, 28, 58,116, 8,198,240, 15,150,100,
+ 81,167,211,237, 90,178,100,201,172,141, 27, 55, 74, 41,165, 16,137, 68,249, 66,107,254,252,249, 42,173, 86,187,203, 28,161,149,
+ 31,241,157,165,193,149,157,138, 31,117, 88,216, 49, 69,248,107,217, 46, 92,184,112, 16,203,178, 93, 80, 32,132, 67,129,253,222,
+ 10,253, 80, 92,120, 7, 0,118, 11, 23, 46, 28,193,178,172,113, 0,205, 91,163, 11, 77,246, 51,190, 75,124,123,246,236,185,163,
+224,168, 67, 14, 31, 60,238,252,139,243,214,194, 36, 80, 41,201,107, 47,242, 5, 23,191,104,145,213,211,223,217,193,241,194,150,
+213,243,173,119,223, 6, 98,163, 94,227,250,209,117, 25, 6, 86,103, 42, 94,154, 88,216,242,214,118,119,182, 69,234, 77, 21, 50,
+147, 35, 1,138,123,101, 23, 89,189, 43, 59, 59, 58, 92,220,186,102,190,253,129,251, 12, 98, 34,195,112, 49, 79, 12,150, 69,100,
+ 13, 16,137,186, 4, 86,241,220,218,231,243,198,118, 54, 68, 15,125, 68, 8,126, 30,220, 11, 65,157,180,104,220,219, 6,245,218,
+ 43, 80,169,150,164,215,201, 45,169,159,185, 55, 37,195,205,181,110, 21, 16, 89,157,202,151, 47,191,224,214,173, 91,222, 44,203,
+ 42, 46, 93,186,148,181,113,227,198,215,185,185,185,107, 40,165, 39, 44,120, 57,152,138,172,218, 51, 70, 14,190,250,221, 79, 63,
+ 75,130,131,238, 96,217,174, 99, 80,233, 52,134,211,209,217, 61, 77,187, 21,139,131, 72, 36,250,246,252,249,243,242,234,213,171,
+147,148,148,148,124, 43,137, 86,171, 69, 70, 70, 6,178,178,178,160, 86,171, 81,167, 78, 29,102,205,154, 53,242,241,227,199,127,
+ 11,224,203, 34, 94, 54,239,124,212, 97, 97, 80, 40, 20, 16, 10,133,208,106,181,249, 22, 45,177, 88, 12, 27, 27, 27,164,164,164,
+ 96,223,190,125, 40,201,242, 38, 20,138,226, 24,134,148,147,202,100,106,137, 68,194, 22,102, 85,179,148, 51, 15,209,159,127,254,
+185,231,194,133, 11, 37,117,234,212,249,139, 69,171, 52,156,148,210,156, 54,109,218,200,214,172, 89, 3,111,111,111,104, 52,154,
+183, 4, 21,195, 48, 16, 10,133,136,138,138,194,162, 69,139, 64, 41,205,249,167, 91, 30, 83,209, 98, 42,134,242,124,168,254, 34,
+132,204,181, 24,149,212, 53,104,233, 72, 68, 83,225, 38, 22,139,145,158,158, 46, 37,132,244, 47, 34,130,189,217, 22, 45,163,208,
+122,250,244, 41,118,236,216,129,246,237,219,195,206,206, 14,105,105,105,216,191,127, 63, 66, 66, 66, 32, 18,137, 64, 8,177,196,
+170,197,214,175, 95,255,251, 43, 87,174,116,234,219,183,111,192,148, 41, 83,164,213,170, 85,195,243,231,207,177,112,225,194,220,
+160,160,160, 80,149, 74,181, 16,230, 4, 54,205,139,248,110, 12, 70,106,214,168,195, 2,199, 20, 68, 17,225, 29, 62, 47,130,205,
+ 52,244,195, 91,225, 29, 76,113,253,250,117,159,242,229,203,251,227,205, 72, 66,227, 11,215,116,116,225, 91, 47,227,184,184,184,
+186,224, 70, 29,114,248,103,219,186, 75,132,144,252,128,165, 70,241,245,151, 81,135,127, 61,146, 76,234, 59,120,164,245,174,219,
+ 4, 81, 17,161,184,123,114, 67, 65,145,101, 78, 99,211,202, 52,214,134, 68, 42,175,198,146, 55,195,153, 51,147,163, 0,202,179,
+ 88,104, 21,228, 4,101,191,238, 59,104,164,253,158,187, 4,177, 81,175,112,237,200,122,139, 69,150, 41,231, 0,145,232, 27, 1,
+143,204,233,208,172,182,176, 73,173, 42,144, 39,134, 35, 62, 58, 22,251,158, 38,165,134,166,169,135, 95, 35, 90, 68,188, 82,255,
+220,126,132,189,189,157,171, 0, 29, 71, 59,216,223, 60,150,249,155,199,167,140,150,106,233,146,216,171,116,126,161,249,252,235,
+ 57, 43, 91, 91, 91, 47, 15, 10, 10,114,146, 72, 36,214,119,239,222, 53,108,218,180, 41, 42, 55, 55,119, 5,165,116,175, 89,101,
+255,235,118,207,186, 85, 42, 94,250,110,253, 22, 73,182, 50, 7, 74,141, 22, 98, 23, 55,195,225, 27,143,187, 23, 21, 0,179, 32,
+ 39, 33,164,229,208,161, 67,107,212,175, 95,159, 49, 21, 89, 26,141, 6,153,153,153,200,202,202, 66,102,102, 38, 50, 51, 51, 17,
+ 19, 19,131,230,205,155, 51, 53,106,212,168, 70, 8,105, 73, 41,189, 80,144,243, 93,141, 58, 52,229, 52, 9,239, 48, 11, 0, 67,
+ 8,185,243,224,193,131,236,118,237,218, 65, 42,149, 66,169, 84,194,203,203, 11,122,189, 30, 39, 79,158, 68, 80, 80,144,146,101,
+217, 75, 0, 30, 20, 87,118,149, 42,199,139, 16,194,168,114,114,106, 14, 26, 52,168,249,228,201,147,223, 26,146,238,236,236, 12,
+123,123,123,139, 56, 1, 32, 53, 53,181,234,239,191,255,254,213,131, 7, 15,190,110,223,190,189,205,172, 89,179,196, 62, 62, 62,
+ 48, 24, 12, 76,105, 57,211,210,210,108,238,221,187,183,162, 73,147, 38, 99,219,181,107,199,255,238,187,239, 96, 99, 99, 3,131,
+193, 0,169, 84,138,204,204, 76, 44, 92,184, 16, 87,175, 94,213, 83, 74,215,103,100,100, 76,177,228, 94, 42,165, 5,171,224,189,
+ 84,168, 5,168, 40, 33, 84,216,254,255, 68, 62, 11, 8, 55,216,218,218, 78, 7, 48,189,136, 8,246, 48,247,217, 52, 10, 45, 30,
+143,135,240,240,112,108,218,180,233, 47,113,180,140,225, 31, 10,227, 46,162,236,244,226,197,139, 6, 66, 72,195,187,119,239, 78,
+ 31, 56,112,224,112,165, 82,233, 41,151,203, 99,117, 58,221,118,149, 74,101,140,163, 37,180,164, 13, 81, 42,149, 17,133,141, 58,
+ 44,184, 15, 96, 91, 44,103,129,240, 14,111,133,112, 40,112,216, 91,161, 31, 10,134,119, 48,229,108,212,168, 81, 24,195, 48,207,
+242,186,224,159,161,192,232, 66, 19, 78,223,184,184,184,186,110,110,110,151, 0,200, 10,142, 58,252, 39,238, 37,142,243,191, 45,
+182, 80, 92,192,210,194,143,130,228,220,173,112,136,164,169,120,248,199, 54,139, 69, 86, 97, 80,231,230,132,206,221, 19, 89, 75,
+163,206,133, 50, 35,225, 57, 13,219,155, 88,246,171, 13,249,185, 59, 17,144,200,211,113,255,220, 47,233, 6, 67,238,167, 52,244,
+127, 15, 74, 79,135,153, 63,157, 58, 40, 36, 54,246,120,248,213, 16,196,166, 43,113,234,117,218,126,154,163,254,114,103,222, 92,
+129,158, 13,201,149,173,179,227, 55, 52,237,102,211,203,209, 67,128, 85, 83,183, 67, 50,195, 65, 88,239,179,102,102,207,129,104,
+116,144,255,241,199, 31,199, 52,109,218,212,170, 87,175, 94, 47, 82, 83, 83,223,114,144, 47,197,133,142, 38,132,252,116, 98,227,
+202,169, 14,213, 27, 96,221, 55,211, 12,123,110, 60, 46, 56, 10, 17,197, 91,117,132, 45,102,204,152, 33, 84, 42,149,127, 17, 89,
+ 5,133, 86,102,102, 38, 30, 62,124,136,193,131, 7,139, 31, 60,120,208, 2,192,133,191,152,114,162,163,183,136, 68, 34, 4, 7,
+ 7,163,121,243,230, 75,242, 44, 86,225,215,175, 95,159,105,228,232,211,167, 79,126,250,184,113,227,102, 86,172, 88, 17,169,169,
+169, 37,149,117, 46, 33,100, 35,222,204,117, 24,191,115,231,206,134, 71,142, 28,105, 56,105,210, 36, 97,251,246,237,113,243,230,
+ 77,156, 61,123, 86,171,213,106,111, 0,184, 97,238,180, 54,121,241,135,238, 17, 66, 30, 47, 91,182,172, 33,143,199,155,107,220,
+ 22, 28, 28,140,109,219,182,149,134, 83, 15, 96, 5, 33,228,167,157, 59,119,206, 61,119,238,220,208, 65,131, 6, 89,235,116, 58,
+ 60,125,250, 20,191,252,242, 75,105, 57,191,114,114,114,154,115,242,228,201,237,103,206,156,233, 58, 96,192, 0,102,194,132, 9,
+ 88,187,118, 45,254,247,191,255,177, 6,131,225,136, 64, 32, 24,148,148,148,164,124, 79, 13,207,230,188,105,117, 54, 91, 48,231,
+ 97,137,188,101,233, 26, 52, 51,223,113,101,110,150,242,202,209,162, 69,139,124, 43, 35,165,244, 45,191, 58,163,192,178,180,235,
+ 16,128,109,222,125,186, 30,192, 90,188, 29, 21,158,135, 63, 35,199,155,203, 24, 16,167,182, 13,134, 26, 79,139,159, 84,218, 22,
+160, 8, 40,129, 45,125,238,220,185, 63,204,155, 55,239,135,130, 33, 28, 76,119, 42, 24,250, 97,193,130, 5, 40, 42,188, 3,128,
+180,185,115,231,126, 15, 0,254,254,254, 36,175,187,240, 19,228,141, 46, 52,225,220,145,151, 46,155, 63,127,254, 64, 0,197,113,
+114,224,240,143,161, 24, 31, 45, 58, 43,248,202, 30, 29, 0, 7, 16,102, 38,125,181, 47,184,204, 13, 24, 75,103,156,223, 61,127,
+ 45, 40,210,168, 65, 63,253,157,148,128,229,205, 14,190,178,155, 5,136, 45, 8, 51,131,190,250, 95,153,243, 73,108,236,145,181,
+112, 12,254,247, 36,150,198, 43,117, 95,236,212,104,222,178, 6,229,249,100,245,118,111, 74,246,217,185, 11, 14,127,245,169, 3,
+ 57,145, 58,208,226,243, 36, 37, 37,125,103,101,101,197, 91,177, 98,197, 80,149, 74,245,150,131,124, 25, 94, 18,211, 8, 33,188,
+122,149,189,199,223,126, 25,209,197,220,238, 66,147,198, 95,228,238,238,254, 56, 55, 55, 23,132, 16,168,213,234,124,129,149,149,
+149,133,140,140,140,252,255, 90,173, 22, 73, 73, 73,240,242,242, 2, 33, 68, 88,220, 75,199,116,138, 24, 0,111,113,154,194,148,
+211,194, 23,226,101, 66, 72,208,194,133, 11,155, 45, 92,184,176,102,158, 85,232,114,105,187,204,242, 4,207,101,169, 84, 22, 75,
+ 8,241, 20,138,196,202,235,215,175,159, 43, 35,103, 78,158,165,100,213,170, 85,171, 22,203,229,242,186,193,193,193,127,148,133,
+ 51, 79, 68,117,119,112,112,112,223,177, 99,199,129,173, 91,183, 54,224,243,249, 55, 9, 33, 61,211,211,211,223,247,164,210,163,
+ 96,222, 28,135, 37, 90,140,204,177,136,149, 22,127,135,112, 51, 24, 12,217,115,230,204, 73, 44, 40,188, 10, 90,175,140,255,181,
+ 90,109,174,153,207,167, 37,163, 40, 75, 16, 25, 36, 27, 0,222,204, 93,248,102, 90, 29,115, 39,149, 6, 80,228,220,153,243,230,
+205,163, 11, 22, 44, 32, 12,195, 28, 1,240,156, 97,152,151, 5,157,213, 77,183, 45, 88,176, 0,243,230,205,163,243,231, 23,253,
+141,106,228, 12, 9, 9,161, 60, 30,239, 15, 0, 97, 60, 30, 47,220,148,215, 52,221,120, 76,113,156, 28, 56,188,119,161, 69, 95,
+ 31,136, 2, 48,228,157,126, 41,134, 29, 56,135, 55,142,140,239,142, 51,124,111, 4,128, 1,239,138,143, 5,150, 15,175,215, 98,
+ 42, 0, 66,129, 85, 5, 69,150, 41, 98,175,208, 35,110,141,201,146,122,159, 53,155,148,103, 13,251,206,210,243, 21,230, 32,255,
+ 14,196,214, 95, 28,228, 45,120, 65,156,145, 74,165, 68,169, 84, 66,165, 82,189,101,189,202,204,204, 68, 78, 78, 14,178,179,179,
+243, 29,206,179,179,179,141, 93, 86,180, 24, 78, 72,165,210,252,110, 68,134, 97,194,210,211,211,243, 57, 77,211, 77, 57, 75, 41,
+100, 78, 17, 66,206, 80, 74, 13,239,162, 46, 85,170,156,114,121, 47, 56,222,187,226,204, 27,228, 48,252, 93,114,166,164,164,196,
+ 2,104, 84,169, 82, 37, 81,104,104,168,230,223,210,192,188, 11,235,208,223,141,119, 45,220,242, 62, 24,170,254, 13,117,249,252,
+ 29, 19,254,210,166, 73, 0, 15,166,177,131, 74,154, 84,218, 40,208, 40,126, 41, 34,143,148,188, 81,146, 20,192,142, 87,175, 94,
+121,179, 44, 27, 81,136,101,233,173,109,243,231,207, 71, 81, 49, 3, 11,112, 2,192,111, 81, 81, 81,238, 6,131, 33,174, 0,239,
+ 91,233,197,113,114,224,240, 47,177,104,253, 55,177, 75,163,153, 7, 96,158,185,251,199, 93,163,179, 1,204, 46, 99, 3,250,244,
+ 93,151,163, 52, 34, 11, 0,116, 58,221,121, 0,112,114,114,130,147,147,147, 37,199,149,184,205,116,238, 66, 83, 12, 28, 56,112,
+203, 59, 46,187,225,111,168,207, 15,130,243,223, 36,178, 56,252,187, 65,211,130,163, 0,124, 83,226,126, 37, 71,131,255,139, 48,
+202,251,153, 6, 32,173, 8,173, 83,220,182,226, 56, 1, 32, 19, 64,102, 33,199, 22,149,206,129,195,123, 5,195, 85, 1, 7, 14,
+ 28, 56,112,224,192,129,195,223, 3, 2,160, 85, 17, 95, 16,102,143, 38, 32,132,180, 42,197,215,252, 57,142,147,227,228, 56, 57,
+ 78,142,147,227,228, 56,255, 91,156, 37,113, 23, 28,189,252,174,166,231,250, 71,197,149,105,190,141, 35, 97,254,142, 5, 64, 43,
+142,147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206, 82,158,103,228, 63,113,158,191,115,225,124,180, 56,112,224,192,129, 3,
+135, 15, 8,173,125,137, 27,223, 0,230, 84, 40,141,121, 23,124,159, 87, 34, 30, 0,240,174,248,254,139, 32,132,184, 1,232, 96,
+146,116,194, 56, 24,136, 19, 90, 31,238, 69,173, 12, 96, 22, 0, 27,147,228,219,148,210, 37, 5,246,219, 13, 64,102,146,164, 4,
+176,144, 82,250,210,146,243,241,120,188, 37,205,154, 53,251,242,234,213,171, 43,117, 58,221,194, 82,228,215,219,205,205,237,123,
+ 66, 72, 29, 0, 2, 66,200,171,132,132,132, 37, 58,157,238, 92, 25,234,160,130,171,171,235, 82, 0,181, 24,134, 17, 16, 66, 66,
+ 19, 18, 18, 22,233,116,186,139,101,224, 84,184,184,184, 52,166,148,186, 2,224, 9, 4,130,148,152,152,152, 91,165, 29, 61,215,
+115, 65,136, 48, 83,169, 23, 0,128,181,156,175, 59, 48,207, 95,107,110, 26,119,151,115,224,240,159,111,232,121, 5,147,218, 86,
+196, 98, 66, 49,197, 0,144,182, 21,200,154,211, 97,152, 82,228,241,133, 13,184, 41,192,217,182, 34, 22, 83,250,134,163,109, 37,
+178,226,244,171, 18, 6,119,153,193,105,196,102,128, 25,105,206, 4,231,127,195,192,160,247,128, 14,166, 93,156,121, 1,152, 55,
+151, 40,180,250,248, 18, 55, 3, 31,252, 3,193, 52,202,248, 18, 2, 80, 19, 64,101, 0, 47, 1, 60,160,148,102,149, 81, 48,124,
+ 16,156,255, 66,204,165,148,246, 43, 80,238,191,236,244,233,167,159,118, 62,115,230,140,204, 56, 61, 11,203,178,144, 74,165,122,
+ 0,131, 45,168, 79,231,190,125,251,206,248,249,231,159,209,171, 87,175, 57,132,144, 31, 40,165,217,230, 30,111,111,111,223,163,
+ 66,133, 10,107,183,108,217,226,212,160, 65, 67, 34, 18,137,240,234, 85,168,231,168, 81,163,170,185,184,184, 28, 73, 72, 72, 24,
+110,105,225, 29, 28, 28,250, 87,172, 88,113,213,166, 77,155, 28,155, 52,105, 2, 66, 8,130,130,130, 60,191,250,234,171,154,174,
+174,174,123,227,227,227,199, 90,202,233,232,232, 88,165, 98,197,138, 45,215,173, 91, 39,109,220,184, 49, 36, 18, 9, 30, 60,120,
+ 96, 53,122,244,104, 87, 87, 87,215,167,241,241,241,151, 44, 21, 89,143,130,142,117,213,107,213,203, 0,128, 47, 20, 79,107,248,
+ 67,230,177,212,160,203,157, 74, 74,235,185, 0,191,113, 98,139, 3, 7, 14,166,232,239, 14, 87, 74, 49,245,204, 47,223, 48, 0,
+208,102,232,183, 19,250,187, 99,229,174, 88,196,191, 35,190, 41,131, 60,176,118, 71, 12, 18,202,146,207,205, 0,243, 21,159, 63,
+161, 94,253,250,142,227,174, 93, 11,213, 2,219,255, 35, 6,144,145,133,165, 23, 41,180,122, 4,144,133,224, 99, 22, 0,242,121,
+101,178,247,108, 24,239, 74,235,214,173, 43, 13, 27, 54,140,212,174, 93, 27, 65, 65, 65, 85,246,238,221,219,129,207,231,135, 26,
+ 12,134, 32, 0, 79,204,141,106, 77, 8, 17, 0, 8,228,241,120,117,254,205,156,255,114,200,243,202,157, 0,224,182,209,162, 85,
+112,167,243,231,207, 31,229,243,249, 70,139, 86, 61,165, 82,233, 82,192, 10,102, 14,202,235,116, 58, 60,123,246, 12, 12,195, 8,
+ 0,248,224,175, 83,106, 20,117, 93, 60, 61, 61, 61, 55,220,184, 29,228, 64,248, 82,164,229, 2,200,213, 66,100,229,130,159,183,
+237,180,159, 60,113,108,119,107,107,235, 43,153,153,153,191, 90,112, 51,251,120,121,121,253,240,240,225, 67, 7,153, 76, 6,150,
+101,145,149,149, 5, 87, 87, 87,108,217,178,197,118,242,228,201,253,164, 82,233, 69,149, 74,245, 63, 75,196,121,197,138, 21, 91,
+ 62,126,252, 88,106,156, 80, 90,163,209,192,211,211, 19,187,119,239, 22, 79,152, 48,161,170, 88, 44,142, 86,171,213,175,205,229,
+204, 84,234, 5,122,173,122,217,142,245,243,203, 1,192,160,177,243,151,137,178,172, 79,154,147,150,169,212,159, 0,192, 9, 45,
+ 14,255,244,139,162,142,163,163,227,193,228,228,228, 75, 0,134,191,139, 16, 36,132, 16,119, 62,159,239, 67, 41,181,205,251,159,
+174,215,235,195, 40,165,165, 14,168,235, 88,169,101, 39,136,101, 67, 64,217,154, 12, 0,194, 48, 15, 12,218,156,109,201,207, 47,
+ 28, 43, 19,167, 72, 58, 20,160, 53, 25,128, 37, 12,243,144,213,231,108, 73, 10,185,112,234,223,114,125,110,102,192,183,162,171,
+249, 19, 99,190, 11,190, 62, 21,224,198,176, 96,118,135,195,236,110,197,241, 64,251,137, 19, 39,186,142,253,242, 75, 50,100,240,
+224,202,151,174, 94, 37,205, 45,153,173,224, 3, 68,113, 14,251,133, 10,173,158, 1,196, 14,192,244,189,107,103, 49,124, 30,143,
+244,157,184,164,223,214,245, 43,152,214,157,122,230,119,159, 52,109,218, 20, 77,155, 54, 37,203,150, 45,171,252,199, 31,127, 84,
+222,189,123,183,158, 16,242,144, 82,186,175,168,147,181,171, 68, 84, 44, 32,233,224,199, 87,246,253,230,215, 77,245,235,215,135,
+ 88, 44, 70, 89, 56, 1,160, 77,101,222,235,246,245, 43, 61,236, 59,126,110, 68,131, 6,141,232,187,224,252,128,112,155, 82,218,
+ 37,175, 1,179,243,242,242,106,172,215,235, 37, 0,192,231,243,115, 1,140,167,121, 83, 7, 17, 66,142,176, 44,219,217,130, 6,
+146, 1, 48,175,115,231,206,115,198,141, 27, 7, 47, 47, 47, 76,152, 48, 1, 58,157, 46,136, 16, 50, 23,192,210,146, 2, 2, 58,
+ 59, 59,207,221,176, 97,131, 61, 95, 36, 71,237,233, 97,136, 75,215, 3, 0,172,196,192,209, 49, 20, 19, 38, 76,176,190,123,247,
+238, 34, 0,102, 11, 45,103,103,231,133, 91,182,108,177,151,201,100,160,148, 34, 59, 59, 27, 89, 89, 89,200,206,206, 70,118,118,
+ 54,198,142, 29,107,253,244,233,211,239, 1,152, 45,180, 92, 92, 92, 26,175, 91,183, 78, 42,145, 72,144,157,157, 45,212,106,181,
+ 36, 43, 43, 11, 57, 57, 57, 84,163,209,104,199,143, 31, 47,126,242,228, 73, 11, 0,175,193,225,223, 34, 10,120, 0,190, 16, 8,
+ 4,221, 42, 85,170,244,201,203,151, 47,239,235,245,250, 67, 0, 14,149,245, 99,138, 16,242,153,187,187,251,226,216,216,216,117,
+148,210,157,255,149, 58,117,113,113, 57,116,253,250,245,114, 27, 54,108, 24,188,114,229,202,147,150, 60, 67, 69,124,252, 54,172,
+ 87,175,158, 99,183,110,221, 4,174,174,174,200,201,201, 65,104,104,168,236,220,185,115, 78, 18,137, 36, 69,173, 86,223,176,228,
+ 90, 57,250, 54,182, 2,223,122,111,195,150,173,154,244,234,254,133,194,197,193, 6, 42,141, 1, 47, 35,226,188,126, 63,121,180,
+185,123,181, 14,215,181,218,140, 62,201,207,175,101, 91,202,217,178, 93,199, 38,173, 62,251, 76, 97, 99,107,131, 12,165, 22,175,
+194, 99,188, 47,156, 61,214,212,173, 90,135,203, 44,209, 13, 72,120,116, 38,231,125, 94,155, 9, 0, 95, 41,113,168, 81,179, 81,
+237,187,109,134, 45,250,132, 82, 10,134, 98, 77, 65,107,214, 4,128,191, 6,208, 91,202, 7, 74, 41, 33, 88, 97,106,205,202,239,
+ 86,100, 64,218,250,160,248,110, 74,227,251, 24, 16,219,218,219,215, 31, 61,114, 36,201,202,204,196,131, 7, 15,114, 10,138,172,
+ 31, 60, 32,188,204,160,252,145, 40,188,248,152,172, 89, 5,187, 14,141,255,205,142,163, 37,147,201, 10, 77,183,177,177, 65,203,
+150, 45,177,100,201, 18, 62,128, 58, 5, 20,222,219,147,172, 2,226,227, 27,103,194, 70, 46,102,188,188,188, 20,214,214,214,101,
+230,124,147,200,250, 52,242,162,159,223,249,117,214,224,115,187, 87, 5, 42,179,210, 5, 5,119,177,178,178,130,175,175, 47,230,
+204,153, 99, 30,103,217,213,237, 63,202,233,230,230,230,215,180,105,211, 58,231, 47, 93,178,141,141,141, 21,199,198,198,138,207,
+156, 63,111,219,176, 97,195, 58,110,110,110,126, 38, 28,150,228,243,219,245,235,215,207, 61,114,228, 8,211,180,105, 83,216,217,
+217,161,101,203,150, 56,121,242, 36,127,229,202,149,223, 1,152, 83, 82, 62, 25,134,105,210,180,105, 83, 2, 74, 17,159,161,199,
+173, 37,126,120,176,194, 31, 89,185, 20,169, 25,153, 80,169,114, 33,147,201, 36,121,221,189,230,150,189, 81,195,134, 13, 9,128,
+124,113,149,149,245,102,201,206, 86, 66,163,209, 66, 44, 22, 43, 8, 33, 18,115, 57, 41,165,174,141, 27, 55, 6, 0,104,181,218,
+252, 47,188,244,244,116,146,145,145, 1,141, 70, 3,129, 64, 32, 36,132,240,205,229,180,150,243,117,124,161,120,218,160,177,243,
+163, 6,141,157, 31,197, 23,138,167,105, 20,153, 6,115,210,172,229,124,221,251,188, 63, 9, 33, 78, 60, 30,239,151, 74,149, 42,
+ 61,229,241,120, 59, 8, 33,174,101,225, 36,132,212, 37,132,124, 39,147,201,206, 85,173, 90, 53, 74, 46,151,159, 39,132, 44, 37,
+132, 52, 44, 13, 39, 33, 68, 36,147,201,206,127,247,221,119, 7,238,223,191,223,235,143, 63,254,240,121,244,232, 81,247,101,203,
+150,237,181,178,178,186, 66, 8,145,149,229,217,244,241,241,217,122,235,214,173,186,141, 26, 53,250,153, 16, 34,126, 23,207, 59,
+ 33,132, 71, 8,169, 69,204,156,107,232,159,190,238,132, 16,247,218,181,107,151,147, 72, 36,104,213,170, 21, 0,180, 40, 35,103,
+195,209,163, 71,187, 78,158, 60, 89,240,224,193, 3,252,252,243,207, 56,114,228, 8, 18, 19, 19,209,177, 99, 71,225,167,159,126,
+234, 42, 22,139, 27, 90,196,201,183,222, 59,241,171, 73,237,166, 78, 24,161,120, 24,169,197,182,115,145,248,237, 70, 28, 18,115,
+ 68,232,212,125,144, 77,219, 46,189,219,138,196, 54,123, 45,229,156, 49,125,122,187,145, 67,251, 41,130,227, 88, 28,189, 25,143,
+155,207, 50,160, 23,216,162,125,247,225,118, 53, 27,183,235,192,135, 96,251,251,190, 70, 91,128, 6, 19, 39, 78,116,154,182, 98,
+215, 53,247,186, 95,172, 73, 74, 67, 83, 83,225, 83, 5,176,181,151,203,191,120,214,188,249, 8,233,155, 57, 31,139,229,124,139,
+175, 78,151,181,137,105,104,102,234,159,213,204, 30,149,243,186, 21,121,103,126,249,134,161, 4, 19,250,187,195,181,164,124, 94,
+ 4,122, 77,156, 52, 73, 96, 99,103,135,245,235,215, 67,173, 84,190,229, 51,251, 89, 57,180, 59, 39,227, 71, 87,240,247,124,218,
+210,155, 92,249, 8, 63, 0, 71, 22,105,209, 58,113,226, 4,237,208,161, 3, 1,128, 3,193, 52,173, 71, 0,249,190,247,184,239,
+230, 16,134,208,242,129,141,130, 61, 42, 6, 40, 29, 28, 28,144,147,147, 3,181, 90, 13,161, 80,136,220,220, 92, 68, 70, 70,226,
+230,205,155,176,179,179,179, 40, 51,153,153,153,176,178,178,130,149,149,213, 59,225,156, 57,184,149,248, 85, 84,146,248,244,205,
+139,205,127,252,242,127, 13, 42,214,106,241,232,179,222, 19, 30, 91, 59,185,231, 62,122,244, 8,215,175, 95, 71, 90, 90, 26,234,
+215,175,255,177, 92,207,219,121,237,245,109, 66,136, 93,211,166, 77, 61, 79,159,187,108,151,157,203, 90,135, 39,232, 4, 44,203,
+ 66, 38,115,211,239, 59,120, 52,163, 87,247, 78,132, 16,146, 8,224,118,158,184,189, 93,194,141, 34, 1,224,215,163, 71,143, 25,
+ 95,126,249, 37, 66, 67, 67, 49, 98,196, 8,213,237,219,183, 83, 26, 53,106,228,176,101,203, 22,233,228,201,147,113,233,210,165,
+121,132,144,195, 0,194, 40,165,185, 69, 52, 26, 66,161, 80, 8,125,158,108,208, 26,216,124,125,159,153,153, 9,170, 74,131, 80,
+ 40,228, 1,112, 2, 96,150, 31, 29,203,178, 66,129, 64,144, 47,178, 34, 19, 50, 17,153,152,131,204,108, 13, 84, 42, 61, 52, 42,
+ 10,158,204,129, 15,132,187, 0, 8, 55,179, 62,121, 18,137, 4,122,189, 62,127,254, 69,163,165, 76,163,209, 32, 35, 35, 3, 60,
+ 30,207, 10,128, 53,128, 84,115, 8,223, 56,185,227,183,188,110, 64,220,217,213,217,241,229,137,153,218, 30,243,159,230,167, 89,
+203,249,186,131,147,171,242, 28, 60,107, 94,173,213,107,187,191, 49,237,125,250,103, 17, 66,196, 78, 78, 78, 23, 14, 28, 56, 80,
+181,114,229,202, 8, 11, 11,243,239,217,179,103,125, 66, 72, 45, 75,231,100, 36,132,200, 24,134,249,126,200,144, 33, 95,246,237,
+219,151, 84,169, 82, 5,124, 62, 31,122,189,222, 51, 52, 52,180,229,254,253,251,167,243,249,252, 45, 6,131,225,107,115,253,254,
+ 8, 33,140, 72, 36,218,183,105,211,166,102,245,235,215,199,142, 29, 59,112,251,246,109,182,110,221,186,204,192,129, 3,225,237,
+237, 93,127,224,192,129,191, 17, 66,218,151,198,178, 69, 8,241,238,223,191,127, 57, 30,143,135, 70,141, 26, 9,175, 95,191, 94,
+ 27,192,245, 50,214,169,149,167,167,231,165, 22, 45, 90,212, 58,119,238,220, 61, 66, 72, 11, 75,252, 28, 9, 33, 93,220,221,221,
+151,217,216,216,216, 89,208,198,230,196,196,196, 76,177, 96, 14,213, 6,117,234,212, 65, 68, 68, 4,252,252,252, 32, 20, 10, 27,
+ 18, 66, 70, 1,104, 7, 96,182, 37, 51, 88, 16, 66,220, 27, 54,108,232,216,162, 69, 11,178,116,233, 82, 0,128, 64, 32,128,193,
+ 96, 0,195, 48, 16, 8, 4,240,247,247, 39,175, 95,191,182, 39,132,184,155,211,141,232, 88,169,101,167, 70,159,181,107,210,172,
+126, 13,102,229,193,151, 48,176, 6,240,136, 30,124,194,130,213,137, 33, 22,242, 80, 37,240, 19,222,179, 39, 15,235, 59,250,182,
+238,148,252,252,236, 49,115, 56,219,117,234,220,180,170, 95, 21,230,199,223, 94, 33, 61,230,169, 33, 38,228,114, 50,195, 99, 80,
+181,206,167,142, 85, 2,106,241,106,213,111, 33,136, 13,123,210,210,190,114,243, 86,169, 47, 47,157,123, 31,207,228, 2,128,231,
+233,225,248, 69,199,214, 45,132,113,177,177,202,253, 7,143, 61,206,209,225, 38, 0, 92, 2, 72,123,160, 70,245,122,245,154,111,
+ 89,186,212,193,205,205, 77, 48,160,111, 95,253,230,123,247,238,141, 4, 12, 69,241, 57,186,186,182, 26, 61,122, 52, 47, 46, 54,
+150,238, 63,116,226,145,145, 15, 0,100, 64,245, 26,158,254, 29,161,124,102, 81, 55,101, 39, 64,228,226,234, 90,117,212,168, 81,
+136,143,141,197,142,157, 59,179,115,129, 27, 70, 43,214, 81, 30,214, 5, 84,116, 29, 50,109,120,103, 82,206,205, 17,163,231,109,
+110,216, 82,155, 88,241, 2,254,180,108,153,106,145, 15, 85,100, 21, 20, 91, 69,126,157, 31, 12,166,115,173, 69,196,103,255,254,
+ 61, 76, 82,150, 86, 25, 26, 26, 10, 71, 71, 71,184,185,185,193,198,198, 6,193,193,193, 56,127,254, 60,158, 63,127, 14,150,101,
+ 81,179,102, 77,139, 50,148,156,156,140,135, 15, 31,194,206,206,238,157,113, 86, 44,231,132,113,229,156,132, 9, 41,153,194,115,
+183,159,215,223, 60,179,123, 0,227,223,125,107,110,238,159, 26, 64,163,249, 56,102, 40, 49, 29, 93,232,229,229,213,120,219,182,
+109, 66,181, 30,138, 42,163,110, 44, 87,230, 26,228, 0, 32,151,240,148, 65,203,124,191,254,246,219,111,149, 67,135, 14,245,143,
+140,140, 92, 82, 18,175, 72, 36, 90,252,249,231,159, 79,165,148, 10, 38, 78,156, 8, 0, 24, 52,104, 80,230,205,155, 55,171, 80,
+ 74, 19, 9, 33,238,195,134, 13,123,113,225,194, 5,217,164, 73,147,120,122,189, 62,152,207,231, 83, 66,200, 66, 74,233,252,130,
+124, 12,195,220,189,119,239, 94,121,119,111, 95,120, 59, 48,104, 58,231,205,116,109, 14, 50, 22,209,225,175, 16,242,232, 54, 92,
+ 93, 93,109,220,220,220,158,250,249,249,105, 99, 98, 98,166,103,103,103,111, 40, 46,143, 66,161,240, 65, 80, 80,144,155,183,183,
+ 55,178,179,179, 17,157,148,131, 9,135,100,200, 84,189, 49, 98, 8,160, 66,173,114,190, 10, 41,163,185,237,226,226,162,213,104,
+ 52,223,164,167,167, 23, 59,141,136, 64, 32, 72,121,244,232,145,149,151,151, 23,114,115,115,105,106,106, 42, 81, 42,149,200,202,
+202, 34, 39, 78,156,232, 26, 23, 23, 87,215,199,199,135,120,122,122, 46,172, 92,185,178, 42, 38, 38,102,132, 57, 62, 96, 7,230,
+249,107, 9, 33, 6, 62,159,191,114,228,200,145,189, 14, 31, 62,124,247,224,252,170, 93, 40,165,218,188, 7,210, 38, 48, 48,240,
+116,141, 26, 1,238, 59, 87, 84, 95, 67, 41, 93,254, 47,184,189,134,204,154, 53,171,170,189,189, 61, 70,143, 30,141, 5, 11, 22,
+ 96,238,220,185,149, 71,143, 30, 61, 18,192, 15, 22, 52, 58, 82, 87, 87,215, 59, 63,254,248,163,127,227,198,141,113,242,228, 73,
+236,217,179, 7,175, 95,191,214,251,248,248,240,235,215,175,143,121,243,230,161,109,219,182, 35,198,143, 31,223,156, 16, 82,219,
+ 76,241, 49,116,222,188,121, 93,154, 52,105,130,193,131, 7,171, 47, 94,188,216, 11,192,153,179,103,207,126,122,233,210,165,131,
+187,118,237,146,126,247,221,119,173, 38, 79,158, 60, 26,192,218, 82,148,191,107,179,102,111,230, 80,110,210,164, 9,150, 45, 91,
+214,182, 44, 66,139, 16, 34,114,112,112, 56,177, 99,199,142, 90,190,190,190, 24, 48, 96, 64,237, 94,189,122,157, 32,132,180,166,
+148,154,213, 32,121,120,120,124,127,228,200,145, 74, 69,245, 44, 20, 6,181, 90,109,255,197, 23, 95, 44, 5, 96,145,208,218,189,
+123, 55,166, 76,153,130,154, 53,107,214,104,208,160,193,198, 81,163, 70,161, 71,143, 30,159, 17, 66, 92, 40,165, 74,115,136,248,
+124,190, 79,199,142, 29, 5,135, 14, 29,122, 99, 29,105,214, 12,173, 90,181,194,227,199,143,113,245,234, 85,240,120, 60,200,229,
+114, 52,110,220, 88, 20, 27, 27,235, 3,160, 68,161,197,136,101, 67,186,116,108,175, 56,122, 51, 14, 6, 86,143, 79, 42, 89,163,
+190,191, 51,158, 69,103, 34,232,105, 52, 12, 26, 33,172,237, 29,208,176,121, 27,251,248,152,215, 67, 0,148,236,175, 37,150, 13,
+233,214,165,131,213,209, 27,177, 72,143, 13,161, 47,111, 31, 62,175,203, 85,142, 0,128,187,127,236,221,232,234, 32,109, 93,165,
+206, 39,188, 22,173, 59,219, 29,218, 19, 63, 4,192,123, 17, 90,151,202, 97,147,183, 32,121,208,180,126, 77,169,192,206,243,182,
+ 66,167, 91,103,220,214, 22,104, 51,125,214,172, 6,195, 71,142,148,176, 44,139, 93,191,254,154,249,240,222,189,103,197,141,246,
+ 91, 7,120,247,234,210, 69,172,176,182,198, 87, 19, 38, 64,161,211, 93,200,175, 18,224,179,175,166, 78,109, 60,118,236, 88,233,
+198,133, 95,222,109, 59,108, 81, 29,150, 82, 82, 88, 55,101, 65,156, 3,234, 14,235,210, 5, 10,107,107, 76,156, 56, 17, 68,171,
+ 61,109,220,118,156,143, 11, 67,187, 54,173,223,175, 83, 19, 16, 16,236, 57,126, 21, 47, 35,146, 30, 93,136,195,171,143,228,157,
+108,153,143,150, 17, 89, 90, 36,124,214,161, 59,238,221,187, 7, 0, 72, 73, 73, 65, 74, 74, 10, 42, 85,170,132,181,107,223,110,
+191, 74, 35, 96, 88,150,125,231,156, 0,224,226, 96,141, 1,237,235,241,175, 62,220, 35, 81, 38, 37, 73,172,172,172,114, 63, 54,
+161,101, 10,189, 94, 47,241,241,241, 65,166, 10, 36, 35, 71,103,149,188,247,141,197,223,177,207, 69, 43,141, 70,195, 88, 89, 89,
+ 65,173, 86, 75,204,120, 33, 8,186,116,233, 50,117,223,190,125,130,144,144, 16, 84,172, 88, 17, 90,173, 22, 55,111,222,140,206,
+155, 8, 25,148,210, 88, 30,143, 23,203,178,108,229,154, 53,107, 98,201,146, 37,240,247,247, 39,237,219,183,159,158, 39,182,222,
+122,184,227,226,226,190, 31, 53,106,212,167,251, 15, 30,182,223,212, 91,133,204,140, 76,100,103,103,227,193,253,187, 72, 77,200,
+197,230,205,155, 33,145, 72, 9, 0, 97, 98, 98,130,112,210,164, 73,107, 60, 61, 61,219, 69, 71, 71,119, 44, 42,159,177,177,177,
+139,199,142, 29,219,112,239,222,189,182, 89, 89, 89, 80,169,114,145,170,148,225,233,234, 55,243,248, 86,253,234, 41,214,175,219,
+192, 84, 47, 47,119,204,201,201,193,151, 95,126,185,202,221,221,189,113,108,108,236,176,162, 56, 99, 98, 98,110,141, 27, 55,206,
+101,215,174, 93, 18,141, 70,163, 53, 24, 12, 80,169, 84,204,222,189,123,167,151, 47, 95,222,110,203,150, 45, 68, 34,145,230,237,
+ 27, 45, 28, 51,102,204, 62, 87, 87,215, 93,241,241,241,131, 75,234, 46,226,241,120,171,119,238,220, 57,176,119,239,222,138,184,
+184,184,128, 35, 71,142,136, 1,168,242,118,113,107,221,186,117,249, 21, 43, 86, 56, 5, 6, 6, 78, 39,132, 8, 40,165,223,189,
+207,251,201,209,209,113,124,151, 46, 93,176,116,233, 82, 28, 59,118,108,178,189,189,253,170, 5, 11, 22,192,221,221,125, 28, 33,
+100,181, 5, 19,245, 46,255,225,135, 31,252,253,253,253, 49,104,208, 32,205,185,115,231,102, 1,248, 13, 64,196,149, 43, 87,188,
+182,111,223,222,105,223,190,125, 75,127,252,241, 71,201,218,181,107, 43,117,239,222,125, 53,128, 97, 37, 62,223, 46, 46,147,250,
+246,237,139, 21, 43, 86,224,226,197,139,221, 41,165, 39,243, 54,157, 34,132,116,250,238,187,239,254,152, 51,103, 14,126,248,225,
+135,137,150, 10, 45, 66,136, 85,213,170, 85,191,105,215,174, 29,174, 92,185,130,166, 77,155,162, 97,195,134,147, 9, 33,107, 40,
+165,201,165, 16, 89,140,149,149,213,190,109,219,182, 53, 45, 95,190, 60, 22, 45, 90,132,169, 83,167, 98,235,214,173, 77, 7, 12,
+ 24,176,143, 16,210,173,224, 51, 83, 24,108,108,108,172,100, 50, 25,166, 79,159, 78, 95,191,126,157, 86,210,254,229,202,149,179,
+ 91,181,106, 21,177,179,179,179, 49, 87, 20, 75, 36,146, 70,213,170, 85,195,188,121,243,112,246,236, 89,204,153, 51, 7,213,170,
+ 85, 67, 68, 68, 4,250,244,233, 35,155, 61,123,118, 15, 0,219,204,124,233,216, 56, 56, 56, 32, 49, 49, 17, 2,129, 0,141, 27,
+ 55,198,111,191,253, 6,181, 90, 13,103,103,103,164,167,167,163, 94,189,122, 70, 81,102, 99,230,171,172,154,163,189, 13, 18,159,
+196,128, 15, 61,234, 84,113,196,133,199, 41,208,234, 88, 56, 59,216, 34, 62, 49, 1, 13,170,121, 66,163,241, 2,165,108, 53,115,
+ 24, 69, 60,166,142, 88, 34, 69,106, 86, 50, 98,158, 94, 76,209, 26,212,163,210, 95, 95,141, 2, 0,251,138,205, 70,221,189,122,
+246,110,207, 14,205,156,179,149,229, 64, 40, 91,239,125, 60,143, 61,189, 80, 78, 46,225, 15, 58,190,105, 38,209,179, 44, 62, 31,
+182,184,110, 59, 23,228, 32, 1,112, 2,124,122,246,233,211,232,235,175,191, 22,189, 8, 13,101, 39, 77,152,144,126,255,206,157,
+139,191, 3,119,139,227,204, 6, 42,183,110,221, 26, 12,128,223,207,156, 81, 38, 3,209, 0,224, 2,148,235,252,197, 23,205,102,
+205,152, 33,122, 21, 30,206,222, 12,205, 62,250, 42,145, 46,105,100,143,135,123, 35,222,236, 83, 28, 12, 64,117, 35,239,233,211,
+167,169, 42, 47, 31, 45,202, 97, 92,219,198,129,245, 7,118,105,134,232,248, 20, 44,251,249, 40, 30,189,136, 59,237,192,162,255,
+199,242, 30, 46, 46,130, 61, 99,198, 3,243,151,180,156,156,191,246, 30,148, 85,192,252, 29,156,133,225, 99, 20, 90, 70, 24, 39,
+111,214,232, 88,104,116,172,241,171, 22, 42,149,202, 92, 69,174, 59,125,250,244,142, 9, 19, 38, 96,213,170, 85,120,241,226, 5,
+132, 66, 33,170, 85,171,230, 70, 8,177, 50, 90, 96,234,212,169,227,204, 48, 12,158, 61,123,134,149, 43, 87, 98,232,208,161,244,
+250,245,235, 91, 11,123, 97, 80, 74,239,167,166,166,174, 27, 53, 98,104,122, 90, 66, 36,116,170, 52, 36,198,188,130, 90,153,142,
+ 69, 75,190, 71,142,142,143,248, 12, 45,226, 51,180, 96,196,246,216,184,101, 27,175,106,213,170,237,248,124,126,199, 98,242,121,
+ 51, 33, 33, 97,203,152, 49, 99,210,227,227,227,243,203,167,209, 81,104,116,111,223,175, 50,153, 12,171, 87,175,182,169, 82,165,
+ 74, 23,129, 64,208,178, 24,206,184,168,168,168,144, 49, 99,198,104, 18, 18, 18,144,145,145,129,163, 71,143,118, 42, 95,190,188,
+221,210,229,171,136, 82,203, 71,124,186, 22,241,233, 90,136,172,156,177,239,224, 97,158,175,175,111, 63,129, 64,208,176, 36,145,
+181,107,215,174,129,189,123,247, 86, 44, 95,190, 60,245,200,145, 35,235, 41,165,166, 23,228,217,234,213,171,247,239,219,183, 47,
+107,234,212,169,246,203,150, 45,155, 76, 8,153,245, 30, 27,139,150,189,123,247,246, 99, 89, 22, 7, 14, 28,120, 68, 41,253,225,
+240,225,195,119,212,106, 53,250,244,233,227,147,215,141,100, 14, 79,221,126,253,250,125,217,180,105, 83,124,245,213, 87,218,115,
+231,206,213,161,148,174,162,148,134,211, 55,136,160,148,174,185,116,233, 82,205,241,227,199,171,235,213,171,135,193,131, 7, 15,
+ 37,132, 52, 45,129,183, 81,223,190,125,253, 89,150,197,222,189,123, 31,154,136, 44,227,117, 60,127,240,224,193,155, 26,141, 6,
+253,251,247,175, 64, 8,249,212,130,178, 11,197, 98,241,129,111,191,253,214, 54, 38, 38, 6, 3, 7, 14, 84, 63,123,246, 12,243,
+231,207,151,218,216,216,156, 52, 62, 3,150, 64, 44, 22,111,254,233,167,159,186, 84,175, 94, 29, 99,198,140,209,108,216,176, 97,
+194,151, 95,126,169,169, 83,167, 14,214,175, 95,223, 69, 36, 18, 89, 52,181, 72,108,108,108,122,112,112,176, 67, 73, 75,116,116,
+116,130,153,101,150, 41, 20,138, 27,129,129,129,153,213,170, 85,251, 68,175,215, 35, 56, 56,248,213,142, 29, 59,216,106,213,170,
+ 97,221,186,117, 88,182,108, 25, 58,118,236, 8, 30,143,215,195,146,188, 42,149, 74, 72, 36, 18, 8,133, 66, 4, 5, 5, 65,173,
+ 86, 67, 38,147, 65, 34,145,128,199,227,193,214,214, 22, 10,133, 2, 48,115, 52, 26, 33,160,153, 57, 58, 8, 4, 12,248, 12,139,
+144,136, 12,104,117, 44, 36, 66, 30, 4,124, 2, 80, 22,182,114, 1, 36, 34, 30, 24, 66, 88, 51, 57,145,161,212, 66, 36,100, 32,
+ 16,138, 8,163, 55, 72,243, 95,142,124,131, 84, 42, 21, 17, 71,107, 49, 36,194,127,209,180,192,228, 77,125, 13, 1, 4,114, 47,
+175, 94, 43, 86,174, 20,101,102,103,163,123,247,238,169,225,119,238,236, 84, 1,119,154,151, 80,167, 12,159, 95,165, 69,243,230,
+ 8,186,119, 15, 89,105,105, 47,129, 55,206,241, 34,119,247,222,171, 87,175, 22,169,114,115,209,189, 91,183,244, 23, 87,175,238,
+138,202,198,113,115, 68, 22, 0,240,132, 66, 87, 35,111, 70, 90, 90, 26,240, 38,132,132,139,147,213,210,177,253,218, 34, 43, 39,
+ 23,211,190,223,201,222, 11,137, 27,119, 37, 26, 29, 14,199, 34,227, 99,122, 7, 19, 66, 70,154, 46,102, 89,180,140, 86, 39,115,
+196,138, 90,173,126,231, 2,168,172,156,133,137,196,178,114,254, 27,193,231,243,115,159, 63,127, 46,178,118,112,103, 29, 20,130,
+180,242, 67,175,218, 0,128,189, 21, 63, 67,107,208,177,177,177,177, 16,139,197,185,230,112,229,230,230,142, 32,132, 44, 2, 16,
+192,231,243,143,111,219,182,141,236,220,185,211,174,111,223,190,161,132,144,152,192,192, 64,239,109,219,182, 89, 3,192,154, 53,
+107,232,190,125,251,218,226, 77,200,140, 34, 77,202,241,241,241,243, 5, 2,193,245,177, 99,199,174, 21,137, 68,118,114,185,220,
+225,202,149, 43, 36, 87, 75, 81,119, 86, 68,254, 72, 68,107, 41,131,203, 51,173, 49,114,228, 72,222,211,167, 79,151, 0, 56, 94,
+ 12,231,116,177, 88,124,229,197,139, 23,171,108, 60,107, 57,201,189,103,217,212,159,249, 12, 0,224,237, 40, 0,147,215, 46,166,
+167,167, 35, 41, 41, 9, 95,126,249,165, 93,104,104,232,116, 0, 23,138,226,140,142,142,190, 36, 22,139,163,159, 60,121,210, 66,
+ 32, 16,136,228,114,121,221, 27, 55,110,144, 92, 13,139, 26,211, 35,144,154,253, 38,159,246, 86,124,220,253,214, 5,227,198,141,
+227,191,124,249,242,123, 0, 77, 10,109,204, 24,102,153,169,200,154, 54,109,218, 3, 0, 21, 8, 33,111,117,141, 26, 12, 6,210,
+191,127,255,199, 0,170, 77,157, 58,213,158, 82, 58,153, 16,146, 74, 41,221,244, 79,223, 75,214,214,214, 75, 71,141, 26,133,125,
+251,246, 33, 45, 45,109, 53, 0,100,102,102,254,176,123,247,238,189, 35, 70,140,192,175,191,254,186,148, 16,242,187, 25, 86,173,
+207,251,244,233,131, 83,167, 78,225,143, 63,254,248,134, 82, 26, 92,196, 51,250,130, 16, 50,253,200,145, 35, 63,246,237,219, 23,
+191,252,242, 75, 59, 0,197, 57,200,182,110,219,182, 45, 78,158, 60,137,148,148,148,245,133,237,144,158,158,190,225,232,209,163,
+ 13,218,182,109,139, 37, 75,150,180, 6,112,222,140, 6,210,223,198,198,102,219,143, 63,254, 88,183,122,245,234,232,215,175, 95,
+174, 86,171,109, 55,117,234,212, 99,123,246,236, 81,236,216,177,227,147,145, 35, 71,222, 34,132, 12,167,148,222, 52,235,165,195,
+227,125,183,118,237,218, 97, 45, 90,180,192,228,201,147,245,167, 79,159,238, 76, 41, 61, 67, 8, 9,157, 54,109,218,137,149, 43,
+ 87,242, 86,172, 88, 49,140,199,227, 37, 25, 12,134,247, 37,174,191, 93,179,102, 77,131, 54,109,218,224,213,171, 87,184,121,243,
+ 38,180, 90,237,175, 55,110,220,184, 92,185,114,229,111, 53, 26,205, 49,185, 92, 62, 72,161, 80, 4,214,170, 85,235, 83, 66,136,
+204, 28, 63, 61, 66, 72,122,104,104,168,220,217,217, 25, 2,129, 0, 15, 31, 62,132,179,179, 51, 0, 32, 49, 49, 17,213,170, 85,
+ 3,143,199, 67,122,122, 58, 0,243, 94,182,132, 48,143, 66,195, 99, 43,216, 43,228,128, 65,130,251,207,162,225,228,104, 7, 3,
+ 97, 16, 31, 31,135, 90,126,158, 32,132, 32, 61, 37, 30,132,144,199,230,112, 26, 40, 27, 20, 25,155,232,225,160, 16,163,122,131,
+ 54, 14, 55,126, 79,218,105, 83,177,201, 72, 62,143,240,196, 18,235, 77,195, 6, 15,118,100, 89,138,244,148, 4,240, 25,230,246,
+251,184, 64, 7, 34, 17,213,188,162,228,126,155, 97,139,106, 17, 10,170,210, 98,199, 47, 9, 72,147, 1,181,214,204,158,109,235,
+224,232,136,126,253,250,177, 41, 49, 49,231,114, 0,179, 2, 43, 87,168, 92,217,197, 74,161,192,181,107,215,192, 3,194, 0, 96,
+ 43,224,191,108,218, 52, 7,103, 87, 87, 12, 29, 54,140, 77,136,140, 60,175, 50,163, 75,247, 45,222,138, 21, 5, 70, 94, 38,143,
+ 55,142,135, 9, 83, 59, 55, 21,203,165, 98,124,183,241, 48,162,146,149,123,111,196, 97,227,199,104,236, 40,209,162, 85,148,243,
+217, 27,167,106, 89,177, 98, 69, 34,145,228, 91, 83, 44,248,210,123,231,156, 37,225,239,224,124,143,202,121, 38, 33,228, 8, 33,
+100,102, 84, 84, 84,200,176, 97,195,180,122,173, 58,235,250,162, 10, 51,238, 45, 41, 63,230,198,124,183, 49,191, 77,176,153,145,
+147,145,154,181,102,205, 26, 93, 84, 84, 84,136,233, 49, 37,220, 44,145,148,210,147,219,183,111,223,112,224,192, 1, 84,171, 86,
+ 13,193,193,193,206, 74,165,178,246,227,199,143,237,253,253,253,177,115,231, 78,236,219,183,111, 21,165,244,108,113, 34,203,196,
+218,118, 46, 46, 46,206, 55, 34, 34,162,146,173,173,173,206,214,214, 22, 5, 71, 34,102,170, 88,164,164,103,192,222,222, 1,214,
+214,214, 62, 37,113,170,213,234,147,113,113,113, 85, 88, 59,191,102, 85,146, 87,103, 4,125, 87, 14, 65,223,149,195,201,233,238,
+112,179, 21, 33, 45, 45, 13, 73, 73, 73, 72, 74, 74, 2, 33, 4, 58,157,174,170, 25,156,175, 99, 99, 99,127,142,140,140, 60,226,
+226,226, 2,133, 66, 1, 10, 32, 62, 93,135, 7, 43,252,241, 96,133, 63,226,211,117,200,204,202, 66,249,242,229,161, 80, 40,170,
+ 21,213,101,228,225,225,209,190,119,239,222, 10, 0,200, 19, 80,159, 81, 74,199, 20,178,140,214,235,245,141,141,251, 78,153, 50,
+197, 30, 64,219,127,248,126,226, 17, 66,198,142, 24, 49,226, 19,137, 68,130,117,235,214,189, 6,176,203,216,214,111,216,176,225,
+ 25, 0, 76,152, 48, 33, 16,192,100, 82, 68, 36,104, 35,132, 66, 97,157,170, 85,171,226,198,141, 27, 0,112,184,132,211, 31,188,
+126,253, 58, 42, 87,174, 12,137, 68, 82,183,132,125,125,202,149, 43,135,103,207,158, 1,192,253, 34,246,185,255,236,217, 51,148,
+ 43, 87, 14,132, 16, 31, 51,202,222,165, 77,155, 54,143, 46, 92,184, 80,183, 81,163, 70, 24, 54,108,152,230,214,173, 91,237, 41,
+165,151,239,223,191,223,178,127,255,254,202, 42, 85,170,224,210,165, 75,254,253,251,247,191,206,227,241, 22,153,193, 57,116,225,
+194,133, 51,187,118,237,138,133, 11, 23,210,253,251,247,247,163,148,158,201,123,190, 78,239,221,187,119,224,226,197,139,105,183,
+110,221,176, 96,193,130,153,132,144, 49, 37, 88,135, 50, 12, 6, 3,148, 74,165, 89, 38,121,115,247,119,116,116,252,188, 77,155,
+ 54,152, 51,103, 14, 60, 60, 60,112,236,216, 49, 10,224, 56,165,244,138, 90,173,110, 70, 41, 93,169, 84, 42,127,187,113,227, 6,
+ 90,183,110, 45,196,219, 83,140, 20, 9,189, 94, 31,126,225,194, 5,173,131,131, 3, 60, 61, 61,225,229,229, 5,165, 82,137,244,
+244,116, 84,171, 86, 13, 13, 26, 52,128, 82,169,196,241,227,199,181,233,233,233,102, 13, 88,209,107,148, 59,206,158, 56,148,225,
+160, 16,195,211,217, 6,229, 61,236,145,157,158,140,164,248, 88,212,169,234,133,230,117,202, 35, 57, 67,131,211,199, 15,165,101,
+101,229,236, 48,171, 23, 64,157,179,237,220,239,199, 50,236, 20, 66,248,250, 5,162,255,176, 9,181,106,213,174,127,182, 94,189,
+198,167,151, 47,253,174,198,103, 13,171,146,232,228, 92,156, 58,126, 56, 45, 35, 51,115,219,251,104,235, 23, 0,188, 92,155, 42,
+151,215, 31, 9,250, 57,160,221,136,159, 67,162,177, 26, 0,116, 60,158,127,251,207, 63, 71,116,116, 52, 14, 29, 56, 16,151, 3,
+ 60, 52,151, 79, 42,149, 50, 0,144,145,145, 1,241,155,217, 66,160, 7,252, 58,116,232,128,164,228,100,236,222,181, 43,233, 20,
+112,207,146,124,118, 2, 68, 50,233, 27,131, 96, 70, 70, 6, 8,144, 9, 0,132,143,246,245,170, 85, 70, 82,106, 38, 46,220, 14,
+201, 46,175,194,151,197,241,124,168,142,240,197,249,104,149,100, 15, 77,158, 60,121, 50,196, 98, 49,220,220,220,242,197,145, 81,
+172,136, 68, 34,184,185,185, 65,175,215, 99,239,222,189, 0, 80,172, 15, 3, 3,168, 59,143, 89,194,170,117, 52, 71, 32, 16,188,
+ 19,206, 60,203,129,186,251,180, 95,216,223,175, 23, 62, 40,166, 52,156, 31, 0,234,229,197,196,170, 71, 41, 77, 11, 15, 15,143,
+238,213,189,115, 70, 68,232,147,120,101,122,108, 92,102, 74, 84, 92,212,235,199,241,179,166, 79,206,136,142,142,142,202,139,165,
+ 85, 47, 54, 54,182, 51, 0,115,125, 13, 38,247,234,213,235,167, 17, 35, 70,208, 7, 15, 30, 0, 0,130,130,130, 48,120,240, 96,
+ 58,112,224,192,213, 0,102,148, 34,223, 74,149, 74,245,150, 53, 68,107, 96,243,187,252, 50, 51, 51, 17, 27, 27, 11,141, 70, 99,
+182, 34,126,113,122,197,243,212,240,187,186, 64,111, 57, 2,189,229,240, 47, 39, 3,209,103,231,139,172,164,164, 36, 36, 36, 36,
+ 0, 64,174, 5,249,204, 84,171,213,111,229,211,180,107, 50, 51, 51, 19,241,241,241, 48, 24, 12,154, 34, 30, 58, 54, 38, 38,230,
+244,190,125,251,178, 0, 96,249,242,229,169,132,144, 63, 8, 33, 63, 21,178,108,228,243,249,215,140,251,174, 88,177, 34, 21,192,
+201,127, 80,100,117,173, 94,189,122,218,204,153, 51,215, 77,156, 56, 17, 27, 55,110, 68, 92, 92,220, 12, 74,169,222, 88,150,228,
+228,228,105,235,215,175,199,144, 33, 67, 48,119,238,220, 21,181,107,215,206, 36,132, 20,233, 95,225,228,228,228,201,231,243,113,
+239,222,189, 76, 74,233,171, 18, 26,168,248,123,247,238, 37, 16, 66,224,230,230, 86,177,184,125,237,237,237, 43, 41, 20, 10,196,
+196,196, 0,121, 95,204,133, 32, 60, 54, 54,150,138, 68, 34,184,187,187, 87, 46,169,252,118,118,118,211,126,254,249,103,254,147,
+ 39, 79,240,217,103,159, 69, 95,186,116,169, 53,165,244, 98, 94,222,238, 5, 5, 5, 53,109,217,178,229,243,179,103,207,226,251,
+239,191, 39, 53,107,214, 28, 83, 18,167,183,183,247,232,161, 67,135, 98,237,218,181,216,180,105,211, 24, 74,233,129, 2,101,222,
+179,126,253,250, 9,155, 54,109,194,176, 97,195,224,227,227, 83,172,175, 74, 68, 68,196,244, 22, 45, 90, 4,189,120,241,194,172,
+ 25, 15,204,217,159, 16,210,178,126,253,250,149, 84, 42, 21,182,109,219,246,170, 82,165, 74,119, 14, 28, 56, 48,153, 82, 90,240,
+133,253,219,161, 67,135, 48, 96,192, 0,212,172, 89,115, 27, 33,164,175, 25, 47,157,216,136,136,136,228,135, 15, 31,178, 60, 30,
+ 15,158,158,158,104,223,190, 61,250,244,233,131,154, 53,107, 34, 49, 49, 17,151, 47, 95,102, 67, 67, 67,147,205, 13, 92,154,252,
+252,194,177,176,176,231,215,238,221,186,172,227,243, 24,120,185,217,227,139, 86,181, 48,188, 71, 99,212,241,247, 64, 68,162, 10,
+231,207,159,213,133,133,189,186, 97,206,136, 67, 35,103, 72,240,195,235, 79,238, 93,213, 11,248, 4,254,126, 85, 48,103,214, 52,
+187,197,243,166,219, 86,169,232,133,135,175, 51,112,246,204, 41, 93,108,116,212,133,247, 53,226,240, 18, 32,180, 18, 19, 57,143,
+ 97, 96, 96,196, 74, 94, 94, 32,227,106, 1, 1,190, 46,174,174, 56,113,226, 4, 24,224,169, 69,124, 86,111,122,193,179,179,179,
+ 97,228,171,228,231,231,231,229,237,141,147, 39, 78,128,199,178, 79,155, 91, 24, 96,244, 25, 32, 51,229, 37, 64,238,151,229,160,
+168, 84,206,217,207,206, 70,142, 91, 15, 95, 66,173,163,183,119,165, 33, 7, 31, 33, 10,118, 27, 90,210,117,184,124,227,198,141,
+245,126,254,249,231,214,147, 39, 79,182, 26, 52,104, 16, 36, 18, 9,114,114,114,224,233,233, 9,131,193,128,223,127,255, 29,119,
+239,222,205,102, 89,246, 44, 10,132, 13, 32,132,180, 50,141,181,241,123, 40,149,190, 9,130,153, 83,239, 72,207,158,239,132, 19,
+ 0,172, 94,178,214, 41,229, 53, 59,215, 28,184,218,109,247,233,123,228,171,190,205,153, 58,126,229, 0, 0, 46, 46, 46,176,182,
+182,182,152,243, 29, 84,250,223,206,105,218,173, 27, 23, 23,247,140, 16,146, 56, 98,196, 8,127,163,227,187, 88, 44,206,141,138,
+138, 10, 49, 6, 44, 45,120, 76, 73,249,204, 27, 25,247, 37, 33,228,104, 70, 70,198,233,169, 83,167, 98,241,226,197, 56,118,236,
+ 88, 83, 74,233,181,210,148,157, 82,106,240,241,241, 73,191,125,251,182, 75,229,170,181, 81,193, 89,128,102,223,188, 0,165, 20,
+ 14, 50,138,172,244, 84,220,191,127, 15, 89, 89, 89,183, 44,201,167,187,187,123,122, 98, 98,162,163,179,179, 51, 82, 83, 83,145,
+156,156,156, 47,178,210,210,210,144,154,154, 74, 9,121, 59,102, 75, 9,156,202, 74,149, 42,229,132,132,132,136, 92,202, 85, 70,
+ 69,103, 33,234,207,122, 6, 80, 10, 47,123, 6, 89,153,233,184,113,227, 6, 50, 50, 50, 46, 22,197,201,178,236,215,253,251,247,
+231, 1, 24, 56,117,234, 84,123, 0, 53,167, 77,155,118,182,224,200, 66,129, 64,240,195,206,157, 59,171, 25,187, 24,167, 79,159,
+190,138, 82,250,243, 63,117, 47, 57, 56, 56,124,125,226,196, 9,133, 86,171,197,154, 53,107,176,106,213,170,173,148,210,255, 21,
+168,143, 19, 60, 30,111, 61,195, 48, 99,199,141, 27,135, 81,163, 70,201, 62,249,228,147,201, 38, 86,175,183, 56, 99, 98, 98,230,
+212,169, 83,103,110, 98, 98,162, 89,142,253, 47, 94,188, 24, 89,167, 78,157, 57,137,137,137,203,138,187, 70,114,185, 92,110, 48,
+ 24, 16, 22, 22,150, 70, 41,205, 40,226,218,229, 86,169, 82, 37,198, 96, 48,120,202,100, 50,251,146,238,207,180,180,180,239, 62,
+249,228,147,249, 9, 9, 9,103, 0, 44, 42, 24,170,132, 82,250,128, 16, 18, 56,113,226,196,241, 75,151, 46,237, 22, 31, 31,191,
+183, 36,206,136,136,136,239, 90,182,108,249,205,243,231,207,183, 23,213, 5, 76, 41, 93, 71, 8,209,238,220,185,115, 76, 88, 88,
+216,146,226, 56, 41,165,199, 81, 76, 87,122, 33,220,133,238,111,202,201,227,241,166, 45, 93,186,148,217,184,113, 35, 40,165, 43,
+244,122,125, 81,249,124,200,227,241,118, 52,110,220,120,208,129, 3, 7, 36,129,129,129,163, 0,236, 41,233,254, 84,171,213, 55,
+175, 95,191,222, 32, 60, 60,220,177,101,203,150, 66,227, 7, 74,122,122, 58,142, 31, 63,174, 13, 13, 13, 77, 86, 42,149, 55, 45,
+105, 67,244,154,204,190,215,207, 31,217, 19,254,226,113,195, 22,237,186,216,105,180,158, 16,167,240,144,158, 18,143,223,143, 31,
+ 74, 11, 11,123,117, 35, 39, 39,189,175, 37,156, 90,117, 70,159, 27, 23,142,238,141, 14, 11,105,208,172,101,123,187, 92,141, 55,
+196, 66, 6, 41, 9, 49,248,253,196,145,212,176,176,215, 87,114,117,234,193,239,171,157,231,249, 96, 17, 47,254,238,136,209,157,
+106, 65,106,231,121, 95, 0,172,105, 12, 72, 29, 93, 92,132,121,207, 14,172,128, 8,115, 57, 19, 0, 81,229,188, 94,170,156,156,
+ 28, 8, 0,205, 16, 64,224,228,228, 36, 5,128,231,207,159, 67, 6, 68, 90,154,207,108, 64, 46, 51,225,101,128,156, 20, 62, 60,
+ 42, 89,203, 9, 0, 68,199,167, 64,163,195, 53,124,164, 48, 90,180, 10,115,138, 47, 41,248, 34, 11,224, 38, 33,228,222,178,101,
+203,154,253,244,211, 79,205, 39, 77,154, 36,250,252,243,207,113,231,206, 29,156, 59,119, 78,163, 86,171, 47, 1,184,108, 28,174,
+110, 70,102,222, 57,231,129, 55,251,245,170,231, 65,236,181,172,234,240,156,159, 78, 53, 41,239,106, 75,245, 6,150, 60,126,252,
+ 24,215,175, 95,183,152,243, 3,185,176, 0, 80,143, 16,114, 36, 47,233,118,193, 16, 14,121,221,133,245, 76,172, 96,165, 57,213,
+125, 62,159, 79,253,252,252, 72,222,244, 52,193,101,201,119,124,124,124,191,233,211,167,159,217,127,240, 48,255,208, 56, 41, 50,
+210, 51,222, 52,192, 25,233, 72, 73,136,197,249,243,231,181, 73, 73, 73,163, 44,225, 76, 74, 74,250,178,111,223,190,251,247,236,
+217, 99,159,150,150,150, 47,180,210,210,210,192,178, 44,182,110,221,154,148,144,144, 48,219, 18,206,184,184,184, 97, 83,167, 78,
+ 61,184,123,239, 65,254,217, 25,118,200, 54, 70,159, 87,102, 32, 37, 49, 14,199,142, 29, 83, 39, 39, 39, 79, 44,230,250, 24, 8,
+ 33, 95,245,239,223, 31, 70,177,117,227,198,141, 9,132,144,117,198,151, 57, 33,164,194,215, 95,127,221,215,196,143,107,213, 63,
+ 61,234, 48, 37, 37,101,113,131, 6, 13, 86, 37, 37, 37,189,214,106,181, 7, 40,165,133, 70,233, 55, 24, 12,227, 8, 33,215,215,
+173, 91,215,199,209,209,209, 37, 62, 62,126,169,165, 47,250,178,238, 31, 25, 25, 57,179, 78,157, 58,179, 18, 19, 19,151, 22,183,
+223,203,151, 47,199,230,237,183,204,140,115,159, 0,112,162,132,125,244,120, 19,218,226, 7, 51,203,115, 4,192, 17, 51, 27,231,
+205,239,163,253, 48, 24, 12,203,171, 87,175, 46,209,235,245,103, 75,242, 7,100, 89,118,228,164, 73,147,162,167, 76,153, 82,203,
+ 96, 48,152, 91, 7, 58, 0, 87, 8, 33,238,201,201,201, 62, 0,108, 1,128,207,231,167,167,167,167,151,106, 10,158,188,136,239,
+ 29, 29,125, 91,119, 58,176,125,237, 16,202, 26,106, 18, 66,192, 99,120, 15,178,178,115,182,153,107,201, 42,132,179,131,163,111,
+235, 78, 9, 49, 17, 67, 41,107,168, 9, 16,150,207,103, 30,102,101,231,108, 73, 10, 57,251,222,166,224, 25,228, 1, 23, 30,193,
+184, 51,191,124, 67, 0,160,245,208,111,107,149,183,133,149, 62, 29,233,200,107,203,227,226,226, 96, 7,164,153,203, 41, 3,244,
+218, 60,159,232,180,212, 84,200, 0, 85, 28,192,203,243,187, 36, 9,241,241,176,178,128, 47,255,131, 17,208, 22,224,205, 0, 32,
+ 54,186,115,166,102, 42, 1,243,227, 26,126,144, 22,173,130,191,243, 5, 23,165,212,236, 5,111,230,215,251, 2,192,146,188,181,
+188,132,253, 91,189, 15,206, 6,110,240,109, 85,137,132,180,247,227,167, 2,232,241, 46, 56, 45, 93,254,110, 78, 0,219, 53, 26,
+ 13,205,205,205,165, 57, 57, 57, 52, 59, 59,155, 2, 56, 82,200, 49, 71, 98, 99, 99,105,116,116, 52,141,140,140,164,225,225,225,
+ 20,192, 46, 75,243,105,109,109,253,115,207,158, 61, 13, 2,129, 96,237,187, 40,187,189,189,253,146,250,245,235,107,127,252,241,
+ 71,250,219,111,191,209, 45, 91,182,208,113,227,198,209,106,213,170,169,109,109,109,251,150,134,211,213,213,117,142,159,159, 95,
+202,214,173, 91,233,174, 93,187,232,234,213,171,233,236,217,179, 13,158,158,158,241, 10,133,162,109,105, 56,157,157,157, 55, 55,
+105,210, 68,187,121,243,102,122,246,236, 89,186,123,247,110,250,245,215, 95, 83,127,127,127,181, 92, 46,239,110, 14, 39, 0, 30,
+159,207, 95, 57,122,244,232,120,119,119,247, 19, 5,182,201, 2, 2, 2,238,244,239,223, 63, 22,192,244,143,229,254,228, 56, 57,
+ 78,142,179,236,156, 3, 61,224,222,186, 2,244,244,242, 55,148, 94,254,134,182,170, 0,182,159, 59, 60, 40,192,147, 9,133,125,
+154, 55,109,186, 66, 8,244,161, 0,175,208,165,176,124, 2, 60, 9,143,215,163,113,253,250, 43,132, 64, 95,227,190, 18, 30,175,
+ 71,243,166, 77, 87, 8,120,188, 1, 69,242, 21,195, 73, 1,158,144,207,159,222,184, 97,195,149,124, 96,150, 49,237,211, 10,228,
+233,215,237,202,209,166,222,228,229, 0,103,200,138,227, 44,162, 62, 70,190,235, 58,254,167,151,210,222, 8,252,119,125, 19,126,
+ 40,156,255, 34,161, 85, 57,175,219,230,136,201, 50,179,144, 99,102, 22,216,103, 59,128,202,165,172, 79,233,187, 44, 59,128,234,
+142,142,142,167, 42, 87,174,156, 84,190,124,249, 88, 59, 59,187, 61, 0, 60,203,200, 25,232,234,234,250,171,139,139,203, 11, 55,
+ 55,183,135,142,142,142, 63, 0,112, 42, 11,167, 64, 32,168,239,226,226,114,209,199,199, 39,221,219,219, 59,193,209,209,113, 47,
+ 0, 23, 75, 57, 1,184,161,144, 70, 5,128, 16,128, 27,247,210,225, 56, 57, 78,142,179,160,128,105, 83, 17, 75, 91, 87,128,190,
+117, 5, 24,218,248,224, 7, 83,129,210, 17,144,150, 86, 20, 13, 6,196, 5,247, 47,145,175, 4, 78, 10,240, 26, 1, 86, 5,143,
+105,239,137, 0,115, 56, 63,100,161,101,204,103, 94, 59, 63,210, 52,223,252,210,152,200,140, 78,178,239,184, 27,236,131,224,252,
+ 23,117, 27,190, 4, 74, 14,246,102, 26, 65,254, 29,156, 83,245,142,203,240, 8,192,231,239,152,243, 9,128,129,239,146, 83,171,
+213,222,130,153,243,190,149,144,183,184, 98,124,225,226,192,129, 3, 7, 14,111, 55, 14,134,211,192,140,214,190,100, 13,223, 0,
+230,212, 43, 26, 99,186,249,216,159,129,143, 45,226, 4,128,109,133, 76,207, 83, 42, 62, 19, 78, 0,184, 6,252,101,118,135, 19,
+101,116, 55,249,192,222,205,113, 0, 54, 91, 20, 71,139, 3, 7, 14, 28, 56,112,224,240,254,112,246, 57,229, 62,196,254,253, 56,
+ 81, 96,142,195,124,191, 79, 2,160, 85, 17,170,204,236,145, 20,132,144, 86,165, 80,125,231, 56, 78,142,147,227,228, 56, 57, 78,
+142,147,227,252,111,113,154,112, 23, 53,176,226, 89, 1,190,247, 50, 96,228, 93,129,152, 63,109, 89, 41,200, 63,208,176, 9, 28,
+ 39,199,201,113,114,156, 28, 39,199,201,113,254,179,156, 31,180,152,122,219,154,245,150, 64,228,186, 14, 57,112,224,192,129, 3,
+ 7, 14, 28,202,128,226,172,110,156,208,226,192,129, 3, 7, 14, 28, 56,112, 40, 3, 8, 33,110,120, 51, 69,213,137,188, 53,103,
+209,226,192,129, 3, 7, 14, 28, 56,112,120, 71,232, 64, 41,221, 92, 88,100,120,134,171, 27, 14, 28, 56,112,224,192,129, 3,135,
+178,193,232,167,101,233, 92,135, 28, 56,112,224,192,129, 3, 7, 14, 28,138, 65,113, 62, 90,111,141, 58, 60,113,226, 4,237,208,
+161, 3,225,170,140, 3, 7, 14, 28, 56,112,224,240, 62,240, 33,106, 17, 19, 11,214,137,130,193,169, 57,139, 22, 7, 14, 28, 56,
+112,224,192,129, 67, 25, 96,180,104,229,117, 27,190,149,198, 9, 45, 14, 28, 56,112,224,192,129, 3,135, 50,160, 56,139, 22, 3,
+188, 49,211,113,213,196,129, 3, 7, 14, 28, 56,112,120, 95,248,144,181, 8,165,116,115,222,242,151,233,146,140,163, 14, 91,228,
+ 21,176, 5,119,169, 57,112,224,192,129, 3, 7, 14,239, 1, 31,172, 22, 33,132,184,229,117, 27,186,253,101,219,223, 57, 5, 15,
+ 7, 14, 28, 56,112,224,192,129,195,199, 14, 99,252,172,194,226,104,113, 66,139, 3, 7, 14, 28, 56,112,224,192,161,140, 66,171,
+ 96, 90,190,131, 60, 39,180, 56,112,224,192,129, 3, 7, 14, 28,254, 30,252,173,145,225, 9, 33,173, 56, 78,142,147,227,228, 56,
+ 57, 78,142,147,227,228, 56, 63,118, 24, 35,194, 23,180,110,113,225, 29, 56,112,224,192,129, 3, 7, 14, 28,202, 40,178, 76,125,
+179, 76,255,115,115, 29,114,224,192,129, 3, 7, 14, 28, 56,252, 77,224, 44, 90, 28, 56,112,224,192,129, 3, 7, 14,101,128,113,
+196,161,233,127, 78,104,113,224,192,129, 3, 7, 14, 28, 56,188, 67,177, 85, 88, 58,215,117,200,129, 3, 7, 14, 28, 56,112,224,
+ 80, 6, 20,116,128, 55,253, 79, 0,180, 42, 66,153,157,179,224, 4, 22,143, 62, 40,137,159,227,228, 56, 57, 78,142,147,227,228,
+ 56, 57,206,143,143,179, 36,110, 75,244,199,191, 73,104, 21,229, 12, 15, 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201,
+113,114,156, 28, 39,199,249, 49, 47, 0,220, 0,140, 52, 89,220,140,219, 56, 31, 45, 14, 28, 62,116, 28, 36, 60,164,249,249,128,
+ 82,119,240, 68,113,136,123,244, 10,243, 40, 91,102,206,132, 0,111, 72,117, 46,208, 75,146,144,240,240,117,153, 57, 57,112,224,
+192,225, 35, 69,222,100,210,133,250,104,113, 66,139, 3,135, 15, 29, 73,254,190,224, 99, 9, 24,184,129,106, 67,225, 20,176, 4,
+192,227, 50,115, 10,217, 69, 48, 48,158,160,218,231,112,246, 91, 10, 32,152,171,108, 14, 28, 56,112,176, 12,255,184, 51,188, 64,
+ 32, 72, 32,132,176, 98,177,248, 80, 97,179, 92,115,224,240,174, 64, 8,113,147, 74,165,135, 8, 33,172, 80, 40, 76,248, 40, 11,
+185,179,186, 12,140,225,115,141,142,245,248,253, 81,186,115,142,218,224, 11, 70,223, 30,191,248, 90,149,137,147, 79,218,228,106,
+ 89,175, 93,183,115, 92,148, 26,125, 85, 80,148,141,243,207,107, 98, 43, 18,137,126, 39,132, 56,114,119,232,199,137, 0, 66, 62,
+169, 43, 16, 76,169, 74,200,167,132, 16,194,213, 8, 7, 78,104,253,195,208,235,245,206, 81, 81, 81,100,203,150, 45,157,173,173,
+173, 67, 5, 2,193, 76, 66,136,240,191, 82,225, 10,133,226,186,141,141, 77,130,173,173,109,130,141,141,205,189,146,210, 63, 82,
+ 1,228,235,236,236, 28,225,224,224,240,220, 52,221,185,102,183, 70, 85,154, 12,154,231, 24,216,181,121, 25,249,133, 2,129, 96,
+166,141,141, 77,232,230,205,155, 59,135,132,132, 16,157, 78,231,252, 81, 86,102, 46,235, 2,134,215,242, 73, 92,142, 44, 46, 83,
+231, 18, 20,158,163, 0,120, 45,160, 65,233, 63, 98, 50, 88, 23,128,126,250, 32, 90, 37,191,158,234,228,114,229,149,218, 26, 12,
+211, 18,185,196,181,204, 13, 14,195,140, 97, 89,182,181, 80, 40,252,138,107,126, 63, 78,136, 24,166,241,245,206,157, 23, 77,175,
+ 81, 99,188, 63,208,169, 48,177, 69,222, 96, 66,213,170, 85, 79, 17, 66,250,188,195,182,229,123,127,127,255, 24, 66,200, 68,238,
+ 74,112,248,135,223,107,181,141, 31,248,121,211,240,184, 89, 44,180,122, 86, 32,141,251, 85, 36,151,122, 87, 32, 89,125, 42,146,
+236,129, 21,201,213, 30, 21,200,167,165,201,144,167,167, 39, 26, 53,106,196,139,140,140,148, 78,156, 56,113,158, 88, 44, 14, 35,
+132,180, 45, 13,151, 76, 38,187, 43,151,203,163, 4, 2,193, 91,121,145,203,229,119,173,172,172,162, 4, 2,193,103,166,233,214,
+214,214,215,109,108,108, 18,172,173,173,239, 21, 33,132,238,218,216,216, 36, 40, 20,138,187,166,233, 2,129,224, 51,133, 66, 17,
+109,109,109, 93, 48,253, 83,107,107,235,168,130,233, 69, 65, 32, 16,120, 70, 69, 69, 57, 71, 71, 71, 59,139, 68, 34, 23,211,244,
+200,200, 72,231,168,168,168,183,210, 45,129, 64, 32,248,212,202,202, 42, 74, 46,151,223, 45, 44,189, 96,153,138,130, 73,221,125,
+106, 78,186,165, 34,171, 77,155, 54, 87,227,226,226,188,108,109,109,109, 77,183,217,219,216,182,253,117,235,250,201, 93,218,183,
+ 25,227, 28,240, 69,245, 82,242,183, 21,139,197, 97,147, 38, 77,154, 23, 29, 29, 45,173, 95,191, 62, 79, 40,252, 72,117,252,193,
+ 0, 33, 8,219,140,165,212,233,105, 76,174, 83,135,206, 61,249,247,163, 84, 78, 58,131,193, 30,224,181,192,246,242,226, 82,113,
+242,117, 77, 89, 74, 93,254, 8, 23, 56,181,236, 53,158,119, 62,156,239,164, 51, 24, 28,192,160,121,169, 56,255,188, 54, 2, 30,
+143, 55,121,229,202,149, 12,128,113,132, 16,209,127,169, 33,174,239, 65, 60, 62,171,204,191, 93,199,157, 52,126,135,141,123,160,
+ 92, 46,191, 75, 8,241,253,183,148, 83,195,178,207,246,190,126,125,122, 64,165, 74, 29,167,215,168, 49,164,160,216,202,251, 61,
+125,233,210,165, 3,159, 60,121,226, 84,161, 66,133, 81,132, 16,230, 29,212,197,234,165, 75,151, 78,123,242,228,137,187,143,143,
+207,130,119,193,201,225,223,165,225, 1,180, 4,208, 1,192,103, 0,234,229,253,174,155,183,116,192,155, 40, 10,166,235,186,121,
+199, 26,183,215, 47,130,163, 67, 33,199,213, 53, 73, 55,253, 95,240,183, 17,181,243,214, 29,242, 70, 27,118,200,223, 66, 41,197,
+241,227,199,169,233,186,224,210,219, 7,243,199, 55,242,200,121,122,108, 55,205,142,122, 77,211, 66,238,211,251,155,191,163,227,
+235, 58,229,244,171,128,239, 45,244,204,167,148, 82,186,107,215, 46,122,254,252,121,154,158,158, 78,131,131,131,105,189,122,245,
+ 84, 50,153,236, 15, 0, 62,150,240, 41, 20,138,132, 63,254,248,131,182,105,211, 38,195,202,202,106, 5, 0,134, 82, 10,107,107,
+235,132,107,215,174,209, 54,109,218,100, 40, 20,138,213, 0,120,148, 82,116,239,222, 61,145, 82, 74,157,156,156, 98, 11,227,235,
+210,165, 75, 26,165,148,218,216,216, 36,228,229,151,167, 80, 40, 86,143, 29, 59, 54,251,206,157, 59,212,206,206,206,152,206, 88,
+ 91, 91,175, 24, 55,110, 92,118, 80, 80, 80,126,122, 73,139,189,189,125,148,193, 96,160,199,142, 29,163,206,206,206,249,121,176,
+179,179,139, 50, 24, 12,244,200,145, 35, 69,230,173,152, 58,101,172,172,172,150, 15, 24, 48, 32, 43, 60, 60,156, 58, 56, 56, 36,
+152,164,175, 24, 52,104, 80, 86,100,100, 36,117,116,116, 52, 43,143, 14, 14, 14, 9,215,175, 95,167,221,186,117,203, 52,173, 83,
+ 7, 7,135,132, 27, 55,110, 24,211,151, 27,211,139, 91,220,221,221, 71, 57, 59, 59,199, 58, 59, 59,199,218,218,218, 46,118,115,
+115,139, 79, 74, 74,162,148, 82, 90,177, 98,197, 68, 74, 41,156,106,124,209,168,114,227,129,243,156, 3, 59, 79,218,120,224,198,
+173,203,143, 83,146,106,180, 30,179,220,166, 70, 23, 27, 11,234,192, 71, 34,145,252,209,172, 89, 51, 85,120,120, 56,205,206,206,
+166,119,239,222,165, 87,174, 92,161, 79,159, 62,165,121,247,221,199, 53,210,101,125,128, 39,221,228,183, 55,120,174, 87,200,229,
+165,237,116, 52,252, 60,221, 61,196, 73,119,105,146, 71, 40,253,201,255,127,116, 83,213,114,165,226,252,169,234,238,135,179,189,
+158,173, 93, 48, 65, 23, 17, 17, 65,167, 12,106,167, 63, 51,222,227, 21,221,232,127,160, 84,156,127, 94,163,190, 95,124,241, 69,
+118,100,100, 36, 13, 8, 8, 80,242,120,188, 97,255,149, 17, 73,245,220,225,209,202, 87, 20,243,112,215, 20,182, 83,160, 44,165,
+182, 27, 26,191,131, 81, 78,129,206,206,206,201,219,183,111,167, 10,133, 34, 17,128,239,191,100,244, 21,241, 7, 58,239,168, 81,
+227, 8,219,163,135, 97, 71,141, 26, 71,252,129,206,120, 19, 78,136, 0,152,177,108,217,178, 32,157, 78, 23,180,109,219,182,160,
+206,157, 59, 7, 1,152, 82,198,115,254,248,253,247,223, 83,157, 78, 71,183,109,219, 70, 59,119,238, 76, 1,172, 49,247,120, 43,
+ 43,171,202,213,171, 87,223, 25, 16, 16, 16, 89,179,102, 77, 77,213,170, 85,115,125,125,125,195, 3, 3, 3,183,139,197, 98, 31,
+110, 84,221, 63,179,148,160, 69,234,205,152, 49, 99, 38, 0, 58, 99,198,140,153,148,210, 14,121,237,122, 7,211,223, 5,215,148,
+210, 86,166,255, 11,227, 48, 46,133,113, 22,118,142, 2,191, 11,142, 58,116,203,251, 63, 50,127,155,177, 80,199,143, 31,111,126,
+252,248,241, 75, 5, 11,215,179, 2, 26,141,111,228,161, 82, 37,197,209,199,223,125, 69, 47,180,244,164,215, 90,184,210,231,147,
+191,160,113,187, 86,211, 47,107,217,229,244,168,128,150,150, 10,173, 67,135, 14,209, 35, 71,142,208,147, 39, 79,210,199,143, 31,
+211,148,148, 20,186,107,215, 46,131,131,131,131, 74, 44, 22, 47, 5, 32, 53,135,207,218,218, 58,129, 82, 74,213,106, 53, 93,188,
+120,113,174, 66,161,184, 7,192, 37, 79, 40,209,244,244,116,186,116,233,210, 92, 27, 27,155,135, 0,220, 29, 29, 29,163, 94,191,
+126, 77, 93, 92, 92, 10, 21, 51,118,118,118, 9,207,158, 61,163,118,118,118, 9, 0, 60,236,236,236, 30, 31, 61,122, 84, 75, 41,
+165,209,209,209,212,222,222, 62, 1,128,139,131,131,195,253,227,199,143,107, 41,165, 52, 54, 54,150,218,219,219,155, 45,180, 84,
+ 42, 21, 61,115,230,204, 91,121, 48,166,159, 58,117,234, 45, 1,102, 70,125,186,216,216,216, 4,237,219,183, 79, 99, 48, 24,232,
+227,199,143,169,141,141, 77, 2, 0, 23, 91, 91,219,123, 7, 14, 28,208, 24, 12, 6, 26, 18, 18, 98,182, 24, 44, 95,190,124, 34,
+165,148,234,245,122,186,113,227, 70,181,177, 78,141,233, 26,141,134,110,216,176, 65,109,109,109, 29, 4,192,165, 56, 46, 71, 71,
+199, 88,141, 70, 67,211,211,211,105,253,250,245,179,175, 93,187, 70, 51, 51, 51, 41,165,148,230,241,193,175,249,176,111,111,189,
+200,206, 28, 58,109,253,126,159,122,253,190, 59,125, 59, 38,250,231,223,238, 6, 57, 6,118,105,103, 70,249,165, 66,161,112,169,
+155,155, 91,238,249,243,231, 13, 26,141,134,190,124,249,146, 94,191,126,157,222,188,121,147,222,189,123,151, 62,126,252,248,227,
+ 19, 90, 7,192,163,155,252,186,208, 77,126, 65,219, 7, 56, 38,103,221,219, 67,233,217,137,244,213,183, 21,232,220,118,138, 44,
+118,147, 95, 16,221,228,223,131,206,111,206,183,136,115,115,213, 78,116,147, 95,208,247, 61,189, 83,238, 7,221,161,151, 46, 93,
+162, 27, 86, 47,163,227, 91,121, 40,217, 77,126, 65,244,167,170,221, 44,226, 52, 89,196, 98,241,139,171, 87,175,210,203,151, 47,
+211, 5, 11, 22, 80,153, 76, 22, 89,246,122,168, 42,164, 63,249,122,211, 45,190,205,233,214, 42,110,244, 98,233,242,246,119,139,
+172,214,190,162,232,228,251,191, 81,154,250,146,198,175, 8,160,237,252, 4,101, 18, 91,121, 34, 43, 41, 60, 60,156,198,199,199,
+211, 85,171, 86, 81,107,107,235,127,181,216,242, 3,186, 0,152,185,124,249,242,124,145,181,126,253,250,160, 71,143, 30, 5,121,
+121,121,157, 44,195,185,214, 44, 95,190, 60, 95,100,173, 95,191,158, 62,122,244,136,122,123,123, 71,149,116,236,128, 1, 3,100,
+141, 26, 53, 10,234,223,191,127,206,246,237,219,105,120,120, 56,125,248,240, 33, 93,190,124, 57,157, 55,111, 30,253,229,151, 95,
+104,183,110,221,148,245,235,215,191,213,163, 71, 15,137,133,121,227, 83, 74, 69,121,139,128, 82,106, 20,154,124, 0, 2,227,199,
+ 63,183,188, 45,180,138,210, 34, 69,137,169,162, 4, 86,193,109,197, 8,177, 98, 5, 91, 73,231, 43, 40,170, 10, 91, 76, 77,171,
+ 23, 59,116,232,240, 23,223, 24, 62,197,194,145, 95,127, 43, 9,219,190, 10, 9,251,214,129,151,158, 0, 65, 86, 10,212, 87, 79,
+ 64,119,245, 40, 6, 54,108, 40,149, 18,178,200, 82, 27,160, 68, 34,129, 84, 42,133, 88, 44, 70,122,122, 58, 94,189,122,133, 70,
+141, 26, 49,119,239,222,149,140, 28, 57,114,162, 84, 42,141, 36,132,116, 53,195, 92, 12, 0,184,126,253, 58, 70,140, 24, 33,222,
+185,115,103, 77, 39, 39,167, 7, 6,131, 65, 4, 0, 33, 33, 33,232,221,187,183,120,207,158, 61,213,220,221,221,239,105,181, 90,
+153, 88, 44, 6,143,199, 43,146, 79, 36, 18, 65,167,211,137,171, 84,169,242,240,193,131, 7,129, 29, 59,118, 20, 68, 68, 68,224,
+245,235,215,208,233,116, 34, 95, 95,223, 71,247,238,221,171,217,161, 67, 7, 65, 84, 84, 20, 34, 34, 34, 96,174,207, 39, 33, 4,
+ 26,141, 6, 98,177, 24, 12,195,188,149,174, 86,171, 33, 18,137,204,230, 18, 8, 4,159,250,251,251, 63,122,240,224, 65,237, 46,
+ 93,186, 8,239,220,185,131,232,232,104, 24, 12, 6, 81,213,170, 85, 31, 61,120,240,160, 86,231,206,157,133, 15, 31, 62, 68, 66,
+ 66,194, 91,231, 43,193,143, 6, 0,240,224,193, 3,244,239,223, 95,244,251,239,191,215,114,115,115,123,168,215,235, 69, 0,240,
+232,209, 35,244,238,221, 91,116,250,244,233,218,229,202,149,123, 88, 66, 87, 34, 15, 0,116, 58, 29, 70,141, 26, 37,183,182,182,
+ 70, 84, 84, 20, 88,150,133,193, 96, 0, 0,164,164,165, 60,122,240,232,113,200,192,190, 61,155,171,180,106,245,141,219,119,159,
+ 86, 44,239,237, 73, 8, 45, 95, 66, 93,118,149,201,100,145,223,127,255,253,164,176,176, 48,177,159,159, 31,243,240,225, 67,164,
+167,167, 67, 36, 18, 65, 34,145, 64, 44, 22, 67, 32, 16,124,124, 70,244,204, 0, 7,176,104, 29,145,164, 17,139,109, 61, 21, 86,
+110,190, 64,228,101, 84,112, 18,131,199,240, 36,119, 94,231,200, 1,218, 26, 94,201, 14,150,113,178,173, 95, 39,106,196, 58,251,
+106, 86,238,158, 94, 72, 73, 73, 65,185,138,254,200, 21, 57,137,174,191, 84, 90,129, 88,200,249,231,181,106, 90,165, 74, 21,215,
+202,149, 43, 35, 57, 57, 25,181,107,215,134,157,157,157, 29, 33,164,117,169,235, 96,123,121, 49, 50,209, 24, 96, 86,192, 64, 22,
+ 64,199, 95,130,151, 73,181,177,185,206,191,230,130,215,247, 32, 30,214, 86,162,155,123,246,238,243,112,240,170, 10,156, 24, 10,
+ 23, 91, 49,182,142,169,109,239,100, 35, 62, 82,154,110, 68, 66, 72,160,139,139,203,249, 91,183,110, 57, 74, 36, 18,220,187,119,
+ 15, 1, 1, 1, 88,181,106,149,147,157,157,221,229,127, 67, 55, 34,165,148,134, 0,199,190,127,248,112,219,206,208,208,227, 3,
+ 42, 85,234,216,223,215,119,241,232, 62,125,134, 77,152, 48, 1,203,150, 45,195,145, 35, 71,208,184,113, 99,140, 28, 57, 82, 23,
+ 25, 25,185,163,148,221,133,235, 86,172, 88, 49,126,226,196,137, 5, 57,181, 17, 17, 17,223, 23,119,108, 96, 96,160,231,139, 23,
+ 47, 98, 38, 79,158, 92,123,231,206,157, 82,153, 76,134,244,244,116,108,217,178, 5, 51,103,206, 4, 33, 4,148, 82,252,242,203,
+ 47,178, 33, 67,134,212, 11, 13, 13,141, 41, 95,190,188, 57,110, 29, 4,128, 4,128, 44,111,145, 3,144,237,217,179,199,166, 75,
+151, 46,214,121,105, 82, 0, 82, 66,136, 24, 28, 10,162, 80, 45, 98,114,205,143, 23,184,215, 58, 22, 76, 43,184,141, 82,218,177,
+ 56, 14, 11,239,237,194,206,119,162, 96,100,248,183,222,169, 38,191, 91,156, 56,113,226,210, 95, 72,129, 26,174, 62,126,200, 56,
+123, 0, 82, 62,129,148,151,183,240, 9,152, 87,143, 80, 78, 34,128,142,210,192,210, 8, 45,163,216,146, 74,165, 16, 10,133,200,
+206,206,134, 78,167,195,172, 89,179,196,103,207,158,117, 96, 24,230,127, 37,241,152, 10,166,231,207,159,163,106,213,170,228,216,
+177, 99, 46,227,198,141,147, 2,128, 72, 36, 66, 70, 70, 6, 42, 87,174, 76, 78,157, 58,229, 60,123,246,108,171,226,196, 12, 33,
+ 4, 66,161, 16, 19, 39, 78,148,222,190,125,219,222,221,221, 29,175, 94,189, 66,106,106, 42,172,172,172, 48,113,226, 68,233,173,
+ 91,183,156,220,221,221, 17, 30, 30,142,140,140, 12, 88, 89, 89, 89, 44,180,132, 66,225, 91,199, 16, 66,160,213,106, 33, 18,137,
+204, 22, 68, 54, 54, 54,187,131,130,130,156,108,108,108,240,240,225, 67,232,245,122,216,216,216, 96,252,248,241,210,160,160, 32,
+ 39, 91, 91, 91,132,132,132, 24, 45,127, 22,229, 17, 0, 88,150, 69, 72, 72, 8,202,151, 47,143,203,151, 47, 59,143, 30, 61, 90,
+ 98, 76,127,249,242, 37, 60, 61, 61,113,249,242,101,103,185, 92,190,187, 40, 46,150,101, 17, 23, 23,135, 39, 79,158,224,213,171,
+ 87, 72, 74, 74, 66,114,114, 50,178,178,178,160,215,235,223,248,217,101,101,158,216,179,255,216, 3,169, 84, 42, 11,240,173,226,
+245,232,113,112,162, 84, 42,149,121,123,121,249, 18,178,128, 41, 38,159,255, 11, 13, 13,117, 24, 50,100,136,240,197,139, 23,136,
+141,141,133, 64, 32,200,191,183,140,139, 88,252,145,181,101,132, 16, 16, 77, 21, 16, 82,251,230, 43,165,125,211,142,125,133,120,
+253, 59,192,234, 0,134,143, 22, 53, 60,249, 71, 30, 41, 93, 64, 81, 3,106,248, 3,102, 92,120, 66, 8,160,173, 12,144, 79,206,
+188,208, 59, 52,254, 98,140, 48, 38, 38, 6, 66,161, 16, 98,177, 24,181, 63,237,206,223,243, 64,231, 10,130,154,208,194,207, 44,
+ 78, 19, 72,165,210,111,230,205,155, 39, 55,229, 28, 54,108,152,220,198,198,102, 94,169, 69,150, 82,214, 16,122, 58,241, 73, 76,
+ 78,249,197, 39,226,171,134, 38,170,252, 64,233,100, 64, 87,171,172, 98,139, 16,210, 66, 34,145,188, 38,132, 52, 41,147,200, 82,
+136,110,236,221,187,207,195,190,220, 27,145, 5,125, 46, 32,144,194,213,201, 22, 91, 39,181,180,119,178,149, 90, 36,182,242, 68,
+214, 31, 55,111,222,116,148, 72, 36, 8, 10, 10,130, 80, 40,132, 68, 34, 65,245,234,213,177,105,211, 38, 39,123,123,251,127,149,
+216, 90,250,240,225,246, 37, 79,158, 60,159, 17, 24,232,223, 85, 46,183, 31,219,191,191,205,236,217,179,143, 31, 61,122,116, 91,
+135, 14, 29,146,111,223,190,253, 3,165,244,128,133,215,135, 16, 66,214,175, 92,185,114,172, 81,184,205,158, 61,251,151,163, 71,
+143, 46,233,208,161, 67,220,237,219,183, 39, 83, 74,215, 23,199,145,157,157,125,116,206,156, 57, 54, 95,124,241,133,241, 63,174,
+ 94,189,138, 29, 59,118, 64, 46,151,191,181,111,231,206,157, 49, 98,196, 8, 59,141, 70, 83,236, 59,201,197,197,229,179,155, 55,
+111, 6, 0, 16, 2, 16, 27,133,214,227,199,143,109, 51, 51, 51,109,173,172,172,108,221,220,220, 20, 70,177,245,197, 23, 95,216,
+ 10, 4,130, 38,224,128,146,180,136,169,208, 49, 39,173,180,251,155, 43,182, 10,252,143, 43,106,158,195,183,132, 86,135, 14, 29,
+ 46, 1,104, 86,216, 78,218,212, 4,136, 97,128,148, 71, 32,227,153,136, 45,176,224,103, 36,162, 52, 3,120, 11,190, 12,165, 82,
+ 41, 36, 18, 9, 4, 2, 1,116, 58, 29, 50, 50, 50, 44, 18, 5,214,214,214,176,178,178,130, 74,165,130, 94,175,135, 68, 34, 49,
+138, 17, 88, 91, 91, 67, 32, 16,228,191,132, 11, 90,147, 10, 90,115,132, 66, 33,228,114, 57,226,226,226, 16, 17, 17, 1,150,101,
+ 97,101,101, 5,185, 92, 14,145, 72,132,216,216, 88,196,198,198,130, 82, 10,185, 92, 14,185, 92,110,182, 56, 2, 0,131,193, 0,
+145,232,175,126,192, 58,157,206, 34,139,150, 94,175,199,211,167, 79, 17, 25, 25, 9,137, 68,146, 95, 86,177, 88,140,151, 47, 95,
+ 34, 62, 62, 30, 50,153, 12,214,214,214,176,177,177, 49,155,215, 88, 22,133, 66, 1,169, 84,138,180,180, 52,228,228,228,228,215,
+169,181,181, 53,228,114, 57, 50, 50, 50,144,152,152, 88,108,217, 13, 6, 3, 98, 99, 99,145,148,148,132,168,168, 40, 36, 39, 39,
+231,139, 45,150, 45,123,252,203,203,151, 47,227,213,171, 87,198,174,169,252,235,107,186, 54,230,251,163,193,134, 64, 27,232, 4,
+109,146,179,117,226, 36,173,208,198, 37,176, 21,240,250, 20,192,240, 1,137, 29, 26, 84,171,128,136, 52,131,252, 89,130, 70, 2,
+130,182, 88,239,107,103, 22,167, 65,208, 58, 41, 75, 39, 14,215, 58, 89, 87,173, 81, 7, 9, 9, 9, 16,139,197, 16,139,197,248,
+164,113, 43,188, 78, 49,200,130, 99, 84, 50, 80,180, 49,139,243,207,103,180,162,149,149, 85,195, 38, 77,154, 16, 83,206,246,237,
+219,131, 16, 82,157, 16,226,111, 81,249,215, 86, 18, 65, 43,107, 0, 62,157, 24, 28,151,227,126,228,113,174,111,167,174,221,237,
+127, 60,151, 88,245,105,188,218, 7, 84,247, 53,168,182, 78,105,197, 22, 33,164,185, 66,161, 56,190,118,237, 90, 31,137, 68,114,
+138, 16,210,180, 52, 60, 86, 82,222,198,111,198,246,245,176, 51,138, 44, 93, 14,192,151, 2, 2, 41,192,151,194,213,217, 17,139,
+ 70,180,182,151, 73, 4,135, 44, 16,172,123,214,175, 95,239, 84, 80,100, 25,151,218,181,107, 99,238,220,185, 78,246,246,246,187,
+223,243,183, 64, 27, 91, 91,219,157,173, 90,181,186, 25,171, 80,140,136,171, 83, 71,244,135,141, 77,198,103, 25, 25, 54,222,143,
+ 31,107,253,128, 71, 0, 54, 68, 69, 69,181, 51, 87,100, 17, 66,250,216,216,216, 4,181,106,213, 74,171, 80, 40, 34, 87,173, 90,
+245,229,184,113,227,176,108,217, 50,204,153, 51,103, 11,128,225,148,210, 89, 81, 81, 81,238, 37,137, 44, 0,136,143,143,239, 55,
+125,250,244,228,228,228,100, 0, 64,245,234,213,145,158,158,142, 41, 83,166,224,171,175,190, 2, 0,212,170, 85, 11,148, 82, 36,
+ 36, 36, 96,197,138, 21, 9,241,241,241,131, 75,104,219,163, 14, 28, 56, 80, 79,171,213,122,230,117, 15,138,211,211,211,173, 83,
+ 83, 83, 21, 90,173, 86,206,178,172,220,214,214,214, 10,128,108,224,192,129,252,224,224,224,170,122,189, 62,134,211, 86,127,162,
+ 56, 45, 82, 74,156, 40,139,229,170, 48,139, 88, 17,247,103,241, 22,173, 14, 29, 58, 16,211,245, 91, 22, 35,130,135,145,119, 47,
+195, 62,176,206, 91,214, 44, 25,143, 64,106,109,131,215, 81, 17, 16,130, 60,177,180, 16, 70, 97, 85, 80,108,101,100,100, 96,204,
+152, 49,170, 94,189,122,165,176, 44,219,221, 92, 81, 96, 99, 99, 3, 27, 27, 27, 4, 7, 7,211,110,221,186, 37,172, 90,181, 74,
+101, 42,180,158, 63,127, 78,219,180,105,147, 56,111,222,188,236,226,132,150,209,162,181,116,233, 82, 85,139, 22, 45,146,158, 60,
+121, 66,141, 98,202,202,202, 10, 43, 86,172, 80,181,108,217, 50,225,206,157, 59,212,152,102,137, 69,139, 97,152,124,161,101,122,
+ 12,195, 48, 96, 89,214, 34,161,165, 84, 42,251,117,232,208, 33, 33, 36, 36,132, 26,203,105, 99, 99,131, 85,171, 86,169, 90,183,
+110,157,240,228,201, 19,106, 76,179,182,182, 54, 91, 12, 26,207,175, 80, 40, 96,109,109,141,224,224, 96,218,166, 77,155,132, 53,
+107,214,228,154,166, 63,125,250,148,118,238,220, 57, 33, 43, 43,171, 95,113, 22,173, 87,175, 94,229, 91,176,114,115,115,145,156,
+156,140,168,168,168,252,174, 67,149,220,186, 93,223, 94,157,106,170, 84,170,156,224,231, 47, 34,171, 87, 11,112, 86,169, 84, 57,
+ 17,145,145,207, 41,157,199, 22,243, 32,116, 31, 58,116,104,202,204,153, 51, 85,153,153,153,133,138, 44,227,250,163, 2,195,186,
+130,208, 38, 87, 94,100,219,182,238,212, 91, 68,226,111, 3,218,108, 64,108, 7,136,237,192,151, 59,224,243,166,181,120,219,111,
+102,186,130,178,141, 32, 20,123,150,200, 41,160, 46, 0,219,244,236,243, 92,187, 38, 61,198,139, 82, 83, 83,193,227,241,242, 69,
+145, 76, 46,199,103, 93, 7, 50,191,220, 86,187, 2,180, 49, 8,207,211,220,236,138, 68,162,105,223,124,243,141, 48, 45, 45, 13,
+ 12,195,252,201, 41,147, 97,244,232,209, 98,107,107,235, 57,102,151,253, 96,128, 16, 2,113, 3,128,126,245, 44, 62,215,253,232,
+ 35,149,223,215, 75,183, 74, 3,107,213,195,168, 22,206,210,165, 39, 18, 3, 31, 68,169, 42, 0,134, 73,208,107, 62,177, 84,108,
+ 17, 66,154, 42, 20,138, 19,119,239,222,149,181,111,223, 30, 43, 86,172,144, 75,165,210, 83,132, 16,139, 27,126,101,182, 97,220,
+194, 53,191, 38, 60,252,161, 45,160, 85,190, 17, 88, 38, 75, 98, 54,139,185, 91,207,103,232,116,180,175,185,156, 42,149,106,208,
+240,225,195, 83, 14, 29, 58,244, 23,145, 37,145, 72, 16, 22, 22,134,197,139, 23,167,166,166,166, 14,126,159, 34,107,220,184,113,
+139,163,163,163,253,206,158, 61,203, 79, 74, 74,114, 94,249,243,207, 25, 7, 51, 50, 82,151, 60,126,252,108, 86,181,106, 85,102,
+212,168, 49,184,168,208, 15, 69,137,172,177, 99,199,238,137,142,142,174,125,238,220, 57, 65, 82, 82,146,231,216,177, 99,177,124,
+249,114,204,153, 51,103, 19,128, 81, 52,207, 89,198, 92,104, 52,154,103,105,105,105, 29,219,182,109,155,158,150,150,134, 26, 53,
+106,160, 83,167, 78,112,117,117,133,187,187, 59,186,116,233, 2, 95, 95, 95,164,164,164,160,111,223,190,169, 73, 73, 73,109, 41,
+165,175,138,227, 76, 73, 73, 9,221,189,123,247,243,241,227,199,215,142,142,142,174, 10,192, 33, 43, 43, 75,158,149,149, 37,214,
+104, 52, 82, 59, 59, 59,187, 90,181,106, 57,142, 28, 57,210,234,254,253,251, 85,163,163,163,179, 1, 68,112,242, 42, 95,100, 21,
+169, 69, 0, 36,229, 9, 30, 77,129,117, 82, 9,219,204, 61,182,208,223,102,236,247,150,216, 50, 93,254, 98,209, 42, 10, 90, 96,
+238,142, 3,219,115, 69, 94,149, 97,227, 87, 19, 50,137, 4, 82,145, 8, 82, 59, 7,168, 89, 22, 63,135,197,231, 40, 41,157, 99,
+105,133,154,118, 27, 74, 36, 18,240,120, 60,108,216,176, 65,223,176, 97,195,220,243,231,207,175,205,201,201,241,162,148,254,102,
+137, 40, 88,179,102, 77,206,196,137, 19, 31, 36, 38, 38,214,148, 72, 36, 26, 99,250,218,181,107,115, 6, 14, 28,248, 56, 58, 58,
+186,182, 76, 38,203, 41,202, 63,203, 84,104,137,197, 98,117, 98, 98, 98,189, 97,195,134,133,108,216,176, 65, 41,147,201, 32,151,
+203, 33, 22,139, 53,137,137,137, 53,191,252,242,203, 7,203,151, 47,207,145, 74,165,144,203,229, 22,117,203, 81, 74,255, 34,168,
+ 76,211,205,133, 78,167, 59,159,152,152, 88,115,226,196,137,247,127,252,241, 71,165, 81, 0,153,230,113,229,202,149, 57, 86, 86,
+ 86, 22, 89,180,140,251,201,229,114,172, 94,189, 58,103,252,248,241, 15, 18, 19, 19,107,138,197, 98,141, 73,186,114,220,184,113,
+247, 19, 19, 19,107,234,116,186,243,197,124,225, 25, 50, 51, 51,193,231,243,241,248,241, 99,181, 80, 40, 4,195, 48,120,249,242,
+101,190,208,178,183,183, 15,168, 89,189,154,255,175,123, 14, 92,146, 10,197,226,134,245, 62,169,250, 42, 60, 34,154, 82, 18, 94,
+194, 23,199,111,185,185,185, 94, 87,175, 94, 93,219,182,109,219,220, 45, 91,182,232,249,124,254, 95, 94, 62, 31,159,208,130, 12,
+ 4,210, 23,137,106,133,132,209, 19, 60,255,237,141,200,146,216, 2, 18, 59, 64, 98, 7, 15, 15, 79,220, 14,203, 81,128,129, 8,
+ 6, 51, 98,136, 81, 42, 7,129,236,113, 2, 20, 2,145,148,196,199,199,231, 11, 34,227,226, 83,185, 42,238, 69,100, 91,129, 80,
+ 49,120,176, 36, 4, 73, 71, 7, 7, 7,126, 92, 92,220, 95, 56, 3, 2, 2,120, 58,157,206,252,208, 46,177, 6, 55,128, 29,251,
+ 60, 62,215,237,240, 3,165,223,164, 37,191, 72,165,134,116,224,238, 26, 4, 86,116,199,164, 30,181, 68,179,143, 38, 5,222, 9,
+207,169, 8, 30, 29, 5, 54,219,201, 2,129,208, 68,161, 80,156,186,115,231,142, 76,161, 80,224,213,171, 87,168, 87,175, 30, 54,
+111,222, 44,147,201,100, 39, 9, 33, 45, 44,185, 76, 55,227,105, 68,118,150,161,225,180, 3,145,241, 15,227,244,111,137,172, 36,
+ 37,197,240,239,143,166,167,101,230,118,191, 17, 89,244,243, 83,200, 61,127, 63, 61, 61,189,205,156, 57,115, 82,146,146,146,222,
+186,199, 35, 34, 34,140,130,160, 5,165,244,201,251,186, 61,109,108,108,250, 47, 89,178, 4,119,238,220, 65,251,246,237,113,249,
+242,101,164,166,166, 98,239,169, 83, 47,118,191,120, 49,203,232,179, 85, 88,232,135,162, 96,109,109,253,245,146, 37, 75,112,247,
+238,221,124,206,148,148, 20, 44, 89,178, 36, 26,192, 24, 75, 69,150, 17, 9, 9, 9,183,159, 61,123,214,182, 70,141, 26, 79,215,
+174, 93, 27,237,230,230,198,142, 28, 57, 18,195,135, 15,135,147,147,147, 97,245,234,213,145, 77,155, 54,125, 28, 26, 26,218, 74,
+169, 84, 62, 50,227,250,208,228,228,228,235,155, 55,111,190,249,233,167,159,202, 6, 13, 26,228,116,228,200, 17,135,156,156, 28,
+119,177, 88,236,172,209,104, 68, 79,159, 62,229, 29, 60,120,208, 53, 56, 56, 56, 76,165, 82,221, 46,109,222,255,131,184,147,103,
+157, 58, 87, 96,125,167,132,109,230, 30, 91,212,239,146,246, 51,189,254,155, 77, 23,211, 13, 37, 46,253, 43, 98,254,232,106,138,
+156,235, 3, 26,208,248,145, 77,104, 66,239,170,244,106,115,123, 58,172, 18, 81, 14, 42,101,120,135,152,152, 24,154,144,144, 64,
+ 83, 82, 82,232,190,125,251,168,171,171,171, 82,161, 80, 88, 28,222,193,213,213, 53, 33, 51, 51,147,214,173, 91, 55,213,201,201,
+ 41, 63, 20,129,155,155, 91,130, 82,169,164, 13, 26, 52, 72,117,118,118, 94,141,188, 17, 30,158,158,158, 81,148, 82,234,237,237,
+ 29, 91, 20,159, 94,175,167,174,174,174,198, 16, 9, 2,123,123,251,159,234,215,175,159,154,144,144, 64,221,220,220,242, 67, 39,
+ 56, 57, 57,173,168, 87,175,222, 91,233,102,228, 55, 42, 58, 58,154, 70, 71, 71,211,114,229,202,197,154,166, 71, 68, 68,208,136,
+136, 8,234,233,233,105,113,120, 7, 39, 39,167,229, 5,243, 82,218, 60,122,121,121, 37,168, 84, 42,218,168, 81,163,183,234,212,
+203,203, 43, 33, 55, 55,215,152,110, 86,120, 7,169, 84, 58, 74, 34,145,196, 74, 36,146, 88,177, 88,188,184,124,249,242,137,251,
+247,239,167,171, 87,175,166, 10,133,226, 77,120,135,128,206, 13, 43, 55, 26, 60,203, 41,160,203,215,101, 9,239,160, 80, 40,254,
+112,117,117, 85, 30, 60,120,144,170,213,106,170,211,233,168, 17,248,152, 70, 29,110,246,173, 76,127,242, 63, 26,186,208, 39,120,
+ 98, 51, 89,238,163, 69, 53, 41,253,223, 23,148,158, 28, 78,233,249,105,244,246,166,145,180,145,143,216,112,109, 74,185,231,116,
+163,223, 97,179, 66, 50,108,174, 94,153,254,228,127,242,197, 2,159,224, 65, 77,221,115,127,222,176,154,222,186,117,139, 62,126,
+252,152,190,122,245,138,158,252,109, 63,109, 84, 81,246,134,243, 39,255,163,150,132,121, 0,208, 88, 44, 22,103,175, 90,181,138,
+222,188,121, 51,159,243,232,209,163, 84, 38,147,229, 0,102,142, 90, 6, 8,253, 41,160,171,126,131,223,149,217,173,173,178, 82,
+142, 79,163,244,209,118, 74, 55, 7, 82,186,173, 62,165,251, 59, 80,122,108, 48,189,185,186, 7,109,236, 35,212,209,141,126,151,
+233,166,128,214,230,230, 83, 32, 16,100, 30, 58,116,136,198,198,198,210,203,151, 47,211,187,119,239,210,144,144, 16, 26, 25, 25,
+ 73, 79,156, 56, 65, 5, 2, 65, 46, 0,139, 71, 53,214,119,129,119,171, 42,194,184, 7, 75, 27, 83,122,164, 47, 77,218,221,159,
+118,172,166, 72,109, 80,142,255,105, 25, 70,218,213,114,112,112, 72, 62,113,226, 4, 13, 11, 11,163,151, 46, 93,162,206,206,206,
+201, 0, 2,223,247,253,217,170, 85,171, 91,148,210,160,246,237,219, 7, 1,248,189, 85,171, 86, 65,175, 95,191, 14,170, 87,175,
+222, 77, 20, 19,250,161, 56,206,207, 62,251, 76, 75, 41,165,237,219,183,167, 0, 98, 91,181,106, 69, 95,191,126, 77,235,213,171,
+167,121, 71,163, 36,121, 0, 6, 11, 4,130,159,237,237,237, 47,216,217,217,157,231,241,120,155, 1, 12, 48,167,157, 43,134,211,
+ 29, 64, 0,128, 79,242,150,170,121,105,220,136,195,255,210,132,211,230,238,216,195, 7,141,135, 84, 36,151,250, 85, 64, 86,223,
+ 10,200, 30, 90,137, 92,237,238,131, 79, 45,157,221,219, 40,180, 82, 83, 83,233,253,251,247,105,243,230,205,149,114,185, 60, 6,
+ 64,219,210,204, 24,238,232,232,120,215,217,217, 57,138,207,127,187,209, 50, 73,255,204, 52,221,217,217,249,186,155,155, 91,130,
+147,147,211,189,194, 56, 29, 29, 29,239,186,185,185, 37, 56, 58, 58,222, 53, 61,142,199,227,181,119,116,116,140, 41,152,206,231,
+243, 63,117,118,118,142, 42,152,142, 34,102, 54,119,117,117,141,138,141,141,165, 73, 73, 73,212,203,203, 43,182,160, 0,139,143,
+143,127, 75,128, 89, 50, 91,122, 81,121, 41, 42,189, 40, 78, 51,234,212,226,235,110,178,205,215,195,195, 35,113,229,202,149,212,
+202,202, 42,209,116,155, 95,179,161,223,220,122,145,157, 57,124,250, 79,251,157,170,118,173, 94,154,153,226, 1,180,149,203,229,
+ 49, 45, 91,182, 84,190,124,249,178, 88,161,133, 15,100, 70,251,191,112, 30,168, 42,164,155,170, 54,166, 27,171,158, 8,153,231,
+253,116,112,125,185, 58,104,101,123, 74,207, 79,163, 55,127, 26, 78, 27,250,136,222, 8,162, 77,254,167,232, 47,190,205,232,154,
+138, 34,179, 56,127,174,212,148,110,242, 63, 21, 60,215,251,233, 23,117,156, 52,123,182,111,162, 47, 95,190,164, 71, 15,238,166,
+ 13, 42,228,137,172,141, 85,207,208,159,170,182, 52,139,179, 16,177,181,117,235, 86,250,242,229, 75,122,248,240, 97,179, 68,214,
+ 91,156, 38, 66,107,102, 43,171,244,225,245, 37,234,190,181, 68,154, 46,129, 66,109,155,202, 66,125, 35,111,190,161,166, 27,195,
+ 86,117, 2,109,227, 39, 85,211,141,126,151,233,198,170,109,205,205,167, 72, 36,138,132, 73, 76,157,130,139, 88, 44, 78, 42, 74,
+104,149,116,221,235,187,192,187,149,175, 56,238,143,133,159,210, 78, 53, 20, 41,230,136,172,146, 56, 1,212,114,116,116, 76,222,
+182,109, 27,117,113,113, 73, 50, 71,100,253, 19,247,167,141,141,205,206,236,236,236,160,211,167, 79, 7,181,106,213, 42,104,231,
+206,157, 65, 87,175, 94, 13,146,201,100, 59,139, 10,253, 80,181, 64,251, 95,144,211,218,218, 58, 40, 43, 43,139,158, 62,125,154,
+182,106,213,138,238,220,185,147, 94,189,122,149,202,100,178,160,127,213,179,201,113,254,119,197,212,155, 24, 90,111, 45, 22, 11,
+173,119,117, 33, 0,208,244,244,116, 58,105,210, 36,141, 68, 34,201, 17, 10,133, 51, 1, 8,255, 43, 55,161,163,163,227,117, 23,
+ 23,151, 4, 23, 23,151,183,196,158,105,186,163,163,227,189,143,249, 1, 4,224, 43, 20, 10, 35, 4, 2,193,115,211,116,167,128,
+206, 13, 43, 53, 30, 52,199, 37,176,243,231,101,201, 39, 0,161, 80, 40,156, 41,145, 72,114,166, 76,153,162,201,206,206,254,184,
+132, 22,165,160,107, 42,138,140, 98,235,209, 28,239,144, 78,213,100,218,205,147,219,208,134,229, 11,136,172,109,222, 98,139, 56,
+243,196,214,253,217, 94, 33, 45,125,173,244, 75,230, 76,162, 13, 42, 72,223, 22, 89,150,112, 22, 16, 91, 50,153, 44,107,222,188,
+121,102, 91,178,254,194,249,179,159, 23,221,228,191,243,141,136, 42, 97,249,201,111, 11, 93,231,231,245,111,185,238,245, 93,224,
+253,153,175,248,137,185,150, 44,115, 56, 1,212,178,179,179,123,106,174, 37,235,159, 40, 59,128, 54,163, 71,143, 14,122,253,250,
+117,208,171, 87,175,130,174, 94,189, 26,212,181,107,215, 32, 0,109, 10,139,179,165,237,214, 77, 93,139, 97, 38,149,192,217,103,
+244,232,209,244,245,235,215,244,213,171, 87,244,234,213,171,180,107,215,174, 20, 64, 31, 78,192,112, 66,235,223,190,240,255,233,
+ 78, 86,137, 68,146,104,107,107,235,100,101,101,117, 34, 55, 55,119, 60,165, 52,238,191,212,201,156,148,148,212,200,146,244,143,
+ 17,148,210,231, 0,188, 11,166, 39, 62, 57,114, 3,192,141,119,192,175, 5,176,132, 16,178, 99,211,166, 77,107, 87,172, 88,209,
+ 85, 34,145, 36,125, 84,149, 56, 62, 84,131,181,149,238, 66, 36, 90, 90,205, 67, 54,227,155,246,148, 44, 57,125,221,123, 89, 55,
+231,200, 70,149,228, 97, 16,176,223,131,168,111, 99,112,184,218, 66,206,219,144,234,150,214, 44, 39,155,241, 93, 23,144,239, 79,
+109,247, 94,222,213, 33,178, 81, 69,171, 72, 80,124, 15,113,206, 13,139, 56,223,190, 46,215, 8, 33,159,175, 92,185,114, 71, 78,
+ 78,206, 8, 74,233, 5,139, 73, 20, 76, 60,148,186,121,208,241,170,129, 66, 84,204,201,114,192,240, 30, 35, 17,255,154,201,196,
+111,198,211, 8, 0,129,239,248, 89,186,159,215, 29,245,111,122,190,207, 16, 66,176,123,247,238,254,254,254,254, 21,131,131,131,
+ 95,229,228,228,236,162,148,158, 49,245,101, 34,132, 28,251,254,225, 67,229,186,224,224,107, 26,150,189, 86, 2,231,222, 60,206,
+175,253,253,253, 3,131,131,131,159,228,228,228,172,164,148,238,229, 92,151, 56,252,219,241,143, 11, 45,149, 74,229,194, 85, 59,
+135,127,168,193,143, 3,208,237,163, 45,160,137,216,170,227, 37, 29,127,104,180, 52, 7,148, 68, 67,192,174,182, 88,100, 21, 34,
+182,234,121, 75,191, 58, 60, 74,154, 3,138,120, 80,252, 80, 22,145,101, 42,182, 0, 84, 40, 53, 65,143, 96, 45,128, 48, 16, 18,
+142,249, 40,218,137,122, 62,242, 63,187, 57,188, 31,177, 5,224, 76, 9,251, 80, 0,231,243, 22,115, 56,247, 2,224,132, 21, 7,
+ 78,104,113,224,192,225, 31, 22, 91, 7, 3,238, 32,153, 55, 5, 12, 42, 0,250, 8, 40,245,241, 24, 31,174, 41, 35,231, 45, 36,
+147,137,224,193, 23, 34,125, 40,178, 53,241, 24, 93, 6,206,191,225, 77,142, 55,190, 83,133, 99, 30,119,107,112,224,192,225,159,
+ 3, 33,100,164,233, 72, 67,211,255,156,208,226,192,225, 67,199, 27, 43, 79,116,222,242,239,229,228,192,129, 3,135,255,152,224,
+ 2,222,204,201,212,170,136, 15,198,115, 22, 16,183, 42,197, 7,233, 57,142,147,227,228, 56, 57, 78,142,147,227,228, 56,255, 91,
+156, 37,113, 91,162, 63,254, 77, 2,171,144,114,108, 54,254,248, 71, 71, 29,114,156, 28, 39,199,201,113,114,156, 28, 39,199,201,
+113,254, 87, 22, 6, 28, 56,112,224,192,129, 3, 7, 14, 28,202, 98,209,170,157,183,118,203,155,130,199,205,184,237,189,250,104,
+201, 28,125,221,192,103,106, 16,150,250, 3, 0,101, 72, 8,244,236,195,156,228,231,101, 14,249,160,240,240,179,167, 16, 29, 32,
+208,244,204,138,121,150, 90, 86,190,234,126, 54,221, 92, 28, 21,253,227, 83, 50,118, 60, 14,201, 58, 98,201,177,182,182,229,109,
+ 36,246,118, 61,212, 90, 93, 53,145, 80, 24,169, 77,207,220,156,154, 26,154,197,221,154, 28, 56,112,224,192,129,195, 71,129,218,
+ 0,238, 1,232, 64, 41,221,156,215,149, 88,188, 51,124,249,192,166,119, 36, 18,169, 15, 0,176,148,130,165,128, 50, 51, 61, 40,
+ 46,244, 78, 91, 0,112,242,169,115, 90, 32,177,174,195,210, 55,219, 13, 44,160,215,230,134,101,132,223,172,107, 78,142,172,156,
+253,190,104,213,166, 85,183,142, 29, 59,248, 85,175, 86,189, 18, 0, 60,122,252, 40,244,248,241, 19,207,172,156,253, 14,101, 39,
+ 62, 59, 92,150, 18, 83, 72,190,253,228,147, 90, 77,238,222,189,183, 16,192,216,178,214,160,131,131,213,248, 51,255,155,210,236,
+179,110, 43,228, 0, 44, 18, 90, 18,123,187, 30, 93, 58,181,171, 53,117,194,104,102,248,148,239,124,238, 92,187,184, 76,225, 94,
+ 45,157,178,186, 51,202,132,222, 87,138,155, 56,153, 3, 7, 14, 28, 56,112,224,240,175,199,137, 60,113,117,162,224,134, 34,133,
+150, 68, 34,245,185,121,241,184,253,225,171, 81, 0,128, 86,181, 93, 49,107,209,218, 54,132,144,103, 0,208,121,248,124,223,133,
+ 51, 39,224,250,147, 68, 80, 74, 81,171,178, 3, 62,239,210,211,172,220, 72, 93, 3,234,246,238,213,171,223,148, 41, 95,119,126,
+249,242,101,248,158, 61,123,174, 0, 64,211,102,205, 42,127,247,221,119,189, 86,216,217,139,165,174, 1, 49,170,248,224, 59,165,
+ 41,173,212,163,146, 71, 64,149, 26,253,247,253,178,150,105,209,182,123, 95,169, 71,165, 37,170,152,208, 24,115,142,117,114,114,
+154, 40, 16, 8,108, 0,128,101,255,212, 63, 21,203,241, 92, 1, 64,111, 96, 21,246, 30,254, 89, 60,161,196, 32, 22, 11,131,179,
+178,179,119,100, 68, 7,255, 92, 28,167, 90,167, 11,252,106,204, 16,230,254,171, 20,248, 4, 54,229,173, 94, 50, 27,172, 65,103,
+ 55,105,230,162, 30,119,111,237, 3, 48,239, 18,119,143,114,224,192,129, 3, 7, 14, 31, 38,242,226, 54,110, 54,249,191,185, 68,
+161, 5, 0, 86, 82, 62,158,189,142, 7, 0,216, 74,129,241,163, 6, 33, 37, 57,201, 87,163,103, 49,116,208, 0,220, 11,137,195,
+179,176, 36, 80, 74,225,235, 41, 51, 59, 67, 60,176,159, 12, 29, 54,180,249,233, 51,103,110,127, 51,231,155, 95, 9,121, 19, 13,
+124,211,230, 45, 13,231,206,155, 59, 98,192,160, 1,173, 15, 30, 60,248, 4, 5,102,198, 54, 23,124,162, 88,187,124,233, 98, 81,
+116,114,110,238,196, 41, 51,216,175, 39, 79, 92, 13,160,187, 57,199, 10, 4, 2,155,232,232,104, 43,134,121,219,125,237,251,197,
+ 51, 46,183,238,182,226, 69,120,100,250,253,211, 71,143,214, 13, 8, 8, 64,116, 76,124,227,101, 63,110,172,233, 86,169,238,144,
+172, 76, 85, 55,101, 82,112,161, 81,168,197, 2,193,147, 5,203,126,170,197,218, 86,102,102,141,104,143,192, 74,238,136, 73, 76,
+ 71,179,182,157,249, 65,119,238,180, 1,192, 9, 45, 14, 28, 56,112,224,192,225, 3, 69,113,163, 14, 25, 0, 56,113,226, 68,161,
+129,255, 12, 6,138,103, 97,113,120, 22, 22,135,219, 33, 73,208, 82, 1, 86, 47, 91,128,149, 75,230, 33, 85,197,224,240,245, 40,
+ 60, 15,139,199,243,176,120, 36,167,101, 23,166,240,222, 26,162,185,114,169,172,246,234,213, 54,203,219, 52,147,183,176,183,179,
+179,123,241,228, 87,229,220,201, 9, 85, 23,124, 21, 37, 20,104,196,209,114, 43,121,163, 3, 7,246, 7,184, 56, 57,203,173,172,
+ 20,211,228,158,181,182,218,218,214,180, 41,142,179, 32,100, 46, 85, 59,119,238,208,238, 83, 87, 87, 23,118,244,234,160,144,106,
+ 85,253,117, 85, 42, 87,105, 44,115,241,237, 92,140, 18,205,231,100, 89, 22, 12,195, 32, 33, 33, 1,177,177,177,120,253,250, 53,
+158, 63,127,142,168,168,240, 4,150, 82,129, 1, 44,227,230,230, 9, 62, 95, 4,159,242,222,248,105,245, 18,217,162,249,179,234,
+ 73,228,162, 35,132, 16, 82, 24,103,110,106,218,193,147,191,159,137, 57,181,231, 39, 3, 0, 36,166,101,227,252,157,151,184, 23,
+ 28,101,169, 98,126,231, 67, 94, 57, 78,142,147,227,228, 56, 57, 78,142,243,223,192, 89,148, 22,249, 16, 64, 41,221, 92,112, 49,
+110, 43,118,212, 97,104, 84, 42,158,189,142, 71, 29,127, 15, 84, 42,239,134,219,207,211,176,235,124, 20,182,158,142,192,249, 7,
+ 73, 96,249, 10,196,103, 2, 47,194, 19,240, 34, 34,185,184, 56,205, 0, 0,158, 88,208,251,171,175, 50,166, 84, 15,200,108,112,
+241,212,120,120, 56,189, 8,152, 62, 61,125, 60, 79, 44,232,109, 87, 78,177,103,198,148, 73,253, 21, 50,153, 72,163,214,160, 98,
+ 5,111,201,132,113,227,135, 16, 59,241, 30,115, 11,106,237, 25, 96, 39,150, 74,127, 94, 52,127,154,248,135,195, 47, 34,149, 26,
+ 40, 15,221, 72,120,245,245,140,185,169,124,129,228, 39,107,207, 0, 59,115,185,116, 58, 29,212,106, 53, 52, 26, 13,180, 90, 45,
+ 98,162,158,118,254,227,240,212,182, 21,202,217,183, 21, 75, 36,160, 0, 50, 85,122,188,142,203, 65,203,207, 90,243,234,212,174,
+ 29,104,229, 86,117, 88, 97, 92,233,233,225, 25, 44,229, 41,142,255,182,155,183,255,236,125,252,122,252, 14,142, 92,184,143,219,
+151, 78,233, 41,171,203,159,166, 66,225, 94,197, 87,225, 94, 35, 66,225, 81, 51, 33,127,241,172,126,151,251, 86,224,192,129, 3,
+ 7, 14, 28,254,189,200, 27,105, 56,178,224,136, 67,160,152,174,195,220, 92, 85, 88,247,222, 3,224,230,236,106,213,165,197, 96,
+ 97, 80,104, 58,146,226, 34,240,242,249, 99,228,228,234, 32,180,171, 0, 72, 92, 81,222,199, 27, 15,159, 29,209,174, 89,126, 34,
+155,213,171,195,138,226,235,210,197,221,211,205, 73,206, 44, 95,230,117,243,249,179,180, 58,187,231,108, 67,191,126, 86,142,203,
+151,121,221, 12,127, 37,103,100, 18,218,104,200,160,190,132, 33, 20,211,167, 79, 65,151,142,237, 48,116,200, 64,178, 99,199,246,
+ 6,230, 22,148,133, 96,221,204,217, 11, 68, 9,233,122,205,237,231,217,106,153, 92, 42,189,246, 34, 91, 25,232,227, 37,109,223,
+109,112,236,137, 3, 63,255, 0, 96,144, 57, 92, 70,129,165,211,233,160,213,106, 1,192, 0, 0, 12,243,102,157,146,165, 65, 98,
+186, 26, 9,233,106,232, 13, 44,186,245, 30, 36,189,115,247,193, 32, 0, 69,248,107,177,172, 78,175,195,161,179,247, 16,115,231,
+ 32, 75, 24, 94,134,209, 25,222, 40,178, 92, 93,189, 46,119,236, 54,208, 73, 36,121,211, 13,155,165, 84, 99,199,198,101,220, 29,
+204,129, 3, 7, 14, 28, 56,252,139, 81,112,250, 29, 66, 8, 74,156,130, 39,252,201,149,186, 0,224, 87,183,109,138,149,132,111,
+207,103, 8, 18,162, 67,177, 99,197, 68,176, 44, 69,251, 17,203,161,240,113,133, 84,200,131, 58, 59, 37, 59,229,229, 69,135,226,
+213,158,174,245,250, 77, 49, 62, 95,142,169,104,189,123,119,182, 0, 0,118,239,206, 22,140, 25, 93,206,122,195,166, 48,159,250,
+ 77,234,128, 26, 12,232,216,165, 59,122,247,233,141,240,248, 28,252,239,114, 36,148, 42,141, 89,243,171,201,156,170,214,116,118,
+247,104,247,213,224,118,114, 62,143,144, 42,222, 54,188,168, 36,157,158,199, 19, 24,142,221,201,136,237,214,173,143,227,249,147,
+251, 63,149, 57, 85,173,153,147,244,244, 65, 73,124,106,181, 26, 6,131, 1,106,181, 26, 58,157, 14,246,142, 21, 78,182,238,190,
+ 34, 58, 46, 62,235, 68,124, 90,110,125,165, 78,143,132,116, 53, 18,211,213, 72, 87,106,225,170,176,131, 94,167,169, 94,204, 69,
+248,181,107,247, 1, 3, 1, 48,132,209,111,203,138,125,250,220,184,205, 40,178,218,117,233,231,116, 57, 40, 20, 47,239,158, 74,
+163,172, 94,247,166,226, 88,110, 10, 20, 14, 28, 56,112,224,192,225, 95, 14, 19, 63,173, 19,121,206,241,120, 75,104, 25,251, 70,
+ 59,116,232, 64, 10, 30, 28,147,144, 10, 7, 43, 62,156,220,125,208,127,226, 74,252,250,195,100, 24, 12, 58, 80, 10,232, 13,230,
+ 69, 38,160, 84,112,118,236, 24, 31,255,242, 62, 60,167,254,253,100,170, 93,187,115,164,253,251,201, 84,213,170, 59,100,140, 29,
+227, 19,150,149,235,213, 88,111, 48,224,218,147, 68, 60, 14,203,192,227,240, 76, 88, 73,205, 15,243,197, 19, 9,199, 44, 91,186,
+ 68,200,231, 17,242, 36, 34, 59, 59, 58, 69,159,205, 19, 8,180, 50,169,136,106, 40, 95, 29,158, 76, 83, 62,235, 58, 68,117,108,
+231,143,195, 0,140, 43,138,199, 56,210,208,104,201, 50,174, 41,165,148, 0, 44, 75, 12,134,232,228, 92,100,107,117, 72, 72,251,
+ 83,104, 17,125,209, 61,167, 10,247, 42,190, 54,214,246,191,243,120, 60, 49,165,128, 78,171,239,165,112,175,210, 54, 43,246,197,
+115, 83,145,117,243, 73, 44, 66,239,159, 75, 48,104,115, 6, 40, 19, 66,254,224,110, 91, 14, 28, 56,112,224,240, 95, 66,113, 90,
+228,223, 14,163, 5,171, 80,139, 86,113, 5,162, 20,120, 17,145,140,242,158, 78,240, 44, 95, 9,207,159, 62,252,115, 27, 0,189,
+193, 60,223,181, 35, 71, 98,163, 87,173,178, 97, 39, 79,206,104,184,108,153,215,141, 49,163,203,217, 84,171,238,144, 49,109, 90,
+100,195, 85,171,108,110,156,189, 41, 48,208,188,120, 93,198,216, 92,121, 97,254,205, 4, 83,175,102, 64, 5,222,130,221, 47, 34,
+255,120,148,149, 40, 20, 10,117,174,118, 18,162,176, 18,241,120,140, 64,164,214, 49,106,223,192,218,188, 99,204,155,232,173, 37,
+ 9,173,130, 93,135, 41, 73,161,157,207,252,111, 74,181, 22, 93,151,219,199, 36,169,144,161,225,229,119, 29,242, 24,130, 71, 79,
+ 35, 0,158,240,113, 97,156,214, 10,251,211,123,118,253,234,181,106,217, 98,104,245, 6,140,157,252, 13,134, 12, 26,112, 90,225,
+ 94,165,173,151,143, 95,208,149, 99,219,100,109, 71,255,132,136,103,119,227,245,234,204,189,156,200,226,192,129, 3, 7, 14,255,
+ 53,124,136,226,202,136, 2,163, 14, 11,183,104, 21, 7,111, 79, 23,220,122, 28,134,234,254, 21, 96, 99,173, 64, 72,104, 52,120,
+140, 0, 12, 1,116,122,243,197, 16,213,234,246,173, 90,101,131,136, 48, 57,179,225,167, 48,159,177, 99,124,194, 86,173,178,185,
+ 65,181,186,125, 0, 6, 80,250,102,238, 69, 99,128, 84,131, 5, 97, 60, 41,171, 43,231, 98, 47,227,221,125,165, 76, 97, 24,158,
+218,193, 70,194, 58,216,136, 25, 7,133, 72, 32, 20,240, 88, 61,101,180,158,206, 62,185,148,101,107,154,195,103,218,117,104, 48,
+ 24, 64, 8, 99,200, 19, 98,242,168, 20, 21, 50,114,121, 72, 72, 87, 35, 45, 75,139, 42, 30,114,156, 59,127, 48,199,160, 83,237,
+ 46,140,139, 39, 16,218, 84,242,241,196,172,111, 87, 65,165, 54,224, 69, 76, 54,132, 98,177,171,139,107,224,131, 1, 95,206, 16,
+ 79,216, 28,138, 97,159, 58, 96,242,149,208,152,156, 4,201, 12,238,113,227,192,129, 3, 7, 14, 28, 62, 28,152,250,104, 21,132,
+ 89, 66,203, 74, 38, 1,229, 73,112, 37, 40, 20,126, 1, 53,176,253,232,109, 84,174,222, 0,113, 89,122, 80, 48, 37,142, 54, 52,
+226,235, 25, 57,247, 0,220,235,210,197,221,243,139, 47, 60, 90, 83, 42, 56,187, 97, 99, 70, 52, 0,252,180,183, 57, 40, 0,150,
+165,160, 20,160,236, 27,193,101,190,156,228, 71,132,197,101,150,247,113,149, 35, 56, 90,171,150,139,133,140,157, 92,196,115,178,
+ 17, 9,133,124, 62, 12,148,168,227,226, 66,213, 4, 8, 55,135,174, 96,215,161,204,202,237,228,103, 93,151, 39,133, 71,102,220,
+173,146,154, 83, 51, 67, 43, 2,165, 64, 21, 15, 57, 30,223, 60, 97, 72,136,121,249, 66,149,240,108, 99, 97, 92, 44, 11,158, 86,
+207,226,193,171, 12,164, 43,117, 72,207,214,162,113,203, 78,194,198,173, 58,227,202,227,100,176,122, 29,150,109, 57,145,101,160,
+186,222,148, 6,235,184, 91,150, 3, 7, 14, 28, 56,112,248,112,144, 55,210,176, 3,222, 68,134,239, 96, 42,190,204,154, 84,218,
+192, 82, 56, 58,216, 67, 34,183, 70, 88,130, 22, 89,196, 25,105, 57, 20, 6,195, 27,139, 22, 91,244,137, 91, 21,150,126,228, 72,
+108,244,111,191, 37,109, 61,114, 36,214,196,209,251, 79, 75, 86,254,154,165,102,115, 18,106, 56,119,244,212,197,140,206,245,157,
+236, 24, 30, 79, 37, 20, 48,106,190,144,167, 21,242, 25,157,144,207,104, 92,172, 5,188,139,199,246,138, 40,193,197,146, 56,115,
+115,115,209,170, 85, 43,180,111,223, 30, 93,186,116, 65,207,158, 61,225,235, 91,213,153,225, 17, 13, 37, 44,235, 36,202, 66, 37,
+ 39, 2,126,110, 20,254,216,251,125,206,227,107,191, 61, 48,168,115, 59, 81,147,190,206,183, 56, 41,101, 83, 51,212,200,213, 26,
+144,150,173, 69,154, 82, 11,189, 83, 67,252,118, 61, 22, 42,141, 1, 17, 65, 7, 85, 73,241,209, 19,115, 19, 94,132,149,112, 33,
+ 91,253, 13, 55, 7,199,201,113,114,156, 28, 39,199,201,113,190,119,206, 15, 28, 29,242,132, 85,135,130,113,180,204,176,104, 81,
+ 84,116,147,163,178,135, 28,185, 90,103,228,106, 12, 80,230, 26,144,153,163, 69,102,142, 14, 97,241, 57,120,124,180,236, 57,124,
+ 99,197, 2, 72,222,111,144, 55, 2,207, 92,155,150, 72,171,249,118,229,178,239,122,237,173, 93, 75, 51,161,131, 91,185,135, 97,
+154, 88, 66, 24, 21,195,227,235,236, 21,124, 65, 72,200,195,164, 27,151, 79, 54,147,232, 13, 3,139,227,209,235,245, 25, 30, 30,
+ 30, 0,222,158,130,167,106, 37,105,151,107, 39,166, 87,104,222,121,153,211, 15,139,167,228, 48, 60, 33, 75,248,194,199, 6,157,
+106,143, 42,225,217, 79,180, 24,135, 50, 70, 40,121,122,235,126,112, 3, 91,251,114,120, 25,163,132, 50, 87, 15,173,158,133,157,
+149, 16,209,143, 78,107,195, 66,238,238,207,138,121,176,157,187, 79, 57,112,224,192,129, 3,135, 15, 19, 70, 63, 45,227,186,196,
+240, 14, 38,214,157,176, 38,173, 58,129,101, 41, 12, 20, 96, 13,121,150, 39,246, 79,235,147, 65,151, 27, 86,214, 12,178,172,225,
+246,186,205, 91,219,215,174,215,156, 23,224,101,133,204,148,120,220,188,118, 65, 15,150,222, 48,231,248,228,228,231,217, 50,215,
+ 42,221,123,245,248,226,192,160,161,163,211,155,181,108, 41,119,118,118, 85, 71,199, 68,231,252,178,115,151,238,244,201, 35,205,
+ 88,232,251, 36, 39,191,200, 46,142, 39, 61, 61,253,199,194,210, 63,107, 82,174, 49,128, 10, 60, 62,209,228, 36, 62,151, 91, 82,
+182,228,152,168,110,223,125, 59, 63,188,223,136, 73,162,138, 30,149,144,152,193, 67, 88,116, 60, 66, 46, 31, 81,199, 60,191,115,
+ 56, 51,250,222, 48,238, 22,229,192,129, 3, 7, 14, 28, 62, 76,148,201, 71, 43, 50,248, 77, 60,173,191, 27, 89,241,137, 3,182,
+111,255,117,209,175, 59,247, 54,206,213,104, 60, 40,132, 81, 6,189,230, 82,182, 1,115,205,229,200,137,127,113,215,209,209,183,
+218, 47, 91,214,205,254,101,235,134,230, 96, 13,254, 4, 8,167, 4, 23, 37, 58,195,160,146, 68, 86,241, 66, 46,107, 83,235,238,
+ 43, 84, 41, 41,217,191, 90,122,108, 78,114, 72,188,149, 75,197,114,155, 86,127,187,156, 97,120,109, 12, 6, 86,192, 26,116, 47,
+ 13,218,220,239, 85, 73,207,142, 82,203,134, 87,114,224,192,129, 3, 7, 14, 28,254, 69, 32,132,140, 44, 24,180,212,108,139,214,
+ 63,133,212,212,208, 44, 0, 19,202,202,147,156,252, 60, 27,192, 59, 31,185,247,232,121,198,255, 0,252,175,180,199,103, 39,188,
+ 74,130,153, 81,233, 57,112,224,192,129, 3, 7, 14, 31,190,224, 2,204,116,134,231,192,129, 3, 7, 14, 28, 56,112,224, 80,188,
+200, 50, 93,231,167, 3, 40,116,228,128, 37, 51,115,151,102,244, 65, 73,252, 28, 39,199,201,113,114,156, 28, 39,199,201,113,126,
+124,156, 37,113, 91,162, 63, 62, 8, 1,246,119,186, 7, 17, 66, 90,189,235, 10,227, 56, 57, 78,142,147,227,228, 56, 57, 78,142,
+243,227,227,252,160,197, 84, 1, 43, 86,158, 96,252,119,249,104,113,224,192,129, 3, 7, 14,255, 20, 28, 29,125,173,128,124,191,
+222, 18, 33,119, 10,112, 1, 0,101, 82,112, 2, 87,123, 28,138, 18, 85,133,249,104,149, 74,104, 17, 66, 4, 12, 95,244,149, 68,
+106, 53,152, 48,176,206, 78, 79,246,248, 15,171, 88,226, 91, 94, 62,174, 92, 57,167,150,209, 49, 9, 59, 66, 94,229, 28,121, 31,
+156, 86, 46, 21,157,136,200,238, 48, 97,213,223,101, 70, 63, 62,245,142,203, 40, 14, 8, 8,168, 5, 0,193,193,193,247, 41,165,
+234,178,114,202, 93,252,250,218, 89,219,142,210,178, 26, 67,142, 50,231,167,236,248,231, 7,223,101,158, 21,238, 85, 28,192, 87,
+108,132, 65,223, 18, 20, 60,240,248, 15,136, 58,119,120,102, 82,240,171,226,142,243,234,178,196,127, 88,175, 14,115,182,238, 63,
+177, 40,242,200,204,144,130,219,237, 63, 95,171, 24, 63,176,205,244,245,123,143, 44, 77, 62, 58, 45,155,107, 94, 44,135, 87,147,
+126,182,122,190, 43, 47,246,226,138, 20, 75,142,243,244,107,248, 68, 32, 16, 56,105,181,218,196,152,231, 55,171,153,115, 76, 57,
+255, 70,247,120, 60,198,221,160,103,163,163,158, 93,255,132,171,253,146, 33,117,174,216, 16,122,253, 44, 10, 16, 16,254,202,220,
+148, 87, 23,202,194,231,238,238, 46,181,177,177,105,102,109,109, 93, 78, 38,147, 73,210,210,210, 84,105,105,105,145, 17, 17, 17,
+231, 41,165,250,247, 81, 70,185,139,223, 76, 34, 32,243,242,126, 47, 80, 38, 60, 91, 82,124,251,234,191,136, 48,116,102,222,239,
+ 37,217, 9, 33,115,254, 13,215, 74,226,234,231,205,163,152,192, 99,248,141,244,172,110,113, 78,194,243, 99,150, 28,111,111,111,
+223,134,207,231, 75,141,255,245,122,189, 42, 53, 53,245, 12,247, 20,148,234, 61, 57,178,224,239, 82, 91,180, 8, 33, 60,129, 88,
+118,181,223,208,177,213,150,206,159, 33, 89,189,245, 55, 72,172,236,130,115,179,211, 2,254,141,133,119,170, 88,255, 46,143,225,
+121,154,166, 25, 88, 67,116,210,171, 91,239,164,209,245, 43, 47, 29, 54,123,218,128,201,125,123,181,242,110,213,113, 34, 1, 80,
+168, 40, 82,120,213,189, 78, 8, 83,129, 33, 0,195, 16, 48, 4, 0,104,108,242,171, 91,181, 75,203,105,132,141,115,165, 10, 34,
+ 43,167,203, 77,186,140,117, 13, 58,183,107,187,220, 41,160,181, 50, 41,248,225, 59,184,113,156, 42, 85,170, 84,215,215,215,215,
+ 97,252,248,241, 66, 0,248,225,135, 31, 42, 87,174, 92, 57, 37, 52, 52,244, 14,165, 52,169, 84,141,156,179,255,128, 31, 87, 44,
+252,245,243,207,219, 35, 54, 89,137,101,171,214,183,176,114,245,237,249,174,196,150,157, 93, 5,107,190,181,221,163,137,211, 22,
+ 58,183,107, 81,151,151,157,171,199,239,151,239, 55,221,181,126,225,109,107,167,128,122,197,137, 45, 54, 39, 99,142,139, 21,109,
+199,230,100, 0, 64,223,130,219, 61,172,116,173,156,164,134,118,110, 98,254,125, 0,135, 74,204,139, 79,147,211, 2,177,216,155,
+ 97, 24, 24,175, 61,143,188,185,254, 58,173, 42, 34,250,233,229,182,255,134,231,196,218,187,126, 60,120,124, 7,134,252,153, 63,
+146,119,159, 18, 74, 51,227,158, 95,113,120, 7,247,147, 77,181,202,182,129, 29, 26, 55,249,229,210,235, 84,185, 87,243, 73, 39,
+ 8,101, 54, 68, 92, 94,249,192,172,151,138, 68, 98,119,236,216, 49,167,118,237,218,217,184, 84,235,122,201,156, 99,172, 68,146,
+128,227,199,143, 10,219,181,107,107,193,253,233,215, 26, 12,179,147, 0, 2,150,165, 63,240, 88,186, 63, 59,229,121,168,165, 97,
+ 88,100, 46,254,195, 24, 80,179,219, 25, 22,228,110, 78, 66,200,214,210,214,175, 64, 98,243,153, 64, 40,252,170,130,111,245,218,
+ 49,225, 47,239, 42,179,179, 86,233,114,211, 47, 89, 76,164,211, 79, 61,119, 37,232,115,190, 64, 64,218,125, 86,159, 7,160, 76,
+ 66,203,197,197,165,235,218,181,107, 43, 54,108,216,208,248, 50,183, 62,112,224,128,235,183,223,126, 43, 55,231, 25, 42,226, 94,
+242,112,114,114,242, 18,137, 68, 30, 0,160,209,104, 98,146,146,146, 34, 41,165, 49, 37,222, 19,174,149, 28, 9,248, 11,175, 92,
+190,204, 7,128,166, 77,155, 45,242,110, 58,222,142, 39,180, 82, 21, 90, 29,154, 44, 57,128, 73, 55,111,221, 32, 0,208,160,126,
+195, 25,114,167,128,117,239,211,178, 37,117,241,175,207, 0,147, 27, 55,107,221,173,119,159, 1, 76, 96, 21, 47,180,105,253,233,
+116, 0, 22, 9, 45, 62,159, 47,189,125,251,118, 37,134, 97,120,122,189, 62,183, 65,131, 6,145,101,201,151,135, 95,163,235, 4,
+ 76, 57,173, 94,179, 37,233,213,221, 69,148, 82,182,160,126,176, 41, 87,123, 54,120,252, 17, 44,203, 70,101, 70,220,105,244,177,
+ 89,180, 10,173,103, 75,201, 24,190,232,171,190, 67,190,172, 54,233,235, 89,146,137,171,207,227,196,250, 25,201,255, 86,145, 5,
+ 0, 60,134,231,121,250,204,105,103,153,136, 7, 0,200,206,213,227,243,118,237, 74, 60,206,214,167,254, 69,134, 16, 63,227, 84,
+226, 6,189, 86,194, 23,136,114, 9, 0,144, 55,163, 8, 28,221,203,159,119,115,179,151,245,237,213,202,123,231,222,179,209,145,
+209, 41, 69, 54,106, 12,195,243, 60,114,244,152,179,135,131, 4,124, 30, 65,182, 74,143,118,237, 59, 25, 10,219,215,205,205,190,
+ 67,223, 94,173,188,119,239, 59, 23, 25, 23,151,122,162,216,198,220,205,183,142,220,198,229,247,110,163,190,117,200,101,236, 49,
+119,241,143,142,151, 79,237,190,212,188,195, 0, 54, 34, 34, 42,151, 18, 18,156,150, 26,247, 85,118,220,203,103,230, 10,105, 43,
+ 43,171,138, 86, 86, 86, 53, 63,255,252,115,201,148, 41, 83, 4, 45, 90,180,200,223, 62,114,228, 72,225,197,139, 23,221, 86,172,
+ 88,209,222,221,221, 61, 55, 59, 59,251, 65,118,118,246, 43, 74,169,193,220,107,226,234,234, 52,174,251, 23,157,240,105,183,177,
+ 48,176, 4, 35,191,156,132,211,167, 14,141, 6,240, 78,132,150, 78,102,253,237,136, 81, 83,156, 26,212,173,197, 91,184,251, 25,
+164, 34, 62,218,126,226, 71,134,140,159, 99,187,117,205,194,159, 1, 52, 47,204,146,197,230,100,204,169,230,168,233,211,185, 97,
+ 5, 28,221,163,233,227,217,106, 58, 24,153, 77,190,101,171,210,231, 19, 20,118, 82,233, 90,119, 91,158,179,216,144,180,182,210,
+231, 19,206,133,158, 90,147, 85,236,203, 79, 44,246,222,179,123,119, 21, 59,133, 16,124,134,128,199, 35,224,243, 24,228,106, 12,
+232,217,171,207,187,250,146,226, 73,157,171,180,103,128, 33,111, 94,216,216,166, 74,124,113,210,146,107, 66,120, 66,135,227, 71,
+ 15,243,157,109,196,224,241, 8,120, 12,192, 99, 8,194, 19, 84, 24, 54,108,136, 77, 89, 5,251,231,141,157,235, 94, 92,215,188,
+109,131,106,246, 53,246,221, 32, 54, 13, 62,239,237,144,156, 43, 27,188,247,200,133, 62, 94,205, 38,223,162,148, 93, 30,117,101,
+117,177, 95,210,106,181, 58,161,109,187,207,173, 9, 95, 46, 59,247,219,246,102,124,134, 64,103,160,208, 27, 40, 12,121,115,163,
+190,121, 94, 9, 24,134,128,178, 20, 35, 70, 12, 67,219,118,159,231,176,122, 54,218,252, 70,142,217,249,251,185,107, 78,106, 29,
+139, 21,107,183, 46, 84,102, 36, 45,124, 29,226, 16, 46,115,241,157,148,147,240,220,236,121, 48, 24,208, 79,162, 94, 61, 30,181,
+251,248, 77, 84, 11,168, 10, 3,251, 38,159,126,158,114,236, 62,113, 19,254,126,254,111,242,205, 82,248,150,179, 66,221, 79,234,
+ 2, 64,169,132,150, 64, 98, 61,183,121,135,129, 11, 58,246, 28, 10,103, 39, 39, 48, 84,215,241,220,137,221, 29, 5, 82,155,169,
+ 58, 85,198, 10,203,222, 24,134,252,247, 2,101,217, 50,187,151,184,187,187, 59,213,173,251,103, 56, 70,189, 94, 15, 31, 31, 31,
+196,196,196,248,149,226, 94,146,185,185,185,117,216,180,105,147,115,251,246,237, 5,174,174,174, 0,128,248,248,120,143,223,127,
+255,189,182,187,187,123, 98, 92, 92,220, 9, 74,105, 78, 81, 28, 6, 29, 35,100,248,224, 73, 36,178, 55,101, 4, 97,166,140, 27,
+ 88,195,197,205,189, 80, 75,125, 82, 82,188,104,218,216, 11,132,207, 23,230,237, 15,134, 82,150, 20, 99, 37,106, 37, 16, 8,164,
+133,109,211,242,172, 27, 80,129,205,112,134,199,188,185, 89,245,186,164,212,136,160,170, 22, 88,226, 2, 5, 34,225, 79,253, 6,
+141,106,212,163, 91, 23,184, 57,217,224,220,213,135, 24, 61,110,178, 78,175,213,173, 42,213, 59,146,199,227, 39, 38, 38,134,219,
+217,217,185,150,253,125, 75, 42,156, 61,125,202,249,220, 31,231,103,172, 92,189,102,140,187,111, 83, 29, 75,105,254, 60,198, 94,
+213, 62, 21,180,238,216,203,218,185, 82, 3,201,154,121,195, 5, 31,155, 69,171, 40,177,101,241, 67, 36,146, 42,122,125, 51,109,
+188,228,219, 93, 55,113, 98,253,232,100,101, 70,146, 83,254,151,130,141,221,189,236,140,180,218,165,201,164,194,217,175, 33,225,
+241, 71, 17, 30, 79, 78, 24, 34, 98, 13,108,148, 94,163, 89,148,147,252, 60,174,172, 21,192,178, 20,255,187,158,104, 89,165, 81,
+ 84,222,185,239,176,179,139,173, 24,185, 90, 3,122,247, 29,128, 95,127,253, 85,225,100, 35, 66,174, 70,143,229, 43, 87,102,101,
+135,159,112, 14,143, 74,139,105,213,105,242,153, 87, 97,137,143, 35,227,114,247, 23,125, 17, 24, 56,219,136,177,120,239,115, 88,
+ 75, 5,176, 83, 8,193, 48,196,244, 34,229,119, 23,198,198,165,101,152,112,238, 42,242,161,115,171,222,214,198,206,125,207, 23,
+163, 22,219,190, 72,228,131, 66,139, 80,107, 9,122, 13,158, 96, 93,209, 85, 10,185,132,103,251,127,246,206, 59, 44,170,163,109,
+227,247,108, 99, 89,118, 97,233, 85, 64, 69, 17, 44,168,216,123, 47, 17,123,111,209, 24, 75, 76,140,137,198, 24, 91, 44,137, 26,
+163,177,199, 88, 98,139,189, 27,123,239,137, 21, 20,197, 2, 74,145,222,217,222,203,124,127, 0,190,196, 80, 22, 53,223,251, 38,
+153,223,117,157, 11,118,247,236,189,115,206,153,115,206,125,158,121,102, 38,225,101,154,207,180, 47,191,188, 33,245,172,209, 84,
+158,253, 34,161,162,237,174, 90,181,106,255,158, 61,123, 58,124,241,197, 23,124,127,127,127,108,219,125, 32,176, 77,183, 65,189,
+210, 51,178,252, 41,165,240,242,244, 76, 25,247,193,160,227,167, 78,157,122,153,146,146,194, 95,186,116,105,179, 35, 71,142,212,
+169,204,147,169,133, 82,232,244, 22, 88,138,110,144, 57,114,125,101, 43, 52,241,243,243, 19,166,165,165,233,139,163, 12,132,144,
+ 87, 59, 83,226,215,176, 91,167,118,205,120, 27, 79, 39, 66,165,179, 64,108,207, 71, 98,150, 6,141, 27,134,145,159, 45,230, 6,
+165,105,126, 56, 56, 98,142,151,132,118,239,221,162, 58, 60, 93, 28,176,245,199, 69, 56,118, 51,161,123,150,138,192,189,247,210,
+ 9, 62, 66, 94, 23, 15, 7,193,218,246,141,107,120,119,108, 20,136,187,141,107,120, 95,139,124, 22, 27, 54,120,197,167,105, 42,
+254,133,252,211,159, 42, 75,191,240,112,224,234, 40,192,150,179, 47,225, 96,207,131,216,158, 7,177,176,240,111,201,227,255, 70,
+ 79,181,190,117,252,185, 86,203,135, 78,190,117, 62, 28, 58,120,144,239,240,161,131, 40,184, 28, 28, 56,116,188,207,174, 93, 59,
+ 51, 36,222, 33,155, 45, 28,238, 22,109,250,227,148, 10,247, 41, 7,240,148,218,225,203,205,143,224, 36,226,195,209,129, 15, 39,
+ 7, 62, 58,214,247, 0,151,243,198, 23, 30,151,143,250, 4,245,136,222,209,185, 67, 72,128, 36,248,193, 11,249,227, 15, 23,222,
+ 91,117, 69,214,225,243, 31, 87,214,113, 83,201, 12,188,185,211,198,241, 82,211,211, 59, 28, 56,126,181,163,111,211, 15,159,153,
+141,234, 89,217, 15,246,151, 26,193, 77,121,250,123,120,149, 22,131,236,141, 42,211,195, 7,207, 82,107, 20,232,133,136, 73, 82,
+ 64,108,207,131,164,120,223,218,243, 32,182,231, 67, 98,207, 67,122,106, 34,242,213,220, 27,105,110,156, 14,244,202,239,149,106,
+162,210, 25, 45,184,159,160, 66,213,144,134,240,241,241,133,161,199,136,170,183, 47, 29,250, 85,236, 83,251, 59,117,198,147, 89,
+182,234,236, 62,113, 11, 51,166, 76,136, 36, 64, 84,209, 77, 58,124,238,146,117,141,190,153,241,201, 31,222,155,182, 96, 77,163,
+ 55,143,100, 57,205,233,216,239,227, 5,109,186,244,131, 50, 63, 11,191,159,219,143,110, 61, 7, 96,196,152,207,224,236,236,190,
+140,111, 47,125, 96,210,201, 47,253,233,154,235, 83,187,117, 88,189,218,187,252,124,125,253,173,214,194, 89, 62, 40, 5, 90,183,
+235,136,233,159,143,131,149, 82, 52, 8,111,218,177,199,208, 79, 41, 45,154, 13, 36, 55, 47, 87,253,236,233,227,206,218,172,167,
+183,109,222,151, 58,157, 41, 39, 39, 7,247,239,223, 71,108,108, 44, 98, 98, 98,144,151,151, 7,169, 84,170,170,100,125,114,170,
+ 95,191,254,240, 75,151, 46,217,187,184,184,188,122,223, 96, 48,192,209,209, 17,195,135, 15,231,119,237,218,213, 47, 34, 34, 98,
+ 20, 33,100, 55,165, 84, 81,154,142, 54, 47, 46,221,201, 59,116, 67,187,246,237, 38, 2,128,200,201, 39, 97,237,182,227, 49,229,
+158,107, 82,223,192,150, 45, 91,213, 0,165, 32,160,171,213,185,207, 50,203,137, 18,137,111,221,186, 21,196,229,114,121,255,185,
+ 7, 89,241,211,214,125,161,231,175, 63,236,191,100,217, 15,246, 78, 98, 33,114,228, 6,140, 29,209,207,230,123,176,131,119,104,
+143, 86,173,218,253,250,205,130,175,121, 18,177, 24,231,110,199,227,211,207,191,212,101, 36, 61,250,129, 90,249,235,212,217,207,
+178,223,242, 86,249, 78,122,198, 5, 87,145,192,177,119, 55,251,143,222,239,109,111, 48, 89, 32, 83,155,160, 55, 90, 96,177, 82,
+200,213, 38, 60, 78, 86,194,221,201,238, 77,164,155, 0,240, 0,144, 3,224,238,107,175, 81,244, 63, 74,121,157, 91, 24, 30,129,
+ 27, 0, 3,128,146, 63, 94,252,186,172,247,139,191,255, 24, 64,237, 34, 77, 11,128, 59, 0, 10, 74, 51, 91,165, 69,185,120, 39,
+ 79,158,164, 17, 17, 17,175,174,248,175,191,126, 29,161,128,239, 43,150,122,128,210, 39, 40,113,111,131,151, 79,149,188,245, 27,
+126,118,149,186,184,189,148, 23,228, 5, 22,253,200, 5, 91,110, 22, 60,194, 93,209,174,125,219,174, 19, 63,254, 24, 33, 65, 85,
+ 4, 22,139,133, 62,138, 77, 48,109,223,178,117,180,212, 63,108,149, 34,245,209,156,226, 16,100,101,123, 57, 88,172,150,212,215,
+ 35, 88, 22,171, 37,245,181,157,113,225,207, 59, 12,112,150,216, 97,195,233, 68, 80, 10, 16, 80, 72,197,124,236,189,146,138,132,
+200,195,138,158, 13, 20,234,225, 75,230,119,236,208, 99,242,165,199, 47,116,251,179,179,117,103, 41,165,153,101,105,114, 8,192,
+227, 18, 56, 57,240, 33,117, 16,192, 89, 44, 0, 41,113, 3, 43,217, 92,216,190,199,228,243,151,126,123, 57, 11, 64, 78,201,124,
+168,146,154, 34,239,224, 38, 78,206, 85,246,247,159,184,212,241, 97,170, 25, 60, 46, 80,221, 91, 4, 87, 71, 1, 12,102,130,164,
+ 28, 99,209,153,227,140, 79,167, 45,112,157, 49,117,226, 41, 66,234,212,163,244,177,177,188,109,215,104, 52,118, 35, 71,142,228,
+155, 76, 38,227,240,177,159,117,205,204,204,233,243,211,234,239,133,158,158, 94,208,232,204,136,140,121, 94,251,155,111, 22, 84,
+ 63,126,230,202,209,249, 95,126,244,107,247,238,221,165,251,246,237,179, 86,180, 63,255,240,132,152,149,251,227,214, 93, 7,119,
+172,252, 97, 49,158,189, 44,192,150,141,235, 64, 45,230, 13, 21,132,101, 47,148,248,159,206,154, 53, 75,116,244,232,209, 42, 98,
+177, 88,161,209,104,114,254, 16,143,224, 16, 94, 86,190, 6,238,142,118, 16,240, 56,240,114,177,135,167, 84, 8, 62, 23,224, 16,
+ 98, 41, 77,115,203,254,147, 11,173, 26, 57,142,237, 49, 12,221,250,227, 34,140,153, 52, 27,143,114,237,206,112, 28,164, 11, 63,
+ 25,218,127,134,135,200,210,221,215,153,227,217,177, 81, 85,136,237, 5,152, 57,121, 36,154, 70, 38,121,166,201,172,179,115,180,
+220,134, 0,102,151,122,220, 57,133, 17, 44, 71, 7, 62,206,236, 90,150,173,150,231,200,139,155,228, 12,122,221, 75, 27, 67,210,
+ 23, 74,121,178,157,209,168, 97,253, 69, 19,199,127,200,105,213,162, 41,229,112,248,200, 85, 26, 8,165,192,231,159,126,132, 79,
+ 62, 26,231,157,146,158, 61,119,221,186, 13,115, 36,158,181,191, 85,101, 63,153, 95,158, 38,135, 20, 70,129, 36,246, 60, 72, 68,
+133,198, 69, 98,207,131,206, 96, 1, 33,224,186, 4, 54,146,147,194, 72,110,122, 94, 82,233, 79,224,175,107,186, 6,212,189,120,
+ 62,193, 49,180, 96,127,193,205,196,244,152,133,145,209, 89,119, 40,165,249, 1,237,166,142, 50,154, 41, 84, 58, 51, 18,179, 52,
+ 48, 27, 41, 25,243, 94, 32,170, 13, 36, 33,139,183, 70,237, 32,132, 56, 21, 27,232,215, 53, 83,111, 30,208,185,135,245, 31,178,
+114,205,198,187, 63, 44,154,205,205,149, 27, 96,165, 20,246,118, 92,136,236,120, 69, 11, 23, 90,181, 28,235,214,255,156,105, 6,
+233, 79,175, 92, 49, 87,166,126,194, 74, 71,244,235,209,118, 47, 1,236, 8, 71,144,234, 27, 88, 53,176, 83,175,209,246,157,122,
+143,132,197,108,152, 33,246, 10,189,172,206,122,122,209, 22,205,122,117,106,131, 0, 81,170,172,103, 31, 1,128,196, 43,100, 67,
+104, 72,104,163,215,223,171, 89, 51,164,145, 45,199,189, 24,129,200,105,146,139,171,199,236,144,186, 13, 61,131,194,218, 17, 71,
+183, 42, 72,140,187,143, 61,235,231,238,180,234, 12, 11, 46,158,220,191,104,213,150, 35,131, 59,117,239,135,173, 63,125, 63, 19,
+192,165, 63,157, 71, 86,235,136,237,155, 55,249,243,237,132, 48,153,173, 48, 89,104,225, 95,179, 5,249,249, 5, 48,153,173,176,
+119,112,132,217, 74, 96,178, 88, 97, 50, 91,161, 55,152,197, 31,141,140,248, 24,192,237,210,202, 89,165,118,251,179, 2,161, 48,
+144,162,112,238, 90, 74, 41,184,102, 3,199,199,199,103, 55, 0, 8,133, 66, 8,133, 66, 88,173, 86, 68, 62,203,153,228, 17,218,
+121, 34,138, 12,158,197,104,120, 89,144,120,163, 91, 89,219,238,237,237,221,235,117,147,165,211,233,160, 82,169,112,253,230, 93,
+233,230, 29, 7,187, 39,190, 76, 13,178, 82,169,222,209, 51,168, 27,128, 94,101,237, 79, 69,230,211,143,253, 91,140,231,124,241,
+201,168,154,107,182,159,184, 19,119,230,219,153,229, 85,137,234,157,103, 24,190,152, 48,160,241,146,213, 91,226,242,111,172,159,
+ 82,209, 49,226,241,120,252,156,156,156, 87,231,247,218,159,247, 52,142,122,150,214,119,213,202, 85,246,145,241, 74, 60, 76, 76,
+199,168,206, 1,248,195, 77,160, 28, 77,137,119, 13,247, 26, 53, 66,119,175, 91,189,132, 23,151,174,195,143,135,239,224,210,175,
+ 27,174,103,102,223,238, 78, 51,211,181,111,114, 13,121, 91,163, 85,158,230,229,232, 92,168,116,102,232, 13,102,152,172, 20, 10,
+141, 9,217, 50, 3, 20, 26, 35, 84, 90, 51, 70,117, 9, 40,245,123, 21,248, 17, 15, 66,200, 9, 74,105, 79, 20, 14, 75,101, 87,
+226, 53, 8, 33, 39,138,202,245,135,215, 51,102,204,152,245,221,119,223,197, 20,175, 91,252,126,241,186,229,189, 95,226,251,110,
+ 51,103,206,172,183,100,201,146,197, 45, 90,180,216,251,251,239,191, 39,148,102,180,202,141,104, 21,111,204,201,147, 39,105, 5,
+ 79, 20, 65, 14, 78,110, 66, 39, 17, 31,213,171, 5,224,131, 89, 91,221,157, 92,189,178,237,237,120,220,211,167,207,184,230, 25,
+ 36,224,112,184,106,219,163, 88,181, 90,138, 68, 14, 39,151, 47, 95,142,161,189,218,136,146,115, 77,170,232,100,109,150,218, 0,
+179,167, 71, 45,187,133,139,151, 72,150, 44, 93,246,201,137, 99, 86, 25,128,101,165, 55,241, 53,185,199, 37, 37,114,176, 8, 1,
+181, 90, 82,243, 19,239, 52, 6,128,183,201,197, 82,233, 76,224, 22,229,214, 16, 2,104,116,102,112,185, 36, 91,246,108,255,227,
+225,223, 46,236,184,115,239,249,116,202,113, 86,170,213,137, 14,148,210,212,242, 35, 6, 4, 10,141, 9, 82, 7, 62,156, 37,124,
+ 72,197, 2,112, 75,156,100,197,205,133, 59,247,156, 75,123,249, 50,239,110,145,201, 42, 83,147,199,229, 36, 80,139, 73, 71,169,
+197,177,103, 19, 15,120, 58,219,193,199, 69, 8,161, 29, 15, 38, 51,160, 53, 88,161, 51, 88,144,148,173,133, 82, 43, 66, 88,187,
+ 65,213,221,124,238,233,221, 2,155, 28,205,123,121,183,127,185,230,212, 98,193,246,221, 7,107,166,167,103,245, 57,117,116,151,
+ 48, 71, 97, 66,116,146, 26,217, 50, 61,192,245,192,188,197, 63, 10,191,154, 50,190,239,246, 61,135, 94,118,106,211,236,101,101,
+247,171, 58,251,233,206,176,150, 17, 27,122,246,236, 43,138,185,125, 10,113,247, 47, 46, 82,101,217,158,159, 69, 8,225, 28, 56,
+112,192, 60,126,252,120,229,226,197,139,253,143, 29, 59, 86, 45, 39, 39,231, 62, 0,147,179,179,115,104,173,154,129, 15,206,157,
+ 57,237, 23,209,119, 16, 63, 53, 87, 11,169,131, 0,129,158, 14,184,121,253,172,201,206,142, 95,106,190, 73, 81,243,224,176, 42,
+157,191,194,177,155, 9,221, 99,242,236,175,140,251,112,212,203,115,215,158,229,173,221,113,238,123, 63,137,233,190,189, 53,103,
+237,189,198, 53,188,103,124, 58, 18,223,173,217,137,171,145,207,178,213, 28,159, 69, 25,122,243,249,249, 67,166,151, 17, 74, 47,
+ 52,216,142, 34, 62,212,138, 28,249,243,200,211,181,222, 81,164,122,212,185,163, 59, 57,249, 74, 19, 82,114,117, 36, 61, 95, 9,
+139,149,194,217, 65, 0,179,149, 66,150,159, 75,118,237,220,129,187,119,111,114,192,229,140, 5, 48,191,220,102, 46, 82,216, 84,
+ 40,177,231, 23, 70,132, 68,133,127, 77, 22, 43, 66,106,214,192,166,181, 43,156,220, 61,189,208,186,109, 7,219,163,212,110,129,
+ 13,246,110, 91,139, 43,191, 71,181,191,186,234,199, 38, 18, 95,143, 53, 78, 85,234,252, 32,173,214, 69,167, 55, 90, 32,151, 21,
+192,206,144,130,166,126, 57,112,117,176, 32, 73,225,131, 71,153,113,146,138,114,161,114, 31, 30,190,239, 81,175,223,156,131,199,
+ 47,125,215,173, 75,123, 60, 74, 82, 64,100,199,131,189, 29, 23,246,118, 92,240,137, 5, 43,214,111, 48, 21,200,149, 61,115, 31,
+ 29,205,125,131,250,121,161,232,233,183,240, 38,231, 21,228,177,115,205,156, 95,198, 77, 95,218,173,123,191,209,228,209,221,203,
+179, 0, 92,180,237, 65,143,218,244,158,213,106,251, 61, 78,228,228,177,122,234,156,101,147,187,246, 28, 4, 46,151, 7,147,201,
+132, 67,251,118, 98,219,143,243,158, 26, 84,121,163, 41,165, 86, 66, 92,199,239,223,185,126,208,244,185, 43, 72,189, 6, 77,155,
+149,234, 39,185,100,227,251, 31, 78, 24,226,229,229,229,248,159,136, 22, 69,173,144, 58,232,209,123, 0,206,254,122, 4,143, 99,
+162, 97,165,133,134,201,106,165,144, 21,228,101,154, 77,134,237,101,182,120,216,219, 7,110,221,182, 35,152,195, 33, 48,154,172,
+ 48,152,173,152,242,241, 7,134,143, 62,159,213,186, 71,215,118, 49,118, 92, 40,146,146, 51,156,111, 70, 61, 9,179,242, 37,254,
+ 31, 78, 91, 33,208,233, 45,144,107, 76, 56,181,165,108,175, 35,114, 13,108,209,160,101,223, 15, 63,250,122,147, 80,200,229, 24,
+235,214,242, 79,104,215,188,110, 74,128,175,187,242,155, 37, 63, 54,189,113, 59,170,199,224,225, 31,218,143, 10,109, 68,124,221,
+ 68,142, 31, 12,239, 87, 95,236, 22,240,190, 58, 47,185,204, 41,211,248, 14, 46,178,128,106, 53, 53,255,137, 24,133, 28, 38, 20,
+213,255,112,227, 36, 72,208,100, 62,235, 15, 0, 62,190, 1, 58,190,208, 73, 89, 9, 35, 66, 1, 96,205,207,123, 26, 63,136, 77,
+ 31,183,114,229, 42,135,200,120, 37,238,199,203, 33, 20,112, 96, 52, 89, 65,108, 12,106, 91, 41,119,194,236,153, 51,156, 10,212,
+ 22, 92,137,206, 65,204,189,203,212,160,210, 13,119, 48, 59,245, 23,123,133,188, 15,160, 6,128, 23,132,208,141,234, 44,239, 95,
+ 41,189, 82,233, 78, 6, 86,107,225,243,178,212,179, 70,117, 11, 79,216,131,111, 39,110, 65, 8,173, 75, 40, 92, 0,154,150, 87,
+116, 79,181,213,169,169,179, 98,177,116,241, 92,172,222,124, 4,233,121, 58, 72, 45, 41,248,117,203, 66,124,241,221,110,104,245,
+101,103, 53, 84,228, 71, 74, 51, 70,175, 27,174,226,255,139,215,251,238,187,239,122,190,118,108,122,150,113,204,254,180, 94,241,
+247,151, 44, 89,178,184,196,231, 26, 91, 77,214, 43,163, 85,188, 81, 21,108, 92, 45, 15,159,192,223,127, 61,122,216,165, 64,101,
+132,189,128,139,128,106, 53, 49,127,237,175, 30,239, 53,118, 71,174, 81,138, 61,155,126,200,215,105,148,251,108,186, 88,120,133,
+ 54,115,116,116, 60,117,248,208, 17, 4, 5,120, 10,118, 93,207, 79,140, 74,208,190, 10,245, 42,114, 94,218, 85,115,210,240,250,
+247,235,231,112,241,210,229,207,203, 50, 90, 92,194,173,242,243,142, 67,158,142, 34, 62, 8, 1,148, 90, 51,198,189, 63,224,237,
+111, 99,212,202,253,112,244, 40,144, 34,147,165,200,203,196,172,175, 62,214,137, 77,113,143,147,147,146,211, 58,247,250,226,162,
+ 66, 69,116, 67, 70,126,124,247,113,236,119, 5, 21,215, 98, 83,106,143,136, 30,130,194,200, 1,192, 37, 4, 86,106,205, 10,169,
+ 38,249,244, 79,205,133,153,250,159, 43, 50,110,202,180,103,249,142, 62, 97, 3,119, 46,159,244,179,175,151,167,155, 68, 44,162,
+ 18, 7, 33,169, 27, 26, 44,104,222,188,165, 93,181,144,250,130,235, 79,180, 72,206,209, 34, 33, 93, 14,161, 87, 67,222,208,142,
+239, 97,231,170,105,237, 9, 33,156,215,147, 20, 95,231,252,149, 91,189, 54,175, 95, 41,204,146, 25,241, 52, 89,133,204, 2, 29,
+ 50, 10,244,200,204,215, 65, 34,226,163,109,239,241,194,147,191,110,236,213,169, 77,179, 53,111,178,123, 19, 18, 18, 79, 38,165,
+101, 12,170, 31,222, 20, 59,127,217,214,198,197,165,186, 83, 65, 65,130,194,214,163,179,112,225, 66,187, 37, 75,150,240,214,174,
+ 93,171,104,222,188,185,247,204,153, 51,187,101,103,103,223,169, 90,181,106,200,217,195,219, 47, 53,108,219,167, 9,172, 70,143,
+ 54,237, 58, 8,132, 86, 30,206,157, 56, 97,220,191,111, 87,158, 86,171,252,168, 92,195,225, 32, 93,152,165, 34,240,240,243,139,
+145,216, 89,186,240, 56,178,216,252,211,159,238, 0,112,184,198,123,147, 47, 92,190,247, 44,182,113,100,146,231,165,200,231,217,
+249, 26, 99,173, 23,167,167,150,123,225,229, 18, 2, 62,151, 3, 71, 17, 15,156,162,171,170,163, 95,131,231, 32,196,163, 56,114,
+ 74, 64,138,254, 2,132, 32, 61,255,101,148, 13, 57, 27,132, 90, 41,240, 44, 85, 13,149,174, 48, 52, 95,197,221, 1, 57, 89,169,
+248,105,205,118, 68,221,187,139,174,239,245,198,186,159,119, 97,220,251,131,116, 21,169,113, 56, 69, 17,173, 18,209, 44,137,136,
+ 7,128, 64,166, 54,225,208,141, 20,212,168,206,177,249,198, 0, 0,142, 18, 7,200,149, 90,112, 4,142,120, 17,121,202,225,244,
+229,219, 51,231,124,187,242,203,130,140,232,228,231, 15,175, 35,196, 93,142,234,126, 70,196,100, 58,225, 94, 94, 53,132,212, 12,
+ 2, 71,112,215, 38,237,220,152,176,165,191,114, 14,245,108,220,176, 78,139, 64, 79,103,104, 13,150,162,168, 22, 23,219,182,238,
+ 64, 82, 98,234,135,185, 49, 71,163,222,133,163, 85,101,197,231,216,123, 5,127,242,240,246,197,132,126,195, 63,129,143, 95, 64,
+131,202,164, 45,216,242,158,197, 70,163,101, 39,118,153, 57,109,238,242,201, 93, 35, 6,226,214,245,139,184, 31,243, 2,205,154,
+ 53,193,123,125,135, 66,169,200, 15, 61,176, 99, 85, 23, 0,103,121, 66,243,228,166, 45, 59, 18,171,197,130,184,167,143, 94,148,
+166,165, 73,127,122, 31,128,211, 31,154,167, 60,106, 55,144, 72, 93,239,235,141, 22,164,165,165,226,183,223,175,132, 23,173,103,
+ 51, 66, 1, 23,231,162,178, 97, 52, 89, 97, 52, 91,209,182, 93, 23,131,128,163,111,179,104,229,214,230, 25,233, 25, 28,177,147,
+187,213,213,175,182,192, 71,104,212, 63,136,151, 11,140, 38, 43,130,124,197,229,106,122,248,214, 92, 60,109,218,148,218, 92,129,
+ 8, 74,181,222,144,145,158,230,189,105,207,101,213,147,167, 15,253,170,120, 74,157,190, 95,181, 81,160,208, 17,100,203,245,200,
+ 87, 42,200,240, 9,211,125, 55,255,248,221, 8, 0, 54,207, 77, 75, 40,170,159, 60,119, 61,212,197, 81, 64, 84, 58,179, 53, 79,
+ 97,180, 12,239,219,225,173,234, 78,145,201, 26,191,114,197, 42,135,168,120, 37, 30,196,203, 97, 47,224,194, 78,192,129,193,100,
+133, 45,167, 19, 33,132, 83,189, 94,187,143, 90, 54, 14,195,217,251,185,224,114, 57,208, 42, 11, 52, 60,228,197, 54,110,223,213,
+161, 81,211,230,232,208,190, 29,158,199, 62, 11, 56,113,236, 80,167,155,191, 93,205,148,120,134, 76, 82,101, 63, 59, 82,169,122,
+174,209,112, 77,118,222, 31,248,248, 85,109,213,127,232, 7,210,192, 0, 63,226,233,238, 6, 51,229, 97,252,251, 3,108, 62,243,
+ 11,141, 57,176,228,219,153,208,235, 13,240,112,182, 3,165,192,214, 53,243, 97, 48, 24,224,235, 38,132, 92,109, 42,243,251, 21,
+249,145,178,162, 80,149,108,134, 62, 81,154,217,122,253,125, 66,200,137, 25, 51,102,204, 2, 64,103,204,152, 49,171,248,245,119,
+223,125,167, 5,144, 94, 94,211, 97, 73,227,197, 43,185,113,101, 22,202,206, 46,196,221, 39,240,230,185,179,103,164, 71, 31, 88,
+113,235,200, 61, 68, 52,243,129,128,199,129,131,212, 23, 15, 18,229, 56,121,120,189,236,215,189, 27,211,244,122,253,178,138,219,
+154,131, 27, 59,138,157,206,254,178,115,159,213,221,205,141,243,211,185,156,248, 60,165,249, 85,147, 86,236,237, 99,214,123,103,
+ 55,249, 80,144, 51,246,246,246, 53, 13, 6,131, 75, 69, 7,118,235,185,151, 69, 73,188,228, 93, 92, 91, 65,184, 92,203,206, 93,
+ 59,225,238,100, 7,189,201,138, 25, 95,126,166, 29,213, 85, 34, 27, 62,120,104,199, 14, 61, 38, 95,226,139,131, 47,182, 12, 15,
+166, 13, 27, 54,148,113,185,220, 10,245,242, 18,238,252,169,119, 69,104, 53,135,177,179,167,143,154, 93, 74,115,161, 77,137,187,
+202,140,135, 55, 0,252, 33, 66, 66,106,212,176,219,125,224,215,207, 6, 14, 30, 50,199,175, 65, 95, 73, 98,134, 28, 2, 98, 68,
+147,218, 62,184,124,230, 8, 77, 77,138,157, 82,145,201, 2,128,236,156,124,127, 15, 15, 47, 68, 37,168,144,150,167, 69,102,145,
+201,202, 40,208, 67,169, 85,162,126,160, 47,100,114,185,255, 27,239, 95,224,200,217,179,103, 7,245,232, 51, 4,147,191, 92,208,
+122,203,250, 31,162, 37,222,181,198,168, 50, 99,175,216,242,164, 72, 8,201,255,234,171,175,106,252,252,243,207,156, 17, 35, 70,
+104,195,194,194,236, 71,142, 28,217,122,199,142, 29,246, 14, 14,246,218, 7,215,143,205, 25,251,233,140, 62,155, 86, 47,108, 80,
+ 80, 80, 64,204, 38,211,105, 99, 65,193, 12,101, 5,102, 46,249,215,153, 79, 73,157, 5,163,187,180,241, 56,230,234,192,169, 43,
+164,134,161,164,206,130,125,244,241, 60,227,139,211,107,148, 97,131, 87,124,154, 46,179,206,214,113, 60, 23, 85,100,178, 0,128,
+195, 37, 48,152, 45,112, 20,241,193,225,112,138, 77,188,207,182,125,167, 29, 60,164,118,224,115, 57,224,113, 11,163,157,185, 10,
+ 35, 62,249,160,143,205, 79, 2,102, 11,133,214, 96,134,166,232,233, 80,169,200,197,204, 47,167,226,189, 94,253, 48,246,163,169,
+ 40,208, 2,247, 18,148, 48,154, 76, 21,158, 20, 28,194,129, 70,111,198,152,174,129,200, 87, 25,161,214,154, 97, 48, 91,225, 96,
+199, 3,159,199,129,216,158, 7, 39, 7, 62, 64,169,160,248, 98,194,231,243,117, 70,163,113,103, 57,199, 9,213,252,189,160, 53,
+113,208,116,200, 15,232,220,162, 22, 98,110, 28,226, 93,189,245,176,250,231, 95,206,198,103,227,122,225,224,211, 26,112,245, 12,
+132, 68, 44,130,137,114, 0,216, 54,116, 8,165,243,172, 62,161,253,135,109,248,121,235,179,111,230,206,176,151,169, 9,132, 2,
+ 46, 46, 93,188,128,155,183,239,173,206,137, 57,186, 19,239, 16, 62,229,120, 57, 57, 57,193,222,142, 11,131, 81,111,176, 61,117,
+129,130, 2,225, 18,175,144, 13, 69, 79,252,225, 22, 43, 74,121,175, 98,163,197, 23, 73,103, 76,254,106,225,226,174, 17, 3,113,
+238,196, 65, 28, 56,184,207,210,162,251,135,220, 93,219,214,163,117,231,222,104,221,117, 8, 78, 31,217, 49,149, 47,146,214, 25,
+255,217,215,223,182,237,216, 3,231, 78, 30, 68, 86,102,234,114, 91,203,203,229,147,201, 29,187,244,130,206, 96, 65,155, 78, 61,
+113,230,248,145, 79, 81,212,201,194,246,155,216,107,215,103,112,204, 83,167, 76,230,103,203, 12,252, 28,133, 1,169, 57, 26, 36,
+102,105,240,235,222, 45,212,246,235,133,161, 73,219,250, 85,248,227,151, 94, 74,241,175,226,163,231,235,181,162,216, 23,241,161,
+ 99, 63, 24,197,175, 94, 51,148,147, 45,215, 35, 71,174, 71,174, 92, 15,149,206,140,154, 85,130, 57, 38, 51,105, 81,217,227,236,
+ 46,181,227,175, 59,158, 0, 39, 49, 31, 45, 67,223,188,163,173,213,106,253,143,201, 90, 89,104,178,162, 19,228, 16, 10,184, 16,
+ 10, 56, 16, 10,184, 48, 91,168, 77, 15, 46, 34,207, 90, 61, 62,153,244,177,175,193, 12,228,201, 13,224,113, 9, 60,221, 93,196,
+ 77, 26, 12,195,214, 31, 62, 5, 0,140,251,234, 39,140, 29, 51, 18,181,235,134, 65, 86, 80,224, 61,108, 96,143,149, 0,142,216,
+ 90,214, 83,231,174, 4,156,187, 22,245,213, 39,211,230, 73, 6,247,234,192,189, 31, 47, 71, 70,190, 30, 47, 98,149,149,138,188,
+ 1,128,217, 98, 5, 5,197,246,125, 39, 32,178,227, 33, 71,110, 4,165, 20, 11,215,238,135,163,136,143,140,130,194,230,254,242,
+ 40,207,143,148, 23,145,170, 68,180,177, 39, 10,115,185, 60,108,141,104,125,247,221,119, 49,223,125,247, 93,169, 17,178, 98,147,
+245,198,147, 74,219,217, 73, 66,221,221,124,111,157, 59,115,202,241,200, 3, 11, 46, 63,200,195,192, 54, 85,160,202, 79,198,178,
+ 47, 7,231, 19, 80, 3,135,203,149,233,181,154,195, 90,173,122, 17,165,212, 88,174,201,242, 9, 9, 23,139,156, 46,172,219,244,
+139,217,221,211, 19, 59,175,231,167, 22,168,205,166,255, 52, 91,153,200,189,179,155,170,155,173,166,238,218,204,184, 10, 31,111,
+173, 20,130,239,214,255, 10,128,194,106,181,130, 90,173,224,219, 75,196, 30, 53, 90,100, 21, 93,232,236,121, 28,162, 43,121, 5,
+160, 86,115,106, 78,124,249, 97, 80, 2, 64,234,192,199,190,171,105, 0,144,197, 85, 70, 62, 25, 62,184,176,185, 80,103,176, 87,
+212,173, 81,131, 54,105,210, 68, 38, 18,137,222,248, 96, 87,182,185,208,166, 10,244,226,133, 1,192, 82,223,144, 54,253,186, 73,
+234, 55,181,227, 8,208, 40,196, 7,151,207, 30,165,183,206,108, 29,167,201,122,246,139,141, 21, 17, 42,157, 9,233,121, 58,164,
+229,233,144, 89,160, 67,102,190, 30,153, 5, 58, 16, 66,160, 51,188,221,240, 55,234,236,103, 7,118,254,178,185,183,222,136,161,
+109,187,246,195,212,121,235, 2,119,110, 88,114, 65,228, 21,218,202,150, 68, 91, 74,169,133, 16,146,244,193, 7, 31, 52,216,179,
+103, 15,183, 94,189,122,218, 39, 79,158, 56, 0,176, 2, 48, 74, 36, 14,162, 45, 63,126,119,182,105,211,166,123,211, 98,159, 94,
+ 2, 80, 96, 75,247,252,170,237, 63, 16,134, 58,229,143, 15, 16,183,236, 22,228,237,128, 0,177,178, 91,168,228,193, 50,207, 78,
+159, 47,206,190,184, 42, 59, 67,111, 62,159,163,229, 54, 76, 83,241,109,202, 21, 52,233,117, 47,251, 15, 28, 10, 46,225,192,168,
+211,188, 44,174, 92,158, 82, 59,204,223,245, 20, 18,123, 62, 28, 69, 60, 72, 68,124,180,174,227,138, 74, 92,207,168,201, 98,133,
+ 70,111,129, 86,111,134,206, 96,134,187,191, 11,126,222,121, 0,201,217, 90,252,122, 55, 23,207, 94, 42, 17, 92, 69, 12, 74, 43,
+190, 76, 90, 45, 38,117,175, 1, 35, 28,185, 28, 2, 46,135,112,234,132,214, 66,190,202, 8, 1,143, 3,129,189, 8, 98, 33, 15,
+ 78, 34, 62, 4, 2, 62,178,179,179,161,215,235, 17, 16, 16, 96, 95,190, 21,164,112,148,136, 16, 92,221, 23, 70,147, 25,167,174,
+ 61,198,162, 41,253,209,165,109, 99, 16,190, 4, 79,245,225,112,116,117,132,149,195,129,209,108,133,193,104, 1,192, 41, 51,250,
+ 22, 16, 16,208, 81, 44, 22,139, 53, 26,141,242,229,203,151, 87, 50,158, 30, 78,246,172,219,119,252,153,115,151,118,246,124,175,
+ 11,162,162, 99,112,240,200,177,235,185,110,242,105,197,223,169, 87,175, 94,115,119,119,119, 73, 94, 94,158,226,225,195,135,119,
+222,240,233,151,136,189, 66, 63,111,209,186, 61, 84,178,108,100,165, 36,218,252, 20, 93, 59,208, 17, 95,127,183,174, 81, 72,173,
+144, 70, 22, 90,104,188,234, 4, 56,226,139,121,107, 26,213, 8,174,213,168,184, 67, 72,237, 0, 73,249, 38, 75,236,212,245,253,
+241, 95,124,215,123,224,104, 92, 58,119, 12, 43, 22,125,185, 83, 44,245,168,237,234, 34,109, 88,175,121, 87, 92,191,112, 12,246,
+142,222,112,113,243,110, 61, 98,204,164,206, 3, 71, 76,192,205,235, 23,176,122,201,172, 29, 22,189,114,183, 45,101,149,120, 5,
+121, 52,108,210,118,184,163,171, 23,100,114, 37, 28, 93, 60, 81,187,126,147,225, 18,175,160,175, 84, 89,241, 57,111,122,174, 91,
+ 41,133,222, 72, 81,160, 50, 34, 37, 71,139,164,204, 66,163,101,181, 86, 34, 39,200, 98, 37, 18,123, 30,207,213,244, 60,224,225,
+133, 75, 52,208,223,139, 44,253,246, 75,174, 17,246,200,145, 21,154,172, 28,133, 1, 57,114, 3, 84, 58, 19, 92,197, 60, 88, 45,
+214, 74, 63,117, 23,168,140,112, 44,202,163,181, 88,223, 60, 55,124,253,182,125, 33, 15, 98,211,251,174, 88,177,202,225,126, 66,
+ 9,147,197, 47,140,102, 9, 5, 92, 88,172,214,162, 59, 77, 5, 6,155,199,159,220,167, 71,103,164,228,106, 11,123, 45,115, 8,
+130,195,154,194, 93,100, 69,167, 33, 51, 0, 0,189,122, 20, 14, 95,146,144,161,198,241, 91, 57,192, 31, 19,187,203,191, 22,107,
+181,220, 77,187, 78,126,126, 96,255, 94,169,206,194,195,198,211, 73,208,232,205,176, 23,112, 33, 20,112, 33, 18,112,255,144,143,
+ 93,177,209, 42,204,185, 75,206, 53, 65,163,211, 65,161, 53,129, 2,184,243, 92, 5,173,193, 12,185,218,132,230,161, 46,111,251,
+236,115, 18, 64,196,235,134,232,117,179, 84, 34, 34, 85, 26,119, 75,106, 20,175, 95,150,145, 43,153,179, 5,160, 82, 61,184,120,
+175, 59,199,146,175,237, 36,174,181,165,110, 30,183,206,156, 62, 33, 57,242,192,138, 43,209,133, 38,203,164,205,197,242,175,134,
+165, 42,100,185, 29, 40,165,241,182,254,152,216,163, 78,125,145,131,195,165,239, 87,109, 52,122,122,249, 89, 15,223,146,101,203,
+ 53,150, 63,196, 16, 45,122, 61,135, 90,169,192, 22,147, 85,212,228, 97,156,247,105, 63, 88, 41,197,252, 85, 7,176,120,218, 16,
+ 72, 68, 35, 28, 8, 33, 14,106,157, 25, 83, 22,108,198,242,175, 63,116,116, 16,242, 64, 8,160, 51, 88,240,254,208,126,182, 85,
+ 64,157, 25, 47,110,239, 81, 41, 19, 78, 60, 41,217, 92,216,172,245,123,247,154, 53,107, 38,115,113,113,129, 72, 36,250, 79,164,
+194,198,139,118,105,189, 11,179,101, 72,117,116,116,108,231,228,228, 84, 82, 79, 45,147,201,142,190, 73, 45, 84,202,114, 47,101,
+ 38, 61,108,218,170, 67, 47, 92, 57,123,148,222, 58,189,101, 92,101,198,232,113,113,117, 73,137,124,248,162, 54, 33,174,133, 17,
+173, 34,147,101, 48, 89, 17,232,229,128,148,164, 23,112,150, 74, 83,108,213,115,240, 12,237, 67, 56,244, 35, 2,186, 85,149, 25,
+123,160,200,244, 12, 19,123,135, 70,199, 60,186,191,168,231,240,201,188,174, 3, 63,230,110,248,110,210, 44,188,150,196, 90, 14,
+198,103,207,158, 61,254,240,195, 15, 91,222,188,121,211, 2, 64, 67, 8, 49,113,185, 92, 7,131,193, 32,232,208,161,131,252,233,
+211,167, 87, 81, 74,210,226,235,180, 25,115,208,157, 8,149,239,213, 8,110, 50, 44,208, 81,217,165, 67,155, 22,104, 81,215, 31,
+ 41,109, 90, 0,192,228,151, 42, 73, 72,235,137, 91,246, 85,247,168,114,106,195,182,227,139,199, 13,233, 60,197,183,215,130, 21,
+233,199,231,149,155,136,154,252,248, 74,183,210,108, 60,143,203,129,163,136, 15,137,136, 7, 71, 17, 31,142,246,124,152,204,180,
+ 50, 79,142,212,100,182, 22, 70,180, 12,102,168,180,102, 92,186,159,133, 76,185, 1, 50,165, 17, 90,163, 5, 20,180,240,105,212,
+134,171,121,118,220, 13,231, 87,199, 62,176,145,124,211,218, 31,156, 14,221, 72,125,213,163, 79,234, 96, 7, 71,135,194,222,216,
+215,174, 93,131,155, 91,197, 79,251, 86,171, 21, 7,207,220,193,138,237,151,112,102,235,116,216, 11,184,168,223,103, 1, 70,247,
+109, 6, 43,181,226,197,179,152,172,224, 58, 13,188, 56, 28, 17, 56,132, 64,111,178, 2,160,101,238, 79,131,193,224,150,156,156,
+172,168, 89,179,166,183,159,159,223, 64, 46,151, 75,133,128,254,232,222,124,205,197, 19,187, 29,212, 90,189,197,193, 44,223, 90,
+ 51, 67, 27, 17, 28, 28, 12, 66, 8,117,119,119, 23, 92,186,116, 73, 21, 22, 22,230,241,134, 38,139, 35,242,172,181,122,236,196,
+207, 7,214, 8, 10,194,129,221, 91, 65, 41, 57,100,235,247,119, 29,191,137,111,103,254,177,135,225, 23,243,214, 52, 90,190, 96,
+242, 31,222,155, 56,115, 69,185,189, 14, 69, 66,201,180,254,195,198,227,222,157,223,177,108,193, 23,123,245,170,252,209, 38,179,
+105, 80,126, 70,194,222,234,117,154,129, 26,149, 56,183,255, 7, 12, 25, 57, 78,216,181,231, 64,220,188,126, 1,139,103, 77,220,
+165,145,101,127, 96,235,248, 95, 86,202,255,168, 67,183,190,124,173,222,136, 53, 75,231, 98,194,180, 69,104,222,177, 23,255,209,
+253, 91, 31, 1,248,198,214,109,214, 27, 45,232, 16,230, 94,104,158, 77, 86, 28, 75,224,242, 74,171,129, 60, 46,225, 52, 12,114,
+134,214, 96,134, 66, 99, 42,255, 70, 37,224,103,202,228,138,170, 63, 46,254,156,171,214,153,145, 35, 55, 32, 91,174, 71,174,236,
+ 63, 6, 43, 87,174, 71,142,220, 0, 62,143, 32, 54,254, 37, 56,124, 94,165,243,243, 10, 84, 38, 52,173,229, 82,120,142,190, 97,
+235,136,137,231,212,236,204,213, 7,253, 87,172, 88,105,255, 32, 81,137,232, 4, 69, 81, 36,139, 11, 33,159, 3,187,162,255, 45,
+ 86,160,162,159,144,122,214,168, 62,234,195,113,157,156, 36, 34,164,199,101,131,199, 45, 28, 34, 70,234,233, 15,169, 80,135, 73,
+ 19,199,195,221,205, 25,201,185,122,172, 62, 18,139,232,199,207, 97,213, 86,110,179,215,108,220,219,125,236, 39, 95, 56,115,248,
+118,216,113, 54,177,176,156, 92, 11,158,222, 58,174, 75,127,241, 80,173, 82,228, 81, 80,139,141, 1, 0, 66,205,150,194,234,182,
+120,254, 12,236,221,254, 19,206, 70,102,191, 74,222,186,113,104, 57, 62,159,185, 16,185, 10, 67, 81,213, 47, 63,146,245,218,235,
+156, 18,145,168, 63,189, 46, 97,142, 74,123, 77,138, 94, 27,202,208, 48,188,102,174, 12,175,189,111,120, 77,239, 65, 41, 15,255,
+155, 42,108, 58,252,147, 41,114,241,172, 39,117,148,254,126,250,244,113,241,209,104,250,202,100, 25, 53,185,116,209,228, 94,169,
+ 10, 89, 78,215, 74,153, 44,207, 90,245,132, 98,241,213, 57, 11, 87,235,189,252,170,154, 79,221, 87,228, 41,117,150, 63,133, 69,
+ 4, 14, 98,139, 88,234,161,115, 14, 12, 95,193,215, 26,230,230,228, 60, 86, 87, 20,121,178, 82,138, 19,183, 51, 65,105,225, 35,
+210,254,107,105, 40,122, 50,135,197, 90,216,172,114,254,126, 54,120, 69,121, 40,182,134,191,215,111,252, 73, 17, 17, 38, 87, 15,
+ 95, 60,255, 85,115, 97,243, 6,133,145, 44, 39, 39, 39, 56, 59, 59, 67, 34,145,192,150,166,195, 98,202,234, 93,232,232,232,216,
+238,254,253,251,246, 78, 78, 78,224,114,185,208,235,245,168, 91,183,238, 27,157,232, 18,239,208, 79,154,118,236, 55,171,117,199,
+ 94,184,116,230, 48,189,117,102,219,248,202, 14,132, 24,209,185,229,241,111,191,157, 95,125,206,162, 31,133,142,246, 60, 60, 81,
+ 25,192, 33, 4,129, 94, 14,112, 19,115,112,229,232, 14,221,144, 94, 45,109, 30, 28,207,223,223,111,231,242,181,155,196,203,151,
+ 44,232,224,232, 23,114, 73,153,246, 44, 31, 0,212,153, 79,151, 58,120,135, 62,174,242,251,185, 83, 13,218,245,131,151,111, 80,
+151, 74,132,127, 41, 33, 68, 19, 31, 31,159, 48,103,206,156,144, 37, 75,150, 80, 46,151,107, 5, 32, 92,181,106,149, 38, 46, 46,
+238, 62, 10,187,230,162,162,155, 77,167, 46,117,167, 72,236, 44,205, 93, 29, 56,117,131,188, 29,208,162,110, 97,171,232,144,136,
+214,240, 15, 8, 64,124,166,166, 97,190,198,202, 87, 25,184, 65,235, 54, 70,223,173,230,206, 29,103,214, 26, 30,163,130,193,100,
+203,170,179,197, 9,242,197,209, 44, 71, 17, 31,214,194, 27,123,165,140,150,222,104,129, 86,111,129,214, 96,134,218, 96,129,198,
+ 96,129,149, 22,158, 19,132, 16, 24,205, 86,216,244,216,252, 90,221,119,114,117, 71, 80,181,194, 94,178,142,162,194,161, 30,156,
+ 28,248,133,125,164,221,220,224,233,233,105, 83, 84,212, 96, 44, 60,197, 13, 38,235,171,102,125,131,209, 12, 74, 41, 98, 99,159,
+ 77, 79, 74, 72,232, 83, 51,184,102,219, 58,245, 27,184, 58, 8, 57, 0, 80,166,209,210,104, 52, 22, 71, 71, 71, 79, 87, 87, 87,
+ 78, 90, 90,218, 43,243, 92,179, 97, 7,243,145,195,135,208,191,127, 63,213,147, 59, 15, 94,117,113,215,106,181,164, 85,171, 86,
+ 78,254,254,254, 28,189, 94,175,168,220, 62, 32, 68,236, 81,171,175,127,104,203, 69,239,127, 48,161, 86,135,206,221,113,249,226,
+ 57,252,122,120,207, 47,234,236,103, 54,143,156, 29, 18, 18,250,167, 94,135, 53,130,107,253,169,215, 97,213,234,193,229, 26,173,
+ 58,245,155, 52,163,132,135,179, 39,246, 83, 29,199, 56,177, 48,225,157,236,223,183,254,235,111,134,125, 52,179, 70,143,222,195,
+240,254,200,209,224,241,184,184,114,254, 56,150, 47,152,122, 82, 37,207, 30,101, 75,154, 0, 0,144, 58,117, 4, 53, 3,170,126,
+ 22, 80,163, 30, 34,111, 93,199,139,216, 71, 49, 15,238,222,172, 91, 51,172, 57, 60,124, 3, 63, 35,117,234, 44,161,143, 31, 27,
+ 43,210, 49,232,116, 47, 71,143, 26,137,146,189, 14, 91,132,135,184,145,215, 79, 0, 0, 26,101,182,113,203, 15, 83,226,138,123,
+ 29, 90,141,134,151,101,233,202, 11,114, 14, 94,249,237,246,180, 62, 17,221, 57,185, 10, 67, 97, 4, 75,110, 40, 90,244,200, 45,
+254, 95,161, 71,176,175, 4,207, 98, 34,173, 58,121,238,161, 74,158,151,186,209,131,186, 61, 46,174,187, 86, 43, 5, 1,116,149,
+ 61,191, 41,223,105,252,210,101, 43,236, 31, 36,168, 16,157,168, 40,108, 42,228,115, 11, 13, 22,159,243,202,116, 21,246,102,175,
+ 32, 58, 68,184,139,199,140, 26,138, 92,133, 17, 86, 43,192,227,114,138, 22, 1,146,149, 4, 41, 74, 13,114, 11,114,144,144,244,
+ 18,178,204, 23,224,112, 56,112,247,173, 5, 91,195,143, 22,106,231,163, 49,208,176,129, 17,109,121,135,127,207,128,131,144, 7,
+189, 50, 11,167,247,253,144,163, 87, 41, 22,105, 53,170,195,218,188,184,116, 91,183,157, 67, 72,142, 66,165,243, 18,242,185, 56,
+176,253, 71, 12, 26, 61,177,104,167, 20,254,153, 62,251, 91,128, 67,144, 95,160, 4, 33,164,178, 81,210,187, 21,188,126, 19,222,
+133, 6, 74, 51, 87,127,120, 80, 40,251,105,148,158, 62,119,230,184,248, 70,146, 16,119,158,101, 20,153,172, 28,235,194, 79, 35,
+ 82,149,242,252,110,148,210,216, 74,149,128,195,233, 54,100,204,180,152,160, 90,117,244,151, 31,169, 18,101,106, 83,153,121, 14,
+ 45, 6,206,137,185,119,114,109, 15,185, 41,254, 99,137,111, 93,139,213,108, 94,170,201,126,182,160,140,166, 67,187, 5,171, 15,
+188,106, 54,252,106,201,142,194,255, 45, 22, 88,168, 21,212, 10, 76,250,122, 61,204, 86, 11,172, 22, 11,172, 22, 10,147,133, 58,
+ 84, 84, 92, 79,223,170,135, 11,158,238, 15, 29,254,205,159,155, 11,157,157,157,225,230,230, 6, 55, 55, 55, 20, 27,163,183,109,
+ 46,116,114,114,130, 68, 34,193,245,235,215, 33, 18,137, 32, 22,139, 43,165, 91,194,100,125,220,164,125,159, 31, 59,246,254, 16,
+231, 15,111,164,119,175, 29,159,160,201,122,182,217,230, 8,189,197, 66, 76, 38, 19, 34,186,182,127, 25, 21,243,252,204,236,105,
+ 31,117,111,217,115,130,176, 69,136, 31,116, 6, 11, 82,147, 94,224,202,209,109,186, 90,213,125,206,118,106,211,236,165,201,100,
+130,197, 98,169,240, 70,174, 51, 24,115,185,124,145,120,232,208,225,252,187,119,238, 28,146,120,214, 58, 96, 33,156, 7,132, 90,
+235, 19, 66,250,215,175, 95, 27, 70,147, 21, 26,141,162,160,178,219,172, 84, 42, 19,182,110,221, 90,125,212,168, 81, 14,117,234,
+212,225,191,120,241, 2,203,151, 47,207, 83, 42,149, 9,182,106,156,187,246,108, 21,143, 20,196,217, 89,141,195, 2, 29,149, 93,
+146, 91,183,192,208,158,173,177,247,228, 13, 92,185,126, 19, 47, 85,146,251, 42, 51,239,104,202,203,116,125, 93, 87,197,161,222,
+ 45,170,114, 15,108, 47, 56,228,217, 97,230, 96, 74,133,231,114,174,204, 83,219,126, 19, 7,148, 90, 19,156, 28, 10,199,123, 42,
+142,108,113, 9,177,217, 17, 17, 32,225,250,205,200,122,141,131,235, 32, 42, 65,142,108,153, 30, 90,189, 25, 86, 43,133, 21, 20,
+110,142,118,176, 23,112,144,156,148, 0, 43, 53, 38, 86,242,114,145,211,174,109, 59, 30, 64, 64, 8,229,241,121, 60, 80, 20,142,
+175, 40, 18,137, 84,158,158,158, 54, 69,180,140,102, 51,250,119,111,134,230, 77,234,163,207,132,194, 49, 51, 47,254, 50, 3, 46,
+ 18, 62,246,238,220,140,228,171, 43,119, 6,181,156,120,238,209,195,152, 1, 49, 81,191, 15,127,175,145,168,161, 55, 47, 93, 80,
+150,158, 74,165, 58, 68, 8,177, 19, 8, 4,221,219,182,109,235,122,232,208, 33,153,187,187,187,213, 78, 32,200,233,221,171,167,
+149, 47, 16,228, 23,175,251,219,111,191,241, 39, 76,152,224, 88, 80, 80,144,156,149,149,117,147, 82,106, 42,255, 65, 48,180, 51,
+ 56,216, 3, 66,236, 37, 34,135,151, 45, 58, 15,245,109,210,188,153,180,111,255, 65, 16,218, 9,113,254,220, 25,172, 89,185,100,
+191, 42,227,201,152,202,236,201,119,213,235, 48, 53, 57, 49, 65,163,213,135,213,107,220,158, 92, 63,119,116, 50, 33, 30, 43,185,
+ 66,167, 31, 58,247,159, 88, 35, 33, 93,133, 53,223, 77,135,139, 84,140,196, 23, 79,181,113, 79, 30,174, 55,233, 20,211,109, 53,
+ 89, 0,224,144,103, 25,208, 98,100,119, 23,189,209,130,107,151, 78,234,172,102,107,247,155, 87, 79,189,168, 82,171,137,125,189,
+ 38,157, 92,114,127,221,220, 31,192,222,138,116, 82,159,252, 57,130, 27, 16,210, 52,241,226,165, 11, 82,175,192,186, 92, 2, 2,
+163, 94,135,156,248,187,102, 77,214, 83,133, 60,245,161, 77,189,112,243, 82,240,245,204,121,223,127,220,164,113, 99, 49,133,253,
+ 31, 34, 88,197, 6, 43, 87, 97,128,187,163, 29,180,138, 28,196,221, 61,163,211,228,112,203, 29,239,204,108, 80, 59,228,102,103,
+189,106, 98, 83,101, 61,107, 94,222,250,185,217, 89,118,102,131,218,161,226, 91, 29, 23, 78, 98, 59, 60, 76, 76,123,149,248, 46,
+228, 23,230,102,217,241,185,175,242,180,138,175, 5, 21,208, 94, 96,239,140,180, 60, 29, 8, 40,172, 22, 51,204, 38, 3,148, 10,
+ 5,210,210, 51,145,149,153, 5,165, 82, 6, 7,137, 11,234, 53,108, 10, 71,177, 61, 30, 92,217, 15, 74,169, 77,227, 26,154, 8,
+ 63,164, 73,243, 54,194, 71, 73,133,185, 88,246,124,138,227,123,150,228,169, 20,217,109,148,233,177,113,149,189, 22,155, 45,150,
+ 11,209,143,227,234, 86,241,169, 70,238,191,144, 99,231,207,107, 97, 40,138,108,154, 76, 22, 60, 74, 86, 35, 35, 95,131,228,248,
+ 39,212,106,177,252,107, 38,164,230,149, 29, 0, 4,175,126,189,218,232, 58,162, 47,126,250,105, 61,226, 19,146,172,139, 38,247,
+ 72, 86, 41,101,239,217,106,178, 74,206,238,173,206,124,186,116,204, 79,137,169,199,162,242, 57, 90, 67,249,243, 91,217,123, 4,
+162,205,152,229,103,181,202,124, 59,139, 94,195, 59,190,115,204,158,210, 52, 11, 29, 52, 12,139,190, 24, 2,137,136, 7, 66, 8,
+138,155, 11,215,125, 59, 30, 14,194,194,182,101,173,222,140, 17, 83, 86, 96,231,138,169,160, 0,134, 13,186,161, 41,171,156, 37,
+154,246,170,188, 76,202, 78,235,220,235,139,139, 58,163, 80,223,179,223,168,123,141, 27, 55,150,137, 68, 34,136, 68, 34, 56, 57,
+ 57,193,197,197, 5,206,206,206, 21,110,123,153,131,145,150,232, 93,200,225,112,192,225,112, 32, 22,139, 33,145, 72, 32, 22,139,
+203,213, 44,211,100,181,235,189,174, 83,159,177, 56,127,120, 19,189,123,237,248, 71,154,172,103, 63,219,122,140,138,154,123, 30,
+244,239,223, 63,108,194,132, 9,130,121,211, 38,156, 61,121,238, 74,236,129, 19,155,122, 21, 20,200,252, 41,165,112,150, 74, 83,
+134,244,106,121,188, 67,171, 38, 47, 47, 94,188,104,221,179,103,143,158, 16,242,176,162,114,230,102,103,255,114,241,194,165,249,
+109,218,181,199,230,237,123,218,197, 60,126,210,238,197,139, 56,248, 7, 6,161, 90,245, 96,104,136, 11, 46, 93,189, 14,149, 44,
+251, 23, 91,202,249, 90, 84,139, 20, 20, 20,252, 62,100,200,144,174, 55,110,220,224, 12, 25, 50, 68,147,155,155,251, 91,241,115,
+ 84, 89,209,172,146,154,191,175,239,155, 3,224,151,170,237, 63,216,159,102,148,125, 6, 96, 73, 64, 96, 0,174, 92,191,137,155,
+ 55,110,175,207,117, 8, 88, 48,102,196, 7,227,171,246,230,142,237,221,162, 42,215,211,197, 1,187, 55, 45,231, 30,187,153,180,
+ 34, 41,207,178, 25,192,183,182, 28,163, 87, 55, 14,165, 17,173,106,187,194,100,161,176,210,194, 11,174,163, 61,191,212, 11,111,
+105,154, 60,131,112,204, 71, 19, 38,188,168, 87,191,225,231, 35, 62,248, 72,208, 48,200, 31,119,158,203, 0, 66,224,234, 45, 70,
+ 70, 70, 6,174, 29,220,100, 46, 72,123,186,158,203,181,126, 83,153,186,148,159, 20, 85,179,196,122,227,115,115,115,113,229,202,
+ 21, 20, 27, 44, 15, 15,143, 82,141,214,235,154,121, 89,233,191,125,187,108, 99,171,113,239,247, 67,207,246,117,113,245,238, 11,
+ 24,138,198,107, 42,238, 74,158,112,115,131,221,103, 67,130, 12, 31,247,175,165,208,154,236,146,190, 78,148, 95, 43,217, 43,246,
+117, 77, 74,169,129, 16,114,236,217,179,103,173, 27, 52,104, 80,245,212,169, 83,249, 49,183,207, 78, 46, 89,142, 47,190,248, 66,
+242,211, 79, 63, 57, 80, 74,127,211,235,245,241, 54,109, 59, 7,187, 35,239,221,115, 51,154,172,184,126,251, 65,237, 78,173, 26,
+194, 74,129,187,119,239, 98,243,150,205,186,135,209,247,127, 80,103,121,127, 83,150,121, 41,107,127, 90,222,162,215, 97, 73,205,
+140,180,164, 31,206,159, 60,184,179, 73,187, 94, 24, 62,233,155,111,174,156,220, 51,191, 81,155,158,156,218, 77,186, 34,242,230,
+ 37, 92, 56,117,230,123,163, 42,127,126, 69,243,144,150, 85, 78,161,200,225,211, 58,141,218, 33,249,101, 18, 18,227, 30,253,162,
+205,139, 75,151,120,135,254,146,158,250,242,163,234,117, 91,225,198,217,189,147,203, 50, 90, 21,213,121,127, 15,209,166, 83, 39,
+142, 13, 77, 77,221,224,173,214,234,132,148, 82,157,208,142,151, 41,225,148,221, 67,253,207,199,253,177, 81,236, 90,173,255,160,
+ 17, 31,157, 92,179,102, 37,223,203,217, 1,153, 5, 58, 40,180, 70, 40, 53, 70,112, 8, 65, 77, 95, 49, 52,202,124, 92, 61,184,
+204,100, 80, 21, 12,161,244,185,177, 44, 77,137, 87,232, 66,128, 78,250, 98,226,101,216, 73,253,125,171,119,154, 85,110,180, 78,
+153, 30,221,235,139,137,199, 67, 40,165,157, 36, 94,161,202,226,185, 14, 75,219,118, 66, 10,207,239,225, 29,252, 97, 52, 23,142,
+ 63,102,182, 2, 22,171,181, 40,202, 7,208, 87,237,249,164,130,109, 39,214,125, 39,127, 67,122,150, 12, 90,131, 9,122,131, 25,
+ 70,147, 5, 28, 46, 23,206, 46,206, 8,174, 22, 14,169,179, 19,178, 50,211,113,243,226, 49,196, 70, 95,253,141, 80, 44,208,100,
+199, 94,180,229, 24, 9, 68,206, 33, 62,190,222,156, 12,133, 1, 34, 59, 46,238, 95, 61,101, 52, 25,244, 63,216, 98,178, 74,211,
+148,229,229,175,248,124,218,151,195,182,109,221,238, 29, 86,221, 9,169,185, 90,164,230,232,160,212,153,138,140,152, 21,122, 85,
+ 46,162, 47,109,207,180,232,148, 43,254,245, 70,203,108,212, 41, 15,157,185,227, 54, 99,254, 50,238,243, 23,241,166,133,159, 69,
+164,106, 85,138, 30,149,142,100,149, 96,235,199,213,246, 86,238, 27, 69, 67,154,124,147, 84,254,243,247,235,205,133,212, 10, 43,
+165, 56,126, 59,243, 85,115,161,181, 40,243, 50,234,133,172, 82, 77,123,209,207,148,187,180,218, 44,233,211,231, 63, 20, 0, 0,
+151,203,125,181, 20,231, 82,233,116, 58,195,155, 52, 23,190,158,248,110,181, 90,225,228,228, 4,145, 72, 84,233, 38, 73,177, 87,
+200,208, 38,237,251,252,216,169,239, 56, 92, 56,242, 51,189,123,245,216, 68, 77,246,179, 77,149,206, 81, 40, 40,136, 33,132,196,
+253,240,195, 15, 13, 55,111,222, 92,125,218,180,105,241, 59,126,156,191, 6, 0,242,242, 10,231, 0,142,138,138,162, 19, 39, 78,
+212,235,116,186,132,130,130,130,200,138, 58, 64, 0,128, 54,199, 97,241,230,117, 75,234,165,164,101,244, 11,170,215, 20, 30,213,
+155,194,187,102, 51, 20, 40,141,184,243, 60, 29,241, 79, 46,226,201,245,131,167, 52, 18,243,252,202,150,185, 65,131, 6,254, 28,
+ 14,167,154, 74,165,242,174, 83,167, 78, 3,177, 88, 28,213,160, 65,131,112, 30,143,151,122,239,222,189,164,202,104, 37, 93,217,
+166,175,218,254,131,213, 47,149,142, 29,226, 51, 53,225, 47,149,142, 81, 26,161,116,106,246,197, 85,122,175,174, 63,172,160,198,
+220,152, 3,219, 21,135,118,111, 90,206, 29, 49,254, 11,203, 35,185,203,103, 60,145,221,249,239, 70,135, 85,162, 89,138,147,241,
+241,168, 62,255, 25,222,161, 40,146, 85,244,191, 77, 97,122,153,236,129, 28,192, 87, 34,223,186, 63, 62,250,108,194,183,245,155,
+180, 26,217,246,189, 33, 28,179, 64,130,179, 71, 54,208,132,232, 75, 7,120,212, 50, 91, 99,195,108, 0, 21, 54, 7, 25, 12, 21,
+154,172, 82,155,123, 82,196,237, 15,236,217, 50,250,208,145,195,223,245,237,221,199,109,221,215,131,177,108,227, 81,136, 69, 66,
+ 80,171, 21, 67, 58, 6, 12,124,178,167, 91, 47,127, 47,123,191, 67,151, 83,175, 77, 90,249,232, 43,141,198, 24, 91, 81, 36,166,
+200, 56, 95,119,116,116,204,105,221,186,117,115,161, 80, 72,114,115,115,121,158,158,158,102,169, 84,106, 72, 77, 77,213,232,245,
+250, 67,148, 82,117,101,182,211,104,178, 34, 49, 75,135, 95, 15, 31,194,131,219, 23,241,228,201, 51,229,147,199, 79,214, 18, 30,
+ 93,169,202,140,205,127,147,125,103, 45,181,215, 33,173,116,175, 67,139, 94,185,123,199,250,133, 29, 53, 58,253,232, 6, 45, 35,
+ 80,181,118, 43,142,209,100,193,195,187,151,113,249,224,202,101, 6,101,222,140,183, 57,198,190, 85,170, 7, 83,174, 29,126,191,
+114, 18,212,106, 93, 15, 0,212,106, 93, 31,117,227,212, 71,205,122,140,133,171,103,213, 6,132, 16, 82,217,249, 30, 1, 64,192,
+227,168, 79, 31,218,118, 36, 49, 49, 17, 79,159, 62,197,243,231,207,145,159,159,143,221,187, 19, 43,117,124,212,249,137,231, 37,
+110, 65,221, 6, 12, 30,126,124,224,208,247,237,171, 7,135,113, 66,170,184,192, 77,194,195,179,231, 73,136,189, 23,109,125,118,
+231,148,206,168,200,238,171,201, 79, 44,211,248,137, 61,234,120, 17, 14,157, 81, 60,119, 97,139, 22,173, 66,190, 92,244, 93,115,
+ 55, 15,207, 82,175,227,121, 57,217,118,211, 39, 29, 11,185,121,235,119,155,230, 58,180, 90, 44,121,227, 71, 15,177,114, 11, 39,
+ 10,197,171, 56, 53, 41, 60,216,133, 15, 83,133,239, 83,171,185,194, 8,254, 7,253,218,192,108,181, 66,173, 53, 66,161,214, 67,
+174,212, 33, 35, 59, 15, 15,162,163,113,245,248, 49,188,120,246, 32,193,100, 48,156,227,112,200, 65, 77,230,179,171,149,107,105,
+226, 85,119,115,117, 69, 66,190, 10,246,118, 60, 36,197,222,211,171, 21,242, 93,111, 90,143, 52,185,177, 25, 98,175,144,174, 67,
+134, 12, 61,211,177, 91,111,105,147,150,157, 29,220,157,156, 33,224, 81,196, 37,166, 35,242,183, 51,234,248, 7,215, 20, 38,131,
+170,251,187,152,245,229,127, 25,155,122, 29, 26,245,234, 94,195,250,180, 59,204,229,242,236,172, 86,179,222,104,208, 15,120, 27,
+147,245, 87, 65,169, 37,117,244,176,126,127,120, 54, 48, 91,169,104,216,160,179,218,146,207, 10, 38, 11,117, 24, 54,232, 55, 77,
+225, 5,164,236,196,190, 87, 77,123,123,207,167,190,124,153,119, 55, 63, 95,127,249,109,123, 2,150,156,187,176,156,222,133,234,
+208,208,208, 87,230,138,203,229,194, 98,177,216,124, 33, 18, 8, 69,227, 58,246,254,144, 92, 56,250, 51,189,115,229,232,199,154,
+236,216,141,111,209,206,108, 4,112,155, 16,242,104,246,236,217, 77,188,188,188,188,230,206,157,107,175, 80, 40,248,235,214,173,
+211,229,230,230,102, 42, 20,138,155,148, 82,173,237,154,145, 38, 0,253, 37, 94,181, 58,208, 67, 63,119,113,118,247,235, 42,245,
+168, 82, 67,150,147,150, 32,207, 73, 63, 7,224, 66,209, 64,145,149, 34, 60, 60, 60,136,195,225, 12, 1, 80, 79, 44, 22,215,148,
+ 72, 36, 66, 74,105, 40, 33, 36,198,106,181, 70,215,169, 83,231, 4,128, 74, 29,191,164, 43,219,244,109, 63,222,178, 39, 95, 99,
+ 21, 24, 56,130, 61, 73, 87,182,233, 1, 32,235,220, 52, 13,128, 95,189, 58,204,232,127,236,102,210,154,152, 2,233,228,236,203,
+139,143, 85,182,204,178,148,251, 53,223, 85,253,215,166,199,164, 2, 24, 45,246, 10, 89,254, 48,234,230, 60, 66,193,183,192,188,
+ 80,147, 21,119,239, 93,232,243,249,124,157,159,159, 95,169,189, 11,133, 66,161,174,252, 99,126,197, 12, 96, 51, 33,237,183, 31,
+222,191,125,244,209, 99,191,126,215,182, 83, 95, 55,251, 42, 85, 80,205,147, 96,251,140, 70,147, 47, 70,229,220,233,253,229,181,
+159,226,211,117,209,148,210, 74,229,195, 40,149,202, 88, 66, 72,129, 74,165,234, 67, 41, 77, 33,132,248, 23, 20, 20,220, 55,153,
+ 76, 15, 43,109, 8,172, 24,222,162, 69,211,221,132, 16, 30, 53, 91,151,222,228,115,247,232, 50,158,164,190,137,177, 40, 73, 88,
+ 53, 39, 76,153,187,186, 81,141,154,181, 26, 21,207,117, 88,183,170, 35, 38,124,181,188, 81,213,234,193,141,254, 51,255,161,164,
+162,115,146, 18, 66,198, 28,222,178,244, 90,212,173,203,179,220,125,170, 86,205, 76,141,127,146,242,252,254,183,102,173,252,240,
+219, 30,231,196,231, 49, 43, 55,255,240,213,180,140,180,132,205,234,236,216, 71, 0,160,206,142,125,228,224, 85,235,235,220,204,
+212,105,121,217,241, 63,188,233,190, 80,171,213,233,187,118,237,114,110,213,170, 21,199,203,203, 11, 57, 57, 57,184,124,249,178,
+213,106,181,166, 85, 86, 75,149, 23,127,153,144, 26,174,191,108,252,113,169, 64,236,216,195,108, 54,251, 82, 10,240,120,188, 12,
+131, 70,113, 70,201, 17,127, 73,243, 19, 43,168,151, 86, 2,128, 83, 60,119,161,213,106, 37, 75,215,108, 79,226,219, 59,150, 58,
+ 63,162, 73,167,116,176, 90,173, 54,207,117, 88,240,242, 94,141,119,118,179,166,116, 65,131,198,205,103,153, 76, 70, 29, 10,243,
+197,116, 0,116,148, 34,143,195, 33, 87,185, 86,211, 89,249, 91, 60, 76, 17, 2, 39, 74,120,112, 20,241, 64, 64,160,146,231,211,
+202,228,100,149,122,188,179,158,197, 16,210, 62,240,180, 97,255,168, 75,231, 79, 13,178, 88, 44,213,138,106, 78,162, 94,171, 62,
+160,202,112,249,133,210,187,102,252,243, 57, 89,108,182,120,229,156,216,177, 40,156,219,231,127,154,188,132, 59,141,223,165, 94,
+ 70, 86,254,246,110,125,167,209,196,164,236, 59,201,153,250, 95, 74, 78,171,243,182,154, 41, 41, 57,151,139,154, 11,245,127,142,
+ 80,188, 89,239,194, 87,198, 88,167,253,126,213,236,161,208,105,213, 59, 52,217,177,219,223,141,137,165, 90, 0, 87, 9, 33,210,
+143, 63,254, 56, 92, 34,145,240,115,115,115,111, 83, 74,229,111,170,169,202,138,189, 12,224, 50,128, 25,239,162,140, 81, 81, 81,
+241, 13, 27, 54,220,201,225,112,170, 81, 74,189, 40,165,210, 34, 35,155,203,227,241,210, 30, 63,126,156,246, 70,219,174,119, 60,
+173, 50,112,131,205,212,229,204,159,204,135,155,231,249,151,249,150,159,185, 98,251,255,153, 28, 3,117,214,179, 24, 0, 3,222,
+181,110,121,227,100,217, 94,143,254, 99,184,174,156,220, 54,154, 99, 39, 93,216, 41, 68,167,233,250,121,218,183,215, 31,230,220,
+166,148, 42,223,162,142,230,216,217,217,105, 9, 33,254, 2,129, 64,107, 48, 24,162,223,104,255, 21,154,124,143,119,185,239,172,
+ 32,247, 26, 53,106, 92,169,245,109,136,228,109, 47, 90,222, 41,170,204,167,223,162,168,249,251, 15, 17,138,172,216,133, 0, 22,
+190,141,246,221,187,119,143,255,240,195, 15,242, 53,107,214, 4, 88, 44, 22, 7,131,193,160,209,106,181,137,169,169,169,191,191,
+217, 49,127, 97, 0,240, 89,209,242, 6, 81,151,167,153, 18,175, 90,171, 91,182,104,249, 89,225, 3, 58, 93,157,120,117,245,148,
+242,190, 35,241,170,165, 45,185,126,121,115, 29,190,211,227,146, 29,187, 30,192,250,191, 46, 82, 97,205, 25, 62,176, 15, 80, 52,
+ 48,183,213,108,206,121, 39,178,133,231,252, 22,188,225, 36,233,255, 4, 40,165, 25, 0, 54, 21, 25,102,250,151,253,144,173,249,
+ 42, 76,147,105, 50,205,127,151,166, 45,179, 19,176,253,201, 52,255, 74, 77,145,111, 29,127, 0,176,101,210,245,178,214,103,251,
+147,254,107, 18,218,109,216, 31,227, 75, 49, 91,182, 13, 88,202, 96, 48, 24,127,193,211,158,149,237, 5,198,127, 19, 91, 13,214,
+155,174,207,248,215, 93,211,202,204,137, 38, 40,156, 5,187,180, 47,217,236, 84, 9, 33,157,223,160, 80, 23,152, 38,211,100,154,
+ 76,147,105, 50, 77,166,249,239,210,172, 72,251,239, 24, 41, 43, 37,162,117,178,168,249,176,112, 96,182,191,106, 1,208,153,105,
+ 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,180, 0, 24, 95,252, 63, 7, 12, 6,131,193, 96, 48, 24,140,191, 4,150,163,
+197, 96, 48, 24, 12, 6,131,241, 22,148,214,116,200,140, 22,131,193, 96, 48, 24, 12,198, 59,160,188,100,120,214,116,200, 96, 48,
+ 24, 12, 6,131,241, 22, 20, 71,180, 8, 33, 62,132,144,241, 37, 35, 92,204,104, 49, 24, 12, 6,131,193, 96,188, 3, 40,165, 25,
+175, 71,183, 8,165, 20, 39, 79,158,164, 17, 17, 17, 4,192, 31,254,103, 48, 24, 12, 6,131,193,248,255,224,239,236, 69, 8, 33,
+ 62, 0, 34, 74,110, 78,241,240, 14,156,146, 27,200, 14, 51,131,193, 96, 48, 24,140,255,166,217,250, 59,150,187, 56,146, 85, 98,
+121, 53,105,246, 43,163, 21, 17, 17, 65,152,217, 98, 48, 24, 12, 6,131,241,223,226,159,232, 69, 56,175,111, 32, 59,204, 12, 6,
+131,193, 96, 48,254,155,102,235,159,180, 61,108,120, 7, 6,131,193, 96, 48, 24,140,183,160,188, 28, 45, 82, 52, 84, 60,131,193,
+ 96, 48, 24, 12, 6,227,205,140,214,248,146,189, 13, 75,190,102, 17, 45, 6,131,193, 96, 48, 24,140,119, 96,182, 74,125,159, 69,
+180, 24, 12, 6,131,193, 96, 48,254, 26,254,210, 1, 75, 9, 33,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,201,
+ 20,143, 8, 95,244,255,248,162,156,173,191,222,104, 49, 24, 12, 6,131,193, 96,252, 11,136,160,148,110, 42,145,155, 21,193,140,
+ 22,131,193, 96, 48, 24, 12,198, 59,164,180,201,165,153,209, 98, 48, 24, 12, 6,131,193,120,135, 6,171,228,107,102,180, 24, 12,
+ 6,131,193, 96, 48,254, 34,152,209, 98, 48, 24, 12, 6,131,193,248,139, 32, 0, 74,237, 57, 64, 41,189, 96,179,200, 27,244, 62,
+168, 72,159,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 60,205,138,180, 43,227, 63,254,103,204,212,127, 70,134, 63, 89,244,
+247, 63,205,135,148,210,191,108, 1,208,153,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,159,188, 0, 24, 95,242,111,201,
+133, 53, 29, 50, 24, 12, 6,131,193, 96,188,125, 84,171,228, 56, 90,175, 70,137,103, 83,240, 48, 24, 12, 6,131,193, 96,188, 5,
+165, 13,235, 80, 12,139,104, 49, 24, 12, 6,131,193, 96,188, 5,175,207,115, 88,242, 53, 51, 90, 12, 6,131,193, 96, 48, 24,127,
+129,225, 98, 70,139,193, 96, 48, 24, 12, 6,227, 29,154,172, 63, 69,183,138,178,228,113,242,228, 73, 26, 17, 17, 65,216,174, 98,
+ 48, 24, 12, 6,131,241,223,224,159,232, 69, 56, 37, 55,236,228,201,147,148, 29,102, 6,131,193, 96, 48, 24,255, 45,147,245,119,
+244, 34,132, 16,159,226,222,134, 69,139, 79,241,103,172,215, 33,131,193, 96, 48, 24, 12,198,219, 17, 81,178,231, 97, 81,243,225,
+ 38,102,180, 24, 12, 6,131,193, 96, 48,222, 1,165, 37,194, 3, 44, 71,139,193, 96, 48, 24, 12,198,255, 8,255, 68, 47,242,202,
+104, 49, 24, 12, 6,131,193, 96, 48,222,192, 76,149, 18,205, 42,110, 74,100, 70,139,193, 96, 48, 24, 12, 6,227, 29, 25,174,215,
+ 71,137,103,227,104, 49, 24, 12, 6,131,193, 96,252, 5, 38,235, 47, 55, 90,132,144,206, 76,147,105, 50, 77,166,201, 52,153, 38,
+211,100,154,255,116,147, 85,252,151, 77, 42,205, 96, 48, 24, 12, 6,131,241, 14, 97,147, 74, 51, 24, 12, 6,131,193, 96,252, 69,
+176, 73,165, 25, 12, 6,131,193, 96, 48,254,159, 13, 23, 51, 90, 12, 6,131,193, 96, 48, 24,239,208,100,189,110,182, 88,142, 22,
+131,193, 96, 48, 24, 12,198, 91, 80, 94,142, 22, 1,208,185,140, 47, 93,168,132,139,235,252, 6,133,186,192, 52,153, 38,211,100,
+154, 76,147,105, 50,205,127,151,102, 69,218,149,241, 31,255,171,252, 97,168, 7, 74,233, 95,182, 0,232,204, 52,153, 38,211,100,
+154, 76,147,105, 50, 77,166,249,111, 90, 0,140, 47,254,159, 53, 29, 50, 24, 12, 6,131,193, 96,188,101, 4,171,172,207,152,209,
+ 98, 48, 24, 12, 6,131,193,120, 11,216, 56, 90, 12, 6,131,193, 96, 48, 24,127, 17,132, 16,159,162, 17,225,139,255,134, 51,163,
+197, 96, 48, 24, 12, 6,131,241,110,136, 40,138,106, 21,255,101, 70,139,193, 96, 48, 24, 12, 6,227, 93, 81,214, 56, 90,132, 82,
+138,147, 39, 79,210,162,215,237, 35, 34, 34,174,178,221,197, 96, 48, 24, 12, 6,227,255,147,127,170, 23,121, 21,209,138,136,136,
+ 32, 0,174,176, 67,205, 96, 48, 24, 12, 6,227,191,193, 63,209,139,112, 94,115,146,237,217, 97,102, 48, 24, 12, 6,131,241,223,
+224,159,232, 69,120,175,185, 72, 6,131,193, 96, 48, 24,140,255, 10,127, 87, 47, 66, 8,241, 1, 16, 1,224,100,209,223, 87, 67,
+ 62,176,113,180, 24, 12, 6,131,193, 96, 48,222,210, 35, 82, 74, 55,253, 97,234,157, 98, 19, 86, 52, 84, 60,131,193, 96, 48, 24,
+ 12, 6,227, 13, 40,109,100,248, 98,195,197,140, 22,131,193, 96, 48, 24, 12,198, 95, 4,107, 58,100, 48, 24, 12, 6,131,193,120,
+ 75, 74, 70,181, 74, 54, 31,114,254,226, 31,237,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 79, 55, 89,148,210, 77,
+197, 75, 73,211,197, 70,134,103, 48, 24, 12, 6,131,193,248,139, 96, 77,135, 12, 6,131,193, 96, 48, 24,111,193,235, 81,172,146,
+ 77,135,204,104, 49, 24, 12, 6,131,193, 96,188, 3,179, 85,218,251,172,233,144,193, 96, 48, 24, 12, 6,227, 45, 40,109,120, 7,
+102,180, 24, 12, 6,131,193, 96, 48,254, 98,195, 69, 0,148,218,115,128, 82,122,161, 18,194,149,238,125, 80,145, 62,211,100,154,
+ 76,147,105, 50, 77,166,201, 52,255,121,154, 21,105, 87,198,127,252, 47, 27,172, 87, 77,137,148,210,191,108, 1,208,153,105, 50,
+ 77,166,201, 52,153, 38,211,100,154, 76,243,223,186,176,166, 67, 6,131,193, 96, 48, 24,140,191, 8,155,141, 22, 33,196,131,207,
+231,207,114,112,112,248,201,193,193, 97, 35,159,207,255,129, 16,226, 82,217, 31,148, 72, 36,147,125,124,124,158,250,248,248,164,
+ 6, 6, 6,158,114,114, 18,127, 94,195,158,180, 37,132,240,223, 65,232,142, 67, 8, 9, 33,132,124,238,224,224,240, 68, 36, 18,
+ 37, 17, 66,118, 18, 66, 62, 39,132,184,191,141,246, 66, 63, 50, 32,230,243,190, 71, 23,250,145, 1,175,253,102,132,183,183,247,
+117, 66, 72,215,119,117, 80,134,137, 73,231, 65, 18,146, 60, 72, 66,146,135,137,223,124, 80, 56, 39, 39,167,145,190,190,190, 55,
+221,221,221,211,124,125,125,127, 19,137, 68, 3, 43,185, 63, 61,189,189,189,151, 5, 4, 4,196,250,249,249,173, 42,154,157,252,
+127,150,182,246,164, 77, 11,123,146,211, 82, 72,148,173,133,228,167,150, 66,210,165, 43, 33, 14,111, 88,151, 90, 19, 66, 14, 74,
+165,210,251,124, 62,255, 4, 33,164,127, 81,253,234,207,231,243, 79, 72,165,210,251,132,144,131,132,144,214,111, 88, 79,151, 17,
+ 66,210, 8, 33,139,139, 94,127, 26, 16, 16,160,108,208,160, 65, 82,131, 6, 13,182, 5, 7, 7,191,111,171,158, 88, 44,238, 18,
+ 16, 16,112, 40, 48, 48, 48,169,101,203,150,249, 85,170, 84,121,230,239,239,191,221,222,222,190, 61,187,196, 49, 24, 12,198,127,
+ 25, 27,194,131,189, 0,124, 7, 96,109,116,116,116, 36,165, 52,146, 82, 26, 25, 29, 29, 29, 9,224, 39, 0, 75, 80, 70, 8,241,
+245,247,221,220,220, 22, 44, 92,184, 80,151,145,145, 65,115,114,114,104,108,108, 44, 93, 57,231, 43,107, 55, 87, 30, 13,242,112,
+209,248,248,248,188, 8,172, 82,101,111, 93, 9,231, 43, 0, 53, 42, 19,174, 4,224, 34, 18,137,110,207,153, 51, 71,117,253,250,
+117,149,193, 96, 80, 89,173, 86, 85,122,122,186,234,194,133, 11,170, 86,173, 90,169, 0, 76, 1,192,125,147, 16,232, 55,190,184,
+ 74,183,124, 77,191,241,197,213,146,239,135,134,134, 62,182, 90,173,116,192,128, 1,122, 0,126,111, 19, 86,245, 3,236,235, 58,
+193,121,160, 4, 89,230,237,223, 82,186,110, 26, 29, 40, 70,242,155,104,122,122,122,254, 58,121,242,100, 69, 90, 90, 26,213,235,
+245, 52, 57, 57,153, 78,152, 48, 65,238,233,233,185,203,198,253,233, 22, 22, 22,150,117,243,230, 77,171, 76, 38,163, 87,174, 92,
+177,214,171, 87, 47, 11,128, 79,101, 67,202,158,158,158,155,124,125,125, 79, 85,102,241,244,244,220, 92,217, 99,212, 76,136,100,
+ 99,228,101, 74,239,158,163,199, 6,180,160, 43, 27, 87,161,253, 93,237,100,173,237,240,105, 59,128, 87,137,186, 52,168, 93,187,
+118,234,135, 15, 31, 90,242,242,242,232,227,199,143,173,227,198,141,211, 1,136, 25, 55,110,156,238,241,227,199,214,188,188, 60,
+250,240,225, 67, 75,187,118,237,212, 0,198,218, 90,206,162,135,155,173,243,231,207,167,148, 82,186,112,225, 66, 90,191,126,125,
+218,177, 99, 71,170, 82,169, 40,165, 52,137, 82,186,205,108, 54,143,182, 69, 83, 42,149,142,156, 60,121,178, 74,163,209,208, 98,
+172, 86, 43,149,201,100,116,237,218,181,106,111,111,239, 83, 0,220, 89,243, 4,211,100,154, 76,147, 53, 29,254,165,169, 82, 62,
+ 0,198,151, 88, 94,221, 43, 43,250,226,176,175,190,250,170,216, 84,157,110,221,186,245,157,209,163, 71, 71,142, 30, 61, 58,178,
+117,235,214, 87, 0,156,189,119,239, 94,228,244,233,211, 35, 1, 12, 43,239, 64, 0,112,105,217,178,165, 44, 51, 51,147, 6, 7,
+ 7,211,170, 85,171,210,204,204, 76, 74, 41,165,119, 7, 53,162, 23,107,131,166, 92, 59, 77,207, 29, 57, 72,199,249,240,104, 27,
+ 31,169,201,199,219, 59,207,221,221,125, 17,138, 38,191, 46,235,224, 2,232, 87,187,118,109,101, 76, 76,140, 42, 46, 46, 78,181,
+ 96,193, 2, 85,199,142, 29, 85, 97, 97, 97,170,254,253,251,171,214,172, 89,163, 50, 26,141,170,205,155, 55,171,156,156,156, 98,
+ 94, 55, 91,111, 99,180,120, 60,222,234,232,232,104,250,226,197, 11, 10, 96, 89, 89,154, 0,164,206,206,206,221, 93, 92, 92,166,
+ 56, 59, 59,119, 7, 32,165,148, 34, 24,144, 52,144, 34,224,211, 6, 65,161, 39,134,117,174,177,182,115,147, 70, 3, 29, 57, 50,
+211,143,211, 40, 29, 16,240, 70, 70, 75, 42,149,142,252,252,243,207,149,122,189,158,106, 52, 26,170, 82,169,168, 70,163,161, 74,
+165,146, 14, 27, 54, 76, 97,111,111,223,175, 34, 77,119,119,247,111,175, 93,187,102,206,204,204,164,215,174, 93,163,167, 78,157,
+162,235,214,173,179,122,122,122,174,168,236, 9,232,237,237,125,254,220,185,115,145, 81, 81, 81,145,183,111,223,142, 52,153, 76,
+145, 70,163, 49,210,104, 52, 70,158, 56,113, 34,242,240,225,195,145,251,246,237,139, 52, 24, 12,145, 6,131, 33, 82,175,215, 71,
+ 86,175, 94,253, 76,101,143, 81, 83, 33, 82, 12,215,143, 81,186,226, 19, 42,255,126, 34,149, 77,237, 65,179, 39,180,165, 63, 53,
+169, 66,219,138,112,188,100, 61, 42, 79,147,207,231, 95, 77, 74, 74,178,206,156, 57,211, 80,167, 78, 29,249,152, 49, 99,116,122,
+189,158, 82, 74,169, 94,175,167, 99,198,140,209,213,169, 83, 71, 62,115,230, 76, 67, 98, 98,162,149,199,227, 93,168,132,209, 90,
+ 82,108,178,174, 94,189, 74, 75,162, 82,169,104,199,142, 29,147,234,215,175,191,173, 90,181,106,195, 43,210,148, 72, 36,125,102,
+204,152,161,162,165, 96, 50,153,168, 82,169,164,137,137,137,214,170, 85,171,166, 3,112, 99, 23,115,166,201, 52,153, 38, 51, 90,
+127,153,209, 26, 95,214,235,114,119,226,244,233,211, 35, 41,165,145,179,103,207,142, 44,138,108, 9, 0, 72,138, 22, 30,128,161,
+ 51,102,204,136,164,148, 70,126,245,213, 87,145, 0,122,149, 99,180,122, 29, 56,112,192,184,106,213, 42,234,229,229, 69,189,189,
+189,233,234,213,171,169,213,106,165,153, 39,118,209,139,181, 65,159,204, 26, 69, 41,165, 52,118,209, 36,122,177, 54,104,252,250,
+111,232,136, 17, 35, 52, 14, 14, 14,195,202, 49, 48,174,141, 26, 53, 82,106,181, 90,213,246,237,219, 85, 14, 14, 14,119, 1,212,
+ 1,192, 71, 97,175, 74, 9,128,247,235,212,169,163,120,244,232,145,106,207,158, 61, 42, 0, 11,108,140,108,212, 0,208, 65, 44,
+ 22,247,159,225,199,143,163, 91,190,166, 51,188,240, 16, 64, 61, 0, 30, 69,235,248,126,245,213, 87,148, 82, 74,253,253,253,175,
+149,177,237,210,176,176,176,175,226,226,226,230,153, 76,166,121, 81, 81, 81,243,106,213,170, 53,179,119,117,159, 22, 71,135,117,
+ 9,151,127, 51, 49,156, 46,159, 26,246,195,123, 77, 59,239, 29,210,126,216, 7,213,220,175,143,241,180,215, 12,150,114,149, 67,
+ 29,254,160, 99, 83,197,246,243,243,187,157,156,156,252,202, 92, 41,149, 74,154,150,150, 70, 19, 18, 18,232,245,235,215,169,143,
+143,207,197,138, 52,189,189,189, 31, 39, 39, 39,211,245, 43, 87,210, 1,245, 66,105, 91,103, 71,218,206,197,145, 54,150,216,171,
+107, 3,141, 43,107,180,238,223,191, 31, 9, 32, 18, 64,100, 94, 94, 94,100, 94, 94, 94,100, 65, 65,193,171,247, 0, 68,202,229,
+242, 72,185, 92, 30,105, 48, 24, 34,131,130,130, 42,109,180, 90,217,163, 85, 51,123,228,183, 16, 66,219,203,207, 61,125, 98,117,
+119,203,173, 97, 45,104,193, 39, 29,233,170,112, 63,218,218, 14,159,218,120,220,123,217,217,217, 93, 1, 48, 13, 0, 23,192,168,
+238,221,187,107, 40,165,180,123,247,238, 26, 0,163,138,222,255,156,199,227, 93, 0,208,221,150,114, 2,224,212,172, 89, 83, 93,
+ 28,201, 2,240,123,205,154, 53,213,245,235,215,167,245,235,215,167,254,254,254, 74, 0,163,108,189,160,213,168, 81, 35, 86,171,
+213,190, 50,128, 50,153,140,166,167,167,211,248,248,120, 26, 19, 19, 67,239,222,189, 75,147,146,146,232,254,253,251, 45,206,206,
+206, 39,217,197,156,105, 50, 77,166,201,140,214, 95,103,180, 94, 95,254,100,180, 78,156, 56, 65, 95,251,210,247,247,238,221,139,
+156, 49, 99, 70,228,235, 78,237,117,241,217,179,103, 23, 71,189,190, 43,231,230,191, 57, 54, 54,150,142, 26, 53,138,134,132,132,
+208,144,144, 16, 58,122,244,104, 42,151,203,169,234,249, 35,122,177, 54,232,221,193,141, 41,165,148, 42,159, 68,209,139,181, 65,
+ 35, 71,180,164, 15, 30, 60,160, 85,170, 84, 57, 87,206,239, 31,255,237,183,223,114,118,237,218,149, 9, 96,103,145,193,106, 14,
+ 96,181, 72, 36,218, 90,212, 92, 88, 21,128, 75,112,112,112,190, 70,163, 81, 13, 24, 48, 64, 5, 32,160, 28,205,118, 33, 33, 33,
+ 47, 54,111,222, 76,179,179,179,105,126,126, 62, 93,218,170, 22,165, 91,190,166, 11, 27, 87,181,174, 95,191, 94, 63,109,218, 52,
+181,171,171,235, 9, 0,190, 3, 6, 12, 48, 83, 74,105,219,182,109,179, 74,211,115,118,118,238, 30, 23, 23, 55, 79,167,211,205,
+147,201,100,243,242,243,243,231, 29, 59,122,116, 94,183,122,181, 70,201,191,153, 24,126,116, 88,151,240,247,252, 92,250,175,232,
+218,228,163,180,153, 99, 7,204,110, 89,231,137,110,201,103,151, 7, 85,247, 90,246, 38, 7,220,195,195, 35, 67,175,215, 83, 0,
+127, 90, 94,188,120, 65,221,220,220,146, 43,210,112,117,117,157,253,249,208, 33,150,126, 85,253,232,139, 85,115,168,233,252, 30,
+106, 58,181,157, 62,255,126, 42,237,237,237,174,104, 46,224,204,176,181, 60,222,222,222,231,111,223,190,253, 7,163, 85, 80, 80,
+ 80,170,209, 82, 40, 20,145, 6,131, 33,178,102,205,154,103,222,182,226, 55,183, 67, 80, 59, 17,247,110,212,168, 54, 52,103, 98,
+ 71,218, 93,202, 79,122,139,147,104, 40,128, 43, 0, 70, 84,242,123, 28, 0, 75,138, 13,213,247,223,127, 79, 41,165,180,102,205,
+154,106, 0,156,183, 40,143, 52, 52, 52, 52, 97,236,216,177,230,218,181,107,103,183,106,213, 74,118,231,206, 29,122,245,234, 85,
+122,234,212, 41,122,240,224, 65,250,232,209, 35,154,150,150, 70, 99, 99, 99,105, 68, 68,132, 12, 64, 59,118, 65,100, 11, 91,216,
+242,191,188,188,238, 69,254, 49,189, 14, 79,158, 60, 73, 35, 34, 34,200,201,147, 39,105, 81,178,174, 20,128,125,227,198,141,115,
+150, 44, 89,178,188,104, 14, 31, 82,159, 71, 6,117,114,224, 63,232,228,192,127, 80,159, 71, 6, 17, 66, 8,165,116,211,162, 69,
+139,190,173, 95,191,126, 6, 0, 17, 33,196,187,140, 92,176, 54,110,110,110, 72, 78, 78,134, 84, 42,133, 84, 42, 69,114,114, 50,
+ 40,165, 48, 83,192, 68, 1,189,209, 8,173, 86, 11,157,149, 66,107, 5, 20, 42, 21,188,189,189, 97, 52, 26,131,202, 72, 42,110,
+ 48,120,240,224,160,176,176,176,156,233,211,167,167, 3, 24, 11, 96,235,135, 31,126,120,254,247,223,127, 15, 83,169, 84,249, 49,
+ 49, 49,186,122,245,234,117, 7,224, 29, 23, 23, 55,114,237,218,181, 24, 53,106, 20, 0,180, 43, 67,179, 94, 68, 68,196,169, 71,
+143, 30, 5,141, 24, 49, 2, 87,174, 92,193,210,165, 75,145,155,155, 75, 1, 64,175,215, 83,139,197, 98,108,217,178,165,113,213,
+170, 85, 77,219,182,109,123,187,122,245,234, 92, 0, 72, 72, 72,120, 94,134,102,173,192,192, 64,232,245,122,228,228,228,224,209,
+163, 71,112,148, 74, 17,157,158,235,213,126,197,250,188, 89, 71,207,243,135, 54, 13,115,157,210,165,149,126,241,185, 43,193,117,
+124,189,188, 12, 70,147,119,108, 70, 86,250,155,228,221, 9, 4,130,228,220,220, 92, 24, 12, 6,104,181, 90, 40, 20, 10,228,229,
+229, 33, 55, 55, 23,233,233,233, 16, 8, 4, 47, 42, 76,164,207,207,191,150,240,219, 85,178,127,195,247, 8, 50,231,131,119,104,
+ 53,120,191,254,132, 26,134, 28,108,156, 51,193,209,224,230, 49, 95,234,228, 84,224,226,226,178,137, 16, 82,179, 34,189,240,240,
+112,228,229,229, 33, 47, 47, 15,110,110,110,112,113,113,129,139,139, 11,100, 50, 25,228,114, 57, 20, 10, 5,130,131,131,209,160,
+ 65, 3,236,216,177,227,157,228, 31,222,212,211,120, 51, 44, 19,207, 63, 75,135, 64, 44, 70,117, 23, 73, 96, 83, 71,226, 90, 78,
+146,122, 71,129, 64,112,192,205,205,237, 28, 33,228, 19, 66,136,152, 16,242,137,155,155,219, 57, 62,159,223, 23,192, 66, 74,233,
+174, 74, 22, 99,241,252,249,243,191,138,139,139,115,120,240,224, 1,166, 79,159,142, 5, 11, 22,224,249,243,231, 63, 82, 74,173,
+ 69,191,251,177,187,187,251, 9, 46,151,251, 51, 33,164, 7, 33,164,187,175,175,111,167, 10,116,251, 78,155, 54, 77,215,168, 81,
+163,216, 39, 79,158,244,253,237,183,223, 26, 79,157, 58, 85,254,242,229, 75,196,198,198,194,199,199, 7,254,254,254, 80,169, 84,
+ 40, 40, 40, 64,223,190,125,165, 78, 78, 78,195, 88, 86, 42,131,193,248, 95,229,117, 47,242,119,226,245,113,180, 74,190, 46,181,
+215,161,131,131,195,252,200,200,200, 22,245,235,215,231, 1,216, 15, 0, 97, 92, 12,236,219,178,225,214,163,155,190,175,127,120,
+213,156,250,221,234, 7,111, 13,227,162,184, 23,219,137,198,141, 27,187, 68, 70, 70,182, 20, 10,133,159,150,149,119, 15, 0, 46,
+ 46, 46,144, 74,165,112,118,118,134,139,139, 11,172, 86, 43, 84, 26, 29,212, 22, 64,169, 51, 64, 46,151, 67, 89,244, 90,165, 55,
+ 66,173, 86,191,250,110, 41,180, 31, 59,118,108,206,218,181,107,179, 51, 50, 50,190, 7, 80,111,212,168, 81,125,214,172, 89,131,
+ 75,151, 46,233,122,132,212,112, 91,212,166,225,183,117, 50,158,207, 11,225, 99, 28,128,107,215,174, 93, 67,203,150, 45, 65, 8,
+ 25, 82,154,160, 72, 36,250,105,239,222,189,162,152,152, 24,212,168, 81, 35,102,200,144, 33,131,190,255,254,251, 32,177, 42,255,
+ 6, 0,152,243, 50, 99, 38, 77,154,244,245,162, 69,139,114,114,114,114,140, 26,141,198,179,119,239,222, 72, 78, 78, 70, 90, 90,
+218,239,101,152,204,216,168,168, 40, 42,151,203, 17, 31, 31,143,168,168, 40,209,215, 95,127,221,212,194,225,244, 73,133,227, 7,
+163, 90, 53,110, 58,162,121, 67,236,186,249, 64,112,253, 89,130,115,227,170,126, 46,247, 83, 50,170,153, 8, 94,188,201, 1, 87,
+ 42,149,171,191,253,246, 91,149, 74,165, 66,106,106, 42, 30, 62,124,136, 39, 79,158, 32, 41, 41, 9, 75,151, 46, 85,229,231,231,
+175,169, 72,195,215,158,247,197,178,169, 31, 18,222,227,223,129, 7, 87, 1,141, 18,208,170,160,127, 26,137,109, 79, 51,177,238,
+208, 17,187,151,201,201,206,251,246,237, 27, 27, 16, 16, 16, 73, 8, 9,174,168,211, 5, 0,112, 56,156,215, 43, 39, 56, 28,142,
+ 18, 64,166, 88, 44, 78,113,116,116, 76,225,112, 56,153,148, 82,245,187,168,252, 28, 51,140,224,114, 1, 59, 17, 56,124, 94,121,
+ 39,201,160, 33, 67,134,236, 77, 73, 73,233, 22, 31, 31,223, 98,205,154, 53,223,218,219,219, 71,175, 89,179,230,219,248,248,248,
+ 22, 41, 41, 41,221,134, 12, 25,178,151, 16,242,126,101,126,191,102,205,154,147,230,205,155,135,165, 75,151,162, 65,131, 6, 8,
+ 14, 14,214,204,159, 63,127, 53,128, 57,132,144, 79,131,131,131,111, 76,154, 52,105, 76,118,118,182,119,106,106,106,131, 31,127,
+252,113,194,234,213,171,155,164,167,167,219, 87, 32,221,186,107,215,174, 56,125,250, 52, 0,100, 80, 74,227,243,242,242,204,233,
+233,233, 8, 13, 13, 69,211,166, 77,161, 82,169,160, 82,169, 32,147,201, 16, 24, 24, 8,171,213,218,130, 93,202, 25, 12, 6,227,
+255,207,112,149,105,180,236,237,237, 93,194,195,195, 81,189,122,117,151,162, 92, 44,184,217,241,102, 78, 25, 59,212, 65, 18,121,
+ 6, 36,234, 34,134,180,169,235,224,102,199,155, 89,244, 21, 94, 96, 96,160, 48, 60, 60, 28, 98,177,216,175,140,223,191,146,153,
+153,137,240,240,112, 56, 59, 59, 67, 42,149, 34, 60, 60, 28, 70,163, 17,114,165, 18,106, 11,160, 49, 89, 33,151,203,145,159,147,
+ 5,141, 5, 48, 59,186, 33, 41, 41, 9, 92, 46, 55,161, 12, 77,159, 26, 53,106,228, 68, 71, 71,231, 0,184, 6,224,163, 5, 11,
+ 22, 96,198,140, 25,152, 59,119,238, 94,135,140,196,174,123, 79,255,234,182,123,254,199, 30,193,118,100, 40, 0, 99, 74, 74, 10,
+156,157,157, 33, 22,139, 75, 53, 6,109,219,182,109, 36, 22,139,177,125,251,118,154,154,154,218,138, 82,122,144, 82,154, 64, 72,
+161,217, 19,113, 32,167,148,174,142,140,140,108,246,245,215, 95, 63,235,220,185, 51,191,121,243,230, 88,184,112, 33, 0,156, 40,
+ 77, 83, 38,147,221,122,255,253,247, 13,151, 47, 95,198,211,167, 79,197, 71,143, 30, 29,184,112,225,194,186, 47, 95,190, 20, 30,
+ 63,117,230,189,157, 41,138,129,223,159,187,110,191,232,236,149, 91,238, 78,226, 58,213,220, 93, 17,245, 50, 77, 96,225,226, 78,
+ 69, 7,181,185,128, 55,182,131,136, 31,213,214,158,155,209, 65,196,143,108, 42,224,125,168, 80, 40,246, 29, 59,118,236,236,212,
+169, 83, 85,217,217,217,112,116,116, 68, 94, 94, 30, 22, 47, 94,172,138,138,138, 58,164,215,235,143, 87,164,107,177,210, 70,254,
+ 85, 3,128, 23,209,175,222, 51, 90, 41,238, 24, 4,232,249,209,103, 8, 9, 13,133,193, 96, 64,189,122,245,200,130, 5, 11,196,
+ 82,169,244,203, 10, 77, 15,231, 79,213,205, 76, 8,201,164,148,166,169, 84,170, 84,145, 72,244, 82, 32, 16,188,204,207,207, 79,
+165,148,102,189,131, 10,207,161, 28,124,209,178, 94, 77, 64, 40,194,203, 60, 85,250, 29, 37,205, 47,109, 93, 71, 71,199, 15,215,
+173, 91,103,191,101,203, 22,211,164, 73,147,244, 19, 38, 76,224,107,181, 90,207, 9, 19, 38,240, 39, 77,154,164,223,178,101,139,
+105,221,186,117,246, 18,137,164,255,155,148,197,100, 50, 33, 58, 58,250,251,184,184, 56, 49,165,244,115, 0,159,205,159, 63,127,
+ 84, 92, 92,156,253,218,181,107,113,240,224, 65, 28, 60,120, 16,125,250,244,193,228,201,147, 49,111,222,188,242,182,203,161,126,
+253,250,225,110,110,110,184,122,245,106, 58,165,244, 37, 33,164,145, 68, 34,113,236,211,167, 15,186,117,235, 6,157, 78, 7,163,
+209,248,202,104,113,185, 92, 56, 59, 59,187,177,203, 32,131,193, 96,252,181, 38,235,117,179,197, 3,128,226, 80, 93, 68, 68, 4,
+ 41,239,198,104, 41,200,134, 76,173, 65,146, 92,131,228, 2,235, 31, 62,179, 90,173,229, 22, 32, 61, 61,253,248,205,155, 55, 63,
+ 12, 15, 15,231,165,167, 23,182,136,133,135,135, 67,163,209, 32,253,193,109,168,173,128,184, 70, 24,212,106, 53, 10,158,220,135,
+164,126, 11,184, 69,140,192,138,181,107,245,121,121,121, 27, 74,211,180,179,179,227, 87,169, 82, 37, 39, 33, 33,193, 12, 32, 95,
+ 42,149,118, 13, 8, 8,192,149, 43, 87, 0, 96, 23, 5,150, 33,234, 50,112,245, 48,104, 97, 72, 69, 18, 24, 24,136,236,236,108,
+168, 84,170, 43,165,105,222,188,121, 51,206,100, 50,213,235,221,187, 55,249,229,151, 95,246, 19, 66,230, 2,120, 56,203, 27,220,
+ 7, 41, 89, 80, 91, 96, 79, 8,233,226,226,226,242,249,188,121,243, 58, 77,154, 52, 9,199,142, 29,195,185,115,231,140, 40,204,
+ 5,187, 89, 74, 52, 71, 78, 8,217, 56,109,218,180,230, 28, 14,231,163,243,231,207,155,131,131,131, 21, 70,163,209, 82, 43, 36,
+132, 51,119,193, 55,130, 79, 62, 26,239,156,167,193,227,110,181,124, 90, 18, 2, 60, 78,203,126, 25,167,164,121,229,237,211,118,
+ 66,222,137, 33,109,234,183,253,112, 72, 47,137,184, 70, 29,168, 31,221,246,222,120,224,212,138,246, 34, 94,207, 44,173,185,143,
+ 84, 42, 29,120,229,202,149, 79, 12, 6, 67,117,161, 80,248, 66, 38,147,173, 82, 42,149, 21,154, 44, 30,143, 23, 17,230, 95,197,
+ 69,150,159, 15,251,162, 72,148,194,100, 69,174,222,140,167,206,193, 24, 86,197,255, 85, 51,104,102,102, 38,188,189,189,137,197,
+ 98,233, 85,158,230,185,115,231,208,179,103,207, 98,227, 9, 66, 8, 8, 33,185, 33, 33, 33, 89, 66,161, 48, 79, 32, 16, 40,150,
+ 45, 91,166,211,233,116,224,241,120,246, 22,139,133,251, 54, 21,190,153,152,120,182, 21,145,159, 38,244,238,208,185, 65,157, 80,
+122,237,238, 3, 82,160,209,109, 43, 39, 10,248, 99,205,154, 53,121,249,249,249,199, 1, 60, 53,153, 76,187,247,239,223,111, 63,
+114,228, 72,221,129, 3, 7,134, 3, 8, 90,190,124,249, 64,149, 74,181,169, 50,229,120,254,252,249,143,139, 22, 45,250,106,246,
+236,217,216,177, 99,199, 36, 0, 51,138, 34, 93,125,230,205,155,135,101,203,150, 97,199,142, 29,214,167, 79,159,158,178, 90,173,
+207,167, 78,157, 90,223,203,203, 43, 55, 35, 35,227,249,130, 5, 11,202,146,109,220,189,123,119,253,141, 27, 55,236,148, 74,229,
+117, 66,200,231, 19, 39, 78, 28,219,172, 89, 51,197,144, 33, 67, 36,249,249,249, 50, 7, 7, 7,187,205,155, 55,187,240,120, 60,
+168,213,106, 16, 66,160, 84, 42, 13,236, 82,200, 96, 48,254, 87, 41,203,139,252, 29,120, 53,221, 78,105,247,212,210, 54, 80,163,
+209,100, 37, 39, 39,135,166,165,165,153, 1,152, 1, 32,207, 96,254,110,209,230,195, 91,250, 55,175, 41,206, 48,153,112,244,110,
+140, 38,207, 96,254,174, 56, 50,145,150,150,166,124,249,242,165,163, 86,171, 85,149,241, 91,191,255,244,211, 79,218,203,151, 47,
+ 59,198,199,199,195, 98,177,160, 81,163, 70,136,141,141, 69,193,211,104,136, 67, 27, 65,220,174, 39, 98, 34,239, 34,234,220, 5,
+ 36,170, 12,230,103,115, 22,201, 85,106,245, 60,131,193,112,180, 52, 65, 62,159,159, 95,184,125,212, 2, 0, 10,133,226,161, 74,
+165,106,227,229,229,133,199,143, 31,139,213, 22, 76, 30, 56,115,197, 26, 74,169, 69, 80,216, 83,108,202,144, 33, 67,112,239,222,
+ 61, 0,184, 87,154,166, 66,161,152, 52,110,220,184,203,219,183,111,231,197,199,199,119,219,178,101, 75,183,103,207,158, 81,146,
+159,108,185,161,225, 35,104,212,228, 38,235, 3, 67,206,245,236,217, 19, 62, 62, 62,216,188,121, 51, 86,173, 90,101,250,248,227,
+143,227, 86,173, 90,213, 4,192,238, 50, 14,130, 28,192, 25,119,119,247, 79,234,214,173,171, 84,171,213,200,203,203, 67,122,122,
+ 58, 92,221,220, 56,102,112, 90,122, 56, 59,239, 62,158,169, 20,243,206,220,194,237,212,140,114,163, 89, 45, 4,188,247,135,182,
+111,216,246,211,217, 51, 37,184,113, 20,100,220, 60,208, 45,223,226,179,209, 3, 29,117,250,221,237, 26,243,120, 35,229,102,243,
+ 78, 0, 7, 43,233,200,187,183,105,211,102,239,162, 69,139, 68,179,150, 46,194,242, 80, 63,152,243,242,144,163,183, 32, 87,111,
+134,162,224, 41, 30, 63,142,129,155,155, 59, 18, 19, 19,161,211,233,240,228,201, 19,202,229,114,143, 87, 20,209, 41,241, 27,197,
+205,133, 50,161, 80,152,199,231,243,179,120, 60, 94,126,124,124,188, 90,167,211,129,195,225,136, 45, 22,139,200,134,178, 86,113,
+119,119,159, 10,160, 63,128, 99,202,220,220,213,225,124, 56,131,135,246,213, 61,221,222,155, 51, 97,164,123,128,175,167, 44, 62,
+238,133,105,195,217,223,114,117,122,124, 87,206, 73,114,162,100, 68,146, 16,242,217,129, 3, 7,198, 2,216, 90, 52,239,214, 5,
+ 0,235,223,224,252,155,115,232,208,161,175,102,207,158, 13,145, 72,244,106,240, 84,145, 72,100, 15, 0,123,246,236,193,227,199,
+143,155, 21,231,107, 1,216,107,131,102, 80, 88, 88, 88,252,225,195,135,237, 0,248, 78,156, 56,177,197,154, 53,107, 48,122,244,
+232,156,152,152,152,230,133, 17, 88, 18,244,209, 71, 31,221,217,177, 99,135,139,213,106, 69, 65, 65, 1, 12, 6, 67, 2,187,148,
+ 51, 24, 12,102,182,254,146,104, 86, 56,165, 52,170,104, 96,239, 8, 0, 39, 41,165, 25,127, 48, 90,197, 27, 8, 0, 58,157,238,
+199,192,192, 64, 41, 0,127, 0, 61, 1, 28,123,104,193, 65, 60, 75, 66,116, 98,234,204, 98,227,245,208,242,234, 38, 62,248,206,
+157, 59,134,170, 85,171, 62, 0,240,109, 25, 55, 50,133,187,187,251,194,169, 83,167, 46, 94,184,112, 33,143,199,227,225,242,229,
+203,184,121,246,164,245,201,245,219, 36, 73,107,209, 42,238, 78, 75,227, 81,203, 45, 47,109,254,163,251, 26, 28,162,148,166,150,
+183, 97,106,181, 58,249,249,243,231,118,117,235,214,181,220,191,127,223,157, 82,122,228,212,169, 83,109,166, 79,159,142, 43, 87,
+174,236, 62,175,179, 12,163,212,186,159, 16,194, 3, 48,172, 87,175, 94,159, 15, 28, 56, 16, 13, 26, 52, 48, 2,216, 81, 70, 57,
+111, 16, 66,134,165,164,164,108,252,242,203, 47,157,191,252,242, 75,112, 56, 28, 82,114, 95,229,230,230,226,193,131, 7, 24, 50,
+100,136,252,183,223,126,155,220,169, 83,167, 49,173, 91,183,198,233,211,167,125,109, 56, 24,191, 63,121,242,164,159, 84, 42, 37,
+207,159, 63,135, 66,161,192,141, 27, 55,248,129,129,129, 45,247,239,223, 47,172, 94,189, 58, 98, 30, 61,194,169, 97,195, 34, 8,
+ 33,129,148,210,151,165,233,136,248,228,147, 81,131,122, 73,244, 55,142, 3, 81,215, 0, 0, 42,133, 18,218,196,104, 12,108, 90,
+211,233,202,147,164,137, 40,236,133, 89, 41, 92, 93, 93, 63, 91,190,124,185, 56, 56, 56, 24, 95, 44, 90,138,169,179,167,227, 35,
+207, 64, 40,210,146,145,107, 1,236, 28, 28,176,112,206,108,244, 26, 52, 4,158,158,158,120,244,232, 17,221,188,121,179, 90, 46,
+151, 47,179,197,104,113,185, 92, 16, 66, 0, 64, 45,151,203, 85,118,118,118,114, 30,143,151,103,177, 88,178, 78,172, 93,221,136,
+147,151,245, 1, 33,132, 43,178,114, 78, 20,117,182, 40, 53, 63,207,153,144,192, 26, 65, 65,143,126,222,188, 89,220,172, 89, 51,
+114,247,238,221, 79, 38,142, 31, 55,182,127, 88,181, 83,125, 59,183,133,183,143,183,222,106, 52,200, 78, 29, 59, 97, 90,127,224,
+212, 85, 3,177,126, 25, 73,169,182, 18, 79, 39,123, 75,154, 30, 66,200, 80, 0,131, 0, 28,166,148,238, 34,132,140, 2,208, 23,
+192,161,178, 18,228, 9, 33, 28, 0,155, 6, 12, 40,156, 76, 64,171,213,106,138,223,175, 95,191,126,201,223,178, 86,230, 24, 57,
+ 56, 56, 56,218,219,219,191, 56,125,250,180,104,200,144, 33, 46,139, 23, 47, 78, 27, 61,122,180,223,238,221,187,127, 4,144, 72,
+ 8, 9, 1, 80, 67,173, 86, 91, 56, 28, 14, 66, 66, 66,176,110,221, 58,149,197, 98,217,202, 46,227, 12, 6,227,239, 96,182,254,
+134,197, 14, 7, 16, 5, 32,162,168, 3,225,120, 0,229, 79, 42, 13, 96, 81,116,116,116,241, 24, 90, 19,203, 27,222, 97,198,140,
+ 25,145,247,238,221,139, 4,176,164,162,110,142, 60, 30,239,200,199, 31,127, 76,189,188,188, 84,158,158,158, 71,248, 92,238, 88,
+127, 17,194,241, 6, 93,221, 1,180,217,185,115,103,159, 31,127,252, 49, 2, 64, 51, 0,124, 63, 63,191,244,204,204, 76,213,111,
+191,253,166,106,213,170,149,202,221,221, 61, 59, 44, 44, 76,181,124,249,114,149,201,100, 82, 77,157, 58, 85,133,215,198,251, 42,
+ 67,219, 30,192, 39,118,118,118, 71,106,215,174, 29, 61,167,119, 71,211,210,201, 99,233,168,154, 30, 42, 0, 63, 2,248, 24,128,
+ 51, 0,254,192,129, 3, 47, 62,121,242,228,108, 88, 88,216, 70, 27,116,125,235,214,173,123,105,239,222,189,247, 14, 31, 62, 28,
+249,229,151, 95,222,115,115,115, 75,141,139,139,179,234,116, 58, 90, 80, 80, 64,101, 50, 25, 61,121,242,164,197,213,213,117,109,
+ 89, 58,109,132,220, 12,122,110, 87,169, 67, 56,164,204, 30, 65, 91,217,113,210,222,164, 27,170, 88, 44,206,207,203,203,163,153,
+153,153, 52, 62, 62,158, 30, 58,116,136,118,111,217,148,238,251,168, 63,221,245, 97, 31,186,172,123, 83,218,204,209, 94,237,237,
+ 40,185,231,232,232,152,237,236,236,188, 9, 64,205,138,134,119,208,235,245,175,134,111,168, 82,165, 74,100, 72, 72,200,225,176,
+176,176, 21,199,142, 29,251,108,229,202,149,125, 58, 84, 11,252,106,113,183,150, 90,205,133, 3, 84,185,255, 71, 58,163, 81,176,
+ 46,140,139, 65,101, 14, 23,226,230,186,243,234,149, 43,214,226, 1, 58,205,102, 51, 61,122,228, 8, 29,252, 94,151,104,249,153,
+ 61, 63, 95,159, 55,105,239,212, 70,193, 71, 91,217, 99, 40, 94, 27,168,180,180, 37, 92, 2,183,182, 78,156,117, 61, 2, 92, 51,
+218, 72, 57, 63, 54,119,132, 75,137, 99, 54, 56, 56, 56, 56,158, 82,154, 17, 26, 26, 26, 15, 96, 87,104,104,104,201,215, 31, 84,
+ 52, 56,233,252,249,243, 41, 10,103, 81,224, 0,152,187,104,209,162, 72, 74,105,100,205,154, 53,111, 80, 74,209, 64, 12,247,118,
+ 82,206,207,189,131,188,242,218, 73, 57, 63, 55, 16,255,121, 52,119, 74, 41, 2, 5,168,213,198,195,225,122,159,154, 62,202,246,
+126,210,107,187,182,109, 89,218,163, 71,143,205, 0,214, 2,248,214,205,205,237,250,208,161, 67, 31,239,216,177,227,241,242,229,
+203,141,113,113,113,116,204,152, 49,106,161, 80,248, 45,235, 58,206, 22,182,176,133, 45,127,249,200,240, 62,149, 25,176,180,215,
+ 87, 95,125, 21, 73, 41, 45, 30, 75,107,100, 41,235,244,158, 61,123,118, 36,165,180,120,116,248,206, 21, 13,104, 6, 96,254,186,
+117,235,168, 80, 40,252,249,109, 7, 73, 3,224,221,183,111,223,230, 10,133,162,137,151,151, 87,147,162,168,147,191,187,187,123,
+252,238,221,187, 85, 90,173, 86, 69, 41, 85,153,205,102,213,189,123,247, 84,237,219,183, 87,161,112, 8, 8,155, 70, 8, 47,185,
+204,242,198,141,187,115, 62,164,179,188,113,227,181,239,142,216,186,117,235,233,132,132,132,227, 78, 78, 78,211,109, 28,184,210,
+223,195,195, 99,174,171,171,235, 89,119,119,247, 89,174,174,174, 25, 70,163,145, 22, 20, 20,208,216,216, 88,122,229,202, 21,122,
+243,230, 77,234,234,234,154, 90, 86, 57, 59,137,120,183, 10,150,126, 66,173, 91, 23, 81,195,154,153, 20, 0,149,173,156, 65,115,
+127, 90, 64,239,142,235, 70,219,219,115,127,127,147, 65,231,156,157,157, 55, 29, 57,114,196,250,252,249,115,122,226,196, 9,122,
+242,228, 73, 58,121,242,100, 90,203,215, 71,223,220,142,147,213, 70,200, 59,251, 38, 3,150,234,245,250, 72,133, 66, 17,169, 82,
+169, 34,107,215,174, 29,217,180,105,211,195,205,155, 55, 95,113,224,192,129,207, 22, 47, 94,220,167,147,163, 48, 86,115,225, 0,
+165, 95,190, 71,233, 39,173,233,139,177,237,105, 71, 17,239, 65,153,154, 94, 94,169,197,163,181,171,213,106,122,237,218, 53,122,
+233,210, 37,234,237,238,174,104, 43,226,142,111, 37, 68,187, 86, 78,112,182,181,156, 29,164,156,109,183,126,250,206,162, 61,189,
+131,238, 25,245,158,185,189, 51,103, 93,137,245,246, 81, 74, 51, 6, 12, 24,144, 72, 41,205, 56,116,232, 80, 10,165, 52,163,127,
+255,254,137, 69,161,225,189,165,105,190, 54, 56,233,214, 34,147,245,201,252,249,243, 35, 41,165,145,243,231,207,143, 4, 10, 7,
+ 81,109, 39,229,108,191,189,113,153, 85,127,114, 59, 61, 48, 38,194,210, 78,202,217, 94,106, 57,157,121,199,163,182,174,164,134,
+179,187,232,145,201,195, 45,173,189,157,174, 6, 7, 7, 47,251,236,179,207, 14,223,188,121,243,161,197, 98,121, 28, 31, 31,255,
+120,237,218,181,143, 91,180,104,113,195,205,205, 45,218,206,206,238, 99, 54, 40, 34,211,100,154, 76,147, 13, 88,250,223, 89,120,
+229, 52,157, 28, 39,132,136, 41,165, 83, 7, 14, 28,136, 37, 75,150, 12,174, 87,175,222, 80, 63, 63, 63, 15, 0, 72, 79, 79,215,
+ 0, 80, 12, 28, 56, 16,115,231,206,197,210,165, 75, 87, 20,229,178,252,127, 38,159,101, 18, 66,170, 76,154, 52, 41,123,241,226,
+197,214, 49, 99,198,132, 82, 74, 31, 17, 66,106, 13, 31, 62,252, 19, 30,143, 55, 48, 48, 48, 48, 44, 35, 35, 35, 71,171,213,238,
+ 2,176,177,184,205,180,178, 8, 57,176, 52,174,234,131,179, 28, 88, 74, 52, 13,189, 55,119,238,220, 33,253,251,247, 55,174, 92,
+185,210,172, 80, 40,142,217, 88,238, 20, 0,223, 20,191,118,115,115,243,126,240,224,193,199,158,158,158,156,248,248,120,232,245,
+122, 60,127,254,220, 10,224,215,178, 52, 84,102,186,122,253,161,243, 33, 83, 71,244,116,210, 60,189, 15, 1,151, 11, 19,223, 14,
+153,183,206, 98,235,181,167, 10,181, 17,107,222,100, 59,101, 50,217, 15,147, 39, 79, 30, 62,125,250,116,251,192,192, 64,242,251,
+239,191, 99,255,254,253,250,236,236,236,238,148,210,171,111,122,172,172, 86, 43,236,236,236, 0, 0, 51,102,204, 0,135,195,225,
+103,103,103,219, 17, 66,132,132, 16, 7, 66, 8,215,148,240, 24, 86, 69, 1,178, 10,100, 72,201,146,149,171,103,177, 90,247,223,
+190,125,123, 74,195,134, 13, 57,119,239,222, 69, 78, 78, 14,158, 63,127, 78, 45,148,238,189,170, 49,111,170,108,249, 28, 92,221,
+250, 54,112, 17,114,236,182,205, 69, 91, 3,135,187,193,138, 1, 0, 62, 41,250,120, 43, 33, 68, 0, 32,175,118,237,218, 29,158,
+ 60,121, 34,170, 93,187,182,246,233,211,167,167, 9, 33,126, 0,182,151,218,188, 43, 18,229, 2,200, 61,116,232, 16, 0,140,163,
+148, 90, 9, 33,141,230,205,155,151,113,237,218, 53,204,159, 63, 63, 11,192, 58, 0,144,184,184,245, 14,147, 10,136,221, 47,243,
+209, 66, 15,206, 26, 43, 45,181,115,129,196,211,171, 99, 93, 49, 7,252, 45, 95,163,137,119, 8,199,206,108,172,183, 96,193,130,
+107, 42,149, 74,191,111,223, 62,195, 7, 31,124,192,141,139,139,187, 3,224,122, 81,179,166,153, 53, 68, 48, 24, 12,198, 95,158,
+163,245,250,176, 14,165,231,104,149, 98, 8,246, 16, 66,114,151, 46, 93,218, 17,128,211,129, 3, 7, 26,215,170, 85, 11, 0, 16,
+ 27, 27,235, 16, 18, 18,242,172,126,253,250, 79, 0,220,162,148, 30,183,177, 60,197, 23,126,235, 59,218,190,152,233,211,167,147,
+ 29, 59,118,152,129, 66, 19, 84,116,115, 89, 13, 96,117,121,121, 62,111, 75,112,112,112,151,175,191,254,218,176,101,203, 22,203,
+183,223,126,123,140, 82, 26,247, 38, 58,249,249,249,203, 71,142, 28, 57,124,222,188,121, 82, 71, 71, 71, 18, 29, 29,109,221,186,
+117,171, 34, 63, 63,127,121, 89,223,185,109, 48,239,107, 39,228,245,151,169, 15,116, 25, 28, 94,213,241,201,164, 8,196,222,190,
+142, 93, 87, 31, 43,227,242,181,231,238,154,205,251,223,208,188, 62, 39,132, 52,152, 59,119,238, 12,163,209,216,159,207,231,223,
+ 81, 40, 20, 11, 40,165,191,191,233,126, 50,153, 76, 89,213,171, 87,127,253,119, 76, 86,171,149, 82, 74,249,102,179, 89,236,106,
+180,158,156,183,106,203, 71, 31,132, 72,133,185,185, 50,252, 18,167,208,151,232,108,241, 39,114,114,114, 86,140, 29, 59,118,244,
+188,121,243, 92,156,156,156, 72, 76, 76, 12,221,183,111,159, 42, 39, 47,111,201,155,148, 81, 83,144,127,238,196,193, 3, 3, 91,
+ 27,204,100,103,162,146,242,184,228,116,137,178,158, 7,112,190,232,100, 26, 65, 8, 25, 0,224, 40,165,244,151,114, 53, 53,154,
+115, 0,236, 6, 12, 24,128,232,232,232,193, 0,246, 0,216,251,205, 55,223, 52,159, 59,119, 46, 22, 44, 88,128,121,243,230,117,
+ 1,112, 86, 89,144,119,242,240,222, 93,195,218,155, 76,156,157, 73, 74, 43,151, 67, 78,149,170,153,155,117,254,244,249, 11,189,
+155, 56,249,146, 77,103,175, 91, 53, 86,122,127,212,168, 81, 5, 6,131,225, 44,128, 53, 0,162, 41,165,172,119, 33,131,193, 96,
+252,255, 6,126, 54,149, 98,188, 54, 85,104,180,138,190,124, 1,192, 5, 66,136,119,171, 86,173, 22, 73,165, 82,177,197, 98, 65,
+126,126,126, 26,128, 85, 69,209,153,202,176, 79, 46,151,127, 41, 20, 10, 55,188,163,141,211, 17, 66, 60,107,215,174,205, 7,160,
+ 47,229,243,119, 99,178, 40, 14, 61,143,123,238, 4,138, 67,197,111,197,197,197,237, 13, 11, 11,235,243,244,233,211,223, 40,165,
+167,222, 98, 27, 94, 18, 66, 26, 78,158, 60,249, 11, 0,125, 0,252,154,159,159,191,188,172, 68,248, 98,174,234,205, 3,155,240,
+120,195,239, 39,101,126,108,176,210,106,118, 28, 78,130,218, 72,127,186, 99, 54,239,121,203,125,250, 28,192,152,162,229,173,201,
+205,205,173,112,144, 79, 66, 8,185,250, 34,253,214,227,148,236,210, 58, 91,148, 86,198, 12, 66, 72,131,169, 83,167, 78,181, 90,
+173,131, 56, 28,206,145,220,220,220, 10,247, 89,153,145, 60,131,101,202,134,203,119, 5,171, 44,214,206, 66, 14,231,172,202,100,
+153, 89,198,239,238, 2, 96,211,232,240, 47, 94,188,248,121,193,130, 5,117,231,205,155,135,245,235,215, 23,119,187,188, 48,111,
+222,188,108,139,197,226,191, 96,193, 2,108,220,184,209, 12, 0,122,147,117,218,150,107,247, 57, 27,172,214,247,248, 28,206,105,
+189,201, 58,173, 84, 83,174, 51,127,178,230,240, 25,163,209,106,237,194, 5, 57,157, 97,176,206,209,235,105, 18,187,204, 49, 24,
+ 12,198,255, 38, 60, 91, 87,164,148,102,190,139, 27, 47,165, 52, 30,128,211,172, 89,179,222,165,147,204,254,171,119,212,215,233,
+244, 71, 0, 63,126,253,253,190,146,191,123, 7,168,120, 80, 81, 91,205, 22,128, 79,139, 22,155,185,107, 54,239, 70, 25, 67, 74,
+252,205,158, 6, 40,128, 3, 69,139,173,223, 73, 69,225, 92,150, 83,222,246,247,239,107,104, 6, 10,123, 17,190,203,109,138, 66,
+ 97, 47, 20,164,165,165,149,220,206,135, 69, 11,138,199,148,187,173,166,217, 0,134,219, 88,206,193,236,210,197, 96, 48, 24,255,
+ 59,148,214,116, 88,105,163,197, 96, 48, 24, 12, 6,131,193, 40,245,193,186,204,220, 96, 2,160,115, 25, 95,178, 57,177,157, 16,
+210,249, 13, 10,117,129,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,191, 59,214,253,127,184,176,191,114,
+ 92, 9,214,245,149,105, 50, 77,166,201, 52,153, 38,211,100,154,255,218,133,195, 2,126, 12, 6,131,193, 96, 48, 24,111, 14, 33,
+ 36,188,232,175, 15, 33,100,124,209, 84, 60, 0,202,200,209,226, 55, 91,148,101, 54,155, 61, 1,128,199,227,101,155,238,204,241,
+ 41,239, 7,248, 64, 39, 51,240,115,145,224, 56, 83, 97,119,248,215, 53,207,155,205,102,151, 34,205, 2,211,157, 57,221,202,213,
+108,186,240,236, 31,214,191, 61,187, 75, 41, 91,198,229, 55, 93,152,254, 90, 89,125,109,222, 51, 69,115, 36,254,213,229,252,187,
+104,254,155, 17, 52, 95,148,101, 50, 21,214, 35, 62,159,151,109,188, 93,126, 61, 18, 52, 91,152,254,135,245,111,205,246, 42, 79,
+211, 65, 36,204,171,225,231,177,162, 60,205,248,244,220,169,106,141,206,173, 60,205,202,158,155,254, 62, 62,157, 44, 69,231, 38,
+ 23, 24,151,146,158,126,254,127,169, 46, 17, 66, 26, 3,152, 3,192,169,196,219,209,148,210,207, 89,173,100, 48, 24,127, 35,202,
+156,130,167, 84,163,101, 54,155, 61, 35,143,204,131, 90, 15,116,122,127,161,103, 80,223,141,127,234,213,102,214, 21,216,201, 98,
+246,133,113, 77, 10, 23, 15,158,209, 41, 61, 61,157, 20, 93, 56,127, 6, 16, 80,138,166, 75,228,145,121,208, 24,128,182, 67, 23,
+184, 4, 0, 78, 57, 2,193, 23, 34,177,184,131, 86,171,173, 11, 0, 34,145, 40, 70,171, 86, 95,246, 48, 26,151,191,190,126, 89,
+ 91, 86,178,172, 29, 71, 46,244, 12,237,187,113,178,197,106,181, 75,187,187,161,173, 46, 55,142,199, 55,235,215,205, 2, 78,207,
+ 3, 44,182,236,169, 63,252,238,160,153,110,124,160,163,157,189,125, 3,103, 23,151, 54, 86, 74,107, 91,173, 86, 98, 49,155, 31,
+ 43,228,242,235, 86,179,249,129,217,160,118,139, 60,246,157,181,188,114,190,190, 45,131, 0,222, 17, 96,160, 88, 34,233,192,229,
+243, 91, 2,128,197,100,250, 93,173, 82, 93,238, 7, 28,180,101,219,109,221, 63,111,186,254,191, 13,147,201,236,153,112,118, 30,
+244, 38, 32,124,192,119,158,245,135,255,178, 27, 0, 12,217, 15,188, 84,113,199,154, 1,128,184, 70,207,219, 66,239,240, 44, 0,
+224,189,204,240,140, 61, 49, 27,122, 19, 80,187,231, 2,207,138, 52, 63,152,187,223,109,250,248,254, 66, 0, 56,119,232,199, 90,
+151, 14,175,127, 15, 0, 58,246,159,120,186,235,128, 73,177, 0,176,116,211, 97,183,189,223, 13, 46, 87,211,182,115, 83, 46,144,
+199,157,168,105, 80,100, 56,251,139,121,222,113,113,113, 28, 0,240,245,245,181,233,220,172, 2, 72, 51,128, 79, 56, 92,110,155,
+ 26, 53,107,134, 3,160,241, 47, 94, 68, 89,204,230, 27, 62,192,186,119, 92,151, 38, 83,250,199,193, 89,139,230,194,100, 48, 24,
+140,191, 19, 39,139,204,213,201,215, 63, 40,179,215,161, 90, 15, 92,125, 14,180,107, 94, 31,227,135,247,144,148,252,236,224,198,
+ 5, 1,113,119,127, 13,221,242,203,114, 78,253,250,245,145,144,144, 96, 83, 41, 52, 6,224, 74, 28, 0,217, 19,199, 2,177,248,
+197,202,101,203,156,186,116,233,194,243,245,245, 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 31, 65,246,164, 64,
+ 99,128,242,138, 13, 67,128, 22,151,181,110,173,170,152, 51,105,176, 20, 0,102,189,191,174,241,221,103, 89,174, 47, 94,188,232,
+244,213, 87, 95,229,113, 47, 95, 94,239, 14,108,203, 2, 82,108, 41,231,142,227,183,237,165, 25,123,130, 70, 76,154,116,168,102,
+205,154,146,192,192, 64,226,232,232, 8, 46,151,139,130,130,130,128, 71,143, 30,189,119,231,206, 29,245,133,171, 63,219,221,187,
+211, 59, 62,219,190,153,206,166,109,215,166,219,159,115,116,140, 25,217,175, 95,149,193,131, 7,219,215,168, 81, 3, 0,240,226,
+197,139,224,131, 7, 15, 14, 61,116,232,208, 92,104,211,205, 26, 3,116, 21,109,251, 43, 77, 0,246, 64, 75,103, 79,207, 17, 92,
+ 62,191,174,217,108,246, 43,138, 54,164, 89, 76,166, 24, 89,118,246,174,215,215,103,252, 25,189, 9,120,146, 1,116,110, 19,142,
+145,253, 59,139, 1,224,171, 33,139,154,191, 76,124, 46, 48, 24, 12,168, 21, 82,187,213,183,223,173, 56, 11, 14, 7, 59, 15, 95,
+120,181,190, 45,154,209, 79, 18, 48,239,219,149, 72,127,120,176,185, 69,254,188,131, 82, 33,231, 2,128,147, 84,218,255,224,190,
+ 61,151,125,195, 6,222,122,158,107,180, 73,179,188,115,243,204,190,181, 62,169,143, 46,215,249,233,220, 86,126, 64, 64, 0, 30,
+ 62,124, 88,185,115, 83,254,204,209,234,227,243,120,249,151, 95,122,183,109,219, 22, 18,137, 4, 60, 30, 15,102,179,185,243,141,
+ 27, 55, 58,207,155, 55,111, 34,228,207,212,182,158,155, 54,176,156, 16,210,225,131,241,147,125,122,244, 25,136,254,221, 91,177,
+138,200, 96, 48,254, 86, 16, 66,198, 23,245, 58,124,213,243,176,100, 47,196, 82,141, 22,143,199,203,238, 50,106,177,103,155,102,
+245,112,247, 65,172, 60, 41, 57, 67, 85,252, 89,126,204,193, 90,125, 90,249,213,185,118,237, 42,244,122, 61,126,255,253,119, 60,
+120,240, 0,137,137,137,152, 48, 97,130,158, 7,140, 43, 67,179,160,237,208, 5, 46,144,199, 73,130,237,158, 85,187,240,244, 41,
+ 87,167,211,225,218,181,107, 40, 40, 40,128,157,157, 29,170, 84,169,130,174, 93,187,242,158, 62,125,234,218,169, 75,119,105,219,
+238,195, 18, 32, 13, 86,241,120,188,130,178, 54,144,199,227,101,119,122,127,161,103,157,224,170,120,145,148, 46,159,243,221, 22,
+149,213, 74,121,241,137, 47,141, 87,175, 94, 69,120,120, 56,206,159, 63,239,150,159,159,255,245,186,117,235,230,240,191,255,105,
+181,201,144, 55,173, 28,189,130,182, 67, 23,184,184,101, 31, 8,188,116,230,168, 32, 38, 38, 70,176, 97,195, 6,228,229,229,193,
+206,206, 14,206,206,206,240,246,246, 70,173, 90,181,200,172, 89,179, 36, 61,123,198,224,211,113, 3, 3,141, 65, 99,159,149, 85,
+206, 87,219,174,122,233,224,174, 56, 87,227,240,201,147,156,214,173, 91,255,225,177,189,122,245,234,232,214,173,155,253,136, 17,
+ 35,106, 12, 30, 58,220,218, 54,226,131, 23,144, 4,106, 42,212, 84,167,136,220, 52, 55,125, 59, 15, 29,122,108,193,130, 5,206,
+222,222,222, 16,139,197, 0, 0,185, 92, 94, 37, 41, 41,169,249,220,185,115, 7,220,142,222,199,107,219, 51, 37, 29, 98,127,109,
+121,251,243,223, 10,159,207,203, 46,142, 34, 57,138, 69, 5, 41,169, 89,106, 0, 48, 24, 12, 48, 24, 12,208,235,245,248,120,226,
+ 4,238,184, 1, 77,107, 6,182,153,124, 63, 49, 45, 43,191,246,133, 91,174,197,223,173, 72,147,167, 73,148,201,146, 47,142,155,
+247,229,151,222, 94, 94,255,105, 17,220,185, 99, 7, 55, 63, 63,191,243,188,121,243,234, 80,135,246,178,218, 61, 23, 56,151,167,
+ 89,222,185, 41,139, 61, 89,237,219, 73,221, 26,108,252,238, 4, 44, 22, 11,110,222,188,137,107,215,174, 97,197,138, 21,244,244,
+233,211,114, 39,177,184,130,115,243,153, 99,107,159,204,160,239,191, 63, 68,132, 66, 33,126,253,245, 87, 60,125,250, 20, 28, 14,
+ 7,245,235,215,199,200,145, 35,209,185,115,103,239,241,227, 39,208,182,221,135,196, 67, 26,162,124,155,186, 68, 8,225, 0,152,
+ 60,115,222,247, 62,239,143,253, 4, 75,191,157,197,140, 22,131,193,248,219, 70,179,202, 28,226,129, 82,138, 19, 39, 78,208,162,
+165, 29,165, 20, 20,224, 84,239,187,113,239,129,123,214,147,213,251,110,220, 75, 1, 14, 5, 56, 78, 64,213,134, 13, 27,154,100,
+ 50, 25,189,115,231, 14,253,248,227,143,213,171, 87,175,190,124,242,228,201,131,102,163,113,179,175,143,207, 15, 20,224,148,154,
+121, 15,112, 2, 1,169,131,131, 67, 78,114,114, 50, 61,117,234, 20,157, 63,127, 62,221,181,107, 23, 61,125,250, 52,189,112,225,
+ 2, 61,125,250, 52,221,187,119, 47,141,142,142,166,177,177,177, 84, 44, 22,231, 4, 2,210,114, 52,185, 20,224,214,234,187, 97,
+218,161,187,166, 5, 33,125, 55, 78,161, 0,215, 5, 8,109,216,176,161,229,224,193,131,116,231,206,157,244,151, 95,126,161,209,
+209,209, 52, 55, 55,151,242,132,226,156,226,239,149, 85, 78, 10,112,252,252,252,114,100, 50, 25,245,247,247,167,118,118,118,212,
+203,203,139,214,170, 85,139, 54,111,222,156,190,247,222,123,116,248,240,225,244,235,175,191,166, 50,153,140,218,219,219,103, 21,
+127,175, 44,205,112, 64, 36, 22,139,147, 35, 35, 35,105, 89,104,181, 90,154,155,155, 75,207,158, 61, 75,197, 98,113,114, 56, 32,
+ 42, 79, 83, 4, 52, 10, 11, 11,203,201,205,205,165, 70,163,145, 38, 39, 39,211, 71,143, 30,209,167, 79,159,210,228,228,100,170,
+213,106, 95,105,199,198,198,210,160,160,160, 28, 17,208,168, 76,205,127,243, 82, 92, 39, 94, 91, 2,188,188,222,243,246,246,214,
+ 30, 58,116,136,166,165,165,209,237,219,183, 83, 14,176,232, 79,235,150,163,105, 7,116,109,221,186,181,229,230,205,155,244,254,
+253,251,116,198,140, 25,180, 91,183,110,180,123,247,238,116,222,188,121, 52, 53, 53,149,166,166,166,210,247,222,123,207, 98, 7,
+116,173,168,126,150,118,110, 74,129,128,158, 61,123,106,141, 70, 35,141,143,143,167,117,235,214, 77,229, 2, 35,196, 64,157,118,
+128,176,162,250,233, 7,184,248,248,248,100,220,188,121,147, 30, 62,124,152, 6, 6, 6,230,112,129, 15,156,128,234, 78, 64,117,
+ 46,240, 65,245,234,213,115,110,222,188, 73,243,242,242,104, 64, 64, 64,134, 31,224,242,166,117, 9,133, 19,108,111,157, 57,239,
+123,250, 44, 85, 77,103,206,251,158, 2, 72, 46, 26,208,245, 60,171,147,108, 97,203,191,111,249,147, 23,249,167,245, 58,140,136,
+136, 32, 0,174,148,103,217,180, 92,238,226,165, 75,151,242,116, 58, 29,182,108,217,162, 28, 52, 96,192,129,118,109,218,196, 87,
+ 11, 12,148, 17, 14,167,194,185, 11,115,132,194,207,150, 46, 93,234,108, 48, 24,112,239,222, 61, 52,110,220, 24,222,222,222,144,
+ 72, 36,144, 72, 36,240,244,244, 68, 72, 72, 8,178,179,179,225,232,232,136,233,211,167, 75,115,132,194,207, 42,210,181, 90, 41,
+ 15, 0, 44, 86,171,157, 0, 24, 31,212,164,201,189,185,115,231,114,220,220,220,224,234,234, 10,137, 68,130,167, 79,159,194, 96,
+ 48,192, 65,228, 96,211, 32,173, 28, 14,135, 35,145, 72,112,233,210, 37, 76,158, 60, 25, 45, 91,182,132,179,179, 51, 28, 29, 29,
+ 81,183,110, 93,116,237,218, 21,227,198,141, 67,124,124, 60,136, 13, 73, 37,143,121,188, 79,198,141, 27,231, 25, 30, 30, 94,234,
+231, 58,157, 14, 50,153, 12, 57, 57, 57,168, 82,165, 10, 6, 14, 28,232,249,152,199,251,164, 44, 61, 55,192,187, 74,112,240,177,
+ 59,119,238,184,139,197, 98,236,220,185, 19, 71,143, 30,197,153, 51,103,112,234,212, 41,156, 56,113, 2,191,254,250, 43,114,114,
+114, 0, 0,193,193,193,216,191,127,191,187,196,211,243,132, 27,224,205, 30, 64,108,227,101, 86,214,185,186,153,153,238, 35,134,
+ 15,191,174, 82,169, 48, 98,196, 8, 44, 94,178,100, 22,223,198,209,232, 67, 0,169,171,143,207,182,239,191,255,158,147,153,153,
+137,126,253,250,229, 46, 95,178,228,195,168,179,103,107, 68,158, 57, 83, 99,241,130, 5, 31,182,107,215, 46, 55, 53, 53, 21, 59,
+118,236,224,120, 5, 4,108, 11, 1,164,149, 45,167, 18,152,188,106,213, 42,123,157, 78,135, 46, 93,186,196, 91, 99, 98, 66,204,
+192, 30, 21,240,244, 10, 96,172,232,251, 25,192, 39,211,167, 79,247, 22, 10,133,248,226,139, 47,114, 53, 47, 95,214, 51, 3,191,
+200,129, 36, 57,144,100, 6,126, 81, 38, 36,212,123,255,253,247,115,133, 66, 33, 86,174, 92,233,157,241,159, 73,183,109,141, 96,
+ 53, 38,132, 28, 35,132, 92, 5,144,254,193,248,201, 31,132, 55,109,129, 29,155,215,225,187, 5, 95,109, 3, 48,136, 16,178, 11,
+192, 52, 86,243, 24,140,127, 39,182,120,145,255,213,230,195, 50, 91,202, 94,197,189, 78,158,164, 0,218,151, 39,228,226,230,214,
+184, 94,189,122,184,118,237, 26,194,194,194,238, 56, 59, 59,155, 5, 66, 33,248,124, 62,168,181,226, 57,162, 69, 98,113,167,206,
+157, 59,243,110,221,186,133,160,160, 32,136, 68, 34,240,249,252, 63, 44, 2,129, 0, 62, 62, 62, 80, 40, 20,232,212,169, 19,127,
+205,154, 53,157,160,215,127, 91,225, 13, 49,238,145, 36,231,214,247,195,127,222,190,173,122,219,182,109, 33,151, 43, 96,181, 90,
+225,224,224, 0,131,193, 0, 30,143, 87,216, 4,100,162, 10, 91,118,154,197, 98,177,112,185, 92, 4, 5, 5, 97,241,226,197,208,
+233,116, 16, 8, 4, 0, 0,133, 66, 1,153, 76,134, 71,143, 30, 33, 41, 41,201,166,249, 20, 29,165,210, 30,131, 7, 15,182, 43,
+237, 51,189, 94, 15,185, 92, 14,185, 92, 14,153, 76, 6,157, 78,135, 22, 45, 90,216,157, 60,113,162, 7,242,242, 74,157, 88, 90,
+111,111, 63, 96,199,142, 29,158,118,118,118,208,106,181, 80, 42,149, 72, 73, 73,193,203,151, 47,117,217,217,217,102, 71, 71, 71,
+ 78, 96, 96, 32, 71, 40, 20, 10,251,246,237, 75, 20, 10, 5, 8, 33,232,217,179,167,219,238,157, 59, 7, 3, 88,193, 78,105,219,
+ 56, 7,232, 27, 25, 12,189,154, 53,109,122,233,206,221,187,225,159,125,246, 25,162,163,163,191,119,216,183,239,170, 6,120, 80,
+222,119,227,129, 79,126, 40, 97, 96,232,203,151, 97, 70, 32,167,196, 42, 73,129, 9, 9,103,222,127,255,253,135,209,209,209,238,
+ 43, 87,174,244, 30,212,175,223, 39, 0, 22, 85,166,140,142, 82,105, 19, 31, 31, 31,156, 62,125, 26,201,137,137, 95,153, 1,109,
+101,190,207,225,114, 91,183,109,219, 22,191,254,250, 43, 82, 95,190,252,202,252,199, 50, 22, 62, 40, 1, 57,188,248,248,175,182,
+109,219,182,117,204,152, 49,224,242,120,173, 97, 54, 87,230,103,254,148,248, 62,102,194,103,216,182,105,205, 54, 0, 99, 41,165,
+ 86,188,163, 41,173, 24, 12,198,223,180, 13,206, 6, 47,242,119, 49, 91,197, 77,137,149,138,104,121,122,122,250, 73, 36, 18,164,
+167,167,163,118,104,104,182, 80, 40,132, 29,159, 15,123, 59, 59,155, 10,161,209,104,194,124,125,125, 33,151,203,225,238,238, 14,
+129, 64,240,106,177,179,179,123,245,191,163,163, 35, 56, 28, 14, 2, 2, 2,160,209,104,194, 42,212,205,122,228,185,111,205,196,
+143,111, 94, 61, 93,189, 95,191,254,112,113,113,133,191,127, 21,120,122,122, 66, 36, 18,193,223,223, 31, 53,106,212,160,203,151,
+ 47,135,131,103,125,155, 46,228, 37,205, 19,143,199,131,197, 98, 65, 86, 86, 22,158, 61,123,134,232,232,104,220,188,121, 19,247,
+239,223,135, 82,169,132, 45,243, 86,107,180,218, 6, 60, 30,175, 84,147, 37,147,201, 32,147,201, 94, 25,173,156,156, 28, 36, 37,
+ 37, 65,165, 86, 55, 44,199,244,246,175, 87,175, 30, 23, 0, 68, 34, 17, 26, 54,108,136,141, 27, 55,154,143, 31, 61, 58,164,206,
+205,155,174,254,103,207, 58,255,188, 97,195,144,129, 3, 7, 90,110,221,186, 5,133, 66,129, 39, 79,158,192,195,195,131,103,103,
+111,207,230,202,171, 36,145,128,218, 93,169,236,222,178,101,203, 4,185, 92,142,101,203,150,113,248,142,142,155, 22, 0,220,114,
+191,200,229,182,106,219,182, 45,142, 29, 59,134,244,151, 47,103,188, 44,197,192,188, 4,114,146,227,227,103,108,219,182, 13, 93,
+187,118, 5,225,241, 42,157,168,212,188,121,243,122, 86,171, 21, 15, 31, 62,132, 51,112,187,178,223,175, 81,179,102,120,113,228,
+ 87, 12, 92, 47,107, 61, 49,112, 61, 42, 42, 10, 34,145, 8,181,235,212,105, 84,201,159, 89, 78, 8,201, 24, 51,225, 51, 28, 62,
+243, 27, 0, 96,219,166, 53, 89, 37, 76, 22,131,193, 96, 17,173,191,101, 68,171,216, 88,149, 92, 94, 61,200, 86, 82, 4, 0,192,
+231,243, 97, 39, 20,194,206,206,174,208, 32, 9,133,149,113,124,176,183,183,127,101,172, 74, 26,172,146,255, 59, 56, 56,216,100,
+ 96, 0,160,224,249,153, 54, 99, 63, 28, 99, 39, 20, 10, 97, 48,232, 65, 41,133, 80,104, 15,103,103,103, 4, 5, 5, 65,161, 80,
+160,101,171,118,250, 20,153,224,132, 91,237,190,209,111,178, 3,205,102, 51,212,106, 53, 10, 10, 10,144,159,159, 15,133, 66, 1,
+173, 86,107,115, 87,116,171,213,202, 77, 73, 73,193,158, 61,123,144,151,151, 7,160, 48,209,186,216, 92, 21,255, 77, 72, 72,192,
+206,157, 59,145,152,152, 88,169,227,211,166, 77, 27,156, 56,113,130,219,190, 83,167,205,231, 3, 3,211,207, 7, 6,166,183,239,
+212,105,243,177, 99,199,184,126,126,126, 72, 74, 74,194,189,123,247, 80, 80, 80, 0, 74, 41,235, 63,255, 6,188, 0, 10, 52,249,
+249, 99,102,205,154, 69, 37, 18, 9,150,253,240, 67,131, 69,192, 48, 91, 13,140,180, 28, 3, 35,125, 59, 3, 3, 74, 41,172, 86,
+ 43, 44, 22,203, 27,109, 27, 33,132,240,249,252,202, 14,173, 64, 42,161,255, 42,241,125,250,215,139,113,234,215,131,197, 31,197,
+ 49,147,197, 96, 48,254,238,148, 55,215, 33,175,132,131,124,245,183, 44,178,178,178,210,212,106,117,245,192,192, 64,164,166,166,
+122, 6, 4, 4,188,180,227,243, 33,176,179, 3,225, 84,236, 9, 28, 28, 28, 30,166,167,167,183,242,243,243,131,217,108,126,101,
+170, 94,111, 58, 44,142,210,220,191,127, 31, 14, 14, 14, 15,161, 43,119,228, 4, 88, 12, 5, 85, 27, 53,106,244, 42, 50,228,236,
+236, 12,103,103, 41,132, 66,123,204,158, 61,219,186,114,249,242,117, 1, 29, 23,200, 71, 79,153, 69,103, 45,218,252, 78,119,174,
+173, 55, 38, 7, 7,135,135,254,254,254, 45,164, 82, 41, 14, 31, 62,140,164,164, 36, 20, 20, 20, 64,163,209, 64,175,215, 67,163,
+209,192, 96, 48,192,222,222, 30,117,234,212,129,147,147, 19, 46, 92,184,240, 16,122,125,233,230, 50, 47,239,240,195,135, 15, 91,
+ 52,109,218,244, 85, 68,165, 67,135, 14,164, 67,135, 14,238,175,162,104, 26, 13,114,115,115,113,231,206, 29, 92,184,112, 1,132,
+ 16,196,197,197, 89,244, 90,237, 94,118, 90,188, 25, 58,224,119,238,182,109, 91, 63,250,232,163, 15, 91,181,106, 5, 11,240, 30,
+128,157,255, 45, 3, 83,204,205,155, 55, 31, 89, 44,150, 86,181,106,213,130, 12,104, 6,224,215, 74,153,200,231,207,163,204,102,
+115,167, 6, 13, 26,224,240,129, 3,109, 0, 36,149,182,158, 26,104, 19, 30, 30, 14,173, 86,139, 39,143, 31, 71, 86,194,100,109,
+158, 57,239,251, 15,222, 31,251, 9,118,108, 94,135,109,155,214,164,108,221,184,218, 31, 54,228,143, 49, 24,140,127, 85, 52,171,
+ 66, 47,242,191, 72,105, 57, 90,197,230,139, 87, 25, 33,121, 65, 65,100, 84, 84, 84,245, 70,141, 26, 97,243,230,205, 77, 91,182,
+104,145, 38,176,179, 51,219, 9, 4,224,216,112, 35,209,170,213, 23, 47, 94,188,216,172,111,223,190,188, 91,183,110,193,219,219,
+251,149,209, 42,254,203,227,241, 64, 41,133,131,131, 3,142, 28, 57, 98,212,170,213, 23, 43,140, 22, 89,172, 22, 78,145,209,163,
+148, 66, 38,147, 65, 32, 16, 96,197,138,149, 88,187,124,249,112, 11,112, 48, 88,236,241, 37, 0,251,255,218, 13, 90,163,185,116,
+234,212,169,198,115,231,206,229, 87,169, 82, 5, 50,153, 12, 5, 5, 5,200,203,203,131, 66,161,128, 66,161, 64, 65, 65, 1,100,
+ 50, 25,236,237,237, 17, 29, 29,109,210,105, 52,151,202,210, 19,234,116,135, 70,141, 26, 53, 61, 42, 42,202,135,199,227,193,100,
+ 50,193,106,181,194,106,181,194,104, 52,226,249,243,231,136,137,137,193,211,167, 79,145,159,159, 15, 62,159, 15, 46,151,139,251,
+247,239, 23,136, 77,166, 3,236,148,126,115,248,192,225, 27, 55,110,124, 56,114,228, 72,248, 86,169,210, 14,169,169, 54, 25,152,
+163,229, 24, 24,249, 27, 24,152, 63, 24, 32,165,242,110, 66, 66, 66,171,246,237,219,195,167, 74,149,239,235,164,166,158,127, 92,
+137, 60, 45,139,217,124,253,198,141, 27,157,222,127,255,125,108,222,188,249,123,143,132,132, 51, 57,175, 53,115,122, 0, 30,213,
+106,212,248,254,131, 15, 62,192,185,115,231, 96, 49,155,175,151,115,209, 41, 57,226,123,213, 15,198, 79,246,127, 45,241,125, 35,
+ 33,100, 18,128,101,172, 70, 49, 24,140,127,114, 68,171, 82, 77,135, 34,139,101,230,180,105,211, 76, 28, 14, 7,253,251,247,119,
+252,245,216,177,129,247, 31, 60, 8,202,206,206,118,182, 88, 44, 21,106,121,232,245,171,167, 77,155, 38, 51, 24, 12, 8, 9, 9,
+ 65,126,126, 62, 44, 22, 11,120, 60, 30,120, 60, 30, 8, 33,224,112, 56,144, 72, 36,136,138,138,194,214,173, 91, 21, 30,122,253,
+234, 10,111, 18, 22,203,195,157, 59,119,130,203,229, 82,123,123,123, 16, 66,192,227,241,176,114,229,202,236,181,192, 97, 0,224,
+114, 56, 6, 0,224,112,136,173,217,187, 21,182, 91,218,217,217,193, 90,216, 9,160,194,117, 93,244,250, 85, 75,151, 46, 85, 62,
+121,242, 4,106,181,250, 85,244, 77,165, 82,189, 74,174,151,201,100, 32,132, 64,173, 86,227,216,177, 99, 74, 23,189,126, 85, 89,
+122,121, 64,102,106, 92, 92,239,166, 77,155,230, 37, 36, 36, 64, 46,151,227,225,195,135,184,112,225, 2,246,239,223,143,115,231,
+206,225,249,243,231, 48,155,205,240,243,243, 3,165, 20, 71,143, 30,149,155,149,202,247,242,128, 76,118, 90,148, 77, 85,111,239,
+ 78, 94,158,158,201, 30,238,238,169, 85,189,189, 59,189,254,185, 20,136,141,141,141,133,217,108, 70, 80, 80,144,107,121,121, 90,
+212,108,190,113,227,198, 13,188,255,254,251,240,175, 94,125, 73, 32,224,241,250, 58,129,128, 71, 96,141, 26, 75,138, 13, 12, 53,
+155,111, 84,182,204,142,192,154, 47,191,252, 82, 43, 16, 8,176,111,223,190, 32, 83,205,154, 79,121,192, 48, 9, 16,218, 30, 16,
+ 84,244,125, 31, 96,221,215, 95,127,157, 73, 8,193,174, 93,187,220,165, 53,106, 60,226, 1,163,164, 64, 85, 41, 80,149, 7,140,
+146,214,168,241,104,223,190,125,238,102,179, 25, 83,166, 76,201,244, 1,214,149, 35, 57,153, 82,218,139, 82,218,150, 82,234,191,
+117,227,106,156,250,245, 96,177,201, 26, 75, 41,189, 67, 41, 29, 73, 41,125,196,106, 28,131,193,248, 39, 67, 74,203,131,226, 55,
+ 91,148, 5, 80,207,118,205,235,227,238,131,103,114,119, 23,167,179,197,159,229,199, 28,172,213, 49,204,169,254, 79, 63,253, 4,
+ 62,159,143,148,148, 20, 60,126,252, 24, 78, 78, 78, 24, 62,124,184, 94,171, 84,246, 46,158,235,144, 16,210,153, 82,122,161, 72,
+179,112, 62, 53,121,156,164, 6, 47,186,250,153, 83, 39,184, 82,169, 20, 42,149, 10, 28, 14, 7,246,246,246,112,112,112,128, 72,
+ 36,194,189,123,247, 16,209,171,143, 37,199,161,237,171, 1, 75,139,231, 83, 43,169, 9, 66,184, 0,208, 12,112,136, 2,190,240,
+244,245,157, 54,103,206, 28, 81,183,110,221, 32, 16, 8, 80,165,106,112,102, 80,247,101,107, 56, 28, 98, 78,205, 83,204,174, 81,
+213, 87,250, 56, 46, 9, 0, 41,156, 19,177,104,174,195,210,202, 25, 96,184, 26,116,228,151,229, 78, 13, 27, 22,230,163,203,100,
+ 50,100,101,101, 33, 59, 59, 27, 50,153, 12,106,181, 26, 0,112,226,196, 9,156,186,246, 84,161,173, 50, 48,190,172,114,254,103,
+219,159, 57,250, 26,111, 87,219,189,243, 23,174,135,135, 7,178,178,178,144,147,147, 3,153, 76, 6,173, 86, 11,139,197,130,252,
+252,124,108,217,246,139, 37, 79,210, 54,177,120, 64,200,114, 53,213, 41, 34, 87,213,111,126,225,117, 2,233,135, 31,126,232,232,
+228,228, 4,171,213,138,130,130, 2, 36, 39, 39, 35, 33, 33, 1,215,174, 93, 83,103,203, 12, 80,187,119, 73, 45, 30,176,180,212,
+253,249,238, 66,168,127, 63,205,162,186, 4, 0,190, 62, 62,233, 47, 95,190,244,180, 88, 44,240,243,243, 51,203,242,243,151,216,
+ 1,231, 28,129, 12, 0, 52, 23,152,179,106,205,154, 49,125,250,244, 65,147, 38, 77, 82, 50,179,178,170,149, 86,151, 64, 8, 55,
+ 4,144,106,170, 84,137,185,115,231,142,119,114,114, 50,222,127,255,253,220,151, 47, 94,204,144, 22,229,107,201,129, 54,129, 53,
+106, 44,217,183,111,159,123,245,234,213, 17, 22, 22,150,105,159,156, 92,247, 25, 32, 47,163,126,150,121,110,202, 98, 79, 86,155,
+216,175, 94,147,143, 63,254, 24,102,179, 25,215,174, 93,195,237,219,183,241,242,229, 75,252,246,219,111, 50, 39,177,120, 72,241,
+ 92,135,101,213,207,247,130,213, 65,187,118,237, 36, 2,129, 0,219,182,109, 67, 84, 84, 20, 0, 32, 60, 60, 28, 31,124,240, 1,
+204,102, 51, 70,140, 24, 73, 79, 62, 19,197,151, 87, 63, 9, 33,245, 0,252,128, 66,147,215,132, 82,106, 79, 8, 73, 7,224, 95,
+153,156, 44, 86, 63,153, 38,211,252,247,104,254, 83,169,112,174,195,133,235, 33,253,227, 52, 31,227,210, 15,110, 92,192,107,221,
+166,109,232,130,249,243, 56, 77,155, 54,133,191,191, 63,194,195,195,145,156,156, 44,116,118,118,174,104, 62, 53, 85,219,238,195,
+ 18,234,215,175,239, 60, 99,198, 12,105,215,174, 93,249,254,254,254,160,148, 34, 42, 42, 10,135, 15, 31, 54,110,222,188, 89,161,
+241,234, 37,139,188,188, 71,101,203,124,106,183, 1, 13,128,111,170,164,167,111,250,100,226,196,121, 13, 27, 53,250,112,254,252,
+249, 28,137,131,136,191,120,246, 88,123, 0, 88,248,227,126,105,159,129,195,177,170, 38,208,110, 88,233,243,200,149, 44,103,114,
+234,184,151, 61,250,117,170,249,197,164, 49,150,193,131, 7,139,157,156,156,224,239,239, 15, 23, 23, 23,196,199,199, 35, 53, 53,
+149, 30, 63,126, 92,117,243,126, 44,255,232,185,187, 47,237,165, 62,182,204, 75,168,108,219,109, 80, 98,143, 30, 61, 92, 70,141,
+ 26,229,216,184,113, 99,190, 80, 40,132, 80, 40, 68, 86, 86, 22,158, 63,127,110, 60,126,252,184, 74,227,249, 94, 65,228,229,125,
+ 74, 27,231, 58,212,182, 29,186,224,249,245,243,243,167,196, 60,124, 56,210, 10, 52, 48, 26,141,126, 22,139,133,112, 56,156, 12,
+171,213,250,208,168, 84,110,213,135,207, 95,201,230, 58,180, 13,139,197, 34,176, 88, 44,144,201,100, 56,127,254, 60,239,197,139,
+ 23,115, 30, 60,120, 48, 39, 61, 61, 29, 38,147, 9, 3, 6, 12, 64,120,120, 56, 46, 95,190,140,156,172,172,227,229,105, 61, 3,
+228,194,212,212, 15,198,141, 27,119,122,231,206,157,156, 7, 15, 30,184,111,219,182,109, 75,105, 6,102,228,200,145,214,172,228,
+228, 15,244,128,188,156,250, 89,222,185,153,123,102,223,218, 7,125,251, 15,172, 51,127,238, 28,126,203,150, 45,225,238,238,142,
+ 54,109,218,192,104, 52, 58,215,174, 93,187,162,115, 83,217,182,251,144,248, 6, 13, 26,136, 87,174, 92,233, 61,102,204, 24, 76,
+154, 52, 9, 0,160,213,106,113,238,220, 57, 76,153, 50, 37, 51,153,215, 76, 93, 81,253, 44,138, 84, 21, 27,176,171, 0,218, 2,
+136,103,137,239, 12, 6,227, 31, 25,181, 34, 36,156, 82, 26, 69, 8,241, 1, 16, 1,224, 36,165, 52,163, 76,163, 5,252,103, 62,
+181,235,183, 31,161,228, 52, 31,133,248, 60, 54, 7,140,122, 49, 97,218,146, 48,174, 73,225,194, 39, 58,167,184,216, 88, 82,209,
+156,135,175,230, 83,147, 6,171,220, 18,246, 54, 93,188,112,225,103,171, 86,173,234, 84, 60,132,131,131,131,195, 67,173, 90,125,
+209, 67,175, 95,173,145, 6, 95,172,236,220,124,169, 64, 22,128,137, 46,145,145,107,122,246, 25,176,212,222, 53,136, 63,107,209,
+102, 29,151,195, 49, 60, 79,207,193,170,154,128,216,134, 14,146, 26, 3, 16, 35,243, 49,103,185, 13,124,246,245,151, 95,126,177,
+240,155,111,154, 74, 36,146,118, 70,179, 57,216,106,181, 2, 86,107,156, 70,173,190, 74,141,198, 59,250,240,185,203,237,165, 62,
+212,230,121, 9,157,107, 43, 93, 19, 15, 54,221,190,117,235,228, 3, 7, 14,252,105,219,221,244,250, 53, 26,231,218, 23,108,217,
+246,146,235,232,128,223,145,157,253,123,153,149, 0,108,174, 67,155,159, 62,172,214,241, 46, 46, 46, 59, 58,117,234,100,223,185,
+115,103, 68, 68, 68,160,101,203,150,176, 90,173,160,148, 66,169, 84, 98,255,254,253, 88,186,116,105, 92, 53,224,155,138,244,244,
+192, 69,225,169, 83,239, 53,104,208, 96, 91,121, 6,166,200,100, 85,152,147, 88,254,185, 41,140, 51, 75,123, 39, 13,253,100,113,
+ 77,131, 34,195,217,205,193,236, 29,243,232, 33,199,246,115, 51, 68,105,137,218,223,108, 64,191,126,159,112,121,188, 54, 69, 61,
+ 32,233,147,199,143, 35,139, 39,149, 70,248, 7,231, 43, 89,151,138,199,174, 99,137,239, 12, 6,227,159, 74, 56,128, 40, 0, 17,
+148,210, 77, 69,201,241,101, 39,195,243,120,188,236,226,168, 15,143,199,203,142, 63, 58, 97,120,121,234,124,160, 83, 81, 36, 11,
+ 21,206,117, 88,244,127, 18,160,132, 94,255,237, 31, 6, 35, 45,209,187,144,255,218,250,149,217,218, 2,224, 25,204,250,158,200,
+126, 12, 28,155, 88,168,215,116,225, 87, 37,183,169,204,155,236, 31,126, 87,144,175, 3,174, 67,165,186, 14,149,170,212,164, 93,
+ 62, 79,144, 95, 81, 57, 95,223,246,100, 64,241,182,219,206,171,228,254,225,189,197,254,252,183,145,150,155,123, 20,128,164,202,
+137, 19, 94,103, 78,156, 24,252,197,212,169, 3,124,124,125,107,184,187,187,187, 56, 58, 58,114,110,221,186,149, 96,214,233,214,
+ 52, 4,182, 23, 69, 83, 43, 68, 15, 92, 12, 73, 78,174, 59,168, 95,191, 79, 8,143,215,186,164,129,161,102,243,111, 65,192,186,
+242, 34, 89,111,122,110,250, 11,125, 58, 21, 69,178,192,181,241,220, 76, 45, 44,199, 34,152,205,139, 16, 29, 93, 74,157,175,116,
+ 93, 90, 72, 8, 81,130, 37,190, 51, 24,140,127, 46, 39,139,204,213,201, 63,125,242, 87,206,239, 3,160, 51,211,100,154,255, 20,
+205, 66,175, 2, 39,182, 63,153, 38,211,100,154, 76,243,221,107,254, 83, 23, 30, 51,161, 12,134,109,208,194,228,116, 5,219, 19,
+ 12, 6,131,193, 40, 73,137,220,172,146,247,140, 77, 64, 97,234, 78,231, 50,110, 42, 23, 42,241, 3,157,223,224,166,117,129,105,
+ 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,142,189, 25, 9, 33,227,139,115,179, 94, 31, 83,139,216, 58,205,
+205, 27,254, 48,235,250,202, 52,153, 38,211,100,154, 76,147,105, 50,205,127, 52,229, 69,180, 56,108,247, 48, 24, 12, 6,176, 96,
+ 1,225, 0,132, 0, 11, 56,192, 65, 46, 48,136, 91,248,250,205, 25, 52,136,148, 58,152,237,228, 17,174,142,108,143, 51, 24,255,
+ 28, 40,165, 25,101, 77, 42,205,114,180,254,187, 14, 56,192,219,219,123, 35, 0,146,153,153, 57,158, 82,154,204,246,202,255, 30,
+110,110,110,157,204,102, 51,228,114,249,197,127,226,246,213,173, 73,250, 81, 14,106,255,231,138,129,228,199,113,116, 71,105,235,
+214, 9, 38,239,131,252,103, 44, 46, 98,197,147,152,231,244, 72, 37,234, 60,231,189,206,254,235, 0,224,244,133,148, 79,254,138,
+113,181, 8, 33,181, 60, 60, 60,206,242,120, 60,158,197, 98,153,152,149,149,117,162,108, 35, 52,136, 11, 0,124,122,121,166,187,
+107,232,140,207, 63, 34,124,141,126,171, 76,175, 85,203,185,124,110,162,144,239,125, 3, 92,191,211, 5,170, 22,143, 75,251,254,
+129, 3, 7,202,156,197,187, 94, 48,121, 47,180, 78,157, 94,141,194, 68,241, 63,172,110,186,170, 93,144, 59, 63, 33,229,190,228,
+251, 13,242,141, 78,174, 85,123,141, 26,226,118,130,231, 64, 70,110,217,146,171, 98,103,153,237,124, 71,136,171, 17, 8,227, 11,
+133,254, 22,179,217,139, 0,148,203,227,101,153,244,250, 20, 1, 16, 61,131, 82,217, 63, 93, 83, 32, 20, 86,177,152,205, 94, 0,
+240,191, 88, 78,198, 31, 41,211,104, 57, 58, 58,222,227,112, 56, 85, 74, 78,134, 91, 60,159, 96,241,123, 37, 63, 35,132,192, 98,
+177,164,230,231,231, 55,174,196, 5,209, 9,192, 96, 0,197, 93,212,119, 3,216, 79, 41, 85,188,225, 5,214, 73, 32, 16, 76, 19,
+139,197, 29,181, 90,109, 93, 0, 16,137, 68, 49,106,181,250,146,209,104,252,225, 77,116, 9, 33, 60, 0,131, 36, 18, 73, 7, 14,
+135,211,129, 82, 74, 40,165,151, 85, 42,213, 37, 0, 7, 40,165,230, 55,208, 20,121,122,122, 46, 10, 13, 13, 29, 54,115,230,204,
+ 60, 55, 55,183,144, 41, 83,166,220,245,240,240,216,147,155,155, 59,155, 82,170,253, 95,168, 28,132,144, 26,222,222,222,187,249,
+124, 62, 55, 37, 37,165, 3, 0,248,251,251, 95, 54, 24, 12,150,236,236,236,225,148,210, 23,149,212, 19, 3,104, 46,145, 72, 26,
+ 75, 36,146,182, 22,139,165,118,209,252,140, 79, 84, 42,213, 53,163,209,120, 15,192, 45, 74,169,250,127,200, 12, 59,122,122,122,
+238, 36,132,128, 16, 18, 76, 41, 85,254,227,158,196, 56,168,253, 56,230,105,200, 43, 51, 85, 55,180,156, 29,130,128, 82,214,181,
+217,104,117,108,231,211,171,119,239, 46, 28, 0, 48,152, 78,247, 66, 37, 39,191,182,197,100,245,239,223,255,247,157, 59,119,186,
+232,245,122,140, 31, 63,126,183, 84, 42, 93, 39,151,203,103,150,247, 61, 39,137,203,148,101, 43,207, 57, 20,206,127, 13, 79,171,
+213,226,153,150,246, 34,248,241,163,223,187,199,196,220, 92,172,125,122,233,150,149,240, 39, 24,209,230,169, 45,229,168, 83,131,
+244,236, 51,168, 95,196, 55,223,204,199,176, 33,195,170,198,196,232, 68,126, 78,241,118,249, 90,113, 77, 55, 15,207,222,223, 44,
+ 60, 72,110, 92, 63,218,123,231,182, 5,151, 62,252,208,189, 35, 51, 91, 54, 29, 91,178,144,199,107,238, 18, 26,218,118,200,209,
+163,144,248,251,243,120, 66, 33, 7, 0,204,122,189,191, 42, 37,197,103, 95,239,222,205, 22, 16,114,101, 30,165,183,153,230,255,
+191, 38,163,146, 70,139,195,225, 84, 73, 75, 75,243, 20,139,197,197, 97, 49, 88, 44, 22, 88, 44,150, 87,147, 23, 83, 74, 95,253,
+ 53,155,205, 8, 13, 13,181,233,137, 22, 64, 71, 0,163,219,183,111, 63,240,135, 31,126,224,135,133,133, 21, 79, 25,210,102,214,
+172, 89, 63, 18, 66, 14, 1,216, 14,224,162,173, 79,188,132,144,110, 98,177,120,215,178,101,203,156,186,116,233,194,243,245,245,
+ 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 19, 9, 33, 35, 40,165,103, 43,113, 98,215,115,116,116, 60,216,175,
+ 95,191, 42,237,218,181,179,175, 83,167, 14, 44, 22, 11,238,223,191, 63,230,222,189,123, 67, 15, 29, 58, 52,143, 16, 50,208,214,
+249,218, 8, 33, 68, 34,145,140,242,243,243, 91, 52,119,238, 92,215, 17, 35, 70,216, 61,122,244,168, 32, 40, 40,136,220,184,113,
+195, 99,255,254,253, 19,151, 44, 89, 50,200,209,209,113,182, 74,165,250,133,218,144, 64,231,228,228,116,143,195,225, 84,177,197,
+ 8, 3,176,217, 12, 19, 66, 26, 86,171, 86,109,255,245,235,215,171, 37, 37, 37, 89,250,246,237,187, 3, 0, 46, 93,186, 20,102,
+ 50,153, 72,215,174, 93, 79, 19, 66, 6, 83, 74,239,219,184,237,245, 93, 93, 93,127, 29, 54,108,152,107,141, 26, 53, 28,170, 85,
+171, 70,196, 98, 49,184, 92, 46,228,114,185,239,163, 71,143, 58,223,190,125, 91,123,225,194,133,124, 66, 72,111, 74,105,116, 37,
+142, 83, 75, 79, 79,207,145,124, 62,191,158,217,108,246, 3, 0, 30,143,151,102, 50,153, 30,101,103,103,239,164,148,254,254,166,
+ 39,136,151,151,215,218, 69,139, 22,185,103,103,103,211, 37, 75,150,172, 5, 48,234,159,122, 49,216,189,231, 0,238,221,189, 13,
+ 0, 2, 66, 8,121,189,254, 17, 66, 72,237, 96, 8, 62,255,124, 42, 26, 55,105,134,225,195, 6, 85,168, 25,209,217,127, 25,223,
+ 78,224,166,211,233,126,151,107,244, 7,188,220,156, 7, 15, 27,218, 51, 14, 0, 78,159,185, 50,184, 89, 51,215,203, 82, 7,225,
+ 32,123,123,251,150, 38,131, 49,239,228,133,148, 47, 43, 99,170,252,252,252,206,186,184,184, 56,228,231,231,103,230,228,228,172,
+239,223,191,255,194,237,219,183,187, 36, 36, 36, 32, 37, 37, 5,159,125,246,153, 36, 53, 53,245, 19,161, 80,120, 83,175,215,151,
+ 25,217, 82, 42,243, 87,207,154,209,103,174, 84,234,206, 21, 59, 56,193, 81,234,138,160, 26, 13,208,188,101, 47,188, 23,241, 33,
+158,199, 69, 53,223,190,237,155,168,180,180, 11,223, 73, 92,171, 47,148,201,170,149,121, 93,170, 27, 66,218, 21,155,172,185,115,
+231, 35,246,233, 83,101, 82, 34,231,211,147, 71,121, 14,239,117, 10, 21,154, 13,153, 73, 55,174, 31,173,214,186, 77, 95, 0,104,
+188,115,219,130, 75,147, 71,184,118, 90,179, 43, 95,201,110, 73,101, 95, 59,191,225,243, 71,117, 91,185,210, 51,124,226, 68,129,
+ 42, 49,209, 24,191, 97,131, 38,235,218, 53, 11, 79, 40,164,254,221,187, 19,143, 14, 29,236, 39, 62,121, 34,248,109,201,146,182,
+139,237,236,130,102, 25, 12,187,152,230,255,159, 38,171,163,175,146,225, 95,229,106, 21, 55, 31,242,202,249, 18,196, 98, 49,246,
+237,219, 7, 62,159, 15, 30,143, 7, 62,159, 95,230,255, 1, 1, 1,182, 20,164,191,183,183,247,143,235,214,173,243,234,214,173,
+ 27,236,237,237, 95,125,198,229,114,209,165, 75, 23,116,238,220,153,159,158,158, 62,116,223,190,125, 67, 23, 47, 94,156, 69, 8,
+153, 68, 41, 61, 92,129,110,135,144,144,144,195,231,206,157, 19,233,116, 58, 92,187,118, 13, 5, 5, 5,176,179,179, 67,149, 42,
+ 85,208,181,107, 87,222,211,167, 79, 93,187,116,233,114,152, 16,210,147, 82,122,217,134,178, 54,246,244,244,188,122,224,192, 1,
+251, 6, 13, 26,144,231,207,159, 35, 60, 60, 28, 0, 32,151,203,209,183,111, 95,251, 17, 35, 70,212, 24, 58,116,232, 45, 66, 72,
+ 59, 74,233,189, 10,244, 26,121,123,123,255,210,175, 95, 63,223,197,139, 23, 59, 57, 58, 58, 34, 41, 41, 41,195,219,219, 59,184,
+120,127, 15, 29, 58,212,174, 87,175, 94, 62, 75,151, 46, 93,125,240,224,193, 47, 9, 33,163, 40,165,145,229,233, 22, 27, 98, 7,
+ 7, 7,100,101,101, 97,247,238,221,248,228,147, 79,192,229,114,145,157,157,141,253,251,247,227,211, 79, 63, 45, 54, 52, 54,153,
+ 97,177, 88,220,185, 65,131, 6, 91, 46, 93,186, 84,197,217,217, 25,190,190,190,156,175,191,254,186, 94, 80, 80,144,168,106,213,
+170,220,140,140, 12, 28, 62,124, 56,104,228,200,145,191,218,219,219,143,209,233,116, 21, 54,169,121,121,121,109, 61,121,242,100,
+ 64, 76, 76, 12, 54,108,216,128,252,252,124,216,217,217,193,217,217, 25,222,222,222, 8, 14, 14, 38, 51,102,204,112,232,213,171,
+151,195,164, 73,147,182, 2,104,104,195, 49,106,224,233,233,185,113,232,208,161, 65, 11, 22, 44,112,246,246,246, 70,241,131,129,
+ 92, 46,175,146,148,148,212,124,238,220,185, 3,189,188,188, 18,178,179,179, 39, 80, 74, 31, 84,242,196,105,216,169, 83,167,158,
+125,251,246,229,102,100,100, 96,231,206,157, 61, 9, 33, 13,109, 53,151,127, 55,238,221,189,141,241, 31,127,166,242,245,247, 23,
+156, 59,187,165,191, 76, 86,231,174,179,168,112, 66,106,153, 22,198,142,237,184, 77,186,118,251, 80,208, 35,162,175,106,211, 79,
+171, 37,182, 24, 45,190,157,192,109,247,174, 21,201,215,111,220,171,119,254,194,237,238,253,123,247,166, 2,129,115, 16, 0,124,
+ 57,229,115,254,225, 99,199,182,117,233,220, 44,189, 77,235,198,201,195, 71, 76, 13,168,196,177,169, 85,171, 86,173, 43, 81, 81,
+ 81, 94, 66,161, 16,249,249,249,110,155, 54,109, 90,209,186,117,107, 78,124,124, 60,158, 62,125,138,196,196, 68,200,229,114,116,
+233,210, 69, 18, 25, 25,185, 30, 64,153, 70,203,200,233,184,200,183,170,105,141,155, 72, 92,205,104, 81,120, 82, 83, 70,157,243,
+ 39,207,215,223,187, 83, 27,238,229, 19, 26, 60,250,131,121,248,102,225, 33,254,158,221,223,207,189,120, 97, 47,192,169, 86,246,
+140, 0, 20, 45,103,205,158, 9,133, 82,143, 17,195,198, 97,228,176,113,110, 20, 6, 31,106,209,137, 13,218, 2,103, 71,193,147,
+ 19,235, 54,175,232, 7,160, 74, 9,179,117,145,153,173,178,249,134,199,107,214,243,199, 31, 61,234,141, 29, 43,124,176, 96,129,
+ 58,247,218, 53,109,205, 30, 61, 10,194, 63,250, 72, 15, 0,202,196, 68, 65,236,188,121, 14, 30,109,219,138, 90, 76,155,230, 98,
+ 49, 24,188,191, 37,164,233,215,148,222,169,172,102,192,224,193,150,185,219,182, 53,185, 54,117,106,123, 98, 50,113,187,183,104,
+113,127,201,206,157,105,111,163,249, 46,203,153,126,245,170, 62, 63, 40, 8,225,125,251,230, 5,120,122,234,223,229,182,191, 77,
+ 57, 25, 40, 14, 74,101, 0, 40, 30, 25,190,240,122, 69, 41,197,201,147, 39,219, 1,184, 2, 96, 65, 68, 68,196,124, 0,112,118,
+118,206,146,201,100,158,135, 15, 31,174,208,100,241,249,124,248,248,248, 32, 56, 56, 56, 59, 43, 43,203,171,156,139, 99,138,213,
+106,173, 66, 41,125, 21,125, 41, 11,189, 94,143,184,184, 56,212,175, 95, 63,149, 82,234, 95, 94,211,142,131,131, 67,252,211,167,
+ 79,221, 31, 63,126,140,123,247,238, 33, 40, 40, 8, 46, 46, 46,224,243,249, 48,153, 76, 80, 40, 20, 8, 9, 9,129, 80, 40, 68,
+163, 70,141,114,213,106,117, 80,121, 77, 64,132, 16,161, 88, 44,142,187,122,245,170,127,120,120, 56,238,220,185, 3,127,127,127,
+120,123,123, 3, 0, 18, 19, 19,113,227,198, 13,244,232,209, 3, 81, 81, 81, 24, 48, 96, 64,138, 90,173, 14,166,148,234,203,210,
+116,115,115,203,184,116,233, 82,106, 88, 88,152, 78,173, 86,115,178,178,178,248,215,174, 93, 51, 43,149, 74,137, 92, 46,231,203,
+100, 50,190, 66,161,224,169,213,106, 62,135,195, 17,104,181, 90,254,197,139, 23,185, 6,131,193,169,188,253, 84,124,156,142, 29,
+ 59,134,176,176, 48, 28, 62,124, 24, 95,124,241, 5,126,251,237, 55,248,251,251,227,192,129, 3,152, 54,109, 26,158, 61,123, 6,
+119,119,119,212,169, 83,167,220, 99, 4, 0, 53,107,214,124,254,240,225,195, 26, 2,129,160,120, 94,199,226,249,242,144,147,147,
+131, 23, 47, 94, 32, 45, 45, 13, 53,107,214,196,176, 97,195, 94,164,166,166,214,172,168,242, 85,169, 82, 37, 39, 38, 38,198,189,
+126,253,250,200,202,202,130,179,179, 51,164, 82, 41,156,157,157, 95,253, 31, 20, 20,132,169, 83,167,194,219,219, 59, 91,171,213,
+122, 85,100,130,194,194,194,206, 94,188,120,209,221,201,201, 9,153,153,153, 80, 40, 20,224,241,120,112,112,112,128,187,187,251,
+ 43, 35, 31, 23, 23,135,136,136,136,220,248,248,248,110,149,136,192,113,188,188,188,158, 70, 71, 71, 7, 83, 74,145,156,156,140,
+103,207,158,225,227,143, 63,142,211,233,116,161,255,164, 57,251, 74,228, 93, 9, 70,125, 48, 94,208,175, 79, 75,195,147,152, 19,
+ 68,104,125,134,134,245,156,228, 0,112,255,145, 66,170,231,132,160,118,221,158,244,200,175,191,219,253,178,125, 19, 31, 86,120,
+129,224,217,227, 88,250,109, 89,218,221, 58,250,142,253,252,243, 49,245,218,183,110,199, 81,170,213,158,235,215,175,108, 20, 31,
+255,196, 19, 0,130,130,106,103, 79,156, 56, 37,210, 81, 44,206,190,114,227,170,117,213,170,173,143,206, 94, 74,223,108,195,177,
+ 9, 10, 14, 14,190,121,236,216, 49,119, 79, 79, 79, 72,165, 82,168,213,106, 24,141, 70, 60,126,252, 88,183,111,223, 62,147,147,
+147,147, 99,102,102, 38,100, 50, 25, 8, 33, 56,118,236, 88, 50,165, 52,240,117,173,226, 28, 45, 0,248,248,189,218,252, 58, 29,
+131, 93, 4, 66,179, 72,196,143,245, 1,177, 8, 9,149,120,157, 62,123,191,254,233,243,119,134,247,235,255,133, 71,155,118,253,
+ 48,119,206, 64, 83,122,122,114,184, 17,109,158,150,150,163, 85, 59,152,116,236, 59,160,223,160,111,190,153,143,249,115, 23,224,
+196,177,163,114,137,152,163,119,114,230, 75,219, 54,111,165,155,250, 73,159, 20,149, 42,221,255,155,165,251,134, 69,244,153, 90,
+165,117,155,190,184,113,253, 40,118,110, 91,112,143,136, 40,107, 70,124,141, 5,132,184, 56, 7, 5, 77,152, 28, 23, 39,120, 48,
+127,190,202,156,158, 94,208,120,202,148,220,210,214, 77, 61,127, 94,108,231,235,235,228,210,187,183,235,234,192, 64,106,202,206,
+222, 88, 90,142, 81,105,154, 23, 36, 18,231,189,167, 79,119,162,124,126,187,233, 95,125, 37,234,217,179, 39, 20, 10, 5, 14, 29,
+ 58,132,141, 27, 54,232,125,124,124, 30,250, 62,122, 20, 85, 79,161,152, 99,171,102,227, 41, 83,114, 45, 22, 11, 25, 52,109, 90,
+151,152,196,196,142,153,217,217, 85, 1,192,199,213, 53,165,113, 80,208,189,173, 39, 78, 60, 91, 91,173,154,213,214,114,254,124,
+230,140,215,193,164,164,177,174,174,174,162,172,236,108,158,208,206, 46,175,121,157, 58, 7,126,154, 61,251,138, 57, 58, 90, 96,
+ 95,165,138,147,180,103,207, 74,111,123,227, 41, 83,114,243,149, 74,222,228,133, 11, 91,189,204,202,170,170,210,235,107,202,148,
+ 74,111,139,201,196,113,114,112,200,171, 30, 18,146,173,189,118, 45,163,186, 70,243,217,207,148,102,255, 85,199,186, 52, 47,242,
+ 55,138,104,189,222,235,240, 79,115, 29, 94,137,136,136, 32,165, 56, 51,155,162, 89,124, 62,255, 15,205, 84,229, 32, 32,132, 32,
+ 50, 50, 18,110,110,110,240,246,246,134, 80,248,199,201, 7,115,114,114,240,219,111,191,225,201,147, 39,104,208,160, 1,128,194,
+ 39,234,178, 16, 10,133,159, 47, 93,186,212,217, 96, 48,224,222,189,123,104,220,184, 49,132, 66, 33, 4, 2,193, 31, 76, 96,118,
+118, 54,234,214,173,139,233,211,167, 75, 23, 47, 94,252, 57,202,153,163,142,199,227, 77, 26, 55,110,156,103,113, 4, 43, 37, 37,
+ 5,141, 26, 53,122,245,185,135,135, 7,238,223,191,143,198,141, 27,163, 74,149, 42, 24, 56,112,160,231,206,157, 59, 39, 1,248,
+161, 44, 77, 59, 59, 59, 78, 88, 88, 88,147,162,136, 17, 56, 28, 78,172,147,147,147,135,151,151,151,216,201,201,233, 79,219,184,
+109,219, 54, 25,135,195, 49, 85,180, 67, 57, 28, 14, 50, 51, 51, 81,175, 94, 61,200,229,114, 0,128, 90,173, 70,205,154, 53,161,
+ 80, 40, 94,153, 86, 95, 95, 95,104,181,229,167,126, 53,104,208, 96,126,104,104,104,215,246,237,219, 11,249,124, 62, 30, 60,120,
+128,240,240,112,236,219,183, 15, 1, 1, 1,112,112,112, 64, 92, 92, 28,194,194,194,112,245,234, 85,120,120,120,160,110,221,186,
+194, 70,141, 26, 93,207,207,207,191,156,148,148, 52,191,156,114,114, 36, 18, 9,174, 94,189,138,173, 91,183, 34, 49, 49, 17,233,
+233,233,112,116,116, 68,195,134, 13, 81,167, 78, 29,180,108,217, 18,113,113,113, 32, 21, 84, 38, 66,136,119,112,112,240,137, 59,
+119,238,184, 83, 74,177,115,231, 78,168, 84, 42, 24, 12, 6,112, 56, 28,216,219,219,195,197,197, 5, 29, 59,118,132,135,135, 7,
+130,131,131,177,127,255,126,247,247,222,123,239, 84, 81, 68, 42,179,162,253,234,226,226,242,217,188,121,243,252, 61, 61, 61,145,
+148,148, 4,185, 92, 14, 47, 47, 47,180,111,223,222,239,194,133, 11,159, 1, 88,249, 79,185,145, 21, 39,190, 19, 66,200,185,179,
+ 91,250, 7, 87, 47, 8,107, 16,226,224,127,248,132,151,255,190, 19,217,117, 1,160, 94,109,175,152,254, 61, 29, 82, 30,196,156,
+ 72, 57,119,246,232,189, 39,177, 56,108, 75,211,182, 92,163, 63,112,254,194,237,238,225, 13, 26, 89,151,126, 63, 45,226,147,143,
+199, 10, 61,189, 62, 68, 86,242, 81, 92,184, 20, 25, 48,237,139,113, 30, 63, 44,255,249,244,249, 11,183, 57,114,141,126,142, 45,
+229,173, 85, 43, 96,237,246,159, 90,186, 43,115, 15,226,249, 83, 59,136, 28,235, 33, 40,168, 22, 20, 10, 5,236,237,237,237,135,
+ 13, 27,102,153, 57,115,166,198,201,201,201,129, 16,130,203,151, 47,103, 3,232, 86,145,174,206,211,133, 90,140, 38, 51,181,227,
+ 90, 41,113,212, 18, 75,190,221,163,199, 9,232,218,185, 67, 86,235,102,245, 22,207,252,102,249,172,224, 90,225, 30, 99,198, 46,
+224, 47,156, 63,124, 3, 8,218,148,166,243, 36,142, 94,170, 83,131,136, 0, 68,124,243,237,124,196,199,199,185,140, 31, 45, 91,
+192, 19,138,124, 67, 3, 91, 57,110,216,122,185,123,205,154,213,170, 78,157, 52,240,228,138, 31, 87, 68,148,140,108,109,223, 54,
+239, 87, 66, 72, 39,250, 87,142,187,243,247,163,254,200, 19, 39,160, 74, 78, 54,229, 95,191,174,235,244,227,143,185,254,221,186,
+173, 52, 24,141,238,197,151, 10, 14, 33, 32,197,169, 19, 86, 43,225, 77,159,206,161, 60, 30, 76, 46, 46,163,103, 0,181, 42,210,
+252, 34, 35,163,255,240,177, 99, 35,126, 61,115, 6,213,170, 85,123,117, 63,115,118,118,198,180,105,211, 48,101,202, 20,225,253,
+251,247,155, 30, 60,120,176,233, 15,203,150,121,205, 0,250,219, 82,206,115,183,110,185,124,244,205, 55,179, 27, 52,110, 28,176,
+ 99,247,110, 97,141, 26, 53, 0, 0, 47, 94,188, 8,254,126,201,146,192,122, 97, 97, 89,139, 63,255,124,123,204,204,153,117, 1,
+ 92, 47, 79, 51,243,218, 53,195,193,164,164,177,151, 46, 95,118,174, 87,175, 30, 0,224,217,179,103,158,171, 87,175, 30, 87,119,
+224,192, 17,223, 76,156, 56,167,167, 78, 39,115,202,201, 17,246, 92,187,150,183,119,208,160, 10, 53,139,203, 9, 0,237,199,140,
+249,188, 77,135, 14,117,250,143, 29,235, 26, 16, 16, 64, 36, 18, 9,140, 70, 35,210,211,211, 93, 98, 98, 98,106,156, 80, 42, 21,
+ 71,110,221,218,249,115,209,100,241,127, 17,165,122,145,191, 83, 36,171, 84, 79, 81,244,183,253,201,147, 39, 41,128,246, 17, 17,
+ 17, 87,139,111,224, 22,139,197, 38,147,197,227,241, 80,148, 44,108,107,129,144,155,155,139,220,220,220, 87, 77, 71,217,217,217,
+184,116,233, 18,226,226,226,192,231,243, 33, 16, 8, 96, 52, 86, 60, 7,173, 88, 44,238,220,185,115,103,222,173, 91,183, 16, 20,
+ 20, 4,145, 72,244,170, 92,197,139, 64, 32,128,143,143, 15, 20, 10, 5, 58,117,234,196, 95,179,102, 77,231,242,140,150, 84, 42,
+237, 49,120,240, 96,187,226,215, 42,149, 10, 92, 46,247,149,105, 81,169, 84,200,207,207,135, 76, 38,131, 78,167, 67,139, 22, 45,
+236, 78,156, 56,209,163, 60,163, 85, 18,141, 70,163,202,206,206,118,110,211,166,141,203,246,237,219,159,181,104,209, 34,228, 15,
+ 53,237,202, 21,157, 78,167,227,115, 56, 28,155,230,209,219,181,107,215,171,125,159,150,150,134, 13, 27, 54,188,250, 44, 46, 46,
+ 14,107,214,172,121, 53, 21, 64,121,199, 40, 52, 52,244,189,157, 59,119, 54,222,177, 99, 71, 1,151,203,197,179,103,207,176,123,
+247,110, 80, 74,225,225,225, 1,141, 70,131,172,172, 44, 92,190,124, 25,102,179, 25, 18,137, 4,126,126,126,246,147, 38, 77,106,
+189, 96,193, 2, 62,128, 50,141,150,197, 98,177,112,185, 92, 4, 6, 6, 98,238,220,185,208,233,116, 16, 8, 10,253,165, 66,161,
+128, 76, 38, 67, 84, 84, 20,146,146,146, 80,209, 77,198,222,222,126,224,142, 29, 59, 60,237,236,236,160,213,106,161, 84, 42,145,
+146,146,130,151, 47, 95,234,178,179,179,205,142,142,142,156,192,192, 64,142, 80, 40, 20,246,237,219,151, 20, 27,206,158, 61,123,
+186,237,220,185,115, 72, 69, 38,137, 16,226, 81,187,118,237, 89,227,198,141,179, 47, 89,103, 51, 51, 51,209,191,127,127,135,223,
+127,255,125, 38, 33,100, 55,165, 52,231, 31, 22,242,166, 50, 89,157,187,247, 46, 60, 11, 59,124,194,203,255,101,170,165,213,180,
+ 47,151,243, 0, 96,211,198,239, 90, 29, 62,145,246, 91,104,181,172,148,131, 71,106,221,117,118,126, 76, 43,138, 8,118,108,231,
+211,203,203,205,121,112,255,222,189,233,250,245, 43, 27,125,242,241, 88, 97, 96,173,105, 0, 0, 63,190, 39, 58,153,191, 37, 26,
+237, 11,251,245,235, 87, 54,234,223,123, 64, 84, 98, 98,210,198, 78,237,125,247, 95,186,154,113,188,188,136,161,167,155,189,159,
+131, 80, 13,191,160, 58, 8,169, 45,198,253, 7,207,112,232,192, 77,212,174,219, 28,122,189, 30,102,179, 89,220,171, 87, 47,205,
+190,125,251,116,177,177,177, 74,173, 86,219,142, 82, 26, 91,209,246,167,166, 62,182,134,120, 55, 55, 10, 68, 66,179, 82, 46,208,
+204,152,115,112, 80,163,102, 93, 27,187,248,248,241, 61,196,214,227,239,117,105,186,123,235,230,185, 83,230,204,219,141, 38, 77,
+187,182,120,242,236,122, 29, 0, 15, 75, 53,175, 47,232,137,122,193,196, 28,255,252,121,196,203,164,164,212, 90, 94,222,134, 23,
+ 50,106,250,108,198,207, 93,218,180, 27, 88,191, 70,237,182,118, 79, 30, 95, 37,115,167, 15,217,243,205,210, 21,195,138,205,214,
+197,243,123,218,141, 30,125,211, 14,128,158,249,171,162,167,115,161,176,138, 36, 48,144,151,184,125,187, 54,168, 87,175, 2, 0,
+ 48, 24,141,238,137, 73, 73, 82, 7, 7, 7, 80, 74, 97, 50,153,254,144, 67, 92,156, 55, 92, 47, 36,196,203, 22,205,196,175,191,
+174, 63,125,250,116,100,102,102,194,108, 54,131,207,231,191,126,205,134, 90,173,198,232,209,163,177,118,217,178,230,182,104, 90,
+ 44, 22,242,209, 55,223,204,254,106,246,236, 26, 19, 38, 76,224,148,188,246,186,186,186,226,224,161, 67,118,235,214,173,171, 50,
+107,237,218,209,195,133,194,248,138, 52,115,107,214,132,107, 86,150,168,216,100, 1, 64, 72, 72, 8, 54,108,216, 32,252,240,195,
+ 15,237,122,245,234,181,252,126,131, 6,171, 87,182,110,253,220,173, 86, 45, 39, 59,161,176,138,173,251, 19, 0,148, 58, 93,189,
+149,171, 87,187,220,190,125, 27, 89, 89, 89,200,204,204, 44, 62,151,209,164, 73, 19, 50,114,228, 72,105,117,127,255,166,127,241,
+225,254,147, 23,249, 27, 69,180,198,151,114, 77,253, 79,142, 86,209, 6,145,162, 13, 36, 37,110,142,127, 48, 44, 21, 25,173, 55,
+ 65, 38,147, 65, 38,147, 97,243,230,205, 16, 8, 4,175,110,190, 0, 96, 48, 24,108, 49, 45, 97,190,190,190,144,203,229,168, 85,
+171,214, 31, 34, 89, 2,129, 0, 60, 30, 15, 2,129, 0, 66,161, 16,122,189, 30, 1, 1, 1,208,104, 52, 97,229,105,106,181,218,
+134,174,174,174,175,110,176,122,189,254,149,201, 42, 46,175,193, 96, 64, 65, 65, 1, 84, 42, 21,148, 74, 37,212,106,117,184, 45,
+219,107,181, 90,241,232,209,163, 23, 33, 33, 33, 13,185, 92, 46, 36, 18,137, 88,173, 86,191,202, 45,202,207,207,199, 47,191,252,
+162,126,255,253,247,221,143, 29, 59,166,177,225,224,226,211, 79, 63,133, 80, 40,132, 70,163,193,250,245,235, 49,121,242,100, 8,
+ 4, 2, 40,149, 74,108,216,176, 1, 83,167, 78, 5,143,199,131,193, 96,192,234,213,171,203,142,108, 60,126,156,120,235,214,173,
+240, 70,141, 26,185, 28, 57,114, 36,167, 75,151, 46, 30,221,186,117,131, 72, 36,130, 86,171,133,201,100, 66,243,230,205, 17, 26,
+ 26,138,236,236,108,156, 62,125, 58, 55, 56, 56,216,253,246,237,219,214,204,204,204,151, 21,221,196, 75, 68, 12, 97,177, 88,144,
+149,149, 5,153, 76,134,156,156, 28,164,167,167, 35, 53, 53, 21, 60, 30, 15, 21, 61,204,187,185,185, 13,168, 87,175, 30, 23, 0,
+ 68, 34, 17, 26, 54,108,136,217,179,103,155,181, 90,237, 96, 0,167,139, 86,123,239,231,159,127, 62,114,227,198, 13,158,175,175,
+ 47,158, 62,125, 10, 15, 15, 15,222,255,177,119,213,225, 81, 28,255,251,157,221,243,139,187, 39, 4, 73, 2, 73,112,105,113,183,
+ 64,113, 43, 45, 80,138,150, 22, 40, 20, 41, 90, 42,120,145,226,208, 22,119, 39, 56, 37,184,107, 18, 32, 16, 36, 33,238,122,190,
+183,243,251, 35,242, 13,105,228, 18,168,241,219,247,121,238,185,219,189,221,119,199,118,230,157,207,204,124, 70, 46,151,151, 43,
+180,156,157,157,127, 63,122,244,168,109,129,184, 46, 72,103,149, 42, 47, 59,122,247,238,109,187,117,235,214,223, 1,116,125,223,
+ 26, 53,107, 5, 36,245, 2, 45, 51,119, 31, 75, 10,152,252,205, 82, 81,205,192,188,206,235,200, 81, 16, 45, 89, 60, 41, 96,112,
+ 15,203, 96,107, 69,150,164, 60,158, 46,237, 61, 86,127,244, 81, 7,102,208,192,110, 79, 37, 18,235,106,235, 55,124,231,232,232,
+ 52,188,136,137,211, 18,118,246,150,168,230, 37, 37,251,130, 31, 57, 78,155,254,189,118,251,214,159,159,239,220,117,172,179, 84,
+124,166, 35,128, 49,165,113, 71, 68,102, 28, 81,105,229,181,178, 82, 31, 16, 91,167,102,168, 87,215, 15,142, 14,233,216,248,251,
+110,120, 87,109, 4,173, 86, 11, 75, 75, 75,165,209,104,212,179, 44,187,221, 20,145, 5, 0,231,206,101,240, 1, 1, 25, 58, 54,
+155,231,190,248,106, 73,175, 14, 93, 62,242,111,219,182, 61,127,250,204,105,125,179,250,250,248, 46,157,234, 37,158, 60,179,250,
+105,124,220, 11,159,128,218,205, 17, 30,118,190, 51, 64, 66,129,146, 11,108,232, 83,122,178,122,117,114,126,247,238,145,188,154,
+191,171,248,225,199,135, 93,130,130,134, 4,182,108,209,146, 63,115,246, 15,157, 20, 41,143, 44,155, 55,141,253,226,243, 46, 7,
+127,221,190,162,227,201, 19,191,215,200,204,138, 58,246,251,239, 84, 16, 89, 69, 59,105, 28,231, 36,146,201,152,228,243,231,185,
+218,195,135,107, 11,222, 71,165, 82,137,195,135, 15, 67, 42,149, 22,126, 36, 18, 73,225,111, 39, 39,167,130,197, 87, 38,113, 2,
+ 64,124,124, 60, 18, 18, 18, 96,101,101, 5, 7, 7, 7, 36, 36, 36,224,234,213,171,136,136,136,128, 88, 44, 70,231,206,157,193,
+148, 50,183,185, 56,103,191,201,147, 59,212,170, 93,219,179,184,200, 2, 0,189, 94,143,180,180, 52,244,232,209,131, 57,113,226,
+132,243,201,232,232,143,102, 1,219,203,226,172, 31, 20,148,154,184,111, 95,137,207,110,208,160, 1,185,114,229,138,172,115,167,
+ 78, 19, 39,253,248,227,234, 95,182,110,125,109,228, 56,231,138,196,157, 97, 24,134, 16, 2, 15, 15, 15,164,165,165, 33, 39, 39,
+111, 4,219,220,220, 28, 54, 54, 54, 48, 24, 12,224, 41, 21,255,149,121, 93,154, 22,249,143,116, 84, 55, 20, 8,174,226,158,225,
+ 69,249,227,162, 5, 21, 69,235,162, 13, 11,207,243, 38,137, 44,177, 88, 92,238,156, 43, 83,172, 92,197, 97,138,208, 42, 8,171,
+ 92, 46, 47,124,209,138, 10,172,130,112, 50, 12, 3,150,101, 97,138, 69,158,231,121, 54, 59, 59, 27,251,247,239, 71,171, 86,173,
+ 10,135,165, 50, 51, 51,145,145,145,129,204,204, 76,104, 52, 26,188,124,249, 18,231,206,157, 67,141, 26, 53, 0, 19,157,191, 62,
+127,254,252,182,183,183,119,195,130, 70,188, 77,155, 54,238,155, 55,111,142,235,218,181,171, 43,165, 20, 51,103,206, 76,249,224,
+131, 15,236,139, 54,242,229,129,101, 89, 92,189,122, 21, 53,106,212, 0,165, 20, 18,137, 4, 79,158, 60,129,163,163, 35,120,158,
+135, 72, 36, 66,114,114, 50, 44, 44,202,246,145, 24, 26, 26, 58,236,179,207, 62,139,179,178,178,170,147,154,154, 26, 47,147,201,
+ 90, 92,188,120,209, 67,175,215,195,210,210, 18,150,150,150, 56,126,252, 56,172,173,173, 49, 97,194,132,104,181, 90,125,213,204,
+204,204, 73,173, 86, 63, 72, 72, 72,152, 89,145,252,230, 56, 14,185,185,185, 72, 79, 79, 71, 90, 90, 26,178,178,178,160,209,104,
+202, 13, 99, 73,104,209,162, 5,142, 29, 59,198,206,159, 63,255,215,231,207,243, 58,134,213,170, 85,195,132, 9, 19, 88, 55, 55,
+ 55,188,124,249, 18,183,111,223,134, 94,175, 7,165,180,204,151, 87, 44, 22,183,153, 52,105, 82,115, 79, 79, 79,162,215,235,193,
+243, 60,180, 90, 45, 10,126, 71, 71, 71,163, 86,173, 90,140,151,151,215,135,132,144, 54,166, 44,172, 16,144,135,196,232, 67,112,
+ 19, 59, 2,140, 37,168,250, 16, 82, 83, 42,183,109,100, 82, 82,210,143, 83,102, 93, 25,254,203, 34,189, 83, 76, 60,224, 23,216,
+ 19, 62,254,237, 48,236, 19, 14,243, 23,239,135,167,151, 31,162,162,162,208,166, 77, 27, 73, 92, 92,220,103, 0, 38,155,202,125,
+230,204,117,227,233,227, 39,250,246, 27, 48,164, 97,251,246, 93,185, 83,167,142, 35,244,193,169,176,207, 6,244, 73,162,124, 14,
+177,181, 86,220,125,242,248,150, 79,157,122,173,161,227,140, 45,128,185,139, 0,148, 90,169, 68, 70, 82,221,119,223,125,199, 4,
+ 31,250,253,147, 65,131,135,214,109,215,174,163,225,212,153,163,184,125,237,204,253,165,139, 70, 92,152,191, 98, 79,155, 14,157,
+251, 4, 56, 56, 93, 61, 30,232,171,253,220,195,206, 42, 82, 40, 41, 37, 67, 36,151,243,200,175, 23, 25, 66, 64, 41,125, 67,100,
+ 21, 23, 90, 12,195,148,107, 0, 40,202, 89,180, 45, 42,232, 80,175, 95,191, 30, 50,153, 12, 82,169, 20, 98,177,184,220,233, 23,
+ 69, 57,195, 94,190,108,187,101,251,118, 89, 73, 34, 43, 53, 53, 21,169,169,169,200,201,201,193,192,129, 3, 37,223,221,186,213,
+160, 60, 78, 79, 23, 23,173,153, 66,145, 24, 30, 30,238,234,239,239,255, 70,120,179,178,178,160, 80, 40,176,125,199, 14, 73,183,
+160,160,177,237,142, 31, 95, 10, 32,163,162,113, 39,132,192,209,209, 17, 54, 54, 54, 32,132,128,227, 56, 36, 36, 36, 32, 44, 44,
+ 12,183,110,221, 2, 75, 8,247, 87,230,113, 73, 90,228,191,102,213, 42, 46,178,138, 90,180, 72,105,214, 23, 83,133, 22,203,178,
+149,182,106,149, 6, 83,134, 14,149, 74,229,195,184,184,184,102,110,110,110,224, 56,174, 80,104, 21, 31, 58, 44,176,126,220,187,
+119, 15, 74,165,242, 97,121,156,148,210, 15, 27, 55,110,140, 3, 7, 14,224,252,249,243,120,241,226, 5, 84, 42, 21,180, 90, 45,
+212,106, 53,194,194,194,192,243, 60, 2, 3, 3, 97,102,102, 86, 46, 39, 0,228,230,230,198,139,197, 98, 63,133, 66, 81,120,206,
+197,197, 5,169,169,169,188,193, 96,192,150, 45, 91,178,156,157,157,205, 20, 10,133,201,194,149, 16,130,164,164, 36,184,187,187,
+ 23,206,209,202,206,206,134,163,163, 99,129,176,128, 86,171,133,133,133, 69,185, 67,135,148, 82, 13,128, 73, 69,184, 27,245,235,
+215,111,231,238,221,187,171,158, 61,123, 22, 55,110,220,128,131,131, 3,126,250,233,167, 23,175, 94,189, 26, 68, 41,189,245, 23,
+ 20,212,114,175, 73, 77, 77,221,255,240,225,195, 15, 27, 55,110, 92, 88, 75,180,105,211,134,180,105,211,198,190,168,169, 63, 57,
+ 57, 25, 55,111,222,196,217,179,103, 65, 8,193,211,167, 79,141,106,181,122,103, 25,207,150,120,121,121,109,158, 49, 99,134, 57,
+199,113,133,101, 91,161, 80, 64, 46,151, 67, 34,145,128,101, 89,188,122,245, 10, 61,122,244,176, 90,181,106,213,239,132,144,234,
+148, 82, 61,222, 19,100,168,161,191, 23,154,101, 21, 88,203, 41,108,195,250,249,205, 70,142, 66,193,208, 33, 23, 88,203, 49,236,
+ 94,104,162, 85, 67, 71,232,173,165,101,243,156, 56,251,250, 11,157,225, 68,247, 19, 39, 67,250,127, 51,113,130,184, 90,181, 90,
+ 73,103,255,184,227,217,142,251,158,216,217, 91, 34, 53, 37, 11,175,162, 19,241, 60, 74, 71,171, 85,171,149,116,251,230, 67,217,
+226,101,203,125,114, 85,154, 61,127, 92,136, 63, 90, 78,167, 76, 67, 8,233,185,116,165,236,194,144,207, 26, 73, 21, 10, 87,164,
+165, 60,132,167,167, 3,122,116,171,131,223,182, 94,133,149,149, 45,156,156,156,192, 48,140,153,169,113, 79, 73, 73, 33,251,119,
+ 93, 26,254,233,208, 17, 31,116,234, 24,196,157, 60, 21, 44, 58,127,250,200,213,223, 55,124,123,144,178,185, 74, 66,179, 21, 85,
+188,157, 31, 68, 62,187, 55,168,109,251,129, 80, 72, 44,106, 0, 53, 75, 44,176,133, 11, 12, 40,162, 25, 6,242, 79,135,142,108,
+218,169,211, 71,220,169, 83,135,112,234,248,214,235,115,230, 84, 57,254, 34,118,135,228,218,173, 24,121,207,190, 99,210,143,157,
+120,164,235,211,221, 59,194,213,172,158, 26, 2,222,236, 72,138, 68,137,156, 86,235,225,222,169, 19,171,138,138, 18,155, 59, 57,
+113, 0, 96, 48, 24,202, 21, 90, 0,120, 83, 56, 77, 13,139, 74,165, 2, 15,112,166,112, 38, 36, 37, 85,201,239,132, 23,194, 96,
+ 48, 20,138,172,212,212, 84,100,100,100,192,204,204, 12,201, 90,173,147, 41,156, 29,155, 52,217,242,221,220,185,147,247,237,223,
+ 47, 41, 42,178, 10, 62, 98,177, 24, 11, 23, 45,146,124,245,205, 55, 99,198,138, 68,227, 43,146,158, 5,157,118,150,101, 33, 18,
+137, 16, 21, 21,133,232,232,104, 68, 69, 69, 33, 42, 42, 10, 10,133, 2,180,148,244,124,135, 22, 45,242, 95, 45,167, 5, 67,135,
+ 69,135, 16, 77,114,239, 80,145,201,240,166, 10, 3,163,209,248, 78,133, 86,110,110,238,217,115,231,206, 53,233,217,179,167,232,
+250,245,235,112,118,118, 46, 20, 90, 5,223, 5,195, 81, 74,165, 18, 7, 15, 30,212,231,230,230,158, 45,231,101, 58,119,252,248,
+241,134,179,103,207, 22, 15, 27, 54, 12,225,225,225, 24, 53,106, 20, 50, 50, 50,144,149,149,133,212,212, 84,168, 84, 42, 52,105,
+210, 4,114,185, 28, 15, 30, 60, 48,168, 84,170,115,229, 52, 14, 52, 41, 41, 41,199,193,193,193,165,248,127,125,251,246,117, 90,
+179,102,141,234,241,227,199,134,102,205,154, 89,154, 42, 56, 10,176,107,215,174, 66, 75, 93, 68, 68, 4,214,172, 89, 83, 56, 39,
+235,206,157, 59, 88,178,100, 73,161,239,179, 10, 90, 25,111, 5, 4, 4,112, 6,131, 1, 53,106,212,128,155,155, 27, 52, 26, 13,
+150, 47, 95,206,253, 21, 34,203, 84,104, 52,154,125, 67,134, 12,153,122,247,238, 93, 23,145, 72,148,103,210,206,143,159, 94,175,
+199,179,103,207, 16, 22, 22,134,199,143, 31, 35, 45, 45,173,176, 35,112,239,222,189,116,131,193,176,167, 52, 94, 7, 7,135,153,
+191,253,246,155,179, 82,169,124,163, 60, 23, 88, 67, 11,172,164,201,201,201,176,182,182, 70,187,118,237, 28,207,157, 59, 55, 19,
+192,236,247,161, 65, 35,132,144,182,173,216, 70, 95,125,209, 19,189,187, 41, 95, 31, 56, 22,123,101,201,226, 73,249,147,225, 29,
+195,122,119,115,123,125,255,137, 53,250,246, 58,212,232,143, 11, 36,166,172,185,116,249,115,172, 14, 55,105, 98,123,254,192,145,
+ 35,191, 79,159, 50,241,206,228, 73, 35, 28, 84,234, 72,121, 53, 47, 41, 1,128,231, 81, 58,250, 32,156,215, 44, 89, 58,241,206,
+252, 69,171,152,196,212,140, 81, 55,110,148,238,222,160,168,120, 9,240,133,188, 90,205, 86,113, 62,190,205,189,175, 95,221, 14,
+115,165, 26,126, 53, 27,161, 83,199, 15,113, 62,228, 30, 18,146, 53,136,143,143,135, 86,171, 45,211, 93,194,227, 7, 7, 63,161,
+132,122, 18, 74,162, 9, 67,229,159, 12,249,188, 69, 80,208, 71,244,216,177, 35,220,161,131,219, 47,239,217,182,114, 31, 35, 17,
+139,212, 58, 43, 29, 33,154, 76, 48,161,225, 57,185,121, 29, 26,177, 76, 82,186,249, 53,223,177,171,127, 64, 77,231, 79,134,140,
+178,234,218,165, 7, 61,126,252, 16,191,103,247,150,243,123, 54,213,222,206, 51, 89,146,248,215, 42, 89,102,150, 33,147, 18,169,
+117, 78, 22,175, 74,124, 94, 93,227, 26,212,247,189, 17,237,239,172,195,173,213,198,228,188,126,237, 98,219,170,149,236,217,220,
+185, 74,167, 38, 77, 52, 36,127, 14,113, 89, 66,139,101, 89,128, 97,120, 83, 56, 77, 13,139, 90,173, 6, 15, 24, 42,195,201,113,
+220, 27, 34,171, 64,104, 21,216, 53, 76,225,220, 48,103,206,117,207, 78,157,210, 66, 66, 66,156, 90,183,110, 77,178,179,179,145,
+157,157,253,134,216,114,117,117, 37,254,129,129,202, 93,231,207, 87,155,109, 98,122,154, 18,119,134, 97,254,114,161,245, 95, 70,
+ 73,150,172, 55, 44, 90,165,161,192,162,101,138,208, 50,209,162,101, 48, 24, 12,112,116,116, 68, 74, 74, 74,169, 13, 63,195, 48,
+ 80, 40, 20, 5, 99,196,101,174,188,211,106,181,203, 39, 79,158, 60,174, 75,151, 46,246,126,126,126, 72, 78, 78,134,147,147, 19,
+228,114,121,225,220,177, 2,190, 59,119,238,224,183,223,126,203,210,106,181,203,203,225, 92,182,104,209,162, 47,122,247,238,109,
+235,236,236, 12, 27, 27, 27, 60,120,240, 0, 54, 54, 54,200,202,202,194,147, 39, 79, 96, 97, 97, 81, 56,111,231,200,145, 35,217,
+ 90,173,118, 89, 57,226,141, 94,188,120, 81,111, 97, 97,241, 32, 57, 57,153, 77, 75, 75, 19,165,167,167,139,178,178,178,196,153,
+153,153,226,147, 39, 79,218, 91, 89, 89,169,254,248,227,143,100, 79, 79, 79,246,197,139, 23,172,193, 96, 96, 76,104, 28, 49,126,
+252,120, 72, 36, 18,104,181, 90, 44, 95,190, 28,147, 39, 79, 46,156,147,181,104,209, 34,204,152, 49,163, 80, 56,111,220,184,177,
+162,133, 7,122,189, 30, 6,131, 1, 6,131,193, 36,241,251, 54, 48, 69,176, 83, 74, 19, 8, 33,221, 26, 55,110,124,122,239,222,
+189,118,249, 62,201,144,152,152,136,196,196, 68, 36, 39, 39, 35, 39, 39, 7, 28,199,193,205,205, 13,137,137,137, 56,116,232, 80,
+102,118,118,118,167,178, 86, 28,178, 44, 59,164, 69,139, 22,162,226, 97, 40,232,229, 21,136,119,153, 76,134,184,184, 56,180,105,
+211, 70, 26, 18, 18, 50,228,191, 46,180, 10, 4, 76, 45, 31, 72, 58,118, 26, 46,169, 21,208, 84,119, 63,236,216,235,154,222,137,
+175, 7,247,176, 12, 6,128,123,161,137, 86,247,159, 88,163, 86, 64, 55,218,177,147, 77,195,196,132, 13,181,253,125,137,190,172,
+237,122, 0,192, 74, 41,235,215,161,125,147, 56, 11, 51, 51,102,201,210,141, 39,214,174, 93,214, 96, 95,240,255,220, 59, 44, 89,
+154,231,222,161, 67,251, 38,252,227, 71,143,251, 1,216,100,170,120,233,214,173,251,221,223, 54,255,134,199, 97,127,184, 78, 29,
+ 95, 71,154,150,104,128,194,220, 3, 13,235, 57, 97,195,230,135,184,127,255,126,130, 78,167,107, 83,102, 89, 34,212, 51, 44, 60,
+212,183,118,128,191,243, 39, 67, 70, 90,118,235,214, 3,199,142, 29,198,182, 45,155, 46,246, 25,216,251,215,216,244, 44,214, 81,
+172,148, 40, 41, 47,101, 37, 86, 34,137, 76,145,164,211,229,173,129, 16,139,229,150, 64, 63,190,140,145, 67,140, 30, 57,216,170,
+109,251, 30, 8, 62,126, 24,219,182,108,184, 48, 43,160,239, 38,239,250,181, 72,147, 6,139,199,120, 87,245,246,202,205, 73,204,
+ 98,136, 84,175,209,240, 22,139,183,188,250,249,249,140, 33,207,239,134,246, 91, 42,172, 58,124, 3, 15,182,117,237,218,248,171,
+200, 72,137, 67,243,230,138,184,243,231,149,249, 59,145,148, 41,180, 68, 34, 17,104,233, 67, 93,111,112,146,173, 91, 25, 0,101,
+ 46,194,146, 72, 36, 80,169, 84, 48, 0,122, 83, 56, 93, 78,157,122, 29, 25, 25,233, 99,107,107,251,134,200, 74, 75, 75, 43,252,
+173,209,104,160, 82,169,160, 80, 40,194, 76,225, 76,188,120, 81,179, 96,252,248,217,131, 6, 14, 92,121,246,220, 57,185,157,157,
+ 29, 50, 51, 51,223, 16, 90, 58,157, 14,109,219,181,147, 44,186,123,247, 19, 0,115, 76, 73, 79,167, 54,109,202,157, 15,204,178,
+ 44,248,191,120,232,240, 61,232,172,142, 44, 73,120, 49,229, 13,225,152,186,234,176,164, 6,146, 16,210,190,216,169, 25, 13, 27,
+ 54,212, 68, 68, 68,192,211,211,179, 80,172, 20,125,166,165,165, 37,172,173,173,113,231,206, 29,252,248,227,143,106, 0, 51,202,
+226,164,148,102,171, 84,170, 1, 29, 58,116, 80,139, 68, 34,212,172, 89,179,208,127, 22,207,243,144, 74,165, 48, 51, 51,195,221,
+187,119,209,189,123,119,149, 74,165, 26, 80,220,135, 86, 9,156,153, 42,149,234,227,142, 29, 59,170,194,195,195,209,162, 69, 11,
+220,191,127, 31, 57, 57, 57,200,201,201,193,203,151, 47,225,239,239, 15,149, 74,133, 53,107,214,168, 85, 42,213,199,148,210,204,
+178, 56,179,179,179,187, 79,158, 60,153,221,185,115,167,183,155,155, 91, 64,163, 70,141,252,218,181,107, 87,189, 87,175, 94, 94,
+ 93,187,118,117,241,241,241,209,116,234,212,201,161, 75,151, 46, 14, 42,149, 74,124,229,202,149,120,131,193,208,165,156,244, 44,
+ 20, 39, 17, 17, 17,133, 67,133, 34,145, 8, 41, 41, 41,133,158,251, 11, 42,165,146,132,112,105,156, 69,197,118,129,192, 42, 16,
+ 92,229,181, 1,165,112,150,219,112, 72,165,210, 2,139, 39, 45,143,147, 82,122,239,209,163, 71, 29, 90,181,106,117,111,248,240,
+225,217, 9, 9, 9,176,176,176, 64,181,106,213,224,235,235, 11,123,123,123,232,245,122, 28, 60,120, 48,247,208,161, 67, 15, 51,
+ 51, 51,219, 20,247,161, 85,156,147, 97,152,151, 37, 85,178, 5,214,172, 2,161, 37,151,203,225,230,230, 86,144,182, 47, 43,146,
+158,149,124,121,255, 90,206,124, 1,211,174,109,167,170, 93,131,122, 90, 29, 60,124, 85,186,114,245,161,135, 13,219, 99,163, 93,
+149,172, 35,118, 85,178,142, 52,108,143,141, 43, 87, 31,122,120,240,240, 85,105,215,160,158, 86,237,218,118,170, 26, 30,246,216,
+239,141,125, 15, 75, 8,167, 92, 46,111,218,162,121,195,244,144,203, 23,248,249,139, 86, 49,109,219,244,185,187,233,215,131, 7,
+ 55,253,122,240, 96,219, 54,125,238,206, 95,180,138, 9,185,124,129,111,209,188, 97,186, 92, 46,111,106, 74,220, 71,143, 28,108,
+ 21,212,181, 7,142, 29, 59,200,237,219,181,102,209,238,253, 79, 91,125, 62,238, 98, 98, 68,196,125,154, 20,115, 10, 98, 38, 10,
+143, 30, 61,202,212,233,116,109, 74,154, 8, 95, 18,231,168, 17,131,139,138,172, 75,118,206, 45, 54, 62,122, 4,227,153, 51, 71,
+ 13,231,206,221, 85, 95,186,151,148,121, 59, 60, 37, 45, 46, 57,237, 69, 86, 86,170,142,231,141, 48, 26,141,236,119,223,229, 77,
+216, 45, 45,143,154, 53,107,141, 63,206,238,192,150,205,235, 51,121, 30,154,190,123,247, 26,251,245,155, 75,189,170, 84,241,218,
+190,107, 7,233,246, 81, 79, 43, 10,240,221,123,247,176,222,185,123, 39,169, 90,163,106,149,106,213,242, 92,218,252, 39,203,210,
+ 95,192, 57,135,210,244,172,168,168, 11,119, 86,173,210, 58, 13, 24, 96, 43,117,114,178,132,209, 72, 10,234,247,210, 62, 34,145,
+232, 13, 11, 76, 89,156,110,246,246,177, 71,142, 28,129,175,175, 47,220,220,220, 80,116,142,108,129, 67,110, 59, 59, 59,236,223,
+191, 31, 20,184,109, 10,103,125,111,239, 59, 11, 23, 44,208,241, 60,143,244,244,244, 63, 89,179,210,211,211,193,243, 60,142, 7,
+ 7,235,178,114,114,182,152, 26,247, 54, 44,155, 51,168,101,203,249, 65, 65, 65,250,200,200, 72,240, 60,143,162,150,173,164,164,
+ 36,152,155,155, 67,163,213,122, 16, 66,148,166,112, 38,157, 60,105,134,114,234,245,226, 22,173,191, 34,223,255,235, 34,171,232,
+134,210, 69, 69, 87,153, 22, 45,142,227,224,225,225,241,198,150, 46, 12,195,188,241,169,200,138, 67, 74,233, 86, 66,200,169, 78,
+157, 58,205,254,224,131, 15, 70,207,158, 61,155,245,243,243, 67,102,102, 38,108,108,108,224,232,232,136, 39, 79,158,224,200,145,
+ 35,198,148,148,148,117, 0,230,153,178,132,158, 82,122,158, 16,210,173, 78,157, 58,187,167, 77,155,102,213,177, 99, 71,177,135,
+135, 7, 40,165,184,123,247, 46, 14, 28, 56,160,223,180,105, 83, 86,190,200, 58,111, 98, 88, 79, 19, 66,250,116,233,210,101,251,
+144, 33, 67, 44,140, 70,163,248,229,203,151,208,106,181, 48, 24, 12,136,142,142,214, 31, 59,118, 44, 71,165, 82, 13,166,148,158,
+ 54,129,239, 14, 33,196,255,204,153, 51, 67,174, 92,185,242,227,240,225,195,237,218,181,107, 39,225, 56, 14,151, 47, 95, 78,174,
+ 95,191,190, 99, 82, 82,146,126,255,254,253,169, 26,141,102,134,209,104, 52,105, 11, 30, 66, 8,178,178,178, 96,111,111, 15,173,
+ 86, 11,158,231,161,211,233, 96,110,110, 94,184,109, 18,165, 20, 21,153, 92, 95,172, 12,176,122,189, 30, 3, 7, 14, 4,207,243,
+ 88,190,124, 57, 56,142,171, 48,153,149,149,213,237,123,247,238,117,171, 87,175, 94,161,120, 41, 40, 67, 50,153, 12,246,246,246,
+176,179,179,195,177, 99,199, 32, 22,139,111,155,152, 71,247, 1,212, 39,132, 52,125,248,240,225,167, 0,234,233,245,122, 55,163,
+209, 72, 24,134,137,167,148, 62,200,202,202,250,213,212, 45,120,146,146,146,126, 28, 58,116,104,253, 29, 59,118,152,139, 68,255,
+123, 53, 68, 34, 17,100, 50, 25, 10,156, 99, 82, 74,161,211,233, 48,115,230,204,172,220,220,220, 31,223,151,138,162, 97,163, 38,
+216,176,102,133,249,185, 63, 78, 37, 63,122,138, 3, 69, 93, 56, 88, 75,129, 63, 46,144,152,196,132, 13,181,227, 94,191, 54,111,
+216,168,137, 73,156, 6,157, 62,245,227,193, 95,123,230,111,193, 51,243,229,203, 87,235,183,111,253,249, 57, 0, 44, 94,182,220,
+ 39, 49, 53, 99,212,227, 71,143,251,173, 95,191,171,169, 65,167, 79, 53,133,243,127,226,101,123, 38, 40, 52,148,210, 27,132, 16,
+239,238, 3, 78,206,168, 81,213,242,163,164, 84,117,108, 78,142,234, 75, 74,233,115, 83,227,222,188, 89, 43,252,113,122, 39,182,
+109,217,158, 69,121, 86, 99,111,111, 79, 1,224,209, 35,123,250,232, 81, 6,253,223,188, 98,235, 92, 49,189, 63,239,235, 47,219,
+125,157,153,149,182,108,217,234,178, 29,215,214,169,251, 1,234,212,253, 0,227,190,252,214,202, 63,160,166, 39, 0,236,221, 75,
+141,129, 62,228,232,236, 89,115, 63,154, 55,111, 46,178,178,181,152, 55, 47,111,187,158, 39,161,225,193,145,145, 84, 39, 52, 91,
+111, 98, 54,199,221,192,215, 95,251,168,210,210, 28,154, 79,157,106, 47,250,230, 27,166,172,201,240, 69,223, 95, 83, 56,111, 61,
+120, 16, 60,234,243,207, 99,231,204,158,221,105,221,250,245,138,218,181,107, 35, 33, 33, 1, 53,107,214,132,155,155, 27,206,156,
+ 57,131,253,123,246,228,102,100,103,207, 0,176,214, 20,206,173,199,143, 63,241, 11, 8, 72, 89,191,126,189,107, 80, 80, 16,201,
+205,205, 69,102,102, 38, 50, 51, 51,161,213,106,145,239, 16,154, 70, 60,125,250,200, 96, 48,172, 51, 53,238,198,228,100,249,188,
+ 38, 77, 98, 36, 60,191,176, 79,239,222,147,231,125,255,189,172,106,213,170, 68,171,213, 22, 90,181,244,122, 61,204,205,205,245,
+ 58,157,206, 14,128,202, 20, 78,217,166, 77, 92,114,114, 50, 28, 28, 28, 10,221, 53, 21,245, 75,152,157,157, 13, 74,169,224, 76,
+183, 50, 34,172,180,182,220,214,214,246,182, 72, 36,114, 47,106,221, 42,105,239,188,162,231, 12, 6, 67, 76,114,114,114,195,162,
+138,151, 82,122,182, 20,129, 80, 13,192, 79,109,219,182,237, 51,105,210, 36, 18, 18, 18,130, 67,135, 14,209,231,207,159,239, 3,
+ 48,163,180, 74,178, 28, 78, 11,153, 76, 54,193,204,204,172,125,129, 11, 7,165, 82,249, 48, 55, 55,247,172, 86,171, 93, 94,154,
+ 55,248,114, 56, 45,101, 50,217,120, 51, 51,179, 14,217,217,217,245, 0,192,194,194,226, 94,110,110,238, 25,173, 86,187,162,180,
+141,170,203,225, 84, 88, 89, 89,253,104,111,111,255,241, 55,223,124, 99,119,241,226,197,248, 63,254,248, 67,146,145,145,177, 67,
+167,211,149,186,169,116, 73,156,118,118,118,183, 89,150,117,255, 43,242, 8, 0,234,214,173,123,172,123,247,238, 65,131, 7, 15,
+134,193, 96,192,218,181,107,113,230,204,153,224,167, 79,159,118, 43,171, 55, 90,156,147, 16, 98,239,238,238, 30, 50,122,244,104,
+175,129, 3, 7, 42,109,108,108, 32, 18,137,144,155,155,139,103,207,158,225,238,221,187,244,240,225,195, 57,119,238,220,137, 81,
+169, 84,173, 41,165, 41,166,166,231,219,244,154,139,115,138,197,226, 86, 30, 30, 30,187,230,204,153, 99,209,161, 67, 7,133,157,
+157, 29, 88,150,133,193, 96, 64,124,124, 60, 66, 67, 67,113,234,212,169,220,125,251,246,229,166,166,166, 14,164,148, 94,248, 39,
+194,249, 46, 57,253,125,201,172, 98, 27, 69,151,234,237,189,172,107, 77, 9,103,187,214,174, 61,250,245,233,210, 25, 0,246,238,
+ 63,113,242, 92, 72,220,225,202,134,179,188,176,154,194, 89,203,135,157, 19, 22, 30,250,134, 67,203, 0,255,192,136, 90,181,123,
+255, 96, 10, 87,129,103,248,226,113, 47,226,109,191,168, 77,247,141, 97,214,130,141,167,191,157, 49, 29, 63,253, 56, 31,135,247,
+ 30, 12, 14,143,164,199,254,203,101,233,175,228, 44,216, 4, 89,233,226,210,114, 57,207, 79,191, 31, 26,106, 94,180,195, 86, 96,
+121, 46,218,169,116,117,117, 77,138,139,139,115, 50,133,179,219, 47,191,232, 85,102,102,178,233, 11, 23,182,202,209,104, 90,205,
+155, 55, 79,116,235,214, 45,172, 89,181,138,211,196,196,108, 79, 6,198,151, 52, 26, 82, 22,167,215,248,241,242, 41,107,214, 12,
+171, 86,163,134,227,167,159,126, 42, 22,139,197,200,205,205,197,235,215,175,113,250,212, 41, 93,248,163, 71,225, 89, 89, 89, 31,
+ 81, 74,227, 76,229,236,246,203, 47,122,235,106,213,160,116,112,160,231,206,159,183, 26, 53, 97,194,232, 42,222,222, 86,157, 58,
+119, 22, 91, 90, 90, 34, 61, 61, 29, 47, 95,190,196,193,131, 7,147,114,114,114, 92, 41,165, 70, 83, 56,183, 95,185, 82,231,248,
+133, 11,125,127,248,225, 7,105, 96, 96, 32,172,172,172,144,157,157,141,208,208, 80, 92,184,112, 65,187,110,221,186,204,204,204,
+204,209, 28,199, 29,249,171,242,253,125, 29, 58, 36,127,229, 84, 0, 83, 50,130, 16,210, 16,192,172,252,195,239, 77,216, 51,240,
+189,169,124, 8, 33,158,182,182,182, 27, 52, 26, 13, 85,171,213,163, 40,165,209,255,182,112, 18, 66, 68, 13, 27, 54, 92,147,148,
+148,212,148, 82, 10, 43, 43,171,171, 97, 97, 97, 99, 41,165, 92, 69, 57, 9, 33, 44,128,166,230,230,230, 77, 44, 44, 44, 90,105,
+181,218, 90,249,195,111,143,114,115,115, 47,232,245,250, 27, 0,174, 82, 74,141,255,100,220,243,195,217,193,213,213,245,115,158,
+231,107, 16, 66,172,141, 70, 35, 12, 6, 67, 6,207,243,207, 50, 51, 51, 55, 1, 56,243, 79,135,243, 93,113, 6,212, 32,189, 40,
+131, 90,165, 9,130, 55,132, 77, 49, 1, 65,120, 60, 10,123, 70, 15, 86,160,204, 51, 93,218,123,172, 6,242, 86, 38,150,183,149,
+209, 27, 66,203, 4,241, 82, 97,145, 89, 67, 52,148, 18,234,249,102,239,147, 68,215,172,211,107,219,219, 8, 45, 83, 17,224, 71,
+ 90,129,162, 41, 79,113,227,209, 83,250,199,251, 90,215,189, 75,206,249,132,216,174,178,177,185,202,136, 68,206, 0,152,124,235,
+ 11,207, 19, 98,164,132,112, 69,135,183,138,118, 44,203,227,212, 3,181,197, 50,153,135,145,227,156, 18, 0,243,227, 70, 99, 3,
+ 13,165, 57,238,192,172,187,148, 62,169, 76, 56,245, 64,109, 86, 38,243, 60, 78,105,143,100, 51,179, 58, 73,106,181, 3, 0,106,
+110,102,246, 40, 43, 55,119,139, 70,163, 89, 93,194,230,237,229,114, 74,100, 50,119, 35,199, 57, 1, 0, 35, 18, 37,237,214,106,
+ 61, 98, 44, 45, 63,213,104,181, 94,230,230,230, 6,157, 78,151,165,209,104, 6, 27, 12,134,115, 21,137,251, 51,142,243,191,194,
+ 48, 45,244,102,102,118,122, 66,204,116, 28,167,215,233,245,175, 53, 26,205, 67, 0, 63, 83, 74, 35,255,202,124,127,111, 81,176,
+ 58,237,175,248, 0,104, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231, 95,207, 9, 64, 9,192, 19, 0,251, 95,140,251,251,
+244, 1, 48,178,224,183, 72,144,154, 2, 4, 8, 16, 32, 64,192,123, 97, 56, 81,161,132, 57, 89, 2,254, 89, 16, 0,237, 75,201,
+ 48,147, 77,130,149, 89,125, 96,194, 16,131,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,239, 25,103,121,220,255,197, 33,201,
+178,246, 58, 20,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20,134, 14,255,162, 15, 3, 1,165,169, 83, 39, 66,136,
+211,187,190, 86,192,251, 93, 22, 74,184,215,141, 16,226, 86,193,235, 93,132, 84, 23, 32, 64,128,128,247, 3,127,187,208, 50,181,
+209,122,203,198,237,173,132, 15, 33,100, 62, 33,136,203,251,144,249,239,234, 90, 19,158,235,234,224,224,240, 85, 64, 64,192,118,
+103,103,231,113,132, 16,199, 10,222,239, 99,102,102,182,194,220,220, 60,196,220,220, 60,196,204,204,108, 5, 33,196,231, 29,229,
+ 27, 33,132,140,146,203,229,231, 93, 93, 93, 99,101, 50,217,121, 66,200,104, 82,201, 13, 46, 9, 33,126,132,144,121,132,144,239,
+ 9, 33,117, 42,114,175, 83, 96,207, 61,142,129, 61, 31, 56, 6,246, 12,181,175,253,145,143, 99, 96,207, 80,199,192,158, 15,156,
+ 2,123,238,249, 11,202,107,165,243, 55,255,222,232,188, 79,249,247, 18, 66,126, 38,192,107, 66, 16,243,182,101, 73,128, 0, 1,
+ 2, 4,252, 59, 80,161,201,240,110,110,110,125, 40,165,163, 0, 80, 66,200,134,216,216,216,253,149,104,120,166,228,255, 94, 68,
+ 41,157,254, 54,215,153,112,239, 50, 74,233,228,138,139, 52, 76,225,121,202, 0, 0,195,144,169, 78, 78, 78, 74,150,101,255, 52,
+193,208,104, 52, 42, 9,193, 56,158,167, 36,255,218, 41,132,144, 21,148,210,196,202,136,195, 79, 62,249,100,217,138, 21, 43,228,
+ 74,165, 18, 81, 81, 81, 29, 71,143, 30,221,140, 16,242, 53,165, 52,190,188,251, 21, 10,197,160,198, 77,154,126,189,112,241, 82,
+115, 39, 71, 71, 51,206,200,235, 95, 70,189, 82,206,156, 54,185,137, 66,161, 88, 81,214,102,202,197, 5, 21,128,145, 34,145,168,
+191, 92, 46,175,174,209,104, 34, 57,142,219,199,178,108,167, 31,127,252, 49,176,107,215,174,242,172,172, 44, 41,199,113, 53,182,
+109,219,246,245,111,191,253,214,133, 16,210,163,172,101,250, 5, 22, 29, 74,105,108,145,211,125,163,162,162, 26, 74, 36, 18, 82,
+173, 90, 53, 6,192,131,114,174, 47, 4, 5,124,194, 46,239,173, 13, 0, 1,205,251, 69,132, 93,222,139,252,223,127, 65,167,224,
+205,178, 32,151,203,215,105, 52,154,232,130,255,243,195,153,104,202,189,132,144,149,249,219, 7, 53, 4,240,105,254,165, 91, 41,
+165,183, 9, 33,206,114,153,108,130, 90,163, 33, 0,200,219,148, 37, 1, 2, 4, 8, 16,240,183, 27,145,234, 83, 74,239,230,143,
+ 72, 4, 1, 8, 46,104,187, 43,186,234,240,139,167, 79,159,154, 3,128,175,175,239, 88, 0,251, 43, 16,136, 63, 53, 60,237,218,
+181,171,175, 80, 40,222,240,130,172, 86,171,165,132,160, 93,101,196, 75,193, 51,116, 58, 45, 35, 22, 75,193, 48,228,235, 58,117,
+234, 84, 73, 73, 73,185,200, 48,204,246,152,152,152,244, 74, 36, 30, 54,110,220,232,235,226,226,242, 39,111,205,241,241,241,210,
+ 30, 61, 62,170, 16,223, 48, 66,100, 90,153,172,137,132, 16, 23, 35,199, 89, 3,128, 72, 36, 74,247,179,178,106,248,211, 15, 63,
+ 40, 9, 33,124,106,106, 42,212,106, 53, 38, 78,156,168, 8, 15, 15,239, 9, 96,117, 57, 97,244,253,224,195,102, 19, 79,157, 58,
+ 89, 43, 43, 45, 93,179,113,217,250, 59,106,145, 68,229,237, 95, 83,178,102,195, 22,155,145,195, 6,127, 73, 8,185, 87,210,118,
+ 36,197,120, 24, 0, 7, 39, 76,152, 16,208,173, 91, 55,105,118,118,182, 92,173, 86, 87,217,190,125,251,204,134, 13, 27,154,215,
+171, 87, 79,186,107,215, 46,146,153,153, 9, 74,169,178,102,205,154,180,127,255,254,154,221,187,119,143, 3,176,178, 60,225,203,
+178,236,114, 63, 63,191, 57,249,113,150, 20,185, 70,236,239,239,111, 6, 0, 79,158, 60,249,142, 16, 76, 40, 75,100, 19,224,105,
+ 64,243,126, 0, 65,141,176,203,123,229, 1, 45,250,105, 64,241,140, 0, 79,243, 59, 4,243,128, 34,126,161,222,196,163,216,216,
+216, 74,237, 77, 24, 20,212,141, 16, 66,246,185,186,186,238, 79, 74, 74,242, 38, 4, 35, 76,237, 12, 16, 66,136,157,157,221, 80,
+ 0,243, 1,124,254,232,209,163,250, 0, 80,171, 86, 45, 9,128,219,150,150,150,205,244, 58, 29, 17,170, 43, 1, 2, 4, 8,248,
+ 79,162, 62,128,187, 0,130,138,108,193,179,161, 50, 66, 75, 10, 0, 23, 47, 94, 4, 0, 89,101, 68, 95, 81, 1, 51,126,252,120,
+184,184,184, 20, 23, 47, 8, 9, 57,255, 54,145,125,227, 25,223,127,255,189,121, 70, 70, 70,251, 95,127,253,181,165,155,155,219,
+146,216,216,216,235,101,221, 76, 41, 77, 36,132, 44,202,183, 64, 64, 38,147, 71,140, 30, 61,250,110,254,223, 85,142, 30, 61,170,
+236,222,189,187, 10,192, 43, 0,144,201,228,110, 44,203,248,230, 77,122,195,162,178, 4, 97, 63, 66,170, 73,165,210,182,163,126,
+249,133,107,208,189,187,200,204,193,129, 0,192,171,199,143,237, 22, 45, 94,220, 44,253,249,115,169,218,206, 46, 53, 53, 55, 87,
+ 29, 17, 17, 1,153, 76, 70, 88,150,109, 80, 94,132,205,204,204,190,250,225,167,133,102, 89,105, 25,106, 77, 86,182,142,229, 12,
+ 90, 11,133,210,152,152,144,148,106,174, 48, 83, 77,157, 53, 87,250,197,136, 33, 95, 1, 24, 91, 14,213,184,175,191,254,186, 86,
+227,198,141,221,246,236,217, 67, 50, 51, 51, 33, 18,137,204,235,213,171,135,134, 13, 27, 26,255,248,227, 15,226,237,237,141,192,
+192, 64, 92,190,124, 25, 87,175, 94, 37,245,235,215, 87, 30, 56,112,224,147,146,132, 86,113,113,205,178,204,196,154, 53,107,214,
+ 51, 51, 51,211,249,250,250, 98,196,136, 17,160,148,162,125,251,246,129,230,230,230,251,115,115,115,165, 79,158, 60,110, 89,158,
+200, 78, 12, 61,212, 31, 0, 28, 3,123, 62, 0, 80, 27, 20,207,146, 66, 15,213, 41,114, 73,173, 39, 79,158,124,144,158,158, 94,
+ 56, 25,177, 96, 3,243,150, 45, 91,154, 92,144, 10,202, 66,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199,
+143, 63,238,213,171,103,224,211,167,207, 80, 90, 56,139,149, 35, 50,116,232,176, 68,115,115,243,222,174,174,174, 79, 0,136, 36,
+146, 66,157,201, 58, 57, 57, 57,212,169, 83,103,140,173,173,109, 18,203, 48,142, 20,148,150, 87,150, 4, 8, 16, 32, 64,192,191,
+ 10,193,249,226, 42,184,248, 31, 34, 0, 8, 14, 14,166,255,235,181, 7,145,178, 26,158,251,247,239,123,168, 84, 42,152,210, 8,
+ 20, 93,162, 73, 41, 77,100, 89,118, 13,195,144,177,132, 16, 4, 6,214,126,177,124,249,242,146,246,244,210, 5, 6,214,126,193,
+178, 76, 85, 74, 41, 8, 97,214,242,188, 49,177, 36,206,210, 26, 70,169, 84, 54, 5, 0,156,157, 93,158,159, 56,113, 66,215,183,
+111, 95, 44, 94,188, 88, 50,109,218,180,201, 94, 94, 94,227,162,162,162, 18, 74, 11,103,254,241,116, 39, 39, 39,229,198,141, 27,
+125, 71,143, 30,125, 55, 46, 46,110, 58, 0,184,186,186,206, 7,224, 15,224, 85,145,115, 88,183,110,119,236,136, 17, 35, 34, 18,
+ 19, 19,167,151,198,217,135,144,234, 94, 53,107,182,157,119,241, 34,101,180, 90,146,114,233, 82, 86,114, 98,162, 33, 50, 57, 89,
+185,249,246,237,110, 51,231,207, 23,123,120,122, 34,228,200, 17,251, 20,149, 42, 57, 83,171,213, 36, 38, 38, 82,142,227,174,154,
+ 16,247, 0, 71, 7, 71,229,250,159,215,222,178, 16,179,188,163,187, 27, 17,219,218,138, 24,165,165,148, 21, 49,218,170, 85,124,
+164, 0, 2,202,203, 35,137, 68,242, 73,199,142, 29,149,187,119,239, 38,129,129,129,176,182,182,198,165, 75,151,112,239,222, 61,
+164,167,167, 51, 6,131, 1,141, 26, 53,194,194,133, 11,225,233,233,137,140,140, 12, 68, 71, 71,219, 75,165, 82,135, 50,210,243,
+141,242, 52,101,202, 20,184,184,184,128,227, 56,164,165,165,129,227, 56,152,155,155, 3, 0, 98, 98, 98,112,228,200,225,114,203,
+146,137, 34, 9, 31,126,248, 97, 54, 33,228, 81,113,139, 86, 69, 56,221,220,220,118, 37, 39,167,116,105,219,182, 45,210,211,211,
+ 13,115,231,206, 69,157, 58,117,224,235,235,107, 74,153,159, 46,147,201,126,245,242,242,250,121,252,248,241, 46,182,182,182,208,
+106,181, 51, 19, 18, 18, 48,102,204, 24, 0, 64,215,174, 93,235,136,197,226, 19,195,135, 15,135,183,183,119,108, 90, 90, 90,244,
+157, 59,119, 70,228,230,230,134, 86, 54,238, 38,166,143,192, 41,112, 10,156, 2,231,191,138,211, 84, 45,242,111, 68,254, 48,225,
+134, 34,199, 27,222, 16, 90, 65, 65, 65, 36, 56, 56,152,154, 16,177, 84,119,119,119, 15,133, 66, 1, 0,169, 21, 13,136,209,104,
+ 28,103,111,111,159, 52,125,250,244,230,190,190,190,186,113,227,198,133,190,124,249,114, 70,209,107,188,189,189,127, 92,181,106,
+ 21, 34, 34, 34, 94,205,159, 63,255,114, 74, 74,202,247, 21,140,236, 52, 66,200,242,124,235, 88,202,145, 35, 71,234, 92,188,120,
+113,236,178,101,203, 28,190,248,226, 11,201, 87, 95,125, 53, 24,192,226,242,120, 88,150, 85,149, 52, 92, 88, 18, 92, 92, 92,116,
+ 37,205,225, 42, 64,119, 66, 20,150, 82,105,155,121, 23, 47, 82,221,171, 87,170,223,150, 46,181, 88,127,243,230, 28, 3,165, 78,
+142,142,142,104,209,172, 89,142,156,101, 83,146, 18, 18,120,199,234,213,217,151, 39, 78,216,171,165,210,184,221,187,119,103,166,
+166,166, 30, 42,215,132, 71, 72, 22, 79,169,206,220,221,211,208,183,103,135,192, 91, 55,238, 61,182,112,180,103,234,215, 11,172,
+243, 56,226,213, 29,240,188,158, 16,146, 85, 30,143,149,149,149,111,106,106, 42,178,178,178,224,224,224,128,229,203,151,195,217,
+217, 25, 42,149, 10, 97, 97, 97,212,221,221,157, 92,188,120, 17,238,238,238, 72, 78, 78,134, 78,167, 67,118,118,118,146, 86,171,
+ 85,151, 38,124, 69, 34,209,239, 12, 67,134, 17, 66, 80,181,106,181,168,213,171, 87,235,120,158, 71,173, 90,181,208,171, 87, 47,
+ 28, 56,112, 0, 97, 97, 97, 5,150, 39,157,151, 87,149, 40,134, 33, 94,249, 90,169,210, 86,157,130,173,125, 98, 99, 99,123, 87,
+202, 44, 74, 8,227,234,234, 58,216,199,199,103,236,160, 65,131, 12, 82,169, 20,185,185,185, 5,105, 97,232,210,165,107, 70,247,
+238,221,172,130,131,131,203, 12,167, 86,171,125,238,228,228,244,249,215, 95,127,189,125,221,186,117, 54, 51,102,204, 0,207,243,
+160,148,130,227,184,194, 77,191,121,158,199,193,131, 7, 17, 25, 25,249, 99, 81,145, 37, 64,128, 0, 1,255, 95, 80, 1, 45,242,
+175, 67,145,185, 89, 40, 46,182,254,118,207,240, 44,203,174, 63,125,250,116,189,150, 45, 91,138,218,181,107, 23,232,238,238, 30,
+ 24, 19, 19, 19, 10, 0,238,238,238,129,157, 59,119, 14,116,116,116,196,138, 21, 43, 84, 44,203,174,175,164,178, 44,218,232,221,
+117,113,113, 89,114,224,192,129, 69,163, 70,141,130,179,179,179,255,223, 29,103, 75,153,172,254,240,229,203, 57,177,193,192,252,
+178,100,137,229,210,243,231, 23,237,217,187, 87,244,225,135, 31, 18, 74, 41, 30, 62,120,160, 88,184,114,165,114, 96,207,158,175,
+158, 60,127,206, 29, 62,117,202,144, 24, 27,155, 22,155,156, 60,155, 82,154, 86, 30,191,193, 96,184,246,244,233, 83,215, 22,173,
+ 62,116,187,112, 51,244, 94,223,158, 93,219,138, 69, 12,121,246, 42,230,182,139,179,189, 85,200,249,179,106,131,193,112,173, 60,
+158,220,220,220,151, 28,199,217, 82, 74, 29, 66, 66, 66,224,224,224,128,244,244,116, 24, 12, 6,232,116, 58,157, 74,165,146,167,
+166,166, 66,163,209, 64,171,213,194,210,210, 18, 15, 31, 62, 76,228, 56,238,143,210, 56, 57,142, 27, 46,151,203,191, 23,139,197,
+ 82,137, 68, 18,119,251,246,109,100,101,101, 85,177,182,182, 94,204,113, 28,226,226,226,112,241,226,197,111, 44, 45, 45, 95, 1,
+128, 92, 46,135, 84, 42,179,211,106,181, 92,105,147,225, 77,181,104, 85, 22, 46, 46, 46,158, 85,171, 86,157, 55,117,234,148, 90,
+117,235,214, 67,114,114, 50,120,158,135,153,153, 25, 84, 42, 21, 44, 45, 45,209,180,105,211,151,243,230,205,139,167, 20, 35,203,
+ 19,131,137,137,137,201,110,110,110,227, 70,141, 26,245,189,175,175,111, 85, 74, 41,124,124,124,208,177, 99, 71,156, 56,113, 2,
+ 17, 17, 17,200,205,205, 53, 94,191,126,125,103, 92, 92,220, 81,161,186, 21, 32, 64,128,128,255,158, 78, 44,152,155, 85,212,154,
+245,143, 8,173,196,196,196,100,119,119,247,147,119,238,220,233,214,191,127,127,132,132,132, 12, 5,240, 53, 0,200,100,178,161,
+253,251,247,199,157, 59,119,240,248,241,227,147,137,137,137,201,239,226,153, 82,169, 84,163,211,229, 25,167,228,114,185,188,130,
+183, 87,201, 31, 50, 4,128, 42,101,156, 43, 21,140, 72,228, 82,187,115,103, 81,250,189,123, 89, 27,111,220,248,126,251,246,237,
+162,230,205,155, 19,131, 94, 15, 35,207,163, 90,181,106,164, 93,251,246,102,191,111,223,110,107,204,205,189,248,195,212,169,151,
+ 54, 12, 31,158, 19, 65,233, 43, 83, 2,168,213,106, 87,142, 29,243,121,251,243, 33,151,220,252,107, 86,183, 61,121,250,252, 93,
+ 59, 59, 43,165,111,141, 26,102,169,233,105,198, 25,211,190, 17,105,181,218, 95,202,227, 81,171,213, 7,207,158, 61,219,211,195,
+195,195, 33, 52, 52, 20, 58,157, 14, 70,163, 17,237,218,181, 3,165, 84, 6,128, 23,137, 68,120,252,248, 49,244,122,125,210,211,
+167, 79,227,158, 61,123, 38, 3,176,160, 44, 94,141, 70, 19, 85,244,216,195,195,163, 67, 80, 80, 16, 56,142, 67,231,206,157,113,
+248,240,225, 14,225,225,225, 75,139,106,190,183,205,243,124, 11, 89, 45, 55, 55,183, 3,249,167, 76,154, 4,239,238,238, 30,232,
+227,227,179,110,193,130, 5, 18,119,119,119, 80, 74, 97, 99, 99, 13,149, 74,133,148,148, 84,248,251,251,195,195,195, 3, 11, 22,
+ 44, 0,128,157,166, 90,220, 98, 99, 99,159, 1,232,239,239,239, 47,201,200,200,104,216,161, 67,135, 21,237,219,183,199,221,187,
+119,113,233,210,165,129, 50,153, 44, 73,175,215,115, 46, 46, 46, 35, 9, 33,150,122,189,126, 71, 74, 74, 74,188, 80,119, 9, 16,
+ 32, 64,192,127, 2, 5,115,180, 10,189,196, 87,216,162,229,239,239,111,150,153,153,249,105,149, 42, 85,164, 0,160, 80, 40,252,
+171, 87,175, 62, 57, 50, 50, 50,187,162,161, 81,169, 84,123,182,111,223,222,241,231,159,127,150,116,237,218,181,186,187,187,123,
+ 99, 0,232,221,187,119,117, 11, 11, 11,108,223,190, 93,175, 82,169,222,153, 79, 36,131,193,208,178, 81,163, 70, 72, 75, 75,195,
+171, 87,175, 42, 52, 44,115,244,232, 81, 37,242,230,101,149,121,174, 44,112, 58,157,141,181,155, 27, 19,123,254,188, 62, 45, 43,
+203,165,101,171, 86,196,160,215,131, 97, 24,164,166,166, 34, 58, 58, 26, 86,214,214,228,241,211,167,230,155,166, 76, 57, 90,165,
+110, 93,169, 81,167,179,171,128,168,200, 37,132, 12,251,114,220, 23, 7,119,236,216,233,144,145,149, 21,169, 80, 40,181, 50,153,
+196,121,252,151, 95, 26,211,210,210,134, 80, 74,115, 76,160, 90,176, 99,199,142,206,157, 59,119,126,224,233,233,233,152,156,156,
+236,156,145,145, 97, 76, 75, 75, 99,145, 55,215,138, 0,192,249,243,231,145,149,149,197, 25,141,198,139, 0,230, 81, 74,117,166,
+134,181, 74,149, 42, 86, 77,154, 52,105,237,224,224,128,204,204, 76,216,217,217,161, 94,189,122,173,171, 84,169,242,235,171, 87,
+175, 50,223,101,169, 63,115,230,140, 5,165,244, 3, 74, 41, 58,119,238,108,210, 61, 70,163,241,179,160,160, 32, 9, 33, 4,106,
+181, 10,114,185, 2,102,102,230,176,176,176,132,175,175, 31,226,226,226,208,169, 83, 39, 93,100,100,228,154,248,248,248, 10,151,
+209,204,204,204, 30, 77,155, 54,157, 52,102,204, 24,112, 28,135, 30, 61,122,224,245,235,215, 75, 95,190,124,185,219,213,213,117,
+240,103,159,125,230, 96,103,103,135, 73,147, 38, 41, 0,124, 39,212, 93, 2, 4, 8, 16,240,239, 71,241, 57, 90, 37, 90,180,202,
+ 26, 19,117,113,113,105, 97,107,107, 59, 83,173, 86, 75, 11,134,100, 8, 33, 82, 7, 7,135,195,174,174,174,243,227,226,226, 42,
+ 52, 41, 46, 61, 61, 61,203,197,197,229,240,181,107,215,250,245,238,221, 27,103,206,156, 25,146, 47,180,112,237,218, 53,188,120,
+241,226,112,122,122,122,214,187,136,188,187,187,123,151,214,173, 91,247,110,212,168, 17,142, 29, 59, 6,163,209,120,181, 34,247,
+ 23, 93, 97,136, 18, 86, 29, 22,156, 51,137,140,101, 65, 8, 1,199,113, 0,128,148,228,100, 68, 60,121,130,180,244,116,104, 53,
+ 26,228,170, 84, 70, 95,111,111,117,166, 78, 39, 38, 0,173, 96, 38, 71,153,155,155, 71,171,114,115, 29,237,108,108,213, 74,165,
+ 12, 25, 89,153,146,219,183,174,231, 80, 74, 35, 77,228,208, 17, 66, 90,157, 56,113, 98, 54,203,178,253,205,205,205, 49,118,236,
+ 88,182,117,235,214,144, 72, 36,208,106,181,200,200,200,192,246,237,219,147, 57,142,171,154, 95, 14,204,205,204,204,182,176, 44,
+ 27,147,149,149, 53,179,188,103,232,116,186,174,221,186,117, 19,233,116, 58,252,240,195, 15,152, 51,103, 14, 58,119,238, 44,186,
+117,235, 86, 87, 0, 59,222, 85,161,231,121, 30, 29, 58,116, 40, 58, 25,254,145, 41,247,137,197,226,192, 26, 53,106, 32, 57, 57,
+ 25,201,201,201,112,112,112,128,171,171, 43,156,157,157,177,116,233, 82,186, 98,197,138,147,122,189,126, 77,114,114,114, 98, 37,
+202,226,200,161, 67,135,142,236,215,175, 31,114,114,114,112,237,218, 53, 52,107,214, 12,139, 22, 45,114,185,120,241,226,215,141,
+ 26, 53,130, 88, 44, 70, 72, 72, 8, 56,142,123, 45, 84, 93, 2, 4, 8,248,255,134,255,226,252,172,242, 80,166, 69,203,211,211,
+211,218,104, 52,126,211,189,123,247, 14, 61,123,246, 68,167, 78,157,222,248,127,199,142, 29, 22,251,247,239,159,239,225,225,209,
+ 89,175,215, 47,168,200, 80, 31,207,243, 7,119,236,216,209,245,195, 15, 63, 84,182,105,211,166, 26, 0,200,100, 50,221,142, 29,
+ 59, 84, 60,207, 31,172,104, 68,138, 59,143,116,115,115,171, 35, 18,137,122,119,235,214,173,206,176, 97,195, 16, 22, 22,134,237,
+219,183, 63,243,245,245,189, 92, 65,234, 87,229,172, 58,156, 95,158,117,139,149, 74, 83, 51, 18, 18,172,205, 61, 61,197, 54, 22,
+ 22,241,199,142, 29,243,104,223,190, 61,121,253,250, 53,210,211,211,161,209,104,112,235,214, 45, 94, 4, 68,137,108,108, 72,212,
+181,107,132,149, 74, 43,188,216,192,195,197,198,103,214,180,209, 85, 52, 90, 77, 64,102,102, 38, 39, 18,139,197,238,206,214, 21,
+106,176, 41,165, 90, 51, 51,179,134, 0, 68, 60,207,171,108,109,109,149,167, 79,159,134, 84, 42, 5, 33, 4,181,107,215,134, 92,
+ 46,151,152,153,153, 69, 3,128,179,179,179,116,253,250,245, 86,131, 7, 15,190, 84, 30,119,131, 6, 13,196,222,222,222, 31,249,
+250,250,226,218,181,107, 8, 13, 13,141,186,118,237,154, 87,253,250,245,225,233,233,249, 81,131, 6, 13,246,222,185,115,199,240,
+142,122, 23,149,154, 12,111, 52, 26,121, 66, 8, 24,134, 1,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252,
+135,184,184,184, 35,149, 9,143,191,191,191,164, 94,189,122, 67,250,245,235,135,231,207,159, 99,254,252,249, 41,241,241,241,231,
+ 79,157, 58,213,103,204,152, 49,108,179,102,205,144,154,154,138,223,127,255,157,187,125,251,246,111, 9, 9, 9, 91,133, 42, 87,
+128, 0, 1, 2,222, 99,161,229,233,233,217, 79, 34,145, 76, 26, 48, 96, 0,235,231,231,135,196,196, 68, 88, 90, 90, 26, 8, 33,
+ 98, 0,176,182,182, 54, 40, 20, 10,140, 30, 61, 26,117,235,214,109, 49,101,202,148,102,110,110,110,171, 99, 99, 99,183,152,242,
+224,196,196, 68,149,139,139,203,190,177, 99,199, 46,184,119,239,110, 85, 0,184,121,243,230,139,184,184,184,105,137,137,137,170,
+ 10,138,172, 2,167,152, 68,161, 80,220,240,241,241,121,217,165, 75, 23,203,158, 61,123,194,193,193, 1,119,238,220,193,194,133,
+ 11,159,234,116,186,217, 33, 33, 33,220,223,157,200,156, 86,155,112,251,208, 33,139,214, 31,127,108, 57, 62, 40,104,201, 23, 99,
+199,254, 60,107,214, 44,145,159,159, 31, 81,169, 84,184,113,227, 6,221,191,127,191,225,247,239,191, 95, 14, 51, 51,241,181,253,
+251,165, 58,157, 46,170,130,214,146, 86, 93, 59,183,242, 91,242,243, 74,104,212, 57,184,113, 53, 24,233,233,201, 88,191,225,128,
+159,187,187,123,171,152,152,152, 11, 21, 72, 79,223, 51,103,206, 56, 82, 74, 33,149, 74, 49,111,222, 60,184,186,186,194,210,210,
+ 18,217,217,217,248,250,235,175,173, 38, 76,152, 96, 5, 0, 97, 97, 97,133,238, 25,202, 67, 92, 92, 92,211,209,163, 71, 91,112,
+ 28,135,147, 39, 79,234, 8, 33, 51,207,158, 61,251,107,237,218,181,165, 45, 90,180,176,216,186,117,107, 51, 0, 33,239, 74,104,
+ 85,242,190,103,167, 79,159,110,212,191,127,127, 42, 22,139, 73, 70, 70, 6,172,173,173,177,122,245,234,220,248,248,248,224, 74,
+151, 1,142,147, 42,149, 74, 41,165, 20,251,246,237, 67, 84, 84,212,103, 41, 41, 41, 9, 78, 78, 78, 7,190,249,230,155,201,126,
+126,126,222, 79,158, 60,137,202,206,206, 94,148,152,152,248, 82,168,154, 4, 8, 16, 32,224,191,131,130, 73,240, 21,242, 12,111,
+ 52, 26, 71,159, 58,117,138,229,121, 30, 27, 54,108,192,237,219,183,169, 82,169,156,169, 84, 42, 87, 41, 20, 10,163, 90,173, 30,
+ 53, 98,196,136,193,115,230,204, 97, 90,180,104,129,107,215,174, 49, 85,171, 86, 29, 2, 96, 75,145, 7,183, 47,203,215, 70,102,
+102,230,173,196,196,132,170, 69, 28, 84, 86,149,201,228,183,202,137,204, 27,156, 37, 56,197,108, 50,111,222,188, 92, 23, 23, 23,
+ 93,104,104, 40,214,173, 91,199,223,190,125,251,188, 84, 42, 93, 31, 23, 23,167, 53,133,243, 29, 37,122, 33,167,148,227,238,108,
+155, 60,185, 86,131, 30, 61,248,207, 39, 77,202,145, 40, 20, 95, 45, 89,185,114, 74, 70,118,182, 43, 8,161,118, 86, 86, 81, 27,
+230,205,155,223,249,163,143,114,194, 46, 92,144,223, 59,115, 70,236, 96, 48,220,175, 72, 56, 99, 98, 98, 46,248, 84,247,196,230,
+141, 63, 67,175,215, 34, 62, 54, 79,167,165,164,102,162, 44,145, 85, 18, 39,199,113,153,125,250,244,145, 0, 80,124,242,201, 39,
+210,164,164, 36, 84,175, 94, 29, 0,144,149,149,133,224,224, 96,212,172, 89, 19, 0,240,240,225,195,194,223,229,133,211,204,204,
+236,163,102,205,154, 33, 42, 42, 10, 97, 97, 97,231,226,226,226, 82, 93, 93, 93,207,189,126,253,186,107,163, 70,141,112,240,224,
+193,238,165, 9,173,138,230,145, 41, 66,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218,
+181, 3, 0,100,103,103,171, 40,165,198,202,112, 22, 13,147,193, 96, 0,207,243,176,181,181,205,205,239,112,188, 68, 57,142,100,
+255,234,242, 41,112, 10,156, 2,167,192,249,111,224,124, 79, 96,186,103,120, 74, 41,199,243, 60, 66, 66, 66,112,224,192, 1,163,
+ 94,175, 31, 25, 23, 23,247,176,200, 37, 43, 93, 93, 93,207,244,233,211,103,203,147, 39, 79,216,240,240,112,152,210, 16, 21,133,
+ 70,163, 49, 20,223,146, 88,163,209,188,245,208,209,230,205,155,145,144,144,160,127,253,250,245, 89,142,227, 14,190,229,234,197,
+183, 94,117,248, 59,165,218,143, 9, 57, 59,167,121,243, 14,179,207,156,145,125,254,237,183,218,161,195,134,125, 99,212,233, 12,
+172, 68,194, 75,205,204, 24,163, 76, 38, 14,187,112, 65,190, 98,204, 24, 91,181, 86,123,114, 91, 5, 38,152, 23,177,104, 97,232,
+231, 19,161, 46, 98,209,186,118, 43, 2, 21,181,104,105, 52,154,128,124,209, 17, 13,192,249,211, 79, 63, 5,207,243, 80,171,213,
+200,206,206, 70, 92, 92, 92,230,176, 97,195,140,249,226, 73,212,187,119,111, 75, 83,120,171, 85,171,230, 42, 22,139,113,242,228,
+ 73,136,197,226, 96, 0, 16,139,197,193,103,206,156,233, 58,112,224, 64,184,185,185, 85, 35,132, 16, 90,142, 74,114, 10,236,185,
+135, 2, 62, 32,168,145,247,198,163,134, 99, 96,207, 7, 4,120,154,239, 53,254, 81,253,250,245, 1, 19,231,101, 21, 69,254,226,
+142,229,246,246,246,123,167, 76,153, 50,182, 73,147, 38, 29,231,204,153, 67, 0,176,239,196,186,201,113,111,229,122, 66,128, 0,
+ 1, 2, 4,252,123,173, 90, 37,157, 23,149,113,195,134, 86,173, 90,141, 4,192, 18, 66,214,197,198,198, 62, 44,126, 77, 92, 92,
+ 92,132,155,155,219, 98,111,111,239,194,141,166, 43, 18,168,124, 79,238, 11, 25,134, 76,201, 59,174,184,131,202, 34, 91,157, 76,
+ 1, 64, 24,134,221,114,247,238,221,111,163,163,163,147, 43, 42,252, 74,194,187, 88,117, 8, 0, 59, 40,125, 57,144,144, 83,147,
+ 2, 3,219,119, 30, 51, 6,117, 58,119,182,116,245,242, 50,170,245,122,254,225,229,203,228,234,190,125,146,123,103,206,136,213,
+ 90,237,201, 3,148, 70, 87, 52,156, 49, 49, 49, 23,170, 87,115, 63,221,183,119,215,142,213,188, 93, 1, 0,207, 95,198, 33, 37,
+ 45,243,116, 69, 68, 86, 49,193,213, 99,245,234,213, 71, 36, 18,137,168,232, 86, 54,122,189, 62,173, 64,140, 17, 66, 92, 55,108,
+216,176,139, 97,152,168,242,248,194,195,195, 15,207,158, 61,187,247,171, 87,175, 78, 71, 71, 71,191, 2,128,168,168,168, 87,174,
+174,174, 91,226,227,227,123, 71, 69, 69,237,167, 38,168,144, 98,155, 74, 35,236,242, 94, 57,128,218, 5,155, 74, 87,118, 47,195,
+162,200,119,173, 48,211,197,197,101, 71,199,142, 29, 71, 0,136,125, 27, 62,157, 78,103, 80,171,213,156,209,104, 20,233,245,122,
+170,211,233, 12, 66,181, 36, 64,128, 0, 1, 21, 66, 35, 0, 5, 59,145, 20, 24, 80, 28,138,253,214, 33,127,187,192,130,234, 55,
+255, 56, 25,192,173, 34, 28, 69,207,151,119, 47, 0,164, 0,120,144,127,174, 36, 45,178,161,180,227, 82,133, 86,108,108,236,126,
+152,176,105,180,169,215,149, 33,148,166, 19, 66, 86, 20,136,166,183,229,224, 56,238,157,236, 15,199, 48,204,203,238,221,187, 87,
+232,250,242,174,217, 69,105,212, 87,132,108, 61,246,203, 47,245, 78,174, 91,231,102,228, 56, 59, 2, 80, 86, 42, 77,213,233,116,
+175, 28, 12,134,251, 21,181,100,189, 97,141,121, 30,211, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171,213, 27,148,210,251,
+ 0, 60,202,185, 38, 14, 64, 11, 19,197,224, 78, 0, 59, 75, 16,236,187, 0,236, 50,185,215, 80,176,169, 52,192,240,132,239, 27,
+208,188,223, 62, 0,124,193,166,210,239, 18,241,241,241, 79,144,239,231,237,109,240,234,213, 43,173,183,183,247,182,133, 11, 23,
+126,114,239,222,189,221,177,177,177, 90,161,206, 20, 32, 64,128,128,138,137, 44, 66,200,177,252,182,167, 91,126,103,255, 88,241,
+223, 5,215, 20, 92, 87,244,154, 2,142,226,231,203,186, 23, 0,166, 77,155,246,237,252,249,243,149, 0, 76,218,140,185,168,227,
+ 82,209,191, 33,245,222,197,230,185,239,122, 3,222,152,152,152,141,127, 69, 92, 87,230, 9,169,235,127,101,122, 62,125,250,148,
+188,207,111, 91,193,166,210, 69, 16,248, 95, 8,247,203,151, 47, 87,183,110,221,122,125,108,108, 44, 7, 1, 2, 4, 8, 16, 80,
+ 17, 56,148, 36,140, 74,209, 3,221,202,250,191,152, 32,250,211,117, 37, 29, 19, 66,142,205,159, 63,191,155,169,129, 45,106,209,
+ 98,132,188, 19, 32,224,239,195, 63,177,234, 85,128, 0, 1, 2, 4,148, 42,136,222,176, 98, 21,136,175,226,199,211,166, 77,251,
+ 22,165, 12, 27,230, 95,227, 66, 8, 25,153,191,234,240,141,249, 90, 4, 64,251, 82, 30,110,242,106, 2, 66, 72,251, 74, 68,238,
+172,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,255,191, 56,203,227, 46,229,254,160,210,134,250,202, 26, 70, 44,254,187,188,
+123, 77,184, 54,184,148,184,140, 44,186,215,225, 27,123, 30, 22, 76,114,254, 43, 62, 0,218, 11,156, 2,167,192, 41,112, 10,156,
+ 2,167,192, 41,112,190,229,167, 17,165, 52, 8,121,187,166, 80, 74,105, 16,165,180,243,180,105,211,166, 23,156,155, 54,109,218,
+116, 74,105,187,130,235,242,175, 41,188,167,224, 92,241,239,226,231,202,185,182,180,244, 24, 89,244,119,209,227,127,197, 28, 45,
+ 1, 2, 4, 8, 16, 32, 64,128,128, 50,112, 11, 64,163, 34,214,166,100, 0, 15,231,207,159,159, 94,100,238, 84, 50,128,251, 0,
+234,230, 95,151,156,111, 80, 42, 58,183, 74,151,127,172, 43,225, 26,157, 41,215,150, 98,133,219, 80,210,111, 0,130,208, 42, 13,
+245, 92,216,239, 61,221, 29, 27, 22, 90,253,120, 30, 0,192,231,123, 31, 40,116, 67,192,243,160,148, 34, 46, 41,227,206,131, 68,
+ 58,171,178,207,243,115, 35,182,142,114,249,114,158,210,230,249,167, 46,100,166,106, 39,134,102,210, 12, 83, 57,106, 57,147, 90,
+114, 6,223,240, 20,117, 0,128, 33,120,160,225,177,248, 81, 2,125,244,182,233, 65, 8, 33, 1, 14, 24, 41, 85, 40, 7, 88, 89,
+219,212, 72, 79, 79,121,170,215,104,247,134, 39, 99, 61,173,132, 99,168,234,182,228, 3,158,226, 91, 0,140,152,193,210,136, 84,
+122, 94, 40,117, 2, 4, 8,248,155,240,182,126,241, 74,114, 29,244,182,139,144, 4, 7,123,166,137,173,226,184,105,226,117,255,
+ 24, 42, 36,180, 2, 28,201, 24, 16,204, 5, 64, 65,241, 93, 88, 18, 93, 91,161,251, 93, 73,123, 57,203,110, 2,192,106,244,198,
+ 73,148,199,197, 18, 27,117, 6, 45,229, 18,118, 41, 0, 94, 99, 52, 14, 15,139, 51,125,190, 88,160, 59,233, 44,226,153,109, 60,
+165, 98, 35, 79,183,128,226,152,185, 4, 87,174,197, 80, 77, 69,194,234,233,238,216,240,208,205,248,142,231,215,142, 71,147, 58,
+213, 65,141, 28,192, 27,160,108,241, 13,206, 45,251, 20, 77,106,121,130,242, 6,128,231, 96,222,101, 9,186, 4, 90, 85,250, 37,
+241,115, 35,182, 94,246,142,161, 27, 55,110,114,118,173,230, 79,120, 78,143, 39, 55, 79, 15,158, 48,101,118,219, 64, 43, 18,104,
+138,216,170,235, 74, 62,175, 94,213,239,155,137,115,127,102, 93, 92, 61,204,120,131,150, 75,120,249,168,254,202, 69,179,247,215,
+117, 37, 75,239,199,209, 77,166, 10, 42,127, 7,140, 18,201,164,253, 20,114,179, 26, 42, 85,246, 51,163,222,176, 55,208, 85,212,
+121,241,146,229,245, 90,119,232,106,110,204, 78, 96, 12, 60,252,247,236,222,229,245,203,234, 53, 93, 9, 33, 31, 81, 74,249,138,
+196,153,167,152, 18,177,117,100, 87,177,136, 37,181, 62,219,200,194,196, 37,179,197,225,239, 68, 6, 17, 90,190,123, 9, 74,112,
+ 41, 60,145,238,172,204, 51,106, 57,145, 95, 9,133, 47, 8,246, 17,138, 93, 97, 73, 52, 73,168,239, 4, 8,120,191,192, 48,204,
+121,158,231,219,188, 75, 78, 66,200, 7,148,210,235, 66,234,254,255, 70,197, 44, 90, 4, 63,132, 69,190,182,129, 81,143, 0,223,
+106,223, 3,168,144,208,146,179,236,150, 91, 79, 19,157,193,233,177,241,199,177,187,117, 6,128, 51,232, 97,228, 12, 48,114, 6,
+112,156, 30, 70,131, 1,212,160,197,236,223,206, 3,186,108, 52, 12,244,217, 2,192,197,212,103,136, 41,179,237,206,229,211,182,
+ 68,151,137,157,107,231,127,249, 58, 57,231,203,179, 15,226, 82, 2,156,200,244,240, 36,252, 94, 17, 65,112,126,221,120,108, 63,
+ 24, 28,179,226,215,220,199, 60,165,176,181, 84,248, 13,238, 22,230,177,245,240,249,215,203,183,104, 30, 3,128,149,153,212,111,
+200,131,167,158,111,147, 9,142,114,249,242,245,107,126,113,118,177, 83, 16,238,234, 2,112, 70, 35, 60,188,130,216,233,227, 6,
+187,252,176,108,211, 50, 0, 67,203,186,191,166, 19,241,247,173, 94,107,210,150,224,171,158,185, 89, 73,186,211, 59,190,141,132,
+ 22, 6,103,183, 90,226,239,231,255,204,206,152, 58,254,235,154, 78,228,198,227, 68, 26, 94, 78,165,192,212,114,196,225,249, 11,
+150,212,105,219,165,155, 57,159,147,204,106,114,115,124, 55,254,182,105,110,205, 58,141,149, 45, 2,221, 37, 73,123, 71, 19,117,
+118, 26,244,140, 92,214, 54,160,189,165,250,147,129,134,141,155,183,143, 3,176,178, 66,221,193, 34,195,214, 60, 95,249,222, 37,
+161,104,113,239,250,249, 81,198,184, 91,160, 70, 3, 96,212, 23,126,195,104, 0,229,243,190,155,140,254, 13, 40,193,135,151, 73,
+ 21, 48, 69,199,179,151,111,185, 36, 38,196, 55, 90,182,228,167,233,254,142,228, 4,140,216,246, 40, 13, 23, 42, 42, 48, 5, 8,
+ 16,240,239, 5, 33,132,163,148,138,222, 49,103, 87, 74,233,241,183,228,248, 6,192,231,249,135,155, 40,165,139,223, 65,184,220,
+ 1, 56,231, 31, 38, 80, 74, 99,132, 18,240, 86,233, 57,178,232,144,225,219,248,209,146,131,242,192,190,158, 0,160,168,104, 64,
+ 40, 32, 7, 97, 1, 67, 46,122,116,233, 0,123, 71,103,192,160, 2,244, 42,192,160, 6, 12,185,128, 65,141,148,248, 40, 64,159,
+ 11, 60, 63, 1,142, 82, 89,133, 99,172,205, 4, 34,246,162, 93,125, 79, 56, 88,201, 49,190,135,191,253,134,147, 17,155, 54,157,
+126,210, 30,192, 0,147,194, 74, 41,154,212,174,129, 21,155,114, 31, 31,185,147,212, 9, 0,130,234,217,159,108,226,239,229,177,
+124,139,230,113,240,131,180,206, 0,208, 37,208,234, 68, 99, 63, 23, 79,254, 45,172,190, 60,165, 45, 92,171,212, 32,198,123,235,
+193,103,197, 32, 43, 75,141,152,151, 91, 97,227,214,128, 49,242,104, 85,222,253, 10, 22,211,190,154,177, 80,172,202, 74,212,241,
+250,100,163, 3,155,206,138,164, 60, 65,236, 5,109, 14,159, 97,156, 56,242, 83,110,210,172, 31,167, 1, 24, 92,166,117,200, 17,
+227,150, 46, 93, 94,187, 89,195,154,142, 9,251,199,147,156,244, 68,112,172, 82,214,227,195,102,176,246,241,231, 19, 67,150, 18,
+105,181,246,176,182,171,134,216,171, 59,240,234,250, 1,210,188,126,111,217,239, 59, 37,159,148, 38,180,124, 28, 72,243, 78, 45,
+ 27,239,174,230,233,234, 66, 41, 15,158,167,160,188, 17,159,245,237,136,233,123,158,195,104, 52,162, 79,167,230,237, 22,142,106,
+ 75,121,158, 7,165, 60, 94, 39,164,170,254,184,241,184, 93,100, 26,189, 97,138,165,170,238, 7,109,154, 63,184,115,189,166, 33,
+226, 40, 26, 14,158,255,152, 0,151,139,148,185,230,119, 79,253, 94, 19,248,173,178, 47, 15,169,229, 8,227,171,147, 11,224,217,
+114, 36,187,126,231, 73,135,204,228,216, 33,251,183,174,233,187,118,253,250,237, 0, 70, 11, 85,140, 0, 1,239, 7, 40,165,239,
+ 92,108, 69, 69, 69,197,189,141,216,114,119,119,111, 9, 96, 81,193, 12, 13, 66,200, 34,111,111,239,217,255,235,168,190,209,215,
+203, 52, 26,141,131, 99, 98, 98, 46,150,197,217,173, 91, 55, 87, 0,222, 69, 56,189, 9, 33,222, 37, 93,107,109,109,109,108,218,
+180,233,171, 99,199,142,197, 9, 37,164,226,130,171, 50, 66,235,113,244,222,241,245,181,241, 57, 0,240,216,132, 66,251,198,144,
+159,198, 96, 92,176,121,238,167, 11, 2,170,216, 34, 59, 87,135,211,183, 95,193,104, 52,192,200,113,249,150, 45, 14, 70,206,128,
+ 78,117,237,209, 84, 51, 26, 43,143, 61, 1,103,228,231,151,197, 89, 28,122,202, 15,170,215,190,255, 30,158,167, 82,153,152,201,
+244,245,176,115,156,212,167, 46, 51,190, 71, 0,212,122,174,191,191, 19,249, 35, 60,145,110, 52,137,147,255,179,203, 35, 90,210,
+ 57, 35, 87,110,220,203,176, 70, 53, 25,216,173,131, 37,213,102,194,144,242, 28,217, 42, 3,158,167, 26,144,160,201,128,140,196,
+155,196,201, 83,212,113,119,115, 81, 94,217, 61,245,165, 29,155, 37,114,100, 57,137,148,225, 96,228, 41, 75, 51,194,181,182, 53,
+ 59,136, 11,230,109,149, 21, 78,133,210,226,211,150, 29,131,172,162,119,140, 36, 10,223, 78,112,172,239,129,151, 23, 55, 35,233,
+246, 49,164,198,189, 34,150,154, 12, 56,217, 85, 71,151,193, 3,176,120, 64, 35,100,103,101,131,141,143,180,146,138,101,214,165,
+113, 82, 35, 6, 47, 93,248,163,139,136,101,242,210,179,224, 99, 52, 64,173,213, 2, 70, 14,114, 17, 15, 66, 11,254, 51,192,104,
+208, 43,235,244,158, 58, 22,192,141,242,226, 30,158, 72,119, 6, 56,146, 22,224, 13, 53,169, 65, 13, 2, 92, 14, 75,162,133,226,
+199,223,137, 12,106,208,105, 88, 11, 74,112,169, 50,121, 20,104,135,110, 13,189,205,205,204,178, 30, 35,102,223,151,136,132,156,
+ 58, 53,251, 28,131, 62, 27,167,220,176, 97, 67,119, 66,200,152,162,115,212,254,138, 77, 86, 5, 78,129,243,191,202,105,101,101,
+ 85,181, 74,149, 42,179, 13, 6, 67, 75,137, 68,226,164,215,235,193,243,124,130, 84, 42,189,244,234,213,171,121,153,153,153, 47,
+254,109,113,127,240,224,129,201, 98,203, 20, 78,177, 88,140, 39, 79,158, 60, 51, 85,108, 21,231, 20,139,197,219, 46, 95,190,140,
+ 61,123,246, 0, 0, 34, 34, 34,224,227,227, 99, 86,210,189, 47, 95,190, 52,107,221,186,245, 54, 20,219,209,163, 56,231,195,135,
+ 15,171, 30, 61,122, 20,251,246,237, 3, 0, 60,121,242, 4,190,190,190, 37,134,231,242,229,203,236,199, 31,127, 92, 21, 64,220,
+ 95,157, 71,239,131,200, 42,250,253,134,208, 10, 14, 14,166, 65, 65, 65,164,248,239, 18,240,220,211, 70, 90, 31, 26, 35, 0, 60,
+175,104, 32,194, 19,232,194,186, 46,226,206,231,246,173,110, 41,151, 48,152,179,113,210,235,228,180,236, 15, 68, 4, 60, 0,112,
+ 20,140,141,185,244,218,252, 33,117, 61,211,115, 52, 56,114, 51,246, 98, 88, 98,197, 76,164, 97,113,244, 12, 0,235,255, 53,148,
+196,119,200,226, 51,187,118, 77,235, 92,103, 98,143, 58, 56,124,245,213, 68, 0,229,122,125,167, 60, 15,202,115,133,147,223,243,
+187, 14, 0,255,230,166,192, 60,104,222, 57,190, 98, 22,173,214,132,136,210, 29,209,197, 86, 41, 93, 53,106,212, 8, 75, 67,242,
+ 83,164,233, 36,120,157,174, 65,130, 90,140, 28,145, 35, 98, 31, 63, 52, 50, 4,103,202,207, 92,100, 81, 78, 99,109, 35, 53,103,
+ 2, 59,140,117,203, 58,249,109,186,148,112,172,101,175, 31,172, 83,206,253,252,138,203, 77,206, 37, 4,229,238,173,103,101,101,
+237,163, 73,125,197,102,166,167,192,218, 57, 0,157,251,119,195,119, 65,254,200,206,202, 69,114,218, 53, 90,195,197,146, 68, 93,
+218,142, 25, 93,106, 33, 53, 49, 30, 90, 3, 64,114,181,105, 26,157, 38,167,212,116,100,176,126,194,228, 41,131,188, 92, 28,204,
+ 10, 22, 21, 80,222,136,186,181,170,161, 67,203, 38, 56,115,249, 10,110, 61,140, 0,159,191,168,128,242, 60, 98,146,210, 19, 53,
+122,227,230, 10, 37,168,145, 3, 53,104, 74, 20, 98,168,196,144, 97,109, 39,162, 52, 2,179, 62,168, 97, 49,124, 90, 55, 47, 11,
+ 51, 25,129,198, 96,132, 70,103, 64,246,149, 85,176,171, 82, 27, 74,185,156,212,135, 90, 4, 64,216,183, 80,128,128, 34,232,215,
+175,159, 60, 49, 49, 49, 36, 40, 40,200,191, 67,135, 14,202, 22, 45, 90, 32, 55, 55, 23,167, 79,159, 70,110,110,174,151,135,135,
+135,215,233,211,167,123,127,240,193, 7,225,238,238,238,173,247,238,221, 91,145, 57,180, 34,252,111, 50, 59, 15,128, 35,132, 32,
+255, 28, 1,192,191,205, 62,183, 82,169, 20, 81, 81, 81,239,220,178, 21, 27, 27,251,172, 50,150,173,156,156, 28,137,155,155, 27,
+ 28, 28, 28, 96, 52, 26,145,155,155,139, 67,135, 14, 33, 51, 51, 19, 60,207, 67,161, 80,224,135,165, 27,241,248,110, 8,110,220,
+184,129,204,204, 76, 73,121,156, 49, 49, 49,164,110,221,186,208,106,181,224, 56, 14, 26,141, 6,103,207,158, 45, 60, 22,137, 68,
+152,242,253, 50, 68,220, 14,193,189,123,247, 16, 19, 19,243,183,236, 54, 82, 1, 45,242,111,180,134,110, 40,171,192,254,173, 48,
+ 26,185,233, 27,182,236,186, 54,125,244, 0,140, 27,216,222, 99,222,234, 3,237,195,147,233, 22, 0,240,119, 32, 67, 62,105, 83,
+195,211, 90, 41,198,119, 59,110, 3,148, 78,127,219,231,133,166,210,136, 0,103, 50,241,224,141,168,144,111, 7,212, 71, 53, 23,
+ 75,159,234,213,137, 52, 50,210,132, 61, 5,121, 14, 54,230, 50,191,160,122,246, 39,193,243,176,182,144,213,132,145,131,181,185,
+204,175, 75,160,213, 9, 0,176, 86, 74,106,150,100,249, 42, 13,141, 60, 37, 35,149, 50,209, 72,179, 6, 46,158, 67,187,119, 80,
+116,237,222, 91, 97, 46,230,144,122,227, 52,178,196,238, 48,216,122, 65,107, 72, 67,204,139, 72,227,185,235,143, 98, 83,178,181,
+147,202, 13, 38,197,197,216, 23, 79, 28,170,214,233, 96,147,114,108, 70, 82,213, 97, 59,188, 25,240, 76,246,246, 94,137,102,142,
+141, 21, 55,159,191,200,225,233,159, 45, 58,197,145,149,153,249,202, 96,132,139,218, 40,178,136, 60,255, 59,166,117,169,141,244,
+180, 36,104,244, 28, 50,213,156,222,217, 90, 46,211,190, 8,133, 86,207, 65,103,224, 33,182,118,195,233,107, 15, 83,120,131,225,
+ 68,105,156,145, 41,244, 30, 0,243,162,231,170, 59,144,186, 83, 45, 21,247, 96, 80, 35, 42, 38, 14, 91,130,175,213,207,191,174,
+242,133,156,231,242,134,159,139, 88,178, 8, 69,139,202, 76,130,175,229, 68, 26, 43,228,146, 95, 22, 77,252,216,255, 67, 95, 91,
+ 25, 31,115, 13,132,215,195,204, 40,130, 90,106,132,149, 71, 53,240,186,108,170,210,104, 50,194, 0,193,211,187, 0, 1, 69, 80,
+179,102, 77,103, 43, 43,171,176,201,147, 39,219,246,234,213, 11, 7, 15, 30, 68, 86, 86, 22, 54,111,222,140,229,203,151, 99,238,
+220,185, 48, 24, 12,216,176, 97,131,114,255,254,253,141,215,172, 89, 19,227,229,229, 21, 16, 21, 21,149, 80, 94,159, 18,128, 12,
+128, 56,191,237, 34, 0,248,227,199,143,163,107,215,174, 56,126,252, 56,159,127,206, 72, 8, 49, 80, 74, 43,181,159,168, 84, 42,
+133, 84, 42, 69,102,102,230, 59, 17, 91, 98,177, 24,230,230,230,144, 74,165,200,206,206,174,176,216,226, 56,142,141,137,137, 65,
+102,102, 38, 58,116,239,142,101,243,231,163, 77,155, 54,232,208,161, 3, 40,165, 56,123,246, 44,218, 55, 11,196,128,143, 90,227,
+209,163, 71,224, 56,206,164,240, 38, 36, 36, 32, 49, 49, 17,157,187,119,199,198, 53,107,208,164, 73, 19,248,249,249,129,227, 56,
+132,132,132,160,111,167,102,144,247,108,143,136,136, 8,161, 80,155,104,205,122, 87,115,180,222, 26,161, 73,244,186,191, 3, 57,
+ 54,176, 83,227,110,221,155,251, 99,227,238,115, 63,250,251,147, 93, 0, 96,103, 33,251,225,211, 54,213, 16, 30,157,142,115,247,
+226,142,133, 39,191,155,213, 26,188, 17,246,118,150, 74,128,149, 66,173,231, 57,203,231, 40,119, 2, 51, 79, 41,148, 45,167,226,
+147,238,225, 30, 77,252, 61, 60, 10, 86, 29,154,119,253, 25, 67, 30, 62,243,108,228,231,236, 9,163, 1, 48, 26, 96, 57, 96, 7,
+240,189, 89,185,225,104, 94, 85,118,102,234,164,137, 77,187,244,236,175,144, 42,173, 96,204,122, 13, 67,194, 67,164, 62,189,136,
+ 92,165, 15, 18,162,158, 99,207,169, 27,153, 79, 99, 82,179, 24, 6,167, 19, 51,181,223, 68,166,209,156,242,120, 53, 6,204,159,
+ 61, 99, 82,208,158, 93,187, 45,100,213,154,147,200, 85, 93, 51,165, 34, 78,230,224,221,128, 81,201,237,233, 79,155,119, 91,230,
+234,176,160, 60, 30, 85,110,214,129,179,167, 79, 14,168, 81,181,185,197,203, 91,193, 80,107,180,208, 26,128,128,198,173, 97, 52,
+ 82, 41, 97, 8,111,201,178, 36, 41, 53, 29,196, 96, 76,188,116,255,101,252,229,251,207, 89,173, 69,249,220,111,168,123,194,126,
+213,189,117, 61,192,160,198, 71, 45,107, 99,217,246,115, 95, 2, 24,246,118,153,156,103,209,162, 64,243, 0, 71,178, 14, 64,243,
+219,135,150,215,108,216,115, 2, 42, 98,209, 10,116, 32, 93, 2,171,187,254,190,236,135,169,182,118,238, 62, 44,225, 13,160,206,
+117,128,172, 24, 74, 98,174,193,202,173, 9,140,174,205,176, 97,229,146, 28,158,167,187, 42,227,218, 66,128,128,247, 25, 26,141,
+230,192,194,133, 11,109,187,117,235, 86, 96,145,193,181,107,215,176,105,211, 38,152,153,189, 89, 79,118,237,218, 21,148, 82,219,
+ 57,115,230, 28, 0,240, 97,105,156,205,154, 53,235,190,114,229,202,184,122,245,234, 61,207, 23, 91, 18, 0, 76,104,104, 40,243,
+250,245,107, 98, 99, 99, 67, 93, 93, 93, 13,113,113,113, 60, 0,227,103,159,125,198,154,155,155,215,200,201,201,185, 80, 89,161,
+ 37,149, 74,223,201,156, 45,177, 88, 12, 66, 8,164, 82, 41, 36, 18, 9, 40,165, 21, 18, 91, 70,163, 81,116,252,248,113,220,190,
+125, 27,115,235,213,195, 68, 55, 55,216,218,218, 34, 36, 36, 4,148, 82,152,153,153, 33, 45, 45, 13,187,118,237, 66,219,182,109,
+193,113,156,196, 20,222,125,251,246,225,206,157, 59,248,190, 97, 67, 76,180,178,130,185,185, 57,206,158,205, 27, 13,148,201,100,
+136,138,138,194,217,179,103,209,186,117,107,161, 80,191, 37, 76, 46, 60,173, 9, 17, 17, 39, 56,235,117,106, 80,142, 2, 4,174,
+254,254, 68, 18, 30, 78,245, 21,125, 40,195, 96,198,202, 45,199,130,126,158,208,157,140,236, 81,223,117,222,239,231,199, 0,192,
+240, 62,190,110, 74,153, 8, 43, 14,135, 83,134,193,140,119, 17, 65,127,127, 34, 97, 24,140,233,208,196, 15,113, 25, 58, 68,198,
+101,252, 17, 78,169, 73, 67, 61,231,126,254, 4, 91,143,132,188, 94,190, 85,243,152, 82, 10,107,115,153,223,144, 7,145,158,191,
+ 31,191, 19,189,116,143,230, 49,229, 41,172,149,226,154,195, 30, 53, 43,119,213, 97, 35, 79,201,200,233, 83,191,105,214, 99,216,
+100, 57,247,120, 47,116,145,167,192,235,213,200,210, 75,144,193, 58, 35, 38, 58, 26, 63,109, 56,246, 58, 43, 87, 55, 32, 52,169,
+ 98, 2, 51, 34,133,230,248, 59,144, 94, 63,125,247,237,153,249, 63,204, 49, 87, 63, 15,201, 97, 9,167,102,171,180, 18,253, 48,
+247,103,146,173,213,245,143, 76,163,217,229,241,104, 45,176, 96,225,210,149, 65, 35, 6,247,126,236,235,211,202,206, 24,247,194,
+ 78,147,149,149,180,227,228, 29,231,252,158, 34, 1,128,200,152, 84, 36,103,230,114, 70,206,112,193, 66,140,121, 97,166, 88, 7,
+243, 81,205,137, 56,244,106, 81,231, 99, 7, 11, 9,212, 57, 25,112,180, 16,163, 83,147,234, 31, 87,115, 34, 83,159, 39,210,228,
+202, 11, 45, 3,168, 65,141,235, 11,218,214,164, 70, 67, 77, 24, 13,208, 63,216, 86,113,203, 24,193,196,113, 45,205, 45,109,116,
+ 47, 25,228,154, 1, 10,123, 16, 75, 47,192,202,155,136,107,245, 71,220,243, 48,238,203,143, 7,167,190,120, 21,243,171,189, 2,
+139,133, 42, 68,128,128, 55, 17, 21, 21,245,233,244,233,211, 47, 55,105,210,196,201,222,222, 30,181,107,215,198,145, 35, 71, 48,
+121,242,228,194,107,234,213,171, 7, 74, 41,210,210,210,176,112,225,194,132,184,184,184, 79,203,226, 12, 11, 11,123,188,117,235,
+214,150,254,254,254,122,137, 68,146, 1, 64,150,145,145, 33, 79, 75, 75, 35, 26,141, 6, 60,207,243, 86, 86, 86,198,184,184, 56,
+195,128, 1, 3,180, 87,175, 94,173,158,155,155, 27,245, 54, 22, 45, 15, 15,143,208,212,212,212, 76, 66,200, 91,187,126, 40, 16,
+ 89,246,246,246, 14, 57, 57, 57, 60,128,244,202,184,126,224, 56, 14, 13, 27, 54,196,169,139,119,113,252,220, 85,100,197, 61,193,
+152, 17,159,162,118,237,218, 56,117,234, 84,165,243,172,110,221,186, 56,121,246, 50, 46,223,190,143,168,136, 7,248,114,204, 8,
+ 4, 4, 4,224,228,201,147, 66,129, 54, 29,193,197,230,102, 5, 23, 23, 90,173,131,131,131, 11,122,230,127,146,175,181, 28, 72,
+ 93,215, 26,210,109,115,186, 84,175, 37,238, 48, 7, 68,172,192, 94,159,147,205,102,252,180,234,113,109, 39, 50,248, 97, 98,249,
+171,195,222,176,106, 37,210,176, 0, 71,178,243,254,163,154, 31,127,212,196, 3, 27,143, 40,103, 1, 64,255, 22, 85,113,243,105,
+ 50,110, 68, 36,237, 12, 75,162, 97,111, 27,235,218, 78, 68, 9,138,157, 11,191,234,209,218,203,221, 25,155, 14, 94, 6, 33, 56,
+ 96, 82,131, 75, 41,109,226,239,133,229, 91,139,175, 48,116,246, 92,186, 71,243,248, 84,104, 86, 23, 0,232, 88,203,236, 68,163,
+234, 54,158,229, 89, 54, 20, 82,209,168, 46,189, 63,145,115, 17, 71,128, 87,103, 65, 56, 45,212,122, 30,241, 41,217, 80, 89,121,
+ 32,228,218,125,117,166, 70, 55, 33, 44,169,114, 86,188,240,100,250,188,158, 11,137,206,201, 85,187, 40, 29,170,107, 88,134,231,
+115,180, 20, 55,195, 95,101,133,197,211, 39,166,112, 68, 70, 82,221,135,238,164,197,186, 45,123,102,139, 37,210,254, 44, 1,113,
+180, 54,115, 88,247,243,247,176,176, 48, 7,175,203, 1,114,147,209,235,139,159,146, 31,198,234,171, 2,128,175, 61, 49,111, 89,
+ 77,178, 69,196,144,152, 63,158,233,102,150,107, 94, 53, 96,244,224, 78,245,196,188, 46, 23, 95, 45,220,141,245, 83,123,224,147,
+118,181,196,193, 87, 34, 70, 3,152, 87,217,188,166, 70, 14,212,160,198,135,223, 94,124, 76,128,203, 20,104,126,123,207, 15, 53,
+129,187, 38,115, 52, 32, 68, 44,114, 33,181,234,120,154, 73,248,152, 43,224, 99,174, 80,214,163, 25,136,103, 75, 66,156, 27,210,
+ 95, 22,205,205,221,184,113,211,105,158,193,119,229,185,202, 16, 32,224,255, 43, 40,165,207,173,173,173, 59,119,237,218,245,220,
+169, 83,167,108, 3, 3, 3, 1, 0,183,111,223, 6, 0, 52,108,216, 16,190,190,190, 72, 76, 76,196,192,129, 3, 83,226,227,227,
+ 59, 83, 74,203,156,243,155,157,157,253, 98,223,190,125, 78,185,185,185,245,102,206,156,153,228,229,229,149,165,209,104, 72, 70,
+ 70, 6,207,113, 28,108,108,108,164,245,234,213, 67,211,166, 77,115,174, 93,187, 86,229,245,235,215,217, 0, 94, 85, 38,252, 61,
+122,244,192,197,139,121,139,246,222,133, 95, 45,137, 68,130,192,192, 64,183,231,207,159,199,230,167,207,245, 74,164,105,225,239,
+251,247,239,227,194,221, 24,136,116,106, 72,147,227,112,253,224, 62,116, 31, 53, 22, 28, 87,249, 89, 12,247,239,223,199,161,179,
+215, 97, 38, 19,225,201,147, 48,236,219,183, 15, 99,198,140,121, 43,206, 74,162, 76, 45,242, 47, 47,247,241, 0, 54,148,106,209,
+ 10, 10, 10,186,128, 18,188,218, 86,175, 78,164,178, 28,204,233,212,208,109, 74,255,230,213, 89, 67, 86, 28,120, 35, 15, 86, 12,
+ 56,218, 91, 98,219,182,157, 85,119,238,222,125,173,174,155,120, 37,207,113, 51, 30, 38, 82, 85, 5,194, 53,231,231,221,151,251,
+111,155,212, 90, 52,166, 75, 77, 91, 0,144,136, 24,172, 56, 18,198, 1,152,243, 54, 17,254,208,157,200,115, 12, 24,233,108,103,
+ 53,107,250,231, 65,182,173, 27,250,226,194,141, 80,172,220,119,237,162, 52, 9, 91, 77, 78, 56,222,128,226,250,169,164, 85,135,
+224,203,159,119,105, 52, 82,103,137,153, 13,244,175,206, 3,122, 13, 52, 90, 61, 94,167, 26,241, 58, 77, 3,145, 82,130,219, 17,
+ 49,106,187, 4, 28,171,108,156, 9, 33,164,121, 53,185,235,236, 31,151,186,107,212, 57, 92, 86,122, 10, 39,145, 94, 23, 43, 21,
+178,248,138,240, 92,139,161,154, 86, 85, 37, 13, 0,158,149,202,169,234,219,175,135,154,197,134,159, 66, 13, 38, 14,132, 82, 40,
+106, 5,193, 66,193, 74, 90,120, 75,162, 1,192,219,217, 74,186,240,187,201, 86, 19,166,126, 87,238, 28, 48,127, 66, 36,181, 27,
+ 57, 79, 8,244,178,193,197, 59,143,113,241, 97, 84,216,197,219, 79, 2,218,212,118,133,175,187,245,120,127, 66, 22,132,211,138,
+ 91, 72,243, 50,134, 3, 12,154,194, 85,135,254, 78,100, 80,163,254, 51, 75, 92,109, 88, 26,188, 1, 62,194, 72, 65, 88, 22, 32,
+ 76,222, 10,200,215, 87, 32,178,174, 70,119,238, 57,164,218,180,105,235,247,225,201, 84,176, 98, 9, 16, 80, 14, 50, 50, 50, 30,
+ 40,149,202, 78,117,234,212,217,252,213, 87, 95, 89, 12, 30, 60,216,117,196,136, 17, 12, 0, 36, 38, 38,242,203,151, 47,143,251,
+229,151, 95, 50, 83, 82, 82,134,233,245,250,135,166,116,124, 9, 33, 87,127,253,245,215,228, 75,151, 46, 5, 52,110,220, 88,214,
+160, 65, 3,222,198,198, 70, 36,147,201,140, 58,157, 78, 19, 17, 17, 97,124,254,252,185, 75, 70, 70,198, 51, 0,145,149, 25,214,
+207,183, 94,205, 99, 89,118, 54,165, 52,240, 93,204,209, 82, 42,149,174, 0,158, 17, 66,106, 84,116,216,240, 79, 13,182, 72,132,
+244,244,116,168, 18,194, 32,143,121,138, 58,102, 12,252,109,204, 97,105,105,249, 86,162, 40, 51, 51, 19,200,141,197,229,203,247,
+ 1,142,131,149,149, 21,172,172,172,254,118,161, 85,154, 22,249, 47,160,248, 74,195,252,114, 91,246, 28,173, 0, 71, 50,198, 70,
+138,229,163,130,170, 75,188, 61,221,161,141,185,141,251,175,115, 48,227,131,198,225,172,204, 66, 51,234,211, 30, 13,123,247,173,
+130,214, 77, 27, 17,111, 23,171,241, 11,126, 94,251, 69,128, 19,153, 28,150, 72, 87,152, 18,168,176, 36,250,162,150, 35,217,116,
+254, 65,204,104,119,165, 26, 60, 79,113,254, 97, 60, 30,190, 74,223,244, 40,137,190,168, 72, 4, 3, 92, 73,123, 17,152,221,148,
+ 82,185,149,153, 89,118,189,186, 53,237,219,127, 88,151,233,220,170, 33, 36, 44,112,249,230,125, 76,252,249,192,117,158,167, 65,
+119, 76, 28, 54,204, 91, 97,248,166,128,202, 91, 97,104,120, 99,133, 33,165,148,230,173, 58, 44,123,218, 23,203,146, 4, 85,212,
+ 45,103,177,157, 15,212,145,231,241, 42,157, 71, 84, 82, 54,178, 68,206,208,198,198, 2,148,143, 14,161,180,210,165,218,222,222,
+222,177,170,191,111,245, 85, 91,246, 65,175,202,196,139,144,205,200, 73,143,199, 15,235,142, 84,119,119,119,111, 21, 19, 19,115,
+161, 2, 5,198,247,220,177,157,142,160, 0, 43,150, 33,120,205, 30,164,216, 41, 96,175,148,128, 87, 39, 99,212,132,193, 86, 93,
+ 58, 12,182, 2,128,168, 39,247,224,165, 84,155,196,171,183, 67,239,254,109,252,172, 97, 80, 99,203,201,123, 26, 6,232,188,245,
+116, 88,100,155,154,214,242,254,205,189,108,230,197,101,244, 65, 37,157,138, 22, 88,180, 10, 45,124,149, 88,109,184,151, 82, 99,
+ 45, 7, 18,185,251,106,146, 89,223, 14, 13,148, 18, 17, 33, 52, 39, 22, 84, 97,143,181, 91,246,230, 72, 13,216, 32, 52,161, 2,
+ 4,152, 6,149, 74,117,135, 16, 82,251,155,111,190, 25,244,237,183,223,182, 52, 51, 51,171, 10, 0,185,185,185, 47, 12, 6,195,
+ 69, 0, 59, 43,178, 58, 48, 95, 56, 61, 35,132,188,136,140,140,116,218,190,125,187, 53, 0,121,254,223, 26, 0, 25, 0, 18,223,
+102,197, 97,129,168, 34,132,204,126,135,150,142,227,249,156, 53, 42,115, 63,195, 48, 70, 66, 8, 8, 33,144,201,100,184,116,233,
+ 18,250, 5,117,192,163,224, 12, 4, 90,155,163,241,176, 81,216,125,230, 12, 88,150, 5, 33, 4, 44,203, 86,168, 29, 17,137, 68,
+184,124,249, 50, 62, 25,216, 23, 50, 17, 96,101,101,133,111,190,249, 6,135, 15, 31,134, 72, 36,236,210, 87,129,124,222, 80, 32,
+184, 76,247,163, 69, 48,239,204,230,159, 36, 48, 26,112,116,243, 18, 28, 11,205,209, 61, 73,198, 12,191,100, 44,223,135,108, 62,
+249,231,173,163,207, 92, 14, 93,252,217,128,110,202,182,109, 58,160,109,235, 54,162,128, 70,173,102, 1, 88, 81,164,193,110, 95,
+150,175, 13, 35,143,239, 55,156,124, 60,106,119, 72, 4,129, 62, 27, 3, 58, 54,162, 70, 30,223,151, 35, 2,254,196,105,165, 48,
+223,125,249,218, 53, 27,232,115,240,234,222, 31,242, 42, 85,171, 3, 70, 61,158, 61,123,138, 95,182, 28,228, 67,110, 62,217,166,
+227,240, 85,100, 26,205, 53,149, 51, 79, 89,113,176, 50,147,250,117, 9,180, 58,193,131,194, 90, 41,169, 73,121, 35,172,149,226,
+154, 29,107,153,157,160,148, 82, 11,133,184, 38, 53, 26,202,229, 84,235,184,245, 91,126,219,180,116,248,240,225,102, 41, 49, 9,
+136,203, 10, 69,142,212, 13, 6,165, 7, 34,239, 93, 84,171,180, 92,185,141,120, 89,233,153,146,146,146,116,231, 70, 26,118,175,
+155, 15,131, 78,139,164,152, 60,173, 26,151,146, 5, 75,123,183,107, 21,225,212,115,124,102,239,193, 35, 37, 10, 11, 40, 62,233,
+221, 77, 26,153,170, 69,125, 87,139,188,194,148,147,140, 71,103, 47,163,117,110,158,110,123,254,154,129, 87, 93, 87,147,194,105,
+ 33,151,124,213,165,129, 27, 94, 68,199,227, 82, 88,236,150,231,169, 52,174,154, 29,217, 18, 25,151, 49,186,199, 7,158, 88,118,
+ 56,252,203,210,196, 81,105,156,254, 78,100, 16,128,230,121,147,225,213,160, 64,115,127, 39, 50,200,148,149,134, 37,113,138, 36,
+248,120,233,137,168,153,123,111,165,244,152,242,113, 11,203,166, 77,187, 74,193,233,144,173,214, 26,194,211,105,214,219,228,209,
+ 91,244,148, 4, 78,129,243, 63,201,153, 47,122,182,229,127,222, 37,103, 28,138,249,117,122,219,184, 23, 29, 38,164,148,138,242,
+173, 89,101, 78,134, 47,143,179,232, 48, 33,165,244,120,190, 53,171, 76,171, 86,113, 78,158,231,227, 26, 54,108,104,219,189,123,
+119, 24,141, 70, 60,125,250, 20, 81,175, 95,163,253,232, 47, 97,109,109,141,139, 15, 30,224,201,147, 39,152, 61,123, 54, 12, 6,
+ 3, 14, 29, 58, 20, 83, 30,167, 72, 36,210, 87,175, 94, 93,210,179,103, 79,112, 28,135,231,207,159, 35, 54, 54, 22, 19, 39, 78,
+132,149,149, 21,238,220,185, 83,200,153,146,146, 2,145, 72,164,255, 59,202,210,127, 29, 37,137,172,178,133, 22, 96,132,209,128,
+204, 51,115,176,226, 18,244,122, 3,106,134, 37,209,151, 69,254, 95, 91,199,142, 28,125, 16,250,248,197,157, 43,109,165, 72,122,
+152,119, 79, 5, 16,145, 66,227, 27,121,136,178,161,207,182,196,243, 19,120,153,152,157, 19,145, 66,227, 43, 26, 57,202, 27, 9,
+244, 42, 32,254, 54,174, 94,188,128,144,235,247,113,235,225, 99,227,213, 59, 17,187, 25, 30,223,135,167,208,167,149, 80,167, 48,
+ 15, 90,134,161, 15,159,121, 54,242,117,242,132,145, 3,229, 13,176, 26,176, 19,195,194,155,122, 54,170,102,237,153,103,201, 50,
+192,230,243, 63,128,165,242, 50,249,110, 69,235, 55, 52,175, 42,235,147,157,145,250, 65,187, 86, 31,154, 89,213,234,130,148,103,
+ 17,120,122,255,178,250, 78,104,228,213, 91,209,250,183,178,150,184,185,185,181,108,215,202, 15, 3, 70, 77,135, 94,149,137,231,
+ 33,191, 33, 39, 45, 1,151,174,153,227,113, 86,214,135, 0, 76,182,104, 93,141, 50, 4, 0, 64,115,111, 73,180, 5,180,206,159,
+118,235, 14, 25,209,128,215,102,129,168, 82, 16, 25,171,203,236,179,238,181, 17, 0,148, 50, 34, 50,163,153,150,166,240,250,123,
+217,249, 40, 89, 3,182,158, 9, 3,207,231,109,223,196,243, 88,187,245,143,200,209,223,127, 82, 31,254,158, 54,117, 9, 33,164,
+ 34, 38,127, 66,209,226,214,238,239,106,106,206,205, 2,120, 61, 46,143,183,173,217, 98, 69, 90,139,202, 90,198, 30,198,210, 88,
+ 0,163,107,185,146,245,227, 87,156,156,213,240, 76,120,243, 73,159,247,176, 4, 21, 54, 96, 23, 32, 64,192,223,143,156,156,156,
+ 81,195,134, 13, 91, 47, 22,139, 29, 0, 16,158,231,193,243,188,104,241,226,197, 98,163,209,200, 48, 12, 99,100, 89,150, 59,126,
+252,184,193,104, 52, 38,107, 52,154, 81,229,113,114, 28, 23, 57,118,236,216,234,229,173, 80,220,181,107, 23, 68, 34,145,158,227,
+184, 72, 33, 39,202, 23, 89, 69,191,139, 90,185, 74,111, 60, 40,190,107,246,201,156, 57, 0, 8, 40,230, 22, 19, 89, 0,128, 7,
+169, 52, 46,192,145, 76, 12,104,212,106, 78,193, 61, 21, 13,156,198,104,236,219,168,182,239, 46, 0,208, 82,227, 39,149,137, 96,
+150, 86,221,191, 94,163, 15,119,243,148,138, 56, 74, 55, 49, 60,246,107, 56, 60, 50,101,165, 93,105,136, 75,202,184, 83,176, 81,
+ 52, 15,250,191,225,194,124, 55, 14,148, 82, 90, 56, 92,184, 68,142,148, 76,109,185,126,160, 46,191,208,118,104,228, 41, 25,121,
+250,202,189, 81, 70, 35,117,102, 89,146,160,214,113,235,223, 86,100, 1, 64, 76, 76,204, 5,127, 71,114,250, 65, 93,167,142,246,
+202,124, 43,151, 10, 72, 81,225,116, 76, 82,246,133,202,112,166,231, 26,122,124,187,252,240, 17,169,152, 21,129,210, 60,135,162,
+148, 66,163, 55,166, 21,136,177, 58,118,196,245,155, 67,220, 46,150, 37, 81,229,241,221,120, 18,191,108,192,130,179,147,195, 94,
+165,111,122,153, 78, 67, 1,224,101, 58, 13,173, 97, 71,102, 69, 38,100, 79, 14,141, 74, 95, 82,209,121, 21,148,224, 82,163, 1,
+115,254,116,238,109,211,243, 81, 28,189, 15,160, 87,128, 35,233, 48, 96,210, 47,147, 8,129,176,253,132, 0, 1,255,143, 80, 96,
+213, 98, 24,102,222, 59,228, 60, 78, 8,233, 10,224, 89, 5,238,185, 1,160,246, 59,142, 91, 42,128, 84, 33,151,223,105,154, 86,
+220, 97,105, 88, 18, 93, 11, 19, 54,141, 54,245,186, 82,239,143,163,103, 1,216,189, 77, 4,243, 57,108,223,101,162, 61, 72,164,
+179,254,138,204,200, 23, 85,127,201, 92,159,240, 36,218, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171, 73,133,143,146,233,
+125, 20,219,202,161, 36,177, 13,160,133, 41,124, 17, 41,244,123,224,207, 67,195,207, 82,233, 15, 0,126,168, 84,156, 43,233,249,
+221,228,178,149, 68,207, 0,229,123,231, 23, 32, 64,192,251, 41,182,254, 2,206,227, 66,202,190,127, 40,203, 97, 41, 35, 36,207,
+251,135,167, 79,159,146,183, 21, 89, 2, 4, 8, 16,240, 30,195,248,150,159, 18, 53,212, 91,126, 4,188, 39,130,171,248, 57, 65,
+104, 9, 16, 32, 64,128, 0, 1, 2, 4,188, 35,145, 85, 92,108, 17, 0,237, 75,148,230, 21, 88, 77, 64, 8,105, 95,209, 0,149,
+199, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,251,199, 89, 30,247,123,183,154,145, 22,153,228,252,174, 63, 0,218, 11,
+156, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,207, 31, 0, 35, 75, 59, 22,134, 14, 5, 8, 16, 32, 64,128, 0, 1, 2,
+254, 34, 8,190,129, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 14,229,110, 42, 45, 64,128, 0, 1, 2, 4, 8, 16, 32,160, 18, 40,
+119, 83,105, 1, 2, 4, 8, 16, 32, 64,128, 0, 1,149, 67,165, 54,149, 22, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 62,202,242,
+ 12, 79, 42,184,227,137, 0, 1, 2, 4, 8, 16, 32, 64,128,128, 50,240, 39,207,240,193,193,193,180,232,183, 0, 1, 2, 4, 8,
+ 16, 32, 64,192,223,137,247, 85,139, 8, 67,135, 2, 4, 8, 16, 32, 64,128, 0, 1,111,129,146,230,104, 9, 66, 75,128, 0, 1,
+ 2, 4, 8, 16, 32,224, 29,160,172, 57, 90, 5, 14, 75, 91,231,155,234, 90, 11,201, 37, 64,128, 0, 1, 2, 4, 8,248, 7,240,
+ 94,106,145,194,201,240,193,193,193, 52, 40, 40,136, 8,249, 44, 64,128, 0, 1, 2, 4, 8,248, 39,240, 62,106, 17, 97,213,161,
+ 0, 1, 2, 4, 8, 16, 32, 64,192,219,136,169, 34,171, 12,139, 31, 11,123, 29, 10, 16, 32, 64,128, 0, 1, 2, 4,188, 35,193,
+ 85,252, 28,243, 23, 63,176,189,192, 41,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,255, 23,145, 85, 92,108, 9,171, 14, 5,
+ 8, 16, 32, 64,128, 0, 1, 2,222, 2,166,172, 58, 20, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 9, 16, 66, 70, 18, 66,186,229,
+255,238, 86,212,170, 37, 88,180, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 2,148,210, 13,132, 16,151,124,129, 21, 76, 41,141, 23,
+132,150, 0, 1, 2, 4, 8, 16, 32, 64,192, 59, 64,177,121, 89, 65,132,144,194,225, 68, 65,104, 9, 16, 32, 64,128, 0, 1, 2,
+ 4,188, 5,202,154,163, 69, 0,180, 47,229,166,179, 21, 80,114,237, 43, 17,168,179, 2,167,192, 41,112, 10,156, 2,167,192, 41,
+112,254,255,226, 44,143,187, 34,250,227,223,130,146,220, 58, 20,138, 47, 74,233, 95,246, 1,208, 94,224, 20, 56, 5, 78,129, 83,
+224, 20, 56, 5, 78,129,243,255,235,231,157,175, 58,108, 64,136, 66, 48, 34,190,127, 32,132, 56, 17, 66,156,132,148, 16, 32, 64,
+128, 0, 1, 2, 76,183,112,189,211, 57, 90,254,132,124,254,121,160,195,186,218,132, 88, 62,164, 84, 85,214,181,142,142,142,235,
+149, 74,229, 96,149, 74,149, 75, 8,225,139,152,218, 0,160,232,190, 64,207,147,146,146, 90,148,247,108,153, 76,182,220,201,201,
+233,243,156,156, 28, 21, 33,132, 18, 66, 64, 8, 41,136,240, 27,223, 70,163, 49, 38, 37, 37,165,225,127, 58, 19, 1,214,222,201,
+233,166,152,101,221, 42,122,175,145,231, 95, 38, 38, 36,124, 88,129, 2, 51,159, 16, 76,201,255,189,136, 82, 58,253, 61,124, 43,
+ 88, 83, 46, 11, 4, 44, 34,128, 1, 70,134,249, 82, 12,172,214,242,252,186,252,130,107,172,236,163,117, 55, 73,117, 66, 81,151,
+ 16, 88, 81,138, 76, 74,112, 95,218,152, 70,254, 67,149, 67,111,177, 88,220,195,210,210,210, 60, 53, 53,245, 2,128, 93, 0, 6,
+218,217,217,181,202,202,202,202, 49, 24, 12,135, 41,165, 7, 42,195,221,178, 30,153, 42,149,136, 63,211,232, 13, 11, 47,223,163,
+191,181,110, 64,236, 56, 30, 11,228, 18, 81, 11,173,142, 91,116,233, 62,221, 84,193,176,146,188, 87,161,160,234,168,248,126, 98,
+251, 76,204,119, 0, 56,100, 99,227, 43,115,176, 60, 39,150,178, 47, 51, 18,115, 6,247, 77, 74,122,221,247, 45,242,253,223, 8,
+ 7, 7,135,161, 12,195,252, 72, 41,133,209,104,156,145,154,154,186,249, 29,149,171, 25, 0,172,243, 15, 51, 40,165, 63,190, 37,
+ 95, 20, 0,207,252,195,104, 74,169,151,208,180, 87, 58, 45,215, 30, 60,120,112,116,155, 54,109,176,108,217, 50,172, 93,187,246,
+ 85,114,114,242, 2, 0, 91, 40,165,186,191,155,231,125,196, 59, 19, 90, 1,132,116, 29,218,169,201,250,113,253,187,146, 9, 67,
+103,170,202,121,153,127,237,220,185,243, 39, 91,182,108, 17, 71, 68, 68, 40,188,189,189,193, 48, 76,161, 16, 42, 90, 95, 86,169,
+ 82,133, 47,239,217, 44,203,174,232,213,171,215,176,125,251,246, 41,239,220,185,163,172, 85,171, 86, 33, 31,207,243, 40, 94,255,
+122,123,123,151,201,103,101,101,117,155,101, 89,247,146, 68, 90,105,191,141, 70, 99, 76,106,106,106, 67, 19, 10, 99, 39, 0,211,
+ 76, 72,210, 5,148,210, 83,101, 93, 32,102, 89,183,184,184, 56,199,138,230,149,135,135,135,190, 2, 47,143, 19, 33,152,194,243,
+148, 1, 0,134, 33, 83,229,114,249, 58,141, 70, 19, 93,240,127,126,158, 37, 86, 36, 12,110,110,110,125, 40,165,163, 0, 80, 66,
+200,134,216,216,216,253, 21,185,223,210,210,242,182, 84, 42,117, 23,137, 68,164,164,124, 41,126,108, 52, 26,169, 94,175,143, 73,
+ 75, 75,171,176,192,190, 0,144,206, 64, 75,142,101, 39,216,217,219,183,184,115,250,180, 89, 96, 96, 32,195,178,236,116, 0,235,
+222,230,189,209,221, 36,213,141, 6,244, 83, 27,100,221,100, 94,115,125,181, 81,115, 35, 20, 98,237, 49,221, 77,178,247,239, 22,
+ 91,132,144, 33, 67,134, 12,153,176,112,225, 66,123,169, 84,202,236,217,179,199,119,226,196,137,189,151, 45, 91,102,223,191,127,
+127, 11,157, 78,199, 79,157, 58,213,159, 16,226, 72, 41, 93, 83, 17,238,166,245,200, 7,126,222, 46,179,199, 13,110,139,201,243,
+119,141,107, 94,155,164, 40,204, 36,107,251,180,168,110, 29, 80,213, 6,223,173,191,250, 21,128, 77, 21, 8, 43, 17,137, 68, 31,
+186,186,186,250,104, 52, 26, 46,191,243, 70,139,212, 9,121,233,171,211,233,210,210,210,246,190,109,218, 76,150,203,155, 52,177,
+ 54, 63, 51,103,208, 16, 69, 86,122,154,211,138,224, 35, 15,246,193,177, 78, 95,224,213,251,212, 32, 48, 12,243, 99,108,108,172,
+ 11,165, 20, 46, 46, 46, 63, 2,216,252,142,168,173, 11,234, 97, 66,136,245, 59,224,243, 44,194,231,249, 14,202,190, 92,196, 48,
+ 99,165, 98,113, 71,163,209, 88, 59,191, 12, 61,212, 25, 12,103, 56,158, 95, 77, 41,213,188,199, 58, 96,202,232,209,163, 59,124,
+251,237,183,222, 83,166, 76,193,148, 41, 83,170,108,220,184,113,253, 79, 63,253, 52,149, 16, 82,135, 82,154,243, 55,243,252,231,
+ 45, 88,127,137,208,242, 39,164, 97,187,186, 53,246,143, 31, 58, 0,252,190,229, 4, 67,103,150, 41,178, 62,108,216,240,179, 45,
+ 91,182, 0, 0, 6,247,232,129,142,141, 27,195,194,220, 12, 82,105, 94,112, 8, 37,144,136, 37,232, 57,241,107, 83, 34,183,168,
+119,239,222, 31,239,219,183,207, 28, 0,214,174, 93,139,222,189,123,195,214,214, 22, 74,165, 18, 18,137, 4, 98,177,248,141,111,
+ 19,132,155,123,108,108,172,163, 92, 46, 47, 20,126, 60,207,191,241, 41, 50, 78, 13,142,227,224,227,227, 99,106,114, 77,203,204,
+204,108,153,155,155, 91,230,152,110,213,170, 85, 1,224,148, 41,132, 63,254,240, 61,120, 46, 23, 34, 17,192,113,128, 86,207,128,
+ 47,161,111,239,234,234,138,177, 99,199,226,109, 54, 18, 15, 10,234, 70, 8, 33,251, 92, 93, 93,247, 39, 37, 37,121, 19,130, 17,
+149,180,116,125,241,244,233, 83,115, 0,240,245,245, 29, 11,160, 66, 66, 75, 36, 18,185, 63,120,240,192, 81, 38,147,149,106,185,
+ 44, 34,130,161,215,235, 81,191,126,125,174, 34,207,112, 2, 60,211, 24,102, 68,189, 6, 13, 70,206,233,217, 83,126,243,230, 77,
+ 57,195, 48,224, 56, 14,139, 23, 47,230, 40,165,214,254,128,101, 56,144, 85, 70,249,252, 22,192,208,124, 43,237, 38, 74,233,226,
+ 55,254,167,168,171, 54,200,186, 61,207,233,217,184, 73,149,169, 8, 15,123,216,184,154,249, 33, 88,136,180,145, 0,254, 86,161,
+101,105,105,217, 99,217,178,101, 14,155, 54,109,202,122,242,228,137,126,221,186,117, 14,163, 70,141,178,208,235,245, 24, 61,122,
+116,178,159,159,159,100,217,178,101, 14, 7, 14, 28,104, 11,160, 66, 66, 75, 68,240,253,192, 30, 29,161, 49, 48, 48, 24, 56, 7,
+ 23, 7,139,109,227,135,180, 22, 83,170,195,214,195,119, 96,224,248,223, 42,104,201,250,176,111,223,190,213,118,238,220, 41,122,
+252,248,177,168,102,205,154,224,121, 30, 70,163, 17, 6,131, 1, 0,192,243, 60,106,212,168,241,214,233,242, 25,224,107,239,100,
+123,230,195,174, 93, 20, 46,114, 25,108,211,147, 49, 92, 34,178,216,172,212,110, 7,208,244,125,106, 44, 40,165, 16,137, 68,120,
+253,250, 53, 28, 29, 29, 21,182,182,182,241, 0,230,166,165,165,109,120,143, 27,200,198, 82,145,104,255,214,223, 86, 56, 55,105,
+218,148,117,114,113, 68,196,211,104,136,136,177,253,131, 91,119, 90,127, 54,102,210,120, 66, 72, 31, 74,233,205,247, 45,238, 46,
+205,190,232,229,210,252,203,181,132,242,248,110,213,145,236,249,139,150, 43, 71,143, 24,194, 78,156, 56, 17, 30, 30, 30,222,189,
+122,245, 90, 4, 96, 76,185, 60, 31,124,209,203,185,233,184,181,160, 20,115,126, 57,146,253,211,162,229,202, 49,149,224,249,143,
+191, 59, 27,254, 50,161,229, 79, 72,181, 0, 15,199,211,243,167,140, 17,211, 19,191, 51,170,212, 36,148, 38,101, 28, 29, 29,215,
+119,233,210,101,240,230,205,255,235, 36,125, 24, 24,136, 94,109,155,195,209,206, 10, 74, 51,105, 94,115,196, 19,220,127,242,210,
+ 36, 65,224,225,225, 49,122,255,254,253,230, 69,197,132, 68, 34, 41,252, 20, 21, 89, 5,159,226,150,143,146, 32,151,203,113,246,
+236, 89,136, 68, 34,176, 44, 11,145, 72, 84,248, 41,122,204,178, 44,156,156, 42, 52,117,105,129,149,149, 85,157,236,236,108,203,
+140,140, 12,120,122,122,102, 1,120, 80,228,255, 58,201,201,201,150, 21, 33,228,185, 92, 76, 28, 94, 11, 98,221,117,232,196,141,
+161, 22, 53,195,213, 91,143,112,236,212, 5,196,198, 37,160,249, 7,245,240,233,160,190, 56,115,230, 12,140, 70, 99, 69, 11, 79,
+ 34, 33,100, 81,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199,143, 63,238,213,171,103,224,211,167,207,242,
+123,194,100, 10, 33,100, 69, 5, 44, 91, 82, 0,184,120,241, 34, 0,200, 42, 83,246,100, 50, 25,174, 93,187,134,130, 97, 98,134,
+ 97,192, 48, 12, 88,150,197,209,103,246,200,213, 49, 80, 37,134,226,203,110,158,168, 90,181, 42, 24,166,252, 41,137,173, 1,249,
+ 85,160, 23, 17,139, 39,186,184,186,122,183,170, 86, 77,121,246,236, 89, 22, 0,188,188,188,104,124,124,124,198,225,195,135,179,
+ 69,192, 90, 47, 74,183,148, 37,178, 60, 61, 61,155, 49, 12,243, 99, 65,154, 19, 66, 22,121,123,123,207, 46,204, 55,158,199,160,
+ 14,182,226,241,227, 39, 72,154,180,206,235,156, 52,233,190, 19, 89,207,231,215, 34,105,223, 90,253,221, 21, 69, 86, 86,214,238,
+ 26, 53,106,176,169,169,169, 87, 1, 68, 25, 12,134,105,219,182,109,115, 28, 62,124,120,210,246,237,219, 23, 0,112, 93,184,112,
+ 97,235,220,220,220, 61, 21,225,109, 81,151,116,109, 88, 47,240, 3, 79, 15, 15, 92,184,122, 19, 18,169,216,122,236,208,110, 48,
+ 55, 23, 97,201,166, 96, 62, 42, 38,109,220,165,251,116, 75, 5, 68, 86,227,190,125,251,122,239,220,185, 83, 10, 0, 15, 30, 60,
+ 64, 66, 66, 2, 28, 28, 28,160, 80, 40, 32, 22,139,193,178, 44,196, 98,241, 59, 17, 89, 86, 30,118, 55, 14, 29, 58,172,176,181,
+181,198,170,175,199,227,211,164, 68, 88, 91,152,195,144,147,235,253,158, 9, 14,223, 62,125,250,200,141, 70, 35,114,115,115, 17,
+ 18, 18, 98,165, 80, 40,172,220,221,221,231, 0, 48, 89,104, 41, 20,138, 68,141, 70,227,152, 95,143, 38,169,213,106, 39, 0, 89,
+ 50,153,172,160,158,206,201,127,158, 73,195,137,165, 12, 19, 70, 23,177,100, 69,191, 69,156, 27, 53,110, 84,231,236,129,125, 59,
+204, 51,179, 19, 96,109,147, 4, 6,153,216,176, 97, 53, 20, 10, 75,204,153,243,173,232,101,251,182,110,157,186,246, 57, 75, 8,
+105,255,222,137, 45, 74, 54,180,239, 62,216, 86,161,180,200,111, 75, 12,216,188,113, 60, 24,134,193,236,217,179, 17, 16, 16, 48,
+146, 16, 50,147, 82,154, 86, 54, 13, 54,212,110,217,223, 86, 42,207,203, 98,222,104,192,186, 93,147,243,120,166,143,194,192,238,
+ 85, 71,222,223, 78, 78, 6, 84, 67,118, 94,187, 2,181,152, 65, 52, 26,211,164, 2,142,224,224,224, 86, 65, 65, 65, 23, 74, 59,
+254, 15,188, 63, 46, 0,130, 74, 18, 95,162,224,224, 96, 26, 20, 20, 68,138, 68,238,141,227,178, 80,143, 16,123, 39, 43,229,217,
+181,115,199,155,139,174, 7,179,234,232,103,136,211, 24, 11,223,156,226, 75, 52,149, 74,229,224,205,155, 55,191,161,195, 60,157,
+ 28, 33,145,136, 33,150, 16, 88,183,232,150,247,198, 93, 58, 6, 66,104,105, 13,255, 27,156,185,185,185,154,123,247,238,153,111,
+218,180, 9,142,142,142,240,246,246,134, 82,169,132, 92, 46,127, 67, 92, 21, 21, 92,197,133, 86,113,206,130,255, 69, 34, 17, 24,
+134,193,153, 51,103,192,113, 28,250,246,237,251, 39,145, 37, 18,137, 74, 20,110,165, 45, 79,165,148,158, 34,132, 60,160,148,182,
+204,111,128, 31, 80, 74, 91, 21,121,118, 39, 7, 7,135,105, 0, 22,152,202,201,178, 20,172,230, 42,120,247,229, 16,189, 30, 15,
+157,184, 46,206, 95,190,131,205,235,151, 1, 0,188,107, 54, 66,191, 94,221, 10,173,113,166,112, 22,133,155,155,219,174,228,228,
+148, 46,109,219,182, 69,122,122,186, 97,238,220,185,168, 83,167, 14,124,125,125, 77,202,163,210, 4,220,131, 7, 15, 60,212,106,
+181, 73,195,142, 37,113, 18, 66,176,109,219, 54,104, 52,127,182,234,219,180,250, 9,147,123,123, 97,216,151, 91,176,232,201, 30,
+172, 89,179,166,204,184, 43,129, 58, 26,171, 26, 43,164, 44, 87,103,193,183, 95,200, 62,253,244, 83,118,216,176, 97,136,142,142,
+198,240,225,195, 53,103,206,156,209, 37,196,199, 31,150,242,252, 42,253,155,194,184, 84, 78,153, 76,182,245,212,169, 83,216,179,
+ 39, 79,151, 68, 68, 68,192,199,199,199,236, 13,145,156,182, 23,217, 81,171,112,227,232, 99, 52,233,190, 19, 55,142, 14,130, 49,
+ 35, 88,220,208, 7,153, 21, 73,207, 74,244,190,206,150,112,110, 15,128, 61, 69,210, 87,177,125,251,246,158, 0,142,228,255, 7,
+ 0, 63, 87,132, 51,143, 8,195,250,247,238, 9,145,196, 2,143,159,197,160,213,135,245,225,228,232,136, 7,143, 34, 17, 21,155,
+150, 72, 8,134,118,110, 38, 91,160, 86,235,102, 94,188, 71,127, 45,135,147,184,187,187,251,238,221,187, 87, 82,196, 2, 93,248,
+142,179, 44, 91,120, 92, 32,188, 43, 83, 62, 11, 68,150,133,187,249,141,239, 87, 55, 51,187,241,112, 59,124,188,186,194,166,107,
+ 55,252,122,250, 52,158,134,133,107,116, 42,174,221,223,157, 71,127, 21, 39, 33,196,183,119,239,222, 87,119,236,216, 97,253,250,
+245,107, 92,188,120, 17,222,222,222, 80,169, 84,229,118,120,139,115,106, 52, 26,199, 34,195,122, 5, 83, 27,126,212,233,116, 5,
+153, 81,240, 34,150, 58,156, 88,140,243, 79,195,132,149,153,147, 85, 66, 61, 47,149, 75, 36,123, 15, 29,216,101, 30,254,248, 34,
+234,213,253, 0,230, 86,254,224,141, 9, 72, 77,203, 65,250,179, 56,252,240,195, 34,204,153, 59, 3, 71, 14,238, 51,247,171, 85,
+119, 63, 33,164, 70,209, 97,196,255,122,190,131,208,145,103,143,110, 95, 75, 40, 15,117,226, 99,153, 56,247,133,114,240,160, 62,
+236,128, 1, 3,112,228,200, 17,132,133,133,173, 45, 77,100, 21,229, 36, 20, 35, 67, 47,238, 89, 11, 74,161, 78,122, 44,147,168,
+ 95, 40,135,124,220,143,253,116, 96, 71, 92,255, 99, 5, 58,214,123, 17,234,234,136, 94,233,249,131,135, 34, 22,169, 50, 57,174,
+ 40,110,146,235, 69,196, 86, 8, 0, 82, 68, 96,133,224,127,115, 48,255, 11, 8,202,247, 14, 63,178,184,117, 75, 84, 25,129, 5,
+ 0,190,132,152, 43,165,146, 27,155,231,124,225,170,140, 14, 19,105, 67,175, 33, 78,203,211,117,175, 56,254, 6, 33,138, 59,148,
+170,139,223,163, 82,169,114, 35, 35, 35, 21, 67,123,245, 66,211,192, 64,184,216,217,161,134,187, 59, 20, 50, 41,164, 18,113,145,
+122,185, 66, 42,146,250,249,249,161,123,247,238, 16,139,197, 80, 42,149, 48, 55, 55,135, 84, 42, 45,209,154,101,106, 47,151, 82,
+ 10,150,101, 17, 26, 26,138,168,168, 40, 88, 91, 91,227,202,149, 43,104,215,174,221,159,172, 90, 69,197, 89, 69, 76,244,197, 27,
+254, 2, 33, 6, 19,135, 12, 11, 96, 52, 18,228,208,186,144,191, 26, 7, 21,169, 15,173,150,131, 86,171,197,175,151,245,184, 25,
+153, 11,189, 94, 7,173, 86, 91,234, 51,203, 72, 91,198,213,213,117,176,143,143,207,216, 65,131, 6, 25,164, 82, 41,114,115,115,
+161, 82,169, 16, 22, 22,102,232,210,165,107, 70,247,238,221,172,130,131,131, 41,165, 88, 84,193,121, 90,169,110,110,110, 30,249,
+195,179,169,149,236, 65, 20,138,152,226, 24,250,115, 56, 68,108, 94,158,172, 93,187, 22, 70,163, 17,148,210, 82, 51, 73, 67,200,
+185,185, 63, 45,181, 90,184,252, 55, 88,217, 58,225,194,133, 11,198,147, 39, 79,102, 19, 32,226,105, 88,216,207, 31, 1,199,247,
+ 2,250,138,132, 47, 61, 61, 93,225,237,237, 13,119,119,119,240, 60, 15,131,193, 80,104,125, 73, 77, 77,133, 90,173,134,173, 89,
+ 6,170,219,185,131,203, 14, 65,124,232,119,112, 49,127,140, 45,167,116,134, 6,190,184,255, 47, 48,133,255, 14,224,247,183, 39,
+130,155,163,179, 7, 24,106, 64, 92, 82, 42,122, 6,117, 4, 43, 49,199,203,215, 41,168,235, 95,205,229,227,143,154,185,176,132,
+195,148, 5, 59,199, 2,248,181, 60,186,156,156, 28,227,227,199,143,241,224, 65,158,222,181,180,180,132,153,153,217, 27,239, 56,
+195, 48,111,101,209, 42, 16, 89, 63,173,109,103,198,136,115,145,101, 60,139, 77,219,238,160,174, 95, 55,172,187,113, 75, 99, 76,
+ 76,107,191, 68,163,137,248, 79, 15, 27,185,184,140,226,121,126, 14,165, 52,163,119,239,222, 78, 59,119,238,180,137,141,141,197,
+157, 59,119, 48,123,246,236,100,163,209,200, 81, 74, 9,165,244,187,119, 80,150,248, 34, 2,235, 93, 90, 17,196, 74, 57,190,180,
+183, 36, 61, 68,140,165, 55,151,149,243, 50, 69, 71, 15,171, 56,254, 23, 74,169,161,172,123, 25,134,249,124,223,238,181,174,246,
+ 14, 60, 90, 59,180, 69,124,162, 30, 63,125, 61, 4,169,169,217,248,117,227,124, 0, 82,232, 57, 22, 45, 91,247,129,163,163, 27,
+ 70,142, 24,233,188,118,253,186, 47, 0, 44,121, 95, 12, 90,241, 87, 86, 31, 36,132,156,117,112,112, 8,251, 98,228, 72, 7,111,
+239, 79, 32,151,203,177,107,215, 46,236, 92,181,202,184, 28,232,183,158,144,243,163, 40, 61, 88, 38,207,245,255,241,140, 31, 61,
+218,161, 86,173,209,144,201,100,248,227,228,239,208, 36,108,203, 14,106, 10,189, 74,131,160, 42,221,169,237,171,163, 36, 77, 44,
+198, 51, 0, 16,203, 17, 47, 6,146,138,209,253,215, 4, 86,161,140, 42,152,167, 85,240,253,214,158,225,169, 88,250,112,227,132,
+129, 94, 78,208, 18,221,229,163,136,213,242,198,133, 79,245,236,221, 76, 58, 57,188, 4,145,149, 95,176,121, 79, 79, 79,180,109,
+216, 16,189, 90,180,128, 72, 36,130, 92, 42,129,133, 92, 1,106,204,179,100, 21, 12, 29,150,209, 38,162, 36,235,147,157,157, 29,
+ 36, 18, 73,161,192, 50,213,154, 85, 26, 39,207,243, 16,137, 68,120,240,224, 1,154, 55,111, 14, 15, 15, 15,236,217,179, 7,157,
+ 58,117,250,211, 80, 98, 69, 69, 86,129,208, 42, 58,140, 87,100,146,124,185,147,224,255, 36, 18,116, 4, 41,186,186, 32, 36, 16,
+ 28, 7, 24, 41,160,213,104, 64, 41, 64, 41, 96,208,235,160,209,104, 10,159,105,202,144,172,139,139,139,103,213,170, 85,231, 77,
+157, 58,165, 86,221,186,245,144,156,156, 12,158,231, 97,102,102, 6,149, 74, 5, 75, 75, 75, 52,109,218,244,229,188,121,243,226,
+ 41,197,200,138, 78,134,127, 7, 21, 44, 0,224,244,233,211,111, 12, 27, 22,124,114,227, 99, 48,236,171,237,144,138,242,134,150,
+ 10,230,240,148, 85,239,182,105,217, 12, 87,239, 70,112,159, 79, 89,161, 21,167,222, 89,224,204,243,155, 99,128,196,183,104, 92,
+144,146,146,130,196,196, 68,244,232,217, 19, 59,119,236,192,171, 87,175,224,239,239,143, 54,109,218,192,209,209, 17,175, 94,189,
+194,205, 75, 90,104,211,211,144,166,187, 3,165, 69, 19, 28,186, 16,169,157,181, 70, 23,249, 79,213, 22,132,144, 30, 0,134, 88,
+ 90, 90, 86, 85,169, 84,241, 28,199,237, 5,176, 23, 64, 63,145, 72,212, 79,169, 84,186,100,101,101,189, 64,222,106,162,195,229,
+ 14, 37,201,229,118, 50,185, 37,120, 78, 11,145, 72, 4, 15, 15,111, 80,163, 14,233, 89,106, 12, 29,208, 29,119, 31, 60,194,201,
+243,215, 57,131,129, 95,105, 74,178,178, 44, 75,125,125,125,145,148,148, 4,177, 88, 12,133, 66, 1,115,115,115, 76,159, 62, 29,
+171, 86,173, 42, 20, 89,149, 21, 90,159, 1,190,150,158,230,215,127, 92,157, 39,178, 18,226,226,145, 24, 35,134,131,157, 19, 86,
+174, 90,158,155,254, 42,161,201,111,192,127, 90,100, 1, 0,207,243,223,197,198,198, 58,138, 68, 34,103,142,227,240,250,245,107,
+220,190,125, 27,227,198,141, 75, 76, 77, 77,109, 77, 41,173, 84, 28,229,114,121, 82,129, 37, 75, 46,151, 39, 1,165, 14, 39,102,
+ 20,177,100,101,148, 65, 89,226, 48, 33, 33,164,154,183,187,197,153,141,203, 38,122, 54,106,210,148, 81,138, 44,211,115,158, 37,
+ 52,191,124,241, 66,211,113,203,126,253,130, 16,210,145, 82,250,188, 52, 82,153, 88,220,229,131,102,205, 68,160,137, 16, 73,155,
+ 99,209,194, 1, 72, 78,201, 66,122, 90, 54, 36, 18, 51,232, 12, 44,140, 60, 65,211,230, 45,240,251,150,221, 8, 24, 49,156,149,
+138,197, 29,222, 39,161,149,143,249,191,252,242,139,167,159,159, 31, 54,111,222,140,243, 91,183,226,211,204, 76, 92, 96, 24,214,
+ 32, 22,219, 31, 55, 24, 54, 0, 56,104, 42, 79, 64, 64, 0,126,251,237, 55,108,219,182, 45,122,112,187,164,253, 19, 7,195, 81,
+175, 71,231, 59, 79, 96, 91,165, 59,112,231, 9,108, 27,248,161, 6, 39,194, 51, 66,240,134, 59,168,224,224,224, 86, 69,191,255,
+ 75,200,223,219,176,196, 33,118, 17,128,214,193,193,193,180,232,119,121,132, 74, 71,223,209,219, 6,180,245, 10,172,238, 73, 12,
+123, 86,224,117, 46,167,155,249, 68, 47,125,154, 67, 39,134, 83,186,188,140, 30, 4,101, 89, 22, 22, 10, 5, 28,172,173,243,204,
+252, 12, 3,240, 0,111, 0,136, 49, 79, 0, 80,158,160, 34,139,166,121,158,135, 84, 42, 45,113,226,123, 69,231,102, 21,229,204,
+206,206,198,203,151, 47, 49,114,228, 72, 40,149, 74, 0, 64, 66, 66, 2,188,188,188, 32, 18,137, 16, 27, 27,139, 63,254,248, 3,
+ 85,171, 86,133, 76, 38, 35, 21,204,148,130,134,191, 14, 33,228, 2,128, 58,241,241,241,150, 46, 46, 46,168,176, 69,139,167, 80,
+105, 9,116, 58, 35,158, 62,125,138,184,184, 56,188,124,241, 12,141,114,179, 64,193,130, 82, 90, 33,139,150,187,187,123,160,143,
+143,207,186, 5, 11, 22, 72,220,221,221, 65, 41,133,141,141, 53, 84, 42, 21, 82, 82, 82,225,239,239, 15, 15, 15, 15, 44, 90,180,
+ 8, 0,118,254,221, 34,171, 88,153, 42, 20, 90, 69, 5,215, 87, 31,121, 34, 45,205, 28, 44,251,191,213,167,229,204,209,146, 0,
+ 64,235,142,189, 69,103, 78, 30, 55,227,128,121, 9, 44, 59, 79, 84,126, 62, 26,140, 60,175, 44,237,255,215,175, 95, 67, 44, 22,
+ 99,223,222,189, 72, 75, 76, 68,221,186,117,209,184,113, 99, 60,123,246, 12,119,239,222,133,157,157, 29, 28,220, 63,196,133, 23,
+122,132,199,169, 97,101,101,133,200, 24,230, 31,115, 25, 64, 8, 25,209,190,125,251,217, 63,255,252,179,163,179,179,179, 56, 57,
+ 57,217,111,245,234,213,117, 87,175, 94, 61,254,139, 47,190,112,250,226,139, 47,108, 28, 28, 28, 68, 9, 9, 9,190, 95,127,253,
+117, 3, 66, 72, 85, 74,233,210,178, 56,205,204, 44,108, 89,137, 25, 8, 17,193,218,202, 6, 34,169, 25,120, 78, 4, 35, 15, 88,
+ 90, 57,224,234,221,125,184,242, 48,123, 84, 82, 42,246,154,240,222, 80, 59, 59, 59, 48, 12, 3, 59, 59,187, 63, 89,170,199,141,
+ 27,135,141, 27, 55, 22, 14, 35, 86, 86,100,253,180,186,157, 57,201, 23, 89, 9,175, 69, 32,218,170, 56,122,240, 90, 70,250,171,
+132,230,239,131,200, 42,168,227, 40,165,120,241,226, 5, 84, 42, 21, 46, 93,186,132,239,190,251, 46,185,184,200,114,114,114, 26,
+ 97,105,105, 57, 55, 39, 39,103, 81,124,124,252,138,242,120,243, 69,212,155,157,193, 18,134, 19, 77,117,241, 80,210, 48, 33, 33,
+ 68,236,225, 34, 63,117,247,210,118, 47, 43,122,159, 32,106, 36,240, 52, 43,204,226,134, 99,203,174,141,130,152,250,107,190,175,
+210,120,212,244, 83,132, 16,191,210, 44, 91,188,209, 88,223,204,220, 2, 64, 18,238,220, 14, 41, 20, 89,169,105,153,208,234, 89,
+104,117, 4, 26, 61,131,182,237, 59, 99,213,186,109,136, 77, 74, 67,193,138,196,247, 5,132, 16,219,192,192,192,209,253,250,245,
+195,188,121,243,112,246,231,159,117, 99, 8,201, 18, 1, 52,216,104, 4, 79, 41, 97, 76,152,196, 94,156,103,201,146, 37, 7, 1,
+ 12, 92, 48, 14, 31,166,231, 96,168,107,119,106, 91,165,123,222,181,125,167, 82, 0,176, 77, 62,251,102,147, 25, 20, 20, 68, 10,
+ 70,214, 42, 58,194,246,111,135, 40, 40, 40,232, 66,112,112, 48,138,126,151,117,131,165,115,205,174,211,191, 25,183,176, 81,167,
+ 22, 36,126, 82, 7,164,101,105,184,111,195,245,210, 24,117,217, 34,171, 40,190, 89,189, 26,119, 35,242,222, 99,119, 71, 71, 76,
+249,248, 99, 80, 14,184, 18, 22,142,221,103,207, 98, 64,251,246, 48,203, 95,241,103,170,245,169, 36, 43, 86, 81,107, 86, 69,173,
+ 78, 25, 25, 25,216,187,119, 47, 26, 55,110, 12,165, 82, 9,145, 72,132, 58,117,234,224,209,163, 71,168, 86,173, 26, 8, 33, 56,
+116,232, 16,122,245,234,133,231,207,159,227,195, 15, 63, 52,175,140,208, 10, 15, 15,183,164,148,182, 44,176,126, 84, 22, 90,173,
+ 22,143, 31, 63, 70,247,238,221, 97, 99, 99, 3, 55,183,157, 56,123,106, 59,148,129,159,130, 16, 84, 72,104, 25,141,198,207,130,
+130,130, 36,132, 16,168,213, 42,200,229, 10,152,153,153,195,194,194, 18,190,190,126,136,139,139, 67,167, 78,157,116,145,145,145,
+107,226,227,227,247, 84, 52,172,254,254,254,102,153,153,153,159, 86,169, 82, 69,154,223,219,245,175, 94,189,250,228,200,200,200,
+236,138, 90,181, 10, 4, 22, 33, 4, 44,203, 22, 10, 45, 17,195,192,197,217,177,240, 56,127,126, 26, 41,131, 43, 43, 54, 85, 43,
+ 3, 0, 79, 79, 79,172, 90,127,132, 9, 10, 10,194,248,241,227, 97, 48, 24,176,102, 77,222, 34,187, 65,131, 6, 65,175,215, 99,
+255,254,188, 69,146, 34,145,168, 76,179,201,237,219,183,113,231,206, 29, 24, 12, 6,100,102,102,226,196,137, 19,184,112,241, 34,
+118, 29, 58,135, 87, 47,158,161,142,159, 23,134, 15,255, 12, 98,177, 24, 91,182,108, 65,243,230,205,255,209, 10, 65, 44, 22, 15,
+222,184,113,163,203,230,205,155, 51, 14, 29, 58,148,251,193, 7, 31,200,150, 47, 95,238,184,106,213, 42, 7,157, 78,135, 9, 19,
+ 38, 36, 93,191,126, 93,219,179,103, 79,179, 13, 27, 54,184, 84,175, 94,189, 3,128,165, 37,164,167, 25,128, 1, 0, 62,105,221,
+216, 74,148,145,173, 6,207,233,240,226,213, 75,100,230,232,192, 27,245,136,142,137, 67,142,198,136,212,180,108,212,169,223,241,
+151,144,144,144, 25,132,144,111, 41,165,199,202, 11,103, 88, 88, 24,174, 95,191,142, 87,175, 94,225,197,139, 23,111,252, 55, 98,
+196, 8,108,219,182,173,194, 22,173,146, 69, 22, 11,162,173,134, 99,135,110,100, 36, 61,139,127,111, 68, 86,126, 29, 52,199,197,
+197,101,142,139,139,139,252,244,233,211, 86, 85,170, 84, 1,199,113,186,226,150,172,214,173, 91,207,220,184,113,163, 75,181,106,
+213,198, 1, 88,241,111, 8, 59,195, 96,196,162,181,163,237, 45,164,209,113,120,186, 52,223,151, 32, 11,168,178,128,144, 29, 16,
+ 53,155,245,114, 92,207,169, 54,211, 54,207, 27,129, 50, 86,200, 70, 62,127,141,181,107, 87, 97,226,132,161,248,253,215, 69,224,
+121, 17,180, 6, 22,158,222, 31, 64,171,231, 65, 24, 17,234,214,111,136,243, 33,151, 32,102,128,189,155,215,190, 87,166, 44, 74,
+105, 26, 33,100,205,161, 67,135,190, 28, 63,126, 60,120,158,151,206, 93,187, 86,157,156,156, 60, 31, 21,240,127, 85, 2, 79,175,
+181,107,215, 70, 76, 91,149,124,112,226, 96,176,175,142,146,180, 59, 79, 96,219,119, 42,197,190,133, 4, 13,252,144,166, 44,185,
+137,191, 88,236,251,253, 16, 90, 5, 74,178,232,119, 73,104,224, 91,237,123, 43, 91,155,207, 26,215,241,181,159, 50,126,140,232,
+121,130, 6,251,171,124,156,243,199,214,149,102, 9,156,236,151,103, 84,189,188, 34, 15,222,253,199, 31,133,191, 23,239,220, 89,
+226,127,241,125,251,154,220, 51, 43,205,138, 85, 81, 75, 22, 0, 40,149, 74,235, 14, 29, 58,160, 93,187,118,232,211,167, 79,225,
+156,172,122,245,234, 97,215,174, 93,232,221,187, 55,238,221,187, 7, 23, 23, 23,212,172, 89, 19, 53,107,214,196,241,227,199, 43,
+ 90,192, 97, 52, 26, 17, 24, 24, 88,176,234,176, 78, 76, 76,140,101,101, 51, 82,171,213, 34, 53, 53, 21,182,182,182,144, 74,165,
+104,210,164, 49,190,252,170, 9,236, 93,126, 67, 96, 45, 63,228,230,230, 22, 46,127, 55,161,177, 13,172, 81,163, 6,146,147,147,
+145,156,156, 12, 7, 7, 7,184,186,186,194,217,217, 25, 75,151, 46,165, 43, 86,172, 56,169,215,235,215, 36, 39, 39, 87,216,146,
+229,226,226,210,194,214,214,118,166, 90,173,150, 22,233,225, 74, 29, 28, 28, 14,187,186,186,206,143,139,139,171,200, 30,155,208,
+235,245, 32,132, 32,248,133, 43,114,117, 4, 89, 49,119, 48,254, 35,175, 55,132,151, 88, 44, 54,101, 66,111,238,192,129, 3, 29,
+ 61, 60,220,241, 58, 50, 12,251,246, 81,252,252,243,207, 5,171, 34, 17,145,223, 49, 40, 56,110,211,166, 13,188,189,189, 81, 17,
+ 39,153, 60,207,227,193,131, 7,216,121,248, 2, 92,188,106, 33,250,233, 99,220, 61,126, 20, 85, 28,108, 17, 80,191, 33, 12, 6,
+195, 91,185,222,120, 23, 48, 24, 12,155,124,124,124,168, 78,167,187, 0, 96,213,195,135, 15,135,198,199,199, 79, 56,114,228,136,
+107,191,126,253,226,142, 30, 61,186, 28,192,230,135, 15, 31,142,254,225,135, 31,218,113, 28, 87,226,106, 65,150,101,127,255,250,
+235,175, 91,247,235,215,143, 72, 24,131,238,244,169, 45, 34,142, 51,144,111,190,221,100, 12,185,124,129,225, 56, 3,233, 51,240,
+107,254,248, 31, 15,153, 81, 95, 45, 54,214,251, 32, 8,161,161,161,206,221,186,117,251, 1, 64,153, 66,171,192, 82, 85,154,133,
+146,101, 89, 12, 29, 58, 20,187,118,237, 50, 57,222,195,129,106,150, 94,230,215,127, 90,221,222,156,136,114,138,136,172,234, 56,
+118,232, 70, 70,226,211,184,247, 74,100, 1, 64, 74, 74,202,122, 0,235,109,109,109, 19,205,204,204,144,157,157,253,167,242, 71,
+ 8,145,251,249,249,201,165, 82, 41, 58,118,236,104,235,226,226, 18,193, 48,204,138,216,216,216, 82, 21, 71, 73,195,132, 37, 13,
+ 39,190,205,170, 67, 27, 7,116,107,210,162,190,197, 19,171,121, 22,114,145,230, 94,149, 8,185, 37, 1,144,169,117,122,113, 53,
+106, 64, 22, 73,146,213,107,216,166, 1, 44, 69,102,221, 74, 19, 90, 12,203,222,205, 76,207,232,146,149,173,195,229, 43,161, 24,
+ 56,160, 6,180,122, 2,158,103,144,147,171, 5, 88, 49, 24, 0,131, 62, 30, 2, 74, 68, 72, 75,140, 3,203,178, 15,241,254, 97,
+250,232,209,163,187,124,251,237,183, 85,243,253, 95,121,229,251,191,154, 66, 8,169, 77,203,113, 62, 94, 6, 79,149,163,187,102,
+ 77, 58,124,105, 93,102, 80, 83,245,211, 6,126, 0, 0,219, 6,126, 72, 19,139,241, 76,196, 34,149, 82,168,139, 89,181, 90, 21,
+253,254,143, 89, 7,223,152, 4, 95,244,216,164, 57, 90, 62,213,220, 59,183,106,212,240,171, 25,223,206,176,120,116, 53, 4,211,
+190, 95, 69,125, 26,118,200, 94,127,233,174, 46,199,204,187, 75,118,242,211, 43,166,234, 11, 0,232,220,182, 55,234,248, 55,254,
+211,159,205,219,228,249,146,188,124,254, 54, 18,147, 99, 77,110,108,243,197, 65,137,115,178, 76, 89,210, 95,130,233, 59, 35, 52,
+ 52,212, 49, 38, 38,230,141,137,239,222,222,222, 32,132,224,198,141, 27,184,126,253, 58, 6, 14, 28, 8,145, 72, 4,177, 88,140,
+ 11, 23, 46, 84,200, 26, 83,196,186,244,128, 82,218,138, 16,210,201,221,221,189,196,213,134,166,112,169,213,106,100,102,102,226,
+212,169, 83,168, 81,163, 6,126,250,233, 39,184,186, 56, 97,198,140, 73,224,121, 30, 89, 89, 89, 48, 26,141,166, 90,180,248, 2,
+107, 17,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252,135,184,184,184, 35, 21, 13,163,167,167,167,181,209,
+104,252,166,123,247,238, 29,122,246,236,137, 78,157, 58,189,241,255,142, 29, 59, 44,246,239,223, 63,223,195,195,163,179, 94,175,
+ 95,144,152,152,152,108, 10,239,111,191,229,185, 95, 82,126, 48, 7,211,250, 85,193, 39, 99,183, 96,233,210, 3,144,201,100,111,
+ 52,188,243,230,205, 43, 83,196,240,148,250, 72, 82,174,198, 77,154,186,196,113,254,252,179, 56,123, 54, 9, 12,195,192,197,197,
+ 5, 12,195,224,229,203,151, 96, 24, 6, 94, 94, 94, 96, 24, 6,177,177,177, 5,115, 2,211,161, 49,205,151, 33,195, 48,208,104,
+ 52,120, 29,253, 10, 49,145, 17, 48,207, 74,128,131,165, 18,233, 97, 15, 80,103,248,136, 66,255, 79,255,112, 15,119, 27,128,109,
+ 69, 78, 45, 33,132,232, 8, 33,125, 0, 28,164,148, 22, 88, 52,126,200,255,148,136, 15, 62,248,160,222,183,223,126, 43, 46,112,
+183,225,234,249, 35,167,215,235,121, 0,240,171,211,242, 13,181,255,236,217, 51, 44, 93,186, 20,185,185,185,144,152,226,232, 46,
+ 95,180, 22,172, 48, 44, 73,132, 85, 68,100, 1,128,157,151,251, 47, 55,238, 92, 48,222,143, 92,167,126,248,228,132, 34, 62,154,
+ 1,163,123,127, 69, 86,113,203,150,187,187,251, 28,158,231, 41,165,116, 86,145,186, 85,230,233,233,121,233,244,233,211,118, 28,
+199, 97,229,202,149,214, 9, 9, 9,214, 45, 91,182,156, 6,160, 84,161, 85,210, 48, 97, 73,195,137, 40,178,234, 80, 38,147,217,
+150, 85,125, 20, 95,117,104, 52,194,215,210,194, 26,233,136,129,214,222, 80, 47,195,142, 75, 59, 19, 63,226,158,107, 84,125,127,
+ 51,163,161, 42,147,165,131,155,210, 26, 60,165,190,165,118, 78, 13,134, 19,247,238,220,237,232,233, 81,131, 61,114,236, 34,122,
+244,234, 7,173,150,129,198, 64, 64, 88, 49, 8, 43, 65,237, 58,245, 81, 51,160, 14, 40,128,219, 55,175,114, 58,131,225,204,251,
+148,247,174,205,191, 26,232,218,252,203, 21,160, 60, 45,193,143, 86,213, 94,189,122,205, 7,240, 85,121, 60, 78, 31,126, 53,208,
+185,105, 30, 79, 81, 63, 90, 95,127, 57, 26, 97, 55,197, 86, 23,239, 44,148,116,250, 0,193,201,103, 9,148,242,255,173, 58, 20,
+ 51,149,119,205,241, 95, 17, 92, 38, 9, 45, 79, 79, 79,107, 71,115,229,111, 95, 12,255,204, 34,234,254, 53, 36,132,223,192,149,
+139, 17,233,187,247, 31, 72,203, 77, 77, 26, 94, 1,145, 85, 56,204,103,231, 92, 5,222,181,254, 44,180,228,230, 14, 0, 0,239,
+ 90,141,193,154, 89, 85,116,200,227, 79,214,172,202,136,172,162, 21,118, 73, 62,180, 70,141, 26,133,141, 27, 55,162, 89,179,102,
+240,241,241, 41,172,236, 43,106, 53, 43,110, 93,170,204,106,195,162,200,206,206,134,151,151, 23, 54,108,216,128,135, 15, 31,194,
+194,194, 2, 3, 7, 14, 68,118,118,118,161,192, 50,117, 50, 60,165,244,217,233,211,167, 27,245,239,223,159,138,197, 98,146,145,
+145, 1,107,107,107,172, 94,189, 58, 55, 62, 62, 62,184, 18, 34,171,159, 68, 34,153, 52, 96,192, 0,214,207,207, 15,137,137,137,
+176,180,180, 52, 16, 66,196, 0, 96,109,109,109, 80, 40, 20, 24, 61,122, 52,234,214,173,219, 98,202,148, 41,205,220,220,220, 86,
+199,198,198,110, 41,171, 44, 17, 66, 10, 27,212,225, 43, 30, 67,167,203, 19, 42,107,214,172, 65,254, 92,183,255, 13, 17, 68, 70,
+ 2, 38,172,100, 49, 55, 55,135,143,143, 79,137,121,223,162, 69, 11,220,190,125, 59,111,104, 82, 36,130,163,163, 35,174, 92,185,
+ 98,210, 74,170, 2, 71,144,161,161,161,168,229,109,143,135,103, 79,195, 94, 41, 70, 93, 87,103,184,183,104,133,136,136,136,127,
+204,154,149,239,155,106, 12,128,246,249,101,112, 19,128, 81, 69,142, 87, 83, 74,127,169, 8, 39,199,113,148, 97, 24,242,250,245,
+107,189, 82,169, 36,182,182,182, 34,153, 76, 6,173, 86, 91, 40,184,158, 61,123,134, 99,199,142, 33, 38, 38, 6,182,182,182,140,
+149,149, 21,244,122,125,186, 41,252,190,190,190,112,118,118,126, 99,226,251,240,225,195, 43, 37,178,134, 2,129, 27,127, 92, 80,
+ 69,198,176, 86,181,236, 59,227,197,227,151, 26, 70, 7,249,255, 7,145, 5, 0,233,233,233,235, 1,172, 47, 56,118,112,112, 24,
+198,178,236, 12, 43, 43, 43,171, 11, 23, 46, 88, 59, 56, 56,144, 45, 91,182, 24,102,205,154,149,193,178,108, 58, 33,100,217, 63,
+ 47, 14, 17,158,146, 25,233, 37,182,113,229,239,107,232,213, 9,175,167,213, 76, 23,215,112, 32, 1,129,232,149,244,232,242, 48,
+ 46,178,105, 98,124, 2, 67,193,135,151, 81, 7,111,154,246,237,188,111, 34, 30,223,245,148, 91,202, 49,106,244,183, 8, 62,121,
+ 30,132, 17,227,210,213, 27,208,233,141, 72, 73,203,196,128, 65,131,225,238, 98,143,240,235,167,146, 57,158, 95,253,126,137,108,
+126, 85,199, 30,195,108,100, 10,101,126,154, 24,177,237,215, 73, 96,152, 21,152, 61,123, 54, 2, 3, 3,199, 18, 66,190, 43,207,
+143, 22, 33,252,170,218,173, 6,217, 72,100,121, 60,148, 55, 98,195,222,105,249,126,180, 38, 98,245,250,253,181, 3,188, 95,204,
+ 45,203,143,214,251, 34,178,138,126,151, 43,180,170, 84,169, 34, 51, 19, 99,164,173, 66, 50,229,139,143,123, 58, 36, 69,134, 33,
+230,209,221,188,225, 5,189, 90, 31, 31, 17,238, 99,194, 67,219, 23,243,223, 65,203, 26,186,210,104, 12,168, 40,103, 65,131, 91,
+220,154, 85, 17,145, 85, 18,103, 81,177, 85,212,111,150,135,135, 7,230,207,159, 95,174, 31,173, 18,226, 94,112,190, 19,128, 58,
+ 5, 98, 11,121,147,225, 59,153,178,210,176, 52, 78, 7, 7, 7,164,166,230,121, 72,104,221,186, 53, 90,183,254,223,122, 6,189,
+ 94, 95,104,197,178,176,176,248,147, 69,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218,
+181, 43, 16,115, 42,106,194,222,110,197, 57,141, 70,227,232, 83,167, 78,177, 60,207, 99,195,134, 13,184,125,251, 54, 85, 42,149,
+ 51,149, 74,229, 42,133, 66, 97, 84,171,213,163, 70,140, 24, 49,120,238,220,185, 76,139, 22, 45,112,237,218, 53,166,106,213,170,
+ 67, 0,108, 41, 47,238, 55,110,220, 0,195, 48,224,210,162, 49,118,218,110,152, 41, 68,120,252,248, 49,210,210,210,254,228,196,
+212,148,244, 44,106, 41, 41,248,180,104,209,162,112, 24,178, 73,147, 38, 96, 89, 22,247,238,221, 43,113, 24,182, 24, 39,181,179,
+179, 43, 44, 31, 18,137, 4,231,207,159,199,247,223,127, 15, 79, 91,107,164, 63,122, 8,231,214,109,209,225,179, 17, 24, 56,112,
+ 32, 88,150,133,173,173,109,161,229,183,188,184,191,101,133, 80,148,243,179, 90,181,106, 13, 9, 15, 15,119,175, 93,187,182, 75,
+104,104,104,155,192,192, 64,175,135, 15, 31, 22, 28,203, 96,194,220,156,162,156,183,110,221,218,183,106,213,170,209, 67,135, 14,
+149,240, 60,111,140,138,138, 50, 0, 32,206,206,206,236,173, 91,183,248, 35, 71,142, 64,173, 86,195,221,221,157,113,115,115, 35,
+103,206,156,225, 31, 61,122,116,131, 82,250,173, 41,113, 55, 26,141,111,184,113, 40,248,189, 99,199,142, 10,191,239, 85,106,250,
+254,212,174,165,159, 71, 74,220, 61,196,199, 70,194,152,233,160, 63,118,232,168,182, 34, 34,235,111,200,163,191,147,115,222,211,
+167, 79,221,180, 90, 45,164, 82, 41,214,172, 89,163,159, 63,127,126,120, 74, 74, 74,115, 90,194,138,242,226,156,149, 92,117,152,
+ 86, 6,231,159, 86, 29,102,166, 34,248,208,225, 91,141,204,123,109,194,216,184,228,194,137,141,148, 16,219, 3, 78,254,205,149,
+141,107,199, 50,199,231, 48,217, 70, 85,112,105,225,164,148,234, 8, 33,253,122,245, 30,116,110,215,174,157,230,179,230,204,193,
+149, 27, 15,145,154,145, 3,158,178,224, 9,193,140, 25,179,224,108,111,139,172,184,167, 42,173, 94,223,171,248, 86, 60,255,245,
+124, 39,132, 25,119,230,200,150, 21, 12, 1,159,155,248, 68,198,102, 71, 42, 63, 25,216, 75,212,175, 95, 63, 28, 56,112, 0,161,
+161,161,235, 74, 19, 89, 69, 57, 41,101,198, 61,188,176,123, 5, 1,120,117,242, 19,153, 40,231,133,114,200,199,189, 68, 3, 7,
+ 14,196,193, 99, 87,177,235,232,139,181, 59,143,208,163,239,115,135,165, 82,158,225, 45, 68, 8,109,238, 95,205,173, 69,253, 0,
+185,200,168, 70,204,163, 72,164,229,106,112, 38, 44, 42,131,161, 76,165,125,235,228, 85,144, 18, 68, 71, 63,253,211,127, 25, 25,
+242,252, 6,189, 98,219, 74, 49, 12,243,134, 53,235,109, 44, 89, 69,195,233,228,228,244,198,118, 46, 69, 27,238,130, 57, 64,149,
+112,237, 48, 45, 58, 58,218, 50, 58, 58, 26,148, 82,220,184,113,195,178, 73,147, 38,211,222,198,154, 53,105,210,164, 66,171, 85,
+241,239,146,206,149,135,252, 73,233,203,237,237,237,247, 78,153, 50,101,108,147, 38, 77, 58,206,153, 51,135, 0, 96, 43, 89, 0,
+ 57,158,231, 17, 18, 18,130, 3, 7, 14, 24,245,122,253,200,184,184,184,162,115, 29, 86,186,186,186,158,233,221,187,247,150, 39,
+ 79,158,176,225,225,225, 48, 69,208,169,213,106,248,248,248,128,227, 56, 44, 28,235,129,236,236,218,224, 56, 14, 70,163, 17,102,
+102,102,111,236,115,105, 74, 62, 49, 12, 3,163,209,248, 39,161,117,227,198, 13,176, 44,139,230,205,155,227,238,221,187,133, 22,
+173,242, 44, 80,122,189, 62,218,201,201,201,105,222,188,121,133,225, 74, 78, 78,198,233,211,167,241,193,135, 77,225, 63,114, 20,
+226,226,226,176,108,217, 50,184,186,186,226,167,159,126, 66, 90, 90, 26, 56,142,251,187,205,233, 93,194,195,195,221, 63,254,248,
+227,164,135, 15, 31,186, 31, 59,118,204,186, 91,183,110,102,131, 6, 13, 74,122,248,240,161, 59, 33,164, 41, 42, 56, 9,218,104,
+ 52, 78, 39,132,156,252,233,167,159,166,125,245,213, 87, 77,134, 14, 29, 42, 22,139,197,124,108,108, 44,183,115,231, 78,226,227,
+227,195, 72, 36, 18,114,234,212, 41,254,230,205,155,215, 57,142, 91, 72, 41,189, 84, 17,139,115, 81,145,197,178,172, 73, 34,171,
+ 56, 38, 56,202,134, 88, 48,201,205, 87,173,153,207,248,121,187,235,183,238, 60,253,250,210,181,167,207, 89, 45, 55,225, 55,224,
+ 57,254, 31,130,101,217, 61,181,106,213, 26, 54,110,220, 56, 69,167, 78,157,100,115,231,206,205,204,206,206, 46, 81,100,149,242,
+ 94,254,229,171, 14, 1,252, 58,125,242,177, 9, 95,215, 30, 86,237,115,231, 42, 56,155,155,132,116, 17,203, 88, 90, 51,168,239,
+197, 34, 59,229,153,195,209,115,155, 95,162, 28,191,108,148,210, 91,132,144,246, 1,181,235,237, 95,248,211, 66,199,153, 83,167,
+136,247, 31, 59, 1,202,233,113,227,194, 5,152, 75,140,244,209,157,179,137, 90,189,174,231,251,184, 5, 79,220,229,149,187, 8,
+ 33,135,109,109,109,239,127, 54,116,168, 79,173, 90,131,160, 84, 42,177,111,223, 62,108, 91,185,210,184, 28,232,191,158,144,187,
+163,242,124,234,149,138,196,107,133, 60,247, 70,124,246,153,111,253,250,159, 67,169, 84, 98,239,222,189,216,178,124,185,201, 60,
+255,113,107, 86,129,103,248,224,252,111, 19,252,104, 49, 36,251,250,211,168,156, 27, 79,163,114,192, 83,202, 83,170,101, 24,188,
+206,213,235,127,138,120, 30,115,170,146, 1, 1,207,243,248,225,199,113,239, 50,114,133,226,167,178, 75,186, 75,104, 36, 98,138,
+238,145, 86,222,134,210, 0, 96, 48, 24, 98, 76,164, 95,224,233,249,167, 61, 80, 23, 84, 54,172, 5,195,129,166,138, 44, 83,253,
+104, 1, 64, 74, 74, 74, 60,128,153, 46, 46, 46, 59, 58,118,236, 56, 2, 64,108, 37,243,104, 67,171, 86,173, 70, 2, 96, 9, 33,
+235, 98, 99, 99,255, 52,161, 52, 46, 46, 46,194,205,205,109,177,183,183,119,225, 70,211,101,113,242, 60,255,162,118,237,218,250,
+146,242,162,180, 99,158,231,203,205,163,140,140, 12, 52,110,220,248, 79,123, 90, 82, 74, 17, 21, 21, 85, 96,113, 42, 76,251,178,
+ 4, 92, 78, 78,206,168, 47,191,252,114,189, 88, 44,246, 4, 64, 10, 68,174,209,104,100,127,249,229, 23,185,209,104,100, 1, 16,
+134, 97, 56,177, 88,172, 57,112,224, 0,199,113, 92,180, 86,171, 29,245, 55,215, 17,123, 73,222, 86, 12,185,225,225,225,126,249,
+150,172,152,208,208,208,123,187,118,237,114, 0,176,187,146,101,243, 18,128, 75,132,144, 22,107,214,172,153, 62,106,212,168,198,
+ 3, 7, 14, 20,181,110,221, 26,193,193,193,198,144,144,144, 27,106,181,122, 65, 69, 4, 86,126, 94,102,122,120,120, 20, 10,174,
+114,222,229, 50, 39,242,218,121,201, 86, 13, 30,227, 42,223,176,224,116, 78, 74,156,238,170, 33, 71,247,237,102, 32, 20,255,143,
+145,144,144, 48,153, 16, 50,107,217,178,101,113,117,235,214,149, 73, 36, 18,157,169, 34,235,111,180, 30,112,132,144,174, 63,119,
+232,123,184,213,140, 47,189, 59,180,105,174,244,168,226,232,246, 40, 50, 17,207,174, 5,231,222, 63,250,227, 43,170, 77,239, 65,
+ 41,229, 76,224,186, 73, 8,169, 49,105,202,164,130, 77,165,235,180, 59,115,136,254, 63,218, 84,250,135,197,139, 23,251,212,170,
+ 85, 11,251,246,237,195,153,237,219, 49, 32, 37, 5,231, 89,150,101, 36, 18,187,163,122,253, 18,152,230,184,248,135,165, 75,151,
+250, 6, 6, 6, 98,207,158, 61, 56,181,101, 11,250, 87,142,167, 52, 52, 2,224, 80,208, 60, 1,120, 2,160, 1, 0, 5, 0, 45,
+242,182,118,178, 47,114,125,106,254,127, 5,255, 95, 4,240, 87, 78,132, 45,223, 51,124,113, 60,124,250,178,193,187, 14,133, 90,
+173, 78,243,241,241,169,208,154,107,131,193, 80,230, 24, 46,199,113, 49,213,170, 85, 51,217,106, 97,138, 40, 74, 77, 77,109,248,
+ 23, 86, 16,111, 53, 23,235,141, 70,132,231, 95,185,184,184,240, 5,141,126, 73, 34,172,164,115, 20,120, 89,145,231,196,199,199,
+ 63, 1,240,117,101,195, 25, 27, 27,187, 31, 38,108, 26,109,234,117, 0,144,150,150,246,206, 55,243, 37,148,198,206,157, 59,183,
+ 66, 2, 27,148,198,150,145,215, 15, 1, 52,249,183,215,178, 5, 91,239, 16, 66,152,208,208,208, 17,249,195,219,103, 1,172,203,
+247,232,253,182,252,133,130,107,195,134, 13, 19, 40,165,200,202,202, 90, 94, 81,129, 85,216,123, 78, 76, 12,126, 87,113, 79, 75,
+212,253,177,115, 93, 76, 91,117,134,126,194,198, 28,221, 22, 8, 40,200, 51,141,163,163,227,239,159,124,242,201, 7, 0, 54,191,
+ 45, 95, 73,195,137,239, 32,140, 47, 9, 33,117,207, 79,250,254,179,243,214, 22, 65, 48,138,252,160, 99,142, 66,151, 26, 12,224,
+ 55, 83,172,226, 69,227,139, 60, 55, 37, 75,255, 63,229,115,190,255,171, 9,195,134, 13,195,172, 89,179,112,106,201, 18,253, 24,
+ 66, 50,197, 0, 61,153,215,209,100, 8, 48,213, 84,158, 33, 67,134, 96,214,172, 89, 56,190,112, 97,165,120,202,129, 3, 33,228,
+ 24, 0, 76,155, 54,237,219,249,243,231,219, 76,159, 62,189,206,130, 5, 11,126,202, 63, 14, 43,248, 63, 63, 79,187, 77,159, 62,
+ 61,160,200,255,217, 0,110,253,197,233, 89,162,103,248, 55,122,236,239,250, 3,160,189,192, 41,112, 10,156, 2,167,192, 41,112,
+ 10,156, 2,231, 91,126,130,242, 36, 75,233,223,165,253, 46,114, 14,255,196, 71, 36,244,221, 4, 8, 16, 32, 64,128, 0, 1,255,
+ 81,171,220,177,183,249,255, 29,134,163, 96,142, 86, 81, 75,233, 6, 32,111,185,123,251, 82, 76,169, 21,113, 28,217,190, 18,102,
+223,179, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,254,255,226, 44,143,187,148,251,131, 8, 33,199, 40,165,221, 74,251, 46,
+ 16, 86,197,127, 23, 57,247,206,166, 29,148, 16,151,145,165,205,209, 18,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224,
+252, 79, 12, 29, 2,160,211,166, 77,155,254,111, 27, 58, 4,224, 2, 96,100,209,143, 9, 67,135,251,216,216, 88, 88, 74,165, 74,
+ 9, 0,232,116, 42,189,155, 27,178,128,190,255,216,134,183, 2,254,179,166, 93,167,124, 81,159,248, 46,175, 21, 32, 64,128, 0,
+ 1,255,111,144, 92, 96,169, 2,144, 12,128,228, 31,235,242,191,147,243,219,142,226,191,223,248,255,175, 2,165, 52, 30, 64,137,
+171,229, 69,165,137,172,148, 20,165,189, 72,148,238,107, 52,106,106, 2,128, 72,196, 60, 78, 73,177,137,176,183,223,151, 82, 25,
+177,229,224,228,116, 71,204,178,110,166, 92,107, 48, 26, 99, 83, 18, 19,223,112, 29, 79,129,255,188,192, 51, 85, 68,188,141,216,
+248, 59,132,138,131,131,131,147,147,147,211, 71,150,150,150, 31,102,100,100,220, 76, 78, 78, 62, 88,218,190,135,132,144,249,132,
+ 96, 74,254,239, 69,148,210,233,101,132,221,228,107, 75,184,215, 71,169, 84,142, 37,132, 4,230,199, 63, 84,165, 82,173,161,148,
+ 62,253,127, 40,108, 21, 0,122,138, 68,162, 33,246,246,246,141, 19, 18, 18,230, 82, 74,151, 85,146, 75, 4, 96,146,181,181,245,
+ 64,107,107,235,170,105,105,105,207,179,178,178,246, 0, 88, 74, 41, 45,119,169,244,119,227, 93, 63,108,221,169,245,204,144, 83,
+ 33, 63,204, 89, 17,119,237, 79,255, 79,118,181,235,216,161,217,172,144,163, 87,231, 77, 95, 21,155, 86,193,176, 49, 0, 10,156,
+230,241,249,189, 86,250,142,211, 82, 12,160, 59,128,214, 0, 66, 0, 28, 53, 37,222,165,112,125, 0,224,219,252, 48, 47,165,148,
+158,255,151,151, 35, 51, 39, 39,167,133, 0,186,139, 68,162,240,216,216,216,145,148,210,152,127, 56, 76, 34,228, 45,243, 15, 68,
+158, 27,142, 91,166,184,112, 48, 5,246,246,246,221, 68, 34,209,216,124,215, 46,107, 82, 82, 82,142,253, 91,243, 70, 38,147, 45,
+119,118,118,254, 92,173, 86,171, 8, 33,180,168,191, 71,142,227, 98,146,147,147, 27,190,135, 85,219,173,127,249,251, 50,178, 4,
+241, 85,186, 31,173,216, 88, 88,138, 68,233,190, 73, 9, 15, 7,196,197, 63,232, 15, 0,174, 46,117,246, 56, 58,215,222, 29, 27,
+ 43,213, 55,234,208,219, 92,172, 20,173, 97, 89,113, 61,141, 78,107, 47, 22,137, 83,244,156,225, 30,163,163, 99,227, 31, 31, 40,
+209,217,162,152,101,221, 94, 69,156,119,228,244,105, 16,203, 93, 33, 86,120,150, 26, 96, 87, 87,215, 74, 69,212,214,182,186,133,
+ 94, 38,159, 32, 22,179, 29,120,202, 5, 82, 30, 96,136, 56,148, 51, 26,206, 73,180,218,159,211,210, 34,179, 43,155,136, 53,237,
+137, 51, 5, 6,130,160, 3, 40,206, 16, 96,215,227, 20,154, 80,129, 76, 48, 73, 68,188,165,216, 40,122,239, 50, 74,233,228,119,
+ 93,152,220,221,221,109,250,244,233,179,252,251,239,191, 87,152,155,155,147,232,232,232, 78, 83,167, 78,109,233,238,238,254,117,
+ 76, 76, 76, 92,113,209, 71, 8,166,240, 60,101, 0,128, 97,200, 84, 39, 39, 39, 37,203,178,127,242,109,100, 52, 26,149,132, 96,
+ 28,207, 83,146,127,237, 20, 66,200, 10, 83, 4,163, 66,161, 24,212,184, 73,211,175, 23, 46, 94,106,238,228,232,104,198, 25,121,
+253,203,168, 87,202,153,211, 38, 55, 81, 40, 20, 43,212,106,245,206, 74,188, 52,132,101,217, 1, 50,153,172, 27,128, 90,249,167,
+ 31,105,181,218, 99, 70,163,113,183,169, 13,186,179,179,243, 69,150,101,171, 84,228,217, 70,163, 49, 58, 33, 33,161,121, 37, 95,
+246,126,158,158,158,191,181,106,213, 74,217,184,113, 99, 72,165, 82,204,154, 53,107, 18,128,101,166, 8, 42,165, 82, 57,192,204,
+204,172, 90, 78, 78, 78,164, 90,173,222, 47,149, 74,219,175, 88,177,194,163, 89,179,102, 22,137,137,137,132,101, 89,167, 99,199,
+142,125,186,114,229,202, 78,132,144,118,229, 53,114,153,145,116,166,172,123,173, 22,153,145,231,103, 2,232, 82,252,127, 78, 35,
+ 31, 66, 89,143,110,106,122,247, 53, 42,176,180,158, 16,194,136,197,226, 21,206,206,206,195, 52, 26,141, 6,121,190,215,168,147,
+147, 83, 97,131, 3, 0, 58,157, 46, 61, 61, 61,221,175, 18,233,232, 7, 96,184,181,181,245,176,111,190,249,198,166, 75,151, 46,
+216,190,125,251, 23, 27, 55,110, 76, 39,132,252, 14,224, 87, 74,233,147, 10,210, 78, 73, 72, 72,232, 42, 22,139,137,135,135, 7,
+ 11,224,124, 5,194,227, 11, 96, 70,126, 99,179,134, 82,106, 36,132,180, 1,242,222,119, 0,139, 10,132, 27,203,178,107,252,252,
+252, 62,122,244,232,209, 90, 74,233, 15,149,125,215,157,157,157,215,175, 94,189,186,127,143, 30, 61,216,228,228,100,183,186,117,
+235,238, 0,208,226, 29, 52, 72,159,201,100,178,137,117,234,212,241,127,242,228, 73, 68, 86, 86,214,210,252,244,164,101,220,227,
+ 14,160,189,181,181,117,187, 25, 51,102,152,119,235,214, 13, 27, 54,108,232,186,113,227,198, 28, 66,200, 57, 0,103,223, 86, 4,
+138, 68,162,177, 49, 49, 49,246,148, 82,184,184,184,140, 69, 57,155,155,255, 83, 96, 89,118,197,128, 1, 3,134,237,216,177, 67,
+249,234,213, 43,165,155,155, 91,161,243,108, 66, 72,165,219, 79, 1,111,109,209,218, 80, 32,184, 76,242,163, 37,149, 42, 37, 70,
+163,166,102, 92,252,131,254, 45, 91,253, 98, 5, 0, 23, 47,124,217,223,209, 57, 32, 84, 42, 85, 70,200, 44,229, 7,122,119,111,
+ 95,175,111,183, 86,196,221,197, 17, 49,241, 73, 78,191,238, 58,213,249,216,169,243, 7,144,231, 64,172, 68,112,250, 52, 40,244,
+103,241,228,242, 74,216,183,142,195,170,227, 49,184,118,255, 37, 84,153, 41,168,226,172,192,226, 9, 29,225,108,163,172, 84, 36,
+205,157,124,219, 48,114,229,238,143, 7,125, 98,245, 81,207, 90, 98, 47,103,103, 80, 42, 67, 68,100, 78,211, 19,167,207, 55,218,
+191,119,231, 88,115, 39,223, 1, 57,137, 17, 38, 87,110, 13, 92,137, 34, 87,143,158, 34,150,124,218,162, 73, 64,187, 65, 93, 91,
+ 48,254,181,106, 32, 60,236, 81,199,195,127,220, 88,236,239,196,156,227,140,116,171,153, 4,135,238,196,149,238,208,175, 36,193,
+209,161, 67,135, 22, 50,153, 76, 95,244, 58,173, 86, 43, 33, 4, 31, 84, 70,108, 20, 60, 67,167,211, 50, 98,177, 20, 12, 67,190,
+174, 83,167, 78,173,148,148,148,243,132,144,223, 98, 99, 43,102, 45,248,138, 16,105,186, 72,212,128,145,201, 92,140, 58,157, 29,
+ 0, 16,169, 52,221,221,198,166,246,140,111,191, 53,103, 89,150, 79, 77, 77,133, 74,165, 34, 35, 70,140,144, 71, 70, 70,246, 6,
+176,178,156, 48, 98,227,198,141,190, 46, 46, 46,186,226,255,197,199,199, 75,123,244,248,168, 50,149,182,239, 7, 31, 54,155,120,
+234,212,201, 90, 89,105,233,154,141,203,214,223, 49,200,149,218,170,181,252,196,107, 54,108,177, 26, 57,108,240,151,132,144,123,
+148,210,136, 10,112,122, 42, 20,138, 3, 75,150, 44, 9,108,211,166,141,216,209,209, 17,137,137,137,120,244,232, 81,224, 31,127,
+252,209,115,203,150, 45,147, 8, 33,189, 41,165,166,120,112,247, 57,183,245, 55, 71, 51, 91, 59, 24, 13, 6,184,214,169, 95,232,
+223,236,217, 31,167,193,233,245,224, 13, 6,212,234,214, 51,207, 44,195,243,240,247,247,175,148,215, 93, 66,136,107, 64, 64,192,
+182,159,126,250, 73,162,213,106,113,227,198, 13,156, 63,127,158,143,143,143, 95, 80,158,200, 34,132,156,158, 51,103,142,123,243,
+230,205, 45, 82, 82, 82, 96, 52, 26,237, 15, 29, 58, 52,182,126,253,250,150, 30, 30, 30,210,173, 91,183, 34, 39, 39, 7, 28,199,
+217, 86,171, 86,205,118,208,160, 65,186,173, 91,183, 78, 2,176,176, 52, 75, 86, 86, 36,157,153, 64,170,117,246,107, 48, 4, 9,
+228,100,231,175,187,184,156,176,172, 78, 10, 45, 91, 93,170, 87,183,168, 86,211,108,170,185,101,109,219,172,216,179, 83,187, 84,
+175,190,241, 68,100,249,157, 33, 66, 8,195, 48,204,138,222,189,123,127,188,107,215, 46,229,163, 71,143,148,181,106,213, 2,207,
+243,133, 30,248, 11, 28,206,250,248,248, 84, 38, 29, 23,140, 30, 61,122,106,255,254,253, 81,167, 78,157, 66,167,168,179,103,207,
+198,212,169, 83,109, 46, 94,188, 56,105,231,206,157,147, 8, 33, 11, 41,165,211, 42,210,150, 23,109, 47, 43, 24,172,239, 94,188,
+120,209,239,192,129, 3,131,167, 76,153,226, 3, 96, 28,128, 89,169,169,169,173, 0,192,206,206, 78, 10,224, 60, 33,228,179,111,
+190,249,102,204,180,105,211,208,181,107,215, 89,132,144, 31, 43, 99,229, 35,132,176,246,246,246, 93,123,244,232,193, 26, 12, 6,
+152,153,153,193, 96, 48, 84,127, 75,129, 69, 0,172, 30, 53,106,212,152,209,163, 71,195,198,198, 6, 6,131,193,119,215,174, 93,
+ 27,103,205,154,245, 33, 33,100,120, 73, 97, 37,132, 12, 25, 51,102, 76,159, 79, 62,249, 4, 13, 27, 54,132, 72,148,151,140, 75,
+150, 44,193,188,121,243,204, 79,159, 62,221,115,235,214,173, 61, 9, 33,251, 41,165,149,246,133,198,243, 60, 68, 34, 17, 94,191,
+126, 13, 71, 71, 71,153,173,173,237, 41, 66,200,134,212,212,212,131,255, 34,171,201,162, 1, 3, 6,124,188, 99,199, 14,115, 0,
+ 88,188,120, 49, 38, 78,156, 8, 39, 39, 39,152,155,155, 11,106,231, 95, 98,209, 42,238, 71,171, 82,238, 29, 84, 42, 85,253,233,
+ 95,125, 10,134,201,235, 53,214,168,234,137,249,223,142, 36,135,143,157,170, 95,214,125, 98,185, 43,158, 92, 94, 9,153,199, 4,
+104, 13, 28,174,223,127,129, 51,139, 59, 1, 0,124,187,204,128, 86,223,174, 64, 25,218, 74, 21,138, 69, 58,163,241, 10,156,157,
+111, 32, 42, 42,185, 60,145,229,224,236,116,108,221,186,133,138,192,234,126,208,115, 6,196, 38,197,130, 16, 25,220,221, 44,240,
+217,144, 46,226, 86,173, 92,237,191,251,110,125,176,153,131,111,175,220,228,136,114, 29,134,250, 57,144,205, 45,234,251,244, 31,
+ 20,212, 92, 86, 59, 48, 0, 18,153,226,127, 2,172, 97, 67, 52,104,216,144,153,150,147,221,225,230,173, 59, 29,246,157,190,174,
+245,115, 32,123,158, 36,211,161,101,229, 67, 81,193, 49,126,252,120, 20,244,190, 11,144,152,152,136, 63,254, 56, 87,226, 61,166,
+230,117,209,103,252,248,227,143, 22,233,233,233, 93, 54,109,218,212,214,197,197,229,199,248,248,248,203,166,144,124, 74, 72, 21,
+200,100,237,134, 45, 93,202,215,251,232, 35,214,218,217,153,225,141, 70, 18,247,252,185,221,178,149, 43, 91,167, 61,123,166,200,
+181,181, 77, 75, 87,171, 85, 17, 17, 17,144,203,229, 68, 36, 18, 53, 42, 65,225, 39, 18, 66, 22, 49, 12,153, 74, 8,129, 76, 38,
+143, 24, 61,122,244,221,252,191,171, 28, 61,122, 84,217,189,123,119, 21,128, 87,121,230,112,185, 27,203, 50,190,121, 19, 8,177,
+200, 20,129,105,102,102,246,213, 15, 63, 45, 52,203, 74,203, 80,235,115,115, 13, 14,150,230,132,152, 91,176, 89,153,217,217,177,
+241,201,218, 25,115,231,177,163, 62,251,228, 43, 0, 99, 77, 21, 89,117,235,214,189,121,224,192, 1, 71, 59, 59, 59,100,100,100,
+ 32, 53, 53, 21, 55,111,222, 4,207,243,232,221,187,183,172,105,147,198,245,191,157, 49,243, 26, 33,228, 67, 83,196,150,153,173,
+ 61, 22, 55,175,151,215, 88,191, 74, 45,204,159, 13,253,186, 21, 94, 51, 47, 38, 19, 0, 32,151,203,223,102, 11,169, 15,219,181,
+107, 39, 1,128,225,195,135,103,101,103,103,207, 7,176,131,150,225, 84, 53, 31,147,102,206,156,233, 86,181,106, 85,175, 29, 59,
+118, 32, 39, 39, 7, 0, 28,171, 86,173, 10, 63, 63, 63, 99, 72, 72, 8,124,125,125, 97, 97, 97,129,139, 23, 47,226,250,245,235,
+104,208,160,129,133, 68, 34,233, 95,154,208,106,221,169,245, 76, 89,247, 90, 45,252, 26, 12,129,185,165, 11, 54,238,220,141, 39,
+119,182,180,208,234, 31,205,156, 63,206,237, 19, 53,149, 13,117,247,177,152, 86,165, 97, 43,187, 26, 1, 31,193,171,193, 93,123,
+141,241,210,139, 89, 95, 84, 91, 32,146,107,182,204, 89, 18,151, 90,154,200, 2,176,184,119,239,222,253,118,237,218,101, 13, 0,
+ 15, 31, 62, 68, 98, 98, 34, 28, 28, 28, 32,151,203, 33, 22,139, 11,247, 39,173, 36,134,174, 89,179,166, 80,180,113, 28, 87,184,
+ 11,128, 82,169, 68,203,150, 45, 81,175, 94, 61, 28, 60,120,112, 40,128,105, 37,132,177,121,147, 38, 77,182,123,121,121,121, 20,
+ 61, 31, 20, 20,132,129, 3, 7, 2, 0, 90,181,106,213,174,111,223,190,180, 64, 16,198,199,199,231,220,186,117,171, 3,165,244,
+ 70, 73, 1, 98, 24, 70, 29, 27, 27,139,111,190,249, 6, 47, 95,190,252,130, 16, 18, 5, 64, 46,149, 74, 11,251,199,132, 16,223,
+128,128,128, 21, 19, 39, 78, 68,100,100, 36,194,195,195,111, 86,118, 40,149, 82,106,244,246,246,126,102, 48, 24, 26,114, 28, 7,
+181, 90,141, 94,189,122,201,109,109,109, 19, 89,150,125,156,146,146, 50, 56,127, 78,138,169,141,144, 28,192,210,209,163, 71,143,
+153, 50,101, 10,206,157, 59,135,195,135, 15,227,147, 79, 62,193,132, 9, 19, 96,110,110, 62,108,194,132, 9,215,144,183,161,121,
+113,180, 91,179,102, 13,140, 70,227,159,222, 13,185, 92,142,230,205,155,195,223,223, 31,135, 15, 31,110,135, 34,251,163, 86,176,
+145,244,234,221,187,183,148,231,121,228,230,230, 34, 36, 36,196, 92,161, 80,152,187,187,187,143, 0,240,175, 17, 90, 94, 94, 94,
+163,119,237,218,101, 94,116,244, 71, 38,147,161, 72, 57, 16,240, 15, 91,180,202,235, 97, 21, 66,167, 83,233, 69, 34,230,177,171,
+ 75,157, 61, 23, 47,124, 89, 56,116, 8, 48,143,117, 58,149, 30, 0,140, 60, 69,150,138,131, 66,198,224, 85, 66, 54,194,158,167,
+148,244,224, 55,150,104,138, 21,158,144, 53,126, 5, 74, 41,116,122, 35,180,153, 9,152, 31,172,194,163, 24, 13,116,185,233,208,
+233,243,166, 97,217,219,219,139, 78,157, 58, 49,241,236,217, 63,198,252,254,251,239,108,140,149, 85, 56, 50, 51,235,151,196,105,
+107, 91,221, 66,100,166,216,179,118,221, 44, 5,101,159, 35, 34, 58, 23, 53,220, 27,195,222,218, 3, 9, 41,185,184, 18,126, 28,
+143,159, 30, 67, 85, 23, 47, 76,248,170,179,252,135,159,118,236,182,177,169,234,153,158,254, 34,171,180,112,230, 99,200,250,147,
+ 17,224,210,158,195,152, 26, 9, 99,118,220,159, 5,158,131, 39, 26,180,113,131,131, 71,117,217,208, 9,243,134, 0, 24, 90, 18,
+ 39,165, 52,145,101,217,181, 12, 67,198, 16, 66, 80,167, 78,221,152,165, 75,151,234, 75,120,166,190, 78,157,186, 49, 44,203,184,
+231, 85,236,204, 26,158, 55, 38,150, 19,206, 55, 68,141, 84, 42,155,146,103,246,119,121, 29, 28, 28,172,239,215,175, 31,150, 44,
+ 89, 34,157, 58,117,234, 12,119,119,247,225,197,135,247,138,115,246, 38,196,211,173,122,245,142, 63, 94,185, 66,197, 6, 3, 73,
+187,121, 51, 43, 35, 62,158, 75,200,206,150,238,125,252,184,235,231,147, 39, 75, 61, 60, 60,112,249,216, 49,187,228,220, 92,154,
+161,213,170, 51, 50, 50, 40,199,113, 55, 75,137,251,116, 39, 39, 39,229,198,141, 27,125, 71,143, 30,125, 55, 46, 46,110,122,126,
+ 5, 49, 31,128, 63,128, 87, 69,206, 97,221,186,221,177, 35, 70,140,136, 72, 76, 76,156, 94, 86, 56,139, 32,192,209,193, 81,185,
+115,253,214, 7,182, 22, 10,198,193,221,149, 17, 91, 91,139, 56,169, 66,194, 3,234,170, 30,213,205, 0, 4,148,146,102,103,139,
+247,184, 21, 10,197,129, 35, 71,142, 56,138,197, 98, 24,141, 70, 56, 56, 56,224,229,203,151,200,200,200, 64,118,118, 54, 94, 60,
+126, 4,111, 15, 15,124, 55,109,170,203,184,169,211, 14, 16, 66, 26, 22,109,204, 74,220, 0,217,160,255,147,101,175,148,141,200,
+223,248, 54, 37,223,139,225,101,116,116, 52,204,205,205, 17, 24, 24,104,126,229,202,149, 75,165,137,172, 98,155, 0,247,111,214,
+172,153,197,206,157, 59,209,160, 65, 3, 88, 89, 89, 33, 36, 36, 4, 15, 31, 62,132, 94,175,103,114,114,114, 96, 97, 97,129, 5,
+ 11, 22,192,203,203, 11, 89, 89, 89,136,142,142,182, 19,139,197,246,165,113,134,156, 10,249, 33, 51,242,252,204, 4,114,178,243,
+198,157,187, 49, 98,208, 0, 56,211,231,151,172,170,147, 31, 58,118,111, 54,155,178, 30,221,204, 44,234,216,248, 4,118,135, 68,
+106,142,113, 83,230, 33, 34,244,168,141, 42,251,193, 23,196,248,218, 3,192,248,226,156,249, 22, 17,198,195,195,227,243,189,123,
+247, 90, 20, 25, 74, 41,220,243,176,232, 38,240,165,109,248,110, 74,122, 18, 66,240,242,229, 75, 56, 58, 58,194,220,220,188,112,
+ 3,241, 71,143, 30,225,250,245,235, 40,216,141,162, 20,206,193,103,207,158,245, 48, 51, 51, 43,126, 13, 82, 82, 82,192,113, 28,
+148, 74, 37,140, 70, 35,244,122, 61, 12, 6, 3, 52, 26,141,185,191,191,255, 88, 0, 55, 74,226,228,121,254,235,254,253,251, 55,
+187,113,227, 70,181,149, 43, 87, 66,167,211, 45, 78, 72, 72, 64,159, 62,125,192,243, 60,218,181,107,247, 1,165,244,201,140, 25,
+ 51, 0, 0, 19, 39, 78, 52,228,230,230,142,174, 76,220,243,227,239,223,183,111,223,106,231,206,157, 67,139, 22, 45,160,213,106,
+177,100,201, 18,203,117,235,214, 89,110,221,186,213, 97,202,148, 41,191, 1,232, 84, 22,103,126,126, 45,118,118,118, 30, 51,104,
+208, 32, 69,254, 30,166,216,178,101, 11,190,251,238,187, 93, 0,102,156, 56,113, 98,206,225,195,135,135,124,254,249,231,248,238,
+187,239, 38, 20, 8,173,146, 56, 95,188,120, 1, 7, 7, 7, 88, 90, 90,230, 85,150,122, 61,238,221,187,135, 51,103,206,160,102,
+205,154,166, 52,132,103,203, 16, 89,191,237,220,185,211,226,245,235,215,184,120,241, 34,188,189,189,161, 82,169,202,221, 27,246,
+ 93,111,254, 92, 30,167, 90,173,214, 68, 71, 71,155, 47, 92,184, 16, 46, 46, 46,240,242,242,130, 92, 46, 7, 33, 4, 6,131,161,
+212,237,213, 76, 9,103,235,214, 68,148, 18,107,211,195,202,218,230, 11, 74,169, 40, 51, 51,125,189, 30, 25,251, 34, 35,169,238,
+239,138,251,127,220,162, 85,159, 82,122,183,232,158,135, 5,157, 17, 17, 0, 4, 7, 7,211,160,160, 32, 82,240,237,230,134,172,
+148, 20,155, 8, 71,231,218,187, 29,157, 3,242,247,253, 98, 30,179,172, 77,132,147,147, 42, 11, 0,244, 28,197,213,199, 25,120,
+240, 44, 1, 15,159, 37,192, 76,102,154,241, 69,171,231,242,214,103, 82, 10, 77,206,255, 58,173,122, 85, 58,180,250,188,233, 30,
+ 58,173, 10,153,201,225,164, 95,175, 14,242, 49, 99, 70,193,197,197,205,161, 52, 62,189, 76, 62, 97,220,196,174,214,182,214, 98,
+ 28,187,114, 18, 31,212,236, 5,185, 76,140,212, 76, 13, 64,128,167,207,207, 0,188, 5, 66, 35,162,209, 36, 64,137, 78, 29,255,
+143,189,171, 14,143,234,120,187,103,214,119,147,141,187,144, 32, 33, 64,112,119, 66,144, 34, 1,138,123,209, 66,113, 47,193,138,
+147,180,184, 22, 43,238,197,138, 59, 65,130, 67, 4, 2, 1, 66, 60, 33,238,235,247,222,249,254,136, 52,132,200, 6,232,247,179,
+ 61,207,179,207,238,221,123,247,221,185, 51,115,103,206,156,119,230, 29, 15,249,233, 63,223,204, 6,176, 72,159,244, 50,177,143,
+ 33,114,239, 6, 33,171,131, 46,229, 13,184,140, 40,192,216, 30, 74, 34, 71,106, 66, 20, 94,223, 61,153,183,224,180, 28,176, 44,
+ 59,201,198,198, 38, 99,193,130, 5,237,171, 87,175,174,157, 56,113, 98, 96,100,100,228, 39,219,218, 84,174, 92,121,221,182,109,
+219,240,238,221,187,184,149, 43, 87,222, 78, 78, 78, 94, 88,193, 7,212,135, 16,178, 33,223, 21,151,114,230,204,153,198,254,254,
+254,211, 55,108,216, 96, 55,101,202, 20,241,148, 41, 83, 70, 3, 88, 94,150,187,208, 88, 34,233,180,242,206, 29,202,196,198,170,
+ 15,110,222, 44,222, 26, 16,176, 64,203,113,142,214,182,182,164, 85,243,230,185, 70, 60, 94, 74,106, 98, 34, 99, 83,173, 26, 63,
+226,218, 53, 43, 42,147,197, 95,186,116, 41, 43, 39, 39,167,212,173,115,248,124,190,162, 36,119, 97, 73,112,112,112,208,148, 52,
+135,171,140,202,157,197, 81,170, 53,175, 90,149,126,215,177,101,245,119,111,194,195,165,230,230,124,247,234, 85,106,190,124, 29,
+241,152,178,172,138, 16,146,165,143, 45, 62,159, 63,104,195,134, 13,245, 76, 77, 77,193,113, 28,204,204,204,144,156,156, 12,141,
+ 70,131,172,172, 44,104,178, 51,161,201,204, 68,112, 84, 4, 90,183,111,143, 1, 93,191,243, 56,112,230,175, 65, 0,142,150,101,
+215,177,126,163, 66, 37,107, 89,101,171,191,125, 65, 49, 25,133,164,235,215, 70,238, 16,201,229,232, 60,211,231,107, 26,232,231,
+ 98,177,248, 98,223,190,125,187,207,158, 61,155,151,144,144,112,153, 16,210,154, 82,250,170, 76, 69, 88, 46,119, 75, 73, 73, 65,
+118,118, 54,204,204,204,176, 97,195, 6,216,217,217, 65,161, 80,224,201,147, 39,212,217,217,153,220,186,117, 11,206,206,206, 72,
+ 73, 73,129, 86,171, 69,110,110,238, 71,141, 70, 83,170,187, 60,223, 61,216,109,102, 55,135, 75,111,158,237,111,235, 68, 62, 60,
+ 25, 56,203,243,221,155,224,215,209, 87,175,221, 95,206,168,164, 49, 25,177,215,231, 86,109,250,220,122,210,156,165,216,178,122,
+ 49,222, 60,186,147,102,231,146,181, 85, 70,212,251,154,119, 46, 61,189,185,185,185,170,215,175, 95,155, 4, 6, 6,130, 16, 2,
+ 51, 51, 51, 24, 25, 25,149, 72,182,190,160,177,228, 21,249, 31,228,230,230, 66, 36, 18,193,202,202, 10,187,119,239, 46,236,120,
+171, 84,169, 82,150,153, 29,157, 59,119, 30,228,226,226, 98, 82,244,203,166, 77,155, 98,252,248,241,248,253,247,223, 17, 16, 16,
+240,201,126,154, 31, 63,126, 76,208,233,116,251,202, 40,219, 12, 66, 72,215, 62,125,250, 60,187,123,247,174,233,238,221,187,193,
+ 48, 76,137,175, 93,187,118,225,225,195,135,139, 40,165,175,191,176,195,168,213,175, 95,191, 59,135, 14, 29, 50, 79, 78, 78, 70,
+ 74, 74, 10,114,114,114,144,155,155, 11,150,101, 81,179,102, 77,194, 48, 76,205,242,242,145,207,231,159,217,188,121,115,207, 31,
+127,252, 17, 2,129, 0, 26,141, 6,155, 55,111,198,220,185,115, 19, 1,140,164,148,106, 9, 33, 11,246,237,219, 55,162, 87,175,
+ 94,104,208,160,129, 71, 89, 54,115,114,114,144,147,147, 3,161, 80, 8,123,123,123,172, 88,177, 2, 26, 77, 94,179, 82,163, 70,
+141, 66,151, 39,128, 29, 53,106,212,232, 25, 22, 22,182,134, 82,250, 91, 41,237, 76, 31, 74,233, 56,150,101,179,251,246,237,107,
+117,228,200, 17,147,184,184, 56, 60,123,246, 12,139, 22, 45, 74,231, 56,142,229, 56,142, 40,149,202, 15,118,118,118,207, 36, 18,
+137, 76,161, 80,164,165,166,166,174,162,148, 94,254, 23,118,230, 68, 40, 20, 98,204,152, 49, 16, 8, 4,144,201,100, 80,169, 84,
+208,233,116,133,100, 30, 21,116, 75,187,187,155, 88, 9, 32,250,177, 70,141,118,211, 7, 76,235, 97,227,224,232, 4,115, 83, 9,
+ 66, 67, 95,181,190,121,227,218,230,218, 53,109,182,115, 26,221,246,215, 17, 25,255,248,102,247,197,185,200,127, 24,215,106, 4,
+224, 57,138,236,121,136,252, 85,136,165,180, 68,253, 89,107,235, 63, 83,226,226,196, 90,177,216, 40,172, 64,229,202, 35, 89,253,
+ 89,224, 8, 24,173, 46,191,161,160,249, 47, 61,137,150,142,197,187, 55, 33,184,123,245, 47, 88, 43,226,144,242,161, 33, 32,170,
+ 7,141, 50, 19, 42,141, 54,127,244,198, 34,240,217, 13,100,101,166,161,110,147, 30, 0,143,247,176, 52,123,102, 86,164, 71,171,
+198,245,249,239,162, 67,208,180, 70,127, 84,115,110,139,168,132, 44,100,228,168,145,158,165, 66,195,186, 62, 72, 78, 87, 34, 75,
+161,194,171,119, 7,224,228, 88,141, 71, 4,225, 29,245, 37, 90,234, 87,167,160,126,125, 22, 34,215,214, 16,215,236, 5,190,107,
+ 27, 68, 7,221, 66,224,165,245,136,125,121, 15,148, 99,225, 80,163,153,190, 15,201,230,203,151, 47, 55,107,221,186,181,160, 83,
+167, 78, 13, 28, 29, 29, 27,196,199,199, 7,230,171, 57, 13,186,119,239,222,192,198,198, 6, 27, 55,110, 84, 18, 66, 54,127, 97,
+103, 91,212,221,246,216,206,206,110,229,169, 83,167, 54,143, 31, 63, 30,182,182,182,245,202,250,109,178, 80,216, 96,228,170, 85,
+ 84,200,231,211,163, 91,182,136,150, 94,190,188,118,239,190,125,162, 14, 94, 94,132, 82,138, 23, 47, 94, 24,253,186,101,139,209,
+208,239,191,143,140, 74, 74, 98,252, 3, 2,180, 9,177,177,217, 73,185,185, 75,227,227,227, 63,254, 43,106,182, 78,167,123,240,
+ 33,226,131, 83,147,230, 13,109,158,135,126,120,217,165, 67,171, 86, 60, 30,143,247, 38, 60, 42,192,198,198,212,232,218,213,107,
+ 90,157, 78,247, 64, 31, 91, 18,137,164, 71,135, 14, 29, 4,233,233,233,112,116,116, 68,114,114, 50,226,226,226,242, 20,135,204,
+116,104, 51, 51,161,203,202, 0,155,155,131, 15, 79, 30,163, 97,181,170,146, 19,121,147,229,143,150, 83, 38, 37, 42, 85, 69,149,
+ 45,177,137, 9,196,114, 57, 72, 5,221,134,132,144,239,205,205,205,231,102,100,100, 92,164,148,174,208,106,181,147,231,206,157,
+219,116,211,166, 77,214, 43, 87,174, 52, 29, 55,110,220, 9, 66, 72, 67, 74,169,186,140, 14,236, 61,195, 48,214, 0,108,111,220,
+184, 1, 91, 91, 91,100,102,102, 22, 40, 45, 26,133, 66, 33, 77, 77, 77,133, 90,173,134, 70,163,129,169,169, 41,158, 62,125,154,
+206, 48,204, 95,229,165,207,212,141,172, 80,107, 67, 23, 90,121, 24,199,107, 25, 11,207,164, 52, 46,125,241,154,248,101, 0,214,
+118,115,115,219,165,229,238,124,120, 27,114,206, 34,226,201,237,180,248,183,185,213,118, 93, 8,207, 46, 35, 31, 41, 33,132, 35,
+132,208, 26, 53,106, 32, 57, 57, 25,124, 62, 31, 70, 70, 70,144,203,229,152, 55,111, 30, 54,111,222, 92, 97,162, 69, 8,145, 26,
+ 27, 27,175,226,241,120,131,204,204,204,108, 88,150,133,143,143, 15,122,246,236, 9,177, 88, 12,173, 86, 91,168,104, 22,168, 84,
+101, 41, 29,148,210, 23, 0, 76,139,253,135,151,181,181,245, 77,181, 90,141,240,240,112,156, 57,115,166, 61,165,212,191,130,207,
+118, 56, 33,164,107,155, 54,109,246, 55,110,220,216,141, 82,138,122,245,234, 97,240,224,193, 56,112,224, 0, 2, 3, 3,145,153,
+153,201, 93,187,118,109, 47,128, 53, 21,237,192,243,243,183,102,191,126,253,238, 29, 62,124,216, 34, 53, 53, 21, 74,165, 18,185,
+185,185, 56,113,226, 4, 90,183,110, 13,107,107,107, 28, 58,116,136,161,148,158, 43,139,100,241,120,188,221,219,183,111,239, 57,
+118,236, 88,108,221,186, 21, 71,143, 30, 69,175, 94,189, 48,104,208, 32, 36, 39, 39,219,173, 94,189,122, 4, 33,100, 55,128,197,
+131, 7, 15, 70, 78, 78, 14,158, 60,121, 18,170,231, 51,143,140,140, 12,100,100,100, 64, 38,147, 21,125,198, 8,128, 3,235,215,
+175, 31, 50,125,250,116, 84,171, 86,109,113,254,162,160,207, 86,137,114, 28,247, 83, 92, 92,156,133, 64, 32,176, 98, 24, 6, 49,
+ 49, 49,120,250,244, 41, 38, 77,154,148,150,150,150, 54,158, 82, 26, 69, 8, 89, 48,102,204,152, 21, 51,103,206, 44,172, 75, 51,
+103,206, 60, 79, 8,233,250,255,173,230,212,172,105, 81, 71,204,151, 76, 19,137,132, 86,233,233,233,133,109,135, 70,163,129, 90,
+173,254, 68,201, 18,137,132, 86,205, 26,185, 94, 80, 42,178,231,191, 12, 75, 47,117,131,244,218,213,205,235, 27, 25,155, 77,247,
+238, 58, 96,216,119, 93,123,243, 25,157, 14, 87,174,156,195, 31,127,108,131, 87,155, 26,168, 86,189, 30,166, 76,157,102,166,214,
+ 48, 62,215,174, 93,158,219,170, 89,213,203,217, 89, 25,243,202,178,249, 63,142, 11,249,228,234, 66,137,174,195,146, 25,100,127,
+214,201, 9,233,249, 15,142,181,133,133,197, 22,150,101,189,128, 31, 33,148,219,227,213,211, 71, 72, 75, 23, 66,173,100,193,209,
+ 60,178,165, 23,113, 81,107,112,231,202, 89,108, 88,191, 22,169,169,169,104,211,174, 61,114, 4,149,224, 82,201, 5, 42,165, 34,
+255,161, 1,180, 26, 29,108,236, 92,241,252,121,160, 46, 43, 55,183,212, 6, 73, 36,213,122,184,216,213,128, 90,219, 18, 82,177,
+ 24,153,217, 26,164,231,147,172, 67,127, 14,132, 90,161, 4,163,209,130,209,232, 96,227,210, 15,181,236, 58,128, 99,207,213,169,
+ 80,246,113, 44,180, 17,119,160,141,184, 3, 89,203,169,248,203,119, 72,177, 6, 80,191,125,119,147,146,146,146, 28, 29, 29,207,
+189,120,241,162,207,192,129, 3,113,235,214,173,113, 0, 38,228,187,111,198, 13, 28, 56, 16, 47, 94,188,192,203,151, 47,207, 37,
+ 37, 37,125,147,141, 87,197, 98,177, 82,173,206,235, 99,141,140,140,164,229, 92,235,212,180,111, 95, 94,230,243,231, 89,235,239,
+223, 95,188,107,247,110, 81,167,142, 29,137,142, 97,192,177, 44,170,187,187,147,239,190,251,206,248,192,241,227, 86,124,157,238,
+225,156,201,147,111,252, 62,124,120,246,163,156, 28,125, 39,154, 87,206,119, 25, 2, 64,229, 50,190,211, 27,106,181,122,211, 79,
+ 63,142,234,228,127,231, 94, 37,151, 74, 78,166, 87,174,249, 7, 74,100, 98, 94,181, 42,110,252,244,204, 52,193,178,197,243,101,
+106,181, 90, 95,210,234, 97,109,109,141,143, 31, 63,226,221,187,119, 80,171,213,208,233,116,224, 20,185,208,164,103, 64,147,153,
+ 6,162, 82, 66,194,178, 80,165, 36,162,114,181,170,192,223, 43, 18,203,117, 69,149, 68,180, 10,222,165,166,166, 16, 25,203,193,
+ 19, 10,245,222, 28,157, 16,210,184, 89,179,102,199, 79,158, 60, 41, 26, 61,122,116,115, 66,200,150,252, 14,162,227,162, 69,139,
+ 30,111,217,178, 69, 50,126,252,248,154,107,214,172, 25, 1, 96, 71,105,118, 84, 42,213,241, 11, 23, 46, 12,117,117,117,181, 13,
+ 14, 14,134, 74,165, 2,199,113,232,214,173, 27, 0, 20,214,153, 55,111,222, 40, 85, 42, 85, 82, 72, 72, 72, 86, 84, 84,148, 6,
+122,172, 18, 92,188, 49,254,193,204, 1,206,125,237,236,157, 30, 74,101,149,171,208,156,231,125,102, 14,112, 94,189,238, 68,172,
+234,210,251,247,217,139, 38, 85,243,203,205, 14,154,100,238,156,179,245,210,185,112,125, 86, 5,211,130,229,236, 86, 86, 86, 16,
+ 8, 4, 16, 10,133, 16,137, 68, 32,132, 96,234,212,169,216,185,115,103,153,174,195,226, 36,203,196,196,228,229,210,165, 75,157,
+199,143, 31, 47,146, 74,165, 72, 79, 79,199,161, 67,135, 48,102,204, 24,252,241,199, 31, 37,206,127, 41,207,165, 84,130, 90, 58,
+125,248,240,225,208,104, 52, 24, 60,120, 48,118,237,218, 53, 29,128,127, 69,235, 59,165,244, 33, 33,196, 61, 48, 48,208, 20, 64,
+175, 65,131, 6,237,235,215,175, 31,252,253,253,113,238,220,185,246, 0,194, 0, 40, 1,248,230,111,226,236, 91,214, 66,144,252,
+ 16, 14,219,108,108,108,122,213,169, 83, 39,176, 95,191,126,117, 15, 31, 62,108,158,148,148, 84,176,248, 1, 17, 17, 17,216,179,
+103, 79,194,238,221,187,179, 88,150,181,226,241,120, 23, 50, 50, 50,230,149,225, 46,220,189,126,253,250, 81,249,238, 64,156, 60,
+121,146,174, 93,187,150, 44, 90,180, 8,233,233,233,240,242,242,194,246,237,219,167,229,228,228, 52, 88,187,118,237,143, 3, 6,
+ 12,192,178,101,203,144,155,155,187,190,188,193, 74, 25,228,139, 0,104,181,126,253,122,215,233,211,167,227,228,201,147,104,220,
+184,177,236,195,135, 15,191, 3, 24, 91, 82,249, 81, 74,241,225,195, 7, 40, 20, 10,220,187,119, 15,139, 23, 47, 78, 47, 66,178,
+166, 77,152, 48, 97,197,180,105,211,176,106,213, 42, 26, 28, 28,156,212,175, 95, 63,187,157, 59,119,242,171, 87,175, 62, 13,121,
+155,174,255,191,160,150,187,149, 95,179,166,158,115, 29,156,170,227,208,225, 35, 72, 75, 75, 43,204,147,130,124,161,148, 34, 59,
+ 59, 27, 31, 63,126,132,153,169, 9, 86,175, 89,209,125,226,184, 81,149,144, 23, 6,227,243,134,206,205,114, 77,255,193, 99,103,
+ 13, 30, 58, 10,193,129,207,112, 96,223, 14,132, 4,191, 40,180,199,232,180, 8, 11,125,138,176,208,167,176,179,119,197,119,157,
+218,147, 33, 67,134,116, 27, 62,116,144, 13,128,127, 44,116,196,127,176,154,245, 89, 28,173,162,115,182, 4,229,201,117,249, 36,
+235,229,177, 99,199,172,218,180,105,195,103, 24, 6,151,175, 92,193,164, 9, 63, 96,196,112, 31,104, 97, 1, 70, 35, 2, 39,146,
+234,149, 24,165, 82, 1, 10,138,220,220, 92, 4, 4, 4,128,114, 12, 14,236, 92, 11, 74,185, 66,162, 5, 80,104,180, 90, 56,185,
+212,196,182, 93, 43, 25, 8,133,143, 75,179,151,149,202,103,117, 12, 69, 92, 82, 52,162, 19, 66, 96,102,226, 2,129,208, 5,169,
+ 25, 10, 8,120,246,208,169,222,128,205,151, 85, 21,185,177, 80,106,191,174,252,216,204,207,213, 83, 90,129, 70, 87,169, 84, 30,
+ 60,120,240, 96,247,117,235,214,137,189,189,189,107, 56, 58, 58,182, 2,128,254,253,251,215, 48, 53, 53,197,193,131, 7, 53, 74,
+165,242,224, 55, 84,124, 58, 52,107,214, 12,233,233,233,136,136,136, 8, 44,243,222, 52, 26, 43,185,173, 45, 63,233,214, 45, 93,
+114,122,122,165, 14, 29, 58, 16, 29,195,128, 71, 8,210, 50, 51, 17, 21, 25, 9,115,115,115,242,242,205, 27,249,230, 41, 83, 78,
+215,168, 91, 87, 80,176, 34, 81, 31,156, 59,119,206, 8,121,243,178,202,252,174,130,149, 59,151, 16, 50,106,242,228,201,167, 15,
+ 30, 60,100,150,152,148, 24, 38, 17,139, 25,185, 92,234, 56,124,216, 68, 65, 70, 70,198, 80, 74,105,142,190,246,210,211,211,241,
+225,195, 7,200,100, 50,136,132, 66,112, 74, 5,216,220, 28,168,210,146,193,215,106, 32,102, 89, 88, 26, 73, 80,201,206, 14, 46,
+ 54,214,122,217,124,119,243,106,225,196,247,162,238,194,213,205, 60, 32, 54,150, 67,108, 34,199,196,243,183,243, 71,163, 34, 96,
+209,114,125, 72,150,181,147,147,211, 95,135, 15, 31, 22, 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52,
+244,122, 72, 72, 72,143,252, 85,119,229,173, 22, 91,123,234,212,169,206,109,218,180, 97,170, 84,169, 98,156,152,152,232,146,154,
+154, 74, 18, 18, 62,157,235,124,241,226, 69,169, 82,169,204,229, 56,238, 52,242,226, 64,149, 27,191,104,230, 0,103,105,192,115,
+ 76,245,236, 82,185,158,169,117,125,164, 49,207,235, 61, 12, 76,152, 58,115,128,243,166,117, 39, 98, 85, 50,162,222, 71,216,152,
+ 74, 2,169,106,191,158,229, 77,173,173,173, 17, 26, 26,138,128,128, 0, 68, 69, 69,225,195,135, 15,159, 16,170,113,227,198,225,
+192,129, 3,122, 41, 90,198,198,198,171,150, 44, 89,226, 60,125,250,116, 81, 17, 82,132,201,147, 39, 35, 51, 51, 19,187,118,237,
+194,228,201,147, 43,220,241, 23, 43,171,170,157, 59,119,246,118,112,112, 64,106,106, 42,236,237,237,209,166, 77,155,158,132,144,
+ 42,148,210,136, 47,172,250, 19,187,116,233,178, 98,233,210,165,208,233,116, 24, 51,102, 12,222,190,125,123,252,237,219,183, 27,
+ 92, 92, 92,166,254,252,243,207,118,118,118,118, 24, 56,112,160, 49,128,190,165, 25,177,180,180,244,221,177, 99,199, 80,111,111,
+111,158, 86,171,109,119,243,230, 77, 68, 70, 70, 66,163,209,128, 97, 24,188,127,255, 30,147, 39, 79, 78, 72, 77, 77,245,164,148,
+190,215, 35, 93,163, 23, 44, 88, 48,106,234,212,169,248,245,215, 95,177,100,201,146,189,102,102,102,117, 27, 54,108,216,104,201,
+146, 37,152, 51,103, 14, 92, 93, 93, 97,101,101, 85,107,209,162, 69, 30, 51,103,206,196,166, 77,155,176,120,241,226,189, 0,246,
+124, 73, 70,112, 28, 71,252,252,252, 26,172, 95,191,222,161,128,100,241,120, 60, 28, 59,118, 12,207,159, 63,239, 89,202,111,182,
+219,219,219,143,115,112,112, 16, 95,187,118, 77,238,234,234, 10,134, 97,116,249, 36,107,179,139,139,203,164,247,239,223,195,219,
+219, 27,225,225,225, 7, 41,165, 35, 60, 61, 61,115,103,206,156,105, 36,147,201,204,254, 63, 59,112, 62,143,140, 92,181,108, 14,
+158, 60,127,131, 83,167, 68,120,242,228, 9,236,236,236, 32,145, 72, 64, 41,133, 90,173, 70,114,114, 50,116, 90, 53,234,213,169,
+138,253,187,253,144,148,148, 12,240, 72,169, 83,110, 8,143, 12, 27,245, 67, 31,220,189,119, 5,191,255,190, 3, 57, 57,185,165,
+ 12,190,165,168, 94,195, 3, 78,142,182,136,137,141, 1,225,193,250,159,188,215,255,112,215, 97,193,243,174, 95,120,135,162, 48,
+ 55, 55,223,112,244,232, 81, 43, 47, 47, 47,126,110,110, 46, 56,142, 67,219, 54,109, 48,117,250,116,156, 59,124, 24,238,205, 7,
+131,104,228, 96,140,244, 91,245,160, 82, 42, 80,187, 81, 43, 12, 24, 56, 8,209, 81, 81,232,210,163, 31, 84, 42, 69,225, 8,163,
+ 64,209,210,104,180,176,182,173,132,171, 87,175,242, 49,102, 76,169,115, 76, 88,173, 56, 40,236,189,170,117,134,242, 57, 2,158,
+ 28,128, 86,173, 69,189,122,139,160,229,172, 96,235, 60, 14, 58,221, 25,100, 37,223,204,115, 99, 88,121, 33, 54, 58, 26, 60,190,
+232,229,151,102, 34,151,155,252, 85,141,110, 70, 70, 70,166,163,163,227,159, 1, 1, 1,195,250,246,237,139,171, 87,175,254, 8,
+ 0,125,251,246, 69, 64, 64, 0, 62,124,248,240,103, 70, 70, 70,230,183, 40,112, 71, 71,199, 94, 94, 94, 94,131,155, 54,109,138,
+243,231,207,131, 82,122, 87,175, 7, 91, 40,164, 60, 30, 15, 28,199,129, 0, 72,205,200,192,219,183,111,145,154,146, 2,157, 78,
+135,220,156, 28,206,163, 70,141, 28,202,113, 38, 21, 73, 79,209, 21,134, 40, 97,213, 97,193,119, 95, 64,182,162,228,114,121,116,
+118, 78,142,141,133,185, 69,182, 88, 44,102,211, 51, 50, 50, 95,189, 12,214,232,217, 57, 20, 32, 52, 36, 36,164,110,124,124, 60,
+162,163,163,193,228,102,131,175,214,128,167, 86,160, 99,171,150,144,129, 66, 10, 14, 66, 78, 7, 33, 95,136,236,188,213,121,229,
+186, 59, 10,136,126, 81,101,139, 16,146,231, 46, 52, 54,134, 88,110,242,137,194,165, 79,125,146, 72, 36,135, 79,156, 56,225,224,
+228,228,132,101,203,150,193,217,217,185, 86,189,122,245, 20,109,219,182,149,217,217,217,161,118,237,218,104,213,170, 21, 46, 93,
+186, 4, 0,239,203,201, 63,134, 16,242,221,221,187,119,103,221,191,127,127, 0, 33,132,248,248,248,160,107,215,174,144, 74,165,
+ 80, 40, 20, 72, 79, 79,199,206,157, 59, 9,165,180, 81,126, 90, 93,165, 82,233, 17, 66, 72,172, 82,169, 28, 88,220,230,129,245,
+245, 29,147,210,184, 49,118,246, 78,125, 60,187, 84,174,215,161, 75, 39, 84,117,239,128, 14, 93,162, 1,192,207, 82, 16, 57,120,
+245,194,186,167,173, 43, 89,238,185,122,249,218,226, 54,158, 29, 22,248,140,183, 88,225,183, 35, 61, 75,143,134, 12, 28,199,125,
+ 18, 59,168,248,249, 17, 35, 70,224,216,177, 99,229,230, 35,143,199, 27, 52,126,252,120, 81,209,239, 10, 92,198, 61,122,244, 64,
+223,190,125, 63, 33, 90,214,214,214,176,183,183, 71,100,100, 36, 0,164,234, 89,175,166,142, 30, 61,154, 40,149, 74,140, 29, 59,
+ 22,187,118,237,194,224,193,131,137,191,191,255, 84, 0,211, 43, 90,223,121, 60,222,234,159,127,254,121,214,228,201,147,145,150,
+150,134,139, 23, 47,162, 91,183,110, 56,118,236,152,205,197,139, 23, 87,121,121,121,129,207,231,227,252,249,243, 96, 24,166,204,
+ 88, 95, 34,145,168,151,183,183, 55, 47, 38, 38, 6, 34,145, 8, 77,154, 52, 65,108,108, 44, 20, 10, 5,226,226,226, 48,109,218,
+180,143,169,169,169,237,245,125,142, 68, 34,209,244,169, 83,167,226,232,209,163,240,241,241,217, 7, 96,108,102,102,230,128,251,
+247,239, 31,253,254,251,239, 17, 23, 23,135,211,167, 79, 99,241,226,197,100,196,136, 17,216,186,117, 43,166, 77,155,182, 23,192,
+216, 50, 86, 72,102, 39, 37, 37,153,185,185,185, 33, 49, 49, 17, 57, 57, 57, 56,125,250,180,237,165, 75,151,170, 56, 57, 57,153,
+126,248,240,129, 93,190,124,185,120,250,244,233,216,176, 97, 3, 94,188,120,129, 3, 7, 14,160, 67,135, 14, 76,120,120,120,137,
+ 42, 89,126,200,134,211,150,150,150,215,140,141,141,145,157,157, 93,176,178,116,182,143,143,207,100, 95,223, 60,145, 61, 62, 62,
+ 30, 35, 71,142, 28, 78, 8,225,150, 46, 93,106, 36, 18,137,160, 82,169,114,255, 63, 59,110,142,229, 0,112,168, 82, 73,142, 43,
+231,118,227, 89, 96, 56,158, 5,134, 64, 44,201,155, 4,175, 84, 42,208,168, 94,117, 52,111,210, 12,241, 9,113, 56,120, 96, 55,
+ 44,173,157,202,108, 71, 40,165, 16, 9, 88,120,212,176,199,225, 3, 59,112,254,226, 13, 28, 56,120,164,112,206,155, 64, 32, 68,
+195, 70,205,209,164, 73, 27,132,127,120,143,221,187,127,135,141,109, 37,131,115,240, 11, 81,232, 58, 44,250, 94,140,249,119,104,
+211,166, 13, 63, 39, 39, 7, 42,149, 10, 31, 63,126, 68,100,100, 36,204, 45,204, 17, 30, 31,129,246, 70, 90,124,228,178, 16, 26,
+248,146, 37,124,225,139,114,165, 65,207,134,128,103, 67, 76, 26, 61,184,244, 74, 0, 10, 99, 83,235, 60,215, 13,195,188,195,166,
+ 77,165,142,156, 25, 86,119,253,202,181,155,205, 70,143,232, 37,188,122,115, 23,116, 26, 14, 74,157, 25,114, 85, 26,228,106,133,
+224,153,117, 3, 82,252,193, 23, 72,208,162, 65,117,156, 62,117, 73, 75, 25,221, 13,189, 51,200,174, 46,152,196,144, 34, 68,235,
+ 83,143,158,212,196, 82,111,215, 97, 97,199,203,178,199, 14, 29, 58,212,187,101,203,150, 70, 94, 94, 94,110,249, 29,167,246,208,
+161, 67, 10,150,101,143, 85,180, 16,139, 71,131,119,112,112,104, 36, 18,137, 6,247,234,213,171,209,168, 81,163,240,234,213, 43,
+ 28, 60,120, 48,172,122,245,234,101,198, 16,227,139,197,169, 57, 73, 73,230,242, 42, 85, 4, 22, 38, 38,241,151, 46, 94,116,237,
+212,185, 51,137,142,142, 70,106,106, 42, 84, 42, 21, 94, 4, 6, 82, 33,159, 31, 75, 76, 77,121,111,158, 63,231,241,197,226,212,
+ 10, 36, 53,178,156, 85,135,190, 95,170,110, 85,114,176,112, 91,236,243, 83, 85,149, 90, 85, 55, 43, 43,139, 17, 8,133, 66,103,
+123,243,168, 10,186, 33,207, 95,191,126,189,119,167, 78,157, 36, 97, 65, 47,192,100,102, 66,147,153, 14, 17,199,194,178, 81, 3,
+240,181,106, 64,163,131,147, 7,133, 42,195, 8,254,143,222,232,212,106,117,185, 65, 13, 11,136, 22,175, 24, 49, 16,203,229,144,
+152,152, 66, 34,151, 23, 39, 12,164,156,242, 54,234,213,171, 87,199, 22, 45, 90,128, 82,138,157, 59,119, 66,171,213,138,181, 90,
+ 45, 52, 26, 13,180, 90, 45,178,178,178,112,224,192, 1,108,219,182,237, 62,128,189,122,144, 85, 70, 40, 20, 78,102, 24,198, 86,
+ 34,145,104,109,108,108, 68,199,143, 31, 47, 12, 55,209,176, 97, 67, 24, 27, 27,171, 9, 33, 90, 0,176,183,183,215,237,219,183,
+ 79,240,253,247,223,139, 74,178, 87,179, 94,173, 57, 85, 25, 11, 79,169,172,114, 21, 83,235,250,168,234,222, 1, 0,208,185,199,
+104, 84,173,238,130,172,148,160, 42, 42,101,100, 31,145, 32,221,226,229,166,184, 87, 50,239,186,163,114,147,110,191, 69,201,203,
+251, 75,236, 40,120, 60, 94,169,238, 88,125, 72, 22, 33,132,103,102,102,102, 83, 48,207, 39,191, 3, 70, 66, 66, 2, 66, 67, 67,
+ 81,179,102, 77,164,165,165,193,201,201, 9, 26,141, 6, 77,155, 54,133, 82,169,196,250,245,235,113,239,222,189,251,200, 95, 25,
+ 89,206,127,200,220,221,221, 71, 54,106,212, 8, 23, 47, 94,196,147, 39, 79,226,174, 92,185,226,212,166, 77, 27, 84,169, 82,101,
+ 20, 33,100, 62,165,165,199,224, 43,201,213,215,174, 93,187, 41,147, 39, 79, 70, 72, 72, 8,126,250,233,167,212,152,152,152,211,
+199,143, 31, 31,187,120,241, 98, 94,151, 46, 93,144,144,144,128,213,171, 87,179,247,238,221, 91, 3, 96, 89, 57,249,248, 58, 38,
+ 38,198, 89,165, 82, 33, 45, 45, 13, 12,195, 64,161, 80,224,210,165, 75, 56,112,224, 64, 98, 62,201,122,167,111,250, 26, 52,104,
+ 80,155,199,227,225,232,209,163, 0,176,144, 82,202, 17, 66, 78,247,233,211, 39,110,249,242,229, 78,243,230,205,195,143, 63,254,
+ 8,173, 86,139, 95,127,253, 21,243,230,205,187,144, 79,178,202,106, 68,215,217,219,219,143,251,233,167,159,106,205,156, 57, 19,
+ 1, 1, 1,182, 79,159, 62,109,242,226,197, 11, 84,170, 84, 9,169,169,169, 2, 43, 43, 43,108,216,176, 1, 51,102,204, 56, 9,
+ 32,229,193,131, 7,131, 62,124,248,224, 75, 41, 93, 93, 78,126,110,119,114,114, 26, 71, 41,165, 10,133, 34,210,199,199,103,245,
+202,149, 43, 49, 99,198, 12,188,124,249, 18,153,153,153, 48, 49, 49, 33, 63,255,252,243,200,133, 11, 23, 98,204,152, 49, 52, 55,
+ 55,119,219,255,191, 91,138,133, 34, 61, 4,172,218, 2, 13,235,213, 68,195,186,149,113,229,230, 51, 0, 64,199,126,109,160,200,
+205,198,190,125, 59,241,238,221, 91, 8,132, 66,152, 91,218,235,163, 4, 66,147,245, 26, 25,218, 4,116,242,106,130,110, 93,218,
+ 99,239,254, 99, 96,116, 90,140, 29, 61, 20,233, 25, 25,216,191,127, 55,194, 63,188,135, 64, 40,132,149,245, 63, 31, 8,181, 44,
+ 46,242, 31, 79,180,244,112, 63,129,227, 56,196,197,197,225,233,211,167,136,136,136,128,145,145, 17,148, 12,203,253,126,253, 30,
+ 71,136, 40,150,163,244, 62,101, 10,163, 20,127,110,131,101,227,138, 68,172, 53,179,176,176, 16,171,213, 74, 48,140,174, 72,175,
+ 66, 0, 2,136, 4,128,131, 99, 85,196, 68,199, 80,149, 74,117,187,204, 17,148, 90,181,225,236,233, 19,147, 91,181,110, 99,221,
+173,227, 82,156, 62,179, 8,233, 89, 89, 80,105,133,200, 85,105,161, 80, 1,230,150, 53,208,180, 94,125,196,199,167, 34,232,137,
+127,142, 64,173,208,103,162,232,219,205, 11, 70,187,143,158, 52, 7, 50,215,214, 80,135,158, 6,151,147, 88,168,104, 73,229, 22,
+176,116,241, 64, 70,174, 26, 39,110, 60, 3, 0,189,183,122, 73, 76, 76, 84, 56, 58, 58, 30,154, 60,121,242,175,207,158, 61,117,
+ 6,128,103,207,158,197, 38, 36, 36,204, 77, 76, 76, 84, 84,164, 0,139, 68,131, 39, 70, 70, 70,207,170, 87,175, 30,239,237,237,
+109,214,167, 79, 31, 88, 91, 91,227,197,139, 23,240,245,245,125,173,213,106,231,220,190,125,187, 76, 87,143, 70,163,137,123,118,
+230,140,105,251, 31,126, 48,159,211,179,231,234,201,147, 39,111, 88,182,108,153,208,221,221,157,232,180, 90, 4, 7, 7,211,195,
+135, 14,233,182,205,155,183, 94,108,108, 44,120,124,246,172,144, 81,171,227,254,213,149,216,217,217,217,179,123, 87, 79,143, 53,
+235, 54, 65,165,204,193,163,128, 11, 72, 79, 79,198,142,157,167, 60,156,157,157, 61, 99, 99, 99,253,245, 37,192,123,246,236,153,
+213,188, 81,163, 70,213, 42, 85, 66,112, 84, 4,196, 28, 11, 17,195,128,175, 85,131,199,168, 80,169, 46, 5,225,153, 32,225, 99,
+ 22, 86, 30,253, 51, 68, 31, 98, 92,171,123, 47, 44,139,205, 4, 33, 4,107, 91,214,133,216, 68, 14,145,177, 28, 19,255,186, 89,
+ 72, 12,206, 47,155, 7,177, 92, 14,183,230,109,244,104,116,169,194,196,196,228,105,112,112,112,211,186,117,235, 98,214,172, 89,
+136,140,140, 4,199,113, 72, 76, 76, 84, 37, 36, 36,196, 37, 39, 39, 71, 34, 47,254,207, 46,170,231, 72,128, 97, 24,219,103,207,
+158, 1,128, 8, 0,110,220,184, 1, 71, 71, 71,152,153,153, 33, 43, 43, 11,115,230,204,145,252,242,203, 47, 0,128,167, 79,159,
+ 10,139, 18,148,226, 8,126, 22,186, 38, 35,155,166,211,156,231,125,210,152,231,245, 58,116,137, 65,231, 30,163,112,237,252, 94,
+220,188,114, 29,150,130,200, 8, 24,103, 95, 74,137, 72,201,138,205,117,223,238,209,120, 44, 63, 33,247,202,246,169,223, 91,240,
+ 29, 28,184, 19, 62,219, 50, 51,202, 74,171,187,187, 59,236,236,236, 10,231,104, 9, 4, 2,140, 25, 51, 6,148, 82,189, 72, 86,
+126, 62,114,166,166,166,201, 42,149,202, 78, 42,149,226,227,199,143,120,255,254, 61,194,195,195, 11, 67, 7,112, 28,167,155, 61,
+123,182,112,202,148, 41,248,253,247,223,113,251,246,237,251, 0,150, 82, 74,245, 29,172, 13, 29, 56,112,160,137, 70,163,193,145,
+ 35, 71, 24, 0, 61, 78,156, 56,241,180,105,211,166,130,174, 93,187,154,108,221,186,117, 40,128, 93, 21,168,238,198,166,166,166,
+ 34,173, 86,139,173, 91,183, 34, 38, 38,198,147, 82, 26, 74, 8,217, 62,112,224,192,109,117,235,214,173, 30, 18, 18,242, 54, 39,
+ 39,103, 34,165, 52, 72,143,182,104,116,147, 38, 77, 78,112, 28,231,218,169, 83, 39,227,117,235,214,153,190,121,243, 6,206,206,
+206,224, 56, 46,184,162, 91, 88,189,125,251, 54, 52, 33, 33,193,163,125,251,246,184,116,233,146, 31, 33,100, 21,128, 95, 39, 76,
+152,224, 20, 21, 21,133, 70,141, 26,193,210,210, 18,111,222,188,201, 78, 72, 72,216, 6, 96,126,121,177,190, 40,165, 31, 0,204,
+ 37,132,212,223,190,125,251, 96, 75, 75,203, 22, 47, 94,188,192,221,187,119,177,102,205, 26,252,242,203, 47,104,219,182, 45,102,
+205,154,149, 2, 96,112,190, 75, 91,175,184,121, 5,202, 22, 0, 52,105,210, 36,222,215,215, 23, 99,199,142,165,127,252,241,199,
+198, 67,135, 14, 77, 31, 58,116,104, 97, 31, 56,114,228, 72,122,240,224,193,145,101, 45, 4,248,135,160,211,106, 53, 48,181,172,
+138,156,140,104, 36,199, 4,192,200,196, 30, 93, 58, 52,128, 66,169,193,185,179, 39, 17, 20, 28, 8, 30,143, 7, 59,251, 74, 48,
+183,176, 70, 88,216, 91, 0,120, 85,182, 77, 45, 76, 44, 42, 35, 39, 51, 6,154,164,103,144,201,109, 49,234,135, 62, 80, 40,181,
+ 56,117,250, 36, 66, 66,130,192,231,243, 97,239, 80, 9,102,230,121, 54, 9, 45,211,166, 1, 40, 57,158, 86,185, 68,139,207,231,
+223,186,124,249,114,255,230,205,155, 11,222,189,123,135,119,239,242, 6, 55,233,233,233, 12, 1,251,103, 98,208,153, 33,101,144,
+128, 78, 5,171, 51,138,238, 93, 40, 55, 49,137,123,243, 58,212, 46, 61, 45, 17,129,207,239,225, 93, 88, 48, 34,194, 67,161,213,
+170,192,231,241,192,227,243, 80,185,106, 29,220,187, 31,160, 81, 49, 76, 64,105, 54, 1, 32, 45,237,125,182,220,174,198,160, 21,
+203,230,159,159, 49,103,137,108, 64,255,223, 17,244,230, 21,114, 24,123, 80, 10,216, 91, 25,163, 97,181,159, 17, 23,159,140,163,
+123,183, 42, 56,173,118, 88,209, 24, 90, 37,217, 4, 0,187, 20,212,222,182,115,239,152, 93, 7, 14, 47,153, 51,101,188,221,247,
+125,135, 65,156,246, 10,186,248,103,168,218,180, 27,136,196, 28, 23,175,222,132,255,211, 87,137, 28, 75,151,216,165,226,143,242,
+108, 22,115, 33, 62,248,248, 49,193,185, 72, 20,120,103,137, 68,250,160, 28, 82,213,169, 88, 92,161, 79, 34,206,243,249,188,198,
+ 43, 86,172,208,217,217,217,105, 67, 66, 66,240,251,239,191,115,207,158, 61,187,202,227,241, 54,199,199,199,171,202,179,105,163,
+211, 5, 30,246,241,169,221,172,111, 95, 58,100,202, 20, 5, 36,146,169,171,215,174,245, 73, 78, 79,119,164, 28, 7, 27, 75,203,
+216,213,243,230,249,246, 31, 56, 48,253,229,189,123,178,128, 51,103,100, 98,134,121, 86, 94, 58,191,145,223,187, 84,155,177,177,
+177,254,238,110, 46,216,183,107, 29,180, 90, 53, 18,226,242,132,172,148,212, 76,148, 69,178,138,219,204, 95,117,213,119,225, 47,
+191, 60, 92, 56, 99,186,125,187,142,157, 16, 29,248, 2,218,180,100, 16, 29, 3, 33, 17, 32, 55,201, 8, 73,137, 57,152,123,240,
+120, 82,142, 66,209,183,120, 39, 81, 90, 58, 11, 20, 43,137,169, 9, 68,198,114,136,229, 38,159,168, 88, 82, 83, 83,136,141,229,
+ 16,136,197, 37,169, 52,159,217,204,201,201,233,215,191,127,255,160,199,143, 31, 91,140, 29, 59, 22,173, 90,181,122,174, 84, 42,
+189, 40,165,217, 95,154,159, 2,129, 32,169,113,227,198,182, 66,161,144, 25, 51,102,140, 32, 37, 37,165, 48,178,122, 78, 78, 14,
+ 46, 93,186,132,154, 53,243, 86,245,191,124,249, 18,117,234,212, 41,213,230,216,159,131,227, 0, 44,155, 57,192,121,245,195,192,
+132,169, 0,252,170, 86,175,132,155, 87,174,227,238,205, 0,159, 22,117,185, 77,221,135, 53, 93,110,228, 53,112,142, 71,227,177,
+124,185,169, 3,246,159, 58,201, 15,125,182,123,165, 66, 17,236, 6, 96,118,105,233, 36,132,128, 82,250, 89, 40, 7, 62,159,143,
+ 67,135, 14, 85,244,222,143,239,218,181,107,194, 79, 63,253, 36, 74, 72, 72,192,235,215,175,145,155,155, 11,169, 84,138, 43, 87,
+174, 48, 0,182, 30, 58,116,232,202,161, 67,135,186, 34, 47, 46,206,141,138,212, 79, 99, 99,227,201, 93,186,116,193,235,215,175,
+241,228,201,147,147,148,210, 32, 66,200,201,119,239,222, 13,106,219,182, 45,246,238,221, 59,185, 52,162, 85,154, 77,142,227,138,
+198, 76, 74,203,175,187,129, 0, 90, 84,180,220,243, 39,240,182, 6, 0, 43, 43,171, 24, 59, 59, 59,211,192,192, 64,184,184,184,
+ 64,171,213, 54,175,104, 93,202,204,204, 92,183,121,243,230, 63, 70,143, 30,141,229,203,151, 15, 59,126,252,248,176,238,221,187,
+195,219,219, 27,123,246,236, 65, 80, 80,144,159, 62,219,138,149,116,239,249,196, 49,168,118,237,218,147, 42, 85,170,132, 53,107,
+214, 32, 56, 56,216,119,217,178,101,243,130,130,130, 80,179,102, 77,201,171, 87,175,152, 47,105, 67, 0,192,212,212,212, 84,167,
+211,225,204,153, 51,143, 40,165, 51, 8, 33,182, 27, 54,108, 24, 44,151,203,145,150,150,166, 12, 9, 9, 25, 74, 41, 61,251,255,
+221,214, 81, 66, 22,140,253,113,234,246, 31,199, 14,149, 54,105,220, 16,138,172, 88, 40,115, 18,161,200,254,136,205,187,174,130,
+ 16, 30,108,108, 28, 96,107,239,140,168,168,104,220,191,112, 81,147,171, 80,110, 16,235, 56,191,178,109, 78,201,179,217, 40,207,
+166, 34, 55, 9,202,156,164, 66,155,182,182,142,249, 54,163,112, 47,224,162, 74,153,155,187, 78, 67,201,111,255,228,189,255, 39,
+163,194,123, 29, 22, 69,122,122,250,180,241,227,199,123,205,157, 59,215,138, 97, 24,190,165,165, 37,162,162,162,152, 63,255,252,
+ 51, 45, 39, 39,103,218,151, 36, 72, 32, 20, 6,185,215,168,233,245,253,247,223, 51,189,122,245, 20, 13, 31,221, 85, 96, 99,107,
+139,204,140, 84,132,189,126,129, 55,175,158,193,189,102, 3, 44, 94,182, 30, 48, 55, 47,119, 35,201,156,196,176, 91,114,187, 26,
+ 61,150, 46,156,125,172,181,231,119,166, 53,235, 52, 16, 53,116, 51,131, 86,199, 32, 54, 54, 22,103,207, 4,106, 67,158,222,205,
+226, 24,205,160,220,100,253,182,224,185,157, 55, 42,218, 81,207,142, 28, 90,181,122,243,172,173, 59,246,205,153, 59,117,172,113,
+219, 54,157, 17,124,125, 47, 78,158, 63,150,171, 82,107, 86,139,248, 88, 27,156, 66, 21, 21,205, 3,149, 74,165, 45,190, 32, 74,
+165, 82,105,191,182,176,247,236,217,131,196,196, 68, 77,100,100,228,101,134, 97,142,151,182,217,115, 73,216, 68,169,166, 47, 33,
+215, 23,182,105,211,117,225,149, 43,210,145, 63,255,172, 25, 54,124,248,108,168,213, 90,136,197, 84, 96,108,204,131, 68, 34,124,
+121,239,158,108,227,132, 9,150, 68,163,185,182,183,140,176, 1, 37,224,155,175, 58, 44,162,104, 97,228,216, 25, 80, 22, 81,180,
+ 30, 60, 9, 67, 69, 20,173,252, 7, 35,154, 16,210, 98,234,130,133,167, 6,117,233,232, 81,215,181,178,196,166, 74,101,200,237,
+237,145,154,156,140,123, 79,222,232,150, 29, 59, 21,146, 79,178,244,138, 43,195,113, 92,222, 36,119, 0, 29,167,205, 5,225,243,
+129,252, 48, 14, 5, 43,135,170, 52,109, 5, 34, 16,128,165, 28,212,106, 53,213, 35,157,177,132,144,126,195,134, 13,187,113,254,
+252,121, 94,151, 46, 93, 26,158, 62,125,154,251,154,186,163,211,233,156,243, 9, 87,150,145,145,145, 96,212,168, 81,208,233,116,
+ 80, 40, 20,200,204,204, 68,104,104,168,122,192,128, 1,146,124, 2,161, 27, 52,104, 80,185,237,199,186, 19,177,170,153, 3,156,
+ 55, 89, 10, 34, 7,103,165, 4, 85,177, 20, 68, 70,180,168,203,109, 90,119, 34, 86,181,116,134,249,138,148, 72,255,176,132,220,
+ 43,219,247,159, 58,201, 31,209,167, 31,235, 44,127,235, 35,181,165,127,118,232, 89,110,163,246, 89,112, 82,125, 72, 86,113,100,
+103,103,207, 91,180,104,145,119,122,122,186,115,215,174, 93, 69, 30, 30, 30,120,248,240, 33,206,159, 63,207, 60,120,240, 32, 38,
+ 55, 55,119, 62,165, 84, 5,224,234,151,228,105,141, 26, 53,170, 8, 4,130, 2, 87,218,150,252,175,183,156, 62,125,122,208,216,
+177, 99, 81,185,114,229,218,132, 16, 9,173,192,115, 68, 41, 45,244, 50,124,227,142, 34,124,227,198,141, 78,246,246,246,228,210,
+165, 75, 12,159,207,175,176,114, 67, 41,221, 67, 8,105,174,211,233,126, 28, 55,110, 28, 60, 61, 61,193, 48, 12, 14, 30, 60,136,
+221,187,119,251, 85,100,239,214,210, 16, 22, 22,246, 44, 38, 38,166,221,236,217,179,177,102,205,154,121,179,103,207, 70, 76, 76,
+ 12,194,194,194, 94,124,141,221,172,172, 44,101,116,116,180, 81,203,150, 45,155,184,184,184,132,140, 28, 57,178,206,216,177, 99,
+225,231,231, 71,111,223,190,221,159, 82,122,233, 95,209,129,191,126,155,122,160, 94, 53,187, 43,203, 86,172,251,197,173, 90,149,
+159,198,140, 26,200,175,225, 94, 7,185,153,177,176,178,182,131,115,165,170, 72, 78, 74,193,229,203,151,216,148,148,140, 61, 44,
+143, 44,125,251, 54, 53,254,107,108, 58, 57, 87, 69, 82, 82, 18, 46, 94,188,200,102,164,103,237,132,142,183,236, 85,100,122, 34,
+ 12, 40, 87,201, 42,105, 50, 60,209,103,226,109,254,202,195,141,121,225, 29,242, 84,174,244,244,244,105,148,210, 20,125,153, 57,
+ 41, 30, 68,109,192, 0, 17, 46, 92,168, 15,157,174,133,185,137, 73, 71,202,113, 77, 27, 52,104, 32, 31, 56,112, 32,215,166, 77,
+ 43,177,169,169, 41,169, 93,187,110, 86,102, 70,134, 37, 0, 80,128, 45,143, 69, 23,108, 42, 45,224, 11, 59,177,172,182, 94, 94,
+ 90,203,223, 84, 90, 31,102, 94,205,142,216, 8, 56, 44,230, 17, 50,138,163,116, 47,195,195,210,240, 68,154,252,165,163,167, 98,
+110,191,130, 45,103,230, 85,116,148, 87,212,117,200,227,241, 15, 56, 56, 56,204,143,141,141, 77,162,148,178, 95,170,108, 20,108,
+193,211, 99,250,116, 93,227,239,190, 99, 44, 43, 85,226, 40,165,108,196,179,103,228,193,217,179,194, 7,103,207, 74,117,106,245,
+173, 19,148,134,235, 99,211,209,209,209,247,220,185,115,122,207,189,234,217,179,231,171,130,121, 91,250,230,167, 91, 53,231, 43,
+213,170, 56,125, 87,173, 74,158,123, 58, 60, 34, 30,225, 17,113, 87,223,135,199,118,249,146, 50, 42,186,169, 52,201, 15,225, 64,
+245,216, 84,186,184, 77,107,107,235,167, 2,129,192,185, 34, 15, 44,203,178,241,201,201,201,141,244, 76,231,144, 42, 85,170,248,
+ 69, 69, 69,157, 98, 89,118,198,183, 80, 8, 9, 33,173,248,124,254, 69,150,101,101,197, 21,175, 2, 50, 70, 8,113,149, 72, 36,
+159, 76,134, 47,203,230,234,133,117,127,105,217,182,109,159, 7,119,239,158,158,179, 34,228,147,121, 67, 83,251, 88,142, 30, 50,
+105,218,111, 71,182,110,252,121,211,233,180, 61,229,170,205,118,118,183, 1,184, 23, 16, 46, 61,242,178, 73, 57,202,176,212,196,
+196,196, 23,192, 32,142,227,172, 9, 33, 41,148,210,163, 69, 72,214, 23,231, 39,159,207,247,171, 85,171,214,180, 55,111,222, 28,
+ 97, 24,102, 76,145,235,215,184,185,185, 77,138,140,140,220,162,211,233,230, 84,224,121, 55,109,219,182,109,250,198,141, 27,121,
+ 51,102,204,128,191,191,191, 37,165, 52,253, 27,149,187,189,133,133,197, 31, 44,203,122, 80, 74,207,101,103,103,207,163,148,230,
+ 86,212,102,126,136,135, 65, 78, 78, 78,115,220,221,221,221,223,190,125, 27, 20, 23, 23,183,186,184, 26,244, 21,233,244,238,221,
+187,247,185, 13, 27, 54,144, 74,149, 42, 33, 38, 38, 6,211,167, 79,167,103,206,156,233, 73, 41,189,240,165,109, 50, 33,100,193,
+132, 9, 19, 86, 12, 31, 62,188,144,208,250,250,250,210, 11, 23, 46,140,164,148, 30,248,210,118,254, 91,170,247,181,171,217, 84,
+163,124,118,101,131,186, 30,253,127, 24,214,135, 60,120,242, 22, 15, 31, 4, 32, 54, 62,254, 52,199,227,205, 15, 11, 75,121,251,
+181, 54, 3,158,132,225, 97, 64, 0, 77,136, 79, 56, 1,202, 95,248, 42, 60, 57,252,255,235,222,255, 27, 84,173,146, 92,135,228,
+ 11,183,194,170,112,133, 33,250, 68,171,117,116,116, 68,106,106,115,169, 64,208, 70, 34,145,120,241,248,252, 91,105,201,201,211,
+245, 37, 90,255, 68,197,254,172, 67,119, 35,226,210,182, 36,248, 18,155,197, 39,178,127,137,205,138,216,208,215,102,105,155, 74,
+115,106,117,188, 21,195, 60,221, 68, 75,207,131,226, 54,157,157,157,127,228, 56,174,138,190,105,226,241,120, 17,177,177,177,187,
+190, 36, 63,221,221,221,233,187,119,239, 64, 41, 37,223,178,220,255,137,186,244,191,100,243,192,250,250,142, 53,235,213,154, 19,
+252, 44,116, 77,190, 91,177, 16, 75,167, 90,154,180,233,208,126,209,189,155,183,151, 47,222,148,150,253,175, 76, 39, 33,132, 71,
+ 43,186,186,229, 11,109, 22, 4, 9,173,168, 77,145, 72,180,189, 89,179,102, 63, 62,124,248,240, 15,134, 97,198,253, 47,214, 79,
+ 66,136, 55,159,207,159, 93,163, 70,141,134, 97, 97, 97, 47, 88,150, 93, 83, 22,201,170,192,224,119,126,149, 42, 85, 38,138, 68,
+ 34, 73, 78, 78, 78,122,124,124,252, 34, 74,233,241,127,183,252,172,237,110,213,132,210,194,160,219, 43, 67,223,165, 62,254,102,
+ 54, 41,199,114,148,191,226, 77,120,202,243,255,239,114,255, 79, 39, 89,165,169, 92,130,255,175, 68, 20, 16,165, 50, 17, 31, 31,
+ 3, 32, 6,192,137,127,215,204,212,135,100, 85, 80,110, 76,252,119,176, 81, 28,249, 68, 42,224, 91,216, 42, 78,154,254, 73,188,
+125,251,150, 24, 30,249,127, 63,252, 48, 35, 40, 30,192,244, 38, 94,159,159,203, 39, 87,115,188,122,253,235,211,249, 37, 36,235,
+ 75,109,126,233,134,207, 90,173,246, 39, 66,200,204,138,172, 86,252,111, 67, 62,169,186,240, 15,216, 93, 5, 96,213,191,251,253,
+191,122,155,250, 20, 64,207,127,119,155,255, 99,117,178, 98,155, 74, 27, 96,128, 1, 6, 24,240,111,221,168, 43, 13,185, 96,128,
+ 1,255, 94, 40,170,106, 21, 37, 94, 4, 64,167, 82, 30,228,235, 21, 48,222,233, 11, 26,138,235, 6,155, 6,155, 6,155, 6,155,
+ 6,155, 6,155, 6,155,255, 91, 54,255, 91, 73,214, 39,228,170,232,113,193,170,167,127,226, 5,160,147,193,166,193,166,193,166,
+193,166,193,166,193,166,193,166,193,230,127,243, 11,192,184,210,142, 13,174, 67, 3,254,113,108,238, 75,156, 0, 96,202, 41, 26,
+247, 79, 92,111,128, 1, 6, 24, 96,128, 1,255, 74, 80, 74,119,150,230, 58,252,151, 19, 45, 66,136, 35,242, 2,237,185, 1,120,
+ 3,224,110, 69,150, 43,151, 96,207, 26,192, 64, 66,200,128,252,155, 61, 1,224,120,121,161, 40, 10, 32,147,201, 18, 85, 42,149,
+ 45, 0, 72,165,210, 36,149, 74, 85,116, 47, 3,130,207,183, 71,161,121,127, 83,250,196,214,170, 85,171, 38,170,213,106, 91, 61,
+254, 62,147, 82, 26,196,227,241,130,229,114,249,205, 55,111,222,156,175,200,189,119,232,208, 97, 36,159,207, 95, 9, 0, 44,203,
+ 46,184,121,243,230,190,127,176,220,154, 87,114,180,223,171,213,105,153,196,228,180, 69,165, 45,221,222,214,147,248, 10, 8,230,
+228,127, 94, 61,241, 92,217, 33, 44, 42,122,125, 25,233,107, 34, 20, 10, 39,219,217,217,117,139,141,141,125, 10,224,103, 74,105,
+185, 81,141, 93, 92, 92,126, 16, 8, 4,195, 88,150,173,198,231,243,195, 25,134, 57, 20, 29, 29,125,192,208,140, 24, 96,128, 1,
+ 6, 24, 80, 30,217, 42,233,251, 10, 17,173, 90,214,196,158, 2,131, 65,208, 25, 20,215, 8,112,244,117, 10,253,168,239,239,189,
+107, 17,157,142,201,251, 79, 17, 15,236,165,247,188,157,222,222,222,206, 83,166, 76, 65,171, 86,173,240,240,225,195,150,123,246,
+236, 25,205,231,243,131, 56,142,187, 5,224, 33,165,122,133, 82, 48, 6,240, 61,128,161,221,186,117,235,180,114,229, 74,126,157,
+ 58,117,160, 84, 42,113,251,246,237, 54,171, 87,175,222, 64, 8,185, 14,224, 48,128,179,101,197,134, 81,169, 84,182, 5,156,137,
+ 16, 98,219,191,127,255,199, 69,201, 85,254,254,106,132, 82,250,128, 16, 18,192,178,236,195, 19, 39, 78,196,212, 34,164,249,248,
+ 42,162, 63,167,125,208,124, 22, 51, 73,173, 86,219,158,249,109, 21, 4, 18, 9,212,217, 89,104, 57,234,239, 85,160,215,126,153,
+ 3,194, 49,224,131,166,123,173,216, 16, 4, 32, 56, 62, 62, 62,200,211,211, 51,162,162,133,204,231,243, 87, 94,190,124,217,129,
+ 82,138, 46, 93,186,172, 4,240,143, 16, 45, 66,136,164, 69,147, 6,183,206,157, 60, 34,205, 73, 75, 68,215,239, 7, 29, 34,132,
+140,164,148,158,252,132, 52,117, 39,118, 68,128, 57, 19, 86, 29,230, 3,192,182,249, 67,127,222,208,133,108,154,126,133,126, 36,
+132,120, 1,133, 91, 54,253, 70, 41,189,181,173, 59,177, 3, 31,115, 39,172, 58, 76, 0,224,247,249, 67,231,108,235, 78, 54, 78,
+188, 88,177, 85,149,132,144,137, 35, 71,142,220,180,114,229, 74,190,131,131, 3,226,226,226,186,214,174, 93,187, 6, 33,164,118,
+ 89,147,136,171, 84,169,114,172,125,231,222, 85,251, 14, 24,108,100, 99,109,129,248,132, 20,211, 99, 71,254, 24, 95,165, 74,149,
+110, 17, 17, 17,131, 12,205,136, 1, 6, 24, 96,128, 1,165,244, 59, 95, 30,222,161,177, 35,145,229,106,209, 91,192, 39, 63,180,
+109, 94,167,227,144,238,109,121,181, 61,170,227,213,203,208,239,206,222,124,180,186,182, 29,239, 6,195,210, 3,198, 34,156,121,
+ 22, 95,246, 74, 24, 29, 3,193,213, 51,135, 1, 0, 19, 71, 15,229, 63,126,252,184,122,227,198,141, 11, 3, 2,118,236,216, 17,
+ 29, 59,118, 36,219,182,109,107,112,245,234,213, 6,187,119,239,214, 18, 66,246,150, 19,132,110,178,155,155,219,234, 77,155, 54,
+ 73, 60, 61, 61, 33,145, 72, 10,207,201,229,114,244,236,217, 19, 61,123,246,228,199,199,199,119, 57,119,238, 92,151,223,126,251,
+ 77, 67, 8,153, 77, 41,221,162, 79,230, 45, 90,180,168, 73, 9, 95, 95, 38,132,188,103, 24,230, 69,253,250,245, 99,106, 18, 82,
+253,167,238,173,174, 77,108,237,110, 92,154, 29,129, 88,140,253, 35,243,250,234,162, 68, 43,226,230, 37,200, 77, 77, 82,141, 76,
+ 76,130, 0, 4, 3, 8,162,148, 6,191,127,255, 62,212,131,144, 6, 45, 44,120,123,119,167,177,245, 43, 64,182, 16, 19, 19, 3,
+ 51, 51, 51, 89,251,246,237, 19, 8, 33, 75,110,221,186,181,243, 27,215,169,230, 75,230, 76, 20,165, 71, 6,225,227,235, 7,152,
+ 57,160,141,209,244,205,127, 45, 7,112,178,236,138,200,227,253, 22,192,249, 76,207,219,140,119, 81,106,106,170, 39, 0, 88, 89,
+ 89,137, 1,220, 90,255, 8,221,103,180, 38,228, 43, 42,186,136,207,231,111,221,191,127,255,216, 31,126,248, 33,111,235,136,123,
+247, 32,151,203,177,108,217,178,202,179,102,205,242, 69, 41, 27, 1,187,184,184,252,208,190,115,239,170, 27,215, 44,175,157,157,
+150,169,222,177,245,248, 19,199,186, 53,121, 19, 38,207, 50,217,168, 85,219,187,184,184,252, 96, 80,182, 12, 48,192, 0, 3, 12,
+168,136,154, 85, 46,209,170,105, 67,246,181,109,228, 62,112,136,119, 27, 73,189,186,117, 32,146,252, 29, 40,186,113,147, 38,104,
+220,164, 9,207, 39, 39,187,243,227, 39,207, 58,255,121,245,161,186,166, 13, 57,254, 38,153,142,212, 55, 97, 5,155,210,174,252,
+222,174, 67,110, 70,146, 20, 0,140,205,109, 85,243,207,124,188,217,186,117,107, 56, 59, 59,139,110,220,184, 49, 6,101,199, 75,
+153,255,230,205, 27, 9,159, 95,118, 60, 84, 71, 71, 71,244,239,223, 31, 53,107,214, 20,183,111,223,126, 62,254,222, 14,227, 19,
+ 72,165,210, 36, 66,136, 45, 0, 88, 90, 90,178, 75,150, 44,121, 65,105,161,103,144, 82, 74, 31,240,120,188,135, 28,199, 61, 58,
+123,246,108,108, 29, 66,108,123, 52,174,121,119,226,240,254, 70,244,207, 13,165,146, 4, 85, 86, 86,137,223, 27,201,141,147,101,
+198,198, 65, 18, 35,105, 48,128, 32, 0,193, 78, 78, 78,161,117, 8,113,110, 81,179,202,213,109, 51,134,154,232,147,151,141, 27,
+ 55,174,225,229,229, 37,101, 89, 22,185,185,185,248,253,247,223,205,100, 50,153, 89,183,110,221, 22, 3, 40,172, 0,181, 9,169,
+215,207,145, 63,110, 73, 28, 51,233, 11,136,140,121,219,150, 77, 34, 55,251, 45, 54,109,210,162, 45,222,222, 58,136,180,180,108,
+100,102,228,128,227,184,207,118, 24,158,120,145, 38,110,235, 73, 86,111,155, 55,116, 46,225,241, 72,131, 62, 63,163,151,125,230,
+ 84, 66,200, 75, 0, 66,177, 88, 92, 88, 15, 9, 33,142,117,235,214, 93, 93,253,187,182,248,125,193,112, 80,142,163, 0, 86,235,
+171,102, 17, 66,108, 77, 76, 76,206, 94,189,122,181,121,211,166, 77,241,240,225, 67,124,248,240, 1, 19, 39, 78,212, 76,154, 52,
+ 73, 52, 98,196, 8, 50,115,230,204, 41,132,144, 63, 41,165,247, 63,123, 16, 4,130, 97,223,247, 29, 36,206,201,200, 82,105,212,
+ 90,141,165,181, 57,167,206, 85, 41, 82,210,179, 84,131,134,254,168,121,249,252,209, 48, 0,159, 17,173,175,201, 79, 3, 12, 48,
+192, 0, 3,244, 70, 83, 0, 54, 0,146, 1, 60, 41,118,140,252,207, 40,225, 56, 5,121, 94, 41,171, 34,182, 82,144, 55,237,199,
+ 6,121, 49, 62, 31, 3, 72,255,154,196,149, 22, 21, 30,200,143, 12,159, 31,160,184, 32, 80, 49, 41, 66,180,232,155,100, 10, 38,
+ 45, 28,108,234,123,176,217,159,111,159, 68,164,230,200, 84,178,136, 9, 15,197,200,233,203,240, 38,185,244,136,220,222,181,136,
+206, 76, 12,129,137, 8, 16, 25,153,171,135,248, 93, 9,104,210,164,137,106,190, 39,207,219,119, 91,158,210, 53,115,220, 80,180,
+156,241,231,149,240,240,112,198,209,209, 17, 63,252,240, 3, 40,165, 61,202,184,185,196,236, 39, 1,182,175,123,180, 66,179,196,
+146,167, 73,133,133,133,225,206,157, 59,136,142,142, 70,181,106,213, 48,102,204,152, 36, 74,169, 93,105, 54,187,118,237,122,251,
+183,223,126,243, 92,187,118,109,224,254,253,251, 91,151,230,110,170, 77,136,113,131,202,246, 79,118,251,206,173, 70, 46,237, 21,
+ 42,162,223,193,220, 95, 73, 74, 32,121, 52, 62,254,239,188,251,181,134, 3,140,205, 76, 96,108, 42, 79, 28,113,245,105,161,146,
+149,255,254,166, 49, 33,166,206, 14, 86, 79,143,174, 95,228,196,187,121, 76, 42,218,241,128,148, 71,178,218,183,111, 31,176,114,
+229, 74,139,248,248,120, 92,191,126, 29,149, 43, 87,134, 66,161,192,186,117,235, 18,238,222,189,235,152,159, 94,187,102, 53, 93,
+131,126,159, 53,202, 76, 52,230, 23, 73, 69, 43,146, 72, 32,216, 18,112,249,216, 36, 51, 9, 69, 70,252, 7,188, 15,125,137,199,
+175, 34,116, 7,174, 5,177, 89, 74,181, 55,165,244,102, 73,191,155,220,134, 84,191, 21,111,115,238,242,237, 39,238, 14, 14, 14,
+ 24, 63,126, 60, 62,126,252, 8, 74, 41, 56,142, 43, 92,165, 49,127,254,124,212,168, 81, 3, 35, 7,247, 82, 72,210,158,181, 63,
+247,138, 62,213,179,130,215,117,117,117,189,122,235,214, 45, 59, 39, 39, 39,220,189,123, 23, 31, 63,126,132,189,189, 61,110,220,
+184, 1, 63, 63,191,253, 19, 38, 76, 24,176,114,229, 74,233,144, 33, 67,226,174, 92,185, 82,169,248,156,186,202,149, 43,135,158,
+187,114, 87,126,243,244,213,247, 22, 38, 70, 48,182,181, 2, 95,110,170,162, 32, 10,123, 91, 11,209,160,222, 29,171, 71, 70, 70,
+122, 20, 43,255,175,202, 79, 3, 12, 48,192, 0, 3,254,198,133, 11, 23,168,183,183, 55, 41,120, 47, 78, 33, 8, 33,231,243,249,
+128, 6,128,184,200, 49, 8, 33,231,243,213,144, 79,142,125,124,124,230,251,250,250,190, 44, 56, 46,184,102,222,188,121,117,252,
+252,252, 86,181,108,217,242,104, 64, 64,192, 18, 0,239,190,150,104,149,166,114,233, 53, 71,139,137,125, 12,145,123, 55, 8, 89,
+ 29,116, 41,111,192,101, 68, 1,198,246, 80, 18, 57, 82, 19,162,240,250,238,201, 60,110, 88, 94, 38,190,166, 66, 66,200,141,208,
+208, 80,188,126,253, 26, 49, 49, 49, 48, 50, 50,250,236,186,123,247,238, 65, 38,147,193,193,193, 65, 63,201, 78,243,233,126,172,
+ 65,141, 93, 33,111,233,137,148, 33, 63,225,198,141, 27, 72, 74, 74,130, 72, 36,130, 88, 44, 6,195, 48,229,218,227,241,242,118,
+252, 45, 80,177, 74,186,166, 61, 33, 2,103, 75,249,185,109,139,167, 85,225, 61, 56, 47, 84, 70,191, 67,188,138,133,185, 62, 74,
+158,220, 24, 70,198, 70, 9, 50,153, 81,113,146,245,182, 49, 33, 66, 99,185,244,220,222, 21, 51,237,249,207,111, 72,149,239,130,
+ 32, 42,193, 70,231,206,157,199, 3, 88, 76, 41,205,104,223,190,189,221,202,149, 43, 45,226,226,226,240,234,213, 43, 28, 63,126,
+ 60,153,201,187, 81, 66, 41, 93, 10, 0, 45, 9,145,186,216,152, 95,217,242,203, 52, 19,220, 58, 38,198,152, 95, 42, 92,145,204,
+ 60,122, 94,232, 55, 98,194,164, 77,211,122, 34, 55, 91,137,195,215,158,227,242,179,247,189, 0,220, 43,107,222,219,150,123,244,
+ 29, 33,164, 99,223,190,125, 95,220,185,115,199,122,247,238,221, 96, 24,166,196,215,238,221,187,113,253,238,179,169,148,234, 77,
+178, 28,171, 84,169,114,253,209,163, 71, 54, 70, 70, 70,184,118,237, 26, 50, 50, 50, 10,149,172,145, 35, 71,146,140,140,140,193,
+191,255,254,123,191,200,200,200, 53,119,239,222, 77, 69,222,118, 80,159, 84, 4, 62,159,255,158, 97,180,181, 28, 60,170, 11, 6,
+244,108,219, 54, 39, 53, 8,114,171,250,120, 16,248,254, 92, 70,122,170,146,207,231,191, 47,122,253,183,200, 79, 3, 12, 48,192,
+ 0, 3, 42, 76,104,206, 83, 74,123, 20, 37, 78,197, 9, 87,193,231,130,235,124,125,125,123, 20, 37, 97, 0,224,231,231,183,170,
+200,177,226, 91,164,173,188,201,240,237, 9, 33, 20, 64,251,146, 46, 82,191, 58, 5,245,235,179, 16,185,182,134,184,102, 47,240,
+ 93,219, 32, 58,232, 22, 2, 47,173, 71,236,203,123,160, 28, 11,135, 26,205,244, 77,139,170, 86,173, 90, 80,169,242,166,102,169,
+213,106,136,140, 45, 84, 51,199, 13,149, 2, 0, 39,144,170,139, 36, 90, 47,131, 38,173,189,208, 44,145,226,177, 93, 30, 1, 46,
+ 80,182, 86,140, 26, 5,145, 72, 4,145, 72, 84,184,249,172, 62, 68, 43,127, 83, 84,112,121,238, 43, 90,210,249, 38, 18,225,225,
+163,139, 39, 55,147, 68, 6,139,213, 33, 15, 16,175,230,232,185, 68,246,130, 62, 59, 39, 27, 25, 27,197,201,140,140,130,101,114,
+227,162, 68,235, 61, 0, 80,161,240,192,193,165,147,235, 27, 39,134, 27,171,158,220, 64,130,138,211,154,150,108,102,233,165, 75,
+151,108, 5, 2,129, 61,203,178,136,142,142,198,203,151, 47,177,113,227,198,196,236,236,236,246,207,158, 61, 11, 43,146, 94, 94,
+ 83,153,248,248,129,101,211,170, 10,130,252,165,234,247, 33, 37,146,183,178, 96, 83,175, 79,151, 94,237, 27, 92, 24, 63,124, 1,
+122,119,255, 14, 35,218,215,166, 17,241,105, 42, 0,215,244,217,192,154, 82, 26, 71, 8,233,220,174, 93,187, 67, 13, 27, 54,244,
+160,148,162, 94,189,122, 24, 60,120, 48, 14, 28, 56,128,192,192, 64,100,101,101,105,175, 94,189,186,129, 82,186, 71,207, 7,206,
+200,194,194,226,242,205,155, 55,109,140,140,140,112,245,234, 85, 40,149, 74, 56, 56, 56, 96,210,164, 73, 98, 63, 63,191,253, 89,
+ 89, 89, 3,124,125,125,165, 17, 17, 17, 91,174, 92,185, 82, 25, 0,143, 82,250, 89, 37,208,104, 52, 59, 15, 31,216,183,105,210,
+228, 41, 78, 55, 31,190,186,161,206,201, 54,115,117,141,201,178,177,144,155,108,248,117,169,139, 70,163, 25, 95,114,126,222,254,
+162,252, 52,192, 0, 3, 12, 48,224,115, 13,227,194,133, 11,165,114,145,162,228,169, 56,217,170, 8, 73, 3,160,244,241,241,153,
+ 79, 8, 57,159,175,120, 41, 1,196,255, 19, 36,171,144,104, 81, 74,253, 9, 33,160,148,250,151,106,133, 99,161,141,184, 3,109,
+196, 29,200, 90, 78,197, 95,190, 67,138,253,201,151,111, 17,214,115,217,181,155,106,181, 90,176,111,223,190,194,121, 91, 0,192,
+178,236, 55, 47,197,138, 16,173,124,162,247, 89, 34,170, 72,228,254, 59,103, 12,104, 97,197, 42,132,154,123,231, 16,167,230,152,
+ 53,239,180,138, 39, 25,244,183,249,165,216, 60, 51,125, 60, 98,238, 94,135,145, 92, 30, 51,246, 78,112, 81, 21, 43, 8,192, 7,
+ 0,168, 34, 53,189,113,124,230,144, 54,246, 34,136, 52, 23, 78, 32, 94,205,169,183, 71,234,246,108, 44,185, 80, 65, 41,197,135,
+ 15, 31,160, 80, 40, 16, 16, 16,128,147, 39, 79, 38, 23, 39, 89,249,233,189,253,199,207,195,154,155,102,127, 20,105,158, 92, 71,
+188,154, 83,215,208,135, 92,213,239,211, 90,196, 35, 87, 9,143, 47,235,222,182, 54,166,255,216, 7,235,255,248,139,209,216,182,
+237,177,233,236,197,129, 57,106,237,124,125, 72, 86,145, 52, 7, 1,168, 77, 8,145, 0,240, 26, 60,120,240,197,126,253,250,193,
+223,223, 31,231,206,157,115, 7,144,144,159,255,203, 0,216, 33,111, 53, 98,105, 59,199,243, 68, 34,209,209,235,215,175,215,113,
+116,116,196,245,235,215,161, 84, 42, 49, 97,194, 4,205,228,201,147, 69, 35, 71,142, 36,153,153,153,133, 74, 86, 64, 64, 64,106,
+105, 36, 11, 0, 98, 99, 99, 47,185,186,186,182,106,215,174, 93,159,170,238, 53, 77,195,179,179,146,140,140,164,178,187,254,183,
+ 68, 79, 30,221,223, 18, 27, 27,251,184,228,252,188,161,119,126, 26, 96,128, 1, 6, 24, 80, 58,188,189,189,253, 47, 92,184, 0,
+111,111,111,255,114,250,146, 30, 95, 72,134, 10,126, 39,244,245,245,125,233,235,235,251,137,226,245,149, 74, 91,113,215,225, 5,
+ 74,105, 66, 81, 69,171, 66, 96, 51,163, 63,191, 1,142,171,200,205,126,246,157,133,133, 5, 35,147,201, 62, 33, 90,156,158, 54,
+211, 78, 31, 65,248,196,161,133, 74, 86,129,178,133,174, 35,191,138,104,113, 28, 23, 0,224,147, 68, 24,219,213, 28,114,116,120,
+231,214,181,171, 58,241,116,199, 55, 34, 86,193,168, 22,191,209,170, 94,103,211, 94,175, 74,152,100, 93,104,147,209, 65,106, 44,
+139,146,201,141,139,147,172, 72, 0,144,219,215,232,183,127,136, 87,251, 6, 53,221,120,204,177,117,136, 83,232,114,124, 66,181,
+218,240, 92,122,170,148, 60, 92,252,221,119,223, 45,182,178,178,146,110,218,180,201,204,213,213, 21, 12,195,104,138,147, 44, 99,
+187,154, 67,142,141,236,218,186,134,189, 5, 79,247,231,102,196, 40, 89,197,198,112,221,254,237,122,144, 44,107, 51,249,149,237,
+171, 38,202,140, 36, 66,168, 84, 42,248,109,251, 19, 87,239,135,244, 72, 14, 62,125, 5,192,149,175,168,147, 99,123,244,232,177,
+126,217,178,101,208,233,116, 24, 51,102, 12,222,191,127,127,245,205,155, 55, 27, 93, 92, 92,102,255,252,243,207,142,246,246,246,
+ 24, 56,112,160, 8,192,200, 82,108,252,122,248,240,225, 30, 13, 26, 52,128,191,191, 63, 50, 50, 50,224,224,224,128,201,147, 39,
+139,125,125,125,247,103,101,101, 13, 88,181,106,149,244,195,135, 15,101, 42, 89,159,212,107,150, 93,177, 99,253,196,217, 77, 91,
+180,225,189,123, 23,198, 68, 55,243,228,221,186,126,238,142,149,149,213,254, 79,242,115, 84,183, 10,231,167, 1, 6, 24, 96,128,
+ 1,223, 12, 23, 0,120, 23, 87,185,138,147,176, 2,197,170,232,113,241,235,243,207,171,191, 54, 65,197, 21,173,124,226,245,233,
+ 28,173,162,147,224,203, 3,151,155,172, 23,121,250,140,173,214, 34,186,241, 77, 33,152,239,201,131,200,216, 66,213,115,217,181,
+155,165, 93,107,108,108,172,183,162,197,169, 85,229, 17,167, 10, 17,173,252, 57, 90,151, 41,165,159, 16, 45,115,251,154,158, 11,
+231, 78,219,208,166, 95, 87, 94,226,143, 45,145,145,163, 86,255,252,138,225, 98, 21,101,147,172,188, 94, 92, 23, 97,100, 44, 15,
+150, 26,127, 50, 47, 43, 26, 0,100,118,213,155,249,204,152,178,173,195,144,158, 36,121, 66, 27,164,103, 40,213,179, 95, 50, 36,
+ 78, 73, 7,188,162,244, 86, 73,230,110,220,184,177, 3,192,142,246,237,219, 39, 26, 27, 27, 35, 39, 39,231,179, 50, 40, 72,111,
+235,126, 93,121,137, 99,155, 35, 45, 87,171,254,249, 37,131,120, 37,119,180, 60,146,101, 99,110,114,101,251,202,137, 70,241,177,
+145, 16,137, 68,144,203,229,184,118, 47, 24,201, 33,103,190,134, 96,129,207,231, 47,153, 63,127,254,226, 73,147, 38, 33, 53, 53,
+ 21,231,206,157, 67,247,238,221,113,228,200, 17,215,139, 23, 47,174,247,242,242, 2,159,207,199,249,243,231,161,211,233,222,150,
+ 82,158,125,198,141, 27, 55,187, 95,191,126,120,252,248, 49, 18, 18, 18, 62, 81,178, 50, 50, 50, 6,111,219,182,173, 95, 68, 68,
+ 68,185, 74, 86, 49, 52,171,226,214, 72, 52,111,209, 90,168, 21, 73,130,228,184,135,254, 55,174,241, 30,164,165,165, 25, 1,200,
+252,210,252, 52,192, 0, 3, 12, 48, 64,111, 85,171, 52, 46,146,156, 79,162,146, 75, 58, 46, 66,176, 74, 58, 38,197, 84, 48, 77,
+177,243,129,255,228, 61,233,165,104, 9,236,234,130, 73, 12, 41, 66,180,146, 62, 57, 47, 53,177,212,203,117,168, 99, 32,216,190,
+167, 48,142,150, 52, 53, 53, 85,106,109,109,173, 42, 74, 16,140,140,140,224,232,232,136,244,244,116,236,220,185, 19, 0,202,155,
+ 20,205,152,246, 27,142,102, 67,198,224,137,179, 24, 84,167, 45, 84,182,182,143, 26,245, 9,217, 18,137, 68, 5,115,195,202,235,
+116, 31, 17, 66, 34, 1, 60,160,148,210,198, 53,170, 45,151, 26, 27,143,106, 82,223,205,122,250,196,177,194,136, 36, 53,110,182,
+153,151,241,231,175,115,229, 49, 84, 62, 41,138,102,220, 47,199, 94,248,247,191, 31, 44,174,100,197, 54,170, 81,109,129,212, 72,
+250, 99,139,186, 53,236,125,102, 78, 20, 70, 36,170,201,205,102, 63,103,157,252,237,103,163, 15, 48,153, 29, 67,211,111,233, 81,
+ 60,139,187,119,239,190,152, 82, 74, 57,142, 91, 4, 0, 69,211, 59,115,242,143,194,240,143, 42,220,104,179, 32,253,228,175,115,
+ 77, 98, 80,118,122,109,234,247,105,109,103, 97,122,101,251,170, 73, 70, 9,113, 81,144, 72, 36, 48, 49, 49, 65, 76, 98, 38,132,
+ 2,190,242,107, 42, 27, 33, 68,226,233,233, 57,119,226,196,137, 8, 14, 14,198,132, 9, 19, 18,162,163,163, 79, 29, 59,118,108,
+194, 47,191,252, 34,232,210,165, 11, 18, 18, 18,176,122,245,106,221,189,123,247, 86, 1, 88, 93, 98,125, 20, 8,198, 46, 95,190,
+156,198,199,199,147, 15, 31, 62,192,193,193, 1, 83,166, 76, 17,175, 90,181,170,112, 78, 86, 69,148,172, 2,196,198,198,250,187,
+187,185,160,215,165, 13, 96,116,106,255,140,212,232, 59,175,195,211,253, 45,197,226, 89,109, 26,215,255,162,252, 52,192, 0, 3,
+ 12, 48,224,155,224, 73, 57,199,255, 82,148,228, 58,212,151,104,189,221,188, 96,180,251,232, 73,115, 32,115,109, 13,117,232,105,
+112, 57,137,133,138,150, 84,110, 1, 75, 23, 15,100,228,170,113,226,198, 51, 0,120, 91,145,132,101,103,103,163,113,227,198,216,
+ 58,178, 70, 7, 85,118,170, 84, 6, 64, 45, 49, 85,157, 17,183,189,121,241,226, 69, 5,199,113, 71, 1, 92, 44,199,204,146, 58,
+117,234,108, 89,187,118,173,216, 99,200,104,228, 60,188, 91, 92,157,130, 76, 38,131, 68, 34, 65, 80, 80, 16,110,222,188,169, 1,
+176,164,156, 12,123,196, 48, 76,224,209,163, 71, 99,221,171, 57,119,109,223,180,217,212,249,243,124, 76, 94,221,189,138, 69,171,
+182,112,213,155,116,201,244, 59,114, 38, 59, 83,238,210, 81, 17,255,250,133, 30,183, 26, 88,140,100,197,123, 84,117,233,208,178,
+ 81,195, 57,139, 22, 45, 48,125,121,247, 26,126,249,109, 59,117,111,208, 41,243,183,147,103,179, 82,140, 42,127,167, 76, 12,125,
+172, 79, 30,222,190,125,123, 7,128, 29, 5,199,197,211,235,179,108, 35, 87,163,105,215,116,191, 35, 39,115,179, 76, 92, 58,149,
+149, 94,219,218,125, 91, 85,114,176,188,178,121,197, 79, 70, 31,227,162, 33,145, 72, 32,151,203, 17,157,144,129,197, 27,142,231,
+106, 57,174,235, 87,214, 69,137,137,137,137, 68,171,213, 98,235,214,173,136,142,142,110, 73, 41,141, 38,132,108, 31, 52,104,208,
+166,122,245,234,213,122,249,242,229,219,156,156,156, 73,148,210,215,165, 25, 49, 55, 55,111,105, 99, 99, 67, 30, 60,120,128,159,
+126,250, 73, 51,101,202, 20,209,136, 17, 35, 72,122,122,250,151, 42, 89, 0, 0,103,103,103,207,239,189, 91,161,117,231, 9,254,
+ 26, 85,198,157,136,215,251,253,121,244,190,180,113,195,250, 95,148,159, 6, 24, 96,128, 1, 6,252,111,160,172,201,240,101,238,
+ 70,237, 9, 8,106, 88, 97,124, 29, 39,209,199, 3,191, 78,161,217,225, 1, 84,249,120, 7,205, 58,253, 35,189,176,122, 4,189,
+184,121, 58,157,224, 93,135,214,178, 37, 31,107, 88, 97,188, 39, 32, 40,107,119,239,238, 53,161,235,236, 6,218,217, 13,212,187,
+ 6,116, 0,230, 55,106,212,232,204,228,102,160,244,213, 97, 74, 95, 29,166,147,155,129, 2,248, 9,128, 92,223, 29,195, 1, 56,
+ 0,216,217,184,113, 99,230,214,173, 91,244,205,128, 78,244,121, 45,107, 58,105,210, 36,250,203, 47,191,208,161, 67,135, 82, 27,
+ 27, 27, 6,121,254, 82,135,242,108,246,234,213,203,153, 82,138, 74,149, 42,153, 55,241,168,254, 49,232,198, 57,122,231,192, 38,
+250,199,228,190,180,121, 61,143, 20,251, 90,237, 2,101, 14, 53, 27,234,187,179,185,189,189,253, 60, 74,105, 87, 74,169, 3,165,
+ 20,238,238, 86,242, 70,181,170,199, 7, 94, 63, 71,239, 30,220, 66,255,152,220,151,182,168, 95, 59,213,217,195,235,181,212,182,
+ 86,179, 47,221, 45,189,196,244,214,173,149, 98, 87,189,213,139,210,210, 91,212,102,213,102, 3,207,198,198, 39,210, 71,143, 30,
+209,139, 23, 47,210,187,119,239,210, 3,199,206, 82,151,166, 3,114,172,235,245,110,253,181,187,186, 3, 48,243,246,246,166,111,
+223,190,165,221,186,117,163, 0,204,190,196, 38,128, 51, 17, 17, 17, 52, 36, 36,132,206,159, 63,159, 2,216, 55,113,226, 68,101,
+102,102, 38,237,212,169, 83, 52, 0, 30,138,213, 69,125,211, 89,173,138,147, 95,159,158,109,151, 76,254,169,159,231,215,230,231,
+ 55,220, 21,222, 96,211, 96,211, 96,211, 96,243,191,222,230,127,242, 43,159,135,140, 43,242,222,168,224, 92,153,138,214,237, 60,
+ 53, 96, 71, 61, 59,114,104,213,234,205,179,182,238,216, 55,103,238,212,177,198,109,219,116, 70,240,245,189, 56,121,254, 88,174,
+ 74,173, 89, 45,226, 99,109,112, 10, 45, 55, 14,197,133,215, 84, 88,130,122,100,100,233,134,194, 24, 76,239,210, 1, 74,233,246,
+ 10, 50,201, 4, 0,227, 8, 33,107,189,188,188, 86,254,216,186, 89,223,201,173, 58, 64,167,211,225,192,129, 3,136,138,138, 58,
+ 5, 96, 1,165, 84, 47,197, 45, 56, 56, 56,165, 78,245,202,211, 44,101,162, 57,147,134,246,177, 73,126,255, 10,177,161,207, 1,
+ 0,106,181, 82,151, 16,230,223,160, 34,233,147,201,100,143,108,108,108,222,216,216,216,164,179,234,156,113, 82,129,233,162, 9,
+131,191,183, 77,141,120,141,152,151,121,158, 81,181, 74,161,141, 9,187, 89,235, 75,152,116,229,202,149, 37,198, 66,140, 47, 49,
+189, 26,149,238,227,219,208,134,250,216, 81,168, 53,171,150,174, 63,240,221,138, 57,163, 36,166,166,166,120, 22,242, 14,139,214,
+ 29,201, 85,106,116, 93,147,131, 78,223,255, 70,172, 31, 58,157, 78,239,133, 14,165, 96,110,131, 6, 13,106,174, 92,185,210,125,
+228,200,145,248, 90, 37,171, 40,222,127,136,245,105,223,190,125,237,119,111,158,121, 89,202, 68,135,190, 38, 63, 13, 48,192, 0,
+ 3, 12,248,159,129, 55,165,116,103, 65,132,248,124, 87,226,115,125, 92,135,121,196, 35,145, 42, 0, 44,171,102, 71,182,207, 91,
+185,126, 49,143,108, 24,197, 81,186,151,225, 97,105,120, 10, 77,254,202,142, 87,225, 93,139, 48,223,245, 30, 42, 0, 0,161, 0,
+204, 87,216,122, 11,160, 31, 33,164,233,174,251,143, 23,230,127,189,130, 82, 90, 33, 95,174,137, 0, 33,109,106, 87,115,106,219,
+168,142,148,207, 42, 17, 27,250, 30,105,185, 42, 92,123, 25,149,193,163,188,189, 21, 77, 87,120,120,248,109, 0,168, 91,189,114,
+104,219,218,110, 46,237, 26,215, 49, 18, 18, 13, 98, 95, 61, 67,166, 82,131,171, 47,163, 50, 65,200, 23, 79,168,254, 86,233,253,
+ 24,116,230,137, 77,253, 62,157, 8, 33,215,231, 79, 30, 34, 89,188,238,232, 55, 37, 89, 0, 20,113,113,113,169, 10,133,194, 42,
+ 62, 62, 94,131, 47, 12, 18, 71, 41,125, 71, 8,169, 55,125,250,244,101,179,103,207,158,243,235,175,191,138,190,100, 78, 86,105,
+ 72,143,139, 58,221,174,206,183, 43,127, 3, 12, 48,192, 0, 3,254,251, 81, 48, 79,171,248,124,173, 10,133,119, 8, 79,164,201,
+ 0, 38,185,185,145,153,239,223, 83,205,183, 74, 92, 73, 74,215, 87,146,183, 39, 0,122,126,177, 1, 30,201,126,248, 54, 42,231,
+209,219,168, 28,112,148,114,148,170,121, 60,196,228,106,181,171,194,194, 99,175,124, 69, 41,176, 79,222, 69, 43,159,190,143, 81,
+ 81,142,163, 28,165, 26, 66,240, 81,167,227, 86,133,132, 71,158,253,119, 72,111,114,208,233,251,246,181,251,182,189,255, 40,100,
+102,110,174,118, 75,242,171,211, 1,223,176, 92,116,132,144, 97, 45, 91,182, 28,205,178,236,118, 74,169,238, 43,108,105, 0,204,
+ 37,132,156, 10, 14, 14, 62, 30, 16, 16,144,240, 45, 72,214, 63, 90,254, 6, 24, 96,128, 1, 6,252, 87,226,139, 55,149, 46, 13,
+223,146,100,253, 59, 34,248,109, 68,227,127,194,110,200,219,136,186,255, 9,233,253,248,234,212, 83, 0,131,255,161,202,120, 21,
+192,213,111, 73,170, 9, 33, 85, 0,240,191, 9,201,250, 7,203,223, 0, 3, 12, 48,192,128,255, 78,124,245, 94,135, 6, 24,240,
+111, 62,146,160, 0, 24, 67, 78, 24, 96,128, 1, 6, 24,240, 47,234,135, 74, 85,180, 8,128, 78,165,252,232,122, 5,152, 92,167,
+ 47, 72,212,117,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,205,255, 45,155,255,141, 32,132, 56, 32, 47, 90,125, 97,212,
+250, 66,242,245, 15, 47,119, 52, 44,125, 53,216, 52,216, 52,216, 52,216, 52,216, 52,216, 52,216,252,111, 15,239, 48,174,232,123,
+209, 23,207, 32,248, 25, 96,128, 1, 6, 24,240, 15,142,244, 37,249, 27,201,127,209,121, 3, 12,248, 15,170,235,133,171, 14,139,
+206,217, 18,124,129,161,234,249, 74,216,187,127, 48,177,147, 29, 28, 28,198,213,175, 95,223, 67, 36, 18,241,178,179,179,151,222,
+188,121,115, 73,241,235,218,213, 17, 62,229,243,224, 92,228,151, 0,225, 3, 60, 30, 88,138,216, 59,129,138, 38,134,162,255,183,
+174,148,174, 50, 83,155,191, 8,143, 47,102, 25, 45, 88,157, 22,192,223,219, 49,113, 28, 19,197,104, 84, 93, 74,251,189, 67,195,
+190, 46, 12, 75,253, 0,110, 27, 1,111, 2, 5,247, 59,161,188, 9,148,135,109,132,195, 79, 16,232, 86,131, 17,206, 22,136, 4,
+ 11,226,159,157,136,249,111,200,179, 63,255,252,147,255, 53,191,239,223,191,127,137, 27,136, 58, 57, 57,157, 55, 50, 50,114, 43,
+237,119,185,185,185, 9,241,241,241, 94,255,229,245,177, 29,128,205, 0,234, 20, 59,245, 26,192, 52, 74,233,141,175,253,143,246,
+132, 8,236,128,241, 34,224,103, 0,208, 2,191, 37, 2, 59,110,127,163,133, 28,223, 2,182,182,182,119, 4, 2,129,123,110,110,
+110,110, 86, 86, 86, 53, 83, 83,211,112, 99, 99, 99, 99,134, 97,222, 38, 37, 37,181,171, 96,158, 78, 68,254, 86, 90,132,144, 57,
+148,210,109, 21, 57,111,128, 1,255, 41,248,170, 85,135,132,144, 26, 0, 60,243, 95,237,154, 54,109,106,151,155,155, 11, 66, 72,
+ 34,128, 59, 0,252, 1,248, 83, 74,195,190, 69, 98,249,124,254,154,141, 27, 55,206,154, 50,101, 74,225,102,208, 65, 65, 65, 37,
+ 95,203,131,243,173,115,215,109,159, 4,135,161,105,167,254,249, 68,139, 7,228, 38,192,171,115,179, 47,109,108, 77, 44, 44, 44,
+150, 18, 66, 6,240,120,188,114, 59, 53,142,227, 88, 74,233,137,244,244,244,197,148,210,236,138,252,151,220, 88,170, 99, 88,182,
+196,255, 16,240,249,108, 78,174,170,212,176, 23, 86, 86, 86, 1, 60, 30,175,106,209, 13,179,243,211, 95,226,231,162,199, 12,195,
+196, 38, 39, 39, 55,209, 35, 47,164, 60,129,104, 26, 33,162,206,224,113, 53, 0, 2, 2, 94, 24,199,106,174,113,140,118, 35,165,
+ 84,245, 53, 36,203,161, 82,181,187, 51, 22,248, 57,135,132,190,198,252,201, 67,241,235,230,125,152, 55,109, 52, 54,238, 60,130,
+105,227,134,160,118,237, 58,101,218, 96, 41, 89,186,104,218, 48,175,149, 27, 15, 55, 93, 48,109,168,241,202,141,135,155, 46,152,
+ 62, 84,190,114,211,225, 38, 11,166, 15,147,175,216,116,168,201,194,233,195, 76, 87,110, 58,172, 5, 48,230, 75,210, 57,180,134,
+ 83, 46, 97,152, 18, 71,219, 84, 32, 80, 31, 14,139, 51,254, 87, 60,212, 35, 71,142,172,175, 84, 42,159, 13,237,220,200,175, 97,
+ 13,167,184,146,174, 73,253, 24,231, 20,254,230,185,143, 80, 36,107,252,189,207,190,160,178,236, 73, 36,146,170,175, 95,191,118,
+231, 56, 14, 44,203,130, 97,152,194,119,141, 70,131,118,237,218,125,147,133, 51,132,144,158, 0,150,230, 61,172,240,165,148, 30,
+255, 10, 91,114,129, 64, 48, 67, 44, 22,123, 50, 12,227, 1, 0, 66,161, 48, 84,173, 86,251, 51, 12,179,158, 82,154, 83, 65,147,
+ 27,226,226,226,106,203,229,114,104,181,218,194, 13,232,249,124,126, 45, 23, 23,151,173, 0,220,191,246,254,237,128,241,173,218,
+180,217, 56, 98,214, 44,190,242,206, 29,108,220,179,103, 3,178,178, 0, 96,107,121,191,149, 72, 36, 87,120, 60,158,107, 69,254,
+143,227,184, 40,181, 90,221,165, 34,191, 17, 8, 4,238,241,241,241,182,142,142,142, 0, 0, 99, 99, 99,227,162,199, 21, 81,178,
+ 0,172,166,148,202, 0,128,199,227,109,108,213,170, 85, 75, 66, 8, 3,128,114, 28,199, 35,132, 12,225, 56, 78,144,127,253,106,
+ 66,200, 30, 74,169,218,208,109, 27,240,159,168,102,149, 70,182, 4,101,252,232, 34, 0,207,166, 77,155,202, 6, 15, 30, 12, 79,
+ 79, 79,184,187,187, 67, 42,149,230, 53,226,169,169,118, 47, 94,188, 24,120,231,206,157,129,231,206,157, 3, 33, 68, 9,224, 30,
+165,180,196,135,186, 83,207,182, 83,164,114,201, 38, 0, 72,142, 77, 77,136,253,144,180, 41, 33, 33, 97, 53, 45,178, 27, 53, 33,
+164,218,136, 17, 35,102, 78,157, 58, 21,231,207,159,199,145, 35, 71,160, 86,171,145,157,157,141,155, 55,111,150,156, 80, 69, 18,
+210,111,250, 1,198, 17, 64,180, 63, 96,100, 11, 24,219,125,113,102, 89, 88, 88, 44,157, 54,109,218,244,218,181,107, 23, 70, 49,
+215,233,116, 96, 24, 6, 58,157, 14,233,233,233,152, 57,115,102, 1,131, 5,199,113,184,116,233,210,148,113,227,198, 1,192,140,
+146,108,182,108,226,242,148, 71,120,206, 5, 90, 13,101,217,216, 7,207, 99,154, 48, 44,203, 87,169,180, 37,238, 84, 46,149,138,
+202, 36,121, 66,161,208,249,213, 95,127,217,242,196, 98, 80,150, 5, 56, 14,148,227, 0, 20,121,209,188,239, 40,203,129,234, 88,
+112, 12, 7, 70,169, 70,179,137, 19,245,169, 52,173,132, 98,217,145, 97, 63,206,178,111,222,162,133,176,114, 37, 71, 48, 44,135,
+247, 17,177,246,207,158, 62,108,125, 98,255,214, 9,132,144, 33,148,210, 47,138,179, 37, 54, 50,189,186,229,247, 93,206, 79, 94,
+132,224,198,173, 59,184,126,211, 31, 0,112,229, 86,158, 57, 30,143, 87, 94,250, 44,172,220,189,234, 79, 25,221,219,120,197,218,
+221,146, 41,163,123, 11,254,126,223, 37,153, 50,250,123,193,202,245,187, 36, 83, 70,127, 47, 92,254,219,150,134,132, 16, 11, 74,
+105,122,105,246, 74, 43, 35,194, 48,146, 67,225,137,124, 0, 72,222,190, 29,186,164, 36, 56, 46, 94, 12, 0, 24, 86,205, 78,111,
+119,135,141,141,205, 83,161, 80,232, 92,222,117, 58,157,174, 92, 18, 60,114,228,200, 6, 74,165,242, 41,195, 48, 84, 32, 16,248,
+ 12,237,243,221,153,174,109, 27,164, 22,189, 38, 40, 40,208,106,213,170,191,122, 31,127,150, 77, 7, 54, 54,121,118,126,205,200,
+ 38, 61,102,239, 11, 44,163, 67,230,169,213,106,188,125,251, 22, 69, 55,121, 47,202,107,191,176,241,225, 1,216,104,101,101,213,
+ 60, 53, 53,117, 24,128,249, 89, 89, 89,245,249,124, 62, 44, 45, 45,231, 19, 66,222,155,153,153,237,206,204,204, 12,200, 87,141,
+ 56, 61,237,182, 51, 53, 53, 61,112,250,244,105,139, 70,141, 26,241, 82, 82, 82, 80,165, 74, 21,164,165,165, 53,187,115,231, 78,
+227, 49, 99,198,140, 33,132,252, 64, 41,189, 83,129,228,214, 52, 50, 50,162, 35, 70,140, 32, 44,251,247,237,254,241,199, 31,232,
+ 82,151,113,251,169,171,177, 66,165,161,153, 55,222,154,253, 36, 18,137,238, 69, 70, 70,102, 86, 52, 63, 68,192,207, 35,102,205,
+226,203, 35, 35, 33, 15, 12,196,176,172, 44,193,175,121,234, 86,185, 68,139,199,227,185, 30, 56,178,215, 93, 44, 22,131, 97,152,
+ 66, 50, 88,208, 70,233,116, 58,104,181, 90,232,116, 58,176, 44, 11,157, 86, 7,223, 21,191,125,113, 91,104,100,100,100,228,232,
+232,152,104,100,100,100,244, 45, 58, 34,137, 68, 34,216,191,127,255, 16,177, 88, 12, 0,208,104, 52,168, 91,183, 46, 49,116,209,
+ 6,252, 55,145,173,146, 84,174,178, 70,169,221,178,178,178,192,178, 44, 76, 76, 76,192,231,243,139, 43, 42,232,220,185, 51,218,
+181,107,135,193,131, 7,227,213,171, 87,178,193,131, 7,119, 46, 85, 25,152,213, 3,149,220,237,242, 59, 19,206,225,254,133, 23,
+126,127, 44,255,211, 6,192,172, 34,151,141, 25, 63,126, 60, 73, 77, 77,197,128, 1, 3,238,168,213,234, 94,148,210,172, 82, 21,
+ 13, 14,177, 94,131,135,129,163, 68,182,254,209, 46,162, 81, 41, 41,143,199, 83, 22,184, 14,191, 48,163, 6, 56, 58, 58,226,232,
+209,163,208,104, 62, 15, 23,102,106,106,138,151, 47, 95, 22, 85,224,208,162, 69, 11, 62, 33,100, 64,105, 68,139, 16,158,243,253,
+ 39,145,182, 5,199, 61, 58,215, 17,181,108,226,154,104, 99,101, 66, 1,144, 5, 11, 22, 20, 18, 55, 0, 88,186,116,169, 62,233,
+ 4, 79, 40, 68,178,191,255,223, 13,177,128, 7,158,136,128, 8, 1,158, 32,207,139, 10, 10, 80, 22,224, 24,128,211, 1, 82,135,
+ 74,250,216,110,230,228,226,126,126,213,186,109,230,106, 29,197,209,179, 55, 16, 17,241, 1,124, 30, 15,213,220,220,241, 93,251,
+182,194,198, 77, 91, 86,250,109,201,172,115,132,144,110,148,210,199, 21,206,104,142, 74,221, 92,172,177,251,143,103,176,177,144,
+ 99, 64,239,238,144, 73, 37,248,117,243, 94,172,152, 55, 25,238,213, 92,177, 99,195,202, 82,127,110,102,102,182,172, 81,189, 90,
+213,246, 30,191, 12,207,118,173, 4,251,142, 95, 65,251,118,173, 5,123,143, 95, 70,123,207,182,130,125,199, 47,163,125,187, 54,
+194,125,199, 47,163, 69,147,122,110, 1,169, 65,203, 0, 76, 46,253,158,139,149,209,119,121,101,228, 46, 16, 21,118, 4,145, 19,
+ 38, 0, 64, 33,209,170, 8,132, 66,161,115,124,124,188,109,121,215,149,167, 26,228, 43, 89, 79, 25,134, 65, 82, 82, 18,201,200,
+200,160,230,230,230,189, 47,239,152,127,186, 75,155, 6,105, 0, 16, 24, 24,104,233,235,187,170,247,177,167, 89, 80, 62,220, 66,
+ 14,253,229,207, 13,235,229,249,244,172,223,200,198,253,251,247,127, 94,146, 93,181, 90, 29,209,176, 97, 67,154,255,217, 73, 34,
+145,136,138,213, 9, 71,119,119,247,207, 84,107, 61, 92,138, 27, 31, 60,120, 48,185,118,237,218,168, 85,171, 86, 64,243,230,205,
+ 77,141,141,141,113,249,242,101,120,120,120,212, 49, 53, 53,125,116,226,196, 9,225,220,185,115, 27,236,217,179, 7, 0,166,232,
+ 81, 63, 59,121,121,121, 29, 61,127,254,188, 84, 36, 18, 65,169, 84,226,229,203,151, 48, 51, 51,131, 88, 44,198,247,223,127,207,
+111,221,186,181, 85,251,246,237, 79,230, 15, 6,244, 94, 1,165, 82,169,232,252,249,243, 97,100,100, 4, 35, 35, 35, 24, 27, 27,
+195,216,216, 24,114, 41,200,246,105, 46,178,169, 59, 51,100, 51, 22,111,247, 59,176,109,201, 45, 23, 23,151, 95,162,163,163, 51,
+ 42, 90, 23,148,119,238, 64, 30, 24, 8, 20,121,118,245,133,153,177, 37,124,124,124,202, 83,164, 32, 18,137,208,170, 85,171,114,
+237, 89, 89, 89,157, 18, 8, 4,118,197, 58, 7,169,143,143, 15, 27, 22, 22,102,204,227,241,140, 57,142,131,143,143, 15,203, 48,
+140,212,206,206, 46,128,227,184,196,228,228,228,190,229,217,166,148,170, 9, 33,115,120, 60,222, 70,137, 68, 34,168, 92,185,114,
+212,162, 69,139, 30,228,171,153,160,148,242, 42, 87,174,220, 76, 38,147,185,170,213,106, 6,192, 28,131,154,101, 64, 25,104,156,
+ 39, 10, 23, 66, 3, 64, 92, 32,224,231,245,118,176, 46,246, 61, 0,164,228, 15, 20,237, 74, 57, 78, 5,240, 10, 64, 77, 0,182,
+249,231,158, 0, 72,171,104, 2,203, 84,180, 8, 33,180,200,133,133, 29,139,137,137, 9,158, 60,121, 2, 66, 8, 76, 76, 76, 96,
+106,106, 10, 51, 51, 51,100,101,101,225,213,171, 87,120,253,250, 53, 34, 35, 35, 65, 8, 65,181,106,213, 80,240, 0, 21,177, 85,
+216,192, 29, 94,123, 30, 82,185, 4,132, 0,141, 58,212, 71,253,118,117,209,244,113,248, 52, 71, 71,199,157,241,241,241,111, 9,
+ 33,130,186,117,235,142,105,209,162, 5,214,173, 91, 7,181, 90,189,174, 36,146, 85,212,230,157,151,186, 38,249,157,211,236,131,
+151,223, 27, 13,239,234,166,136,143,143, 95,243, 5,153,243, 73, 67,156,146,146,162,247, 94,124, 28,199, 33, 61, 61,189, 76,155,
+197, 21,130,245, 27,183,152,103,103, 38, 98,249,175, 7,161,211,233, 48,107,214, 44,112, 28, 87,248,202,200,200,208, 43,157,148,
+ 45, 38, 50,240,242, 94,132, 7, 16, 1,224, 50, 40,143, 87, 68, 31,221, 2, 66, 1,194, 2, 40,118, 95,197,109, 18, 66,164,124,
+145,236,216,146, 95, 55,153, 63,127, 29,139,179, 55,158, 67,155, 21,135,132,192,211, 0,128,106,173,134,224,184,154,143,230,245,
+221, 48,125,193,111, 22, 11,167,255,112,140, 16, 82,171,168, 27, 81,159,142,141, 82, 22,203,151, 45,195,206, 77,235,240,219,186,
+ 77,200,202,204,128, 80,104, 13, 0, 96, 24, 22,108,177,123,251,236,222, 41,237,186,112,246,120,178,113,215, 73,212,173,110,143,
+115,215, 2,208,164,142, 43, 46,221,124,140, 22,245,170,224,138,255, 51,180,168, 95, 21,254, 15, 95, 98,214,164, 17,228,254,165,
+125, 93, 43, 82, 70, 27, 54,108, 49,207,206, 74,196,249,149,251,145,180,117, 43,162, 38, 79, 70,179,252,107, 30, 19, 2,145,179,
+ 51, 32, 42,191,140,138, 35, 52, 52, 20,106,181,186,164,209, 62, 60, 60, 60,202, 45,119,165, 82,249,140, 97, 24,154,152,152, 72,
+ 18, 19, 19, 97,108,108, 76, 94,190, 12, 97,235,212,169,219,135,190,254,115, 23, 0,248,250,174,234,115,252, 89, 22, 20, 1,155,
+160,124,176, 25,162, 42, 65,188,157, 75,199,107,199, 45,222,241,172, 72, 39,247, 73, 58, 19, 18, 18,186, 21,124,174, 86,173,218,
+235,176,176,176,154, 5,174,230,124, 23,162,136, 97, 24,247, 2,119, 34,195, 48, 80,171,213,232,212,169, 19,191,172,123,183,176,
+176,104,225,225,225,129,231,207,159, 99,211,166, 77,150, 94, 94, 94,120,247,238, 29, 8, 33, 88,181,106, 21,169, 93,187,182, 48,
+ 37, 37, 5, 93,186,116,193,169, 83,167, 90,149,151,159,132, 16, 19, 99, 99,227, 61,231,206,157,147,242,120, 60,100,103,103,131,
+227, 56,180,110,221, 26, 60, 30, 15, 33, 33, 33, 88,176, 96, 1, 78,157, 58,133, 51,103,206,200, 26, 55,110,188,135, 16,226, 81,
+212,173, 95, 70, 25, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49,114, 84,192,184,245, 81,106,190,
+212,154,171,211,176,141,219,168,169,171,120,107, 22,141,190, 9,224,172,190,117, 30,200,155,147,181,113,239,222, 77,195, 50, 51,
+121, 0,176,155, 16, 78, 75,233,111,250, 60,239, 0,144,163,202,132,107, 53,103,156, 60,118, 6,253, 6,245, 46,145,100, 9,133,
+ 34,136,132, 66,152, 90, 26,151,107, 83, 36, 18,217,189,126,253,218, 74, 40, 20,130, 82, 10,150,101,161,213,106, 19, 23, 46, 92,
+104,227,237,237,109,114,233,210, 37,158,183,183, 55,103, 97, 97,145,251,248,241,227, 36,134, 97,172,218,182,109,171,119,157,167,
+148,110,107,216,176, 97,163,211,167, 79,143,246,241,241,121, 58,123,246,236,229, 69,207,175, 94,189,122,217,197,139, 23, 93,251,
+244,233,115,224,197,139, 23,219, 42,210,134,124,109, 59,111,176,249,239,103,243,194,133, 11,133, 13,177,183,183,119,113,181,211,
+142, 16,114,190,200,255,247, 40, 56,246,241,241,153,239,235,235,251,146, 16,114,190,232,247, 5,215,229,183, 29,231, 75, 58,206,
+255,173,229,188,121,243,234,250,249,249,173,106,217,178,229,209,128,128,128, 15, 21, 37, 90,229,206,209, 42, 32, 87, 69, 9, 87,
+ 49, 3,200,202,202, 66, 86, 86, 22, 98, 98, 98,176,125,251,246,252, 7, 90, 8,129, 64, 0,129, 64, 80, 56,159,161, 52, 92, 63,
+119,119, 51,128,205,141, 27, 55, 22, 6, 63, 56,113,233,231,157, 83, 59, 54,233,212,136,255,236, 70,112,127, 0, 43, 0,116, 27,
+ 49, 98,132, 53, 0,236,223,191, 63, 5,192,165,127, 5,101,166,148,158,120,251,246,237,116, 7, 7,135,194, 57, 42, 69,221,135,
+ 12,195, 64, 42,149,162, 96, 46,139, 74,165,194,246,237,219, 25, 74,233,137, 50,108, 34,236,229, 77,188,125,121, 43,239,119, 28,
+ 7,142,253,251,247, 75,150, 44, 41,186, 68, 20, 19,242,149,147,114, 73, 94, 73,121, 78,139,189, 23,251,254, 51,114,246,153,123,
+ 66, 52,181,255, 15,147, 29, 56, 34,192, 95, 55, 95, 64, 40, 20,130, 43,162,102, 10,249,121,163,229,151,239,226,225,104, 87, 7,
+189,134,140,183, 63,125, 96,203, 84, 0,191, 86, 52,175,107,213,111,137,105,211,167, 99,215,206,157, 88,176,120, 89, 33, 75,103,
+ 88, 22, 76,185,233,228,241, 90, 55,169,141,156,212, 88,240,249,124,180,106,232, 6, 62,159,143,182, 77,106,128,207,231,163, 77,
+211,154, 16, 8, 4,104,223,162, 54,170, 87,175, 14,129, 64,192, 43,167,220, 17,246,242, 6,222,190,188, 93,132,244, 82, 80, 0,
+218,132,132,207,174,215, 37, 36,128,186, 88, 85,180,110, 97,204,152, 49, 25, 49, 49, 49,218,226,231, 42, 85,170, 36,186,115,231,
+142,121, 41,110,187, 66,200,100,178,198, 2,129,224, 89, 90, 90, 26,103,100,100,196,227, 56,150,171, 83,167, 46,255,242,142,249,
+167, 11,174,153, 55,111,254,233,129,141, 77,251, 28, 60,113,158,138, 42,183, 33, 68, 40, 97,126, 92,188, 67, 36, 20,201,244,138,
+120, 95,224, 70,124,243,230, 13,202, 75, 79,209,129, 89, 73, 72, 79, 79, 31,225,225,225,113,103,243,230,205,150,132, 16,220,189,
+123, 23,124, 62,191,240, 21, 30, 30, 14, 30,143,135,159,127,254, 89,155,149,149, 53,182,188,180, 9, 4,130,233, 39, 79,158, 52,
+ 19,139,197,200,206,206, 46,124,110,248,124, 62, 94,191,126,141, 53,107,214, 96,196,136, 17,136,142,142,134,163,163, 35,102,205,
+154, 37,247,243,243,155, 14, 96,153, 30,183, 30,164,209,104,154, 24, 25, 25, 65, 42,149,162,128,112, 1,192,213,151,194, 16,133,
+ 66, 81,207,218,218,218,222,198,255,252, 95,173,188,122, 53,176,178,113,104, 89, 64,180,244,197,123, 96,103, 4,203, 46,236,118,
+250,180,237,253,211,167,185,135,231,206,197, 74,178,179,119,232, 93,135,116, 60, 68,133,199,162,113,227,198,120,246,236, 25, 26,
+ 55,110, 92,148, 52, 65, 44, 22, 67, 36, 18, 65, 36, 18,193,218, 66,175, 41, 20,148,199,227,225,254,253,251, 96, 89, 22, 26,141,
+ 6, 26,141, 6,181,107,215, 78,187,117,235,150, 28, 0,194,195,195,233,240,225,195, 51, 30, 61,122,132,134, 13,203,222, 79,221,
+222,222,254, 14,159,207,175, 92,236, 89,181,232,219,183, 47,210,211,211,187,247,237,219,183, 77,254,119,113,127,254,249,231,112,
+ 0, 16,139,197,224,241,120, 44, 12,248,159, 71, 1,185, 42, 74,184, 74,104,115,122, 20, 63, 38,132,156,247,245,245,237, 81,252,
+187,162,164,170,164,207, 69,127,235,231,231,183,170,136,109,229, 23,120,195,202,159,163, 69, 8,161,229, 53,154,101,161, 60,162,
+ 85,128,103,207,158,233,156,156,156,118,189,125, 17,217,209,173,126, 53,200,140, 37,223, 17, 66, 54, 75, 36,146,153, 63,252,240,
+ 3, 30, 62,124,136,144,144,144, 63,190,118, 59,149,122,245,234, 93,145, 72, 36,174,165,184, 73,162,130,131,131,187,148,210, 49,
+ 44,206,159,115, 86,234,100,248,162,243,197,138, 78,134, 47,181, 98,112, 20, 58,173, 14,185, 10,229,223,157,120, 62,209,202,205,
+205,197,160, 65,131, 62, 81,180,146,146,146,244, 41, 84,172, 57,123, 22,215, 78,156, 64,247, 6, 13,112,234,241, 99,248,253, 48,
+ 20,181, 92,157, 64, 89, 2, 74,128,232, 35, 91,144,154,149,131,195, 55,238, 35, 45, 91,129, 97,109,219,194,221,212,186,108,187,
+ 66, 81,231,102, 45, 90,138,174, 7,188,130, 80, 40, 0, 15, 28,168, 78, 1, 71,143,246,224,243,120, 48,179,171, 2,145, 80, 8,
+161, 80,128,240,152, 20,120,212,109, 42, 62, 47,150,118,254, 18,162, 85,201,181, 10, 88,150,197,136, 17, 35,112,244,232, 81, 88,
+217,187,194,172, 82, 93,172, 88,183, 19,221, 59,181, 45,247,254, 11, 70,240, 2,129, 0,124, 62,255,179,247,130,207,250,168,147,
+148,163,208, 22, 47, 35,142, 2,148,194,121,229, 74, 56,175, 92,137,199,249,255, 89, 59, 55, 23, 74,165, 18,104, 94,167, 66, 36,
+ 75,163,209, 32, 38, 38, 70,155,144,144, 96, 87, 66, 7,149,168,209,104,202, 37, 54,251,246,237, 11, 26, 57,114,100, 19, 75, 75,
+203,167, 65,129,129,186,250, 13, 26, 8, 47,109,159,127,166,192,109, 8, 0, 13, 26, 52, 72,155, 63,127,254,153,225, 3,122,244,
+222,230, 51,152,157,184,236,128, 64, 34,147, 53,233, 49,187,236, 9,241, 69,158,143,136,250,245,235, 83,125,174, 85, 40, 20, 31,
+203, 40,163,158, 0,150, 54,106,212,200,212,203,203, 11,119,238,220, 65,191,126,253,212, 90,173,246,109,126,163, 90,227,240,225,
+195,226, 87,175, 94,193,198,198, 70, 24, 21, 21,181,135, 16, 82,230, 4,121,177, 88,220,190,105,211,166, 60,181, 90,253, 25,201,
+242,243,243,195,144, 33, 67, 80,163, 70, 13,112, 28,135,156,156, 28,120,121,121, 9, 55,109,218,212, 94, 79,162, 53,173, 86,173,
+ 90,107,144,183,234,176,104, 91, 24, 10, 96, 78,190,218,253,177, 71,191, 17, 47,219,118,234,219,164,114,245,186, 14,229, 25,180,
+179,179,155,199,227,241, 6,114, 28,199,207,202,202,138,209, 16, 82,189,182,171,171, 93,235,222,189,145, 41, 20,242, 55,222,184,
+193, 75,204,206,150, 3,208,203, 5,169,210,229,194,181, 90,222, 84,191,126,131,122,227,217,179,103,232, 63,184, 15, 68, 34, 17,
+ 4, 2, 97,222,179, 41,202, 83,180,204,173, 77,245,170,155, 58,157,174,176, 13, 47,152,231,165,213,106, 81, 48, 53,203,200,200,
+168,240,156, 90,173, 46,117, 64,158, 15,247,227,203, 22,217,202, 76,205,192,234,116,168,211,187,127, 97,157,126,180,123,155, 12,
+ 28, 39,203,136,138,192,148, 19,231,132, 48,192,128, 82, 84,173, 18,212,172,162,237,202,249,226,100,235, 75, 65, 8, 57,239,227,
+227, 51, 31, 0,245,241,241,153, 95,112,236,235,235,171, 4, 16,247, 37,100,171, 36,149, 75,240, 45, 72, 86,129,123,161, 44,116,
+232,208, 97,138,137,137,201, 38, 0,104,210,164, 9, 98, 30,198, 33,230, 97, 28, 60,106,214,105,221,168, 65,147,204, 33, 67,134,
+192,202,202, 10,179,103,207,166, 0,254,168,232,255,135,135,189,148, 3,160,142,142,142,179, 1,192,209,209,177,193,227,199,143,
+109,158, 60,121,130,166, 77,155,254, 45,221,107,181,104,211,166, 77, 89, 29, 98, 54,242,230, 90,205,248,118, 42, 25, 7,173, 86,
+ 11,133, 66, 9,141, 70, 11, 70,199,129, 97, 24, 52,174, 99,130, 3, 59,125,242,190, 99, 10,212,179, 60,213,204,217,222, 4,141,
+235,217,235,120, 60,162,124, 18,152, 80, 98,139,169,209,104, 16, 20, 21,133,192,200, 72, 0, 64, 47,223,178, 39,190, 30,184,113,
+ 7,181,107,215, 46, 47,181,110,206,142,246,136,191, 22,148,215,120, 43, 99,240,228,222,113,152,152,200, 1, 0,117, 60,135, 65,
+ 36,202, 35, 90,185, 74, 45,172,107, 86, 2,161,180,212,176, 0,198,150, 14, 87, 4, 34,169, 43,101, 57, 80,202,129,114, 44, 40,
+229, 32, 49,177, 50,154, 50, 97, 52, 56,142, 69,179,102,205, 64,248,124,176, 58, 53, 6,244,236,140,244,204,108, 88,153,235,215,
+ 73,136, 68, 34,120,122,122,202, 74, 59,255,238,221, 59,101, 81, 98, 86,118, 25,233,144,155,171,132, 90,173,134, 86,195, 64,171,
+ 99,192, 86, 21, 97,249,194,161, 96,180, 12, 20,131, 91, 66,171, 99,192, 77,239, 3,173, 70,135,104, 35, 30,175, 65,109, 27, 29,
+ 15, 68,249,252, 85,146,105,121, 68,171,128, 28,148,134,146,230, 4,150, 66,182, 2, 71,142, 28,217,184,126,131, 6,207, 6,118,
+106,176, 54, 56,228,101,124,112,200,203,207,174,115,173,209, 32, 98,162,223,209, 89, 66,145,172,177,190, 36, 11,248,212,141,248,
+149,152,159,157,157, 93, 95, 46,151, 35, 44, 44, 12,124, 62, 31,132,144,119,148,210,250, 0, 48,126,252,248,247, 2,129,160, 26,
+159,207,199,214,173, 91,137, 64, 32,168,215,178,101,203,249, 0,142,151, 49,160,243, 48, 49, 49,249, 68,205, 18,137, 68,240,241,
+241,193,240,225,195, 11, 73,150, 72, 36,194,190,125,251,208,164, 73, 19,104, 52, 26, 15, 61,201,240, 19, 0,109,245, 80,252, 72,
+ 62, 57, 47,151,140, 50, 12, 51, 50,117,224,192,234,240,247, 71,235,106,213,106, 55,110,220, 24, 90,237,223,130,102,181,106,213,
+ 42,101,103,103,127, 36,132, 28, 2,176,141, 82,250,162, 76, 82,164,226, 16, 21, 30, 91, 48,104, 69,179,102,205, 10, 21,172,162,
+106,150, 72, 36,130, 76, 44,175, 16,209,226,184,188,118, 41, 59, 59,155,231,239,239,111, 93,171, 86, 45, 2, 0,181,106,213, 34,
+ 47, 94,188,176, 52, 50, 50, 74,113,115,115, 43,119, 0, 44, 51, 53,195,190,145,131, 0, 0,191,116,234, 90, 56, 48,186,188,116,
+ 62,132, 66, 33, 58,206,158,255, 89,189,231, 56,142, 15, 3, 12, 36,171, 28,146, 85,146,162,245,117,125,243,223,138,150,175,175,
+239, 75, 95, 95,223,207,212,177, 10,218, 43, 95,209,210,199, 21, 80,222,195, 90, 26,214,173, 91,135,122,245,234,149,217, 17,109,
+218,180, 9, 7, 15, 30, 92, 71, 41, 13,175,232,255,247,232,216,168, 14,214,159,126, 89,173, 70, 29, 2, 0,203,166,247,228,229,
+230,230,226,254,253,251, 48, 51, 51,195,187,119,250,133,253, 34,132,152,152,153,153, 45,229,241,120, 3,248,197, 87, 0,148, 76,
+ 48, 89,142,227, 78,100,102,102,150, 26,222,129, 82, 64,171, 99,144,171, 80, 65,163,209, 96,250,207, 91,202, 77,135, 47, 64,180,
+154,108,129,103,187,150,178,210, 20,157,102,245,218, 99,210, 15,242,207, 58,111, 62, 15,224,241,128,134,205,242, 20,151, 23,143,
+ 95,130,227, 0,150, 3,172,109, 45,240,199,145,181,101,102, 1,195,114,249,163, 99, 22, 57,106, 22, 30, 45,122, 32, 54,212,191,
+ 80, 65, 18,139,242, 92,198, 34,161, 16, 28, 37,121, 81, 31, 74, 35, 66, 98,153,107,122, 66,184,251,206,243,193, 24,215,163, 30,
+254,188, 30,132,254,157,234,227,214,163, 87,240,106, 94, 27, 47,223, 70,162,142,123,101,108,221,115, 2,148, 34,251,247,245, 43,
+ 62,254,221,161, 49, 81,250, 40, 90, 15, 31, 62, 84, 22, 87,177,138,190,211,242,251, 67, 80,250,183,162,165, 84,169, 49,123,158,
+ 94,225,124,242,202,168,109, 11,153, 62, 23,151,165, 88,233, 67,196,138, 43, 91, 40, 39, 60, 75, 85, 0, 77,128,185,255,202,134,
+147,101, 89, 92,184,112,161,176, 60, 74, 42,199,162,101,167, 7,201, 65, 84, 84, 20, 94,190,124,137, 22, 45, 90, 32, 51, 51, 19,
+ 66, 30, 15,179,130,131, 81,251,135, 31,160, 17,137,192,113, 28,196, 98, 49,198,143, 31,175,119,126, 86,176, 53,205,159,231,198,
+210,114,218,146,181, 61,122,244,168, 30,150,155,139,151,175, 95,163,211,146, 37, 0,128,139, 23, 47,126, 82, 39,102,206,156, 41,
+126,245,234,213,152,167, 79,159,142, 33,132,172,163,148,206, 42,181,157,165,234,194, 57, 90, 3,135,246, 67,245, 90, 85,113,112,
+239,145,194,243, 51,231, 76,131, 80, 40,130, 80, 36,132,185,153,185, 94,119,163,211,233, 10, 73,171, 66,161,224, 93,188,120,209,
+185,115,231,206,162,105,211,166, 17, 0, 56,120,240, 32,111,243,230,205,198,215,174, 93, 19, 57, 57, 57, 37,148, 75, 46,181,218,
+207,202,152, 16, 2,161, 80, 8,145, 88, 4,112, 28, 8, 33,198,171, 87,175, 94,246,242,229,203,166,181,106,213,130, 90,173,254,
+129, 16,242,220, 16, 71,203,128, 2,183, 97,105,132,171,164,185, 86,249,170, 84,105, 72, 46, 58,111,171, 52,162, 86,116,206, 22,
+ 0,117,197,155, 5, 61,231,104,149, 4, 62,159, 95,174, 90,197,227,241,202,117, 29,206,156, 57, 19, 38, 38, 38,165,117, 64, 52,
+ 56, 56,248, 85, 66, 66,194, 78, 74,233,150, 47, 41,156,243, 55,158,191, 92, 58,163, 79, 54,242,125,171,230,230,230, 41, 29, 58,
+116,200, 1,160, 61,126,252,211, 1,178, 90,173, 46,181, 3, 55, 51, 51, 91,186,123,247,238,169,189,123,247,230, 21, 15, 49, 80,
+212,189, 87,240,210,233,116, 56,126,252,248,212,185,115,231,162, 52, 21,172,160, 19, 87,228, 42,161,204,159, 8,253, 62,228, 79,
+125, 75,175,212, 83,114,115, 7, 56, 87,173, 95,106,103,194, 19,229,205, 33,178,115,249,187, 3, 51, 49,145,130, 45,195, 38, 33,
+188,240,200,232,120,167, 74,246,150,120, 31,147, 12,187,202,245,144, 30,247,119, 62, 8, 4,124, 8,243, 93,135,230,166,198, 72,
+ 78, 74, 2,143,199, 47,147, 24,175, 56,252, 28,143, 66, 34,113,242,250, 11,104, 85,185, 88,191,255, 50,180,234, 28,104, 85,185,
+208,170,242,222, 87,205,253, 17,132,224,163, 86,149, 83,163, 34,229, 46, 16, 8,208,188,121,243, 82,137, 78, 92, 92,156,158,138,
+ 22, 45, 84,180,148,170, 10,150,145,126, 15, 97,153,138, 85,193,249, 47, 37, 6, 5, 33, 31,100, 50, 89,147,125,251, 74, 15,227,
+ 80, 18, 28, 28, 28, 46,201,229,242, 42,250, 94, 95,129,224,165,171,204,205,205,151,214,170, 85,203, 99,253,250,245, 66, 62,159,
+143,142, 29, 59,214,248,241,199, 31,163, 0,160, 94,189,122,142, 5,109,204,196,137, 19,233,195,135, 15, 67,242,198, 24,165, 67,
+ 44, 22,191, 54, 51, 51,107,226,229,229,133,204,204, 76,196,196,196,192,216,216, 24,181,215,174, 69,240,196,137,104,176,125, 59,
+120, 29, 58,128, 16, 2,177, 88,140,224,224, 96,200,100,178,215,101,144,161,230, 0,126, 3,208, 26,127,187, 11, 41,128,251, 0,
+126,166,148, 62, 42,161,189,227, 1, 0,203,113,229, 21,214,208,217,179,103, 35, 67, 40, 4,188,189, 33, 10, 15,135, 86,171, 69,
+139, 22, 45, 10, 85,246, 22, 45, 90, 64, 32, 16,160,126,253,250,112,116,116,196,214,173, 91,135,226,211,149,216,159, 64,149,163,
+ 69, 84,120, 44, 90,182,108, 89,168, 92,121,123,123, 23, 42, 90, 66,161,176, 80,217, 34,108,249,196,149, 16, 66,139, 14,146, 89,
+150, 37, 2,129, 64, 48, 99,198, 12,210,175, 95, 63,170,209,104, 56,177, 88,204, 59,121,242, 36,185,117,235,150, 32, 55, 55,183,
+220,129,120,221, 62, 3,240, 75,231, 60, 81,116, 69, 21, 27, 8, 69, 66,136, 69, 34,204,126, 29, 91, 88, 46,166,251,142,138,253,
+252,252,250,215,170, 85, 43,207, 13, 15, 8, 12,113,180, 12, 40, 71,205, 74, 46, 70,146, 52, 69,142,147, 1,144,252,227,228, 34,
+132, 42, 25,121, 43, 8,155, 22,187,182,224,188,166,216,123,193,249,192,138,166,189,200, 94,135,159,145,175,178, 70,196,111, 31,
+ 60,120,224,222,184,113, 99, 68, 71, 71,127,182, 18,174,160,227, 50, 54, 54,134, 76, 38, 67, 64, 64, 0, 0,188, 45,205,216,205,
+155, 55, 55, 35, 47,234, 50, 0,192,209,209,177,165,215,192,246, 1,205,186, 54,197, 97,223, 35,153, 9, 9, 9,245, 11, 98,232,
+ 16, 66,136,163,163,227,112,161, 88, 48,168, 90, 93, 23, 79,112,220,111,215,255,186,183,164,172,155,172, 86,163, 78, 14, 0,101,
+145, 85,135,107,190,164,160,121, 60,222,128,222,189,123,243, 94,189,122,133, 65,131, 6,225,224,193,131,165, 94, 59,124,248,112,
+ 28, 61,122, 20,189,123,247,230,205,155, 55,111, 64,121, 68, 43, 79, 45,209,124,179, 74, 25,246, 46, 16, 7,142,238, 46,117, 14,
+146,173,109,222,124,172,164,164,148,194,239,154, 54, 46,219, 51,194, 49,154,107,207,159, 62,110,217,170, 93, 71, 81, 76, 98, 6,
+ 56, 70, 13, 85,246,223,191, 87,100, 36,130, 50, 42,136,140, 44, 97,111,109,134,103, 15,174,106,180, 26,213,181,178,108, 78,237,
+ 93, 7, 19,123,122, 0,148, 67,159, 89,127,224,252,150, 41,133, 35,232, 54,253,166,225,198,241,141,122,207,241, 43, 14,161, 80,
+136,224,224, 96,101,105,106, 22,159,207, 47, 55, 38,215,223,170,163, 14, 10,133, 18, 10,165,234,155,149, 17, 33,196,198,206,206,
+238,119, 75, 75, 75,105, 73, 68,138, 16, 98, 99, 99, 99,243,187,149,149,149, 84, 95,215, 97,105, 36, 43, 63,174,214,211,145, 35,
+ 71, 86,136,108, 73, 36,146, 42,111,223,190, 45, 12, 86, 90,214,187, 70,163,129,151,151,151, 94,193, 75, 41,165,231, 8, 33, 31,
+ 28, 28, 28,238,215,174, 93,219,236,253,251,247, 56,114,228,136, 72, 40, 20,186, 20,180, 31,217,217,217,224,243,249, 72, 74, 74,
+210, 1, 24, 93,158,235, 76,173, 86,251,251,251,251, 55,236,217,179, 39,255,245,235,215,224,243,249,121,233,106,217, 18, 13,182,
+111, 71,200,140, 25,240,140,140,132, 74,171,133, 84, 42,197,149, 43, 87,180, 10,133,194,191, 52,123, 50,153,108,103, 68, 68, 68,
+ 29,169, 84, 10,173, 86, 11,142,227,192,227,241,136, 64, 32,104, 99,110,110,190, 9, 64,211, 79,159, 41, 91,219,241, 51,127,173,
+201, 50, 12,155, 16,253, 62,185,188, 60, 72, 77, 77,197,185,115,231,208,162, 69, 11,120,122,122, 34, 46, 46, 14,225,225,225,232,
+222,189,123,225, 53,129,129,129,120,254,252, 57,220,220,220,202, 87,244,120, 58,184,213,172, 2,145, 72,148,167, 16, 9, 69,249,
+ 3, 31, 97,161,146, 37, 18,138, 32, 20, 8, 33,149, 73,245, 86,180, 8, 33,224,241,120, 32,132, 64, 38,147, 21, 12,178, 57,103,
+103,231,132,180,180, 52, 7, 0,124,153, 76, 6,150,101,245, 26,180, 20,244, 17, 5, 36, 75, 36, 22, 21, 42, 91, 0,144,145,145,
+161,234,221,187,247, 33,181, 90, 61, 10, 95,176, 67,137, 1,255,147,120,242, 47,250,173,222, 60,145, 82,186,179,164, 73,241,101,
+ 85,240,238,173, 90,181,218, 62,100,200,144,142, 27, 54,108,128, 92, 46, 71, 66, 66, 66, 97,135, 40, 22,139, 81,169, 82, 37,164,
+165,165, 97,199,142, 29,136,141,141,189, 9, 96,188,190, 41, 74, 72, 72,120,248,238,197,219, 84,175,254,173,172,234,180,170,105,
+ 30,243, 54,182, 5,128,128,124,146,245,199,144,153,221, 71,121,245,109, 6,145, 88,136,152,119, 31,255,223, 74,146,207,231,243,
+ 9, 33, 24, 52,104,144, 94,215, 15, 30, 60, 24,254,254,254, 40,203,205,200, 21, 40, 90, 10, 21,114,149,223,110,176, 54,105,202,
+112, 76,154, 50,188,144, 76,232,227,122,201, 35,185,199,202, 32, 90,218, 13,231,143,237, 24,215,168, 89, 75,215, 38,117,170,224,
+209,211, 23, 56,188,253,111,145, 97,207,230,101,248,117,207, 77, 84,178,179,128, 86,157,139, 75,127,238,250,168, 85, 43, 54,124,
+161, 40,151, 71,110, 9,129,158,113, 42, 63, 81, 81, 11,136, 86,221,186,117, 75, 85,180,210,210,210,148,229,117, 12,133,101,164,
+209, 33, 39, 87, 9,165,226,219, 16, 45, 66, 72,131, 54,109,218, 92, 59,113,226,132,149,173,173, 45,226,227,227, 63, 33, 90,132,
+144, 6,173, 91,183,190,118,226,196, 9, 43, 59, 59, 59,196,196,196,232, 29, 86,164, 4,146,133,228,228,100,146,158,158,206, 89,
+ 88, 88, 84,136,108,241,120, 60,168,213,106,132,134,134,234,251,183,122,175, 16, 51, 51, 51,219,119,244,232, 81,179,148,148, 20,
+240,249,124,132,134,134,126,178,234,176,224,245,199, 31,127,136,250,244,233,179, 27, 64,153,203,218, 24,134, 89, 55,124,248,240,
+ 49,113,113,113, 22,182,182,182, 72, 72, 72,128, 88, 44, 6,165, 20,196,203, 11,109, 63,124,128,150,101, 33,147,201, 16, 22, 22,
+134,157, 59,119,230,170,213,234,117,165,148,143,216,200,200,200, 93, 36, 18, 97,216,176, 97,159,156,219,191,127, 63,122, 53,225,
+ 55, 25,215, 89,146,195, 64,170, 78,148,117,187,196,231,243,201,248,217,191,213,104,222,206,187,238,155,144, 71,239,147, 19, 99,
+239,151,115,251, 58,141, 70,131, 90,181,106,225,201,147, 39,184,126,253, 58, 58,116,232, 0, 79, 79, 79, 4, 5, 5,225,234,213,
+171,120,254,252, 57, 8, 33,176,178,178, 42,152,126, 81,230, 28, 12,141,130, 65, 82,124,234,103,234, 85,241, 99,145, 72, 4,181,
+ 82,171, 87, 25,189,126,253, 26, 79,158, 60, 41, 12, 45,195,231,243,153, 31,126,248, 1,148, 82, 26, 17, 17, 1, 19, 19, 19, 58,
+114,228, 72, 86, 32, 16, 48,113,113,113,250,214,253, 60,245, 42,159,100, 9, 68,194, 79, 8, 26,199,113,217,129,129,129,227, 8,
+ 33, 65,132,144,213,249, 95, 27,226,104, 25,240,159,140, 11, 69,247, 58,212, 75,209,162,148,126, 0,208,137, 16, 50,244,204,153,
+ 51,235, 54,109,218,100,211,163, 71, 15,164,167,167,195,213,213, 21, 14, 14, 14, 56,127,254, 60, 46, 94,188,152,194,178,236, 44,
+ 74,233,193, 18, 30,182, 78,165,197,218,160,148, 82, 71, 71,199, 19,234,156,156,137,141, 61, 61,112,243,248, 93, 95, 7, 7,135,
+241, 78, 78, 78,211, 71,206,255,126, 84,251,222, 77, 17,246, 60, 2, 15,175, 6, 35, 49, 58, 5, 35,219,254, 92,166,205,226,147,
+225,205,205,205,199, 24, 25, 25,137, 1,104, 75, 24, 21,127,178,234,176,168, 77,150,101, 89,141, 70,131, 99,199,142,233, 69,182,
+142, 28, 57, 2,149, 74, 5,182,152,127,181,168, 77,202, 81, 34, 16, 74,224, 88,169, 22,180,218, 92,112,220,151,169, 55, 69,109,
+ 22,140, 64,223,139,197,176, 77, 73,193,163, 71,143,244,149,102,203, 44, 35, 74,169,138, 16, 50,108,227,202,217,231, 39,251,252,
+102,222,161, 85, 67,252,178,118, 63,180,218, 61,224,241,121,144, 73, 68,104,220,172, 53,248, 80,227,119,191, 57, 25,138,172,244,
+ 97,197,183,226,249,204,102, 89, 30, 22, 10,176, 28,135,235,119, 30,235,125,239,133,189, 61,203, 66, 32, 16,224,221,187,119,202,
+146, 86, 27,242,249,121,110,206,130,145,122, 89, 54, 41,199, 17,161, 72,138, 74,174,181,161, 81,231,124,147, 50,178,181,181,157,
+115,250,244,105,171,130, 80, 9, 65, 65, 65, 32,132,132, 22, 81, 71,230,156, 62,125,218, 74,169, 84, 34, 36, 36,164, 96,171,169,
+208,138, 60, 71, 5, 74, 86,114,114, 50, 73, 72, 72,128,145,145, 17, 47, 40, 40, 72, 93,191,126,253,167, 40,123,231,135, 66,155,
+ 42,149, 42,178,180,249,147, 42,149,202, 73, 42,149, 10,139,253,214,209,221,221, 61,172,184, 11,177,164,116,102,102,102, 62,154,
+ 59,119,110,227,174, 93,187, 98,206,156, 57,105, 22, 22, 22, 38,191,255,254,187,128,207,231,147,201,147, 39,179, 73, 73, 73, 57,
+187,118,237, 50, 59,115,230, 12, 50, 50, 50, 2,202,187,119, 74,105, 54, 33,100, 92,171, 86,173,246, 95,190,124,217,200,221,221,
+ 29, 89, 89, 89,160,148, 98,223,190,125,152, 60,121, 50,164, 82, 41,194,194,194,208,171, 87, 47,133, 66,161, 24, 87,124,238,100,
+ 17,155,132, 16, 66, 57,142,195,162, 69,139, 10,131,147, 22, 4, 43, 53,145, 17,236,156, 89,213,120,218,174, 76,227,161,191,236,
+250, 1, 0, 88,134, 97,223,132, 60,122,191,111,203, 47,183, 68, 34,209,157,114,202,104,193,180,105,211,126,247,246,246,150,201,
+229,114,164,165,165,225,254,253,251,120,240,224, 1, 30, 62,124, 8,141, 70, 3, 43, 43, 43, 88, 88, 88, 32, 33, 33, 1,175, 95,
+191, 86, 2, 88, 80,150, 77,177,145, 16,213,106, 20,172,252,205, 83,176,132, 69, 86, 27, 22, 85,183, 68, 66,161, 94,207, 81,187,
+118,237,208,188,121,243, 2, 2,196, 70, 69, 69, 37,168,213,106, 82,132,244,199, 21, 16,114, 23, 23, 23,230,224,193,131,180, 44,
+155, 15,119,110,197,229,229, 11, 32, 22,137, 48, 43, 52,166,144,116,237,239,208, 8, 66,177, 8, 30, 61,251, 21,237, 7,182, 17,
+ 66,246,228,127, 86,235, 83,231,191, 98,224, 99,176,249,111,110,243, 63, 25,148,210, 4, 0, 21,219,130,167,200,143, 15, 19, 66,
+ 46,253,248,227,143,126, 13, 26, 52,248,113,253,250,245, 68, 36, 18, 97,201,146, 37, 52, 62, 62,126,111,254, 40, 36,253, 11, 19,
+182,247,246,169,128, 9, 35,124,122,147,153, 27, 70,182,121,122, 35,228,117,189, 86,238,168,215,202, 29, 79,111,190,194,150,249,
+ 71, 14,178, 58,118, 81, 66, 66, 66,116, 57,166,212,157, 90,215, 44, 62, 25,222,202,255,214, 13,171,138,174, 58,228, 56,238,196,
+145, 35, 71,166,246,237,219,151,247,248,241,227,207,230,100, 21,108,187,195,113, 28,174, 93,187, 6,173, 86,139,189,123,247,114,
+ 28,199,149, 30, 71, 11,244,236,198, 13,126, 35,246, 30, 56, 43, 22,139, 8, 30,220, 57,137,204,244,178, 85, 58,145, 72,136, 63,
+246,157,210,138, 68,194, 55, 37,157,215,106,181, 49, 55,110,220,176,235,194,178, 66, 30,143,247, 25,129, 42, 13, 39, 78,156,208,
+113, 28, 23, 85, 78,185, 4, 16, 34,236,185, 98,206,232, 35,222, 3,127,180,107,213,170,141,208,218,214, 14,132, 16, 36, 37, 38,
+ 33, 44,228,177,238,210,201,221,137,185,138,108,189,182,224, 25,189,230,118,225,156, 44, 0,232, 49,121, 83,225,252, 44, 0,232,
+ 57,114, 46,188, 90,212, 1,209, 71,122,250,155,100,113, 12,195,192,216,216, 24, 12,195,148, 24,226,193,204,204, 76,166, 82,169,
+148,249,129, 24,203,148,138, 40,240,205,203,136,101, 89,143,244,244,116,228,230,230,226,193,131, 7,116,229,202,149,201,201,201,
+201,133,147, 54,117, 58,157, 71, 90, 90, 26,114,114,114, 16, 16, 16, 64,253,252,252,146, 83, 83, 83,231, 87,228, 25,146,201,100,
+ 77, 4, 2,193,211,244,244,116,206,200,200,136,167,211,233,116,245,235,215,151,200,100, 50,189, 55, 84,143,143,143,239, 90,218,
+ 57, 55, 55,183,183,111,223,190,173,206,178,108,209, 61, 16, 69, 42,149,202,189, 85,171, 86,250,184,124,166,237,217,179, 7,167,
+ 78,157,106,150,149,149, 53, 60, 42, 42,106, 63,128,102, 2,129, 0, 47, 94,188, 8, 85,169, 84, 67,250,246,237,187, 47, 61, 61,
+253, 17,128,105,122,182, 27,151, 9, 33,195, 60, 60, 60,246, 44, 93,186, 84,238,233,233, 41,112,116,116, 68,211,166, 77, 17, 22,
+ 22,134, 11, 23, 46,232,182,109,219,150,171, 80, 40, 70, 83, 74,175,149, 93,236, 32, 12,195, 64, 44, 22, 23,190, 36, 18, 9, 68,
+ 34, 17,178,149, 20, 99,215,134, 43, 25,200,148,235,150,140,187, 64, 1,242, 49, 38, 60, 37,233, 99,204, 35, 66,200,157,248,248,
+248,204, 82,242, 76,172, 82,169, 26, 58, 56, 56,240, 9, 33, 27,180, 90,237,200, 41, 83,166, 56,172, 90,181, 10, 53,107,214, 68,
+ 74, 74, 10,140,141,141,225,238,238,142,228,228,100, 60,126,252,152, 85, 40, 20,219, 1, 44,163,148,150,233,142,204, 72,201,130,
+179,189,203, 39,202, 39,165, 20,148, 5,116,106, 22,172,150, 66, 67,116, 16, 10,117, 16,137, 68,250,116,150,148,227, 56,164, 59,
+ 56,128, 11, 9,193,195,135, 15, 65, 41, 45, 85, 85,171, 85,171,150, 30, 5,196, 65, 44, 17,127,226, 46, 36,132, 64, 36, 22, 67,
+ 40, 22,125,182,114,198,160, 98, 25,240,223, 14,125,231, 90,100, 0, 24, 79, 8,217,223,190,125,251,243,148, 82, 33,242,252,145,
+119,191,230,207, 19, 18, 18,158, 57, 58, 58,206,179,115,182,240,235, 54,188, 13,106, 54,116, 5,203,176,184,127,241, 5,246,174,
+ 58,115, 52, 46, 38,110,164, 62,123,159,113, 28,119,171,117,147,154, 60, 20,137,213,237,232,232,200,125,201,170,195,204,204,204,
+197,179,102,205,194,156, 57,115, 42,188,234,176,180,107,130, 66,147,198, 55,240,176,113,238,217,173,109, 23, 16, 30,213,104,212,
+101, 52,124, 40,140, 92, 42, 18, 9,223, 60, 14,140,175, 95,210,117,201,201,201, 93, 70,141, 26,117, 77, 32, 16, 84,169, 72,158,
+115, 28, 23,149,152,152,216,177,252, 50,215,221, 39,132,184,159, 59,186, 99,198,229, 83,123,186,112, 28,235, 70, 0,240, 5,162,
+247, 58,173,246,138, 90,153,181, 94,223, 77,165, 87,143,111,137,105, 27,175, 98,235,156,158,152,226,119, 28,187, 23,141,197,188,
+181, 71,240,219,156,105, 88,185,233, 16,126,153, 54, 12,253,135,142,226, 40,225,221,211,247, 62,248,124,254,229, 29, 59,118,140,
+ 24, 59,118,108,225,162, 5, 74,233, 39, 13,187, 78,167, 83,114, 28,135,237,219,183,115, 0, 46,151,101,239,211, 50, 34,180,172,
+249, 82,250,150, 81, 86, 86,214,232,150, 45, 91,238, 3, 32,161,148,190, 75, 79, 79,255,137, 82, 90,184, 53, 84, 78, 78,206,232,
+ 86,173, 90,237,163,148, 74, 8, 33,159,157,215, 7,249,161, 30,154, 88, 88, 88, 60,205, 87,178, 36, 95, 50, 33,190,172,172, 46,
+195,173,200,234,209,118,112, 40,178,173, 14, 33,100, 85,179,102,205,138,110, 42, 29, 10,160, 73, 69, 19, 69, 41,189, 70, 8,169,
+179,104,209,162, 25, 82,169,212, 75,161, 80,212, 0, 0, 99, 99,227, 48,181, 90,125, 75,169, 84,174,207,111,183,202,178,161, 49,
+ 50, 50, 10, 99, 24,166,174,141,141, 77,222,138,218,124,178, 5, 0,127, 61,101,159, 82,202, 52,173,104,218, 46, 94,188, 88,217,
+194,194,226, 59, 66, 72,127, 74,105,173,236,236,108,245,162, 69,139, 2, 78,156, 56,145, 89,165, 74,149,110,222,222,222,196,210,
+210, 18, 79,158, 60,161,169,169,169, 39, 1,204,215,103,165, 53,199,113, 81,171, 87,175, 70, 69,159,247,178,206,107,181,218,143,
+ 23, 47, 94,180,238,154,148, 36,224, 56, 14, 61,123,246,252,132,192, 21,199,155, 55,111,160, 86,171,203, 12,230,168,206, 76, 71,
+135, 25,115,129,252,213,159, 5,200, 83,178, 40,168,198,192,171, 12,248,223, 2,249, 71,150, 63, 87, 80, 90,116,116,116, 28, 36,
+ 53,150, 76,114,173,225, 80, 63, 62, 60,233, 85,118,166,226, 96, 66, 66,194, 14, 74, 41,251,165, 54, 43, 18,176,212, 32,255,254,
+115, 54,255,142,163,197,130, 82, 22,148,163,160,148, 3,199,177,121, 27, 94, 83, 14,148,101, 9, 33,184,167, 86,100,142,213, 55,
+157,132, 16, 11,107,107,235,101,148,210,174,124, 62,159, 87, 84, 12, 43,250, 57, 95,201,186,156,156,156,252, 75,113,229,245, 63,
+ 49, 63,255,252,243,207, 18,201,191,190,171, 14,251,247,239,207, 86,240,217,188,101,108,108, 92, 98, 96,206,220,220,220,232,248,
+248,248,239,254, 29,242,179, 64, 13,165,122, 52,104,197, 92,240, 21, 94,117, 88,158,205,202,149, 43, 75,180, 90,109, 35, 0,238,
+132, 16,115, 0,105, 90,173,246, 74,114,114,114, 34, 33,164, 9,128, 69,249, 63, 91, 78, 41,125,250,175,124,222, 9, 33, 50,107,
+107,235, 61, 60, 30,207, 89,159,223, 51, 12,163, 73, 75, 75, 27, 81,116, 64, 80,212,166,181,181,245, 83,129, 64,224,172,135,157,
+216,148,148,148, 38,134,246,211, 96,243,191,134, 76, 21,155, 4, 95,244,248,223, 98,181, 71,124,124,252, 49, 0,199,190,165,205,
+210, 34,191, 27,240,255,139,220,180,132,127,164, 28,242, 73,211,228,255,181,252, 44, 32, 74, 37,124,255, 12, 0,249, 7,158, 77,
+175,255,132,124,161, 95, 56, 98,204, 39, 82,109,191,101, 90, 34, 35, 35,213, 0, 2,242, 95,197,255,239, 41,128,158,255, 70,249,
+166, 4, 48,232, 91,217, 43,139, 60, 25, 96,192,255, 42, 12,203,106, 13, 48,192, 0, 3, 12, 48,192, 0, 3,190, 14, 23,138,109,
+193,115,161,224, 3, 1,208,169,148,145,142,222,146, 32, 33,164,211, 23,140,164,174, 27,108, 26,108, 26,108, 26,108, 26,108, 26,
+108, 26,108,254,111,217,252,159, 67, 65,224,200,127,226, 5,160,147,193,166,193,166,193,166,193,166,193,166,193,166,193,166,193,
+230,127,243, 11,192,184,210,142,121, 6,170,105,128, 1, 6, 24, 96,128, 1, 6, 24,240,207, 64,111,162, 37,183,247,240,176,169,
+220, 96,159,101,165,250, 65,150,149,234, 7,217, 84,110,176, 79,110,239,225,241,191,152,105,132, 16, 25, 33,100,168, 80, 40,188,
+230,224,224,144, 69, 8,153,241, 95,122,159,166,132,144,254,132,144,101,132,144, 62,132, 16,163,111,105,191, 61, 33,130,193,132,
+ 76, 26, 65, 72,244, 8, 66,162, 7, 19, 50,169, 61, 33,255,117,243, 6,151, 78,115,108,121,247,242,176, 75, 75,167, 57,182, 44,
+241,252,108, 71,171, 71,215, 6,110,244,157,236,100,249,141,202,205,196,206,206,110,167,189,189,125,164,157,157, 93,148,157,157,
+221, 30, 66,136,153,161,185, 51,192, 0, 3, 12,248,199,112,129, 16, 50,174,224,133, 34,115,180, 4, 0,112,225,194, 5, 79, 0,
+183, 1,180,247,246,246,246, 47,254,107, 75,215,122, 99, 61,106,213,156,179, 98,201,124, 98,111,107,109,196,176,156, 54, 34, 50,
+166,246,226, 21,126,127, 90,186,214, 91,151, 22, 21,188,251, 11, 58, 3,194,231,243, 7, 73, 36,146, 30, 0, 10, 8, 91,168, 90,
+173, 62,207,178,236, 49,125, 87, 17,217,219,219,223,225,243,249,149, 43,242,223, 44,203, 70,127,252,248,177,205, 23,118, 98, 3,
+ 92, 92, 92,246,120,122,122, 26, 53,107,214, 12, 98,177, 24,139, 22, 45,154, 5, 96,189,190, 54, 44, 45,221, 76,180, 18,233,116,
+129, 88,220,153,234, 52,117, 41, 40,192,147,132,112,140,250,134, 72,173, 94,151,150,246, 62, 91,207,180,204, 7, 48, 18,121,203,
+209,119, 83, 74, 87,127, 77, 45, 25,217,136,232,116,108, 94,157, 16, 9,192,154,153,153,221, 94,176, 96,129,160, 71,143, 30,216,
+189,123,119,155,157, 59,119,142, 35,132,220, 0,240, 23,165,244,253,215,214, 74, 59, 96,124,171, 54,109, 54,142,152, 53,139,175,
+188,115, 7, 27,247,236,217,128,172, 44, 0,216, 90,209,186, 36, 18,161,191,181,181,176, 7,165,104, 68, 0, 66,128, 23,201,169,
+220, 69,173,150, 61, 70, 43,186,191,207,167,182,135,226,211,229,248,135, 43,106, 35,243, 61, 93, 40,233,233,209, 54,243,253,173,
+133, 0,186, 21, 63,207,168,164, 35, 40,191, 82, 15, 37,125, 30, 3, 96,237, 87,146, 44, 35, 27, 27,155,160,179,103,207, 58, 55,
+107,214, 76, 0, 0, 79,159, 62,253,161, 71,143, 30, 29, 8, 33,117, 41,165, 89,255, 34,210, 46, 21,240,120,147,196, 66, 97,103,
+150,101,235, 1, 0,159,207, 15,214,232,116,215, 24,142,219,170,111, 76, 54, 3, 12, 48,224,191,152,169,148,195, 69,254,157,161,
+ 79,100,248,219,222,222,222,228,194,133, 11, 20,197,150,136,203,237,106,213,174, 83,199, 99,214,229,211,251, 43,101,164,101,168,
+ 54,175,217,255, 44, 87, 32, 86,184,215,118, 23,109, 94,191,218, 98,210,180,153,211,229,118,181, 30,229, 36,190,126, 85,129, 70,
+215, 69, 38,147,157, 90,179,102, 77, 93, 47, 47, 47,161,173,173, 45, 18, 19, 19, 17, 26, 26, 90,247,230,205,155,189,247,239,223,
+ 63,139, 16,210,151, 82, 26,173,135, 57,247, 27, 7,246,216, 26, 91, 90,129,213,233,224, 88,191, 81, 97,160,189,119, 55,175,130,
+209,106,193,233,116,240,232,209, 27, 0,192,113, 28,106,215,174,205,255,146,140, 36,132, 56,214,169, 83,231,224,170, 85,171, 68,
+106,181, 26,143, 30, 61,194,173, 91,183,184,132,132, 4, 63,125,109,200,237,106,120,241,100,198,199, 6, 13,251,209,236,251, 30,
+ 85,133, 46,118, 54, 0,140,240, 38,130,105,117,233,234,205,166,167,143,237,157, 40,183,171, 49, 40, 39, 49,236, 86,217,100,205,
+178, 5, 33,100,101, 65,132,104, 66,200,111, 85,170, 84,249,165,232, 53,197,247,205,163,148, 66, 32, 16, 36,102,103,103, 15, 74,
+ 73, 73,121, 94,220,166,142,133,224,240,225, 60, 30,177,112,210, 80,254,189,123,247,140,107,215,174,173, 6,128,213,171, 87, 99,
+217,178,101,226, 43, 87,174,116, 63,112,224, 64,119, 66,200, 6, 74,233, 95, 95, 83, 49, 69,192,207, 35,102,205,226,203, 35, 35,
+ 33, 15, 12,196,176,172, 44,193,175,192,207, 21, 33, 90,132,144,170,246,246,194, 63,103,205, 28,229, 81,205,173,133, 72, 36,178,
+206,219,196, 91,147, 82, 35, 58,250,121,127,191, 95,119,250, 16, 66,250, 81, 74,223,233,105, 79, 0, 96, 41, 0, 41,128,133, 0,
+ 22, 37, 39, 39,187,179, 44, 11,123,123,251, 69,132,144, 51, 0, 86,216,216,216,208,228,228,228,185,148, 82,166, 44, 37, 43,235,
+ 61, 93,248,145, 84,235, 90,179,241, 8,124, 36,151,187,206,236,230,112,201,212,141,172, 88,188, 49,254, 1, 0,116,115,115, 51,
+169, 86,203,120,174,220,180,158,101, 86,220,245,185,221,220,220,118, 93,122,175, 31,209, 46, 78, 54, 1,192,209,209,113,245,129,
+ 3, 7, 42, 53,111,222,188,176,142, 55,108,216,144,191,122,245,106,167, 25, 51,102,108, 0, 48, 74, 79,123, 53,108,108,108,174,
+176, 44,171, 78, 77, 77,173, 81,240,189,109,131,190,173,172, 76,140, 59, 38,167,103,223, 73,121,121,198, 95, 79, 91,205,164, 34,
+209,201,191, 14,110,116,104,216,188, 37, 79,110,109, 11, 85, 92, 60,114,116,218, 78,183,238, 63,108, 63,110,210,207,211,242,203,
+232,177,161,171, 49,192,128,255,105,148,202, 69,254,147, 33, 40,194, 36, 75, 84,144, 36, 18,177,207,226, 5,115, 73, 70,106,134,
+ 82,149,149,173,209,169, 84, 42,158,136,170,130, 95,125, 72,226, 9,248, 25, 51,166, 77, 53,241,153,183,192, 7,192, 48,125, 73,
+ 86,131, 6, 13, 30,159, 58,117,202,214,210,210, 18,153,153,153, 72, 77, 77,197,227,199,143, 65, 41, 69,223,190,125, 37,205,155,
+ 54,109,180,112,209,162, 7,132,144,150,250,144, 45, 99, 75,107,172,110,147,183, 23,237, 47,145,169, 5,255,131,157, 3,122, 20,
+ 94,179, 44, 54, 19, 0, 32,149, 74, 11, 55, 36,254, 2,180,236,216,177,163, 8, 0,198,140, 25,147,149,157,157,237, 11,224, 48,
+165, 84,175,157, 86,229,118, 53,188,172, 29, 28,207,255,190,125,181,172,158,155, 59,180, 58, 6, 81, 31,227, 33, 16,154,195,217,
+ 89,132, 81,195, 58, 11,219,181,178,180, 94,185,124,231, 5, 99,155, 26,125,114,147,195,174,148,102,203,220,220,124,255,177, 99,
+199,112,252,248,113, 0, 64, 88, 88, 24,220,221,221,141,203, 75, 67, 72, 72, 72,181, 94,189,122, 29, 5, 80,189,188,107,139, 7,
+198,151, 72, 36,104,211,166, 13,106,215,174,141,179,103,207,182, 7,240,215,215, 86, 64,229,157, 59,144, 7, 6, 2,254, 21, 31,
+188, 16, 66,170, 54,110,236,250,240,226,133,131,214, 23, 46,134, 98,237,218, 61,120,255, 62, 79,104,171, 86,173, 26,134, 14, 25,
+ 32, 12, 14, 14,168,211,191,255,208, 0, 66, 72, 27, 74,105,152, 30,102,151,238,218,181,107,126,149, 42, 85,208,191,127,255, 1,
+117,234,212,177, 55, 53, 53,197,142, 29, 59,224,224,224, 80, 77,163,209,188, 59,123,246,172,227,199,143, 31, 49,117,234, 84, 0,
+152, 85,154,161,246, 93,218, 47,148,244,244,104, 91,179,241, 8,200, 77, 29,176,235,200, 49,188,121,182,191,173, 90, 27,186,208,
+119,178,211,112, 37,149,140,116,118, 55,241,169,220,196,211,170,122,157, 94,112,109,252,220, 90,197,222,253,176,104, 82, 53, 63,
+129, 84,181,127,241,154,248,212,207,238,121,192,159,252,186, 89,175, 45, 67,174, 33,149,210,197, 92, 62,193, 42,108,144, 88,138,
+ 94,237,218,181, 43, 44,184,200,200, 72,168,213,106,120,120,120,240, 52, 26,141,151,158,249, 90,227,187,239,190,187,119,241,226,
+ 69,171, 26, 53,106,124,178, 37,140,189,149,121, 23,255, 83, 27,166,174,220,120,168,150,109,237, 62, 25, 73,175, 78, 7,151, 71,
+178, 90,183,104,124,253,210,169,131,114,146, 19, 3,177,121, 10,192,165, 34,252,232, 31, 32, 70,150, 24, 52, 97,166,192,171, 99,
+ 7,167,206,221,250, 93, 39,132,116,164,148, 62, 49,244, 53, 6, 24,240, 63,173,106,209,255,182,123, 42, 36, 90, 69, 88,228, 39,
+224, 40, 87,223,206,214, 74,182, 97,205,190, 39,124,173, 70, 99,108,110,166, 17,154,153,114,196,196,140,175,213,232,114, 92,171,
+185,138, 57,202,213, 47, 69, 74,187, 94,124,212, 45,147,201, 78,253,245,215, 95,182, 66,161, 16, 28,199,193,198,198, 6, 17, 17,
+ 17,200,200,200, 64,118,118, 54,222,135,134,162,138, 75, 37, 44,241,153,235, 48,117,174,207, 41, 66, 72,147,162,110,196,146,150,
+141,178, 58,109,241,198,189,180, 77,132, 63,121, 47,203,102, 41,136,136,142,142,134, 92, 46, 71,221,186,117,229,247,239,223,191,
+ 91, 26,201, 42,110,211,210,210,205, 68, 32,151, 29,223,246,251, 34,153, 86, 23,130, 87,225,105,168, 89,165, 45,236,172, 92, 16,
+159,166,193,195,199,127, 33, 36,232, 48,220,156, 92, 48,121, 66, 7,169,223,234, 63,143, 89, 88, 84,117, 73, 79,255,144, 85,146,
+205,172,172, 44,121,213,170, 85,225,226,146,183,239, 25,203,178,120,245,234, 21, 88,150, 45, 60, 46,250,190,239,228, 77, 48, 89,
+ 81, 24,241,195, 15, 72, 77, 77,149,151,100, 83,200, 7, 51,115,220, 80,129, 76, 8,136,141, 45, 53, 57, 57, 57,133,234,160, 86,
+171,197,139, 23, 47,208,178,101, 75,207, 19, 39, 78,248,151, 35,161,234,149,159, 90,224,183,141,123,247,110, 26,150,153,201, 3,
+128,221,132,112, 90, 74,127,211,183, 46,217,218, 10, 79, 94,190,116,192,154,207,123, 13, 75,179, 95,241,248,113, 20,180,218,188,
+244,166,166, 38, 97,202,164, 44,136,132, 38, 56,123,246,144,149,135, 71,155,147,249,174, 51,174,156,116, 74, 47, 93,186,132, 41,
+ 83,166,224,213,171, 87,142,124, 62, 31,143, 30, 61,130, 76, 38,195,154, 53,107,248, 30, 30, 30,142,198,198,198,184,124,249, 50,
+ 18, 19, 19, 73, 89,233,188,125,229,246,138,204,247,183, 22,126, 36,151,187,238, 58,114, 12, 63, 14, 25, 4,123, 26,126,215,204,
+141,172,248,174,103,235, 95, 40,191, 82, 15, 99,147,250, 22,238,117,123, 66, 36,150, 99,242,207,203, 16, 22,114,206, 66,145, 29,
+ 52,137,176, 49,149,144,191,247,223, 39,155, 42,159,232,207,110, 58, 18,208,248,154,203, 19, 87,199,198,227, 31, 1, 8,250,155,
+104, 85, 19, 16, 30,107, 86,160, 94,190,123,247, 14,239,223,191,135, 64, 32,128, 82,169, 4,195, 48, 37,166,211,201,201,105, 60,
+195, 48,191,228,151,243, 62, 7, 7,135,209, 7, 15, 30,180, 42, 74,180, 11,148,172,180,140,172,244,128, 39, 47,223,204, 28,223,
+191,253,157,135, 33, 49,230, 13,122, 71,103, 4,158,201, 44,165,140,164, 50,177,248,228,229,211,135,228,186, 15, 55, 97,236,209,
+ 30, 66,185, 59, 88, 93, 28, 20,233,185,200,126,159, 0,245,239, 91,208,112,210, 12,156, 59,243,167,188, 78,189, 38, 39, 8, 33,
+238,148, 82,205, 23, 60,155, 21,145,248, 13, 54, 13, 54, 13, 54,255, 13,109,150,197, 69, 0, 52, 6, 96,151,255, 57, 21,121, 83,
+102,172, 1,164, 32,111, 59, 48, 59, 0, 26, 0,226, 34,191, 41,126, 92,244,218,226,199, 69, 63,167,230,127,182,205,127,127, 2,
+ 32,173,156, 65,165, 3, 0,111,228,205,205,242,206,207, 35,253, 34,195, 19,194,203, 98, 89, 78, 34,178,177, 85,141, 25,216,177,
+222,213,235, 79, 95, 24, 89,155, 10,186,180,111,228,249, 56,248,195, 3,194, 35, 58, 66,120,122,205,251,224,243,249,131, 54,108,
+216, 80,207,212,212, 20, 28,199,193,204,204, 12,201,201,201,208,104, 52,200,204,204,132, 58, 59, 11,218,236, 44, 4,198, 68,162,
+181,103,123,244,235,250,157,199,161, 51,127, 13, 2,112,180, 44,187,142,245, 27, 21, 42, 89,203, 42, 91,253, 45, 77,196,100, 20,
+146,174, 95, 27,185, 67, 36,151,163,243, 76,159,175,169, 88,207,197, 98,241,165,190,125,251,118,155, 61,123, 54, 47, 33, 33,225,
+ 50, 33,164, 53,165,180, 92,183,169, 86, 34,157, 62,113,122, 15, 11, 11, 57,197,137,107,127,161, 93,163, 33, 48, 18,243,145,154,
+165, 5, 33, 64,232,203, 83, 32,196, 18, 65, 97, 9,104,219,208, 20,223,117,241,144,159,249, 51,116, 54,254,158, 31,244, 89,209,
+164,167,167, 35, 41, 41, 9, 58,157, 14, 58,157, 14,253, 7, 12,192,129,253,251,145,155,155, 11,165, 82, 9,141, 70, 3,150,101,
+193,227,241,112,237,252, 9,196,124, 8, 69,171,150, 45, 81,154, 36,187,239, 57, 21, 18, 66, 30,190,121,243, 6,161,161,161,136,
+141,141,133, 84, 42,133,189,189, 61,150, 45, 91, 6,181, 58,111,143,178, 1, 3, 6,120, 2, 8,254,218, 7,234, 61,176, 51,130,
+101, 23,118, 59,125,218,246,254,233,211,220,195,115,231, 98, 37,217,217, 59,244,249,173, 72,132,254,171,127,155, 80,211,216,216,
+ 24,177,209, 27, 80,171,150, 8,179,102, 88,193,247,215, 20, 0,192,212, 41,206,104,218,196, 26, 89, 25,127,194,218,118, 62, 54,
+109,154,230, 54,114,228,186, 31, 0,236, 43,199,244,194,191,254,250,171,159,187,187,187,211,243,231,207,137, 88, 44,134, 76, 38,
+131, 76, 38,131, 84, 42, 69, 82, 82, 18, 34, 34, 34,232,234,213,171,227,144,231, 90, 44, 21,249,238,193,110, 51,187, 57, 92,122,
+243,108,127, 91, 39,254,135,192,126,147,219, 68, 6, 61,124,158,125,245,218,253,229,140, 74, 26,147, 17,123,125,110,213,166,207,
+173, 39,205, 89,138, 45,171, 23,227,205,163, 59,105,118, 46, 89, 91,101, 68,189,175,121,231, 18, 84,178,246, 75, 5,147, 22, 13,
+100,198,143,236,103,126,206, 46, 96,252, 69, 1, 73,254,152,242,108, 13, 34,158, 43, 37,213, 27, 13,175, 81,141,167,185,121,243,
+166,172, 93,187,118, 80,169, 84,133,202,228,193,131, 7, 57,134, 97, 74,116, 71,107,181,218, 95,226,226,226, 28,148, 74, 37,186,
+118,237, 58,117,205,154, 53,198, 5,123,212,177, 44,251,137,146,181, 98,253,129, 43,211,127,217,122,235,202,209, 95, 29, 87,248,
+140,110, 63,108,242,202, 91, 40,101, 31, 73, 1,143, 55,233,220,233, 61,246, 82, 11, 29,100,150,223, 65,149,168,196,155,157, 63,
+ 66,145,165, 66,211, 21, 75, 1,136,161,209,241,176,163,103,127, 8,173, 28,177,120,236,104,199, 5, 59,118, 77, 0,176,193, 48,
+174, 55,192, 0, 3,138,193,142, 16,114, 30, 0,124,124,124,230,251,250,250,190, 36,132,156,167,148,246,200, 39, 58,231, 41,165,
+ 61, 10,174,201,239,179, 63, 59, 46,184,182,248,113,241,207,243,230,205,171,227,231,231,183,170,101,203,150, 71, 3, 2, 2, 62,
+148, 71,180,144,183,255,243,206,226, 91,241, 0,249,171, 14,189,189,189, 73,209,247, 79, 20, 45,142,187,243,238, 67,164,226,187,
+ 78,205,157,207,251, 7, 63, 25, 53,202,187,227,160,158,237,186, 68, 68,167,134,186,185,218, 91,191,124, 25,108,202,113,220, 29,
+125,114, 73, 34,145,244,232,208,161,131, 32, 61, 61, 29, 70, 70, 70, 72, 78, 78, 70, 92, 92, 28,180, 90, 45, 84,153, 25, 80,103,
+102, 64,149,145, 14,109,102, 58,222, 63,125,140,250,110,213, 36,249,147,229,203, 35, 64, 37, 42, 85, 69,149, 45,177,137, 9, 36,
+ 38, 38, 32, 21,116, 27, 18, 66,190,183,176,176,120, 72, 8, 89,152,223, 41, 77,154, 59,119,110, 10,199,113, 88,185,114,165,169,
+ 92, 46, 63, 65, 8,145,148,103,199,196,134,223,163,101,195,186,188,215, 17, 65,104,211, 96, 4,106, 84,237,142,136, 68, 37, 82,
+178,181, 72,202,208,162,105,187,205,168,220, 96, 41, 42, 53,244, 69,104, 84, 26, 28,157,220,121, 16, 72,202,220,252, 57, 38, 38,
+230,147,227,163, 71,142, 64,161, 80,192,205,205, 13, 67,134, 12,193,220,185,115, 49,100,200, 16, 56, 58, 58, 98,216,192, 94, 88,
+188,120, 49, 62,126,252, 88, 94, 82,213, 53,106,212, 80,187,186,186,170, 93, 93, 93,213, 90,173, 22, 57, 57, 57,200,200,200, 40,
+158,223,211, 42,252,148,216,217,205,115,112,112, 8,178,179,179,123, 41,149, 74, 47,190, 32,228,181,202,213,213,174,117,239,222,
+164,246,192,129,252, 40,153,140,248, 3,114,125,108, 89, 91, 10,189,189, 58,116, 19,103,164,239, 1,144, 39, 82,141, 30,101,131,
+123,254,117,112,255,110, 19, 76,153,228, 6,194,147,130,240,196, 80,228,222, 68,243,102, 45, 69,230,230,164, 71, 57,101, 61, 20,
+192,139,214,173, 91, 59, 78,158, 60,153, 72, 36, 18, 76,157, 58, 85, 59,118,236,216,183, 67,134, 12,121,123,227,198, 13,214,213,
+213, 21,149, 42, 85, 34,149, 42, 85,114, 0,240, 34,255, 55,101,194,212,141,172, 80,107, 67,239,154,187, 27,127, 96, 97,221, 42,
+ 71, 39,233,191,120, 77,124,234,242,173,225,107, 35,222, 40,170,189,121,116, 39,245,109,200, 57, 46,226,201,237,148,248,183,217,
+213,150,111, 13, 95, 59,111, 75, 92,137, 15,181,191, 63,184, 83,231,253,181,138, 92,133,160,119, 79, 47,197,248, 49,131,106, 88,
+202,235, 28,132,211,119, 13, 42,187, 56, 15, 91,188,106,147,118,236,132,233,218,221,127,236,161,217,217,217,200,202,202,194,166,
+ 77,155,152,115,231,206,197,177, 44, 59,189,180, 49, 16, 0,232,116, 58,140, 31, 63,222,216,212,212, 20, 49, 49, 49,133,138, 40,
+ 0, 36, 36,167, 6,223,127, 18,242,122,230, 79, 3, 60,115,213,106,245,149,219, 79, 67,107,187,187, 58, 19, 66, 75, 93,136, 34,
+ 22, 10, 59, 55,105,222,156, 79,105, 6,136,192, 5,239,247,175, 70,214,199, 52,100, 37,165,129, 47, 52, 6, 3, 9,116,156, 24,
+230,245,155, 33,236,201,115, 56,217,216, 9, 36, 66,161, 97,235, 44, 3, 12,248, 31, 69, 89, 92,164, 40, 89,242,243,243, 91, 85,
+214,249, 34,239,154, 98,199,133, 68,170, 56, 9, 43,250, 25, 0,252,252,252, 86, 81, 74,123, 4, 4, 4, 28, 1,160,212,147, 47,
+140, 43,120, 47, 26, 37,190, 92,214,193, 87,105,124,103,207, 93, 8, 11, 51,153, 89,179, 70,238,246,103, 47,251, 63,189, 19,240,
+ 52,180,114, 37,107, 27,170,211, 88,252,182,110,139, 51, 81, 40,245,157, 12,238, 97,109,109, 13,173, 86,139,119,239,222, 33, 54,
+ 54, 22, 90,173, 22, 76,110, 46,212, 25, 25, 80,165,167,131,205,205,134,136,101,161, 76, 78,130,149,145, 20,248,123, 69, 98,121,
+ 55, 88, 34,209, 42,120,151,154,154, 66, 98, 98, 10,158, 80, 88,162, 91,177, 20,155,141,155, 53,107,118, 60, 36, 36,164,121,167,
+ 78,157,150, 19, 66,204, 40,165, 81,113,113,113, 29, 23, 45, 90,164,182,179,179,195,248,241,227,107, 2, 24, 81, 46,201, 20,107,
+ 60, 92,237,107,162, 70,181, 17,168, 92,169, 3, 50,114,117, 72,206,210, 33, 41, 67,139, 29,155, 91,226,228,238,102,184,119,178,
+ 45, 66,174,116, 70,134,206, 30,114,199,239, 65, 89, 77,157,178,108, 94,187,118, 13,203,150, 45,195,242,229,203,177,114,229, 74,
+ 44, 95,190, 28,113,113,113,168, 91,183, 46,162,163,163,113,233,210, 37, 36, 36, 36,192,218,218, 26,143, 31, 63,198,250,245,235,
+113,239,222, 61,125,148, 59,189,174, 33,132, 84,200,151,206, 48,204,200,132,222,189,235, 37, 90, 90,214,110,212,168, 81,183,169,
+ 83,167, 86,107,221,186,117,225,249,106,213,170,185,200,100,178,143,132,144,221,132,144,134,101,217,226,128, 70, 54, 54,117,161,
+ 81,191,206, 47, 43, 33, 8,145,162, 67,231, 80,180,110,251, 20, 90,157, 8, 60, 34, 1,143, 39, 5,195,164,194,194,194, 17,148,
+146,186,229, 36,113, 81,114,114,178,251,245,235,215,121, 17, 17, 17,144, 74,165, 0, 16,185,100,201,146, 45,107,215,174,125,101,
+101,101,197,158, 63,127, 30,103,206,156, 65,143, 30, 61,248, 99,199,142,117,175, 84,169,210,246,242,238,123,241,198,248, 7,135,
+215, 93, 26, 44,212, 89, 52,148,202, 42, 87, 65,174,252,251, 73,237,109,140, 1,224,210,251,247,217,182, 46, 89,126,185,217, 65,
+209,230,206, 57,191,150, 55, 17,158,210,197,220,179,183,175, 31, 30, 62,125, 57, 51, 41, 49, 93,216,168, 94, 29,165,239,178, 57,
+162,202, 85,170,255,182,120,238, 79,246,113, 89,210,140,206, 83, 47,189, 62,117,249,113,206,240, 81, 63, 50, 99,198, 77, 86, 93,
+186,124,237, 52,199,113,245, 74, 91,113,200,113, 28, 18, 18, 18,240,242,229, 75,132,135,135, 35, 57, 57, 25, 41, 41, 41,200,206,
+206, 46,116, 55, 26,101,103, 93,216,178,247, 92,160,177, 76,102,212,188,158,187,203,163,231,175,146,140,101, 50, 35,247, 42, 46,
+ 53, 8, 89, 90, 98, 59,194,178,108, 61,169,145, 12, 0, 65, 70,200, 29,228,164,231, 32, 39, 35, 7,217,105, 57, 80,107,249, 80,
+169,121, 80,106,120,112,245,252, 14, 57,185, 42,228,164,102,130, 99,217, 6,134,238,198, 0, 3, 12, 40,163, 95, 62,239,227,227,
+ 51, 95,207,203,245,118,111, 22, 39, 94, 62, 62, 62,243, 9, 33,231,231,205,155, 87, 7,122,204,105,166,148,238, 44,254, 42, 56,
+ 87,110,120,135,148,148,176, 28, 83,155,218,125,103,252,252,203,165, 35,127,108,182, 85,171, 21,209, 86, 22,114, 86,110, 36,182,
+ 30, 51,126, 37,178,115,210,251,228,164,233,191, 74, 42, 61, 61, 29, 31, 62,124,128, 76, 38,131, 72, 40, 4,171, 84,130, 85,230,
+ 66,153,158, 10,158, 86, 13, 17,203,194,210, 72, 6, 87, 71,123, 84,182,179,215,203,230,187,155, 87, 11, 39,190, 23,117, 23,174,
+110,230, 1,177,177, 28, 98, 19, 57, 38,158,191, 13, 0, 16,137, 68,192,162,229,250, 20,166,181,147,147,211, 95,135, 15, 31, 22,
+ 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52,244,122, 72, 72, 72, 15,119,119,119, 0,112, 43,207, 94,
+ 86, 10,143,213, 49, 20, 49, 31, 35, 17, 17,251, 28,150,102, 85, 33, 52,170,129,164, 12, 45, 36,178,170,208,169,255,246, 62,170,
+178,162,160,212,234,183, 48, 82,163,209,128, 97, 24, 48, 12, 3,141, 70,131,113,227,198,225,126, 64, 0,142,158,185,129, 15,239,
+195, 80,179,138, 61,126,248, 97, 56,154, 53,107,134,128,128,128, 50,109,141,108, 68,116, 11,218, 65,176,174, 27, 15, 98,185,149,
+186,197,220, 43,143,244, 33, 91,148, 82,162, 71,126,174,237,209,163, 71,245,176,220, 92,188,124,253, 26,157,150, 44, 1, 0, 92,
+188,120,241,147,123,153, 57,115,166,248,213,171, 87, 99,158, 62,125, 58,134, 16,178,142, 82, 90,242,100,115, 10, 92,184,240, 0,
+ 63,253,244, 10,201,201,121,243,181,143, 29,249,155,151, 70,124,208,162,171,119,158, 71,203,220,220, 28,235,214,213,213, 43, 63,
+ 89,150,197,206,157, 59, 11,221,133, 0, 32, 16, 8, 90,207,156, 57,179,111, 73,215, 87,175, 94, 93, 84,158,205,153, 3,156,165,
+ 47,162,100,147,204,170, 87,174, 99,106, 93, 31,169,186,231,117,159,199, 37, 76,153, 57,192,121,195,186, 19,177, 42, 25, 81,239,
+ 35,108, 76, 37,129, 84,181, 95,159, 52,190,191,180, 73, 99, 94,121,212,254,143,201, 89, 11, 38,255, 56,212,202,212,220, 54,119,
+247, 22, 95, 11, 30,159, 71,255,122,170,205,168, 83,205,202,252,251, 22, 27,115,126,154,177,232,185,134,137,153,140,152,191,194,
+202, 10,113,193,178, 44,226,227,227,145,156,156,140,232,232,104,164,164,164,228, 63,251, 41,159,173, 92,173, 96,131, 8,101,116,
+ 52,162, 78,239, 70,229,225,195,209,116,249, 50,176,156, 0, 74, 5,139,117,173, 58, 34, 61, 83, 9, 53, 71,224,216,184, 21,126,
+188,120, 23, 60,202, 2, 59,182, 26,122, 18, 3, 12,248, 31,133, 62,225, 29, 10, 8,145,175,175,111,143,111,253,255, 69,201,150,
+175,175,239, 75, 95, 95, 95,189,255,171,184,203,176,232,113,185,225, 29, 0, 32, 43,249, 85,184,149,107,253,248, 92,101,174,145,
+157,173,141,218, 72, 42,225, 50,179,178,249,207,131, 3,181, 57, 9,239,222, 84,224, 62, 66, 67, 66, 66,234,198,199,199, 35, 58,
+ 42, 10,140, 50, 23, 60,181, 6, 84,165, 64,167, 54,173, 32, 5, 32,229, 17,136, 56, 45, 4,124, 49,178,115,178, 0, 32,180,220,
+206, 81,167,251, 76,217, 34,132, 64,108, 98, 2,177,177, 49,196,114,147, 79, 20, 46,125, 20, 27,137, 68,114,248,196,137, 19, 14,
+ 78, 78, 78, 88,182,108, 25,156,157,157,107,213,171, 87, 79,209,182,109, 91,153,157,157, 29,106,215,174,141, 86,173, 90,225,210,
+165, 75, 0, 80,110, 76, 41, 29, 35, 13,122, 19,137,214, 41,105, 1,184,123,251,119,104,148,106, 52,242,252, 29, 90, 65,101,216,
+212, 89, 10,238,221, 65, 40, 62,158,205, 83, 15,236,123, 34, 54, 58, 18,132, 47,126,169,175,242, 84,240, 57, 48, 48, 16, 71,206,
+250,195,193,213, 3,209,111, 95,227,245,173,235,184,111, 99, 5, 87,143,218,133,110,160, 82,211,200, 66,176, 98,107, 97,120, 7,
+ 73, 90, 90,154,196,210,210, 82, 93,144,119, 14, 14, 14, 95, 67,182,134,206,158, 61, 27, 25, 66, 33,224,237, 13, 81,120, 56,180,
+ 90, 45, 90,180,104,129,166, 77,155, 2, 0, 90,180,104, 1,129, 64,128,250,245,235,195,209,209, 17, 91,183,110, 29,138, 82, 86,
+245,241, 8, 94, 48, 76,106,173,106,213,170, 21, 18,173,253, 7,146,241,252,105,103, 16,136,177,105,203,223,209, 28, 92, 92, 92,
+240, 49, 33, 28,132,208,144,114,210,184,220,222,222,126,145,131,131, 67,181,181,107,215,242,165, 82, 41, 38, 76,152, 80, 53, 39,
+ 39,167,114,190,148,140,121,243,230,229,169, 84,139, 23, 99,201,146, 37, 80,171,213,138,210,140, 29, 88, 95,223, 49, 41,141, 27,
+ 99,103,239,212,199,203,186,114,189, 14, 93, 58,161,170,123, 7,116,232, 18, 13, 0,171, 44, 5,145, 3, 87, 47,172,123,218,186,
+146,229,158,171,151,175, 45,110,227,217, 97,129,207,120,139, 21,126, 59,210,203,157,243,152, 25,181, 47,251,141,120,208,250,205,
+219, 15,172,255,101,222, 52,105,116,178, 38, 61, 46,157,230,200, 37, 2,185,155, 29,145, 79,249,121,249,135,248,248,240, 89,136,
+185, 92,238, 74, 75,142,227, 16, 30, 30, 94, 56,167, 79,165, 82, 33, 55, 55, 23, 49, 49, 49,133,117, 70,105,108,218,117,242,168,
+158, 13,114,149, 74,197,163,224,183,209, 11,167, 14,107,153,171, 84, 42,222, 70, 68,135, 81,186,177, 68, 54,198,227,241,130, 21,
+217,138, 78,138, 12, 21,146, 95,188,129,115, 71, 87,232, 24, 2, 13,195, 34, 57, 53, 27,106, 6, 96,121, 66,212, 25,248, 3, 88,
+ 34, 64, 74,124, 28,120,124,126,160,161,187, 49,192,128,255, 89,148, 27,222,129, 16,114,190,101,203,150, 71,139,170, 78, 5,159,
+ 1,168, 1,148, 53,149, 39,185, 40,153, 42,112, 39,150,246, 63,197,236,234, 59,192,252,108,142, 86,185,225, 29,242,127, 72, 26,
+212,115,117, 92,189,120,152, 51,199, 48, 53,147, 82, 18, 25,129, 64, 34,172,100,166, 76,168, 72, 14,170,213,234,243,215,175, 95,
+239,221,185,115,103,201,219,224, 64,104, 50, 51,161,201,204,128,144, 99, 96, 41,107, 2,158, 86, 13,162,209,192,169, 22, 7, 85,
+182, 12,254,247, 67,116,106,181,250,188,190, 68,139,199,231,127, 58, 47, 75, 46,135,196,196, 20, 18,185,188,184,107,145,148,147,
+ 81, 70,189,122,245,234,216,162, 69, 11, 80, 74,177,115,231, 78,104,181, 90,177, 86,171,133, 70,163,129, 86,171, 69, 86, 86, 22,
+ 14, 28, 56,128,109,219,182,221, 7,176,183,220,206,140,209, 92,191,114,237,102,179,209,195,122, 8, 47,158, 95, 7, 70,195, 66,
+ 73,156,145,155,171, 67,142,198, 8,172,213,112, 32,241, 2,248, 2, 41, 90,214,175,138,179,127,158,210,130, 81,223,208,147,133,
+127,162, 10,197, 68, 71, 34,246,125, 24,228, 89, 31, 97, 99,106, 4, 69,120, 24, 26,253, 48,226,139,212,137, 74,149, 42,129,227,
+ 56,120,121,121, 21, 78,174,254, 82,178,149,154,154,138,115,231,206,161, 69,139, 22,240,244,244, 68, 92, 92, 28,194,195,195,209,
+189,123,247,194,107, 2, 3, 3,241,252,249,115,184,185,149, 45, 18,166,164,233, 46,198,198,188, 24,240,253,247,223,139, 30, 62,
+124, 8, 74, 41,220,221, 77, 97,106, 98, 12,194,147,192,195,195, 22, 64,222, 24,160,125,251,246,200,202, 10,103,210,211,233,197,
+114,242,241, 48, 33,228,140, 70,163,121,215,174, 93, 59,199,247,239,223, 99,198,140, 25,130, 99,199,142, 21, 72,201,240,241,249,
+116, 49,133, 82, 89,186,235,190,102,189, 90,115,170, 50, 22,158, 82, 89,229, 42,166,214,245, 81,213,189, 3, 0,160,115,143,209,
+168, 90,221, 5, 89, 41, 65, 85, 84,202,200, 62, 34, 65,186, 69,208,166,184, 87, 50,239,186,163, 84, 73,183,223, 2,208, 39, 0,
+ 48, 85,190, 61,150, 24, 45, 28,126,252,204, 95,151,198,119,239,209, 75,168, 99, 25,166,174,171,208,252,196,233, 11, 73,113, 81,
+209, 27, 17,125, 57,228,111,253,175, 76, 21,143,205,202,202,130,177,177, 49, 66, 66, 66,212,222,222,222, 18, 30,143,135,119,239,
+222, 21, 18, 45, 91,107,203,218,173,155,214,173,181, 98,253,129, 43,198, 18,137,164, 75,251, 38, 30,175,222, 70,197, 82, 74, 34,
+ 75, 85, 91,117,186,107,193, 47, 2,189,108, 28,171,243,195,111, 63,132, 85,219,238, 80,171,121, 80,106, 56,168, 25,128,225,139,
+224,208,176, 57,204,221, 60, 64, 1, 60,121,120, 95,167,214,233,174, 24,250, 26, 3, 12,248,159, 86,181,104, 89, 36, 41,255,115,
+ 26,128, 72, 95, 95,223,148, 34,106, 83, 50,128, 64, 0, 13,242,175, 75, 46,246,187,100,228,173, 30,108, 90,196, 78,114, 17,194,
+ 85,244,179,166,216, 53,122, 13, 0,139,206,209, 42,145,104,149,177,164, 18,214,214,214,182,141, 26, 53,113,219,245,199,113, 80,
+ 74,241,230,249, 26,164, 39,189,198,162, 85, 15,220,156,157,157, 61, 99, 99, 99,253,245, 73, 4,203,178,199,246,236,217, 51,171,
+121,227, 70,141,170, 56, 59, 35, 48, 50, 2, 34,202, 66,196,178,224,105,213, 16,176, 26, 56,215,101,193, 35,114,196,199,103,194,
+239,240,241, 16,150,101,143,149,103,183, 86,247, 94, 88, 22,155, 9, 66, 8,214,182,172, 11,177,137, 28, 34, 99, 57, 38,254,117,
+179,144, 92,157, 95, 54, 15, 98,185, 28,110,205,203, 15, 8, 79, 41, 85,152,152,152, 60, 13, 14, 14,110, 90,183,110, 93,204,154,
+ 53, 11,145,145,145,224, 56, 14,137,137,137,170,132,132,132,184,228,228,228, 72, 0,167, 1,236,210, 39,242,184, 72,173,218,112,
+254,228,254,201, 45,219,120, 90,127,223,103, 27,206,252, 57, 19, 25,153, 89, 80, 48, 50,228,170, 24,228,170,249,176,180,170,135,
+230,245,235, 35, 62, 46, 9, 47, 31, 94,201, 17,168, 21,107, 42, 82, 65, 9, 33,120,254,252, 57,170, 57,154, 32,236,174, 63,172,
+141,132,104,224,104, 15,199,214,109, 10,227, 75,149, 5, 33, 31,204,208,161, 67, 11, 35,195,127,247,221,119, 17,195,135, 15,119,
+152, 57,115, 38,254,248,227, 15,220,191,127,255,179, 9,218,158,158,158,184,115,231,206, 82, 0,139,203, 19,245, 52, 26, 13,106,
+213,170,133, 39, 79,158,224,250,245,235,232,208,161, 3, 60, 61, 61, 17, 20, 20,132,171, 87,175,226,249,243,231, 32,132,192,202,
+202, 10,186, 60,242,172, 43,205,152, 86,139, 19,191,254,182,103,254,250,245,219,234, 12, 27, 54, 12, 39, 79, 30,197,232, 81, 53,
+ 65,120, 18, 16, 34, 65,175,158, 53,177,108,249, 19, 52,111,222, 30,214,214, 66,172, 95,119,246,131, 82,201, 30,208, 35, 27, 87,
+ 92,189,122,213, 81,165, 82, 33, 35, 35,131,202,229,114,146,154,154,183,162,181, 36, 69, 75,161, 80, 72, 75, 51, 20,252, 44,116,
+ 77, 70, 54, 77,167, 57,207,251,164, 49,207,235,117,232, 18,131,206, 61, 70,225,218,249,189,184,121,229, 58, 44, 5,145, 17, 48,
+206,190,148, 18,145,146,149,144,235,190,221,163,241, 88,126,108,238,149,237, 83,191,183,224, 59, 56,112, 39,124,182,101,102,148,
+ 81, 71, 41, 33,132,164,189, 58,248,215,105,138, 94,173, 90, 54,175, 94,215,197, 65,156,158,146, 68,255, 60,123, 41, 68, 27,113,
+242, 92, 1,193, 42,111,151, 5, 74,233, 50, 31, 31,159, 95,242, 63,239, 91,184,112,225, 88, 63, 63, 63,155,143, 31, 63, 22,206,
+209, 74, 74, 73,187,217,202,123, 10,155,154,145,169,217,179,254,231,254, 50,169, 68,188,208,111,207,109, 29, 31, 15, 75,179,203,
+112,220,214,129, 51, 22, 77,123,251,230,185, 83,101,153, 24,103,127, 94,140,192,171,183,160,227,137,240,211,245, 71, 80,107, 89,
+100,164,164,226,198,152, 73,144,219, 89, 96,219,237,147,137, 28,199,253,110,232,106, 12, 48,224,127, 23,101,112,145,146, 98,236,
+ 37,234,113,221, 19, 61,236,124, 53,138,171, 88, 69,161,215, 18,188,148,148,148,164, 59,119, 30,225,246,249, 21,240, 63,191, 2,
+ 47,159, 7, 34, 62, 78,131,184, 68, 21, 76, 77, 77, 31,148,209,241,119, 42,222, 57, 40, 20,138,190, 11, 23,253,242, 81, 42, 51,
+ 66,187,142, 29, 97,111, 99, 11, 35,145, 16,124,134, 3,159, 8,145,147,108,142,176, 32, 5,230,238, 57,152,148,163, 80,244, 45,
+222, 73, 20,183, 89,148,100, 16, 66, 32, 49, 53,129, 88,110, 2,137,137,233, 39,110, 68,169,169, 41,164, 38,166, 16,136,197, 37,
+ 77,154,255,204,102, 78, 78, 78,191,254,253,251,167,103,102,102, 98,236,216,177,240,247,247,127,126,229,202, 21,211,192,192, 64,
+ 89, 82, 82, 82,117, 74,233,119,148,210, 29,165,145,172,226, 54,211,210,222,103, 83, 70, 61,200,247,151,233, 74, 21, 99,133, 1,
+ 35,142,193,152, 23, 3,134,229, 64, 1, 56, 90,138,209,186,211,114, 36,105, 90,225,216,246,149, 10, 78,171, 26, 86, 52,134, 86,
+113,155,148, 82,106,103,103,247, 89, 30, 92,191,126, 29, 3,250,247, 67,151, 62,189, 97, 83,165, 26,108, 59,117, 71,151,177, 63,
+ 97,251,246,237,224,241,120,176,182,182,254, 68,225, 40,106,115,223,115, 42, 60, 28, 68,201,225, 32, 74,246, 62,163, 2, 0, 63,
+ 28, 60,120,240,215, 6, 13, 26,220,186,127,255,254, 26, 0,131,138,254, 87,145,180, 44, 41,170,102,149, 82, 70, 11,166, 77,155,
+166,124,251,246, 45,140,141,141,193, 48, 12,238,223,191,143,109,219,182, 97,237,218,181,120,254,252, 57,172,172,172,224,230,230,
+ 6,181, 90,141, 39, 79,158, 40, 1, 44, 40,163, 46,113,201,201, 76,191, 77,155,252, 82,123,244,104,139, 61,123,182,192,222,190,
+ 21,132, 2,123, 8,132, 54, 48,150,215,194,238, 93,191,162, 91,183, 70,248,235,236,241,180,148, 84,166, 95,241, 40,238,165,164,
+ 83,245,232,209, 35,108,223,190, 29,253,251,247,143, 27, 48, 96, 0,155,153,153, 89,168,104, 21,236,198,190, 36,127,142,153, 90,
+173,150,148,102,115,236,207,193,113,115, 86,132, 44, 75,252, 24,215,194,255,214,131,161, 55,175, 92,199,135,183, 55,113,243,202,
+117,220,189, 25,224,147,248, 49,174, 69,163,102, 53, 68,125,199, 78,158,179,255,212, 73,190,220,212, 1,251, 79,157,228, 15,153,
+ 50,125,101,147, 46, 29, 22,148, 87,231,243,203,145,230, 36, 37,206, 91,181,102,115, 14,163, 85,241, 86,111,220, 26,175, 76, 78,
+ 88,128,130,165,152,165,168, 89, 69,109, 42, 20,138, 29, 74,165,210, 81,169, 84, 58,170, 84,170, 5,145,145,145,237,102,205,154,
+149,204,178,108,161, 90,154,244,242,236,131,208,187,123, 87,217, 90, 91,200, 90, 53,173, 83,115,221,142, 63,111, 71,199, 36, 30,
+ 42,136,161, 85, 74, 25,169,114,148,170,126,189,251, 14,207,205, 72, 87,163,229,116, 31,112, 82, 57,212, 44,160,163,124, 48, 68,
+128,224, 21,235, 32,179, 52,193,225,136,103,138, 76,157,182, 95,209, 24, 90,229,220,251, 23,195, 96,211, 96,211, 96,243,223,211,
+230,127, 50, 8, 33, 14, 69,247, 58,204,143,171,245,183,162, 85,222,146, 74, 39, 39,167,118,223,247,234,132,246, 61, 22,130, 82,
+138,215,207,126, 67,122,242, 27, 56,217, 75, 16, 30,157,213, 18,128,191,190,137,161,148, 70, 19, 66, 90, 76, 91,176,240,212,128,
+239, 58,122,212,173, 82, 69, 82,185,178, 43,140,109,109,145,146,146,140,123, 15, 95,233, 86, 30, 57, 17,146, 79,178,244,217,130,
+ 7, 28,199,229, 77,114, 7,208,113,218, 92, 16, 62, 31,200, 15,227, 80,208, 49, 86,105,218, 10, 68, 32, 0, 75, 57,168,213,106,
+170, 71, 58, 99, 9, 33,253,134, 13, 27,118,227,252,249,243,188, 46, 93,186, 52, 60,125,250, 52,247, 53, 5,145,147, 24,118, 75,
+110, 87,163,199,202,121,227,143,181,232,208,219,212,189, 78, 19, 81,147,202,124,104,117, 4,241,113, 81, 56,127,234,177,246,213,
+163, 43, 89,148, 81, 13,202, 77, 46,123, 11, 30,173, 86, 27, 93,189,122,117,187,237,219,183, 23, 78,134,103, 89, 22, 41, 41, 41,
+120,240,224, 1,234, 53,109, 14,143, 81, 99,144,156,156,140, 77,155, 54,193,197,197, 5, 61,123,246, 68, 90, 90, 26, 24,134,137,
+214,179,172, 88, 0, 87,242, 95,159, 16,218,124, 65,133,150,231, 54,116,115,115, 19,171, 84,170,134, 14, 14, 14,124, 66,200, 6,
+141, 70, 51,114,222,188,121, 14,171, 86,173, 66,205,154, 53,145,146,146, 2, 99, 99, 99,184,187,187, 35, 57, 57, 25,143, 31, 63,
+102, 21, 10,197,118, 0,203, 40,165,201,229,164,239, 29, 33,164,197,212,169, 19, 79,253,234, 55,222, 93,165,110, 47,182,180,108,
+ 3, 74, 25, 36, 39, 71, 34, 59,235,190,118,249,178,189,239, 19,147,116,125, 41,165,111,245, 44,166,197,147, 39, 79, 6,242,183,
+224, 9, 15, 15,127,225,225,225,225, 94,154,162,165, 15,214,157,136, 85, 1, 56,178,122, 70,171, 25, 89, 41, 65,238,150,130,200,
+136, 22,117,185, 77,235, 78,196,170,150,206, 48, 95,145, 18,233, 31,150,144,123,101,251,254, 83, 39,249, 35,250,244, 99,157,229,
+111,125,164,182,244,207, 14, 61,203, 45, 31,218,176, 97,195, 74,132,164, 85, 77, 74,125,243,116,244,216,241, 3,205, 68,202,139,
+ 13,156, 83,221,120, 46,141,164,207,159, 63,143,208,119,207,208, 98,118,195, 8, 33,237,230,205,155,119,133, 82,250,201,220,132,
+164,148,180,155, 45,123, 76,166, 25, 25,153, 47,146, 94,157, 13,214,195,214, 99, 66, 72,199,186,245, 26,157,252,117,149,159, 93,
+251,105,179, 4, 97,183,110, 3,172, 14, 81,254,183,193, 74, 52,220,186,128,107,137,153, 90,109, 31, 67, 84,120, 3, 12, 48,168,
+ 89,101,113,145,127,247,228, 23,159, 12,143,252,189, 15, 5,250,252, 58, 54, 54,214,223,173,154,243,213,176,176,118,223,185, 56,
+219, 0, 0,194, 35,226, 17,151,168,190,170,175,219,176, 4,178,213,228,224,185,139,131, 36, 18, 73, 15,146, 31,194,129,126,193,
+166,210, 12,195,196, 86,169, 82,165,148,179, 37,135,122, 98, 89, 54, 81,207,116,222, 38,132, 12,119,115,115,243,139,138,138, 58,
+ 69, 41,205,253,218,146,200, 73, 12,187,101,105,233, 86, 45,224,250,201,233, 15,111,159,239, 68, 25, 77, 61, 0, 32, 2,113,133,
+ 54,149,206,201,201, 25, 63, 97,194,132, 29, 66,161,240,255,216,187,238,240,168,138,175,253,206,189,219,107, 54,189, 19, 32,144,
+ 66, 39,116,233, 69, 65,162, 52, 41, 34,189, 35, 22, 68, 65, 80, 80, 58,202, 15, 5, 17, 21,144,142,168, 84,165,119,233,210,145,
+ 26, 90, 32,144,222, 54,117,147,173,247,206,247, 7,217,117, 9, 41,187, 33, 40,248,237,121,158,155, 45,119,243,222,233,243,206,
+153, 51,231, 84, 65,145,205,153,213, 6,139,227, 56,214,100, 50, 73, 57,142, 99, 1, 16,134, 97, 44, 66,161, 80,191,117,235, 86,
+139,197, 98,121,104, 48, 24, 70, 63,133,122,212,169, 14,176,123,247,238,170,238,238,238,175, 16, 66,122, 83, 74, 35,243,242,242,
+ 12,211,166, 77, 59,181,105,211,166,220,106,213,170,117,137,142,142, 38, 30, 30, 30, 56,119,238, 28,205,204,204,220, 12,224, 83,
+ 74,105,172, 19,233,137, 37,132, 52, 24, 61,230,135, 55, 61, 60,150, 69, 83,138, 6,160, 32,132,193,149,156, 28,126,119, 65, 1,
+247, 83, 17, 97,116, 20,207, 82, 76,147, 54,235,234,213,171,171, 1, 8, 75,178,209,114, 74,228,249,219,245,133,113,111, 16,101,
+193,182,175,191, 73,208, 3,192,231, 11,179,115, 0,172,120,175,167, 7,127,227,194,138,249,129,234,219,147,190,217,166, 93,229,
+ 8, 92, 84, 84, 84, 40,195, 48,253, 0,212,245,145,100,215,244, 22,231,112,132,208,246,132, 48, 94, 0, 46,215,174, 93,123, 39,
+128,132, 10,214,243, 45, 0, 33,197,191, 79,187,246,251,159, 0,254,116, 18,235, 44, 33,164,230, 7, 31, 77, 24, 39, 22, 10, 95,
+ 6,199,213,159,245,219, 38,234, 10, 42,237, 18,151,184,228, 63,166,213, 26, 85,210,247, 2, 71, 1,238,198, 38,116, 6,128,176,
+176, 48,122,231,206, 29,167, 39,220,146, 86,227,120,228,241,253,151,167,193,201,200,200,104,252, 44, 11,142, 82,250, 51,128,159,
+ 43, 19,179,136, 72,205, 44,186, 42,154,174, 43, 0,154,253,155,141,202,170,213,194,163, 32,204, 37,202, 43,175,188,242,192,100,
+ 50, 29, 4, 16, 79, 8,209, 0,208,154, 76,166,125,102,179, 57,149, 16,210,248,235,175,191,182,122,190,159, 69, 41, 61, 95,193,
+116,240, 0, 54, 20, 93,149,157,199, 13, 1, 1, 1, 19, 60, 61, 61,107,232,245,122,177, 94,175, 23,217,175, 1,100, 50, 89,186,
+163, 88, 26, 21, 89, 35, 18,100,121,106, 84,228, 9, 34,229, 17,136, 45,133,186,171, 17, 30,129,216,226, 40,222,197,139, 23, 99,
+ 27, 54,108,184,158, 97,152,106,148, 82, 95,128,186, 81,138,116, 74,105,134, 64, 32, 72,188,126,253,122,226,243, 50, 0, 21, 17,
+169, 5, 69,151, 75, 92,226, 18,151,252,167,164, 44, 27, 45,129,179, 96,183,111,223, 38,174, 34,117,137, 61,217, 42,235,126, 92,
+ 92,156, 1,192,169,162,171,248,255,158, 7,240,250,243,158,199,164,164,164,168,202,192, 25, 49,233, 74, 34,128,241,141, 75, 8,
+237,252,249, 98,109, 30,128,137,237,187, 57,135,121,233,210,165,135, 0, 30,186, 90,162, 75, 92,226, 18,151,252,123, 82,146, 54,
+203,225, 88,135, 46,113,137, 75, 92,226, 18,151,184,196, 37, 46, 41, 93,172,164,170, 36, 63, 90, 4, 64,167, 82,254,201, 97,215,
+245, 21, 57,125, 80, 30,190, 11,211,133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,127, 85, 74, 34, 89, 0, 64, 42,112,
+ 40,201,153,135,118,170,236, 2,119, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209, 73, 86, 9,132,211,181,
+117,232, 18,151,184,228,255,183,108,222,188,217,161,160,162,111, 78, 90,241,154, 82,233, 62, 45, 63, 55,231,139, 95, 22, 12,219,
+102,253,190,119,239,222,156,171, 20, 93,226, 18,151, 84,200, 24, 62, 52, 52,184, 54,195,241, 45, 41,101, 88,202, 80, 51,201, 45,
+252,245,174, 86,251,152,219,129, 42, 85,170,104,132, 12, 94, 39,148, 42, 8,225, 57,158,101, 78,198,198,198, 95,119,130, 1,138,
+221,221,221,223, 17,137, 68,157,140, 70, 99, 16,195, 48, 9, 6,131,225, 96, 65, 65,193,146,226,142, 11,255, 77,137,136,136,232,
+127,228,200, 17, 77,171, 86,173, 12, 50,153,204, 82, 88, 88, 40,216,187,119,175,228,213, 87, 95,205,190,115,231, 78,133, 78, 36,
+ 6, 6, 6,118, 88,177, 98, 69,245,206,157, 59,163,102,205,154,186,126,253,250,137, 90,180,104, 33, 26, 49, 98,196,189,196,196,
+196,195, 78, 50,233,218,132,144,117,132, 16,150,231,249, 65, 69, 39, 18,159, 5, 99,103, 24,134, 25, 77, 8,233, 73, 41, 13, 37,
+132,196, 82, 74,183,241, 60,191,204, 17,239,248, 37,224,189, 1,160, 43,195, 48, 81, 0,192,243,252, 69, 0,187, 41,165, 91,158,
+ 34,141,207, 12, 83, 46,151, 55, 4,128,130,130,130, 75,149,133, 73, 8,105, 88,212, 73, 43,132, 73, 8, 25, 42,147,201, 70, 2,
+ 64, 97, 97,225,143,148,210,213, 78, 39,102, 89, 45, 26, 53, 35, 6, 0,112,241,243, 72, 0,128, 83,159, 71,223, 32,206, 60,171,
+ 36, 60,167, 48,158, 44,131,174, 3, 6, 12,152,251,211, 79, 63,125, 78, 41,253,253, 89,180,125, 63,191,224, 37, 95,125,179, 60,
+ 96,252, 59,195,191,192,163,136, 16,101, 74, 29, 66, 94, 22,179,108, 55, 35,199, 29,191, 14,108, 2, 32,240,240,240,232, 47, 22,
+139,219, 24,141, 70,127,129, 64,144,108, 52, 26,143,229,228,228,252, 76, 41, 53, 63,117, 2, 99,136,187,169, 0,126,132,255, 59,
+206, 27,101, 96, 16,201,145,130, 72,154,245, 28,172,246, 25, 60,242,183, 99, 6,176,178, 34,238, 60, 88,150, 29, 31, 16, 16,208,
+ 51, 55, 55,183,128,101, 89,250, 8,150, 60,250, 3,128, 97, 24,194,243,124, 90,102,102,230,160,255, 71, 90,148,144,162,114,173,
+ 90,244,149, 16,128, 47,128,203, 0,198, 83, 74,243, 93, 20,232, 31,171,139,226, 26,173, 93,148,210,100, 27,209,178,115,119,223,
+ 46, 58, 58,250,104,104,104,112,237,222, 61,122,205, 29, 51,122, 44, 97, 89, 6, 87,175, 93, 19,188, 53,104,232, 43, 30, 30, 30,
+129, 74,131,161, 22, 8,225, 11,164,210,171,102,179, 41,113,211,207, 63,169, 34, 35, 34, 56,142,227,177,116,217, 15,175,134,134,
+ 6,127,226, 8,217, 34,132,132,251,249,249,173,155, 60,121,178, 95,183,110,221, 88, 63, 63, 63,196,197,197,105,126,249,229,151,
+136,111,191,253,182, 47, 33,100, 80,145, 47, 31,103, 51,219,218,207,131,121, 69, 37, 35, 29,145,199, 33,207,140, 67, 41,133,216,
+ 79, 41, 61, 94,209, 2, 44, 40, 40,120,183,160,160,160, 89,147, 38, 77,232,202,149, 43,201,144, 33, 67, 40, 33,132, 20, 22, 22,
+174, 65, 5, 93, 63, 40, 20,138,239, 58,119,238, 28, 22, 22, 22, 22,123,247,238,221,174, 27, 55,110,220, 61,120,240,224, 80,133,
+ 66,113, 27, 64,184,147,112,171, 51, 51, 51, 27, 20, 22, 22, 34, 40, 40,104, 37,128, 70,207,160, 17, 17,150,101,183, 5, 6, 6,
+210,249,243,231,255,222,160, 65, 3, 95,173, 86,107,153, 56,113, 98,167,211,167, 79,191, 74, 8,233,230, 40,217, 34,132,184, 19,
+ 66,150,249,249,249,121,125,241,197, 23,119, 26, 55,110,124, 89, 34,145,136,111,223,190, 45,159, 48, 97,194, 7, 12,195,244,165,
+148,142,166,212,241, 9,194,138, 25, 24, 24,232, 53,119,238,220,184,168,168,168,171, 34,145, 72,116,251,246,109,197,199, 31,127,
+ 60,190,162,152, 12,195, 44,109,209,162,133,251,231,159,127,126, 35, 34, 34,226, 20,203,178,226,132,132, 4,102,250,244,233,239,
+176, 44,219,135,231,249, 49, 21, 73,167,175,175,175,251,244,233,211,111,180,104,209,226,180, 72, 36, 18,221,188,121,147,153, 60,
+121,242, 59,206,164,211,211,211,179,189,167,167,231,242,148,148, 20, 1, 0,248,251,251, 55,173, 81,163,198,183,246, 49, 45,173,
+166, 1,102,179, 57, 79,175,215, 15,200,204,204, 44,209, 17,238,144, 41,139, 95, 7,128,111, 77,214,207,143, 94,203,251, 12, 44,
+221,225, 72,190,163,252, 9, 5,128,254, 31, 46,232,241,232,245,209,247, 95,233, 0,129, 64,192,175,243, 39,244, 98,178,227, 46,
+ 99, 8, 33,221, 59,116,232, 48,253,240,225,195, 63,180,107,215,238,227,245,235,215,251,196,199,199,127, 73, 8, 9,126,243,205,
+ 55,135, 28, 58,116,104, 94,122,122,250,230,202,106,255, 98,145, 68, 66, 24, 2,153, 84,174,118,228,247, 66,134,121,237, 84,247,
+238, 35,127,188,121, 51,234,219,152,152,234, 58,127,255,102,239,189,247,158,111,175, 94,189,152,224,224, 96,220,185,115,199,115,
+253,250,245,181,126,252,241,199,158,132,144,247, 41,165, 15,158,134,100,233,178, 81,207, 96, 68, 20,165,208,252, 93, 70,200,150,
+152,112, 81, 17, 67,174, 60, 7,100,235,179,213,171, 87,127,126,231,206, 29,204,155, 55, 15, 0,150, 56, 57,254, 76,232,217,179,
+103,244,214,173, 91,101,155, 54,109,146, 53,105,210, 4,126,126,126, 40, 90, 76,217, 28, 83, 87,175, 94,253,255,213,228,238,233,
+233,185,242,222,189,123,237, 21, 10,197, 99,223,199,198,198, 54, 12, 11, 11,203, 1,240,161,179,196,205,219,219,123, 3,207,243,
+134,204,204,204,225, 0,160, 82,169,126, 82, 40, 20,238,201,201,201,159, 60,171,133,140,141,153, 20,227, 34, 47,178, 70,171, 68,
+135,165,246, 17,179, 25,142,111, 57,102,244, 88,210,175,255,155, 41,119, 98,239,241, 2,161,184,255,222,125,251,228,181,107,215,
+102, 12, 75,150,192,146,158, 14,243, 7, 31,188,116,240,224, 65,115,159,254, 3, 11,133, 44, 89, 29, 90,189,154,252,215,159,127,
+241,219,186,101,115, 75, 0,215,203,211,100,249,249,249,173, 59,114,228, 72, 96,245,234,213,145,157,157,141,184,184, 56,232,116,
+ 58,244,237,219, 87,216,178,101,203,192,222,189,123,175, 35,132,180,114, 84,179, 69, 8,241,173, 25, 36,216,249,213,103,125,195,
+ 95,125,165,165, 34, 48,184, 6,104,138, 30,241,119, 99,154,236, 60,114,250,189, 48, 13,115,235, 78, 14,125,141, 82,154,234,108,
+ 1,102,100,100, 76,234,217,179,231,150,246,237,219,123, 75, 36, 18, 4, 4, 4,144,110,221,186,165, 37, 37, 37,205,120, 10,226,
+130,162, 85, 24,103,255, 90, 60, 60,144,131, 18,228,238,238, 14,119,119,119, 0, 8,124,218,149,167, 70,163, 89,162, 82,169,122,
+231,230,230, 22, 50, 12, 67, 9, 33, 84,161, 80,200,220,221,221,255,186, 17,115, 43,192, 96, 48,212, 92,176,232,199,111, 58,180,
+110,160, 62,112,224, 0,122,245,234, 69,247,239,223, 63, 26,192, 15, 14, 62, 99, 89,207,158, 61, 11,166, 77,155,166,191, 19, 27,
+ 23,120,227, 86, 44, 81, 72,197,188,151,151,151,240,236,217,179,130,133, 11, 23, 74,167, 79,159,190, 12, 64,111, 39,210,189,236,
+205, 55,223, 52,125,244,209, 71,201, 55,239,220,243,185,114,227, 14, 85, 74,133, 22, 47, 47, 79,246,244,233,211,124, 69, 48, 25,
+134, 89, 58,105,210,164,220,209,163, 71,103,101,106,115,252,178,114,243,169, 68,200,154,253,252,252, 4,191,255,254,187, 97,195,
+134, 13,204,200,145, 35,151, 2,232,227, 68, 17, 47,237,214,173, 91,222,228,201,147,179,111,199,222,247,187,114,253, 22,228, 18,
+161,217,215,215,135, 61,119,238,156,105,193,130, 5,204,236,217,179, 29, 74,167, 66,161, 88,187,113,227, 70,193,239,191, 63, 26,
+251,254,252,243, 79, 38, 52, 52, 84,110,255,155, 66,189, 1, 12, 1, 50, 50, 50,228, 45, 90,180, 88, 11, 32,232, 9, 18, 52, 35,
+ 6, 67,166, 0,239,190,251,110,178,179,237, 37,202,255, 61, 92, 44,199,253, 45,191,180, 22,237,255,225,130, 30, 2,129,128, 31,
+ 57,114,100, 74,241,251,122,189,158, 0,232, 22,229, 4,217,234,218,181,235,167,187,118,237,170,177,126,253,250,175, 55,108,216,
+ 96, 4, 0,169, 84,234,245,203, 47,191,204,235,219,183, 47,250,246,237, 59, 13, 64,165, 17, 45,142,114, 38, 0,144, 72, 37,146,
+152,152, 24, 18, 25, 25, 89,166,113,171,137,231,207,255,120,243,102,227,183, 35, 35,155,104,121,190,166,232,213, 87,243, 39, 76,
+152,144,145,155,155,139,184,184, 56,152, 76, 38, 12, 25, 50,132,109,215,174, 93, 64,223,190,125, 23, 19, 66,222,160,148,154, 28,
+208,234, 44, 8, 12, 12, 28,149,147,147,147,111,213,234,212,170,166, 18,180,105,104,145,212,175,105, 22,139, 88,139,232,245, 15,
+120,178,127, 9,209, 69, 86,199, 9, 0, 16, 21, 32, 93, 4, 60, 53,209,114, 11, 38,213, 57, 33,102,123, 87,149,191,156, 30, 91,
+240,121,254, 3,186,164, 44,141,173, 66,161,232,161,211,233, 54, 23, 77,206,225,175,189,246, 26, 78,159, 62, 13, 0, 45, 1, 44,
+ 33,132,116, 96, 24,230, 45,158,231, 87, 80, 74,203, 10,229,246, 94,247,238,221, 95,222,186,117,171, 10, 0, 54,111,222, 12,179,
+217,140,208,208, 80,136, 68, 34,136,197, 98, 8,133, 66, 91,116,144,255, 79,194, 48,140,228,242,229,203, 8, 8, 8, 40,222, 78,
+ 0,160, 77, 5, 32,167,197,198,198,182,184,112,225, 2,218,183,111, 63,173, 94,189,122, 93,142, 30, 61,234,151,153,153,137,246,
+237,219, 47, 6,240,251,179,206,147, 61, 23,249,207,212, 83, 49, 38,217,238, 17, 51, 99, 88,150,101,112, 47, 54,206,220,190,125,
+199,193, 15, 31, 62, 84, 54,107,214,140, 17, 10,133,208, 29, 62, 12,253,185,115, 80, 42,149,232,217,179,167,240,216,177, 99,106,
+181, 82, 61,226,254,189,251,121, 44,203,128, 82,166, 92,155, 7,119,119,247,119, 62,249,228, 19,191,176,176, 48, 88, 44, 22,155,
+ 71,115,139,197,130,248,248,120, 40,149, 74, 12, 26, 52,200, 71, 46,151,191,227,224, 36, 91, 53, 60,212,231,226,145,221,203, 26,
+ 77, 24,211, 85, 17, 46, 63, 0, 69,252,251, 80,110,126, 27,181,146,246, 98,114,143,102,138,253,223, 77,139,170, 17,224,113,145,
+ 16, 82,213,217, 66,210,235,245, 39,174, 94,189, 58,226,232,209,163, 60, 0,252,241,199, 31,244,198,141, 27,163,159,102, 21,202,
+243, 60,178,179,179,193,243, 60, 91,244,217,250,250,175,170,247,213,106,245,210, 46, 93,186,188,249,224,193, 3,217,158, 61,123,
+ 60, 31, 62,124,232,117,255,254,125,239,240,240,112,193,188,121,243,118,233, 13, 38,214,204, 81,163,133, 51,231, 37, 95,187, 22,
+155,149,154,122,113,213,170, 85,133,132,144,158, 14, 62,227, 13,127,127,127,207, 41, 83,166,128, 8,229, 77, 35,106,213, 11, 99,
+133, 50, 55, 70, 40,118, 43, 44,212,115,247,238,221,139,159, 50,101, 74,181, 6, 13, 26, 4, 20,109,175, 57,132, 25, 16, 16,224,
+245,209, 71, 31, 65, 32, 81, 53,172,223, 32,170,134, 88,162, 80,177, 66,153,170, 89,179,102,237, 98, 99, 99,147, 38, 79,158,236,
+223,164, 73, 19,167, 48,155, 52,105,226, 62,114,228, 72,139, 84,166,106, 81,189,122,104,173,250,117,106, 69,135,135,135,247, 16,
+ 8, 4,150,244,244,244, 7,131, 6, 13,242,127,253,245,215,125,157,193,244,241,241,113,159, 60,121,178, 37, 56, 36,180,115,231,
+151, 95,105, 46,146,169,220, 4, 98,133,166,160, 64,207,221,188,121,243,193,212,169, 83,253, 27, 54,108,232,227, 8,102, 65, 65,
+129,208,203,203, 11,117,235,214, 69,237,208, 80,228,228,228, 96,235,214,173, 88,189,122, 53, 86,172, 88,129,159,127,254, 25,141,
+ 91,189, 2,149, 74,133,164,164, 36,228,230,230, 10,255,233, 54,197, 47,173, 69,191, 53,142,234, 54,118,236,216,164,145, 35, 71,
+166,200,100, 50,190,248,229,225,225,193, 13, 24, 48, 32,117,208,199,139,186, 89,183, 22,203,210,100,117,236,216,241,242,238,221,
+187,239,174, 95,191, 30,181,107,215, 70,231,206,157,197, 0,240,206, 59,239,136,251,246,237,139,141, 27, 55, 98,243,230,205,215,
+195,195,195, 79, 18, 66,186, 59,146,206, 65,131, 6,181,234,211,167,207,241, 62,125,250, 92,234,215,175,223,242,209,163, 71, 63,
+ 54,115, 37, 39, 37,156, 55, 26,141,104, 16,213, 68, 62,107,229,153, 1,229,225,221, 0,214, 47,143,137, 89,253,197,181,107, 15,
+166,213,174,173, 9,185,127,223, 99,205,130, 5, 94,214, 32,221,102,179, 25,241,241,241,112,119,119,199,128, 1, 3,188, 36, 18,
+201, 32, 7,218,207,194,238,221,187, 15,125,248,240,161,242,199, 31,127,244,191,116,233, 82, 64,114,114,178,255,161,131,251,188,
+ 39,126,248,142,202, 77, 41, 22, 39,165, 63, 34,170,247,147,160,136,185,135, 86,148, 66, 99,191,157, 88,161,113, 33,128,200,228,
+193,228,219, 26,173, 52,183, 62,218,216,176,223,228,223, 26,186,123, 5, 75, 63, 41, 35,157,245,231,207,159,191,105,199,142, 29,
+253, 91,181,106,181,133, 16, 34, 43,225, 55,210,198,141, 27,111,221,184,113,227,208,214,173, 91,159, 32,132,212, 45,117, 21, 25,
+ 20,212,243,183,223,126,243,180,126,246,242,242,130, 84, 42,125,130,100,137, 68, 34, 48, 12,131,255, 79,146,158,158,254, 86,155,
+ 54,109, 54,117,237,218,213,112,225,194, 5,164,167,167, 35, 48,208,182,214, 78,169, 0,164,135, 92, 46, 71,112,112, 48,194,194,
+194,250, 31, 59,118,204,207,108, 54,227,254,253,251, 72, 75, 75,187,248, 79,228,201,158,139,188, 72, 82, 44,206,225, 40, 0,187,
+158, 32, 90, 69,177,133,142, 0, 0, 37, 68,119,249,234, 85, 33, 43, 22, 15,252,105,195, 6,137, 72, 36,194,131, 7, 15,112,253,
+250,117, 20, 28, 58,132,194, 83,167,144,154,154,138,252,252,124,248,250,250, 98,217,202,149, 10, 35, 71,135,221,188,117,139,165,
+204,223,246, 6,165,157, 72,144, 72, 36,157,122,245,234, 85, 42, 33, 75, 74, 74, 66,215,174, 93,133, 44,203,118, 42, 65, 61,119,
+176, 88,230, 72,128, 55,217,113,104,203, 44,127,127,241,117,224,206, 4, 32,239, 34, 64, 13,128,197, 8, 36, 94, 1,118,205, 64,
+ 72,126, 12,217, 55,107,176, 95,160, 92,176,131, 20, 83, 27, 57,112,188, 53, 52, 50, 50,114,197,192,129, 3, 25, 0,232,208,161,
+ 3,137,140,140, 92, 78, 8, 9, 45, 67,141,120,176,156, 73,242,116, 86, 86, 22,250,246,237,235, 89,163, 70,141,131,125,251,246,
+245,180,126, 95, 81, 76,171, 54,185, 78,157, 58,153, 50,153,236,103, 66, 72,185, 3,172, 61,166, 70,163, 89,210,181,107,215,222,
+ 27, 54,108, 16, 1,192,145, 35, 71,176, 99,199, 14, 92,187,118, 13,183,111,223,230,163,162,162,188, 23,173,216,180,116,201, 15,
+107, 23,246,104,217, 32,160, 93,211,168, 90,202,252,172,124, 95, 95,223,150,148,210, 80, 7,211,217,117,198,140, 25,215,111,220,
+125,224,198, 8,132, 2,145, 80, 32, 81,171, 21,190,238, 42, 69,144,135, 92, 26, 40, 97,136,178,160,160, 32,229,231,159,127,230,
+ 1,116,117, 20,115,214,172, 89,247,110,220,121,160, 33,140, 64, 32, 20, 8, 69, 74,165, 92,243,106,231,246, 77, 0, 64, 4, 42,
+202,205,205, 77, 93,189,122,181,201, 25,204,207, 63,255,252,170, 54, 59,223, 93, 32, 20, 10, 5, 2,214, 86,150, 10,153,204, 91,
+ 46,145,136, 13, 6, 67,226, 55,223,124, 83,232, 12,230,140, 25, 51,174,223,188,251,208,131, 33,132, 37,132, 17,168, 85, 10, 79,
+ 79, 55,185,183,183, 82,230, 37, 23,176,226,220,220,220,196,117,235,214, 57,132,105, 50,153, 68,169,169,169,184,113,227, 6,130,
+155, 52,193,129, 3, 7, 80,165, 74, 21,244,237,219, 23,111,190,249, 38,100, 50, 25, 58,180,168,135, 41, 83,166,224,238,221,187,
+ 48,153, 76,146,146, 48,109,118, 82,197, 36, 32, 32,224, 66,121,237,199,254,127,139,167, 51,202,159,208,111,141,163,186,217, 19,
+172,210,240, 61, 60, 60,184,146,180, 93,197, 49,187,118,237,250,233,161, 67,135,106,172, 91,183,174,219,160, 65,131, 78,172, 91,
+183, 14,205,155, 55,199,141, 27, 55, 80,173, 90, 53,172, 89,179, 6,111,190,249,230,137,197,139, 23,119,187,112,225, 66,131,234,
+213,171,127, 82, 30,102,191,126,253,198, 53,108,216,240,112, 74, 74, 74, 11,173, 86, 91,119,235,214,173,195,122,246,236,121,175,
+127,255,254, 29,109, 26, 45,179,121,195,174,237, 91, 16,221,173, 23, 34,234,212, 93, 58,228,147,245,245,202,194,164,148,210,107,
+192,242,213,201,201,233, 27,244,250,130,190, 66,161, 92,126,230,140,199,230, 31,126,240,178, 63,233,157,152,152,136,215, 95,127,
+ 93, 40, 18,137, 90,151,149, 78, 66,200,252, 30, 61,122,244,221,186,117,171,187, 85,171,115,234,212, 41, 92,185,114, 5,113,113,
+113,200,206,206, 70,199,209,249, 24, 59,239, 17,246,216,121, 20,175,188, 67, 21, 21, 28, 67,108, 34, 15, 33,126,158,106,193,201,
+ 97,223, 68,188, 51,106,105,109,129,210, 67,136,159, 62,190,141,212, 59,250,205,165,164,147,180,104,209, 98,125,159, 62,125,136,
+209,104,132,209,104, 52, 82, 74, 11, 75,194, 14, 12, 12,148,214,175, 95, 31,163, 71,143,102,212,106,245,226,210,210,169,211,233,
+ 12,187,119,239,198,160, 65,131,240,254,251,239,163,102,205,154,112,119,119,135, 80, 40,196,218,245,191,122,189, 57,108, 76,120,
+163, 86,109, 26,212,110,212,188,126,158,129,109, 34,146,123,140, 36, 37,108, 13, 60,139, 19,114,207, 3,102,189,122,245, 90,157,
+ 61,123, 86,210,166, 77, 27, 60,120,240, 0, 66,161,109, 61,197, 61, 77, 58,103,204,152, 33,209,235,245,248,235,175,191, 48,120,
+240,224, 68,147,201,244,193,179,206,123,113, 46,242, 34, 9,165,116,121,177, 43,185, 52,141,214, 12, 0, 48,243,216, 49,112,240,
+176,130,157, 59,119,202,197, 98, 49, 30, 60,120,128,228,228,100,172, 93,189,154,235,224,227,147,215, 57, 48, 48,119,237,234,213,
+212,104, 52,130, 82,138,200,200, 72,244,238,221, 91,246, 70,223,254,105, 36,183,240, 87, 7,152,159,191,117,127,125,216,176, 97,
+ 79,220,159, 56,113, 34,212,106, 53, 8, 33,126, 14,228,175,207,123, 51,122, 4,185, 87,215,164,210,148,181, 90,176, 82, 64,160,
+ 2, 4,106, 64,234, 6, 72, 84,128, 88, 14,195,133,195, 90,134,118,142,235,213,122,120,160,147, 91, 61, 8, 8, 8,152,118,248,
+240, 97,239, 11, 23, 46,208,220,220, 92, 36, 39, 39,211,185,115,231,122, 7, 4, 4, 76,171,104,165, 36, 37, 37,205,138,142,142,
+ 78, 29, 60,120,176,219,222,189,123,131, 7, 15, 30,236, 22, 29, 29,157,154,148,148, 52,235,105, 42, 91, 36, 18,177,215,174, 93,
+243,152, 61,123,246,155, 0,206,215,173, 91, 55, 51, 40, 40,232,124,145,209,100,153,162, 82,169,108, 36,203,170, 93, 19, 8, 4,
+ 16, 10,133, 8, 8, 8, 48,106,181, 90,174,117,163, 80, 89,164, 27, 99, 14,144,136,100, 30, 50,105,144, 74,237,214, 44, 51, 51,
+243, 50, 33,196,161,248,132,132,144,134, 77,155, 54, 21,114, 84,200,143, 29,216, 33,224,157,161,237,125,190,159, 61,178,202, 55,
+179, 70, 5,206,159, 62, 34,114,214,164, 1,237, 25,158,215, 87,171, 86,205,207,106,208,238,128,250, 60,170,113,227,198, 2, 30,
+ 66,220,184, 21,151,250, 32, 33, 49,239,229,118, 45,108,154,203,218, 13,163, 58,123,123,123,183,137,140,140,108,236,168, 79, 24,
+153, 76,214, 48, 34, 34, 66,192,176, 66,226,233,174, 10, 86, 41,101,190,214,123,106,141,230, 37, 15,111,239, 62, 12,165, 57,254,
+254,254, 62, 50,153,172,161, 19,121, 23,240, 16,193,215,199,195,205,219, 75,163,236,220,190,101,205, 22, 47,181, 8,175,215,172,
+121,139, 58,141, 26,191, 65, 44,150,220,208,208, 80, 31,171,145,124, 89, 98, 48, 24,164, 27, 54,108,192,236,217,179, 81, 63, 36,
+ 4,129,129,129,240,241,241,193,169, 83,167,112,246,236, 89,184,187,187, 35, 45, 45, 13, 11, 22, 44,192,182,109,219, 96, 50,153,
+ 84,206,182, 39, 71,200, 86, 89, 98,177, 88,152,226, 4,171, 52,124,153, 76,198, 91,141,228, 75,147,221,187,119,175,183,106,178,
+198,143, 31,223,106,209,162, 69, 39, 98, 98, 98,160, 84, 42,113,246,236, 89, 12, 27, 54,236,196,226,197,139, 91,141, 25, 51, 6,
+171, 87,175,198,189,123,247, 86,150,133,215,175, 95,191,233, 35, 70,140,248,230,232,209,163,140,175,175, 47,220,221,221,209,163,
+ 71, 15,172, 92,185, 82, 96,177, 88, 86,245,233,211,231, 82,159, 62,125, 46,113,241,251, 63,221,180, 98,238,169,171,151, 47, 97,
+220,123, 31,137,141, 22,243,100, 7, 6, 94, 90,168, 84,230, 89,218,180,209,110, 52,155, 11,250,137, 68,114,183, 75,151, 60,118,
+172, 90,101, 35, 91, 83,166, 76,129,155,155, 27,240,200,128, 25,101,104,117, 70,109,219,182,205, 54, 30,122,122,122, 66, 44, 22,
+ 67, 36, 18, 65, 40, 20,130,101, 89, 28, 92,170,192, 15, 83, 30,241,139, 31,166, 16,236, 95, 66,158, 42, 54,171, 34,136,212,117,
+247, 21, 95,122,123, 77,157, 6,117, 59,122,226,212, 47, 41,152, 27,125, 33,225,236,198,244, 9,250,180, 82, 67, 41, 53,154, 56,
+113, 98,237,180,180, 52,156, 59,119, 14,231,206,157,155, 93, 74,217,232,183,111,223,254,101,126,126, 62,170, 87,175,142,238,221,
+187,183, 33,132, 52, 41,165,223,160,113,227,198,120,253,245,215,209,190,125,123,212,175, 95, 31, 70,147, 69,216,103,224,168,136,
+107,247,210, 3,231, 46,152, 43, 63,252,199, 86,230,196,137,163,236,250, 45,251,221, 90,180,127,229, 27,145,202,255, 52,145,123,
+249,255,215, 53, 90, 82,169,116,209,209,163, 71,253, 76, 38, 19,174, 94,189,138,247,223,127,255,105, 99,134,218, 20, 32,193,193,
+193, 56,114,228, 8, 6, 12, 24,160, 79, 77, 77,253,243,159,202,147, 61, 23,249,175,136,192,142, 65,218,228,225,195,135,217, 30,
+ 30, 30,129, 17, 17, 17,140,209,104,124,180, 37,177,121, 51,183, 98,213,170, 93,122,189,254, 61, 0,162, 37,223,127,191, 52, 48,
+ 40,168,253,192, 65,131,136,217,108, 70,116,116,180,120,231,206,157,158,119, 83, 83,203, 13,136, 92,124,181, 49,100,200, 16, 44,
+ 90,180, 8, 0,240,238,187,239,218, 84,235,196, 1,131, 37,165, 27,186,118,126,173,177, 58, 94,241,173,218,244,146, 57,191,234,
+ 93,213,105, 69,190,172, 49, 24,177, 0, 82, 22,188,201,108,185,157,214,243,252,221,219,181,106,203,180,153,213, 58,213,105,139,
+ 21, 7,214,117, 5,176,209,225, 85,157, 92,222, 84,169, 84,226,252,249,243,218,198,141, 27,103, 83, 74,221,102,205,154,229, 37,
+151,203,155, 62, 5,251,189, 79, 8,105,211,178,101,203,119, 24,134,233,196,243,252,193,212,212,212, 37,148,210,251, 14, 78,218,
+ 99, 1,124, 14, 59, 59, 20,163,209, 8,134, 97, 64, 41, 69,191,126,253, 48,101,202,148,218, 87,174, 92,193,225,195,135, 61, 58,
+117,234,116,154, 16,146, 13, 96, 56,165,180, 68,173, 89,110,110,110,225,217,179,103,101,135, 15, 31, 6,207,243,240,240,240,128,
+ 90,173,134, 68, 34, 65,143, 30, 61,148,147, 39, 79,238,184,111,223,190,180,220,170, 85, 88,105,114,162, 78,162, 84,170,224, 23,
+216,122, 76,255,183, 98, 40,165,219,156, 24, 28,196, 50,129, 69, 79, 56, 3, 51,255,179,197,140, 92, 36, 34, 82,145, 0, 18,190,
+ 0,159,126, 57,135,136, 40, 39,128,147,251,243, 34,145, 72,164,146,192,200,138, 89,179,156,160, 82,156,195,177, 44, 43,150,138,
+ 96, 40,237,190,144, 97, 24,134, 97, 68, 0, 44,142, 98, 74, 36, 18,145, 74, 66, 75,197,148,177,132, 37,132,136,241,232,116,214,
+ 19, 18,229, 79,168,157, 22,201, 96, 79,138, 91,183,110,141, 93,135,207, 99,243,142,131,200,120,112, 25, 83, 63, 30,143, 38, 77,
+154, 96,231,206,157,101,166,201,106,163, 85,154,118, 57, 32, 32,224, 66, 82, 82, 82,163,210,254,183, 36, 27, 45,126,105, 45, 58,
+232,227, 69,221, 74,210, 82,149,136,255,153,219, 35,172, 50,108,180, 8, 33,221, 91,183,110, 61,110,195,134, 13,198, 46, 93,186,
+136,251,245,235,135,186,117,235,182, 26, 58,116, 40, 0,160, 83,167, 78, 88,180,104, 81,171,161, 67,135,226,215, 95,127,197,214,
+173, 91, 13,237,218,181,251,152, 16,146, 72, 41,221, 93, 18, 38,207,243,175, 47, 91,182,172,184,166, 16, 22,139, 5,102,179,217,
+223, 98,177,248, 23,141, 69,248,230,155,197, 25,251,247,237,196,199,159,204,128,143,183, 95, 67, 7,219, 16, 25,242,209, 71, 25,
+107, 22, 44,192,130, 95,127,197, 71,213,170,201,215, 93,191,142,253,122, 61, 54, 30, 62,156, 81,244,156,114,109, 51,117, 58, 93,
+225,238,221,187,213, 27, 55,110,132, 70,163, 65,205,154, 53,225,225,225, 1,161, 80, 8,134,149,129, 21,185, 35,162, 78, 83, 0,
+103, 1, 0,213, 2,160,139,172,142, 19,132, 32,155, 50,165,183,225, 82,251,104, 8,169,234, 27, 34, 61, 58,110,117, 93,141,218,
+ 71,132,189, 75, 30, 98,223,183,241,219,244, 25,248, 26, 22,220, 44,227,176, 70,227,234,213,171, 35, 45, 45, 13,187,119,239,214,
+ 1,248,170,180,103,240, 60,255,229,247,223,127, 63,241,147, 79, 62,145, 68, 70, 70, 2, 64, 67, 0,231, 74, 36,125, 10, 5, 2,
+ 3, 3,109,196,178,223,224, 49,161,163, 39,140,145,245,124,165, 61, 4, 2, 47,100,235,204,200,204, 51,195,221, 75,137,143, 39,
+244,145, 30,108, 28,216,100,217,226,159,182, 19, 66,154,208,103,233, 44,242, 95, 22, 79, 79,207,134,153,153,153,184,127,255, 62,
+ 6, 15, 30,156,152,145,145,113, 64,167,211, 13, 75, 74, 74, 2, 0,109, 5, 32,109,100,190, 97,195,134,104,218,180, 41,250,246,
+237, 43, 45, 40, 40,232, 19, 26, 26, 26, 8,224,165,103,153,159,226, 92,228, 63, 69,180, 74,156, 16,204,230, 8,195,210,165,208,
+ 29, 60, 8,241,254,253,216, 24, 16,144,175,215,235, 63,164,148,198, 23, 13,122,227, 87,175, 89,115,178,219,159,127,170,141, 49,
+ 49, 8,189,114, 5, 66,141,166,161,179, 9, 88,181,106, 21,114,115,115,145,147,147, 3, 0,248,246,219,111,145,155,155, 11,171,
+ 45, 67,185, 25, 16,161,149,159, 79, 53,164,224, 54,120, 1,163,140,139, 40,104,174,212,171,146, 2, 31,250,234,114,152, 64,196,
+ 60,104,166, 40,204, 52, 54, 39,172, 17,250,140, 2, 4,182,172, 9, 1, 4,173,156, 73,163,117,223, 95, 32, 16,104,111,221,186,
+245,122,120,120,248, 14, 0, 94, 79,107, 15, 64, 41,189, 3,224,189, 10,146,128,207,239,221,187,231,179,114,229,202,119,102,205,
+154, 69,237,137,150,245,189, 64, 32, 0,165, 20,110,110,110, 16, 10,133,190,167, 78,157,242,109,214,172,217,119, 69, 3, 90, 73,
+249,164,117,235,214,197,189,123,247, 32, 16, 8,224,230,230, 6,222, 98,194,140, 9, 99,192,177, 18,193,164, 73,147, 26,246,234,
+213,235,234,202,149, 43,205,234, 22, 45, 95,202,204,204,188, 54,110,192,192,171,191,255,254,187,145,231,249,101, 14,230,249,210,
+237,219,183,217,160, 0, 95,150, 90, 10,120,133, 8,144, 94,254,134,138,149,126,144, 10, 88, 42, 34, 12, 36, 82,153,219,253,132,
+132, 76,158,231,111, 56,130,201,243,252,197,123,247,238,201,124,125, 60, 5, 5,133,198,124,153,144,138,227, 46,158,143,173, 26,
+213, 56, 20, 0,244, 23,207, 30,145, 68,212,146,197,165,166, 43,170, 85,171,230, 16,102, 97, 97,225,165,196,196, 68,214,215,215,
+ 87,240, 32, 62, 97,187, 70,169,240, 86,107, 52,205, 1,192,148,151,115,150, 49, 24,210, 89,161,192, 55, 61, 51, 83, 91, 88, 88,
+120,207,209,188,223,189,123, 87,224,239,239,195,238,221,127,104,135,175, 92,226,163, 18, 11,212, 18, 66,136,156, 37,185, 34, 11,
+159, 33,149,203,125,238, 39, 36,104, 41,165,165,106, 8,191,200, 30,216,243, 81,125,205,248,213, 14, 27,151, 47, 95,198,158, 19,
+ 55,160,160, 70, 16,125, 14,246,175,254, 17, 3, 38,125,242,212,118,127,229,145,173, 10,105,179,150,213,186, 80, 12, 31, 73,229,
+ 24,194, 15, 24, 48, 96,198,250,245,235,109, 6, 40, 55,110,220, 64,135, 14, 29,172,219, 28,232,220,185, 51,154, 53,107,134, 27,
+ 55,110, 32, 44, 44, 12,135, 15, 31,150,176, 44, 43, 25, 56,112,224, 92, 0,187,203, 75,239,242,229,203, 49,108,216,176,146, 12,
+171,239, 2,208, 19,247,200,252, 41, 95,172,245,210,102,102, 32, 45, 61,229,146,163,229, 64, 8,193,144,143, 62,202, 88,102, 52,
+ 98,195,153, 51, 24,164, 80,200,215,220,185,131,232,102,205, 80,175, 67,135, 12, 71,198, 58,171, 86, 71,175,215, 67, 40, 20, 66,
+173, 86,195,211,211, 19, 34,145, 8,172, 48, 0, 2,113, 3, 48, 34, 17,162, 90, 55,192,130, 15, 21, 5,131, 95,197, 98, 66,144,
+ 45, 17,227,162, 72, 94,178,173, 14, 33,132, 40,170,160, 7,165,200, 45,136,199, 31, 86, 66,162,169, 74,220,148,106,225,254, 17,
+223, 69,106,212, 62, 34,236, 89,252, 0,251,191, 75,216,162, 79,193, 84, 0,119,203, 58, 93, 44,145, 72,234,105, 52, 26,196,199,
+199,227,225,195,135,215,203, 50,240,167,148, 22,180,104,209, 34, 86, 34,145,212,246,246,246, 6,128,234,165,165,147,231,121,155,
+ 29,214,186, 13,155,188, 26,182, 9,149,190,220,170, 54,214,238,152,131,183,251, 44,134,144, 37,224, 56, 19,190, 94,244, 26, 56,
+ 67, 62,250,116, 27, 69,218,118, 10,107,112,112,135,113, 4,128, 31,255,171, 68, 43, 33, 33,225,189, 54,109,218,204,205,203,203,
+203,210,233,116, 3, 0,160,122,245,234, 33, 12,195, 72, 0,204, 42,163, 61,133,160,100,183, 16,162, 43, 87,174, 64,165, 82, 33,
+ 49,241,239,152,244,241,241,241,224,121,222, 0,151,148,213, 71,163, 40,165, 23, 9, 33,254, 0,162, 97,231,222,129, 41, 82,213,
+181,221,181,107, 23,221,181,107, 87, 91,219,228, 69, 41,111,209,106, 65, 13,143,202, 86, 40, 20, 82, 0,246, 39,154,228, 26,141,
+134, 8,131,130, 64, 36,143, 76, 63,168,221,158,240,211,138,217,236,152,107, 25,158, 3, 11, 98, 2,181, 83, 98,232,164, 4,115,
+188, 58,226, 61,241, 52,164,136, 53,246, 61, 27,176, 80,112,224, 89, 39,147, 67,117, 58, 29, 44, 22,139,123,141, 26, 53,118, 89,
+ 44, 22,119,235,214,192,191, 85,169, 28,199,197,178, 44,139,119,222,121, 7, 86,237,143,209,104, 68, 74, 74, 10, 12, 6, 3,140,
+ 70, 35,238,221,187,135,156,156, 28, 24,141, 70, 92,187,118, 13,213,171, 87, 7,203,178,254,101, 52, 20, 74, 41, 69,112,112, 48,
+170, 86,173, 10,150, 80,172,152, 63, 29,159,190, 63, 6,111, 86,231,177,106,201,215,104,215,174, 93,173,106,213,170,181, 16, 8,
+ 4,156,159,159,159,104,235,214,173,219, 57,142,235,225,132, 31,173,221, 83,166, 76,169, 90,167, 78, 29, 31,141, 90,101,150,136,
+ 89,136,205, 58, 42, 49,100, 82, 65, 65, 6,130,131, 67, 44,144,201,195, 6, 13, 26,196, 57, 50, 57, 90, 49, 63,252,240, 67,255,
+200,200, 72, 55,119,141, 74, 39, 22,178,105, 34,208,140,156,203,231, 78, 3,128,216,219, 71, 15,169,188,246,224,193,131, 45,206,
+ 96, 78,155, 54,173,186,183,183,183,134, 1,205,227, 76,166,191,247,219, 13,198, 76, 34, 20, 22, 66, 36,110,252,238,187,239, 18,
+103, 48, 39, 78,156, 88,173,118,237,218, 26,141, 90,145, 47, 16,178,201, 34,158, 79,150,130, 79, 17, 26, 77, 89, 82,111,175, 2,
+200,149, 81,131, 6, 13, 42, 21,211,170,205,154, 60,121,114,124, 49,226, 13,173, 86, 11,125,202, 85,136, 18, 99,208, 64, 41, 68,
+ 19,111,119, 72, 36, 18,219,209,247,210,154,107,105, 54, 90, 37,145, 45, 71,255,183,241,204, 50,182, 0,151,213,186, 80,220,111,
+ 86, 17,126,153,253,233,167,159,126,250,164,125,251,246,105,157, 59,119, 54,238,218,181, 11,132, 16, 28, 62,124, 24,137,137,137,
+232,220,185, 51, 40,165,214, 83,109,184,116,233, 18, 58,117,234,100,108,211,166, 77,226, 79, 63,253,244,185, 35,149, 51,108,216,
+ 48,152,205,102,228,231,231, 67,171,213, 98,231,206,157,104,208,160, 1,149,203,229,189,216,224, 87,230,244, 25,241,201, 75,117,
+235, 55,196,119,139, 23, 24,197, 2,225, 23, 78, 14,194, 24,252,225,135, 25, 57, 81, 81,218,117, 58, 93,193, 16,181, 90, 94, 35,
+ 62,222,227,252,190,125, 94, 38,147,201, 33, 12,171, 86, 39, 40, 40,200, 70,178, 68, 34, 17, 4, 98,111,176,138,122, 16,123,118,
+134,220,175, 23,254,184, 40, 49,184, 41,176, 77,165,196, 94,133, 6,165,186,118,144, 7, 99,206, 75,253,252,183,182,124,211,255,
+144,188, 10, 86, 18, 66, 24, 66, 8, 67, 5,100,235,208,175,195,107,120, 87,149,225,207, 77, 41,216,255, 93,194,111,250, 20, 76,
+ 7,112,167,188,126,110, 50,153,244, 28,199,129, 97, 24, 8, 4, 2,123, 27,209,147,191,253,246, 27,206,159, 63, 15, 0, 54,183,
+ 61,121,121,121, 28,203,178,144, 74,165, 0,160, 44, 99,188,131, 80, 40,132, 80, 40,196,145,211,199, 60,223,124,227, 53,114,234,
+175, 3,104,217,160, 63, 50,243, 77, 72,205, 49, 33,187, 0,168,211,100, 42,234,118,218,134,203,247,242,208,176,126, 93,150, 21,
+ 43, 6,191,224,147,119,136,143,143,207, 41, 47, 47,175,195,132,144, 16, 66, 72,136, 90,173, 62, 25, 16, 16, 16, 67, 8,233, 78,
+ 41,253, 61, 41, 41, 41, 50, 63, 63,191, 37,165,244, 1,165,244, 65, 70, 70, 70,135,180,180,180,151,202, 58,172,229,233,233,185,
+ 50, 55, 55,119, 60,199,113,221,138,174, 87, 57,142,107,120,251,246,237,218, 13, 27, 54,188, 30, 26, 26,122, 41, 52, 52,116, 79,
+104,104,232,246,208,208,208,237,237,219,183, 95,100,117,247,240, 44,165, 36, 46,242, 2,137,213,212, 37,186,200,213, 67,180,109,
+206, 40,122, 61, 82,220, 0,205, 34,145, 92,179,140, 27, 7,205,246,237, 16,222,190,141,161,131, 7,171,229,114,249, 98, 66, 72,
+ 35, 66, 72, 75,165, 82,249,221,244,233,211, 85, 94,243,230, 33,224,216, 49,196,237,220, 9,179, 80,120,174, 34,169, 43, 44, 44,
+132, 64, 32,176,105, 98, 20, 10, 5, 56,142, 43,226,110,229, 16, 14, 11,254, 76, 76,141,129, 24, 85,193,131,230,239,205,109,115,
+166,127,236, 84,159,157,185,213,195,238,232, 68, 97, 51,189,155,251, 44, 14,105,117, 70, 71, 4,249, 98,141, 20, 15, 31,198,131,
+ 3,239,212,126,179, 94,175,207,209,233,116,104,216,176,161,231,249,243,231,107, 52,104,208,192,163,232,251,179, 79,217,137, 90,
+ 4, 6, 6,110, 10, 10, 10,186, 31, 24, 24,184,137, 16,210,194,137,127, 95,121,252,248,113,176, 44,139,233,211,167, 35, 47, 47,
+ 15, 38,147, 9,153,153,153,120,248,240, 33,140, 70, 35, 18, 18, 18,112,243,230, 77, 24,141, 70,196,197,197,193, 96, 40,127, 65,
+194,243, 60,212,106, 53,244,133,249,248, 97,206,167,152, 54,121, 2,114,238, 94, 64, 66, 82, 42, 52,110, 10,188,247,222,123,172,
+187,187, 59,207,113, 92, 85,139,197,210,137,227,184,165,142, 18,206, 34,167,133, 39,130,131,131,235,206,159, 63,191,246,167,115,
+150,138,212,130,124, 42, 81, 73,121,177, 74, 66,197,181,154, 99,216,212,197,162,111, 22,126,117,235,207, 63,255, 76,116,196,121,
+167, 21, 51, 42, 42, 42, 60, 49, 49,177, 65,100,100,100,132, 87, 72, 53,137,196, 63, 48, 91,228, 95, 37,151, 26,244,103, 72, 96,
+149,214, 75,151, 46,189,122,242,228,201, 36,103, 48, 21, 10, 69,173,181,107,215,214,245,245,245,173, 43,148,201,164, 5, 57, 57,
+ 27, 45, 5,186, 77,172,198, 93,202,168, 53,175,110,219,182,237,194,150, 45, 91, 82,156,193, 12, 11, 11,139,156, 51,103, 78,157,
+122,245,234,213,241,171, 94, 67, 34, 11, 12,206,148, 6,133,100,202,234, 53,144, 32,168,106,151,239,190,251,238,210,159,127,254,
+233, 16, 38,203,178, 22,134, 97, 32, 20, 10, 33,151,203,177,119,239, 94,140, 27,209, 31,193,129,158,136,136,140, 68,199,183,199,
+ 99,203,150, 45, 54, 27, 30,150,101, 75,157,209,215,204,123,111, 71,148, 63,185,128,101,181, 46, 96, 89,173, 11, 81,254,228, 66,
+169,100,171,232,126, 73,191,113,104, 52, 42,197, 14,171, 60,178, 69, 41,221,125,228,200,145, 47,135, 12, 25, 34,238,218,181, 43,
+206,156, 57,131, 97,195,134,157,216,186,117, 43, 0,224,204,153, 51,248,224,131, 15, 78, 28, 58,116, 8, 99,198,140, 65,135, 14,
+ 29,196,199,143, 31,255,206, 17,223, 63, 22,139, 5,171, 86,173,130,197, 98,129, 82,169,132,135,135, 7, 94,123,237, 53, 92,189,
+122,117,204,234,213,171, 99, 88,161,240,173,232,110,111, 96,215,246,173,184,121,237,234,152, 53,115, 7, 58,237, 20,152, 97, 24,
+116, 29, 60, 56, 35,163, 78, 29,237,154,220,220,130,225,238,238,242,200,148, 20,143, 63, 54,109,242,114,160,253, 16,142,227,108,
+228,202, 74, 58,172,151, 64,236, 13,129,162, 46, 4,170, 38,184,124, 71,100, 22, 54,165, 23, 69,141,233,141,178,252,103, 9,197,
+204,176, 94,159, 86, 71,175, 79,171,163,251,164,106, 67,229, 85,176, 66, 81, 5, 99,187,190, 95,181,125,104, 19, 55,228,166,153,
+176,243,235,184, 7,250, 76,204, 3,112,211,145,126,206,243,252,245,196,196, 68,136,197, 98, 84,169, 82, 37,156, 16, 98,181, 11,
+ 92, 57,114,228,200,119,103,206,156, 57, 1,192,204,162, 60, 41,219,183,111, 95, 39, 63, 63, 31,183,111,223, 6,128,243,101,212,
+189,237,148,161, 54, 55, 78, 82, 45,160, 30, 26,212, 26, 13,119,247,250, 72,212, 26,145,164, 53, 98,197, 15, 61,112,225,248,108,
+156,223, 63, 8, 15, 82, 82, 32,243,235, 9,206, 98,168,251,130, 43, 74,166,197,198,198,182,216,180,105, 83,123, 0,211,234,213,
+171,247,231,195,135, 15, 95, 58,118,236, 88, 68, 80, 80,208,226,138,130, 90,221, 66,196,197,197, 61,118, 21,185,133, 48, 82, 74,
+163, 40,165, 93, 41,165,221,139,174, 15,158,202,215,155,227,114,228, 69, 53,134, 7,176,171,248,105,195,226, 68,203,222, 81, 24,
+106,120,120,168,204,102, 83,194,129, 3, 7, 76, 12,195, 64, 46,151, 99,200,176, 97,204, 15,223,127,223,186,127,139, 22,135, 71,
+189,252,242,158,195,135, 14, 69, 53,107,214, 12,148, 82, 48, 12,131, 95,127,253,181, 80,175, 47,204,172, 82,165,138,198,145, 65,
+195,190, 3,229,230,230,218,136, 86, 78, 78, 14,124,125,125, 29,222, 58,212,229,226,224,161,189, 23,178, 40,247,246,195,174,119,
+ 22,154,190, 72,233,209, 44,155,231, 4, 57,156, 25, 57,133, 20,121,122, 8,206, 48, 30,205,134,132,245, 52,221,235,212,236,230,
+209,152, 83,153,122, 78,239,212,105,137,180,180,180, 79,251,244,233,147,233,239,239, 79,212,106, 53, 2, 3, 3,153,238,221,187,
+103,196,199,199,207,172,104,141,120,121,121,189,217,190,125,251, 29,137,137,137,189,143, 30, 61, 90,245,216,177, 99,189,219,183,
+111,191,195,203,203,235, 77, 7, 33, 54,126,242,201, 39, 58,177, 88,140,230,205,155, 35, 47, 47, 15, 69,167,124,202,188,202,155,
+ 8, 0, 64, 36, 18, 97,217,252,207, 49,109,242, 4,104, 99,206,224,242,137, 3, 56,146, 66, 48,117,206, 87, 16,137, 68, 21,242,
+245, 21,230,163,168, 87, 47, 64,117,227,131, 97,253,146,166, 76,158,172,186,116,233,146,240,221,247, 63,160,113,201, 90,136,187,
+ 46, 96,209,246, 83,230, 47,157, 55,162, 95,237,136,233,211, 62,170, 71, 41, 29, 93, 30,102,109, 31, 69,189,186, 1,170,235, 31,
+141,234, 31,251,254,251,239,203,190,248,226, 11,125,139, 22, 45, 10, 83, 83, 83,101, 10,119,143, 72,129,155,166,110, 92,114,138,
+178, 69,139, 22,247,222,126,251,237,108,103, 49,167, 78,157, 42,223,183,111,159,160, 79,159, 62,150,172,172, 44,165, 80, 38,107,
+ 72, 36,210,166,233, 89, 89,110,189,251,244,185,211,187,119,239, 2,158,231,199, 56,131,249,217,103,159,201,111,222,188, 41,104,
+209,162,133, 57, 37, 37, 69,165,240,244,106,192,106, 60,154,220, 79, 78, 85, 55,109,214,236,238,187,239,190,171, 43, 43,157,246,
+ 36, 69,165, 82, 37,182,108,217, 18, 95,127,253, 53,190,249,230, 27,116,233,210, 5, 87,175, 93, 69,244,187, 19, 80,123,236, 7,
+216,126,234, 52, 18, 19, 19, 49,107,214, 44, 52,104,208, 0, 34,145,232,102,137,160,163,111,144,139,201,148, 92, 76,166, 4,163,
+111, 16,235,231, 82,201,208,204, 28, 60,246,251, 18,228,252,103, 37,107,186,162,252,201,133,178,236,176,202, 35, 91,189,123,247,
+ 30,103,117,225, 48,124,248,240, 19,139, 23, 47,110, 53,124,248,163,133,118,243,230,205, 49,123,246,236, 86, 83,167, 78, 61, 49,
+103,206, 28,116,236,216, 17,161,161,161,229, 30,124,225, 56, 14, 22,139, 5,253,251,247,135,197, 98, 65,122,122, 58,110,221,186,
+133,229,203,151,131, 82, 42, 5, 0,255,128,160,198, 98,177, 24,127, 93, 60, 87, 48,109,120,179,159,156, 88, 76, 17,251, 69, 76,
+126,126, 62,122,143, 29,155,145, 80,179,166,118,105, 70, 70,193, 8,119,119,121,181, 7, 15, 60, 84, 70, 99, 96, 89, 54,169,132,
+ 16,240, 60,111, 35, 86, 86,194, 85,252, 42,154, 40, 29, 18, 83, 1,191,251,216,250, 36, 0, 64,155,129, 1,232, 62,169,218, 80,
+255, 48,249,183,173, 7, 60, 82,122,111,153, 29, 75,243,146,184, 47, 96,198,117, 39, 52,214,103,206,156, 57, 3,141, 70,131, 62,
+125,250, 72, 24,134,153, 87, 52,206,235, 41,165, 75, 40,165, 11,173, 88, 18,137,100,193,160, 65,131,152,236,236,108, 92,190,124,
+ 25, 0, 14,149, 54, 46, 81, 74,109,121,207,215, 18,112,188, 24, 39, 47,238,197,254, 99,155,113, 63, 49, 29, 15,210,244,128,192,
+ 13,122, 93, 2, 76,133,137, 48,102, 95, 68,174, 65,254, 95,216,145,122, 38,238, 22,158,129, 91,136,202,212,106,189,144, 54,117,
+148,210,100,251,211,134,246, 14, 76, 75,114, 88, 10,170,150,245,219,252,221, 15,110,125,250, 15,212, 53,104,208,192, 61, 48, 48,
+ 16,132, 16,244,232,217,147,180, 63,122, 84, 37, 12, 8,128,103,163, 70,182,237,136,131, 7, 14, 96,239,222,189,186, 93,191,109,
+ 11, 28, 54, 98,196,235, 0,214,150, 49, 96, 8,106,212,168, 97,123,110,114,114, 50, 36, 18,137,205, 38, 34, 55, 55, 23,222,222,
+222, 72, 78, 78,134,131,138,146,117, 83, 38,159,158,156,214,236,211,234,205, 84, 66,178, 71,151, 2,142, 82, 8, 9, 7, 20, 82,
+152, 57,192, 96,166,104, 92,141,245,216, 95,104,113,223,121,102,235, 61, 0,235,156,212,104,253, 65, 8, 25,205,243,252,102, 0,
+204,209,163, 71,249,235,215,175,143,115,212,112,189, 68,181,189, 92, 62,233,240,225,195, 30,147, 38, 77,202,218,185,115,103,206,
+107,175,189,230,182,124,249,114,143, 14, 29, 58, 76, 2,240,139, 3,149, 90, 72, 8, 89, 27, 31, 31, 63,174, 73,147, 38,208,106,
+181, 48,153, 76,184,112,225, 2,194,194,194,112,254,252,121,132,135,135,227,220,185,115,136,136,136, 0,199,113,208,235,245,224,
+121,158, 43,111, 48,215,102,164, 3,153, 15,145,116,102, 15,110, 93,185,128,195, 73, 4, 75,126,217,129, 42, 85,171, 87,200, 79,
+ 77,132,175,162, 78,160,143,231,254, 47,102,124,230, 19,247,199,175,216,186,106, 9,127,100,207,158,218, 98, 21, 70,183,237, 63,
+254, 13,163, 25, 33, 0,196, 47, 53,107,130,174,238, 55, 57,121, 85,164, 28,186, 86,182, 39,235, 8, 95, 69,157, 0,111,207,125,
+255,155, 55, 83,117,119,239, 26,108, 92,246, 53,221,178,254,231, 6,122,160, 89,157, 58,117,186, 50, 12,163, 1,160, 47,178,243,
+114, 40,180, 77, 73,152, 7,119,236,136,210, 3,205,126,255,253,247,174,114,185,220, 15,128,185,160,160, 32,246,105, 48, 15,237,
+220, 25,101, 77, 39, 33,196, 7,128,137, 82,122, 23, 78,134,224,233,219,183,239,236, 15, 62,248, 96, 50,199,113,222,214,239,204,
+102, 51,187, 96,193, 2, 1,207,243, 44,165,212,196, 48,140,105,223,190,125,156,197, 98, 73,210,235,245, 99,159,102, 32,121,227,
+141, 55,112,250,244,233, 25,120,116, 8,195, 81,109,245, 99,118, 90,101,109, 83, 58,130,127,244,232,209, 89,111,189,245,214,148,
+ 95,126,249,229,214,226,197,139,187,141, 25, 51, 6,191,254,250, 43,106,214,172,137,191,254,250, 11,159,126,250, 41, 0,180,154,
+ 58,117,234,246,149, 43, 87,134,198,197,197, 45, 40, 47,141,102,179, 25, 22,139, 5, 63,255,252, 51,122,244,232, 1,111,111,111,
+ 4, 4, 4,128, 16,242,199,136, 17, 35,190, 7, 0,150,176, 34, 0, 48,232, 13,134,200,200, 38, 14,107,112, 67, 67, 67,109, 99,
+ 93, 74, 74,138,237,164,224, 43,111,189,149,177,226,139, 47,240, 83, 97, 33, 70,184,187,203, 19,130,130,252,183,223,189, 59,138,
+ 16,178,188, 52,205,145, 85,171, 83, 30,201,114, 84,195, 92,152,140, 79,126,155,123,223, 15, 64,151, 54, 3, 3,208,102, 96, 0,
+154,116,247, 33, 12, 75,112,101,127, 38,174, 30,212,110, 49,231,226, 15,103,194,229, 80, 74,175,123,122,122,110,111,219,182,109,
+183, 90,181,106, 97,228,200,145,111,139, 68, 34,145,217,108,126,223,234,230,129, 16,226,198, 48,204,204,213,171, 87,143,242,240,
+240,192,241,227,199,113,236,216,177, 63, 40,165, 15, 75, 27,151, 0,216,124,102, 85, 9, 14,215,223,140,203,151,167, 37,158,196,
+137,227,191,161,102,131,241,144,249,189, 14,143,200, 57, 48,197,124, 3, 99,230,126,120, 4,191,134,132,184,187, 96, 5,146,171,
+248,143,136,213,221,194,213,171, 87, 75,116,183,224,172,212,171, 87,175,213,177, 99,199, 36,122,189, 30, 71,142, 28, 65,211,166,
+182,179, 93,255,106,252, 78,123, 46,242, 34, 73, 89, 65,165, 75,156, 53, 9, 79,132, 17,225,225,156,136,193,234, 30,175,191, 94,
+112,233,210, 37,219,170, 79,127,246, 44,116,123,247,130,227, 56, 80, 74,113,236,232, 81, 12, 26, 56, 48, 95,200,146, 21,213,170,
+ 85,165,132,254,237,187,165,164,163,244, 34,145,168, 79,159, 62,125,108,131, 79,124,124, 60, 20, 10, 5,196, 98, 49,120,158,135,
+197, 98, 1,203,178,112,115,115,131,197, 98, 49,150,144,153, 78,197, 50, 98,230,180,186,222, 43,163, 7, 36, 7,228,155,232,104,
+ 77, 53,132,136,100,182,206,233,167, 38,232,214, 64, 8, 47, 65, 26, 61,180,224,229, 36,222,144,217,187,120,108,177,242,142,252,
+ 19, 66,194,235,215,175,255,253,160, 65,131, 24, 0,232,212,169, 19, 83,191,126,253,111, 9, 33,225,101,252, 79,153,152, 82,169,
+ 84, 2, 0, 59,118,236,208,222,186,117,171,203,142, 29, 59,180,246,223, 59,136,185,124,254,252,249,144,203,229,176, 88, 44, 48,
+ 26,141, 54,251, 44,251, 87,147,201, 4, 47, 47, 47,236,218,181, 11, 28,199,237, 42, 47,157,193, 33, 85, 65,188,107, 96,237,142,
+195, 56,150, 33,114,154,100,217, 99,214,244, 87, 70,248,121,121, 30,248,223,220, 89,222, 89,119, 46, 32, 33, 33,129,238,219,187,
+235,207, 66, 74, 19,179,115,233,180,172,124, 26, 81, 96,160,210,166,161,120,120, 96,217,199,116,106, 27,152, 81,194,169, 65,123,
+204, 58,254,202,136, 64,111,207,125, 95,253,111,174, 42,251,206, 5, 36,167,164, 96,247,174, 29,151, 10, 41, 77,164,148,110,161,
+148, 14,229, 56,174, 46,199,113,117, 41,165, 67, 75, 35, 47,206, 98,234,116,186,122, 58,157,174, 94,101, 98,242, 60, 95,143,231,
+121,135, 49,237,137,202,194,133, 11, 99,146,147,147, 7,165,165,165,117,182, 94, 89, 89, 89,157,242,243,243,219, 21, 20, 20,180,
+ 46, 92, 88,213, 77,167,211,249,228,229,229,249, 23, 22, 22, 54,166,148, 94,112,180,125,218,139,189,215,233,164,164,164,233, 73,
+ 73, 73,164,188,116, 50, 99,110,144, 13, 95,125,244,219,178,101,203,252,159, 6,191,120, 58,211,211,211, 55,255,252,243,207, 13,
+171, 87,175, 30, 58,116,232, 80, 44, 93,186, 20,139, 23, 47, 54, 0,192,202,149, 43, 13,118,154,172,224,251,247,239, 55, 41,105,
+219,240,177,116, 50,204,186, 87, 94,121,133, 30, 59,118, 12, 61,122,244,176, 57, 18,253,241,199, 31, 97,177, 88,114, 59,118,236,
+200, 3, 64,161,190, 32,151,242, 20, 70, 83,201,251,239, 37,149,167, 88, 44,126,213,222, 95,160,213, 25,179, 88, 44, 6,165, 20,
+ 17,173, 90,101,100, 55,104,160, 93,149,147, 83, 48,189, 94, 61,245,168,200,200,161,181,128,129, 37, 97, 18, 66, 30,211,234, 20,
+191, 28,213,100,217, 99, 82, 74,211, 10,147, 48,242,183,185,247,247, 90, 53, 91, 82,165, 0,250, 60, 11,182,125,113, 63, 93,159,
+142, 31, 1, 60,116, 6, 19, 0,180, 90,237,187, 95,124,241,133,193,221,221, 29,111,188,241, 6,230,204,153, 51,162, 85,171, 86,
+ 57,190,190,190,167,195,194,194,174,244,235,215, 47,249,194,133, 11,239,182,111,223, 30,183,111,223,198, 87, 95,125,149,157,149,
+149, 53,160, 44, 76, 66,136, 77,147,215, 61,186,147,246,135,111,191,230, 59,182, 29, 7,185, 76, 13,179, 48, 24,218,124, 51,178,
+116, 20, 70, 73, 51,136, 69, 18,116,110, 81, 7,167,247,173, 41,224,140,186,181, 21,105,243, 78, 76,174,207, 26,179, 82,220, 45,
+ 20, 79,103,101,184,133,120, 22,121,127,145,165, 4, 63, 90,143,107,180,172, 71, 42,173,175,132,240, 28,199,241,168, 86,189,154,
+ 42,238,254,195, 37,125,251,246, 25,222,181,107,180, 60, 58, 58, 90, 90, 39,230,209,214,197,142, 29, 59,176,117,235,214,130,253,
+251,247,231, 74,132,236,202,224, 42,193,190, 28,199,131, 16,190, 76, 54,172, 82,169,222,255,228,147, 79,100, 57, 57, 57, 88,188,
+120, 49,223,176, 97, 67, 70,161, 80,192,100, 50, 97,229,202,149,230, 58,117,234, 8, 25,134, 65, 78, 78, 14, 24,134,185,233, 96,
+ 6, 47, 19, 66, 58,127,223,190,215,214, 38,239, 12,243,172,221,254, 37,247,118,193,129, 48, 55,162, 72,138,191,143, 91,135,246,
+103, 93,219,183, 40, 19,250,212, 94,148,210,235,206, 22, 96, 64, 64,192,231,251,247,239,247,121,247,221,119,169, 94,175, 39, 15,
+ 31, 62,164,115,231,206,245, 25, 57,114,228,231, 0,222,172,104,127,202,206,206, 6, 33,132, 47,106,180,214, 85, 63,113,162, 98,
+175, 18, 66,126,239,217,179,103,247,142, 29, 59, 34, 38, 38,198,182, 69,104, 79,180,172,167, 15,231,205,155,151, 13, 96, 74,121,
+184, 66,161, 16,139,215,110, 70,118, 86, 6,124,125, 3, 32,149,201, 42,236,113, 89,204, 48,211,191,156,245,153, 79,198,141,211,
+228,234,159,135,249, 77,151, 83,211, 44, 28, 45,217,227,127, 94, 18, 45, 98,255,101,175,102, 24,118,250,151,115,103,186, 89,183,
+ 53,127,185,152,156, 75, 56,250,238, 83,245,146, 23, 5,243, 31,150,128,128, 0, 36, 37, 37,145,128,128, 0,106,221,214, 43,141,
+104, 61,209,192, 31,109,151,145,178,182, 13, 43,138,127,239,222,189,185,141, 26, 53,250,232,246,237,219,155,106,215,174, 61, 6,
+ 64, 21,131,193,144, 61,117,234,212,255,173, 92,185,114,184, 35,154, 44, 0,248,245,215, 95, 23, 13, 27, 54,108,239,235,175,191,
+254, 49,207,243,245,237, 38,145,123, 62, 62, 62,182, 45,220,244,212,148,201,163,135,247,159,156,159,159,229,176,159, 59,165, 82,
+ 57,106,234,212,169, 82,157, 78,135,239,190,251,142,175, 83,167, 14, 99, 93, 20,173, 95,191,222, 18, 30, 30, 46,232, 51,110, 92,
+198,194,148, 20,204, 62,126, 92, 55,185,110,221,134,171,110,221,106, 92,146,198,221,186,112, 44, 73,147,101, 53,187,168,224,228,
+144, 68, 8, 25,249,219,220,251, 63, 2,232,242, 82, 95, 63,252, 62,255, 62,178,226,140,255,131, 5,119, 29, 9, 11, 84, 2,102,
+ 2, 33,164,115,106,106,234,239,159,125,246,153, 91,227,198,141, 81,183,110, 93,161, 82,169,108,102,117, 23,147,147,147,131,131,
+ 7, 15, 98,233,210,165,198,107,215,174,245,164,148,150,186, 93,197,113, 92, 90,120,120,184,181, 28, 40, 33, 36, 51,215, 64,220,
+ 54,214,106,166, 28, 58,122, 19, 57,113,238, 20,146, 76, 60, 12,102, 30,213,170, 71,161, 93,151,133,216,190,231, 10,151, 20,119,
+253,186,185, 48,107,197, 11, 62,127, 63, 19,119, 11,207,192, 45, 68,165,105,179,236, 95,255, 43, 82, 98, 15,229, 89,230,228,210,
+101, 63,188,250,235,207,191,248,177, 44,227,119, 55, 54,246, 92,183, 94,189, 19, 15, 28, 56,224, 33,114,115,107, 10,128, 55,142,
+ 25,243,167,201, 80,168,221,249,251,239, 33,213,170, 85,109, 80, 20, 84,154,242, 44,115,178,172, 7,230,231,231,235,142, 31, 63,
+ 94, 48,101,202, 20, 18, 31, 31,191,193,215,215,183,223,158, 61,123,148,189,122,245, 42,140,137,137,217,226,231,231,215,189,125,
+251,246,170,143, 62,250,200,144,159,159,191,196,137,206,125,157, 16, 82,235,236,103, 11,222, 58, 59,255,135,151, 33, 96, 91,194,
+ 32, 4,120,243, 73,152,242, 14, 0,216, 64, 41,181, 84,164,144, 20, 10, 69, 3,185, 92,142, 75,151, 46,101, 53,107,214,204,168,
+215,235, 69,115,230,204,241, 84, 40, 20, 13,158, 98,128,163, 89, 89, 89,224,121, 94, 0,128, 20,189,130,119,254, 44,254,155,221,
+186,117,251,125,227,198,141,175, 68, 71, 71, 35, 52, 52, 20,102,179, 25,225,225,225, 48, 26,141, 8, 11, 11,131,193, 96,192,140,
+ 25, 51,144,147,147, 51,161,172, 96,197,132, 16, 88, 44, 22,155,177,109, 96, 80,200, 35, 63, 61, 79,225,198, 66, 33,100, 66,111,
+238, 92,133,180,204, 12,126,227, 95,169,169, 5, 38,174,243,237, 52,221,181,226,191, 43,224,160,107, 63,244,189, 68, 0, 48,240,
+ 40, 51,226,188, 66,140,208, 91,187,126, 68,106, 90, 6,126,189,152,156,173, 51,241, 93,110,150,128,233, 84, 58, 95, 16,204,168,
+ 25, 49,232,253,158,227,191,189, 56,186,226,207,114,148, 80,149, 38, 23,147, 41,225,151,214,162, 88,182,170, 68, 31, 89, 79,131,
+ 95,164,169,250,189,168,221,198,247,239,223,127,242,253,251,247,103, 21,249,203, 90,230, 12,214,170, 85,171,110, 3, 24, 86,214,
+111,126, 89, 48,108, 27,128,109,206,224,230,229,229,233, 47, 92,184,160,255,232,163,143, 72,124,124,252, 30, 63, 63,191, 87,246,
+238,221, 43,239,213,171,151,225,234,213,171,135, 2, 2, 2,218,116,234,212, 73,185,251,204,153,196,130,187,119,119,238,188,127,
+ 63,200,204,243, 59,203,234,159,149, 73,178,138,147,173,109,179,239,127,249,251,151,247, 59,241, 6,108, 49,102,225, 79, 0, 9,
+ 79,129,121,140, 16, 82,123,224,192,129, 27, 95,123,237,181,151,106,215,174,141, 42, 85,170,224,214,173, 91, 72, 79, 79,199,229,
+203,151,177, 99,199,142, 29,122,189,190,220,128,218,153,153,153, 79,132, 39, 34, 50,207,128, 53,223, 77,223,113,238, 68,211,240,
+214,209, 67,100,117, 3,120, 24, 77, 20,241, 15,238, 98,198,180, 21, 5,201, 15,110, 95, 55, 89, 76, 61,255, 3, 62,180,142,197,
+198,198, 70,177, 44, 91,169,238, 22, 42,234, 22,194, 37,149, 72,180, 98, 99,227,175,135,134, 6,127,178,117,203,230,150,148, 50,
+ 44, 37, 68,167,209,184,239,120,248,240, 97,182,253,239,106,120,120,168,134,141, 28,214,143,240, 68, 72, 8,207,241, 44,115, 50,
+ 54, 54,190, 76,141,145,209,104, 28,221,175, 95,191,197,114,185,124,170, 86,171,189,164,209,104,254,106,208,160,193, 44, 74,233,
+180,194,194,194,223, 85, 42,213,153,151, 94,122,105, 78, 72, 72,200, 34, 74,233,121, 39, 59,183, 5,143,236,195,214, 86,178, 42,
+119, 38,165,212, 77, 32, 16,228, 92,185,114,229,231,136,136,136,254,148, 82, 55, 66, 72, 78, 69, 49,245,122,253,187,217,217,217,
+ 94,163, 70,141, 50, 47, 95,190, 60, 98,200,144, 33,147,175, 93,187, 38,212,235,245,177, 78,230,217, 64, 8,233,222,183,111,223,
+ 21, 66,161,176, 35,195, 48,132,231,121,106,119, 31,148, 82,112, 28,183,189,188,114,225, 56, 46,177, 86,173, 90,143,173,160, 75,
+178,207, 53,155,205,137, 14, 79, 54, 70,110,252, 15,135,175,205,211,155, 41,181,240,116,244,205, 84, 93,137, 71,206,206,222,164,
+117, 28,198,212,243,227, 23,239,187, 62,207, 96,230,121, 11, 79,199,148,134,233,212,164,248,130, 96, 2,192,100,205,250,109, 88,
+182,222,102, 24,111,221, 78, 44,254,185, 50,197,170,117,130,147, 30,155,153, 49,143,140,229,203, 35,124, 21,197, 47, 78,186,156,
+149,222,189,123, 63, 51,123, 20,147,201,244,105,183,110,221,102,105, 52,154,255,165,167,167, 95,210,104, 52,215, 35, 35, 35,199,
+243, 60,191,168,160,160, 96,135, 74,165,122,189, 73,147, 38, 19,170, 86,173,186, 38,142,210, 53,229,245, 77,171, 86, 7, 0,181,
+246, 75, 43,145,176, 39, 20,102,179, 57,161, 2,101,152, 68, 8,249, 16, 64, 53, 60,114,192,123,135, 82,250, 84,101, 67, 41, 77,
+ 2,208,146, 16, 82, 29, 64, 71, 60,242,223,151, 13,224, 30,128,243,148,210,203, 21,198, 46,204, 76, 34,132, 52,186,113,241,248,
+152, 91,215, 47,190,101, 61, 93,200,178,226,171,156,169, 96,173,185, 48,107,197,127,196, 81,233,244,176,176, 48, 55, 0,245, 1,
+164,226,111, 71,198,113, 0,190,169,140,133,138,157,116,112, 81,162,167,226, 9,163,236,183, 11, 31,187,247, 44,219, 34, 33,164,
+ 83,101,199, 67,114, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209,137, 86, 9,132,118,121,169, 26, 45,151,
+184,196, 37, 46,113,137, 75, 92,226, 18,151, 56, 46,165,106,180, 0,116, 42,229, 31, 28,102,170, 21, 57,125, 80, 30,190, 11,211,
+133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,255, 55,113,109, 29,186, 48, 93,152, 46, 76, 23,166, 11,211,133,233,194,
+252,215, 49, 95,104, 50,229,218, 58,116,137, 75, 92,226, 18,151,184,196, 37, 46,121, 54, 98, 37, 85, 37, 25,197,187,136,150,243,
+172,149, 1,240, 54,128,222, 0,106, 0,184, 11, 96, 51,128,239,157, 8, 83, 97,143,167, 6, 48, 25, 64, 75, 60,138, 94,127, 15,
+192,113, 0, 95, 80, 74,243, 93, 37, 94,178,120,123,123,127, 34, 20, 10, 53,192,163,208, 38,214, 87,251,247, 28,199,101,231,228,
+228,204,125, 70,237,128,117,244, 84,150, 53,173,246,105,179,127, 53,155,205,207, 44,157, 46,121,110,199,145,112, 15, 15,143,159,
+180, 90,237, 0, 74,233, 45, 87,137,184,228,191, 36, 62, 62, 62, 99, 76, 38,211, 84,145, 72, 52, 39, 45, 45,237,135,255, 71,253,
+186,196,147,135, 54,162,181,107,215,174,163, 0, 16, 29, 29,221, 22, 0, 84, 42,213, 41,134, 97,170, 23,253, 51,128,191, 99,225,
+ 21, 63,250,111,125,229,121,254, 94,102,102,102,169, 14,212,228,114,249, 41,150,101,171, 19, 66,192, 48,140,237, 50,155,205, 42,
+150,101,243, 74,193, 76,208,106,181,141,159,147, 66, 36, 0,118,186,187,187,235,103,205,154,245,125,187,118,237,130,147,146,146,
+ 44,147, 38, 77,106,243,215, 95,127, 69, 19, 66, 94,117,134,108, 17, 66, 90, 16, 66,214, 52,108,216,112,219,224,193,131, 55, 54,
+107,214, 76,156,153,153,169,218,188,121,115,224,218,181,107, 47, 16, 66, 6, 56,235,226,226, 5,104,136,130,210,252,153,149,117,
+175,184, 8,133, 66, 77, 66, 66,130,170,104, 37, 97, 37, 86, 48,155,205, 48,155,205,208,233,116,104,208,160, 65,165,167,223,223,
+223, 63,138, 16,178, 36, 44, 44,172,113, 64, 64,192, 57, 0,227,146,146,146,254,114, 38,173, 22,139, 5,148, 82, 91, 58,107,215,
+174,237, 26,153,157,107, 67, 35,196, 98,113,151,176,176,176,166, 6,131, 33,235,222,189,123,103, 57,142,251,172, 44,167,151, 78,
+226,187, 1,248, 76, 34,145, 52,171, 81,163, 70,240,237,219,183,227, 77, 38,211, 25, 0, 51, 41,165, 57,149, 65,178,218,182,109,
+123,226,187,239,190,243, 28, 59,118,236, 9, 66, 72, 43, 23,217,114,201,191, 37, 85,170, 84,209,232,116,186, 21, 0,162,132, 66,
+161,159, 84, 42,133, 76, 38, 75,145, 72, 36,151,100, 50,217,240, 19, 39, 78,100, 59,139,201,113,220,103,113,113,113,126,205,155,
+ 55,159, 95,183,110,221, 25, 25, 25, 25,122,147,201,116, 40, 43, 43,107, 2,165, 52,183,172,255, 45,206, 69, 94, 36,146,101,255,
+ 90, 52,222,255,189,117, 88, 20, 87,168,221, 99, 12, 76, 32, 8,138,139,139,243, 81,169, 84,224, 56,206,166, 45,176, 78,106,246,
+182, 93, 69,126,154, 16, 25, 25,105, 42,103,194, 9, 78, 72, 72,240, 81, 42,149,182,239, 76, 38, 19,252,252,252,248,196,196, 68,
+ 31,169, 84,250,216,239,141, 70, 35,130,130,130,158, 39, 95, 40,111,123,120,120,228, 60,124, 24,223, 64,111, 48,205, 28,249,238,
+148, 79, 6,244,126,217,253,212,169, 83,252,171,175,190,106, 56,122,244,232,219, 0,150, 56, 88, 41,110,132,144,181,147, 38, 77,
+154, 33,149,171, 61, 15,159,186,110, 88,187,121, 87, 98,195,240,106,100,194,132, 9,236,123,239,189,119, 44, 42, 42,234, 39, 66,
+ 72, 35,103, 52, 91, 42,149,106,175, 68, 34,169,202,178, 44, 76, 38,211, 67,173, 86,251,202,115,212, 16, 27, 2,184, 72, 8,137,
+162,148, 94,114,244, 94, 89,146,153,153,137,194,194,194, 39,174,218,181,107,163,178,237, 15, 9, 33,130,224,224,224,223,231,205,
+155, 23,152,146,156,140,175, 23, 46,108, 14,224,123, 0,205, 29,249,255,180,180,180, 39,210, 25, 25, 25, 9,151, 56, 85, 7,147,
+103,204,152, 49,239,173,183,222, 2,199,113, 40, 44, 44, 12,184,115,231, 78,157,169, 83,167,246, 36,132, 52,165,148,198, 62, 37,
+190,119, 88, 88, 88,204,248,241,227, 61,154, 54,109,138,162, 40, 21, 1,199,143, 31,111,190,114,229,202, 65,132,144, 72, 74,105,
+250,211, 60,195,195,195,227,167, 31,127,252,209, 83, 46,151, 99,251,246,237,158, 29, 59,118, 60, 78, 8,105, 93, 81,178, 69, 8,
+ 97, 60, 61, 61,223, 3,208,129,231,121, 49,128, 51, 89, 89, 89,179, 43,226,213,221, 37,255,191,196,203,203,107, 68, 94, 94,222,
+119, 18,137, 68,228,238,238, 14,185, 92, 14,129, 64, 0,129, 64, 80, 69, 34,145, 84,145, 72, 36, 93, 59,116,232, 48,238,240,225,
+195,101,122,216,127, 41,202,111, 40, 24, 50,147, 37, 12, 11, 0,181,195, 60,213,110,110,110,152, 57,115,166,162,123,247,238, 10,
+ 0, 56,113,226,196,224, 33, 67,134,116, 36,132,212, 45,141,108,149,196, 69, 94, 20, 41,237,196,225, 99, 26,173,232,232,232,163,
+197, 58, 47,100, 50, 25, 54,110,220, 8,150,101, 31,139, 26, 95,210,251, 42, 85,170,148,155, 16,171, 70,108,199,142, 29, 80,171,
+213,112,115,115,179, 77, 52, 18,137, 4,135, 14, 29,130, 80, 40,132, 64, 32,128, 80, 40, 68,227,198,141, 81, 70, 64,251,103, 34,
+125,234, 16, 10, 0,155,222,121,148,174, 62, 75, 30, 57,129,220,244, 78, 36, 90,215,144,161,247,123,211,251, 21,232, 77, 77, 0,
+232,178,179,178,178,206,109,221,154,212, 48, 60, 92,244,211, 79, 63, 53, 13, 12, 12,236,237, 40,209, 2, 48,185, 81,163, 70, 91,
+ 88,153,155,215,224, 33, 67, 7, 15, 23, 48,166, 65,163, 63,154, 19,159,156,161, 27, 53,106,212,214,237,219,183, 15,254,242,203,
+ 47,111, 76,156, 56,113, 50,128, 79, 29, 77,191, 88, 44,174,122,231,206,157, 48,158,231, 81,175, 94,189,231, 38,140,129,149, 72,
+ 81, 74, 65, 8,121,140, 80,149,117,175, 60,177,106,176, 74,186, 42, 91, 2, 3, 3, 35, 7, 14, 28,232,165,205,200,192,215, 11,
+ 23, 90,191,110, 92,222, 54,162,117,139,208,104, 52,226,141, 55,222, 24,200,113,156,192, 74, 2, 13, 6,131, 49, 39, 39, 71,111,
+119,178, 39,157, 82,250,178, 3,229, 89, 93,161, 80,252, 15, 64, 84, 97, 97, 97, 32, 0, 40, 20,138, 68,158,231,183,233,116,186,
+ 79,173, 1,124, 43, 80, 79,193, 0,234,160,244, 80, 80,116,222,188,121,183, 39, 79,158, 28,251, 79, 99, 18, 66,170,250,250,250,
+206,237,211,167, 15,118,237,218,133,221,187,119,155,101, 50,153, 96,200,144, 33,100,220,184,113,238,227,199,143,239,138,167,112,
+226, 88, 36, 93,103,204,152,225, 81,171, 86, 45,108,222,188, 25,151, 47, 95, 46, 12, 11, 11,147,181,107,215, 14, 2,129,192,227,
+147, 79, 62,121, 21,192,154,167,121,128, 86,171,157,253,209, 71, 31,173,253,249,231,159, 85,247,238,221,195,146, 37, 75,188,250,
+245,235,119,148, 16,210,214, 81,178, 69, 8,145, 0,120, 15, 64,123,150,101, 91, 15, 25, 50,196,242,238,187,239, 10, 25,134, 49,
+ 47, 92,184,208,123,229,202,149,253,188,188,188,162, 50, 50, 50, 92,230, 7,101, 8,203,178, 38,158,231,133, 0,164,148, 82, 67,
+121,159,255, 75,121,247,244,244, 28,155,149,149,245,189,159,159, 31,124,125,125,159,152,107, 13, 6, 3,164, 82,169,200,207,207,
+239,199, 30, 61,122, 8,127,251,237,183, 82,183, 0, 9, 75, 62,219,254,203,172, 64, 15,119, 21, 0, 96,209,210,125, 5, 0,240,
+219,111,191, 33, 41, 41, 9,238,238,238,168, 91,183, 46, 59,107,214, 44,255, 9, 19, 38,124, 13, 96,120,105, 88,197,185,200,139,
+164,209,178, 39, 91,246,159,203,180,209,226,121,222, 22,176,212, 74,168,172, 36,168,248,123, 43, 57, 43,198,240, 14, 22, 75, 8,
+201,207,207,183,145, 44,181, 90,141,162,201, 21,102,179,249, 9, 92,142,227, 64, 8,161,101, 97,150,146,225,177, 0, 14, 81, 74,
+239, 58,200, 68,109,152,155,222,137,196, 90,201,164,254, 86, 23,234, 93, 63,122,244,186, 22,192,169,251,195,151,124,215,182,109,
+224,123,211, 22, 79, 47,204, 76,202,248,100,224,235, 85,195,252, 60,101,138,236,180, 28,143,136,136,206,120,228, 81,217,209,116,
+182, 25, 60,120,240,186,253,167,227,136, 84, 42, 18, 9, 88, 86,216,170, 94,184,103,176, 27,235,166, 2,220,226, 99,111,159, 26,
+ 58,116,104,189,137, 19, 39,182,118, 38,239, 12,195, 64,173, 86, 99,221,186,117, 96, 28,136,157,243, 44, 78,141,148, 80,239, 2,
+ 43,145,210,106,181,216,181,107, 23,162,163,163, 47, 18, 66,162,138,126,114,145, 82,138,220,220, 92, 36, 39, 39,195,223,223,255,
+ 34, 33, 68,104,191,141, 88, 28,211,170, 85,181,146,170, 33, 67,134, 12,180, 88, 44, 2,187, 65,162, 56,129,121,130,196, 56,154,
+247,128,128,128,253, 0, 94,102, 89, 22, 70,189,222,248,191,175,190,178,191,125,222,158,100,149,134,105, 77, 43,199,113,130,139,
+ 23, 47, 10,173,125, 6,128, 16,128, 2,128, 23,165, 20, 12,195, 92,113,160, 60, 35,229,114,249,169, 29, 59,118,168, 27, 55,110,
+ 76,196, 98, 49, 44, 22, 11,174, 94,189, 26,252,229,151, 95,142, 62,120,240,224,171,132,144,218,197,131,167, 59, 88,239,117,142,
+ 31, 63,174, 11, 13, 13, 45,145, 56,230,230,230, 10,194,195,195,219, 2,136,253, 23, 48, 19, 82, 83, 83,123,188,252,242,203, 99,
+ 82, 82, 82, 98, 44, 22,203,199, 0,234,122,121,121, 93,236,213,171, 23,100, 50, 89,123, 71,136, 86, 89,245,238,227,227,211,253,
+165,151, 94,194,146, 37, 75,240,229,151, 95,118,162,148, 30, 34,132,116,204,205,205, 61,216,173, 91, 55,104, 52,154, 30, 37, 17,
+ 45, 71,219, 18, 33, 36,188, 77,155, 54, 63,206,156, 57, 83,181,107,215, 46,132,133,133, 33, 47, 47, 15, 31,126,248,161,207,231,
+159,127,126,132, 16,210,206, 74,182, 74,195, 36,132,212,150, 72, 36,107,126,254,249,103,101,104,104,104,168, 72, 36, 98, 66, 67,
+ 67,161,213,106,161,215,235, 37,115,230,204,169, 39,147,201,254,250,230,155,111,214, 0,232,245, 79,247,247, 98,105,205, 1,160,
+ 6,160,113,102,219,181,140,188,231, 0,144,216, 58,143, 80, 8,169, 84, 10,169, 84, 10,137, 68,130,155, 55,111, 78,147, 74,165,
+ 11,237,199,226,178, 48,201,223,147, 86, 3, 66,200, 89,150,101,203,252, 92,220, 52,228,159, 46,207,162, 52, 7, 17, 66, 22, 1,
+104,255,104,200,103,142,122,121,121,189,159,146,146,242,192, 81,204,128,128, 0,207,252,252,252,111,252,253,253,225,235,235,107,
+155, 59, 2, 3, 3, 97, 54,155,145,154,154, 10, 74, 41,178,179,179, 33,151,203, 17, 16, 16,240,205,232,209,163, 55, 47, 91,182,
+ 44,179, 68, 76, 30, 95,118,235, 55,245, 51,150,101, 25, 0, 96, 5, 74,229,248, 41, 64,213,170, 85,209,170, 85, 43,232,245,122,
+228,228,228,160, 78,157, 58, 2, 66,200, 96,134, 97,212,148,210, 31, 40,165,135,255,131, 90,247, 82,141,225,103, 20,223, 23, 37,
+132,128,231,121, 8, 4,130,199,136, 86,241,203, 74,138,138,218, 43, 41, 79,197,109, 52, 26,109, 36,203,205,205,205, 70,210, 44,
+ 22, 75,105, 68,171, 34, 76,189, 62,207,243,213, 9, 33,203, 28, 37, 91,197,101,240,224,193, 79,216,123, 76,152, 48, 33, 33, 45,
+ 45,141,190,209,185,129, 34,102, 79, 82,114, 13,119,165,204, 91,165,170, 38,117,247,208,100,102,102,254, 9, 64,227,196, 35,106,
+ 54,106,212, 72,182,118,235,241,132,145, 31,204,155,213, 56,212, 83, 93, 63,200,203,221,207, 77, 38, 86, 50, 68, 39,181,152, 19,
+ 60, 60, 60,194, 42,176, 66, 3, 0,104, 52, 26, 8, 4,130,231, 66,163, 69, 41,181, 16, 66,162, 8, 33, 23,119,237,218,133,102,
+205,154,217,200,150,149,132,228,228,228,224,234,213,171,104,211,166, 13, 0, 68, 57, 98,171,197,243, 60, 76, 38, 19, 76, 38,147,
+141,192,136, 68,162, 39, 8,140,245,183, 44,203, 94,169, 96, 22,102,185,187,187,183,105,223,190,189,248,151,141, 27,197,148, 82,
+ 29, 30, 5,190,206,167,180,148, 0,217,197,196, 98,177,216,180,108, 66,161, 16, 15, 31, 62,180,105,133,173,154,225,226, 91,231,
+165,137, 68, 34,249,232,215, 95,127, 85, 55,109,218,148,100,102,102,130,231,121,219, 32,249,253,247,223, 75,123,247,238, 29,120,
+225,194,133, 79, 80,129,112, 54, 0, 72,105,132, 8, 0,212,106,181, 5, 0, 83, 25,152, 22,139,133,180,108,217,114, 98, 70, 70,
+ 70,189,194,194,194, 57,142,180, 35, 0,219,139, 46,235,152,242, 87, 76, 76, 76, 97,223,190,125,101,213,170, 85,107,246,180,109,
+ 53, 60, 60,188,133, 80, 40,196,153, 51,103, 12, 0,172, 43,235,163,151, 47, 95, 54,244,234,213, 75, 18, 28, 28,220,194,137, 1,
+ 55, 60, 50, 50,242,128,143,143,143,204,170,193,236,211,167,143,112,249,242,229,170,196,196, 68,152, 76, 38, 76,158, 60, 25,175,
+189,246, 26,188,188,188, 48, 97,194, 4,223,249,243,231,255, 4,160, 81, 25,152, 82,177, 88,188,238,206,157, 59, 97,254,254,254,
+178,211,167, 79,163,126,253,250,200,200,200, 64, 74, 74, 10,242,243,243,145,146,146,130,225,195,135,251,124,253,245,215, 1,207,
+209,252,147, 45, 18,137, 32,151,203, 53,217,217,217, 57, 79,129, 35, 1, 32,182, 39, 89, 18,137, 4, 18,137, 4, 82,169,244,169,
+226,178,190, 32,147,120, 32, 33,228,186, 72, 36,146,200,229,114, 17,195, 48,144, 72, 36,157, 61, 60, 60,174,189,242,202, 43,117,
+247,239,223, 31,231, 8,142, 94,175, 95, 39,145, 72,132, 62, 62, 62, 0,128,176,176, 48,212,175, 95, 31, 58,157,142,207,201,201,
+129, 70,163, 97, 30, 60,120,128,194,194, 66, 36, 39, 39, 35, 36, 36, 68,200, 48,204, 58, 0,175,150,132,119,242, 66,242, 82, 0,
+ 75,173,159,189,189,189, 83, 1,200,172,159,165, 82, 41, 2, 3, 3,145,152,152, 8,149, 74,197,126,254,249,231,189, 54,110,220,
+216,147, 16, 50,152, 82,186,222, 14,106,198,139,106,163,101, 37, 89,246,175,143, 17,173,232,232,232,233,187,118,237,106, 91,210,
+ 68, 86,180, 95, 91,170, 38,203,122, 57, 66,136, 8, 33,224, 56, 14,190,190,190,144,203,229,144,203,229, 32,132,216,190, 47,142,
+ 95,180,194,119, 58,179, 10,133, 2,111,189,245, 22,253,225,135, 31,198, 20,145,173, 59,142,254,111,159, 37, 49, 54, 45, 86,113,
+169, 93,187,246,169, 79, 62,249,164,251, 31,127,252,145,216, 56,180,154, 64,145,244, 32, 95,170,214,104, 16, 84, 37,122, 72,143,
+ 94,151,241,232,244,161,163,114, 39, 47, 47, 79, 86, 35, 72,110,100, 24, 61,169, 34, 17,168,252, 21, 34,137,159,187,123,160,200,
+104, 72, 83,187,187,139, 13, 6, 67, 54,128,172,178, 64,212,106,245, 62,137, 68, 18,194,178, 44, 88,150,133,151,151,151, 27,165,
+ 20, 26,141, 6, 65, 65, 65,202,136,136,136, 91, 2,129, 0, 12,195, 32, 63, 63,255,193,253,251,247, 59,151,151, 48,119,119,247,
+125, 18,137, 36,132, 97, 24, 16, 66,192,178,172,237,224,130,245, 61,203,178, 32,132,160,160,160,192, 33, 76, 74,233, 37, 66, 72,
+ 84,116,116,180,141,108,237,217,179, 7, 93,186,116, 65,118,118, 54,174, 93,187,102, 79,178, 28,218, 54,180, 55,126,167,148, 66,
+ 36, 18,225,230,205,155,143,109,105, 91, 47,149, 74, 85,225,206,227,225,225,113,162, 79,159, 62,248,241,199, 31, 41,165,148, 0,
+ 80, 16, 66,234,187,185,185,221,188,126,253,186, 67,118, 48,148, 82,152, 76,127,255,212,218,198,237,251,151, 19,100,186,115,163,
+ 70,141, 72, 78, 78,142,149, 64,218, 22, 68, 44,203,226,187,239,190,147, 53,109,218,116,170, 84, 42,157, 40, 18,137,114,205,102,
+243, 47,122,189,126, 14,165, 52,251,121, 26,148, 90,183,110,253, 65,124,124,252,107, 33, 33, 33, 59,158,130,196,211, 38, 77,154,
+ 24, 1,200, 88,150, 21, 86,194, 64,201, 22,181, 45,189,149,236, 83, 74, 45,141, 26, 53,210, 23, 77,242,172,163, 88, 94, 94, 94,
+ 63,237,222,189, 59, 40, 36, 36, 4,102,179, 25, 22,139, 5,249,249,249, 56,122,244, 40, 12, 6, 3, 44, 22, 11,194,194,194,240,
+217,103,159,233,223,127,255,125,233,178,101,203,210,242,243,243, 7,148, 3,251,254,230,205,155, 21,254,254,254,178,194,194, 66,
+196,198,198,162, 81,163, 70,200,203,203,131, 78,167, 67, 65, 65, 1, 76, 38, 19,114,115,115, 53, 28,199, 25,159,151,186, 22, 8,
+ 4,144, 72, 36, 16,137, 68,217, 33, 33, 33, 32,132, 72,227,226,226, 42,178, 21,167, 6,144, 43, 20, 10,197,246, 4, 75, 34,145,
+224,204,153, 51,159,136,197,226, 18,181, 89,101,181, 31,103, 62, 63, 7, 19,249, 34,145, 72, 36,241,240,240, 16,217,205,211, 34,
+165, 82, 9, 31, 31,159, 37, 0,186, 58,152,239,134, 30, 30, 30,182,241,189, 65,131, 6,136,143,143,223,150,147,147, 51, 40, 45,
+ 45, 13, 12,195,172, 99, 24,166,167,149, 7,100,101,101, 33, 56, 56,184, 97,105,120, 45, 27,249,143, 1,161, 54,141, 86,237,154,
+ 30,202, 98,243, 20,212,106, 53,238,223,191, 15,157, 78, 71,111,223,190, 77,198,142, 29, 75,140, 70,227,106, 66,200,159,148,210,
+123,101,113,145, 23, 65, 42,100,163,101, 45,224,210,136, 85,113,226,229, 8, 33, 50, 26,141,202, 70,141, 26,241,214, 9,220,122,
+ 1, 32,165, 17,173, 34,205,129,211, 34, 20, 10, 85, 99,199,142,205,251,225,135, 31, 70, 19, 66,150, 83, 74,111, 87,180, 0,119,
+108,249,217,247,203,207, 38,127,230, 17, 80,173,198,196,137,211, 4,175,191,254,250,233,181,107,215,114, 30,181,186,118, 60,188,
+111,189,239, 55, 31, 78,218,179,123,247,110,224,145, 97,180,163,114, 98,231,206,157,126, 19,222, 27,135,207, 62,122,127,175, 58,
+204, 75,172, 36, 30, 10,169, 65,151,174, 4, 45,148,212,140,124,109,235,142, 29,201, 0, 46,148, 5, 34,147,201, 66,110,223,190,
+ 29,102, 79, 36, 76, 38, 19, 52, 26, 13,214,174, 93,235,173, 82,169,188,149, 74, 37, 4, 2, 1,234,215,175,239,168,198, 36,228,
+214,173, 91, 97, 42,149, 10, 5, 5, 5, 48, 24, 12, 48,155,205,224,121, 30,132, 16, 8,133, 66,136,197, 98, 40, 20, 10,167, 78,
+246,217,147,173, 61,123,246,160, 78,157, 58,200,202,202, 66, 76, 76,140,211, 36,203, 94, 75,100,111,143, 37, 16, 8,240, 83,104,
+ 40, 70, 38, 37,217, 8,204, 34, 55, 55,124,198,243, 21,170,251,122,245,234,209,147, 39, 79, 98,239,222,189,232,214,173, 27,249,
+253,247,223, 77, 28,199,137, 18, 19, 19, 29,214,142,241, 60,111, 75,171,117,220,182, 39, 88,206, 18, 45,139,197,162, 18,139,197,
+208,235,245,182,173,125,251,171,122,245,234,208,106,181,130,220,220, 92, 65, 82, 82,146,124,246,236,217,239, 30, 57,114,196, 31,
+ 64,255,127,115, 32,250,225,135, 31, 66, 70,142, 28,249, 80, 32, 16,208, 46, 93,186, 12,124,240,224, 65, 15,127,127,255, 67,127,
+252,241,199, 87, 0,194,157,197,243,246,246, 62, 47, 16, 8,130,148, 74,165,104,211,166, 77,230,188,188, 60,145,143,143, 79,170,
+149,216, 90,203,218,108, 54, 39,228,228,228, 52,118, 4,207,219,219, 91,244,237,183,223,154, 51, 51, 51, 69,126,126,126,169, 86,
+ 28,133, 66, 33,218,180,105,147, 57, 55, 55, 87,164,209,104,206,103,103,103,151,139,151,145,145, 49, 96,240,224,193,199, 15, 29,
+ 58,228,197,178, 44, 30, 60,120,128,204,204, 76,104, 52, 26,172, 91,183, 14, 33, 33, 33,216,188,121,179, 86,171,213,142,248,223,
+255,254, 55, 53, 63, 63,223, 17, 87, 15,109,154, 53,107, 22,146,157,157, 13,141, 70, 3,157, 78,135,243,231,207,163,118,237,218,
+ 72, 74, 74, 2,195, 48,208,104, 52,248,254,251,239, 11, 8, 33,218,231, 97, 2, 98, 89,214,166,117,178, 35, 71,250, 22, 45, 90,
+224,200,145, 35,147,156, 33, 71,148, 82,163, 80, 40,124,140, 96,217,189,183, 56,155, 54,142,227, 68, 69, 54,162,196,145,207,207,
+129,180,149,201,100,162,226, 95, 22, 20, 20,136,252,253,253, 91, 59, 65,124, 61,101,178, 71, 10,167,144,144, 16,228,228,228,112,
+ 70,163,177,223,186,117,235,204, 0,208,168, 81,163,126, 28,199,233, 45, 22, 11, 43, 22,139,161,211,233,224,227,227,227, 89, 42,
+ 32,131,143,183,255, 50,219,175,184,141,150,191,191, 63,162,162,162, 96, 48, 24,144,156,156,140,163, 71,143,154, 57,142,219,240,
+195, 15, 63,240,222,222,222,195,222,120,227, 13,246,194,133, 11,239, 0,248,160, 44, 46,242,162,104,179, 74, 35, 91,214, 83,135,
+109, 1, 28, 1,208,206,154, 73,251,173,195,178, 52, 89,197, 52, 90,164,156, 14,151,157,144,144,160, 80, 40, 20,182,239,204,102,
+ 51, 2, 2, 2,120,158,231, 73,241,231, 88,211, 81, 81, 17, 10,133,170, 41, 83,166,100,127,255,253,247,131,224,160, 65,249,166,
+119, 34,177,182, 24,201, 90,250,229,204, 37,223,126, 57,219,227,238,222,213, 88,177,120, 1,199,113,184, 80,175, 94,189,214,249,
+249,249, 2, 55,133, 25, 25,217,216,131, 71,126,180,168,131, 21,194, 0, 88,117,246,236,217, 11, 93,187,118, 61,185,234,215,173,
+ 30, 73,177,177,127, 74,114, 51,146,213, 53,195, 4,162,192,144,158,121,122,189,168, 95,191,126,222, 0,222, 40, 11,139, 97, 24,
+196,198,198, 34, 46, 46, 14, 74,165, 18, 42,149, 10, 74,165, 18,106,181, 26, 42,149, 10, 42,149,202,233, 50,100, 24, 6, 28,199,
+ 97,203,150, 45,144,203,229, 80, 40, 20,143, 93, 86,146,245, 52,117,211,165, 75, 23,104,181, 90, 40,149, 74,219,118,167, 51, 98,
+181,209, 50, 26,141, 48, 26,141, 48,153, 76, 28, 0,161, 64, 32,192,240,132, 4,155,150,199, 25, 2, 83, 92,234,215,175, 79,255,
+252,243, 79,156, 60,121, 18, 58,157, 14,223,126,251, 45,252,253,253, 59, 0,152,230, 44,150,157,145, 62,151,155,155, 43,204,205,
+205,181,105, 7,133, 66,161, 77, 99,232,232,228, 32, 16, 8,108,171, 81,235,101,175,213, 98, 89, 22,190,190,190,240,243,243,195,
+210,165, 75, 69,213,170, 85,123,237,223, 28,132,230,207,159, 95,115,209,162, 69, 43,215,174, 93,187,103,192,128, 1, 27,175, 94,
+189, 58,212,205,205,237,202,225,195,135,103, 75, 36, 18,190,130,253, 59, 40, 41, 41,201,199,254, 43,158,231,229, 22,139,197, 70,
+108, 11, 10, 10, 80,183,110, 93,135,241,174, 95,191, 46, 7,128,217,179,103, 11, 1,200,173,110, 67,172,152, 5, 5, 5,194,218,
+181,107, 7, 57, 72, 10,110, 17, 66, 90,119,234,212,233,212,129, 3, 7,220, 67, 66, 66,144,152,152,136,196,196, 68,212,172, 89,
+ 19,115,231,206,213,229,230,230,182, 44, 34, 87,191, 59,152,237, 0,119,119,119,225,195,135, 15, 97,177, 88,208,176, 97, 67,124,
+255,253,247,232,215,175, 31,234,214,173,139,220,220, 92, 92,191,126, 29,107,214,172,113, 23,137, 68,111,252,219,147, 79,209,214,
+ 86,169, 87, 69,196, 98,177,168,165, 82,105,174, 68, 34, 17, 91,237,179,142, 30, 61,234,180, 54,203,126, 1,232,204,231,231,129,
+180, 22, 23,177, 88, 12, 63, 63, 63,135,113, 36, 18, 9,177,142,141, 22,139, 5, 57, 57, 57,156,191,191,191,109,123,255,226,197,
+139, 92,213,170, 85, 57,150,101, 89,177, 88, 12, 66, 8,228,114,121,169, 3, 62,229,232,204,215,251, 77,179,157, 58,100,132, 10,
+245,248, 41,143, 22,253, 23, 47, 94,132,201,100,194,209,163, 71,205,255,251,223,255,146,178,179,179,199, 3, 16,236,219,183,111,
+240,164, 73,147, 88, 31, 31, 31,155, 29,109, 73, 92,228, 69, 35, 91, 37,105,185,172,179,208,145,232,232,104, 82,116,180,146, 88,
+ 9, 14,165,244, 9,114, 85, 26,241, 42,154, 36, 72,121,157,142,101, 89,236,221,187,215, 70, 8,172,167, 14, 41,165,168,108,162,
+229,233,233,169,107,214,172,153, 58, 62, 62,254,231,138,106,178,150,126, 57,115,201,188, 89,159,123,104,111,156, 70, 66, 82, 50,
+180,105,230, 11, 39,174,220,223, 6, 96, 27, 0, 96, 89,173, 35, 24,125,227, 59, 71, 49,107,121,203, 27,212, 11, 80,109,123,185,
+235,107,193,125, 71,125,192,188,253,246,219,173, 6, 15, 30,156, 51, 96,192,128,247,148, 74,101,184,201,100,202,218,186,107, 87,
+ 92,223,190,125,171,113, 28, 55,184, 60,159, 35,102,179,249, 65,175, 94,189,108,101,235,231,231,167,254,229,151, 95,124, 85, 42,
+ 21, 6, 14, 28,152, 30, 23, 23,103,219, 46,202,203,203,123,224, 72, 26, 77, 38,211,131, 6, 13, 26,148,186, 93,104,213, 72, 58,
+131, 89, 84,151,182,211,133,153,153,153,184,121,243, 38, 4, 2, 1,154, 55,111,142, 19, 39, 78,160, 85,171, 86, 78,157, 56,212,
+235,245, 8, 9, 9,129, 94,175,135, 78,167, 43, 0, 32, 89, 87,173, 26, 0,224,157,204, 76,156,255,223,255,112,122,222,188, 10,
+181,163, 6, 13, 26,208, 51,103,206,224,202,149, 43, 48, 24, 12, 24, 49, 98, 4,138,182, 13, 1,224, 21, 39,242, 28,234,231,231,
+215,165,107,215,174, 1, 0,160,211,233,200,217,179,103, 33,149, 74, 65, 8, 65,114,114, 50,118,236,216,129,196,196, 68, 16, 66,
+224,238,238, 30, 68, 8,169, 70, 41,189, 95,198,196, 64,238,223,191,143, 47,190,248, 2, 60,207, 99,210,164, 73, 8, 11, 11,179,
+ 17,172, 7, 15, 30, 96,246,236,217,224, 56, 14,159,127,254, 57,106,214,172, 9,179,217, 44,117,198, 79, 89,101,203,132, 9, 19,
+238,110,219,182,109, 79,124,124,252,171, 95,126,249,101, 91, 66, 8, 63,113,226,196, 47,212,106, 53,247, 52,184, 89, 57,121,184,
+121,231,129,141, 8, 21,191,188,189, 60,156,198,187, 29, 27,111,251,127,142,179,199,227,224,233,225,238,108, 18, 11,204,102,179,
+174,103,207,158,154, 45, 91,182,144,154, 53,107,226,222,189,123,214,197,105, 65, 5, 92, 58, 36,106,181,218, 48,150,101, 69,119,
+238,220, 65,213,170, 85,209,172, 89, 51,204,153, 51, 7, 25, 25, 25,176, 88, 44,240,241,241,225,205,102,243, 69,163,209,120,236,
+223,158,120,236,181, 78,246,215,209,163, 71, 39,137,197, 98, 10,224, 12, 0,167,136, 54,165,212, 88,165, 74,149,226,216, 22, 60,
+ 39,242, 44, 79, 50,250,251,251, 31, 85,169, 84,175,101,101,101, 61,166,213,106,217,178,165,201,215,215,247,184,163, 56, 74,165,
+ 50,139,101, 89, 79, 0, 72, 76, 76,132, 66,161, 16,197,198,198,206, 35,132, 76, 6,128,106,213,170,205,211,106,181,162,106, 69,
+227,169,159,159, 31,140, 70, 99,169,102, 44,167, 46,166,172, 6,176,218,110,238, 77,206,201,201,145, 45, 88,176, 32,127,222,188,
+121,133, 28,199, 25, 0, 28,206,206,206,182,249,209,170, 90,181,106,142, 80, 40,244,208,104, 52,129,118, 80, 79,112,145, 23, 73,
+202,212,104, 21, 49, 73, 90,194, 63,149,168,201, 42,137,108, 57,162,149, 32,132,160,176,176,240, 49,237,136,245,212, 97, 73, 68,
+171,104, 66,175,208,214, 97, 17,201,146,253,242,203, 47, 27, 22, 47, 94,124,210,209,255,179,183,209, 90,246,213,172, 47,173, 36,
+235,242,201, 3,248, 61, 38, 39, 99,210,188,133,139, 42, 90, 9,181,189, 21,245,253,124,189,142,252,111,238, 76,245,221,189,107,
+176,113,217,215,244,242,185,115, 77,207,157, 59, 55,104,220,184,113, 85,138, 26,150, 22,192, 95, 0,250, 58,114, 74, 39, 61, 61,
+253, 49,251,168,176,176,176, 91, 26,141,198, 87, 42,149, 34, 54, 54, 54,255,218,181,107, 78,111,201, 20,199,172, 36,166,255, 24,
+201,186,118,237, 26,218,183,111, 15, 0, 56,113,226, 4, 90,182,108,233, 20,217, 50,155,205,217,181,106,213,178,105,183,114,114,
+114,120, 0, 24,149,156,140,229,254,254, 16, 8, 4, 56, 61,111, 30, 62, 53,155, 49, 71,232,156,233, 78,195,134, 13,233,185,115,
+231, 16, 23, 23, 7,139,197,130,238,221,187,219,147, 44,103,242, 92, 55, 50, 50,242,224,225,195,135,189,149, 74, 37,116, 58, 29,
+242,243,243, 49,100,200, 16,244,235,215, 15, 6,131, 1,155, 54,109,194,246,237,219,161, 82,169,160,211,233,160,211,233,220,163,
+163,163, 79, 17, 66,218,148,102, 91, 72, 41,165,157, 59,119,198,241,227,199,193,178, 44,154, 54,109,138,204, 76,219, 97, 32,248,
+250,250,150,116,143, 45,234,239,255,202,132, 36, 16, 8,232,209,163, 71,191,108,219,182, 45,226,227,227, 95,109,212,168,209,183,
+ 67,135, 14, 77,124, 90, 92,119, 55, 21, 26,212, 14,133,193, 96,128,193, 96, 64, 64, 64, 0,242,242,242,112,247,238, 93, 24, 12,
+ 6,248,250,104,156,198,139,170, 91,211,134,231,227,227, 3,157, 78,135,251,247,239,195,104, 52,194,203,203,221,153,250, 15,238,
+220,185,243, 31, 27, 54,108,240, 92,179,102,141,177, 93,187,118,226,111,191,253,150,168,213,106,164,165,165, 85, 52,203, 71, 79,
+156, 56, 17,210,169, 83,167,136, 27, 55,110,224,232,209,163, 48, 26,141,136,138,138,194,237,219,183,209,162, 69, 11,228,231,231,
+159, 57,119,238,220,246,231, 97,226,177,110,235,217,105,158, 62,213,104, 52, 38, 0,139,158,166, 45, 62,124,248, 80, 82,191,126,
+125,131, 84, 42, 21, 23,145,182,133,255, 86,219, 46,161,222,159,234, 36, 99, 89,226,231,231, 55,222,203,203,171, 83,245,234,213,
+145,154,154, 42, 18,139,197,104,217,178,165,169, 73,147, 38, 38, 63, 63,191,119,156,168,151, 27, 34,145,168,205,163,197, 4,135,
+135, 15, 31,130, 82, 58,169,110,221,186,239,231,229,229, 33, 51, 51, 83,172, 86,171,109,139,234,136,136, 8, 24, 12,134, 27, 78,
+144,205,153, 85,171, 86,157, 42, 18,137,230,164,167,167,255, 80, 66, 25,137, 27, 52,104,160, 22,137, 68, 48,153, 76,143,145,205,
+146,184,200,139, 76,178, 30, 35, 90,118, 44,178,184, 58,189,220,109, 67, 71,109,180, 8, 33, 48, 26,141, 80, 40, 20,182, 45, 41,
+123, 79,240, 37, 17,173,138, 72,112,112, 48,154, 53,107, 38,219,184,113,227, 79, 11, 22, 44, 56, 85, 17,140,205, 27,214,251,187,
+241, 5,193, 73,103,118,227,214,149, 11,216,118, 61, 59, 99,210,188,133,239,189,254, 70,255,212,226,196,108,211,232,242,241,194,
+125, 20,117, 3,125, 61,143,124, 53,127,158, 90,123,227, 52,146, 83, 82,176,251,204,185, 11, 70, 74,175, 3,152, 84, 89,149,109,
+127,122,173,162, 36,245, 25, 12, 60, 54,247, 14, 25, 25, 25,184,126,253,186,149,100, 69, 1, 64,171, 86,173, 46, 90,201,214,133,
+ 11, 23,208,168, 81,163, 39,220, 59, 60,161,121,200,202,154, 91,236, 25,157, 0,120, 89, 9,191, 64, 32, 64,203,169, 83,157, 38,
+ 89,132, 16,202,113, 28,180, 90,173,117,165, 88, 33,146, 85, 52, 40,126,116,248,240, 97,239, 85,171, 86,229,174, 93,187, 54,147,
+231,121, 97,131, 6, 13,130, 26, 55,110, 76,214,173, 91, 7, 0,232,219,183, 47, 38, 77,154,132,107,215,174, 65,161, 80,160, 85,
+171, 86,220,244,233,211,125,198,143, 31,255, 14, 30,249, 73,122, 66, 56,142, 19, 85,171, 86,237, 16,128, 14, 55,110,220, 0,128,
+ 83,148,210,150,214,251,101,221,115, 64,248,188,188, 60,161, 74,165, 42,209, 53,132,232,209,177, 78,103,183,250,108,152, 39, 79,
+158,252,226,171,175,190,218,246,225,135, 31,222,121, 74,204, 18, 53, 90,175,189,246, 26, 10, 13, 38, 36,164,230,128,227, 44, 40,
+ 52,165, 57,141,103,175,209,122,237,181,215, 80,160, 55,226, 97,178, 22, 22, 11,135,188, 66,139,163,237, 72,254,242,203, 47,239,
+251,229,151, 95,252,254,252,243, 79,112, 28,199,223,190,125,251,126,207,158, 61,213, 19, 39, 78,244,180,179, 65,117, 86, 22,247,
+239,223,191,247,201,147, 39,181, 17, 17, 17, 30,103,206,156, 65, 90, 90, 26, 44, 22, 11, 58,116,232, 0,177, 88,252,112,222,188,
+121, 34, 0,139,159, 23,162, 37,145, 72,112,246,236,217, 74, 33, 88,246, 34, 22,139, 43,188,253,248,162,202,153, 51,103, 18,199,
+141, 27, 87, 91,173, 86, 47,106,221,186,117,123, 79, 79, 79,198,221,221,253,104, 96, 96,224,251,245,235,215,119,120,119, 65, 40,
+ 20, 14, 85, 40, 20,119, 45, 22, 11,155,159,159, 15,157, 78, 7, 0,176, 88, 44, 98,134, 97, 80,173, 90, 53,155,242,164,105,211,
+166,240,243,243,227, 98, 98, 98,134, 58,138,159,150,150,246,216, 41,196, 18,100,116,203,150, 45, 5, 6,131, 1,113,113,113, 39,
+236,111,148,198, 69,158,119,169, 80, 80,105,134, 97, 64, 41,133,180,113, 99, 36, 31, 56,128, 45, 91,182,148,249,144,101,203,150,
+161,184,170,175,120,116,111,235,233,194,145, 35, 71,218,126,115,225,194, 5,155, 81,124,247,238,221, 31,195, 60,123,246,236, 19,
+100,203,145,136,225,105,105,105, 55, 54,109,218,116,110,254,252,249,103, 28, 44, 32, 27,166,213, 70,171,247, 91, 3,147,151,124,
+241,217,213,181, 59, 14,215, 77, 46,164,201,147,230, 45,252,176, 56,201,114, 20,179,150,159,178, 86,144,143,231,209, 5,243,231,
+185, 89,181, 99,191, 92, 76,201,129,133,142,118,178, 34,203,205,187,189,102,145, 16,194, 87, 6,102, 5, 26,220, 99,152,246,238,
+ 29,146,147,147,109, 36,203,206, 97,105, 84,171, 86,173, 46, 22,145, 44,235, 61, 75, 69,210, 41, 16, 8,240, 97,126, 62, 4, 2,
+ 1,218,205,152,129, 14,179,102, 57,157,119,142,227, 32, 16, 8, 16, 22, 22,230, 52,201,178,199, 36,132,180, 44, 40, 40,192,154,
+ 53,107,242,238,220,185, 19, 90,189,122,245,241,171, 87,175, 94, 40,151,203, 31,251,159,130,130, 2,188,254,250,235,248,225,135,
+ 31,208,185,115,103,243,208,161, 67, 37, 12,195,116, 42, 43,157,113,113,113,163, 59,118,236,184, 76,175,215, 11, 50, 51, 51, 71,
+ 59,122,175,188,188,111,218,180,233, 78, 88, 88, 88, 91,148,238,194,129, 7,240,231,211, 96, 46, 90,180, 8, 0, 34,158, 6,179,
+ 52,141,214,175,191,254, 10,158,231, 17,236,167,129,193, 96, 64,241,178, 46, 15,179,184, 70,107,227,198,141,224,121, 30, 85,252,
+ 61, 96, 52, 26, 97, 53, 32, 46, 15,211,211,211,243,235,181,107,215, 6,197,196,196, 32, 33, 33, 1, 11, 23, 46,124,144,157,157,
+221, 53, 59, 59, 91, 50,125,250,244, 35,111,189,245,150, 47,207,243, 6,103,251, 38,165,212, 64, 8, 25,250,210, 75, 47,173,155,
+ 61,123,246,189,200,200,200, 42, 45, 91,182,212,100,102,102,166, 95,186,116,233,254,178,101,203,148, 22,139,101,104,105, 91, 82,
+255, 68,127,183,151,196,196,196, 25, 69,218, 84,167, 8,150, 35,233, 60,123,246,236,148, 34,236,115,142, 96,255, 83,121,127,218,
+147,140,229,165,243,187,239,190, 75, 64, 49,255,104,206,166,243,236,217,179,113,157, 58,117,154,229,235,235, 59, 93, 42,149, 34,
+ 61,253, 81,176, 3,171,230,209, 58, 95, 55,110,220, 24,157, 59,119,198,173, 91,183,102, 77,157, 58, 53,238,105,202,179,104,193,
+ 29, 10, 96, 80,199,142, 29, 39,246,238,221, 27,223,125,247, 29, 40,165, 43,255, 11, 36,184,220,160,210,209,209,209,196,254, 21,
+ 0,204,102,115,252,221,187,119,253,107,102,101,177, 1,132,160,105,211,166,176,143, 81,104,181,219,177, 26,212, 29, 59,118,204,
+194,243,124,153, 62,171, 56,142,139, 63,121,242,164,239,129, 3, 7,132,214, 10, 45, 50,234,228,147,146,146,152, 35, 71,142,216,
+180, 99, 2,129, 0, 71,143, 30,181,152, 76,166,135,206,102,248,214,173, 91,149,178,154, 59,118, 45,238,253,125,187,127,243,106,
+222,172,117,182,218,195,163,196,142,108,245, 32, 95,102, 3, 19, 48,115,190,156, 59, 83, 99, 37, 89,191, 94, 76,201,214, 27,184,
+246, 55,210, 11, 46, 87,118,101,231,229,229,197, 89, 79, 23,230,231,231, 63,124,142, 26,225, 37, 66, 72,148,191,191,255, 69, 20,
+ 59, 93,104,189,215,168, 81,163, 39,238, 57,165, 54,225,121,184,185,185,217, 6, 9,103,237,178, 8, 33,212,186,149, 93,148, 46,
+242,148,121, 62,121,245,234,213,170, 67,134, 12, 81,133,133,133,197, 18, 66,132,195,135, 15, 55,249,249,249,137, 78,156, 56, 97,
+ 6, 64,218,182,109, 43, 72, 73, 73,161,137,137,137,218,110,221,186,229,141, 28, 57,210,243,175,191,254, 18,243, 60,127,176, 28,
+236,123, 0, 58, 58,123,175, 60,233,221,187,119, 44, 74,112, 28,250, 52,242, 44, 48,173,162,205,206, 69,108, 92, 98, 81,172, 75,
+ 30,220,131, 84,155, 93,149,217,108,129, 54, 55,211,105,141,214,221,251,137, 69, 33,199, 56,112, 92, 82, 17,222, 35,131,120,154,
+ 85,224,136,182,160,213,162, 69,139,186, 50, 12,195,156, 62,125,218, 48,127,254,252,248,244,244,244,238,148,210,135, 69,237,172,
+221,154, 53,107,126,114,192,149, 67,105,117,127,157, 16,210,226,227,143, 63,126, 15, 64, 43, 0, 85, 0, 60, 4,112, 2,192,226,
+231,204,131,249,194, 23, 20,187,194,242,162,156,100, 60,120,240,224,140, 30, 61,122, 8, 66, 66, 66, 62, 9, 9, 9, 97,178,178,
+178,144,159,159, 15,134, 97,224,231,231,135, 58,117,234,192,207,207,143,191,113,227,198,220,143, 63,254,184, 92,159,124,181,107,
+215, 14, 53,155,205, 53, 24,134, 9, 5, 16, 74, 41, 13, 37,132,132, 2,240, 40,210,140,169,171, 86,173, 42,104,222,188, 57,154,
+ 53,107,134, 35, 71,142, 96,243,230,205,171, 41,165,251,236,181, 89,197,185,200,243, 32,215, 27,147,182,132,199, 17,202,160, 93,
+237,243,244,232,141, 40, 66,107, 93,124,114,126, 40, 55,168,244, 19, 3, 78, 86, 86,231,174, 93,187, 30, 96, 89,182, 90, 73, 19,
+ 87, 9,193,159,227, 82, 83, 83, 95, 45,115, 16,203,202,234,252,254,251,239, 31, 96, 89,182,154, 85, 83,101,177, 88, 12, 90,173,
+246,237,118,237,218,125, 47, 20, 10, 37,246,184, 60,207, 63, 72, 77, 77,253, 71, 99,245, 21,247,163,213,185,107,143,140,167,197,
+ 84,138,152, 26,183,118,253,136,212,180, 12,252,122, 49, 37, 43,207,200,181,187,149,174,187,250, 44,210, 31, 23, 23,215,229, 57,
+102,252,151, 74,219, 18, 44,235,158,131,146,238,128, 67,210,244,114,210, 71,138,200, 86,165,116,242,148,148,148, 5, 83,167, 78,
+125,101,238,220,185,222,123,246,236, 81, 23, 61, 3,189,122,245, 74,187,122,245,106,107, 0, 18,189, 94,127,112,238,220,185,222,
+ 51,103,206,244, 4,224, 89, 52,200,164,166,166,166, 46,129, 75,202, 20,179,217,156, 80,167, 86,132,181,238, 30,115,233, 96,255,
+222, 98,177, 36, 56,131, 87, 18,142,253,103,142,227, 18,202,209, 42,127,216,172, 89, 51,246,195, 15, 63, 76,221,179,103,143, 53,
+144,110,129, 93, 59,187,133, 50,156,146, 58,216,151, 12, 0,230, 23, 93, 46,121, 14,199, 58,103, 62,255, 91,242,219,111,191, 77,
+235,215,175,223, 26, 15, 15,143,245,161,161,161, 17,190,190,190,106,153, 76, 6,131,193,144,103, 52, 26,111,222,186,117,107,192,
+212,169, 83,239, 57,130,181,102,205, 26, 22,128,136,231,121, 41,195, 48, 10, 0,106, 66,136,187,149,104, 17, 66, 96, 50,153, 16,
+ 23, 23,135, 79, 63,253,148, 59,116,232,208,255, 0,124,238, 68,114,155, 0,240,182, 27,199,189, 1, 24,241,200,129,109,122,145,
+102,243,153, 8,225,113,164,214, 69, 74,110, 68,145, 82,141,244,203, 13, 42, 93, 74, 67,209, 1,104, 81,201,141,175, 44,204,144,
+231,165,147, 12, 54,204,255, 25,203,230, 63, 22,231,208, 74,194, 74,252, 92,206, 6, 96, 78,161,101,220,226,125,215, 22, 24, 44,
+148, 55, 89,248, 97,183,210,116,215,255, 31, 15, 64,150,138,220,115, 0,247,229, 74, 74, 31,169,196,188, 94, 37,132,188, 52,110,
+220,184,105,114,185,188, 41, 0, 20, 20, 20,156, 78, 74, 74,154,101, 61, 85, 88,222,125,151,148,193,154,211,211, 27, 63,143,120,
+ 70,163,241,253,151, 94,122,233, 27,142,227,190, 50,155,205, 39, 92, 53,229,146,231, 89,126,253,245,215,123,214,121,185, 79,159,
+ 62, 44, 0,108,218,180,201,233,211,192, 67,134, 12,225,138, 2,153,235, 1,232, 0,228,226,145,195,109, 2, 0, 58,157, 46, 43,
+ 41, 41,233, 6,199,113, 55, 0,252, 84,129, 19,183,222,132,144,157,148,210,215,138,198,206,157,148,210,215,236,191,123,214, 98,
+ 71,182, 74, 26,239,203, 55,134,119,201, 35,217,116,237,239,137,182, 56,129, 42,239,115,105,114, 51, 37,255,232,211,174, 96, 93,
+242,194, 18,203, 88, 0,131, 43,122,223, 37, 47,100,157, 63, 4,208,221, 85, 18, 46,121,225,230,191, 10, 16, 44,171, 92,191,126,
+253,153,153, 8,252,219, 98,191, 77, 88,210,150,161, 85, 74,210,102,185,136,150, 75, 92,226, 18,151,184,196, 37, 46,113, 73, 89,
+ 36,178,200, 70,203, 70,162,138,108,181,138,147, 44,123,114,101,255,153, 0,232, 84,202,170,204,153,211, 4,157, 42,176,234, 59,
+232,194,116, 97,186, 48, 93,152, 46, 76, 23,166, 11,243,255, 23,102, 5, 37,186,156,173,195, 93,207,138,104, 89,141,223,175, 71,
+145,233,181, 47,210,233, 37, 25,195,151, 69,180, 30, 51,246,172,236, 11, 64, 39, 23,166, 11,211,133,233,194,116, 97,186, 48, 93,
+152, 46,204,167,188,218, 79,158, 60,121, 10, 30,197, 63,166,147, 39, 79,158, 66, 41,141,126, 68, 99,104,244,179,124,246,181, 70,
+104,123,189, 33,168,245,186,214, 8,109, 75, 41,147, 81,214,203,254,123,215,214,161, 75, 92,226, 18,151,184,196, 37, 46,121,222,
+229,212,188,121,243, 10,230,205,155,103, 53,124, 79, 7, 64,138,180, 89,233,207,242,193, 69,219,132,229, 30,148, 42, 55, 4,207,
+ 63, 45,132,144, 0, 70, 32, 26, 40, 20, 73,218,131,242,117, 0, 0, 12,123,141, 51,234,255,176, 88, 76,235, 41,165, 73, 21,197,
+174, 69, 72,173,154, 26,217,118, 3,199,137,226,243,140,189,111, 80,122,182, 34, 56,125, 8,105, 41, 17,139,247, 75, 52,154, 18,
+189, 20, 26,178,179, 11, 13, 70,227, 43,155, 40, 61,233,234, 3, 46,113,137, 75, 92,226,146, 23, 65, 8, 33, 10,119,119,247, 67,
+ 12,195,132,216,125,135,146,222, 3, 0,199,113,201, 90,173,246, 21, 74,105,198, 63,137, 89, 76,140, 0,206, 62, 15,229,231,236,
+214,161, 0,120, 44,182, 80,185, 17,179, 35,253,149,173, 35, 66, 67, 54, 36,165,164, 94,204,213, 27,135,223, 76,204,211, 58,155,
+ 72,129, 72, 58, 82,227,229, 55,231,205,161,239,123,134,133, 71,144,224,224, 64,128, 2, 15,227, 19,124,239,222,185,221,113,227,
+218,197, 19, 68, 82,233,167, 38,189,254, 71,167,153, 39, 33,138, 16,165,228,196,143,147,223,210, 8, 96, 65,255,217, 27,246,214,
+ 38, 36,248,250, 35,215, 18, 78,145, 44,141,167,231,190,121, 7, 15,202,220,139, 28,128,218,177,214, 71,241,245, 46, 95,150,125,
+242,202, 43,251,250, 16,210,217, 69,182,254,147,131,145,159, 90,173, 30, 47, 20, 10,219,153, 76,166, 16,177, 88, 28,207,113,220,
+209,172,172,172, 69,148,210, 68, 87, 9,185,196, 37,229,246,161, 82, 3,153,255,155, 65,206, 1, 64,165, 82,157,103, 24, 38,200,
+158, 4, 88,253, 59, 22,247, 19,105,231, 47,242, 94,102,102,230, 75,101,228, 55,212,195,195,227,123, 0, 77,202,115,152, 92,180,
+213,116, 78,171,213,190, 93,116,250,184, 36, 60,149,187,187,251, 12, 66, 72, 31,134, 97,202, 13, 40,204,243, 60, 71, 41,221,148,
+149,149,245, 57,165, 52,175,180,223,185,187,187, 31,140,137,137,105,226,227,227, 83,174,150,198, 98,177,224,225,195,135,222, 77,
+155, 54, 61, 6, 32,242, 89, 98, 58,195, 69,254, 77, 41,235,228, 97,137,156,199,250,198,209,136,217, 60,143,129,171,230,188, 29,
+152,252,224, 78,224,232,185, 63,135, 71,122,201,219,197,100, 20,164, 56,250, 64,177, 76,181,189, 85,135,215,218,143,125,239, 67,
+197,165,171, 55,177,255,200,159,200,213, 25,192, 50, 12, 52, 42, 57,194,195,107,144,133,203,183,120,173, 94,186,240, 43,153, 82,
+ 19, 93,152,159,221,205,153, 12, 41,228,130, 79, 39,245,108,170,240,244,224, 0,158,195, 71, 93, 27, 40, 62,217,121,241, 83, 0,
+ 83,156, 38, 89,135, 14,201,211, 82, 83, 49, 51, 32, 0, 2,139, 5, 82,134,129,148, 16, 72, 25, 6, 10,169, 20, 93, 86,174,196,
+172, 61,123,228,211, 94,125,213, 69,182,254, 99,162, 82,169,134,134,135,135,207, 95,177, 98,133,103,245,234,213,161, 80, 40,160,
+213,106,189,110,221,186,213,240,131, 15, 62, 24,236,230,230, 54, 53, 39, 39,103,153,171,164, 92,226,146, 82, 73, 71, 67, 0, 37,
+ 6,137, 47,235,222, 63, 37, 12,195, 4, 37, 38, 38,250,200,229,114,112, 28, 87, 20, 13,128,183, 45,164,237, 35,229, 20, 57,170,
+ 69,100,100,164,169,156,113,227,187,180,180,180, 78,246,161,208,202,138,184,147,152,152,216,169,118,237,218,223, 1,120,165, 20,
+242, 50,227,189,247,222, 27, 95,183,110, 93,171, 22,168, 40, 10,194,163,215,140,140, 12,140, 27, 55,206,246, 12,158,231,113,224,
+192,129,247,134, 14, 29, 10, 0, 31,148,145,247, 16, 31, 31, 31, 50,122,116,217, 62,138,166, 79,159,142,233,211,167, 99,241,226,
+197, 68, 40, 20,106,202, 41,207, 74,193,116,148,139,252, 27, 26,172,226, 30,226,139,253,108, 87,177,120,135,187,158, 32, 90, 14,
+ 55, 78,202,239,158,189,104,197,240,153, 67, 90,145, 85, 31,116, 10, 27,179,248,224,159,181, 3,100,109,174, 39, 21,198, 59,160,
+201, 26,214,188,205,171,237,198,141,159,164,248,249,183,195,184,117,227, 50, 98, 78,252,242,216,111, 26,191, 50, 20, 41, 25,121,
+ 24, 58,246, 35, 37, 97, 5,237, 68, 82,249, 48,147,190, 96,149,131,218, 44,223,218, 30,242,119,155, 55,173, 35, 76,148,221,130,
+159,187, 12,173, 26,213, 20, 6,239,187,242,110,109, 66,190,185, 78,105,185,177, 10,139,147,172, 21,111,189,133,214,102, 51,124,
+ 88, 22, 44, 33, 96, 1, 48,132, 64,111, 48,224,220,192,129,104,186,110, 29, 62,223,177, 67, 62,227,245,215,157, 38, 91,114,185,
+124,117, 97, 97,225,151, 21,112,220,246,111, 14,158,225, 42,149,234,211,220,220,220,129,207, 81,154,252, 1,164,151, 16, 31, 81,
+ 4, 64, 67, 41,117, 42,178,176, 84, 42, 29,217,191,127,255,133, 75,150, 44,145,167,166,166, 34, 41, 41, 9, 28,199, 65, 42,149,
+ 34, 44, 44,140, 28, 60,120,208,115,210,164, 73, 11,212,106,181, 36, 55, 55,247, 27, 39,210,201, 8,133,194, 33, 30, 30, 30, 61,
+124,125,125,125,210,211,211,211,179,178,178,118, 24, 12,134, 85, 21, 93,217, 23, 97, 14,168, 90,181,106,143,128,128, 0,223,196,
+196,196,140,132,132,132,237, 6,131, 97, 53,165,148,127,202, 50,173,143, 34,111,245, 0,146,171, 86,173,122,237,254,253,251,105,
+149,136,153, 84,181,106,213,235,206, 98, 18, 66, 20, 0, 54, 2, 8, 40,231,167, 73, 0,250, 82, 39,181,217, 46,169, 60,146, 85,
+ 20,210,234, 49, 66, 85,214,189,127, 90,100, 50, 25,126,249,229, 23, 8,133, 66, 8,133, 66,100,101,101, 33, 40, 40,200,246, 89,
+ 36, 18,217,222, 87,169, 82,165, 92, 60,142,227,154,178, 44,139,252,252,124,112, 28,103,187,178,179,179, 65, 41,133, 68, 34, 1,
+199, 61, 10,231,100,119,191,105, 25,229,216, 39, 32, 32, 0, 63,255,252, 51,140, 70,227, 19,247,213,106, 53,174, 94,253, 59,200,
+ 8,203,178,104,214,172, 25, 67, 8,233, 83, 22,209, 34,228,145,211,205, 81,163, 70,129,101, 89, 91, 72, 61,235,123,235,197,113,
+ 28,166, 79,159, 14,251,208,100,255, 36,230,115,215,174,203,240, 16, 79, 41, 77, 6, 80,162,141, 22, 83, 22,104,164,159,242,237,
+ 9,111,189, 92, 48,117,120, 52,253,100,240, 43,244,227,183,218,209, 87,219,212,251,141, 21, 8,200,153,235, 15, 17,228, 6,172,
+ 30,215, 36, 36,216, 75,113,181,174,167, 42,188, 4,213,168,125, 64,233, 0,185, 66,253,197,219,239,127,164,220,117,236, 10, 30,
+198, 63,124,130,100, 1,192,249,253,171,145,156,148,136,139, 49, 9, 24, 48,236, 29,165, 90,173,249,130, 16, 18, 80, 18,102,113,
+113, 83,137,254, 55,185,111, 43,105,190, 57, 9,121,238, 0, 27, 42,134, 80,174,195,164,215,234, 75,212, 42,209,252, 50, 84,184,
+ 54, 76,137, 88,188,127,222,193,131, 54,146,213,210, 96,128,132,227, 96,225, 56, 27,201, 50, 90, 44, 40, 52, 26,225,159,159,143,
+187, 67,135,130,154,205,152,186,109,155, 92, 34, 22,239,119, 36,157,118, 43,128,174,106,181,250, 8, 33, 36,220,145, 74,126, 22,
+ 71,102,157,116,227, 17,174, 82,169,142, 16, 66, 94,125, 30,210, 73, 8, 97, 8, 33,179,135, 15, 31,126,161, 70,141, 26,135,139,
+136,149,245,158,160, 70,141, 26, 7,135, 15, 31,126,137, 16, 50,157, 16,194, 56,136, 25, 24, 16, 16, 48,103,201,146, 37,242,219,
+183,111, 35, 49, 49, 17,102,179, 25,253,251,247, 7,199,113, 40, 44, 44,132,209,104,196,151, 95,126,169,240,244,244,252,148, 16,
+ 18,226, 72,222, 9, 33,172,155,155,219,154,181,107,215,142,186,127,255,190,223, 31,127,252,193, 92,185,114,197,247,171,175,190,
+ 26,234,233,233,185,174, 40,224,170, 83,229, 73, 8, 97,252,253,253, 87,253,254,251,239,111, 95,189,122, 53,104,235,214,173,194,
+211,167, 79,251, 47, 93,186,116,132,191,191,255, 58, 66, 8, 91,145, 58, 34,132, 52,148,203,229, 29, 39, 78,156,200,159, 58,117,
+ 42,241,212,169, 83,137, 11, 23, 46, 68,235,214,173, 91,206,154, 53, 43,170,130,152,141, 84, 42, 85,135,137, 19, 39,242,199,143,
+ 31, 79, 58,115,230, 76,194,130, 5, 11,152, 14, 29, 58,180,154, 59,119,110,125, 39, 49, 55,158, 58,117,170,109,124,124,124,245,
+132,132,132,106, 9, 9, 9, 85, 19, 18, 18,170, 38, 38, 38,134, 36, 39, 39, 87, 73, 73, 73, 9, 78, 75, 75, 11, 62,122,244,104,
+ 43, 0, 27,158,183,126,244, 95,199, 44,106,203, 23, 41,165,208,106,181,216,181,107, 23,138,180, 87, 13,237, 73, 86,110,110, 46,
+146,147,147,173,247, 4,255, 66, 58,193,113,156,141, 72, 29, 56,112, 0,195,135, 15,135, 86,171,181,125, 39, 16, 8,108,239,173,
+255, 83, 30,166, 85,243,196,113, 28,206,156, 57,131,209,163, 71, 99,225,194,133,216,176, 97, 3,118,238,220, 9,173, 86,107, 35,
+ 91, 22,139,165, 92,204,140,140, 12,240, 60,239,104, 30,145,147,147,227,112,189,219, 19, 32,129, 64,240, 4, 41,178, 94,206,180,
+165,167,193,124,158,165, 52,143,240,142,136,173,113, 23,169,234,218,217,223,140,168,234,247,233,252,241,125,100,224, 76,160,230,
+ 66,192, 84, 0,152,242,193, 27, 11, 64, 68, 50,192, 92, 8,111,137, 22, 27,199, 70,168, 63,254, 57,246, 70, 45,111,117,244,141,
+244,220,189, 37,146, 10,129,104, 64,159, 33,239,121, 38,164,229, 34, 49, 53, 7, 44,243,247,188, 23,213,105, 8, 4, 44,131,179,
+251, 30, 41,174, 24,150, 69,142,206,128,236,124, 19,122, 15, 25,239,241,227,194,207, 6, 0,248,178,172,140,212, 35, 36,172, 69,
+128, 71,207,218,181,171, 48, 55, 36, 49,136,122,245, 4, 56, 30,160,199, 95, 71,195, 44, 31, 54,114,191,184,103, 61, 66,230, 92,
+161,244,118, 89, 56, 18,141, 70,230, 94,191, 62,102, 6, 4,160,141,217, 12, 17,165,120, 57, 53, 21,151,199,143,135, 97,203, 22,
+ 48, 0, 68,111,188,129,246,139, 22,225, 88, 64, 0,252, 10, 11,145, 61, 97, 2,188,247,238,133, 72,173,150, 57, 83,248, 34,145,
+200,180, 98,197,138,128, 17, 35, 70, 28, 33,132,180,123,158, 53, 91,132,144,112, 15, 15,143, 35, 95,124,241,133,239,180,105,211,
+146, 43, 9,211, 87,161, 80,108,210,233,116,227,157, 93,209, 22, 17,167,217,203,150, 45, 27, 51,106,212, 40,205,136, 17, 35,232,
+221,187,119, 53, 0,172,218, 17,239,214,173, 91,215, 88,177, 98,133, 95,147, 38, 77,222, 27, 61,122,180,136, 16, 50,181, 60, 45,
+143, 82,169, 28,187, 98,197, 10,175,140,140, 12,228,231,231,219, 6,217,132,132, 4,200,100, 50, 91, 80,117,161, 80,136, 47,190,
+248,194,115,236,216,177,227, 1,140, 47, 47,189, 18,137,100,200,247,223,127, 95,179,115,231,206,130,184,184, 56, 48, 12, 3,137,
+ 68,130,183,222,122, 75, 88, 80, 80, 16, 50,115,230,204, 81, 0,190,119,166, 12,132, 66,225,128,229,203,151,135,183,108,217, 82,
+ 16, 19, 19,131, 22, 45, 90,224,236,217,179,120,227,141, 55,132,121,121,121,213, 38, 77,154, 52,188,180, 21, 86, 89, 90, 39,185,
+ 92, 94,247,143, 63,254,136, 15, 14, 14,182, 13, 44,213,170, 85,227,162,163,163,181, 49, 49, 49, 17,127,254,249,103,102,139, 22,
+ 45, 30, 58,129, 25, 40,151,203, 35,119,239,222,157, 60,115,230,204,142,203,150, 45,235, 14, 0, 77,155, 54,221, 62,107,214,172,
+195, 90,173,182,206,241,227,199,181,173, 91,183, 78,112, 16, 50,192,223,223,159, 27, 55,110,156,178,172, 31,173, 92,185, 50, 27,
+ 64, 21, 66, 72,245,162, 64,219, 46,249, 7,132, 82,106, 33,132, 68, 17, 66, 46,238,218,181, 11,205,154, 53,195,174, 93,187, 16,
+ 29, 29,125,209,158, 12, 92,189,122, 21,109,218,180, 1, 30, 5,146,255, 87,108,181, 56,142,131, 64, 32, 64, 66, 66, 2, 86,174,
+ 92,137,185,115,231, 34, 44, 44, 12,102,179,249, 9,178, 85, 68,136, 28, 82,193, 88, 44, 22,156, 59,119, 14,235,215,173,195,212,
+ 79, 63,133, 74,165, 2, 0,152, 76, 38,104,179,178, 32,149, 74,109,100,172,156,178,220,116,231,206,157,241, 65, 65, 65,143,109,
+ 25, 90, 95,139,198, 44,240, 60, 15,139,197, 2,189, 94,143,133, 11, 23, 90, 40,165,155,202,233,147, 54, 82, 52,126,252,120, 24,
+ 12,127,199, 33,175, 95,100,147, 92,181,106, 85, 52,104,208,192,246,153, 97, 24,234, 40,230,143, 47,213, 69,161,221,175, 35,166,
+ 47, 0, 0, 4, 5, 5, 33, 34, 34, 2,254,254,254,165, 98,150,196, 69,254,109, 41,110,147, 85, 33, 27,173,210, 34,101,223,184,
+159,242,229,136, 73, 11, 22, 40,164,172,240,253, 30,245, 80, 69, 35, 2,100, 30, 16,181,249, 24, 68,243,104, 33, 79,181,247,128,
+253, 31,227,171,158, 90,102,212, 79,250,223,106,120,120,120,223,213,106,159, 48,194, 19,138,164,237, 67,107,134,147,135,201, 90,
+ 8, 4, 2, 40,220,188,240, 82,143, 15,192,178, 12,148, 26, 47, 16,174,240,111, 70,204,176, 16,176, 2,104,243, 10, 81,181,122,
+ 77, 70, 34,149,181, 47,143,104,169,221,132,223, 79,236,247,146, 52,211,146, 0, 89, 21, 41, 56,235,116, 26, 32, 6,227,153,135,
+ 15,187,132,201, 70,109,191,242, 61,128, 14,142, 20, 12,107,177,192,135,101, 97,162, 20,151,199,143, 71,212,242,229,184,104, 37,
+134,203,151,227,226,168, 81,240, 16, 10, 33, 97, 24, 80,179,249,137, 61,125, 7, 39, 32,244,232,209, 3, 25, 25, 25,190,159,126,
+250,105,133,201,150, 76, 38, 91, 79, 8,233, 42, 20, 10, 77,132, 16, 48, 12, 99, 11, 2,110,125,111, 50,153, 68, 44,203,238,206,
+200,200,112,122,203,143, 16, 18,238,238,238,126,228,212,169, 83,190, 10,133, 2,211,167, 79,175, 20,146,165, 82,169, 78, 15, 31,
+ 62,188,202,250,245,235,247, 18, 66,186, 56, 74,182,138,147,172,229,203,151,103,175, 92,185,242, 71,251, 45, 66, 74,105, 50, 33,
+100, 85,147, 38, 77,222, 30, 53,106,148, 6,192,152,209,163, 71,163, 60,178, 37,145, 72,218,133,134,134, 62,182,170,149, 72, 36,
+ 0, 0,133, 66, 1, 55, 55, 55,136, 68, 34, 24, 12, 6, 68, 69, 69, 17,177, 88,220,202,145, 52,171, 84,170,174, 61,123,246, 20,
+156, 60,121, 18, 41, 41, 41,112,115,115,131, 66,161, 0,199,113, 24, 57,114,164,104,209,162, 69,175, 58, 75,180,130,131,131,187,
+119,236,216, 81,112,237,218, 53,220,191,127, 31, 6,131, 1,183,110,221,130, 90,173,198,160, 65,131, 68,243,231,207,127,221, 89,
+162, 5,160,238,168, 81,163, 82,237, 73,150, 85, 20, 10, 5, 9, 15, 15,215,122,122,122, 54, 2,240,208, 25,204,119,222,121, 39,
+109,222,188,121,109, 14, 30, 60,248,177,245,203,131, 7, 15, 78, 2,128,111,190,249,230,184,183,183,119, 35, 0,142, 18, 45, 80,
+ 74,249, 55,223,124,243,129, 88, 44,134, 80, 40,132, 88, 44,126,236, 18,137, 68, 96, 24, 70,101,237,206,255, 85, 82, 67, 8,105,
+ 2,224,107, 60, 58,145,245, 41,165,244,204,115, 66,182, 46, 17, 66,162,162,163,163,109,100,107,207,158, 61,232,210,165, 11,178,
+179,179,113,237,218, 53,123,146,245,111,217,104,129,231,121, 8,133, 66, 44, 88,176, 0, 38,147, 9, 63,253,244, 19, 54,111,222,
+252,216, 24,170, 86,171,177,120,241, 98,167,182,185, 56,142,195,154, 53,107,240,241,164, 73, 54,146, 85,180,184,134,159,175, 47,
+ 60,189,188, 16, 27, 27, 91, 46,209,202,202,202,250,124,199,142, 29, 40,203, 24,126,199,142, 29,182,247,246,198,240, 14,205,115,
+ 44, 11,131,193,128,151, 95,254, 59, 84,236, 59,239,188, 99,123,175,213,106,193,178,172,181, 44,136,163,152,133, 20,232, 33,253,
+251,187,174, 31,126,248,152,134,174, 52,204,210,184,200,243,168,221, 42,225,212, 97, 20,165,244, 98,145,137, 68, 52,128, 93, 69,
+219,137,101,219,104,221, 78,211, 45, 17,144,228, 6,243,198,189, 50,164,138,143, 27,104,126, 42, 68, 29, 62,199, 95,233, 50, 44,
+ 88,184, 27, 0,240,209, 91,141, 81,191,211,108, 24, 87,191,130,241, 45, 88,241,192, 4,195, 68, 0,211,158,236,120,124,100, 80,
+ 96, 0,254,186,123, 21, 2,150,133,216,205, 11,110, 30,190,224, 45, 70,228,164,221,199,145,173,223, 1, 0,150,173,217, 4,134,
+ 97, 32, 16,176, 48, 24, 57,132, 85, 9, 0,207,243,145,101,165,179, 54, 33, 47,245, 10,247,111, 22, 28,162, 33,215,220,239, 35,
+220,199,243,241, 31, 52,148, 32, 44, 73, 73, 90, 40,101, 77,107, 19,242,210,117, 74, 79,149,171,129, 96, 24, 48,132, 64, 46, 18,
+193,176,101, 11, 46, 22, 17, 44, 0,184, 56,106, 20,152,223,126,131, 74, 34, 1, 75, 8, 4, 69, 42,232,138,116,116, 0,136,136,
+136,192,178,101,203,124,199,142, 29, 91, 33,178,165,215,235,231,168,213,234,142,171, 86,173,242,237,217,179,231, 19,247,239,222,
+189,139, 54,109,218,164,166,164,164,204,121, 26,146,165,209,104, 16, 31, 31,255,212,251,234, 86,146,117,224,192,129,144,160,160,
+ 32, 68, 69, 69,121,127,244,209, 71,206,144,173,105,246, 36,107,244,232,209, 87, 0,248, 16, 66,138, 19, 21, 82,116,175,158, 29,
+217,202, 1, 48,191,140,149,104,136, 66,161, 64, 90, 90, 26,134, 12, 25,130,219,183,255, 86,128, 6, 4, 4,216, 86,122,177,177,
+177,240,246,246, 6, 33,196,199,145, 60,123,123,123,251, 26,141, 70, 12, 27, 54, 12,241,241,127,155, 51, 6, 6, 6, 90,203,212,
+203,217,114,244,245,245,245, 45, 44, 44, 68,235,214,173,161,215,235, 1, 0,125,251,246,133, 80, 40, 68, 90, 90, 26,132, 66,161,
+ 87, 5,170,199, 43, 58, 58,186, 84,215, 42,106,181,218,228,238,238, 94,203, 73, 76,207,215, 95,127, 61,113,249,242,229, 79, 28,
+108, 57,123,246,108, 55, 15, 15,143,131, 30, 30, 30,225, 78, 98,242,246,164, 74, 36, 18, 61, 70,180,132, 66, 33, 24,134,225,241,
+223,151,255, 1,176,158,130,251, 1, 64,131,231, 72,179,101, 35, 91,123,246,236, 65,157, 58,117,144,149,149,133,152,152,152,127,
+157,100,217, 17, 19, 8, 4, 2,219, 34, 89, 42,149, 34, 42, 42,202, 70,178, 8, 33, 40, 40, 40,128, 64, 32,176,142,215, 14, 13,
+126,217,217,217,240,247,243,131, 74,165, 66,205,176, 48,220, 41, 26, 71,172,239, 37, 18, 9, 8, 33,176, 88, 44,229,149, 97, 30,
+ 30,217, 90,125, 80,217,213, 99, 37, 69,101,170,142, 3, 2,192,243,188,117,204,167,149,129,233,229,229,133,252,252,124, 71, 49,
+159, 75, 41, 69,163, 21, 5,224, 34,128,104, 74,233,242, 34,195,248,199,220, 59,180, 5,112, 4,118, 71, 42, 9, 33, 76, 45, 95,
+229,202,121, 99, 59, 14,121,165,142, 23, 10,211,239, 67,170,242, 2,209, 84,197,130,133,187,113,237, 94, 38, 0, 96,193,134,243,
+248,121,102, 87, 64,230,129, 8,183, 12,248,169, 4, 61, 75, 34, 90, 4,148,240,148, 66,192, 50, 69,123,183, 44, 88,150,129, 54,
+ 61, 25,139, 62, 31, 83, 68,178, 54, 99,215,241, 24, 4,133,214,249,123, 31,151, 16,128,150,221,184,189,221, 68,203,199,246,106,
+ 46, 75, 37,201,208, 4,200, 33,149, 22,227,143,238, 34,144,170, 12,198,181, 11,146,159,219,161, 95, 14,160,220,137, 66,202, 48,
+143,140,223, 9, 41,209,144,141, 41,186,199, 18,242,200,251, 43,239,252,152,110, 37, 44, 74,165, 18,190,190,190,152, 59,119,174,
+239,228,201,147,127,130,147, 1,168, 41,165,183, 8, 33,237, 70,142, 28,121, 36, 51, 51,211, 55, 34, 34, 2, 74,165, 18, 74,165,
+ 18,169,169,169,232,221,187,119,106, 74, 74, 74, 69,181,101,235,134, 15, 31,238, 43, 18,137,112,247,238, 93,120,120,120,216, 8,
+ 98, 69, 73,150, 90,173, 62,125,240,224,193,144, 26, 53,106,224,230,205,155,168, 85,171, 22, 54,110,220,232,221,191,127,127,135,
+200,150, 76, 38,235, 81, 68,156, 48,106,212, 40,205,168, 81,163,218, 2,104, 91,222,179, 71,141, 26,165,249,224,131, 15, 94, 47,
+139,104, 9,133,194,120,173, 86,235, 39,147,201,176,117,235, 86, 40,149, 74,200,229,114, 4, 4, 4, 64,171,213, 66, 46,151,131,
+ 82, 10,179,217,108, 29, 44, 50, 29,201,119,122,122,122, 42,199,113,193,123,247,238, 69,122,250,223,190,245, 66, 66, 66,144,147,
+147, 3,142,227, 50,156, 45,203,164,164,164, 84, 66, 72,240, 95,127,253,133,184,184, 56,116,233,210, 5,191,253,246, 27, 26, 55,
+110, 12, 0, 48, 26,141, 21,113,226,199,177, 44, 75,203,168, 63, 2,192,189, 50, 49,139, 38, 47,167, 48,121,158,231,173, 36,203,
+254,213,158,124,149,243,204,255,138,184,217,175, 19,158,215, 68,118,233,210, 5, 90,173, 22, 74,165,242,185,178,207,177,106,180,
+102,204,152,129, 49, 99,198,192,215,215, 23, 31,127,252, 49, 4, 2,129,237,178,223, 25,112, 70,124,124,125,203,188,111, 53,136,
+ 47,103,188, 84,185,185,185,205, 96, 24,166, 15,235, 64,193,113, 28,199,241, 60,191, 41, 39, 39,167, 76,247, 14, 86,195,117, 71,
+234,194,190, 12,202, 73,235, 83, 99,150,196, 69,158, 7, 41,126,218,176, 36,141, 22,254, 62,117,248, 68, 40, 32,107, 46,143, 20,
+169,236,142,216,147,172, 47,198,180, 31,242, 74, 29,119,108, 63,116, 6, 34, 83, 54, 96,204, 43,163,134,205, 32, 34, 5,124,221,
+132, 65, 37, 86, 2,195,222, 76, 72, 76,130,167,187,178,136,100, 21, 93, 12,131,250,117, 30, 45,102,119, 29,143, 65, 80,245, 58,
+ 16,176, 44, 4, 44, 11,165, 76,130,212,148,100, 8, 4,204,205,210, 30, 91, 79, 64,122,245, 10, 15,174,234,238, 41, 68,134,183,
+ 17,254,190,242,146,127,216, 72,133, 32,127, 49, 58,123, 74, 67,234, 9, 72,175,114,136,139,141,104,153, 44, 22,136,222,120,195,
+182, 93,120,113,212, 40, 68, 45, 95, 14,174,123,119,232, 76,166,199, 84,197,206,138,181, 65, 90, 9,209,180,105,211, 82, 51, 51,
+ 51, 7, 84,112,245,120, 43, 43, 43,171,221,167,159,126,154,154,145,145, 1,185, 92,142,228,228,228,167, 34, 89, 0, 80, 88, 88,
+ 56,104,249,242,229,169, 71,142, 28,129, 82,169,132, 74,165,170, 48,209,178,106,178, 62,255,252,243, 42,193,193,193,136,141,141,
+133,155,155, 27, 60, 61, 61, 81,191,126,125,156, 60,121,210, 59, 56, 56,120,111,145,193,108, 89,105,250,125,249,242,229,217, 0,
+176,124,249,242,108, 66,200, 81, 66,200, 82, 66,200, 15,197,174,165,132,144,163,246,191, 45, 44, 44,220, 86, 22,182,209,104, 60,
+ 26, 19, 19, 67,229,114, 57, 88,150,133,201,100,130, 84, 42,181,213, 87,110,110, 46, 10, 11, 31,109,115, 95,184,112, 1,102,179,
+249,132, 35,121,207,203,203,219,179,122,245,106,115,112,112, 48,234,213,171,135, 70,141, 26,161, 69,139, 22, 8, 9, 9,193,140,
+ 25, 51,140, 58,157,110, 79, 5,136,214,174,141, 27, 55,154,131,131,131,209,168, 81, 35, 72, 36, 18,212,175, 95, 31, 1, 1, 1,
+152, 59,119,174, 49, 39, 39,103, 79, 5,170,233,225,213,171, 87,217, 50, 72,174, 26, 64,170,147,152,241,231,206,157, 99,155, 55,
+111,190,189,248,141,166, 77,155,110, 87, 42,149,110, 0,156,181,251,163,246,228, 74, 34,145,216, 46,235,247, 2,129,224,255,131,
+ 70,107, 60,128, 43, 0, 98, 1,124,252, 60, 37,204,222,240, 61, 51, 51, 19, 49, 49, 49,184,112,225, 2,154, 55,111,142, 19, 39,
+ 78, 0, 69, 6,242,255, 98,250, 64, 41,133, 80, 40, 68, 68, 68, 4, 62,248,224, 3,236,222,189, 27,183,110,221,130,217,108,182,
+ 17, 33,171, 77,166, 51, 26, 45,145, 72, 4, 95, 95, 95,152,205,102,155, 54, 11, 0,238,220,190, 13,129, 64, 0,158,231, 97, 52,
+ 26,203,213,104,185,185,185,205, 88,177, 98,197,123, 25, 25, 25,254,233,233,233, 62,246, 87,106,106,170, 79,114,114,178, 79, 98,
+ 98,162, 79,124,124,188,207,131, 7, 15,124,238,223,191,239,255,229,151, 95,190,231,230,230, 54,195,209, 57,168,126,253,250,120,
+231,157,119,108,215,146, 37, 75,108,215,145, 35, 71,156, 54, 94,103, 89, 22, 17,211, 23,160,107, 58,181, 93,187,189,137,237,186,
+246,209,232,178, 48, 31,227, 34,207, 77, 91, 46, 58,109,104, 31, 88,186,132, 57, 56,153, 82,186,220,186, 93,104,239,188,180,184,
+ 49, 60, 0, 32,210, 79, 62,251,139,145,109,134,188, 92,203, 13,191, 31, 58,143,153,219,238,221, 12, 27,226, 29, 81,195, 61, 29,
+124,122, 12, 62,122,171, 49, 22,108, 56, 15,224,209,214, 33,159,118, 13, 52, 43, 22, 84, 21,140,251,218,140, 18,183, 29, 44, 70,
+253,225,123,119,111,183,143,168,219,132, 73,201,200,127,236,248,103, 84,187,222, 32,132, 32,176,122, 29,176, 2, 1, 88,150,129,
+128,101,161, 81, 75, 17,243,215, 95,188,161,176,240,112, 73,152,237, 8, 17,248, 41,197, 75,222,234, 92, 95,154, 36, 78,131,183,
+191, 2, 34,225, 35, 18, 64,239,245, 46, 54, 67, 8,128,186, 42, 12, 77,244,148, 29, 78,213, 47,105, 71,200,246, 35,165, 24, 96,
+242, 60, 15,165, 68, 2,189,193,128, 66,139, 5,237, 22, 45,178,109, 23, 50,132,224, 18,128,122,139, 22,225,212,150, 45, 80,139,
+197,128, 68,226,240,169,144,146, 52, 90,169,169,169,232,219,183,239, 83, 17, 34,123,205,214,216,177, 99,143,204,157, 59,215,119,
+218,180,105,149,134,249,241,199, 31, 31,217,176, 97,131,111,181,106,213, 42,220, 88,149, 74,229, 36,158,231, 53,243,231,207, 79,
+249,234,171,175, 80,220,158,172,136,232, 72, 52, 26,205, 2, 0,237,203,128,154, 57,122,244,104, 17,128, 49, 69,154,173,122,163,
+ 71,143, 62, 69, 41,157, 90,172,124,167, 47, 91,182,172,175,221, 22,227, 82, 0,139,202, 74, 99,110,110,238, 15, 31,124,240,193,
+176, 99,199,142,121, 73,165, 82, 16, 66, 32, 18,137, 80,179,102, 77,219, 41, 26,161, 80, 8, 74, 41, 62,252,240,195,140,180,180,
+ 52,135,220, 59, 24, 12,134, 53, 51,103,206,108, 95, 88, 88, 24, 50,116,232, 80,145,187,187, 59, 82, 83, 83,241,245,215, 95, 27,
+215,172, 89, 19,175,211,233,156,181,165,130,217,108, 94,243,217,103,159,181,203,207,207,175, 62, 98,196, 8, 81, 78, 78, 14, 10,
+ 11, 11, 49,113,226, 68,227,170, 85,171, 18, 10, 11, 11,157,118,248,219,162, 69,139,187, 15, 30, 60,104, 85, 80, 80,144, 37,151,
+203,139,107,251,136, 66,161,104, 2, 96,157, 51,152, 81, 81, 81,177, 15, 31, 62,108, 62,123,246,236,163,102,179, 89,120,246,236,
+217,238, 86,146,245,237,183,223, 30,145, 74,165, 29,225,188,209, 62, 47,145, 72, 30,211, 96, 21,127, 47, 16, 8,254,243, 26, 45,
+ 74,233, 17, 60,114,153,241, 92, 73,113,146,117,237,218, 53,180,111,255,168, 75,159, 56,113, 2, 45, 91,182,196,137, 19, 39,208,
+170, 85,171,127,213,189,131,149,104, 9, 4, 2,244,239,223, 31,157, 58,117, 66,149, 42, 85, 30, 59,109,104,125,239, 12,217,176,
+ 88, 44,168, 91,183, 46, 12, 70, 35, 68, 34,145,109,107, 82, 32, 16,192,219,199, 7,119,239,222,117, 72,163,197, 48, 76,159, 30,
+ 61,122, 48,215,175, 95, 71,191,126,253,176,126,253,250, 82,127, 59,112,224, 64,252,242,203, 47,232,209,163, 7, 51,101,202,148,
+ 50,221, 59, 88,141,208, 29,201,147,117,158, 46, 79,163, 87, 89,152,246, 92,228,121, 19, 59,215, 14, 37,181,249, 81, 37,180,175,
+229,143, 17, 45, 59, 39, 97,168,238, 45, 31,218,169,166, 0,191, 31, 62,143,153,191, 63, 92,195, 81,186,117,235,197,172,157, 31,
+183, 4, 76,155,222, 66,253,222,235, 30,109, 23, 2,224,211,174,193,180,105, 32,136,220, 11,199, 19,133,200, 41, 52,237, 42,185,
+225,153,214,255,246,211,119, 31, 52,255,190,149,183,191,143, 27,180, 57,133, 54,178,117,241,200,102, 0, 64,175,209,115, 32, 96,
+ 31,109, 41,170,149, 82,200, 68, 44,182,172,253, 38,195,100,210,151,216,186,242,132,204,152, 41, 47,213,116, 19, 43,204,200,245,
+163,168,227,253,247,161, 63, 82,125,243,147,132,171,161, 59,188,174,101,225,173, 26, 74,245, 55,215,179,199, 0, 88,242,196,132,
+152,157, 93,152,253,215, 95,178, 46, 43, 86,224,236,160, 65, 8,228, 56, 28, 13, 8,128,135, 80, 8, 55,137, 4, 12, 33, 40,220,
+185, 19,167,182,110,133,175, 68, 2,168, 84,176,204,154, 5, 67, 76, 12,204,121,121,133,206, 18,173, 59,119,238, 60,181,214,169,
+ 36, 98, 52,121,242,228,159, 50, 51, 51, 7, 84, 38,230,160, 65,131,142, 28, 58,116,200,183,162, 56,121,121,121, 19, 0, 76,168,
+132,244,240,132,144,169, 69,142,241,198,140, 26, 53, 74,115,238,220,185, 97,132,144,239,173,171, 9, 66,136,207,240,225,195, 71,
+ 22, 35, 89,229,158, 58,164,148, 62, 84, 42,149,179, 38, 76,152, 48,231,171,175,190, 82, 90, 13,223, 47, 95,190, 12,139,197, 2,
+161, 80, 8,142,227, 48,124,248,240,252,204,204,204, 5,165,121,116, 46, 1,215, 66, 8, 25, 56,103,206,156,225,223,124,243,205,
+107, 44,203,122,115, 28,151, 94, 88, 88,184,183,176,176,112,121, 69, 78, 93, 21,149,195,224,105,211,166, 13, 94,184,112, 97, 15,
+134, 97,124, 44, 22, 75, 70, 94, 94,222,142,194,194,194, 10,249,230, 58,117,234, 84,250,247,223,127,127, 47, 61, 61, 61, 50, 40,
+ 40, 40, 71,169, 84, 26,141, 70, 35, 43,147,201,212, 10,133, 34, 10,192,159, 0,110, 56,131,121,225,194,133,148,165, 75,151,198,
+ 25, 12,134,136,165, 75,151, 30, 87,171,213,135, 8, 33, 68, 36, 18,185,203,100,178,246, 0,142, 2,184,227, 12, 38,195, 48,188,
+189,246,170,184,125,150, 88, 44,254,255, 98,163,245,220,137,189,123,135,140,140, 12, 92,191,126,221, 74,178,162, 0,160, 85,171,
+ 86, 23,173,100,235,194,133, 11,104,212,168,209, 69, 66,136,240,159, 62,121,104,175,209,178, 18,170, 42, 85,170,216, 62,219, 95,
+118, 54, 90, 14, 9,199,113, 16,137, 68, 16, 8, 4,240, 15, 8,176, 61,139, 82,138,187,119,239, 66,171,213, 58, 68,180, 88,150,
+101, 9, 33,232,215,175,159, 67,207,125,243,205, 55,113,244,232, 81,176, 14,178, 66,150,101, 81,181,106, 85,135,118, 94,224,160,
+ 61, 21,203,178, 8, 10, 10,170, 48,166, 61, 23,121,158, 8, 86, 73,239, 75, 34, 85, 37, 73,137,198,240,177,105,133,179, 7,126,
+125,114,202,141, 20,253,214,152,212,130, 15, 0,208, 77,215,228,251,235,123,179,175,188, 18,158, 0,195,242, 86, 32,234, 71,206,
+219,104,126, 50,136,194, 23, 9,124, 32,166,111,191,153, 98, 1,153, 95, 74, 34,146, 68, 82,249,212,181, 43,190,253,106,248,216,
+ 15,149,215, 98, 83,145,147,111, 0,203, 50,246,131, 39, 4, 2, 22,106,133, 20,193,126,110,216,240,227,215,121,121,185,217,211,
+ 74,139,123, 88, 69, 37, 26,221,177, 73, 13,137,200, 95,135,136,122,125,193, 74,255,118, 50, 75, 83, 74,217, 29,108,185, 31,175,
+ 62,212, 73,127,123,168, 27, 93, 34,209, 50, 26, 95,249,180,115,231,125, 51,119,239,150, 55, 93,179, 6,177,195,135, 35,160,176,
+ 16,146,162,173, 68,134, 16, 40, 69, 34, 40, 69,162, 71, 36,107,225, 66, 20, 90, 44, 88, 52,104, 80,129,193,104,236,236,164, 70,
+ 66,212,182,109,219, 74, 35, 89,246,196, 8, 78,218,121, 57, 74,182, 58,117,234,116,132, 82, 42,121, 14, 86,242, 86,178,101, 58,
+119,238,220,200,227,199,143,199,226,241,192,162,217,199,143, 31,143, 29, 49, 98, 4, 89,185,114,229, 42, 0,159, 57,234,192, 51,
+ 63, 63,255, 91,141, 70,131, 54,109,218,124, 54,111,222, 60,207,198,141, 27,195,199,199, 7,121,121,121,184,112,225, 2,198,143,
+ 31,175,205,205,205,157,151,149,149,245,149,147,105,230,138, 52, 55,203, 43,179, 28, 0,172, 46,186, 42, 69,222,126,251,237,203,
+177,177,177,153,222,222,222,205, 68, 34, 81, 61, 60,178, 3, 74, 1,176,202, 89, 66,100,149, 49, 99,198,252, 21, 27, 27,155, 17,
+ 24, 24,216,188, 8, 83, 3, 32, 17,192,138, 10, 96, 38,157, 63,127, 62,168, 73,147, 38,140, 80, 40,164, 44,203, 66, 40, 20, 82,
+129, 64, 64,139,236,106, 40, 0,236,216,177, 67, 2, 64, 11,151,252,211,125,211,230,222, 33, 57, 57,217, 70,178,236, 28,150, 70,
+181,106,213,234, 98, 17,201,178,222,179,252, 75,105,197,204,153, 51,177,108,217, 50,148,231,209,188,232,116, 31, 41, 15,207,170,
+209,226, 56, 14, 38,147, 9,215,174, 93,179,249,236,178,110, 23, 90, 93, 59, 88, 44,150, 50, 79,171,115, 28,199, 25,141, 70,252,
+250,235,175, 14,145,173,159,127,254, 25,122,189, 30, 92, 57, 12,206,222, 21, 67,131, 6, 13,160,213,106,109,135,125,162,162,254,
+118,149,103, 50,153,156, 34,174, 86,204,136,136, 8,100,100,100,192,203,235,209,121,156,224, 65,127, 43,123, 44,186,255,166,255,
+224,178, 52, 90,196, 81,151, 4, 13, 52, 26, 55,131,216,188,173, 91, 29, 73,187, 62, 81,110,168,238,167,130, 80, 36, 69, 82,174,
+ 5, 7,111,228, 98,197,145,148,248, 66, 51,247,218,173, 52,221,213,178,112,164, 10,183,189,141, 95,234,212,114,208,200,241,138,
+124, 3,135,184,184, 7, 72, 79, 75, 6, 67, 24,248, 7, 6, 33, 36,164, 42,100, 98, 6,235,151,127,165,187,120,234,208,201,188,
+ 92,109,151,210,176, 94,211,136, 79, 45,124,163,101,243,208, 80, 21,129,197, 12,112,102,192, 98, 6,248,162, 87,235,119,252,227,
+109,238,250,245,108, 58,229,146,246,244,206,108, 99,137, 49,171,250, 16,210, 82,227,225,177,111,250,142, 29,114,222,100, 66,230,
+132, 9,144, 91, 44,144, 22,173, 74, 0, 0, 18, 9, 44,179,102, 61, 34, 89, 3, 7, 22,228,100,103, 59, 29,130,199,219,219,123,
+117, 70, 70,198, 11,231, 25,222,211,211,243,211,138,184,137,120,134,105,242, 1,144, 77, 41, 53,149,176,178,246,182,106,185, 42,
+128, 91,213,219,219,123, 10,195, 48, 45, 40,165,158, 12,195,100,241, 60,255,103, 90, 90,218,151,148,210,187,174, 41,245, 95,171,
+111,171,103,248,242,246,177,211, 0,188, 15, 32,143, 82, 26,231, 42,185,127,188,158, 26,226,209, 41,172, 82, 67,240,224, 95, 60,
+121,232,233,233,121,102,223,190,125,141,171, 87,175,206,216,155, 49, 88,125,229, 89,183,183, 4,130, 71,250,136, 99,199,142, 89,
+250,245,235,247,103, 74, 74, 74,155,210, 48,213,106,245,254, 43, 87,174,188,156,147,147,243, 4,161,178,247, 20,111,253,172,211,
+233, 48,118,236,216, 3,185,185,185, 37,134,224,209,104, 52, 11,191,250,234,171,247,122,245,234,197, 88,221, 81,216, 95,214,112,
+ 65,214,203,100, 50, 97,221,186,117,252, 55,223,124,179, 56, 59, 59,187,212,173,195,128,128,128,248,164,164,164, 32,171,171, 5,
+ 71,156,138, 86,173, 90, 53, 57, 46, 46, 46,224,159,196,124, 81, 9, 87,113,237, 22,113,198,247, 19, 33,132, 68,248, 40,250, 82,
+160, 15, 3,190, 46, 67,136,216, 66,113, 11, 20,251,229,130,130,239, 47, 36, 81,135,182,206, 68,114,249, 56,149,210,253,243, 94,
+ 3,222,241,172, 26, 26, 70,124,253, 3, 65,192, 32, 53, 37, 17, 15,238,221,166,219,126,250, 46, 83,151,171,157, 81, 80,144,255,
+ 93, 89, 56,181, 9, 9,173,166, 22,109, 18,115, 8,135, 53, 31,197,226, 83, 61,193, 48, 1,152,132,204,205,184, 60,115,223,235,
+101,108,251, 88,201,214,212,109,219,228,226,240,240, 39, 28,197,241, 60, 15, 67, 76, 12, 22, 13, 26, 84, 33,146,229, 18,151,184,
+228,169, 7,180,234, 40,223, 71,150, 25, 64,194,191, 25,188,248,255,121, 29, 61,183, 65,165, 9, 33, 10, 15, 15,143, 67, 44,203,
+134, 88, 53, 50,246, 54, 67, 37, 4,148,142, 75, 77, 77,237, 72, 41, 45, 40, 3, 51, 84,165, 82,125,199,113, 92, 83, 71,130, 74,
+179, 44,123, 54, 47, 47,111, 92, 89, 65,165,159,197,169, 67, 47, 47,175,187, 15, 30, 60, 8,181,158,162,182,159, 43,139,151, 3,
+ 0,220,185,115, 7,109,219,182,125,144,156,156, 92,245,159,196,124, 94,165, 20, 63, 90, 79,175,209,122, 6,141, 60, 64, 36, 81,
+ 14, 22,203,164, 29,120,179, 37, 2, 4, 16, 8,133, 55,141,250,194,195,134,194,252,181,165,109, 23,254,147,210,135,144,150, 18,
+177,120,191, 72,173,150,149, 84, 78,230,188,188, 66,131,209,248,138,139,100,185,196, 37, 46,113,137, 75, 94, 32, 2, 28,238,225,
+225,177, 79, 40, 20, 74,236,201,100,241,247, 86,177, 88, 44,250,244,244,244, 46,101,237,190, 60, 11,204,255, 76,121, 59, 75,180,
+118,237,218, 69, 29,245,222, 74, 8,233,228, 72,204, 42, 59,195,183,114,125,103,252,219,152,207, 48,239,229,122,197,117, 2,179,
+ 45, 30, 29,143,157, 17, 29, 29, 61,253, 5, 72,103,101,214, 81,165, 98, 90,235,220, 81, 92,103, 48, 29,109, 83, 78,166,211,161,
+118,255, 60, 96, 58,210,151, 42,152,206, 50,219,104, 5,235,189,204,190,244, 28,165,179, 50,235,168, 82, 48,139,183, 31, 71,112,
+157,197,116,164, 47, 85, 32,157,229,182,251,231, 5,243,105,199,144, 50,210, 89,106, 27,117,180, 45,149, 82,247,229,206, 77,207,
+171, 38, 11, 0,172,254,180,138,107,180, 74, 51,136, 23, 56, 75,178,158, 69,226,237, 39, 29, 56,232,167,228,223,192,172, 8,225,
+114, 38,173,149, 40, 71, 42, 27,179, 88,121, 86,150, 76, 47, 26,208,143,194, 1,135,163,206,228,189, 50,234,189, 88, 94, 43, 5,
+215, 30,179,178,202,178,164, 65,177, 50,211,249, 44, 48, 43,171, 47, 21,199,172,140,118, 95, 82,189, 63,195, 58,170,172,116, 86,
+ 74, 95,122, 22,109,190,132,246,243,212,184,197, 49, 43,163, 47, 21,199,172,140,118,255, 79, 96, 86, 70, 95, 42, 9,179, 50,218,
+125,105,117,255,162,106,166,172,219,133, 69,132,139,148, 64, 62, 31,219, 62,180, 18, 47,166, 34,133,246, 44,228, 89, 4,146,172,
+108, 66,244,172,200,230,174, 93,187,104, 17,211,127,238, 49, 43,185,142,166, 23, 97, 86,230,202,166, 93,101,213,209,179,104,239,
+246,152,149,133, 95, 28,167, 50,234,169, 36,204,167, 77,111, 41,233,172,244,188, 63,109,187,255,167, 48, 43,185,142, 42,165, 47,
+ 21,195,108, 87,201,139,129,118,118,159,167, 87, 38,102,101,245,165, 18,210,249,212,245, 84, 18,230,211,166,183,148,116, 86,122,
+222, 43, 99, 14,121, 86,184,255,150, 70,235, 70, 20,161,148, 41,185, 77, 20, 57, 44,181, 93, 21,210,104, 61, 75,146,245,172, 38,
+181,202,196,126, 22, 90,157,103,165,121,171, 44,173, 78, 9,184, 71, 43, 17,238, 72,101,167,179, 40,125,228,121,118,122,231,234,
+ 75,174,190,244,255,169, 47,149,212,110,162,163,163,167,239,218,181,235,243,231,169,157, 23,199,172, 44, 66, 84, 66,222,159,170,
+ 47, 21,255,223,202,232, 75,229, 96,146,103,145,255,202,238, 79,255,164, 70,171, 52,146, 85,218, 61,193,243,146, 1,107, 35,169,
+228,149, 9, 42, 89, 3,243,204,242, 93,201,233,108,247, 44, 52,132,207, 64, 42, 61,157, 69, 43,229,207,159, 65,222, 95,148, 50,
+117,245, 37, 87, 95,122,238,250, 82,177, 54,217,174, 18, 53, 69,149,170,121, 46,142, 89, 25,207,176,199,168,172, 54,250,172,243,
+ 94,153,125,233, 89,212,253,139, 38,255, 55, 0,242, 66,135, 78, 90, 48, 10,210, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
0};
diff --git a/source/blender/editors/datafiles/prvicons.c b/source/blender/editors/datafiles/prvicons.c
index 2c606230345..5d6b63c1d80 100644
--- a/source/blender/editors/datafiles/prvicons.c
+++ b/source/blender/editors/datafiles/prvicons.c
@@ -1,409 +1,477 @@
/* DataToC output of file <prvicons> */
-int datatoc_prvicons_size= 12878;
+int datatoc_prvicons_size= 15052;
char datatoc_prvicons[]= {
-137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72,
- 68, 82, 0, 0, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8, 8,124,
- 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69, 88,116,
- 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0, 0, 32,
- 0, 73, 68, 65, 84,120,156,237,125,121,124, 20, 85,186,246, 83, 85,221,213, 91, 58, 59, 36, 16, 32, 48, 64,192,128, 65, 68, 17,
- 66, 8,171, 10, 40,174, 51, 46, 31,200,111,116,188, 92,113, 70,199,141, 77, 16,163, 51,138,128,224, 40,138,203,160, 32,202,117,
-197, 65,244,122, 85, 28, 29, 81,194,146, 24, 64, 48, 4, 66, 32, 9, 9, 16,204,218,221,233,164,151,170,250,254,232, 84,165,186,
-187,186,187,122,203, 98,215,195,175, 72,117, 45,167,158,115,234,121,207,121,207,123, 78, 85, 17, 28,199, 65,129,130, 88, 5,217,
-221, 4, 20, 40,232, 78, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,
-161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,
-138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161,
- 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138,
- 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,
-128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1,
- 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,
-130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,
-136,105,168,186,155, 64, 87, 98,252,248,241,233, 44,203,238, 6, 48, 58, 90,215,160,105,186,174,176,176, 48, 61, 26,105, 15, 31,
- 62, 92,147,148,148, 52,129, 97, 24, 99, 52,210, 7, 0,181, 90,109,219,191,127,255,238,104,165,223,211, 16,148, 1,244,102, 1,
-117,112,255,110,253,250,245,244,148, 41, 83, 80, 92, 92,140,140,140, 12,104,181, 90, 80, 20, 5,130, 32, 64,146,157, 13, 34, 65,
- 16,126,215,197,219,248,223, 86,171, 21, 51,103,206, 76,139, 52,119,192, 37,254,196,196,196,137,207, 61,247, 28, 57,125,250,116,
-148,148,148, 32, 35, 35, 3, 52, 77, 67,165,114,221, 70,138,162,124,158,239,111, 31, 15,187,221,142,169, 83,167,106, 34, 70,186,
- 23, 64,182, 1,248, 18,144, 70,163, 1, 69, 81, 32, 73,210, 75, 28,129,132,227,185, 30, 45, 1,241,220,159,127,254,121,205,148,
- 41, 83,134, 0, 64,113,113, 49,218,219,219, 17, 31, 31, 15,149, 74, 37,228,129,207,135,175,197,223,254, 51,103,206, 68,154, 58,
-128, 78,241,175, 89,179,134,156, 62,125,186, 30, 0, 14, 30, 60,136,209,163, 71, 35, 49, 49, 81,224, 47, 22, 57,111, 20, 0,100,
-109,167, 40, 42,106,252,123, 50,100, 25,128,148,128, 14, 28, 56,128,209,163, 71, 35, 33, 33,193,167,128, 60,197, 18,104,223,233,
-211,167, 35,158, 65,158,251,186,117,235, 52, 83,167, 78, 29,194,111, 39, 73, 18, 44,203, 10,199, 5, 18,183, 92,195,136, 52,164,
-196, 15,248,175,209, 67, 17,127,172, 34,160, 1,248, 18, 16, 69, 81,224, 56, 78, 56, 78,142,192,229,236,139, 36,120,238,107,215,
-174,213, 78,155, 54,109,176,120,159,248,166,135, 35,254,104,113, 7,124,139, 31,112, 23,179, 56, 63,161,138,223, 51,189, 88,129,
-223, 92,135, 42,160, 80,197, 31, 73, 17,137,185, 79,159, 62,125,176,231,126,222,239,143,148,248, 35,205,223,159,248,121,254,158,
-235,138,248,131,135,207,156,203, 21, 16,128,144,196,239,235,184, 72, 32, 16,119,192,117,211,249, 78,111,164,196, 31, 41,254,129,
-196, 15,192,203,231,247,220, 39,206,167,212,246, 64, 70, 19, 43,144, 52, 0, 57, 2, 82,171,213, 33,215,244,209,116,129,196, 46,
-155,103,171, 37,134, 70,163,241,186, 94,176,254,126, 52, 12, 64,142,248,121,254, 82, 80,106,254,224,224, 85, 2,114, 5, 68,211,
-180,219, 13,247, 39,144, 96, 12, 35, 28,136, 59,235,226,254, 10, 0,216,108, 54, 84, 86, 86,162,186,186, 26,141,141,141,208,106,
-181,146, 66, 14,183, 35, 28, 14,252,137,223,102,179,225,204,153, 51,168,174,174, 70, 83, 83, 19,244,122,189,151,216,195, 17,127,
- 44,214,254,128,135, 1,200, 17, 80, 85, 85, 21, 26, 27, 27,161,211,233, 4, 65, 68,162,230, 15, 87, 60, 0,192,178,236,238, 13,
- 27, 54,208,249,249,249, 67, 88,150, 69,109,109, 45,142, 31, 63,142, 19, 39, 78,160,190,190, 30,241,241,241, 72, 78, 78, 70, 66,
- 66, 2,140, 70,163, 91, 63, 32, 18,125,129,112,145,148,148, 52,225,249,231,159, 39,243,243,243,245, 12,195,160,182,182, 22,101,
-101,101, 40, 47, 47, 71,125,125, 61,140, 70, 35,146,146,146,144,152,152, 8,163,209, 8,149, 74,229, 37,124, 32,116,241,199,162,
- 17,184,149, 4,203,178,187, 59,226,252,130,128, 74, 75, 75, 5, 1, 25,141, 70, 36, 39, 39, 35, 49, 49, 17, 6,131,193, 45,254,
- 31,174,248, 35,228, 66,140,206,206,206,198,166, 77,155, 80, 94, 94, 14,138,162,144,150,150,134,148,148, 20,244,239,223, 95, 24,
- 52,162,105, 26, 90,173, 86, 16, 80,160,248,127, 48,251,194, 1,195, 48,198,236,236,108,188,242,202, 43, 56,125,250, 52, 40,138,
- 66,159, 62,125,144,154,154,138,156,156, 28,168, 84, 42,104, 52, 26,208, 52, 45,140,191,248,170,245, 1, 69,252,114,224,233, 2,
-141, 30, 53,106, 20, 94,126,249,101,148,151,151, 67,165, 82, 33, 45, 45, 13,201,201,201,184,244,210, 75, 5, 1,105, 52, 26,104,
-181, 90,168,213,106,168, 84,170,136,137, 63, 18,181,168,217,108, 70, 92, 92, 28,242,243,243,145,152,152, 8, 0, 66,235,194, 95,
- 75,173, 86,123,137,200,151,200,187, 58, 10,100, 50,153, 96, 52, 26,145,151,151,135,164,164, 36, 97,187,120,180,151,162, 40,104,
- 52, 26,129,191, 84, 43,160,136, 95, 30,188,250, 0, 38,147, 9, 6,131, 65, 16, 16,127, 83,197,238, 14,111, 4, 26,141, 70,248,
- 29,108,180,199,215,190,112, 97, 48, 24,144,147,147, 3,134, 97, 0,120,143, 64,147, 36, 9,138,162,160, 86,171,133,191, 82, 45,
- 64,168, 29,225,112, 17, 31, 31,143, 49, 99,198, 8,252,197, 16,215,248,158,226, 87,220,158,208,224,101, 0,188,128, 60, 71, 73,
-197, 2, 82,169, 84,130,112,104,154,118, 19, 80,184, 46, 81,216, 25,234,112,113, 56,142,147, 20, 63,127, 61,113,205, 31,169,190,
- 64, 36,248,243,181,187,211,233, 12, 40,218, 72,138,159,119, 7, 99, 13, 94, 57,230,107,119,150,101,189,110, 44, 47,244,130,215,
-255,141,226, 95,106,193,136,140, 36, 24, 28,221,185,210,167,168,194,133,248, 70,242, 70, 32, 94, 60, 7,192,130,169,249,187,162,
- 35, 44, 53,175,199, 95,116, 71, 74,252,114,250, 5,254,142,137, 37, 72, 26,128,248, 6,120,222,100,146, 36,241,236, 3,179,209,
-208,210,134,231,222,250, 22, 37,199,107,133,115,119,191,177, 8, 70,131,123,120,177,201,212,134, 83,213,191, 98,243,142,125,248,
-169,180, 90, 50,205, 72,137,159, 79,219,215, 0, 87, 36,230,250,248,218,199, 95, 47, 18,144, 19,213, 9, 69,216,138,248,189,225,
-229,116,243, 55,148,175, 93,248,133,239,240,242,219,211, 83,227,177,240,247, 19,221,206,165, 36,106,212,212,164, 56, 76,188,236,
-119,216,252,183,121,152, 60,110,152,112,141,104,245, 1,194,169,189,195, 17,127,180, 38,195,117,149,248, 99,181, 47,224,211, 0,
-124, 9, 64,188, 62, 36, 35,197,237, 92, 74,229,219,151, 86, 81, 20, 22,221,145,239,247, 26,145, 66,164,196, 47, 55, 60, 26,233,
- 86,140,135, 34,254,232, 67,178,253,227,111,100, 32, 67, 48, 26,180,110,231, 81, 18,130, 16,255, 30, 51, 98, 0,174,202, 25, 18,
- 85,241,251,227, 31, 73,195,144,218, 30, 9,120,250,245,252, 54, 32, 60, 97, 43,226,151,134,151, 1,200,185,233,190,106,188, 64,
-157, 74,146, 36,241,246,234, 63, 70, 93,252,129,150,104, 24, 70,180,160,136, 63,186,144,108, 1, 60, 59,145,114, 7,174, 40, 74,
-126,216, 51, 26,226,247,197, 63, 18,181,190, 34,254,223, 38, 36,251, 0,114, 69,236, 41, 96, 74,226,216, 71,215,238,232, 82,241,
- 71,195,229,233,106,241,139,163,112,138,248,163, 11,217,125, 0, 57, 3, 87, 36,229,222, 7,104,183, 59,177,167,184,188,203,196,
-239,201, 63, 18,226,247,183, 47,218, 80,196, 31,125,200,234, 3,248,243,235,197,224,195,160, 78,134, 69, 93,189, 9,111,124,188,
- 23,109, 54, 71,151,139, 95,108, 0,209,234, 8, 71, 19, 82,177,121, 69,252,209, 65,192, 62, 64,160, 78,173, 24, 99,110,121, 86,
-242, 34, 93, 37,126,241,245, 0,255, 81,160,112, 12, 35,154,144, 18,169, 34,254,232,193,103, 11, 0, 4, 14,131,122,138,225,216,
-167, 79,128, 32, 8, 48, 44,135,186,122, 19, 94,251,240, 7,236,248,186,164, 75,197, 47,206, 67,164,107,253,174,112,123, 60,161,
-136, 63,186,144, 84,165,156,154, 95, 74, 16,252, 62, 90,173,194,160,254, 41, 88,117,255,245,208,105,212,138,248, 67,132, 34,254,
-232,195,167, 1,200, 17,191,167, 40, 60,247, 25,116, 26, 76,187,106,100,151,100,196, 31,127, 69,252, 10,124, 33, 96, 39, 56,152,
- 48,168,212,121, 27, 87,222,217,101,153,145,226, 31,174,191,175,136,255,183, 13,159, 97, 80, 57,226,151,114,129,124,237,235, 74,
- 68,170,214,239,206, 60, 4, 35,126,229, 1,247,208, 33,217, 2,200,245,255,125,245, 1,186, 83, 56, 60, 15, 69,252, 10,228, 32,
- 96, 31, 32, 24, 23, 72, 17,127,100,161,136, 63,250,240, 59, 21, 34,144,248, 45, 86,155,219,185,158,191,187, 11,189, 89,252,188,
-168, 21,241,119, 13,100,133, 65,125,185, 68,167,107,234,221,206, 43,175,186,216, 37,164,253,193,159,240,123,186,248,121, 40,226,
-239, 58, 72, 26,128, 28,241,215, 92,104,194, 11,111,127,227,118,222,218, 55,191,196,169,234,158,103, 4,114,132,223, 83,196, 47,
-134, 34,254,232,195,111, 24,212,151,248,239,124,108, 51, 14, 29, 63,235,149, 88,209,209, 74, 92,123,239, 63, 48,242,119,233,216,
-246,220, 61, 72, 73,140,235,146, 76,120, 66, 17,191, 2,185,240, 25, 6,245, 23, 9,250, 96,195,194, 30,209,225,149,130, 34,126,
- 5,193, 32,232, 48,168,248,119, 79,133, 28,225,119,229,244,140, 80,161,136, 63,250, 8, 42, 12,218, 27,196, 47,167,198, 87,196,
-175,128,135,236, 48,104,111, 16, 63, 15, 69,252, 10,228, 34,232, 62, 64, 79,135,221,110,199,169, 83,167, 36,253,252,104,139, 95,
-173, 86,135,157,134,211,233, 68,121,121, 57,128,174,127,105, 21, 77,211, 93,122,189,158, 0,175, 18,118, 56, 28,168,168,168,232,
-150,206, 98,184, 2,210,104, 52,117,147, 39, 79,142,202,119,122,131,225, 16,234,185, 58,157,206,150,155,155,219,173,223,233,213,
-233,116, 61, 99, 52,179,139, 64,136,191,244, 56,105,210,164, 11, 54,155,173,219, 5,180,119,239,222,168,124,105, 93,129, 2, 79,
-184, 25,128, 2, 5,177,134,158,223, 35, 84,160, 32,138, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3,
- 80, 16,211, 8,106,164,165,227, 59,194,187, 1,140,142, 18, 31,208, 52, 93, 87, 88, 88, 24,149, 48,168,194, 63, 48, 98,141,191,
-108, 3,224, 63,162,221,241, 29, 97, 20, 23, 23, 99,192,128, 1,208,104, 52,194,167, 82, 61, 7,204,130, 93,111,107,107,195,140,
- 25, 51,162, 50, 14,193,243,239,248,144,118,175,229,207,151,127, 81, 81, 17, 50, 50, 50,188,248,251,226,231, 57,144, 41,181,221,
-108, 54, 99,246,236,217, 49, 85,254,178, 12, 64,252, 5,249, 41, 83,166, 12, 1,128,226,226, 98,216,108, 54, 36, 36, 36, 8,159,
- 78, 10,244, 58,244, 64,251, 78,159, 62, 29, 12,119,217, 16,243,207,207,207,239,181,252,215,173, 91, 39,148,255,129, 3, 7, 48,
-106,212, 40,196,199,199, 75,242,151, 51, 29,220,115,255,153, 51,103,162,202,191, 39,150,127, 64, 3, 16,147,159, 58,117,234, 16,
-225, 68,149, 10,226, 65, 52, 57, 4,229,100, 42,210,248,173,240, 95,179,102,141,102,218,180,105, 2,127,138,162,132, 79,217, 6,
-203,213,215,254,104,160,167,151,191, 95, 3, 16,213, 60,218,169, 83,167, 14, 22,239,227, 39,150,121,126,138, 52, 28,242,145,190,
- 9,191, 21,254,107,214,172,209,206,152, 49,195,139,191,248,122,114,133, 31,232,152,104,240,239,201,229,239, 51, 10, 36, 38, 63,
-109,218,180,193,158,251,121,191, 13, 8, 92,248,193, 52,103,145,194,111,133,191,148,248, 1, 87, 11, 32,151,191,220,188,196, 98,
-249, 75,182, 0,129,200,139, 51, 16, 73,242,145,186, 1,191, 21,254,190,196, 47,230, 15,200,251, 14,130,156, 99, 34, 53, 93, 92,
- 78,249,239,218,181, 11, 9, 9, 9,208,106,181, 80,169, 84,110, 45,154,167, 97,120,110, 19,231,121,233,210,165,145, 53, 0, 15,
-159, 77,146, 60,224,154,186,236,121, 81,185, 5, 30,205, 38,248,183,194,127,205,154, 53, 26, 95,226, 23,243,231,121, 75,241,151,
- 43,124,241, 49,145,226, 31,168,252,111,191,253,118, 12, 24, 48, 0,241,241,241,160,105, 26,106,181, 90,104,213,186,178,252,221,
- 12,192, 87,135, 5, 0,108, 54, 27,170,170,170, 80, 85, 85,133,166,166, 38,104,181, 90, 47,194,225,146, 15,247, 6, 4,226, 95,
- 89, 89,137,234,234,106, 55,254, 23, 47, 94, 20, 62, 6, 62,112,224,192,128, 60, 43, 42, 42, 0,184,124,215, 75, 46,185, 36, 42,
-252,215,173, 91,231,214,225,229,249,159, 57,115, 6, 85, 85, 85,168,175,175,135, 78,167,147,245,174,163, 96, 91,134, 72,240,151,
- 42,127,139,197,130,195,135, 15,163,164,164, 4,199,142, 29, 67,107,107, 43, 12, 6,131,219, 7,216,229,214,252,252, 58, 73,146,
- 88,182,108, 89,228, 12,128,101,217,221, 29,113,218, 33, 44,203,162,182,182, 22,101,101,101, 56,113,226, 4, 26, 26, 26, 16, 23,
- 23,135,148,148, 20, 36, 36, 36, 32, 62, 62, 94, 32, 45, 55,252, 22,237, 40, 74, 40,252,139,139,139,113,235,173,183,226,179,207,
- 62, 19,106, 85, 41,191,146,223, 94, 88, 88,136,187,239,190, 27, 91,182,108, 65,118,118,118,196,249,119,196,249,135,176, 44,139,
-154,154, 26, 28, 63,126, 28,101,101,101,168,175,175, 71, 92, 92, 28,146,146,146,144,148,148, 4,131,193,224,183, 2,234,106,241,
- 7, 83,254,179,103,207, 70, 82, 82, 18,140, 70, 35,244,122,189, 48, 22,224, 75, 79,209,212,143,167, 11, 52, 58, 59, 59, 27,155,
- 54,109,194,169, 83,167, 64, 81, 20,250,246,237,139,212,212, 84,244,239,223, 31, 52, 77, 67,165, 82, 65,163,209, 8,190,155,216,
-151, 14,245,149,132, 17,188, 9, 65,243, 47, 41, 41,193,161, 67,135, 64, 16, 4,210,211,211,125,214, 62,252,178,111,223, 62, 20,
- 22, 22,130,227, 56,220,123,239,189, 81,225,255,242,203, 47,163,188,188, 28, 36, 73, 10,252, 71,143, 30, 45,212,150, 26,141, 6,
- 58,157, 78,248, 29,138,248,125,237,143, 4,127,169,242,223,187,119, 47, 8,130, 16, 62, 4,174, 82,169, 4,183, 71,220, 7,144,
- 83,243,139, 91,128,229,203,151,135, 85,254, 94,125, 0,139,197, 2,163,209,136, 41, 83,166, 32, 49, 49, 81,216,206, 23, 26, 73,
-146, 80,171,213, 80,171,213,208,104, 52, 32, 73, 82,248,172,103,176,133, 29,141, 78,100,176,252,139,138,138,132, 99,246,239,223,
- 15,192,229,222,240, 11,255, 91,188,157, 95,143, 6,127,179,217, 12,189, 94,143,188,188, 60, 36, 36, 36,120, 9,128, 23, 12, 77,
-211,160,105, 90, 40,123,185,131, 72,129,246,135, 11, 95,229,191,104,209, 34,175,242,215,106,181,194,186,167, 17,116,149,126,188,
- 12,192, 96, 48, 96,204,152, 49, 96, 24, 70,136,209,242,224, 51, 64, 81, 20,212,106,181,144, 25,169, 81,200, 80,200, 71,226, 6,
- 4,203,191,162,162, 2, 53, 53, 53, 24, 48, 96,128,236,107,152,205,102, 24,141,198,168,240,215,235,245,184,244,210, 75,193,178,
-172,215, 64, 17, 95,102, 60,127,113,237,201,239, 11,183, 79, 16, 46,124,149,255, 27,111,188,225,102,204,252,125, 16,115,231,247,
-121,254,245,181,141, 32, 8,172, 88,177, 34,178, 6,192, 55, 77,226, 48, 27, 31, 30, 19, 23,162,184,230,151,170,253, 25,134, 65,
-109,109, 45,206,158, 61,139, 11, 23, 46,160,190,190, 30, 77, 77, 77,104,109,109,197,250,245,235,163,118, 3,130,229, 15, 64, 16,
-127, 65, 65, 1, 72,146, 68,110,110, 46,178,179,179,145,146,146,130,134,134, 6,148,150,150,162,176,176, 16, 44,203,162,160,160,
- 0, 70,163,209, 45,189, 72,243,167,105, 26, 44,203,122, 9,198, 83,196,226,138,103,194,132, 9,168,171,115, 61,143,159,158,158,
-142,162,162, 34,217,125, 51,241,254, 72,240,151, 42,255,135, 30,122, 40, 40,253,132, 82,121, 70,196, 0,248, 90, 5,144,110,230,
-197,191, 41,138,130,201,100, 66,117,117, 53,206,159, 63,143, 95,127,253, 21, 77, 77, 77, 48,153, 76,176, 90,173, 48,153, 76,104,
-105,105, 65,115,115, 51, 90, 90, 90,132,245, 13, 27, 54, 68, 69, 60,161,240, 23,131, 36, 73, 44, 88,176, 0,153,153,153,194,182,
-126,253,250,161, 95,191,126, 24, 54,108, 24,182,109,219,230,118,124, 52,248,243,254, 49,239,110,249, 18,191, 88, 72,205,205,205,
- 24, 60,120, 48,202,202,202, 0, 0,179,103,207,134,201,100, 66,114,114,114,151,138, 31,240, 93,254, 27, 55,110,244, 42, 43,169,
-218,125,201,146, 37, 33,247, 37, 67,129,151, 1,240,133,202,175, 7, 34,242,204, 51,207,120, 9,188,165,165, 5,102,179, 25, 44,
-203, 34, 62, 62, 30,195,135, 15,199,184,113,227,144,149,149,133,167,158,122, 42,170, 55, 33, 88,254, 0, 80, 87, 87,135,180,180,
- 52,228,230,230,186,137,159, 32, 8,193, 13,201,204,204, 68,110,110, 46, 0,215,172, 67,157, 78, 23, 21,254,124, 58, 82,226,103,
- 89, 22,143, 60,242, 8,206,157, 59,135,167,159,126, 26,163, 71,143, 6, 73,146,104,105,105,193,196,137, 19,113,246,236, 89,161,
- 53,104,110,110, 70, 74, 74, 10, 8,130,192, 47,191,252,130, 37, 75,150, 96,208,160, 65,120,237,181,215,220,198, 64, 60,175, 17,
- 46,124,149,255, 35,143, 60, 18,118,237, 30, 13, 35,246,251,141, 48, 57, 68,222,125,247, 93,144, 36,137,129, 3, 7, 98,248,240,
-225,152, 52,105, 18,134, 15, 31,142,172,172, 44,100,101,101, 9,145, 21,254, 28, 95, 6, 16,169, 26, 40, 88,254, 0,144,150,230,
-154, 65,155,157,157,237,150,134, 39,248,253, 58,157,206,235, 58,145,226, 47,174, 17, 61,111,248,163,143, 62,138,113,227,198,225,
-233,167,159,198,242,229,203,145,158,158,142,249,243,231,227,253,247,223,199,132, 9, 19, 96,177, 88, 64,146, 36,178,179,179,177,
-101,203, 22,204,159, 63, 31,219,183,111, 7,195, 48,216,182,109, 27, 62,249,228, 19, 44, 90,180, 8,111,190,249,166, 79, 81, 69,
- 42, 15, 71,143, 30,133, 74,165,194,165,151, 94, 42,108,235,105,226, 7,100,124, 41, 62, 16, 9, 0, 56,123,246, 44,180, 90,173,
-108,193, 69, 83,252,161,240,231,145,146,146, 34,172,123,118,160, 61,247,139,211,143, 52,127, 95,229,200,215,252, 44,203, 98,243,
-230,205,248,207,127,254,131, 85,171, 86, 97,225,194,133,152, 51,103, 14, 14, 29, 58, 4,146, 36,113,227,141, 55, 34, 62, 62, 30,
-239,188,243, 14, 22, 45, 90,132,212,212, 84,180,182,182,226,134, 27,110,192,174, 93,187,100,151, 71,168, 32, 73, 18, 26,141, 6,
- 35, 71,142,132, 74,165, 2,195, 48, 97, 9, 60,154,238,155,223, 47,197,203, 33, 1,192,167,248,125, 21,112, 52,197, 31, 10,255,
-134,134, 6,161,195,219,175, 95, 63,159,105, 55, 52, 52, 0,112,189,126,145,166,233,168,240, 7,124, 27,240,223,255,254,119, 44,
- 91,182, 12,111,190,249, 38,246,238,221,139,156,156, 28,124,250,233,167, 56,119,238, 28,138,138,138,208,222,222, 14,173, 86,139,
-210,210, 82,140, 26, 53, 10,227,199,143, 71, 93, 93, 29,142, 31, 63,142, 17, 35, 70,224,137, 39,158, 16, 2, 16,209,138,194,241,
-233,100,103,103,187,137,255,197, 23, 95,116,171, 84, 60,239,145,231, 54,185,251,158,124,242,201,176,248,202, 50,128, 64, 29,143,
- 96,172,150, 63, 94,236,131, 71, 18,161,240,231,107,246,210,210, 82,193, 0,196,105,240,253,128,210,210, 82, 0,157,239,208,140,
-134,248,253,149,107,118,118, 54, 6, 12, 24,128,111,191,253, 22, 99,199,142,197,209,163, 71, 81, 90, 90,138,178,178, 50,124,253,
-245,215,194,224,211,184,113,227, 48,127,254,124,140, 24, 49, 2,173,173,173, 72, 73, 73,193,217,179,103, 17, 23, 23,135, 49, 99,
-198, 68,117, 28, 64,156,142,184,230,247,236, 3, 4,186, 55,114,195,185,225,194,103, 31,128,255, 27,168,105, 18,103, 90,174,224,
-162, 37,254, 80,249,243, 40, 44, 44,196,176, 97,195,144,153,153, 9,207, 55,230, 85, 85, 85,161,176,176, 48,106,156,197,220,125,
- 25, 0, 73,146,184,227,142, 59, 80, 80, 80,128,157, 59,119,162,180,180, 20, 59,119,238,196,158, 61,123,176,114,229, 74, 76,156,
- 56, 17, 0,112,240,224, 65, 44, 94,188, 24, 15, 63,252, 48,230,206,157, 11,154,166,177, 98,197, 10, 60,240,192, 3, 81, 31, 7,
-224,121,243,127,249,235,189,240,194, 11, 94, 45, 64, 56, 53, 63,191,190,106,213,170,176,184,250, 53, 0, 57,214, 41, 38, 37,199,
-114,197,233, 71, 11,193,242,231,111, 12,203,178,216,182,109,155,223,113, 0,241,241,209,230,207,115,228, 56, 14, 38,147, 9, 77,
- 77, 77,216,190,125, 59, 22, 46, 92,136,243,231,207,163,172,172, 12,123,246,236,193,247,223,127,143,196,196, 68,225,248,204,204,
- 76,204,154, 53, 11,121,121,121,200,207,207, 71, 90, 90, 26,102,206,156,137,119,222,121, 7, 11, 23, 46, 68,106,106, 42,146,146,
-146,162,210, 1, 22,243, 23,167,255,232,163,143,202,210, 72, 87,213,252, 60,252,126, 35, 76, 14, 65,241, 57, 93, 21,107,246,135,
- 80,249, 3,174,129, 48,185,215,136, 38, 60,203, 53, 55, 55, 23,131, 7, 15,198,132, 9, 19,144,151,151,135, 57,115,230,160,168,
-168, 8,187,119,239,198,202,149, 43,221,196,207, 47, 9, 9, 9, 88,181,106, 21,182,111,223,142, 21, 43, 86, 96,198,140, 25,184,
-112,225, 2, 94,120,225, 5, 28, 58,116, 8,245,245,245, 56,115,230, 76,196, 91, 0, 95,229,190, 97,195, 6,183,167,191, 60,243,
- 41, 62, 55,208, 62,241,181,162,210, 2, 4, 27, 69,233, 14,203,245,135, 80,163, 64, 61, 1, 98, 94, 60,223, 11, 23, 46,160,172,
-172, 12, 53, 53, 53,176, 88, 44, 56,114,228, 8, 28, 14, 7,202,203,203, 49,113,226, 68,159,101,158,155,155,139, 87, 94,121, 5,
-107,215,174, 69,109,109, 45,110,185,229, 22,104, 52, 26, 24, 12, 6,244,237,219, 87,242,156, 72, 64,170,252, 31,123,236,177, 30,
- 85,243,243,136, 72, 20,168, 39,137, 63, 20,254, 86,171, 21,122,189, 94,246, 84, 8,150,101,163,218,154,249, 18, 37,159, 15,146,
- 36,161,211,233,132,145,108,127,101, 47,158, 98,236,201, 89, 92, 54,145,230,238,201,107,253,250,245,110,199,120,254, 13,166,230,
- 23,167, 19,149, 22,192,147,188, 63, 95,218,243,216,238, 20,127,168,252,245,122, 61, 0,249, 83, 33,162, 45,126,207,114, 77, 79,
- 79,199,172, 89,179, 48,113,226, 68,100,103,103,227,198, 27,111,196,169, 83,167, 48,126,252,120, 28, 60,120, 16,153,153,153,146,
-121,219,191,127, 63,230,206,157,139,182,182, 54, 24, 12, 6,108,221,186, 21,229,229,229, 56,122,244, 40, 50, 50, 50, 34, 46,126,
-207,124,136,185, 44, 89,178, 36,232, 90,191, 43,244, 19,112, 36, 56, 80, 71,210,243,120,241,254,195,135, 15, 99,199,142, 29, 56,
-119,238, 28,170,170,170,144,156,156, 28,181,140,132,195,159,135,120, 42, 4,191, 79,106, 42, 68, 87,240, 23,231,163,168,168, 8,
- 38,147, 9,205,205,205,120,251,237,183, 65,211, 52, 38, 77,154,132, 5, 11, 22,224,175,127,253, 43,102,205,154, 37, 76,157,230,
-243,102, 54,155, 81, 80, 80,128, 3, 7, 14,192,102,179, 97,215,174, 93,104,110,110,198,170, 85,171,144,146,146,130,228,228,228,
-168,138,255,224,193,131,160, 40, 10, 19, 38, 76, 0, 0,172, 91,183,206,109,191,191, 26,223,243, 24,127,215,137,120, 11, 16,140,
-120,124, 25, 0,203,178,120,235,173,183,208,210,210, 2,131,193,128,182,182, 54, 84, 87, 87, 11,243,237,163,137, 80,248,243,115,
-123,196, 83, 33,120,225, 19, 68,231, 56, 0,191, 63,154, 46,144, 84,153,146, 36,137,228,228,100,164,166,166, 98,222,188,121, 88,
-182,108, 25,230,206,157,139,172,172, 44, 44, 89,178, 4,121,121,121, 88,181,106, 21,114,115,115, 65, 16, 4,246,239,223,143,130,
-130, 2,252,243,159,255, 68, 92, 92, 28,172, 86, 43,182,110,221,138,173, 91,183, 34, 43, 43,171, 75,106,126,154,166, 49, 98,196,
- 8, 97, 94,147,248,225,117,185, 46,115, 87,120, 14, 62, 59,193, 82,196,142, 30, 61,138,207, 62,251, 12,231,207,159, 71, 85, 85,
- 21,146,146,146,220, 50,205,147, 95,189,122, 53, 42, 43, 43, 49,104,208, 32,180,180,180,160,161,161, 1,109,109,109, 96, 24, 6,
-233,233,209,255,250, 81, 48,157, 45,160,115,110,143,212, 84, 7,241,120, 0,191, 63,218,209, 44,127,188,183,109,219,134, 7, 30,
-120, 0,141,141,141,104,108,108,196,220,185,115, 49,121,242,100,108,223,190, 29,155, 54,109, 2, 69, 81,152, 59,119, 46, 14, 28,
- 56,128,184,184, 56, 97, 0,108,254,252,249,216,188,121, 51, 94,122,233,165,168,243, 39, 73, 18, 87, 94,121,165, 32,126,130, 32,
-176,118,237, 90, 33,111,129,254,202, 21,126,212, 91, 0,126, 97, 24, 6,239,189,247, 30,172, 86, 43,226,227,227, 81, 89, 89,137,
-154,154, 26, 28, 60,120, 80,200, 48,255,151, 32, 8,124,240,193, 7, 80,171,213,168,168,168,128,213,106, 69, 93, 93, 29,154,155,
-155,193, 48, 12,238,186,235,174,176, 8, 7,130,220,154, 69,170,160,197, 83, 33, 60,197,207,239,239, 10,248,226,125,236,216, 49,
-212,212,212, 96,198,140, 25, 56,113,226, 4, 6, 14, 28, 8,163,209, 8,173, 86,139,199, 31,127, 28,171, 87,175, 6, 65, 16,176,
- 90,173,176,219,237,104,107,107, 19, 90,128,219,110,187, 13, 55,223,124, 51,142, 28, 57,130,177, 99,199, 70,157, 59,224,254,210,
-171,101,203,150, 5,236,139,117,101,205,207, 67,214,108,208,127,252,227, 31,168,173,173,245, 91,163,139,201, 27,141, 70, 97, 54,
- 32,195, 48,112, 56, 28,224, 56, 14, 79, 60,241, 4, 86,172, 88, 17,245, 76,201, 21, 63, 95,208,252,220, 30,241, 84, 8, 62, 29,
- 0, 94, 83, 33,162,237, 2,249,226,189,116,233, 82,188,249,230,155, 48,153, 76, 24, 54,108, 24,190,252,242, 75,188,250,234,171,
-184,231,158,123, 48,123,246,108,212,214,214, 10, 17,162, 93,187,118, 9, 51, 66,111,187,237, 54,168, 84, 42, 20, 20, 20,224,193,
- 7, 31,196, 15, 63,252, 16, 21,238,190,242,192,183, 0,190,230, 2,137,207, 9,246, 58, 81, 27, 9, 22, 47, 59,118,236, 0, 77,
-211,146, 53,250,188,121,243,188, 44,247,221,119,223,197,226,197,139, 81, 93, 93,141,184,184, 56, 36, 39, 39, 99,249,242,229,184,
-242,202, 43,195, 34, 43, 23,114,197,207,139,152,159,219, 35,119, 42, 68, 87,185, 64,158,188, 7, 14, 28,136, 79, 63,253, 20,115,
-230,204,193,125,247,221,135,161, 67,135, 98,227,198,141,216,182,109, 27, 26, 26, 26,112,251,237,183,131, 32, 8,108,217,178, 5,
-205,205,205,216,186,117, 43, 54,111,222,140,155,111,190, 25, 5, 5, 5,248,250,235,175,221, 34, 92,209,230, 47,206,199,242,229,
-203,123, 84,205,207, 67, 86, 39, 56, 46, 46, 14,191,252,242,139, 87,141,190, 98,197, 10,183,103, 50,121, 12, 29, 58, 20,159,124,
-242, 73,151,102,196, 31,127,127,226, 23, 67,238, 84,136,174,200,131, 20,247,215, 94,123, 13,247,223,127, 63, 62,251,236, 51,172,
- 95,191, 30,151, 93,118, 25, 8,130,192,194,133, 11,177,126,253,122,193,144,203,203,203,177,106,213, 42,100,101,101, 97,227,198,
-141, 56,124,248, 48, 30,124,240, 65,100,102,102, 98,235,214,173, 81,231, 46, 85,254,207, 61,247, 92,192,217,160,161, 92, 43,106,
- 45,128,152,252, 91,111,189,133,199, 31,127, 92,232, 80,137,107,244,238,178, 92,127,144, 35,126, 49,111,222,165,145, 59, 21, 34,
-218, 46,144, 47,238,106,181, 26,155, 55,111,246,218,159,154,154,138,195,135, 15, 11,227, 25, 63,255,252, 51, 82, 82, 82,132,227,
-198,142, 29, 27,117,183, 39, 80, 30, 30,127,252,113,191, 21, 83,119, 65, 86, 20,104,232,208,161,248,240,195, 15,123, 28,121, 95,
- 8, 54, 10, 20,172,152,187, 35, 10,228, 79, 60, 73, 73, 73,104,104,104, 64,159, 62,125, 0, 0, 25, 25, 25,194,227,144,221, 1,
- 41,142,207, 62,251,172, 91,222,248,245, 96, 16,137, 26,223, 19, 65, 77,134,235, 13,226, 15,135,191,220,169, 16, 61,137, 63,191,
- 93, 60,177,173,187, 70,223,253,241, 95,185,114,101,143,212,143,172, 78,176,191, 8, 74, 79, 68,176,252,121,151, 70,238, 84,136,
-174,158, 11,228, 47, 15,190,142,235, 78,244, 38,253,120,221,197,222, 68, 94, 10,161,240,231,197,236, 57, 21, 66,124,156,120, 42,
- 68, 87,186, 64,188, 97, 42,226,247,198, 83, 79, 61, 5,167,211, 25, 86, 26,126, 91,128,222, 38,126, 30,161,242,151, 59, 21, 34,
-154, 8,165,214,239, 41,226,231,209, 85,250, 9,247,121, 96,192,199, 23, 98,122,179,248,129,224,249,243,225, 77,185, 83, 33,162,
- 29, 14,237,205,226, 7,122,151,126,188, 90, 0,135,195,129,138,138, 10, 55,194, 93, 69, 94,173, 86,135,157, 70, 40,252,121,151,
-198,243,173, 16,124,220,154, 55, 2,126, 42, 4,127,252,201,147, 39, 35,206,191,181,181, 21,167, 79,159,246, 18,141,167,224, 61,
-183, 69, 2,221, 85,254,145, 66, 40,252, 9,113, 13, 55,105,210,164, 11, 54,155, 45, 42,223,137,149, 11,141, 70, 83,183,119,239,
-222,144,102,204,245,118,254,185,185,185, 23,236,118,123,175,229,223, 27,203,159,240, 28,242, 87,160, 32,150, 16,253,167,212, 21,
- 40,232,193, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3, 80, 16,211,240,249, 90, 20, 5, 10, 34,141,
-142,239, 8,239, 6, 48, 58, 90,215,160,105,186,174,176,176, 80,118, 24, 84, 49, 0, 5, 93, 2,254, 35,218, 29,223, 65, 70,113,
-113, 49, 50, 50, 50,220, 62,184, 46,158, 99, 37, 30, 56,147, 90,247, 28, 88, 35, 8,215,179,208, 51,103,206, 12,106, 28, 66, 49,
- 0, 5, 81,135,248, 11,242, 83,166, 76, 25, 2, 0,197,197,197,104,111,111, 71,124,124,188,240,145,108, 57, 19,255,252,237, 63,
-115,230, 76,208,220, 84, 6,131,174,192,102,179,175, 96, 24, 86,150, 49, 16, 4, 97,231, 56,174,128,227,184,213, 65, 95, 45, 10,
- 48, 24, 12,227,108, 54,219, 88,134, 97,228,246,103, 88, 0,197, 28,199, 29,142, 38, 47,185,232,237,252, 3,129, 23,255,186,117,
-235, 52, 83,167, 78, 29,194,111, 39, 73,210,109, 78, 85, 32,113,203, 53,140, 96, 65,218,108,246, 21,101,199,143,170, 28,118, 43,
-228, 44,167, 78,158,112, 0, 8,127, 26, 94,132, 96,179,217,198,158, 56,254, 51,105,183,183, 66,206, 82, 94, 94,206, 2, 24,215,
-221,188,121,244,118,254,254,192,139,127,237,218,181,218,105,211,166, 13, 17,239, 19,127,161, 51, 28,241,139, 91,141, 80,160, 98,
- 24, 86,149, 57,120, 8,218, 90, 27,193, 50, 76,199,230,206,233, 17,158, 19, 37,250,165, 39, 95, 0, 48, 52,164,171, 69, 1, 12,
-195,144,131, 6, 15,134,205,218, 4,198,193, 4, 60, 62, 35, 61,197, 10, 32, 62,250,204,228,161,183,243,247, 5,177,248,167, 79,
-159, 62,216,115,191,248,219,192,225,136, 63,220,217,166,130,219,195, 48, 78,176,172,143,135, 11, 68, 86,192,114,108,224,187,212,
- 13, 96, 28, 12, 88, 56,164,119,138,102, 47, 51,140,179, 71, 78,126,234,237,252,197, 8, 36,126, 0,194, 23,238, 1,223,143, 81,
-134, 98, 24,193,194,197,128, 47, 82, 78,188,112,194,199,154,221,254,113,172, 10, 64, 59, 65, 16, 25, 65, 95, 45,218, 96,221, 23,
-134, 95,208,185,128, 98, 9, 0, 12, 65, 16,134,238, 35,234, 3,189,157, 63,220,125,126, 95,226, 7, 0,141, 70, 35, 25,201,241,
-116,107,130, 53,140, 96,161, 2, 0, 83,115, 29, 74,246,125,140, 54,107,179,203, 22, 56, 81,165, 47,172,187, 86, 40, 74,213,103,
-241,226,135,219, 55,108,120,169, 74,165,162,132, 99, 68,135, 19,158, 27, 57, 14, 94,204, 56,142,115,219, 70,145,164, 83,163, 85,
- 61,211,218,106, 43, 8, 54, 19, 45, 77, 23, 81, 82,184,195,229, 70,248, 59,144, 5, 8,138,210, 45, 94,252, 16,179, 97,195,198,
-255,199,127,209, 92, 26,157, 41, 49,140, 55,127, 79, 80, 20,197,106, 52,228,161,214, 86,251, 79,242,153,187,208,219,249,243, 16,
- 71,123,196, 29, 94, 0,176,217,108,168,172,172, 68,117,117, 53, 26, 27, 27,161,213,106, 37,133, 28,110, 71, 56, 88,168, 92,153,
- 39, 96, 48,104, 65,145,122,240, 66,119, 25,130, 32,125,215, 95,215,111,227,194, 63,206,197, 99, 15,223, 15,134,115,181,205, 4,
-231, 29,155,237,140,215,138,174,198,111,115,219,228,250, 85, 85, 85,165,186,114,194,140, 21, 0, 10,130,205,132,154, 36, 97, 52,
-106,161,166,244,194, 54, 22, 0, 24,119, 57,117,252, 82,255,247, 31,111,192, 99, 15,255, 5, 12,239, 91,116,252,161, 36, 10,208,
-109, 11,229,181, 91,216, 88, 93,125,134, 28, 63,225,234,177, 0,130, 22, 80,111,231, 47,112,102,217,221, 27, 54,108,160,243,243,
-243,135,176, 44,139,218,218, 90, 28, 63,126, 28, 39, 78,156, 64,125,125, 61,226,227,227,145,156,156,140,132,132, 4, 24,141, 70,
-183,126, 64, 36,250, 2,161, 64, 5, 0, 78, 39,139, 22,147, 21,214, 86,139,203,245,225,247,186,173, 11,255,225,208,193, 47,161,
-209,197,129, 36, 41,247, 22, 2,238,221,103,183, 71, 13,196,173, 4,231,214, 58, 0,224,208,212,220, 2,150,149, 23,138,245,132,
-131,101,209,210, 98,133,213,106, 6, 24,248,169, 69, 93, 74, 41, 41,250, 18, 90,109, 7,127,184,185,216, 34, 48, 96,124, 61,249,
- 40,113,129,166,150, 22, 4, 17,202,116, 67,111,231, 47,194,232,236,236,108,108,218,180, 9,229,229,229,160, 40, 10,105,105,105,
- 72, 73, 73, 65,255,254,253, 65,211, 52, 84, 42, 21,104,154,134, 86,171,133, 74,165, 18,250, 2,145,234, 8, 7, 11, 21, 0,144,
- 20, 1,131, 65, 3,138,208, 74,138, 83,122,221, 9,116,116,218,196, 45, 4, 33, 58,151,112,115,131, 56,209,118,215, 89, 28, 0,
-162, 35, 93,130,179, 7, 77,158, 7, 69, 2,250, 56, 13, 72, 82, 15,136, 98,203,110,247,159, 17,254,235,248,223, 33,240, 39, 37,
- 78, 96, 1, 80,110,189, 79,183, 63,240, 82, 17,107, 11,145,125,239,231, 47,134,217,108, 70, 92, 92, 28,242,243,243,145,152,152,
-232,226,231,241, 14, 80,181, 90, 13,154,166,161,209,104, 64, 81, 20, 24,211,175, 40,127,249,143,176,212,158,130, 46,181, 31,250,
- 93,115, 31,250, 95,243,167,174,139, 2, 49, 78, 22, 38, 83, 43,172, 22,139, 80,143,187,215,222,156,100,205, 46, 54, 10,215,111,
- 79,227,113,107, 56, 60,210,117,191,134,217,210, 22, 52,121, 30,140,131,129,185,197, 2,171,197,210,113,203, 61,110,174,140, 90,
- 21,112,211,158,248, 84,209,201,190, 83, 49,155,219,229,145,149, 64,111,231, 47,134,193, 96, 64, 78, 78, 14,152, 14,247,173,211,
- 21,238,124, 11, 31, 69, 81, 80,171,213,194,223,218,239,223, 69, 60,247, 43, 38,255, 97, 38,172, 86, 59, 14,125,253, 50, 90, 43,
- 15, 35,235,191, 94, 4,225,225, 38, 69, 58, 10,212,209, 2,144, 48,232, 52, 32, 56,109,199,102,119,113,250,111, 21, 60,143,247,
- 45,114, 78,212,187,246,236, 99,216,237, 97,188,223, 69, 77, 65,175,215, 0,208,116,110,115,171, 13,189,107, 66,247, 85,207,218,
- 80,114,213,245,203,171, 38,117,193,102,243, 17,194,148,131,222,206, 95, 4,222,197,145,122, 17,174, 88,180, 20, 69, 9,211, 31,
-250, 78,188, 25,199,254,253, 22, 26,207,213,162,239, 37,227,144, 55, 39, 13, 71,126, 44,198,145,167,102,227,210,165, 31, 65,147,
-144, 42,187, 35, 28, 52, 95, 0, 96,156, 12, 90,204,109,104,181, 88, 0,248, 18,185,184, 54,247, 45,108,241, 73, 82, 29,105,222,
-245, 17,210,233, 88,111,181,134,222, 2,176, 14,166,195,135,118,241,247,245,214, 18,198,253, 63, 63, 9,138,255,120, 39, 38,149,
- 78,123,123,232, 46, 68,111,231, 47, 6,239,215, 3,238, 31,200, 16, 11,223, 51,220,105, 24, 48, 18,163,150,126,140,146,231,239,
-192,104, 7, 48,224,242,201,184,252,154, 25,168,248,169, 8, 63, 45,155,140,203, 86,236, 68,220,160, 75,162,210, 17,118,181, 0,
- 36, 9,189,222,213, 2,136,197,233,202,132,235, 64, 95,181, 55,159,209,206, 51,208,233, 50,137,211,233,248,143,115, 75,164, 51,
- 93,135, 35,244, 22,128,164, 40,232,245, 90,184,213,160, 0, 14, 20,151, 99, 79,225, 73,152,173, 54, 56,108,237,176,182, 59, 96,
-179, 57,208,222,110,131,205,214,142,246,246,200,212,122, 60, 58,110,238, 66,169,125,106,181,154,205,201,201, 42, 43, 46, 62,246,
-227,111,141,191, 24, 4, 0, 10, 53, 0, 0, 17,191, 73, 68, 65, 84,226,112,164, 88,160,156,195,134,179,239, 46,131,233,248,143,
- 96,108, 54,112, 28,235,210, 9,203,186,214, 1, 16, 36,137,159,127, 58, 9, 34, 33, 3, 3, 46, 25,133,161,227,174, 66,124,114,
- 18, 74,158,156,133, 81, 15,252, 19,125,175,156,237, 55,252, 25,122, 11,192, 48, 48,153,172,104,181,180,186,251,254, 98,209,139,
- 5,223,241,191,103,132, 72,236,239,187, 27,140,111,215,135, 95, 55,183,134,238,131,178, 12,131, 22,139, 21, 86,179,213,109,251,
-158,194, 50,124,248,225,199, 72, 77,237,214, 55,117, 0, 0,206, 84,158, 33,115, 46,155, 48, 18,128,151,128,122, 59,127, 49,196,
-174,136, 88,164, 23,190,122, 13,134,246, 26, 92,126,211,181, 80,209, 52, 8, 82, 5,130, 82,117,252,165, 0,130, 2, 8,210,181,
-168, 52,224,156, 54,192, 97, 69,159,223,141, 64, 94, 82, 31, 28,120,253, 47,104, 61,187, 8, 67,127,191, 68, 82,252, 97,183, 0,
- 6, 61, 13,112, 90, 55,113, 30, 58,114, 26, 63,236, 43,131,181,205, 14,155,205, 1,187,221, 1, 91,199,226, 90,119,194,102,115,
- 8, 29,158,112, 65,146, 36, 75, 16,132,228, 80, 63, 65, 16,109, 28,199,173,224, 56,238, 5,175,243, 0, 24,245, 26,128,209,186,
-109, 87,171, 73,164,166,166,162,241,226, 47,112, 48,145,173, 45,131,133,181,165, 30, 14,135, 67, 50,204, 24,152,127, 25, 88, 38,
- 50,157,212, 80,225,143,191, 39, 60, 13,128, 36, 73,176,246, 54,232,245, 58,208,176,129, 96, 24,128, 83, 1,156, 26, 32, 85,224,
-160, 5,152, 86,128, 84,185, 12,193, 97,117,233, 80,173, 5,156, 54, 24, 18, 19, 48,249, 15, 55,163,248,203,119, 96,169, 60,138,
-203, 22,191, 3,130,144, 14,157, 6,139,206, 22,192, 98,133,197,212, 10,113,205,190,191,184, 28,239,125,176, 3,169, 41,169, 65,
- 39, 28, 34,124, 22,112, 77,109,141, 46,123,212, 21,107, 0,120, 25,128,131,101,209, 98,182,194,220, 98,133,187,127, 76,129, 1,
-224,112,216,224,112, 88, 61, 79,235, 82,248,187,190, 63,254,252,185,172,163,123, 13, 32,152,242,147,234,244,166, 77, 91,128,202,
- 45, 15,227, 68,201,215,110, 35,161, 36,165,198, 37,179,254,128, 65,253,141, 32,193,130,160, 84,112,201,128, 5,199, 56, 1, 16,
- 0, 99,135,154, 0, 38,220,112, 61, 14,253,251, 59, 28,255,231, 99,184,116,209,139, 97,139, 31, 16,181, 0, 58,157, 6,156,211,
-229,131,242, 46, 11, 77,107, 92,239,200,175, 43, 5,227,236,222, 27, 96, 51, 91,224,112, 58, 37,223,125, 71,145, 36,244,122, 53,
-224,112,241,231, 71, 72, 53, 90,254,240,224, 90,168,214,214,118,234,182,249, 75,238,254,240,221,181, 91, 12, 6,173,159,147,131,
- 72,215,207,161,254,248,243,145,127, 70,162, 51,235, 15,255,251,229,143,253,223,125,239,139, 73,167, 42,170,178,109,237,118,131,
-205,238,212,165, 36,199,159,203, 28,216,175,226,134, 27,166, 29,188,243, 15,215, 86, 6,149,160,204,172,250,234,164,234,210, 6,
- 35,123,249, 78,161, 69,176, 55,212,162,116,253,157, 24, 49, 97, 50, 50, 6,247, 1,103, 51,129,160,104, 16,201, 67, 65, 14,201,
- 7, 17,159, 1, 16, 36,184,230, 42,176,167,190, 1,123,254, 48,208,214,136, 49, 83,167, 96,239,206, 93, 56,251,245, 88,100,206,
-186, 39, 44,241, 3, 66, 11,192,194,108,178,194, 98,110,117,243,203,217,142,206,137,211,209, 6,167,195, 51, 74, 35,233,169, 68,
- 13, 38, 83,179,207,125, 12,203,194,220, 98,133,197, 98,113, 15,110, 48,162,152, 95, 16,110,218, 29, 11,150, 46, 56, 89, 94, 53,
-238,142, 5, 75,153,207, 62,220,176, 37, 84,206, 98,176,126, 4, 28, 73,254, 53,181, 23,181,127,186,255,111,127,172, 56, 83,227,
-245, 45,212,139,191, 54, 13,190,248,107,211,224,162,146,210,233,255,243,254, 23, 7, 86, 63,185,104,199,232, 81,195, 77,225,242,
-247,132,191, 89,158, 36, 73,194,124,234, 39,148,191,122, 31, 46,159,115, 35,146, 18,105,112,173,191, 2, 42, 45,136, 33, 83, 64,
-101,205, 1, 33,126, 52, 50,109, 52,200,190,163,192,156,248, 2,206, 35,219, 65,181,215, 99,252,172, 25,216,243,246,227, 24,116,
-245, 93, 32,213, 26, 95, 52,228,113,117, 17, 38,160,215,209,208,235, 53, 48,232, 53, 48,232,181,208,235, 53,208,105, 93, 31, 93,
-115,205, 10,101,187,117, 1,231,251, 6,184,106, 80, 23,103, 99,199,162,215,107,160,213,187,124,106,214,115,154,165,159,101,233,
-170,141,147, 79, 85,156, 29,195,113, 28,121,170,226,236,152,165,171, 54, 78,150,123,174,255,197,183,128, 35,201,255,238, 69, 79,
-221, 35, 37,126, 15, 16,199,203,206, 76, 88,176,240,169,197,199,126, 41,143, 15,151,191, 91,194,126, 98,244, 36, 73,226,226,143,
- 31,161,226,159,127,193,132,155,111, 69,146,222, 14, 88,235, 93,247, 54,126, 0,136, 97,215,130, 97, 89,148, 86,214,227,227,255,
-156,196,182, 47, 75,241,195,207, 53,176,218, 28,192,240, 89,224,172,141,112,254,252, 62,232,243,133,232, 51,112, 16, 46,150,124,
- 35,139,147, 63,116,182, 0,150, 54,152, 76, 86,239, 57, 59, 28,231, 34,232, 71,128, 82,224, 34,220, 66,112,254,106, 80, 7,139,
- 22,139, 21,150, 22, 15, 63,149,101,248, 89,101, 96,101,220,192,175,191, 61,144,254,213,238,125,179, 29, 14,167, 14, 0, 28, 14,
-167,238,171,221,251,102, 79,155, 58,182,252,154,233, 87, 93, 8,135,191, 63, 4,230,223,241, 83, 70, 30, 30,252,243,109, 59, 31,
- 91,246, 82, 54,195,176,234, 97, 67, 7,254,116,253,156,188, 31,114, 39,142, 62,103,212,235,156,187,191, 43, 26,180,235,243, 31,
-243, 78, 85,156,189, 2, 0, 76,230,214,190,119,223,255,183,135,118,127,254,210,179,241, 70, 67,120, 95,154, 16, 65, 42, 10, 68,
- 18, 4, 42,223, 43, 64, 91,121, 33, 38,221,124, 19,104,219,175,224, 28, 78, 16, 36, 5, 16, 12,184,193,249, 96, 88, 14, 21,231,
-154,241,213,193,106, 56, 25, 22, 37, 39, 47,226, 84,109, 51,254,235,250, 81, 88,112,205, 72,112, 19, 31, 1,202,191, 2,103,185,
-136,126,253, 47,195,217,221, 91,208,239,170,235,194,226,218,209, 7, 32,160,213,209, 96,156,180, 56,242, 9,157,150,239, 19,116,
-198,106, 35,135, 32, 13,196,223,245, 41, 64,175,209,128,213,187,119, 17, 52, 26, 45, 4,217, 4,160,223,216,100, 86, 63,249,244,
-230, 63, 89, 90,219,220, 62, 18, 96,105,109, 75,121,242,233,205,127,186, 98, 76,246,218,228, 36, 99,200,161, 36,198,223, 55, 5,
-252,242, 7, 0, 6,172,204,231,144,174,187, 58,247,220,161,146,147,111, 3,192,202,165,127, 44, 18,239, 27,122,247,128,227,247,
-221,125,243,241,213, 27,222,249,105,235, 59,159,255, 23,199,113,100, 83,147, 57,163,224,239,111, 78,222,176,250,193,239,252, 38,
- 44,243,155, 8,158, 97, 80, 62, 2, 84,250,210,221, 48,210, 44,174,186,118, 26, 40,214,138, 54, 58, 29, 78, 66,131, 56,107, 57,
- 8, 16, 96, 13,253,192, 57,157,216,247,203, 5,156,107,104, 69,113,217, 5, 88,218, 92,197,253,225,119,229,184, 53,111, 48, 52,
-125,115, 64, 18, 36,184,182, 38, 36,100,196,227,248,225, 34,127, 84,100,129, 4, 92, 45,128,197,210, 14,147,169, 13, 45,102, 43,
- 76, 29, 11,195,176,252, 67, 48, 81, 88, 56, 25,139,251,241,190,192, 50, 12, 44, 86, 43,204,102, 27, 90,204, 86, 97, 17, 68,195,
- 6,110,226,231,221,179,234, 79,109,109,237,241, 6,131,174, 65,156,182,193,160,107,104,107,107,143,159,119,207,170, 63,185,218,
-145,208, 22,191,179,121,252,242,103, 59,140,199,247, 98,179,181,147, 31,124,188,123, 48,255,123,229,210, 5, 69, 43,151, 46, 40,
-242,117,252,242, 71,230,149,204,156,118,197, 78,254,250,223,124,123,112,142,205,214, 78, 30, 63, 81, 97,252,223,175, 10,251, 75,
-157, 19, 76, 24, 65,236,242,216,155,206,227,231, 85, 87, 35, 61, 85,143,156,241,217,160,156,173,104,110,105,199,119, 91, 94, 3,
-107,109, 2, 8, 10, 28, 99, 7,227,116,130, 97, 24,212,254,106,198,247,135,207, 10,226, 7, 0, 45, 77, 1, 28, 11,135,195,193,
- 95, 0,148,154,134,163,205, 18, 4, 43,105, 8, 45,128, 78,171,134,211, 78, 67, 60, 98,165,211,209, 29,235,209,104, 1,130,131,
- 63, 3, 32, 41, 10, 26,173, 26, 14,155, 26, 64,103, 45,170,215,119,214,160,129,198, 42, 62,255,120,237,107,252,250, 37,227,230,
-189,206,175, 23,239,217,252,184,112, 80, 56,227, 29,126, 78, 13,151,255,226, 21, 47, 79,255,110,207,161,217,159,127, 85,184,247,
-173, 77,203,254, 69,146,100,192,230,245,169,199,239,253,246,187, 61, 37,215, 57,157,140,166,221,102,143,159,124,237,253,171,218,
-172, 54,227, 93,119,206,122,103,214,204, 43,207,121,243,151,159,119,222, 0,218, 47, 86,225,216, 51, 55, 32, 39, 63, 15,233,125,
-227, 0,214,137,186, 11, 45, 56,242,159,239, 17, 55, 96, 4, 28,173, 45, 32, 18, 40,112,237,173, 96, 27, 78,161, 13,122, 12,239,
-175,135,231,173,158, 62,166, 31, 24,198, 9,212,254,228,242, 4,212,122,216, 29, 28,116,201,225, 15, 16, 10,125, 0,139,165, 13,
- 38, 97, 36,210, 53,215,135, 97, 59,134,171, 59,106,227,238,132,191,235,179, 12, 3,171,217, 6,179,104, 36,149, 5, 58, 69, 35,
-199, 7,242,157,122,136,231,201, 79, 71, 30,127,105, 56,156, 78,162,168,228,196, 4,155,221, 17, 87,244,211,241, 25, 87,223,240,
-240,224, 87, 95,124,236,141,172,161, 3, 37,171,199,186,186, 70,205,194,191,174,157,223,216,104, 74,227, 56, 78, 8,183, 52, 55,
- 91,250,245,237,147,120,250,209, 7,239,240,241,186,149,224, 92, 32,130, 32, 80,254,250,159,145, 51,121, 18,210, 18, 9,112,148,
- 26, 85,167, 47,160,226,200, 49, 92,185,250, 59, 92, 60,248, 57, 26,203,191, 66,106,223, 75, 0,243, 5,224,135,213,176, 93,251,
- 38, 38,100, 37,225,246,252, 76,124,123,164, 14,118, 39,131,137,151,244,193, 13, 19,250,195,225,112, 64,115,240, 69, 0, 0,153,
-152,137,230, 38, 51,146, 70, 78,148,197,201, 31,132, 22, 64,163, 85, 67,111,231,163, 62, 0,192, 65,175,227,127,247,132, 22,192,
-247,245, 73, 0,106,173, 26,250,142, 56,186,203, 93,101, 93,177,117,184,220, 8,132,250, 44,127,132,222, 1,224,207,135,247,207,
-223,181,238, 75,128, 79, 63,251, 86,110, 83,179,185,159,235, 60, 86,117,238,124,253,136,187,238,253,219,226,249,183, 95,253,241,
- 3,247,221,122,212,243,248,180,180, 68,219,204,169,227, 14,190,251,193,238,223, 51, 12, 43, 52, 55, 36, 73, 58,243,115,199,252,
-232,235, 58,193, 56, 65,188, 1, 56, 77,191, 34,121,192, 36,112,156, 29, 39,142,156, 64,253,197,102,140, 95,179, 7,234,184, 68,
- 12,152, 62, 31,251, 62,127, 5,131, 71,143, 6, 89,251, 19, 84,109, 77,208, 22,254, 29,230, 43,151,226,150,220,254,184, 37,183,
-127,103, 95, 2, 44,212, 7, 95,132,186,250, 63, 0,169, 2,219,111, 28, 78,254,239,247,152,180,250, 37,217,156,124,193,245, 68,
- 24,223, 7,224,107,160, 14, 3,112, 58, 88,215,143, 16,162, 64,129, 16,108,140,200,159, 1, 56, 88,192,106,110, 71,139, 91, 20,
-133, 5,239, 50,178,108,176,195, 72,226, 84, 34,133, 80,249,119, 60, 14,239,195,128,246, 20, 30,201, 19, 63, 73, 71, 81,164,131,
- 86,171,108,223,252,231,167,241,183,221, 56,229,100, 90, 90,146,215, 52,207, 7, 22,222,116,244,218, 25, 87,156, 89,244,240, 11,
- 11, 47,212, 53, 13,101, 89, 86,149,152, 24,119,126,229,210,187, 10,125, 26,170,204,130, 16,183, 0,241, 35,115,113,224,255,190,
-129,195,106,129,113,216, 21,184,252,111, 31,128, 82,187, 30,134, 87, 27, 18, 48,112,246, 66, 84,252,242, 3, 70,102, 92, 1,166,
-226, 27,196, 29,123, 11,244,133, 98, 88,114, 22,194,158,154, 3,150,160, 64, 55, 28, 69,220, 47,111, 67,115,126, 31, 0,128, 28,
- 48, 30, 53,181, 77,232,115,217, 12,196,101, 12,151, 71,202, 15, 68,125, 0, 26, 14, 59,237,166, 76,157,142, 6,135,158,209, 2,
-120, 57,134, 34, 80, 36,160,213,171,225,112,184, 71, 81,244, 90,181,104, 80, 41, 68,254,161,158,231,153,140,223,145, 96, 63,252,
-225,106, 17,164, 6,162, 54,188,252,209,101, 45, 45,173,125, 19,227, 13,231,155, 77,173,253, 0,128, 32, 8,246, 95,239, 61,189,
-142,143, 88,249, 26,192, 26, 54,180,191,229,203,157,107, 94,184,247,254,231,111, 62,114,180, 98,210,149,151,143,216,175, 86,147,
-156,111,165,203, 47, 7,222, 0, 70,222,247, 50,172, 53,101,160,141,201,208,166,244,247, 26, 23, 24, 50,247,207,248,254,254,215,
-144,144,156,139,126,163,255, 0,230,196, 23,160,235,127, 70,242,183,127,145, 40, 36, 26,212,176,153,104,114, 38,224,196,193,111,
- 49,125,211, 33,217,124,252, 65, 5, 0, 44,195,194, 98,109,135,217,220, 57,218,203,193,213, 55,112,245, 1,196,157,208,174, 29,
- 1, 22,248,248, 49, 64,134,101, 97,182,218,208, 98,113,143,163, 59,120,241, 50,242, 7,114, 0,128,166, 85,173,118,187,211, 0,
- 0,159,127, 85, 56,224,250,107,175,170,113,187,158,236,148,228,157,229,151, 63,223,127,145,176,160,236,172,204,139,255,179,121,
-121,193,144,193,233,173,185, 87, 63,180,166,221,102,143,119, 58, 25,205, 83,207,108,157,254,226,154,251,191, 10,196,136, 2,184,
- 45,175, 60,250,201, 71, 59,247,148,220, 48,103, 98,181, 63, 43, 13,102,194,163, 56, 10,100,204, 28,229,123,254,190, 70,135,188,
-117, 63,160,248,239, 55,163,185,111, 50, 70, 92,182, 0,196,133, 18,112,230, 11,224,204,231, 1,150, 1, 17,151, 6,194,216, 15,
- 68,122, 14, 42, 79,159, 71,229,177,125,200, 91,243,111,104,147, 67,250,142,159, 23, 72, 0, 32, 72, 2, 90,141, 10, 58, 45, 13,
-157, 86, 13,173, 86, 13,157, 70, 13, 93, 71, 13, 20, 94,248, 50,130,163,193, 62,115, 65, 66,175, 38,161,215,104,161,215,168, 59,
-151, 14,254, 12, 24,183,119,235, 4, 90, 18,226, 13, 23,249,164, 55,109,222,117,227,174,175, 14, 12, 16,239,143, 56, 2,241,103,
-164,121, 94, 61, 99,220,185,225, 89, 3,205, 42, 90,205, 78,155, 50,230, 11, 62,185,127,239, 57,124,211,154,141, 31, 93,238, 43,
-127,207,108,120,255,202,191,173,251,159,171,248,223,183,220,148, 95,169,162,213,172,191, 50,145, 11, 57, 79,110,137,247,233, 82,
- 51, 48,121,195, 62,112, 41, 35,241,227,174,175, 80,209,148,136,166,164, 60, 48, 87, 60, 0,118,194, 35,104, 73,191, 6, 85,214,
-126, 40,252,247, 65, 52, 90, 40, 76,127,245,103,196,103, 70,238,131,229,157, 45, 64,107,187,240, 92, 46, 63, 25,206,238,100, 59,
-126, 69,218, 5, 10,190, 21,241,123,125, 7, 11,139,213, 6, 75, 71, 13,202,223, 48,135,184,214, 10,226,227,214,151,102,255,238,
-208,183,123, 14, 13, 1,128,170,179, 23,115,150, 63,185, 57,103,249,147,155, 37,143,253,185,240,245,255,150,151,106, 56,252, 25,
-255,231, 3, 88,185,100,222, 15,251, 15, 30,159,220,212,108,201,224, 56,142,220,182,253,235,255,222,187,239, 88,241,245,215,142,
-255,113, 90,126, 78,181,213,106, 87,237, 59, 88,218,255,139,221, 69,147, 43, 78,159, 31, 7,128,163,212, 4,179,244,161,219,139,
-195,230,239,129,160,223,240,160, 82, 35,231,254,141, 48,159, 45, 67,195,177, 31, 81,115,120, 55, 26,190,221, 14,142,113, 34, 41,
-235, 10,164,140,189, 6, 99,110,204, 67,210,240,200,191, 18, 85, 5,116,180, 0,180, 26,118,173,218,109, 50,156, 94,199,191,227,
-170,179, 19,220, 53, 14,144,212, 85,252,143,164,106,212,106,104, 52,158, 62, 52,127, 86,112, 46,208, 51, 79, 44,248,230,250,219,
- 43,198, 53, 52,154, 50, 3, 31, 45, 51, 93,127,209, 36, 57,252, 3, 68,163,140,122,218,185,105,195, 3,255, 88,248,224,139,139,
-205, 22,107, 95, 0,168, 56,125,238,138, 23, 95,221,121,197,139,175,238,148, 58,133,248,225,199, 99, 19,150, 62,248,123,153, 6,
- 16,222, 92,160, 64,207,242, 18, 4,129,132,204,108, 36,100,102,227,119,215, 73, 62,148, 22, 21,144, 4, 65,176,237,237, 54,180,
-181,219, 97,182,180,193, 98,105,131,197,226,106, 13, 56,182,195,165, 97,157,238,147,210,162,190,112, 94,139,211,233, 4, 65, 16,
- 82, 86,192,217,218,219, 97,181, 57, 96,177,182,187, 22, 75, 59, 44, 22,107,135,102, 92, 35,136,193, 44, 52, 77, 50,255,122,119,
-229,154,105,121, 57,159,244, 73, 77, 56, 67,171, 85,173,190, 10, 80,110,154, 86,215, 51,183, 82,150, 29,144,191,220, 80,236,168,
-145, 3, 77,111,188,244,192,186,145,195, 7,236,247,113, 45, 1, 67, 50,211, 15,189,254,210,131,210,205,154,143,124, 6, 74,147,
- 71, 40,226, 15,103, 74,115, 56, 80, 25,244,154, 95, 79,148,157, 72,235,155,214, 31,214,214, 70, 97, 46, 16,195, 48, 72, 73, 27,
- 8,198,233,128,169,165, 81, 56, 33,208,135,181,229,124,119, 59,208, 68, 57,207,107,112, 28,135,242,138, 90,104,181,244, 89,207,
- 99, 13, 6,109,123, 89, 89,185, 46,173,111, 63, 88,173,141, 66, 69,197,178, 14,100,244,205, 0,227,112,160,165,165, 62, 48, 41,
- 15, 16, 20,152,167,159,152,255, 21, 0,191,157, 73,171,156,135,201, 89, 6,149,213,231,161,211,209, 94,134, 20,144, 63,203,160,
-197,220, 36,155,247,144,193,233,166,173,175, 63,186,101,231,231,251,190,251,191,221,197,227,107,106,235,135, 54,183, 88, 50, 84,
- 42,170, 77,163, 81, 91,134, 14, 78, 47,253,253, 13,121,123,103, 76,205, 57, 7, 0, 86,171,188, 7, 93, 42, 42,206,195, 32,193,
- 95, 10,189, 69,252, 0,160,210,106,212, 37, 31,239,216, 49,251,207,247,223,139,227,165,135, 93,115, 50, 88, 14, 14, 7,131,153,
-179,167,163,169,241, 28,204,226,232, 68, 32, 3,144,113,209,192, 70,228,109, 0,133, 7,142,183, 51, 12,187,207,243, 88, 61, 77,
-215,239,248,100,199,192, 69,139,238, 69, 89,217, 97, 48, 14, 7, 28, 44,224,112,176,152, 49,107, 38,154,154,106, 96,181,118,239,
-195, 60, 96, 89, 20, 30, 56,193,112, 28, 91,231,185,203, 47,255,235,102,162,165,177, 86, 38,127,247,198,241,154,233, 99, 42,175,
-153, 62,166,210,215,209,178, 12, 87,148,244,190,226,147, 12, 35,193,223, 19,189, 73,252, 0,160,210,171,201,191,124,188,227,179,
-147,191,191,245, 22,234,206,187, 30,193,201,178, 18, 48, 12,131,172,145, 99,209,167, 79, 95, 28, 41,250, 20,182,246,206, 41, 18,
-129, 16,168, 5, 8, 36,126,169, 99,206,214,214,227,227, 79,247, 58,236,118,231,147,158,199, 38, 16,170,189, 31,237,248,236,246,
- 91,111,185,137,184,253,174, 71, 81, 94, 86, 2,134,113, 32,107,228,229,232,155,154,134, 35,197,187,130,124,229, 71,228,227, 60,
-181,181,245,248,104,231, 94,214,225,112,122,249,219,126,249,167,245, 67,217,225,207, 96,179,186,119,142,187, 26,213,213,245,120,
-127,199, 30, 73,254, 82,144, 35,252, 80, 94,100, 27, 13, 16, 28,199, 97,208,160,212, 69, 13,245,150,141,119,222,113, 3, 53,247,
-250,235,144, 53,252,119,104, 53,215,227,116,121, 17,236,182,206,218, 95,142,120, 3,217,136, 44, 3, 0, 7,134, 97,113,225, 98,
- 51,142, 28,171,108,219,249,249, 65,134, 97,157, 15, 57,157,220,155, 82,199,103,102,166,100,215,215, 91, 39,253,191, 59,230, 18,
- 55,204,189, 14,195,135, 14,133,213, 90,143,202,242, 98,180,183,119,207,179,192, 44,203,224,124, 93, 11, 74,142,156,113,238,216,
-181,143,115, 56, 28,251, 56,142, 43,147, 58,182,147,255, 77,196, 77,115,175, 67, 86,214, 96, 88,173, 77,168,174, 40,129, 35, 66,
-252,131, 53, 30,150,101,112,254,124, 19, 14, 29, 57,229,124,239, 95,254,249,243,184,226,138, 43,184, 3, 7, 14,192,102,179,117,
-139,248, 79,158, 60,137,121,243,230,161,184,184, 88,118,179, 66,240,130, 76, 72, 72, 24,166,166,216,151,219,237,206,203,172, 86,
- 91, 31,241, 68,169,238, 0, 65,128,165,105,245, 89,150,101,247, 57, 28,204,147, 28,199,157,244,119,124, 74, 74, 74, 60,197, 57,
-243,172,118,123, 74,107,107,187, 22, 8,252, 74,240, 40,131,211,209,116, 43,199,178,117,237, 78,103, 49,199,113, 45,254, 14,238,
-237,252,129, 78, 3,176,219,237,221, 82,243,135, 98, 0,194, 28,146,150,150,150, 83, 0,102, 69,133, 89, 23,160,161,161,193, 4,
-224,139,128, 7,246, 80,244,118,254, 60,236,118, 59, 78,157, 58, 37,233,231, 71,219,237, 81,171, 37,223,153,224, 23,202,103, 82,
- 21, 68, 12, 26,141,166,110,242,228,201,221,250, 22, 47,141, 70, 19,176,163, 46, 6, 33,203,175, 87,160,224, 55,138,158,209, 21,
- 87,160,160,155,160, 24,128,130,152,198,255, 7,109, 43,244, 49, 78,182, 48,112, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
+137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13,
+ 73, 72, 68, 82, 0, 0, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8,
+ 8,124, 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69,
+ 88,116, 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0,
+ 0, 32, 0, 73, 68, 65, 84,120,156,237,125,121,156, 20,197,221,254, 83,125,205,204,206,206, 30,236,194, 94,200,130,200,181, 34,
+ 32, 40, 1,228, 88, 48, 70, 64,209,168, 81,140, 33, 26, 77, 66, 98,242,198, 55,106,162,198, 11,242,198, 68, 5,209,188,106,140,
+ 49, 94, 16,125,127, 49, 30,241, 74,226,145, 40,162, 34,114, 9,114, 45,187,171, 92,123,176,176,247, 28, 59, 71,119,215,239,143,
+217,158,237,233,233,158,233,185,150,197,237,103, 63,179, 51,221, 93, 93,245, 84,245,243,173,250,214,209,221,132, 82, 10, 11, 22,
+ 6, 43,152, 19, 77,192,130,133, 19, 9,203, 0, 44, 12,110, 80, 74, 35, 31, 0,203,149,143,178,109,240, 93,222, 27,110,154,230,
+252,114,245,249,234, 56,213,219,218,223,122,233,234,241,136,119,142,206,113, 35,142,186,113,197,137,191, 60, 1,199,242,120,101,
+160, 87, 38,154,253,137,226, 55,228, 19,111,127,162,242, 77,230,250,104, 63,218,178,141,163, 15,109,222,116,243, 26,175, 76, 12,
+174,109,204,183, 94,124,102, 62, 81, 45, 0,165,244, 9,245,119, 28, 92, 72, 41,125,130, 82,186,205, 96,255, 19, 0, 64, 8, 89,
+174,108, 19, 66,150, 43,129,212,191,141,210, 85,199, 99,246, 28,147, 28,117,161,141, 95, 21,247,133, 70,156,180,199, 53,233, 62,
+ 97,176, 29, 21, 78, 57, 95,155, 31,163, 50,209, 73,207,112,191,230,120, 76, 89,153,189, 62, 58, 72, 84,182, 23,234,149,157,118,
+ 59, 81,153,196, 3, 33,164, 28, 64,115,130,248, 18, 34,161, 11,100, 80, 24,111, 18, 66,150,247,146, 72, 26,218, 2, 55,147,174,
+153,115,210,225,152, 10,167,222,237, 55,147,224, 20, 55, 62,147,225, 99,210, 75,151,135, 22,122, 6,161,124,122,119,197,148,173,
+ 65,217, 24,114, 52,202,123, 18,101,114, 33,165,244,141, 20,206,139, 66, 66, 3,208,179, 42, 74,105,147, 89, 75, 77, 38, 94, 19,
+233,154,182,240, 84, 56, 38,203, 41,219,101, 96, 16, 62,233, 22, 32, 21,232,181,198,170,150, 36,166,108, 13,202,198,144,163, 81,
+222,147, 40,147, 55, 9, 33, 75, 82, 56, 47, 10, 92, 42, 39,169,107, 2, 29, 82,203, 21, 66,234,154, 36, 89,130,169,158,151, 12,
+ 71,157, 99,122,113,196,212, 90, 9, 56,189,169, 9,167,221,206, 56,122,227, 87,220, 17,211,249, 75,245,250,152,141,223, 76, 28,
+137,210, 53, 10, 71, 41,109, 34,132, 92,152, 40, 92, 66, 30,212,154, 7,176, 48,136, 97, 13,131, 90, 24,212,176, 12,192,194,160,
+134,101, 0, 22, 6, 53, 44, 3, 72, 3,132,144,242, 84,135,223, 44, 12, 16,232,204,242, 37,154, 89, 77,102,182, 54,238, 57,113,
+102, 0, 19,206,226,170,247,233,165, 29,143, 71,170,233, 26,229,217, 12, 95,163,176,122,113,170, 57,105,243,169,141, 83,111, 59,
+206,185,134, 51,172, 38,174,101,170, 51,227, 70,231, 37,154, 65,143, 59, 99,159,169, 79, 50, 6,160,187, 95,239, 98,152, 61,199,
+ 40,141, 68,225, 18, 8, 44, 33,143,116,210,213, 11,147,204,121,102,202, 49,153,112,102,242,145,236,117,137, 87,134,102,211, 72,
+182,172,147,201, 95, 38, 63,105,185, 64,169,204,214,154,156, 1,204,202, 76,179, 94,124, 25, 74, 55,153,243, 18,206,162, 26,193,
+ 76,184, 84,103,139, 51,113, 45,227,165, 77, 77,142,207,167,122,205, 83, 69, 90, 6,160,151,169, 68, 25, 53, 58, 78,163,103, 30,
+179, 53,211,108, 52,139,154, 86,186,201,156,167, 23,214,172, 56,204,132, 51,226,145,136, 95, 38,174,101,188,180,147, 89,226, 96,
+ 50, 92, 70,160, 59, 19,108, 48,171, 22, 51,163,105, 98,246, 45,149,115,226,206, 52,166, 56,211,252,102, 18,181,167,110,186, 41,
+158, 23, 51, 43,171, 23,214,160,140, 50, 58,139,171,153, 45, 54, 74,211,204,117, 73,106,102, 60, 78,126,227,149,149,118, 59, 42,
+108,111, 43,113,161,217,138, 35, 30,172,153, 96, 11, 39, 29,146,113,169, 18,198,101, 25,128,133,193, 12,107, 30,192,194,160,134,
+101, 0, 22, 6, 60, 8, 33, 89,115, 83,190, 18, 6, 96,205,200,126,181, 65, 41, 37,218,125,132,144,106, 66, 8, 85,125,170, 83,
+141, 92,119,210, 2,250, 51,140,166,238,201, 84,109,155,189,183, 51,238,236,168,222,121, 6,124,210,186, 87, 89,143,115,162, 60,
+105,227, 78,162,108,226,206,160, 38,251, 1, 80, 13,128, 2,168,238,221,166,170, 99, 84,249,214,134, 49,216,214,134,167,154,180,
+180,219,134,105, 39,147,190,122,159,118, 91,179,175, 90, 47, 13,117, 60,166,203, 77, 79,252,102,127,107,191, 19, 29, 79,244,173,
+151,150, 25,110,201,156,103, 54, 47,233,114, 55, 83,142,241,226, 73,250, 66,170, 68,166, 21,146,217,111,163,184,140,210, 50,155,
+118, 42, 60,140,210,208,132,175, 86, 11,223,136,111,188, 79,202, 46, 80,178,247,128, 38, 64,202,179,163,137,226, 73, 6, 26,206,
+111, 26,140,123,235,230, 41, 25,238,217,114,215,180,190, 50,165,148, 36,242,159,123,143,207, 87,111, 83,149,203, 97,214,255, 54,
+ 74,155,106,220, 23,189,244,212,219, 70,113,107,227,233,197,251,148, 82, 66, 41, 93,111,134,163, 30, 82, 54, 0,154,220, 61,160,
+ 17, 49,233,137,136,166, 49, 59,154, 40,158, 36,207,127,130, 82,218,164,196,165,254, 86,113, 50,138,219, 52,247, 84,242,102, 6,
+122, 34, 49, 16,142,246,248,251,128,190,208,204, 26,131,217,180,213,233,233,109,107, 17, 71,252, 0, 48, 63, 45,255, 31, 58, 51,
+193, 52,205,251, 68,245,206,161,225,251, 55,163,190,245,206, 69,242,247,223,234,114, 64,156, 89, 70,154,230,189,202, 58, 48, 53,
+203,172,199,147,234,204,252,102,114,146,199, 32,237,184, 53,174, 34,114, 69,116,154,237,249,102,106,108, 19,233,255, 90,239,152,
+186,197,210, 51, 60,213,190,249, 42,195, 80,243, 76,154,151, 53, 17,102,225,164, 68,111,173,175,110, 57,230,167,226, 10, 89, 6,
+ 96, 97, 80,227, 43, 49, 15, 96,193, 66,170,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 1,
+129, 61,211, 8,221, 51,141,208,221,103, 71,143,233, 43,251,247, 76,139,158,131,216,125, 54,169,214,134,215,134, 49,131,148,158,
+ 13,106,193, 66,166,113,250,182,240, 24,127,175,136,137,222, 49, 53,136,140,247, 79,223, 70,137, 18, 62, 21,241, 3, 86, 11, 96,
+161,159,160, 8, 52,158, 80,247, 76, 35,148, 50,177,147, 89,122, 45, 3, 0,236,158, 70, 86, 42,191,245,140,196, 12,172, 22,192,
+194,128,192,158,105,132,234,137, 56, 94,203, 48,113, 27, 93,185,103, 26, 89,145, 78,186, 86, 11, 96,161, 95, 64, 25,204, 87,215,
+240,122, 45,129,218,215, 87,127,235,157,167,141, 47, 85, 88, 51,193, 22, 6, 53,172, 22,192,194,160,134,101, 0, 22, 6, 53, 44,
+ 3,176, 48,168, 97, 25,128,133, 65, 13,203, 0, 44, 12,106, 88, 6, 96, 97, 80,195, 50, 0, 11,131, 26,150, 1, 88, 24,212,176,
+ 12,192,194,160,134,101, 0, 22, 6, 53, 6,213, 98,184,233,211,167,151,202,178,252, 46,128,137,217, 74, 67, 16,132,150,141, 27,
+ 55,150,102, 35,238, 49, 99,198,216, 10, 11, 11,103, 72,146,228,202, 70,252, 0,192,243,124, 96,211,166, 77,239,102, 43,254,129,
+134,164, 12,224,100, 22, 80, 47,247,247,215,172, 89, 35,204,155, 55, 15, 91,183,110, 69, 69, 69, 5,236,118, 59, 88,150, 5, 33,
+ 4, 12,211,215, 32, 18, 66, 98,126,171,247,233,237,247,249,124,248,250,215,191, 94,146,105,238, 64, 88,252, 5, 5, 5, 51,239,
+187,239, 62,102,193,130, 5,216,190,125, 59, 42, 42, 42, 32, 8, 2, 56, 46,124, 25, 89,150, 53, 60, 63,222, 49, 0,224, 56, 14,
+ 62,159, 15,213,213,213,182,140, 18, 31,224, 48,109, 0,122, 2, 42, 47, 47,143, 8,136, 97, 24, 16, 66,116,133,163,254, 29,111,
+ 95,182, 4,164,112,127,224,129, 7,108,243,230,205, 27, 5, 0, 91,182,108,129,223,239, 71, 94, 94, 30,120,158,143,201,131,250,
+ 99,180, 95,123,236,203, 47,191,204, 52,117, 0,125,226,191,255,254,251,153, 5, 11, 22,228, 0,192,230,205,155, 49,121,242,100,
+184, 92, 46,112, 28, 7,150,101,163, 68,174, 24, 5,208, 39,126,245, 62,245,126,229,251,192,129, 3, 89,225, 63,144, 97,202, 0,
+244, 4,180,105,211, 38, 76,154, 52, 9,121,121,121,224, 56, 14, 28,199, 69,137,193,232,119,188, 99,217, 16,144,194,125,245,234,
+213,182,234,234,234, 81,202,126,134, 97, 32,203,114,148, 17, 38, 35,124,163,227,153,134,158,248,129,176,104, 37, 73,130,122, 91,
+ 65, 42,226, 31,172, 72,104, 0, 70, 2,226, 56, 14,178, 44, 3,136, 21, 79, 42,226,207,134,128, 20,238,171, 86,173,178,207,159,
+ 63,127,100, 84,198, 57, 46,101,241, 27, 29,203, 52,140,196,175,240, 87,144, 9,241,107,195, 12, 22,196,205,117, 60, 1, 41,133,
+151, 41,241, 43,219,153,130,154,251,130, 5, 11, 70,106,143, 43,126, 63,165, 52, 35,226,207,180, 17,196, 19,191,194, 95, 11, 75,
+252,201,195,112, 24,212,140,128, 24,134,137, 18, 80,186,226,207,148,128, 18,113, 87,248,171,211, 76, 87,252, 12,195, 68,117,162,
+211, 65, 34,241, 43,252,141,220,151, 84,197, 63, 24,221, 33, 93,211, 55, 35, 32,197,133, 80, 4,148, 9,241,103, 66, 64,106,151,
+ 77,219,106,169, 97,179,245, 13,118,100, 66,252,153, 50, 96, 51,226, 7,140,107,109, 75,252,201, 33,166, 20,205, 10, 72, 16, 4,
+ 0,136, 18,110,186,226, 79, 87, 64,234,206,186,186,191, 2, 0,129, 64, 0, 7, 15, 30,196,225,195,135,209,214,214, 6,135,195,
+145,208,157, 49,227,242,104,143,167,131,120,226, 15, 4, 2, 56,112,224, 0, 14, 31, 62,140,142,142, 14,228,228,228,196,136,217,
+ 18,127,242,136, 42, 41, 51, 2, 58,116,232, 80, 68, 64,106, 55, 98, 32,248,255,178, 44,191,251,224,131, 15, 10,115,231,206, 29,
+ 37,203, 50, 26, 27, 27,177,119,239, 94,212,214,214,162,181,181, 21, 46,151, 11,133,133,133, 40, 44, 44,140, 12, 31, 42,174,203,
+137, 22, 63, 0, 20, 22, 22,206,120,224,129, 7,152,185,115,231,230, 72,146,132,198,198, 70,212,212,212,160,174,174, 46,138,127,
+ 65, 65, 65,132,191, 90,248, 64,122,226, 31,140,134, 16, 85, 90, 70, 2,218,191,127, 63,142, 31, 63,174, 43,160, 76,250,255, 25,
+112,129, 38, 86, 85, 85,225,177,199, 30, 67,109,109, 45, 56,142, 67, 73, 73, 9,138,138,138, 80, 94, 94, 14,158,231,193,243, 60,
+ 4, 65,128,221,110, 7,207,243, 81,121, 72,197,229,209,126,210,129, 36, 73,174,170,170, 42,252,225, 15,127, 64, 93, 93, 29, 88,
+150, 69,105,105, 41,138,139,139, 49,105,210,164,136,216,109, 54, 27,108, 54, 91, 84, 63,128,101, 89, 75,252, 41, 64,235, 2, 77,
+156, 48, 97, 2, 30,125,244,209,168, 11, 48,100,200, 16, 76,158, 60, 25, 28,199,129,231,121,216,108, 54,216,237,246,132,227,255,
+253,237, 2, 1,128,219,237,134,211,233, 68,117,117, 53, 10, 10, 10, 0,244, 77,180, 41,105, 8,130, 16,201, 7,195, 48, 49,147,
+ 96,233,244, 5,210, 69,119,119, 55, 92, 46, 23,230,205,155,135,194,194, 66, 0,177,162,213, 26,129, 94,127,192, 18,191, 57,196,
+148,156, 34,160,121,243,230, 33, 63, 63, 63,170,102, 83,220, 5,165, 22, 85,215, 66,122,174, 68, 42,134,145, 46,156, 78, 39,166,
+ 76,153, 2, 73,146,148, 55, 10, 70,226, 85,210, 82, 12, 89,201,139,194, 61,149,137,175, 76, 27,176,211,233,196,228,201,147,163,
+ 38,185, 20,168, 69,173, 22,191,214, 8, 82, 17,191, 82,153, 13, 54,196,228, 88,239, 2,104,107, 80, 69, 64, 44,203, 70, 4,148,
+169,254, 64,218, 25,226, 56, 8,130, 16, 51,203, 11,244, 93,108, 69,236,138,225,198, 91, 6,145,108, 95, 32, 93, 40, 21,139, 40,
+138, 9, 93,154, 76,138,127,176, 34, 38,231,106, 1,169, 71,119,212, 23,122,229,159,254,131,173,123, 26, 33,245,206, 4, 39,139,
+ 93,175,222,105, 40,172,116,161, 94, 23,163,204, 81,196, 91,162,145,168,230,239,239,142,176,222,186, 30, 61, 49,235,137,215, 18,
+127,242,208, 53, 0,165, 86, 49, 18,208,189, 55, 44, 70,107,167, 15,247, 61,253, 30,182,239,107,140,156,251,238, 19,215, 35, 47,
+215, 17, 21,182,189,203,135,250,195,199,241,228,203,159, 96,219,222,195, 0,226, 15,151,166, 11,181, 47,158,138,128,211, 57,150,
+ 41,104,125,114,189,213,158,153,232,240, 14,118,241, 3, 58, 51,193,132,144,136, 75,160,184, 58,138,127,168, 30,118, 43, 45,206,
+195,143, 46,159, 21,117, 46,167,114,131, 20,129, 20, 23,230, 98,230,148, 83,241,212, 61,203, 48,103,218,105,225, 68,179, 56, 19,
+156,140,128, 51, 41,254, 76, 27,129,130,254, 18,127,188,153,229,175, 50,116, 13,192,172,239, 62,178,124, 72,116,100, 44, 99,120,
+ 30,203, 48,184,254,202,185, 9,211,200, 4,210,173,217, 79,228, 40, 80, 60,119, 71,189, 79,217,159, 41,241, 15, 86,232,182,129,
+137, 46,188,242,219,229,180, 71,157,199, 38, 24, 9,154, 50,254, 20,124,109,210,168,126, 17,191,153,124,100,234, 88,166,196,175,
+ 32,153,149,158,201,134,177,196, 31,141, 24, 3,208, 19,144,217, 81, 27, 51, 35, 65,107,239,253, 94,214,196,175,206,131,154,191,
+ 89, 1, 15, 4,241,171, 97,137, 63,251, 48,108, 1,128,248,190,186,222,133,103,152,248,226,207,102,205,175,199, 63,219,226,207,
+ 84,199, 93, 11,163, 78,176,246,152, 37,254,244, 97,216, 7, 72,228,255,235, 93,124,197, 5, 82,135,189,121,213,203,253, 46,254,
+100, 4, 60,208,196,175,133, 37,254,236, 66,183, 5, 72,217, 5,226,162, 93,160, 64, 72,194,134,173,117,134, 98,202, 22,140, 90,
+176, 76,186, 60,150,248,191, 26,208,237, 3,168, 93,136, 68,174,140, 26,108,239,113, 81,146,113,172,205,141, 63,189,248, 17,122,
+ 2,161,126, 23,127,188, 78,240,201, 32,254,120,162,181,196,159, 89,152,238, 3,152,153,184,154,116,201,111,117, 19,233, 47,241,
+107,249,103, 82,252,153,156,171,136, 7,173, 72, 45,241,103, 23,134, 45, 64, 60, 97, 24,137, 97,247,107,119,129, 97, 24,136,146,
+140,150,214,110, 60,254,183, 15,241,242, 59,219, 7,132,248, 51,213, 17,238, 79, 88,226,207, 62,116,199,239,146, 89,200,166,119,
+158,192,115,168,172, 40,198,138,159, 46,129,195,198,247,187,120,146, 21,183, 37,254,193, 11,221, 22, 64,249, 78, 36,126,173, 40,
+180,199,114,236, 2,230,127,109,124,191,139, 39,211, 46,143, 37,254,175, 46, 12,251, 0,102,196,175,103, 0,218,243, 30,189,235,
+170,126,201,136,154, 67, 38, 93,158,254, 22,191, 26,102,132,109,137, 63, 61, 36,116,129,226,137, 95, 43,142,254, 28,237,137, 7,
+ 75,252,150,248,205, 34, 97, 39, 56,153, 97,208,129, 32,254, 84,133,111,137,127,112, 34,238, 98,184,100,135, 65, 7,130,120,180,
+ 60, 82,237, 11,156,104, 88,226,239, 31,152, 90, 10, 97, 36,126,143, 47, 16,117,174,199, 23, 24, 16,226, 57,153,197,175,119,111,
+174,122,201,179, 37,254,204, 34,169, 97, 80,237,144,225,129,198,182,168,243,234, 15, 31,239, 23,210,241,112, 50,139, 95, 15,137,
+214,251,107,143, 89, 72, 14,166,111,136,209,138,165,177,165, 19, 15, 62, 27,253, 34,145,251,159,252, 23,234, 15, 31,235, 55,242,
+ 70,208, 51, 86, 75,252, 22,244, 96,106, 24, 84, 43,150,111,255,226, 73,124,182,239, 72,204,121, 91,118, 29,196, 55,190,255, 16,
+198,159, 90,138,191,220,255,125, 20, 21,228,102, 61, 3,122, 72,101,236,127,160,193, 18,127,255,192,112, 53,104, 60,255,255,111,
+ 15,253, 40,242,123,160, 33,149, 81,160,129,134,100,110,115,180,144, 30,210,186, 39,120,160,226,100, 22,191, 2, 75,252,253, 3,
+ 93, 21, 91,226, 63,177,176,196,223,127, 48,188, 39,248,100, 20,191, 2, 51, 35, 64, 39, 3, 44,241,103, 31, 9,159, 10,113,178,
+137, 63, 24, 12,162,190,190, 62,102,189, 82,127,136,159,231,249,180,227, 16, 69, 17,117,117,117, 0,250,223, 0, 6,163,145,197,
+ 24, 64, 40, 20, 66,125,125,125,148,224,251, 75,252,233, 10,200,102,179,181,204,153, 51, 39, 43,239,233, 77,134, 67,170,231, 58,
+ 28,142,192,172, 89,179, 78,232,123,122, 29, 14, 71, 32,113,168,175, 14,136,242, 4,101, 0, 56,231,156,115,142, 6, 2,129, 19,
+ 46,160,143, 63,254, 56, 43,111, 90,183, 96, 65,139, 40, 3,176, 96, 97,176, 97,224, 59,245, 22, 44,100, 17,150, 1, 88, 24,212,
+176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168,145,212, 43, 66,122,223, 35,252, 46,128,137, 89,226, 3, 65, 16,
+ 90, 54,110,220,152,149, 97, 80,139,127, 98, 12, 54,254,166, 13, 64,121,137,246,154, 53,107,132,121,243,230, 97,219,182,109,168,
+168,168,128,205,102,139,122,215, 46,128,152,111, 51,191, 9, 33,232,233,233,193,130, 5, 11,178, 50, 15,161,240,239,125, 15,242,
+ 73,203, 95, 41,255,173, 91,183,162,188,188, 60,242,182, 72,189, 39,117,104,103,189, 19,229,203,237,118, 99,209,162, 69,131,170,
+252, 77, 25,128,250, 13,242,243,230,205, 27, 5, 0, 91,182,108, 65, 32, 16, 64, 94, 94, 94,212,139,221,146, 93,138,172, 62,246,
+197, 23, 95, 36,195,221, 52,212,252,231,206,157,123, 82,243, 87,202,255,147, 79, 62,193,196,137, 19, 77,243, 55,147,143, 3, 7,
+ 14,100,157,255, 64, 43,255,132, 6,160, 38, 95, 93, 93, 61, 74,217,207,178, 44,100,213, 91, 34, 83,185, 9,165, 63,238,202, 74,
+196, 95,153, 8, 28,232,252, 87,175, 94,109, 88,254,137, 4, 98, 70, 68, 39,170,252, 21,156,168,242,143,107, 0,170,194,183, 87,
+ 87, 87,143, 84, 31, 83, 22, 78, 81, 74, 51, 70, 62,211, 23,192, 12,127, 32,115,133,159, 45,254,171, 86,173,178,207,159, 63, 63,
+134,191,146, 94, 38,132,159,141,167, 94,159, 12,250, 49, 28, 5, 82,147,215, 22,190,146,129, 84, 11,190, 63,150, 41,127, 85,248,
+175, 90,181,202,190, 96,193,130, 24,254,106,193,102, 74,252,131,177,252,117, 91,128, 68,228,149, 12, 24, 93,132,116,158,199,153,
+ 9,124, 85,248, 27,137, 31, 8, 47,149, 78,100, 4,169,184, 69,153,228, 31,175,252, 95,127,253,117, 20, 22, 22, 70, 58,193,122,
+121, 81,126,107,191,149,223, 12,195,224,214, 91,111, 77,171,252, 99, 12, 64,227,179,233,146, 7, 0, 65, 16, 98,246,165, 42,158,
+ 76, 54,191, 95, 21,254,171, 87,175,182, 25,137, 7, 0,108,182,190, 85,211,201, 26,113,188,227,153,226,159,168,252,151, 46, 93,
+138, 83, 78, 57, 5,121,121,121, 16, 4, 1, 60,207,199,140,102,245, 71,249, 71, 25,128, 81,135, 5, 0, 2,129, 0, 14, 30, 60,
+136,195,135, 15,163,189,189, 29, 57, 57, 57,113,239, 28, 75,150,124, 38, 46, 64, 42,252, 91, 90, 90, 34, 15,163,170,172,172, 76,
+200,191,190,190, 30, 64,216,119,157, 48, 97, 66,191,241,247,251,253, 56,120,240, 32, 14, 30, 60,136,214,214, 86, 56, 28,142,148,
+ 90,169, 68,199,179,197,223,227,241, 96,199,142, 29,216,190,125, 59,246,236,217, 3,183,219, 13,167,211, 9, 65, 16, 34,163, 64,
+102,107,126,117, 11,240,171, 95,253, 42, 45,254, 81, 6, 32,203,242,187,189,227,180,163,100, 89, 70, 99, 99, 35,246,237,219,135,
+253,251,247,163,173,173, 13, 46,151, 11, 67,134, 12, 65, 97, 97, 33, 92, 46, 87,100,252, 54,149,103,240, 24,237, 79, 7,169,240,
+223,182,109, 27, 46,187,236, 50,188,241,198, 27, 16, 4, 33,174,112, 8, 33,216,184,113, 35,174,189,246, 90, 60,243,204, 51, 56,
+253,244,211, 51,206,191,119,156,127,148, 44,203,104,104,104,192,222,189,123,177,127,255,126, 28, 59,118,204,176,252, 7,130,248,
+147, 41,255, 69,139, 22,161,160,160, 0, 46,151, 11, 57, 57, 57,176,217,108,145, 22,160,191,245,163,117,129, 38, 86, 85, 85,225,
+177,199, 30, 67, 93, 93, 29, 88,150, 69, 73, 73, 9,138,139,139, 81, 81, 81, 1, 65, 16,192,178, 44,108, 54, 27,236,118,123,164,
+230, 76,165,179,146,165, 38, 56,105,254,219,183,111,199,103,159,125, 6, 66, 8, 74, 74, 74,162,120,168,239,136, 83,190, 63,249,
+228, 19,108,220,184, 17, 0,240,195, 31,254, 48, 43,252, 31,125,244, 81,212,214,214,130,101, 89, 12, 27, 54, 12, 69, 69, 69,152,
+ 52,105, 18,120,158, 7,199,113, 17,254,202,118, 38,196,159,237,242,255,248,227,143, 35, 2,231, 56, 14, 60,207, 71, 68,175,180,
+ 0, 64,252, 26, 95,123,140, 16,130,219,111,191, 61,163, 6, 0,143,199, 3,151,203,133,234,234,106, 20, 20, 20,196, 36,200, 48,
+ 76,132,188, 50, 11,169,231,187,165,218, 34,164,139,100,249,111,221,186, 53, 50, 23,176,105,211, 38, 0, 97,247, 70,249,104,183,
+213,251,178,193,223,237,118,195,225,112, 96,206,156, 57,200,207,207,143, 49, 72,165,188, 5, 65,136, 24,180,153, 73, 48, 51,198,
+145,205,242,255,233, 79,127, 26, 83,254,118,187,221,208,255,239, 47,253,196, 24, 64, 78, 78, 14, 38, 79,158, 12, 73,146, 34, 23,
+ 89,129,146,176, 98,193, 44,203,130,231,249, 24, 23,232, 68,118, 36,147,229, 95, 95, 95,143,134,134, 6, 12, 31, 62,220,116, 26,
+ 30,143, 7,185,185,185, 89,227, 63,105,210,164,168, 73, 58,109,139,148,168,252, 83, 17,127,134, 90, 0,195,242,127,226,137, 39,
+162,106,112,181, 49,107,107,251, 68, 53,191,250,247, 29,119,220,145, 86,249,199, 24,128, 98,157,138,107,163, 71, 64,177, 86,245,
+183,182, 48, 37, 89, 66,243,177, 6, 52, 30, 61,130,150,214,163,104,235,108, 69, 87,119, 7,124, 61, 94,252,230, 23,107,178, 34,
+158, 84,248, 3,136,136,127,229,202,149, 96, 24, 6,179,102,205, 66, 85, 85, 21,138,138,138,208,214,214,134,189,123,247, 98,227,
+198,141,144,101, 25, 43, 87,174, 68,110,110,110, 84,124,153,228,207,113, 28, 4, 65,128, 44,203, 81,252,245,202, 75,237,126,206,
+152, 49, 3, 71,143, 30, 5, 0,148,150,150, 98,203,150, 45, 9, 13, 67,207, 56,210,133, 81,249,255,252,231, 63, 79, 74, 63,253,
+ 85,121,198, 24,128,226,147, 17, 66,116,155,121, 45, 89,183,183, 27,141, 71, 15,163,165,181, 25,173,157,199,209,217,213, 1,143,
+183, 27, 61, 1, 31,186, 61,221,232,118,119,161,203,221,137,110, 79, 23,186,221, 93,232,118,119,226,158, 95, 62,152,181, 11,144,
+ 44,127, 53, 24,134,193,213, 87, 95,141,202,202,202,200,190,178,178, 50,148,149,149,225,180,211, 78,195,186,117,235,162,194,103,
+131,191,250,241,232, 70,110,150,242,173,124, 58, 59, 59, 81, 89, 89,137,125,251,246, 1, 0, 22, 45, 90,132,238,238,110, 20, 21,
+ 21,245,171,248, 1,227,242,127,228,145, 71,162,202,220,168,118,191,229,150, 91,146,106,193,210,205, 67,140, 1,168,107, 70, 51,
+ 68, 30,122,234,183, 81, 2,239,114,119,162,219,221, 5,143,207, 13, 89,150,225,114,230,225,212,202, 49,152, 50, 97, 26, 70,143,
+ 28,139, 85,127,252,117,220,248,210, 69,178,252, 1,160,165,165, 5, 37, 37, 37,152, 53,107, 86,148,248,149,139, 8, 0,149,149,
+149,152, 53,107, 22, 0,160,167,167, 7, 14,135, 35, 43,252,181, 34, 81,127,100, 89,198, 77, 55,221,132,166,166, 38,252,230, 55,
+191,193,196,137, 19, 65, 8, 65,103,103, 39,102,206,156,137, 35, 71,142, 68, 90,131,206,206, 78, 20, 23, 23,131, 16,130,221,187,
+119,227,150, 91,110,193,136, 17, 35,240,248,227,143, 71,220, 38, 61, 65,165, 11,163,242,191,233,166,155, 50, 54, 82,152, 73,253,
+196,125, 81,182, 25, 34,127,123,243, 57, 48, 12,131,138,146, 83,112,106,229, 24, 76,159,114, 14, 70,143, 24,131,209, 35,199, 98,
+204,200,113, 24, 86, 92, 26, 21, 94, 49,128,108, 93,128,100,249, 3, 64, 73, 73,120, 5,109, 85, 85, 85, 76, 28,106, 40,199, 29,
+ 14, 71, 76,252,153, 52, 0, 61,254,132, 16,220,124,243,205,152, 54,109, 26,254,231,127,254, 7,191,250,213,175, 80, 90, 90,138,
+101,203,150,225,175,127,253, 43,102,204,152, 1,143,199, 3,134, 97, 80, 85, 85,133,103,159,125, 22,203,150, 45,195,115,207, 61,
+ 7, 73,146,176,110,221, 58,188,242,202, 43,184,254,250,235,241,244,211, 79, 27,138, 42, 19, 32, 36,188, 50, 51, 47, 47, 15,165,
+165,225,165,249,253, 33,254,140, 24,128,222, 5, 72,212,235,222,245, 78, 3,108,130,205, 52,193,108,139, 63, 89,254, 10,138,138,
+138, 34,191,181, 29,104,237,113,117,252,153,228,175,196,171, 23,127,115,115, 51, 46,190,248, 98,200,178,140, 39,159,124, 18,235,
+215,175,199,221,119,223,141,229,203,151,227,130, 11, 46,136, 12,231, 94,124,241,197,200,203,203,195,186,117,235,112,253,245,215,
+163,184,184, 24, 94,175, 23, 23, 93,116, 17, 94,127,253,117, 67, 81,101,210,128,135, 14, 29,138,138,138, 10, 4,131, 65,200,178,
+156, 49,129,103,186,242, 76,216, 2,152,233,120,152, 21,191, 81,211,158, 73,241,164,194,191,173,173, 45,210,225, 45, 43, 43, 51,
+140,183,173, 45,252, 70,156, 80, 40, 4,158,231,179,194, 95,207,128, 21,190,247,220,115, 15,110,187,237, 54, 60,245,212, 83,248,
+248,227,143, 49,121,242,100,188,246,218,107,104,106,106,194,230,205,155,225,247,251, 97,183,219,177,111,223, 62,156,126,250,233,
+152, 62,125, 58, 90, 90, 90, 80, 83, 83,131,113,227,198,225,206, 59,239,196,154, 53,107,116,203, 67,175, 66, 72, 39, 15,133,133,
+133, 81,226,255,253,239,127, 31, 85,169,104,243,169,253, 54,179,143, 97, 24,220,125,247,221,105,149,127, 92, 3, 48,211, 52,169,
+201,153, 21, 92, 54,197,159, 10,127,165,102,223,187,119,111,196, 0,212, 92,149,126,192,222,189,123, 1,244, 61,194, 49,219,252,
+181,124,171,170,170, 48,124,248,112,188,247,222,123, 56,243,204, 51,177,107,215, 46,236,221,187, 23, 53, 53, 53,120,251,237,183,
+ 81, 95, 95, 15,150,101, 49,109,218, 52,124,247,187,223,197,184,113,227,224,245,122, 49,100,200, 16, 28, 57,114, 4, 46,151, 11,
+ 83,166, 76, 73,120,125, 50,197, 95, 93,243,223,116,211, 77,105,213,238,217,154,193, 54,124, 58,180,242, 59, 17, 17,117,184, 84,
+ 12, 38,211, 72,133,191,130,141, 27, 55,226,180,211, 78, 67,101,101, 37,180, 79,204, 59,116,232, 80,100, 6, 88,157, 86, 54, 16,
+207,128,175,188,242, 74,172, 92,185, 18,175,190,250, 42,246,238,221,139, 87, 95,125, 21, 27, 54,108,192, 93,119,221,133, 25, 51,
+102, 0, 0, 54,111,222,140, 95,252,226, 23,184,241,198, 27,113,209, 69, 23,129,231,121,220,113,199, 29,184,225,134, 27,250, 69,
+252,122,229,255,208, 67, 15, 69,141, 10,169,243,153,108,205,175,109, 1,210,129,169, 62, 64, 60,129, 43, 68,204, 90,180, 54,141,
+ 76, 35, 21,254,202,133,145,101, 25,235,214,173,139, 59, 15,160, 14,159, 77,254,234, 15,165, 20, 93, 93, 93,232,232,232,192,243,
+207, 63,143,229,203,151,163,185,185, 25, 53, 53, 53,216,176, 97, 3, 54,108,216, 16, 53,107, 92, 89, 89,137,133, 11, 23, 98,246,
+236,217,152, 59,119, 46, 74, 74, 74,112,222,121,231, 97,221,186,117, 88,190,124, 57,138,139,139, 81, 88, 88,168, 59, 79,144, 41,
+254,218,188,220,124,243,205, 25,237,236,102,170,252,211, 30, 5,210,134, 51, 35,184,108,137, 39, 29,254, 64,120, 34, 44,153,248,
+179, 5,109, 13, 58,115,230, 76,140, 28, 57, 18, 51,102,204,192,236,217,179,177,120,241, 98,108,217,178, 5,239,190,251, 46,238,
+186,235,174, 40,241, 43,159,130,130, 2,172, 88,177, 2,207, 63,255, 60,238,188,243, 78, 44, 88,176, 0,205,205,205,120,232,161,
+135,240,217,103,159,161,173,173, 13, 7, 14, 28,200,138,168,244,202,255,193, 7, 31, 52, 60,174,221,103,230,152,242,157,241, 22,
+ 64,143, 68, 42,157,218,108,142,244, 36, 66,178,252, 7, 18,244, 42,150,163, 71,143,162,166,166, 6, 13, 13, 13,240,120, 60,216,
+185,115,103,228, 61, 2, 51,102,204, 48, 44,251, 89,179,102,225,209, 71, 31,197,170, 85,171,208,216,216,136,203, 46,187, 12,130,
+ 32,192,233,116, 98,216,176, 97, 89,187, 62,122,229,255,203, 95,254,114, 64,213,252, 10,226,186, 64,102, 8,170,207,233,111,242,
+122, 72,133,191, 50,177,101,118, 41, 68, 54, 93, 32, 37, 15,218,188, 40,219,138,219, 98,183,219,117, 39,156,180,253, 45,189, 69,
+114,218,178,202,180,248,245,202,255,129, 7, 30,208, 13,147, 74,205,175,142, 39, 43, 45,128,150,124, 60,129,171, 73, 39, 90,119,
+210,159, 72,134,191, 50,177,101,118, 41, 68,182,197,175, 45,215,210,210, 82, 44, 92,184, 16, 51,103,206, 68, 85, 85, 21, 46,190,
+248, 98,212,215,215, 99,250,244,233,216,188,121,115,228, 70, 30,109,158, 55,109,218,132, 37, 75,150,160,167,167, 7,185,185,185,
+120,246,217,103, 81, 91, 91,139, 93,187,118,161,162,162, 34,171,215, 70,203, 69,189,196, 33,149,190, 64,182,202, 60,225,107, 82,
+ 19,145, 4,140,199,219,119,239,223,129,215,223,121, 9, 71, 91,143,162,161,233, 16, 10,242, 11,179,146,137,116,249, 43, 80, 47,
+133, 80,142,233, 45,133,200, 54,180, 6,176,117,235, 86,116,119,119,163,163,163, 3,107,215,174,133,205,102,195,172, 89,179,112,
+245,213, 87,227,191,255,251,191,177,112,225, 66, 20, 20, 20, 68,229,203,237,118, 99,229,202,149,248,244,211, 79, 17, 12, 6,241,
+218,107,175,161,179,179, 19, 43, 86,172, 64, 81, 81, 17,134, 12, 25,146, 85,241,239,222,189, 27, 46,151, 11,163, 71,143, 6, 0,
+172, 94,189, 58, 38,111,122,121,141, 23, 70,175,156,178, 54, 10,100,214, 66,149, 12,171,247, 73,178,132,255,251,251, 51,232,246,
+116,193,233,116,193,223,112, 0, 71,154, 14, 97,243,206, 79,178,222, 18,164,194, 95,153, 64, 82, 47,133, 80, 47, 69, 86,126, 43,
+199,179,237, 2,169,243,161,112, 30, 50,100, 8,138,138,138,240,157,239,124, 7,183,221,118, 27, 46,188,240, 66,140, 27, 55, 14,
+183,220,114, 11,102,207,158,141, 21, 43, 86, 68, 12,116,211,166, 77, 88,185,114, 37,254,252,231, 63, 35, 55, 55, 23, 62,159, 15,
+207, 62,251, 44,214,174, 93,139,177, 99,199,102,181, 86, 85,226, 45, 46, 46, 70,121,121, 57, 24,134, 1,165, 20,183,222,122,235,
+128,170,249, 21, 36,124, 73,158,154,224,222,186,207,241,214,250,215,209,210,214,130,134,166, 67,200,207,139,189,225,132, 16,130,
+255,125,234,126, 52, 30, 61,130,242,146, 10,116,117,119,162,179,187, 3,129, 96, 0, 84,150, 49,180, 40,251,111, 96, 74,166,128,
+ 1,192,110,183, 3,208, 95,234,160,158, 15, 80,142,103,243,162, 36,226,189,110,221, 58,252,236,103, 63, 67, 71, 71, 7,218,219,
+219,177,100,201, 18,204,153, 51, 7,207, 63,255, 60,254,240,135, 63,128,101, 89, 44, 89,178, 4,159,126,250, 41,114,115,115,209,
+208,208, 0,167,211,137,101,203,150,225,201, 39,159,196,195, 15, 63,156,117, 97, 17, 66, 48,124,248,240,136,248, 25,134,193,170,
+ 85,171, 98,102,130,213,249,213,238, 83,127,199, 75, 39,235, 45, 0,195, 48,144,100, 9, 47,255,243,255,224,243,123,145,151, 87,
+128, 35,205,135,209,120,244, 8,182,238,250, 84, 87, 84,127,127,235, 5,216, 4, 27, 14, 28,174,135,215,231,193,241,246, 99,232,
+114,119, 66,148, 68, 44, 93,242,221,180, 8, 39, 66, 50,226,215,142, 2,169,151, 66,104,197,175, 28,239, 15, 24,241,222,189,123,
+ 55, 26, 26, 26,112,238,185,231, 98,255,254,253, 24, 62,124, 56,242,242,242,224,112, 56,112,251,237,183,227,222,123,239, 5, 33,
+225,103,100, 6, 2, 1,244,244,244,192,233,116,162,167,167, 7, 87, 92,113, 5, 46,189,244, 82,236,216,177, 3, 83,167, 78,205,
+ 42,119, 69,184,234,135, 94,221,118,219,109,166,175, 77,127,142,206,197,109, 1, 20,130,143, 63,247,123,180,180, 54, 27,214,232,
+ 90,242, 46,103, 30,246,214,237, 2,207,241, 16, 37, 17,161, 80, 16, 0,240,203, 31,223,141,155,127,116, 71,214, 51,101, 86,252,
+202,133, 82,214,246,168,151, 66, 40,241, 0,136, 89, 10,145,237,137, 48, 35,222,183,222,122, 43,158,126,250,105,184,221,110,140,
+ 25, 51, 6,111,189,245, 22, 30,123,236, 49, 92,119,221,117, 88,188,120, 49, 26, 27, 27,193, 48, 12, 28, 14, 7, 94,127,253,117,
+ 60,243,204, 51, 88,182,108, 25,174,184,226, 10,240, 60,143, 21, 43, 86,224,134, 27,110,192, 71, 31,125,148, 21,238,234, 60,104,
+243,113,255,253,247,155, 90, 11,148, 76,185,102,165, 5, 80, 34, 86,147,127,253,221,151, 96,183,217,117,107,244,203, 47,248, 78,
+140,229,254,233,254,231,176, 98,205, 47,209,208,116, 24, 78,103, 46, 10,243,135,224,198, 31,252, 10,103, 78, 60, 59, 45,178,102,
+ 97, 86,252, 74, 97, 43,107,123,204, 46,133,200,182, 95,106,196,123,196,136, 17,120,245,213, 87,177,120,241, 98,252,232, 71, 63,
+194,232,209,163,241,200, 35,143, 96,221,186,117,104,107,107,195,210,165, 75, 65, 8,193, 51,207, 60,131,174,174, 46,172, 93,187,
+ 22, 79, 62,249, 36, 46,185,228, 18,172, 92,185, 18,239,188,243, 78,212, 8, 87, 54,249,107,203, 95,253,248,146,129, 80,243, 43,
+ 48,245,166,248,220, 28, 23,106,190,216, 19, 83,163,223,188,252, 78,220,180,252,246, 24,242,163, 78, 25,141,117,191,127,165,255,
+114,145,128,127,188,130, 87,195,236, 82,136,108,243, 55,250, 60,254,248,227,184,254,250,235,241,198, 27,111, 96,205,154, 53,145,
+133,109,203,151, 47,199,154, 53,107, 34,143,117,169,171,171,195,138, 21, 43, 48,118,236, 88, 60,252,240,195,216,177, 99, 7,110,
+184,225, 6, 84, 86, 86, 98,237,218,181, 89,231,175, 87,206,247,221,119, 95, 84, 24,237,119, 42,149, 74, 86, 91, 0,245,231,225,
+255,121, 10,191,125,228, 14, 52, 29,109,128,211,153,139,130,188, 66,252,252,251,183,225,204,137,103,159, 48,203,141, 7,179,226,
+ 87,187, 56,132, 16,211, 75, 33,250, 99, 34, 76,143, 63,203,178,120,234,169,167, 98,142, 21, 23, 23, 99,199,142, 29,200,201,201,
+ 1, 0,236,218,181, 43,234,118,200,169, 83,167,102,221,237, 73,196, 95,185,121,125,160,212,252, 10, 76, 13,131,158, 58,226, 52,
+ 60,253,192,223, 6, 28,121, 61, 36, 35,126,109, 77,148, 76, 26,217, 68, 50,252, 9, 9, 15,145,182,183,183, 99,232,208,161, 0,
+128,138,138,138,172,142,243, 39,195, 93,225,255,187,223,253, 46, 42,140, 58,108, 50, 88,177, 98, 69, 70,249, 38,108, 1,146, 25,
+ 69, 25, 40, 72,149,191,217,165, 16, 3,129,187, 54,140,222,194,182,254, 22,127,188, 60,220,121,231,157, 3, 82, 63,166, 70,129,
+140, 10,125,160, 34, 89,254,138, 75, 99,118, 41, 68,127,184, 64,201,136, 63, 94,235,118, 34,112, 50,233, 39,198, 4, 79, 38,242,
+122, 72,133,191,178,173, 93, 10,161, 14,167, 94, 10,145,237,252, 91,226, 55,135, 95,255,250,215, 16, 69, 49,173, 56,146, 90, 11,
+ 52,208,197,175, 32, 85,254,102,151, 66,100, 19,233, 10,127, 32, 92,159,254,210, 79, 38,250, 3,134, 45,192,201, 42,254, 84,248,
+ 43, 2, 55,187, 20, 66, 59, 71,144,105,156,204,226, 63,217,244, 19,211, 2,132, 66, 33,212,215,215, 71, 21,104,127,145, 87, 38,
+164,210, 65, 42,252,149, 99,218,167, 66, 40,190,190, 34,120,101, 41,132, 18,190,182,182, 54,227,252,125, 62, 31,190,248,226,139,
+ 24, 81,199,187,187, 46, 83,226, 63, 81,229,159, 41,164,194,159,168,107,179,115,206, 57,231,104, 32, 16,200,254,106,181, 56,176,
+217,108, 45, 31,127,252,113, 74, 47,106, 62,217,249,207,154, 53,235,104, 48, 24, 60,105,249,159,140,229, 79,178,221,156, 91,176,
+ 48,144,113,226, 7, 98, 45, 88, 56,129,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 65, 13,
+195,199,162, 88,176,144,105,244,190, 71,248, 93, 0, 19,179,149,134, 32, 8, 45, 27, 55,110, 52, 61, 12,106, 25,128,133,126,129,
+242, 18,237,222,247, 32, 99,235,214,173,168,168,168,136, 60,224, 75,153, 45, 86,160,158, 56, 83, 79,250,169,161,221,239,243,249,
+240,245,175,127, 61,169,121, 8,203, 0, 44,100, 29,234, 55,200,207,155, 55,111, 20, 0,108,217,178, 5,126,191, 31,121,121,121,
+186,175, 73, 53,187, 4, 68,125,236,203, 47,191, 76,154, 27,231,116, 58, 86, 6, 2,193, 59, 36, 73, 54,101, 12,132,144, 32,165,
+116, 37,165,244,222,164, 83,203, 2, 28, 14, 71,117, 48, 24,156, 35,203,178,217,254,140, 4, 96, 61,165,180,255,110,145,138,131,
+147,157,127, 34, 40,226, 95,189,122,181,173,186,186,122,148,178,159, 97,152,200,251, 3,128,228,111,100, 50, 58,158, 44,152, 64,
+ 32,120, 71,205,190, 93, 92, 40,232,131,153, 79,125,109, 77, 8, 64,102,111,203, 73, 3,193, 96,112,206,254,253,187,152, 80,168,
+ 7,102, 62,117,117,251,101, 0,213, 39,154,183,130,147,157,127, 60, 40,226, 95,181,106,149,125,254,252,249,163,212,199,148, 55,
+ 73, 2,201,139, 95,121, 62,106, 38, 22, 2,114,146, 36,115,149, 35, 71,161,199,219, 14, 89,138, 94, 91,173,183, 72,162,172,116,
+200, 81, 0,163, 83, 74, 45, 11,144,101,153, 25, 57,242, 84,248, 61,237,144,229,104,254,122,183,176, 87,148, 22,122, 0,244,207,
+ 51, 26, 77,224,100,231,111, 4,181,248, 23, 44, 88, 48, 82,123, 92,241,251,227,189, 10, 54,149, 86, 33, 89,244,190,144, 22,144,
+ 36, 49,230, 2, 64,103,157,144, 36, 83, 41,233, 84,178, 13, 25, 16,101, 29,254, 58, 79,113,144, 56, 71,246, 31,237,144, 44, 78,
+118,254, 26, 36, 18, 63, 0, 30, 79, 27,159, 0, 0, 26, 61, 73, 68, 65, 84,195, 55,196,167, 42,126,165, 85, 72, 22,170, 51,104,
+ 88,240,189, 31, 74, 41,104,120,111,248, 67,195,203,131, 41,149, 56, 0,126, 66, 72, 69,210,169,101, 21,114, 88, 48,234,143,126,
+ 56, 6,128, 72, 8,113,245, 39,187,196, 56,217,249,135,161,246,249,141,196, 15, 0, 54,155, 45,242, 59, 19,226, 79,171, 5,232,
+238,108,193,246, 77, 47,161,199,219, 5, 0,160,138,243, 67, 85,110, 80,239,111,150, 99,135,254,242,151, 55,250, 31,124,240,225,
+ 67, 28,199, 70,142,169,130, 17,237, 78, 74, 17,195,140, 82, 26,181,143,101, 24,209,102,231,126,235,245, 6, 86, 38,155,137,238,
+206,163,216,190,233, 37,248,124, 93,189,123,228,200,151, 86, 70, 12,225,156,183,220,114,147,248,192, 3,191,191, 81,121,190,190,
+ 62,250,206,148,229, 88,254, 90, 48, 12, 35, 11, 2,243, 97, 79, 79,104,125, 82,228,113,242,243, 87,160, 30,237, 81,119,120, 1,
+ 32, 16, 8,224,224,193,131, 56,124,248, 48,218,218,218, 12, 95, 52,158,110, 71, 56, 89,112, 0,192,178, 4,185, 78, 59, 56, 18,
+236,149, 45, 85,137,159,106, 12,129,186,150,127,111, 9,126,113,227, 79, 33, 83, 25, 20, 20,164,183,124, 9,244,198,110, 17,181,
+143, 70,142,133, 35, 85,194, 29, 58,116,136, 59,123,198,185,119, 0, 88,153,108, 38, 24,142, 65,110,174, 29, 28, 19,236,187,236,
+154, 31,170, 77,225,135,215, 44,193,205, 55,254,180,247, 65, 87, 50,148,134, 48,170, 1,101,244,246,169,127,200,189,191,194, 59,
+ 15, 30, 62,200,156,253,181,115,231, 0, 88, 63,216,248, 71,168,201,242,187, 15, 62,248,160, 48,119,238,220, 81,178, 44,163,177,
+177, 17,123,247,238, 69,109,109, 45, 90, 91, 91,225,114,185, 80, 88, 88,136,194,194, 66,184, 92, 46,112, 28,103,216,161,237, 15,
+241, 3,189, 6, 32,138, 50,186,186,124,240,122, 61,145, 3,234,251, 4,162,238, 25,160, 64,199,230,183, 96,119,228,130, 48, 28,
+ 34,102,162,106, 42,212, 61,135,152,251, 13,148,198,133,246,109, 80, 0,237,237, 29,144,101,115, 67,177, 90,136,162,140,206, 78,
+ 31,124, 62,119,100, 95,180, 7, 33, 71,253,220,177,249, 95,176,231,184, 0,134,131,186,182,213, 9, 29,179,165, 19, 28, 0,208,
+222,222,134, 36,134, 50,191, 82,252, 85,152, 88, 85, 85,133,199, 30,123, 12,181,181,181,224, 56, 14, 37, 37, 37, 40, 42, 42, 66,
+121,121, 57,120,158, 7,207,243, 16, 4, 1,118,187, 29, 60,207, 71, 70,131, 50,213, 17, 78, 22,189, 45, 0,131, 28,167, 13, 12,
+ 9, 63, 38, 60, 92, 57,107,221, 32, 26,221, 39,166, 34, 40,148, 78,155, 90,244,209,225,162, 13,169, 55, 66,213, 87,164, 37,160,
+169,223,221,207, 49, 12,114,114,237, 96,152,240,155, 94,244,175,185,164,217, 31,130,140, 16,116, 79,136, 58, 89,229, 74,168,118,
+ 51,170, 42, 89, 6, 0,109, 7, 54, 9,156,236,252,213,112,187,221,112, 58,157,168,174,174, 70, 65, 65,223,227,243,129,190, 91,
+ 35, 5, 65, 0,207,243,176,217,108,225,167,143,119, 31, 71,221,163,223,131,167,177, 30,142,226, 50,148,159,127, 61,202,191,241,
+253,148, 12, 35, 89,244,182, 0, 18,186,187,125,240,245,182, 0, 17,205,210,228,133, 29,251, 91, 57,187,239, 95,244,254,176, 1,
+120,188, 61, 73,147, 87, 32,138, 98,152,191,199, 29,125, 32,202,135,214,212,139, 49,154,145, 13,246,171,142,246,253,139,217,239,
+241,249,147, 35,173,194,201,206, 95, 13,167,211,137, 41, 83,166, 64,146,164,168, 39,107, 40,223, 12,195,128,227, 56,240, 60, 15,
+134, 97,192,243, 60, 26, 63,120, 14,249,104,197,156,165,231,195,231, 13,226,179,183, 31,129,231,192,103, 24,251,195,255, 5,195,
+ 11, 73,181, 10,201,130, 3, 0,134,101,224,204,177,129,129,195,208,245,209,186, 44,138,138, 99, 92, 31,170,218,210, 49,152,168,
+115, 85,255, 66,161, 16, 82, 5,195, 49,200,205, 17,192, 32,199,176,198, 83, 95,124,125,239, 66,142,173, 71,163,220,138, 88, 31,
+ 67,157,146, 40, 6, 83, 96, 30,198,201,206, 95, 13,142,227, 32, 8, 66,204, 44, 47,128,200, 75,253, 20,191, 95, 89,254, 48,108,
+230, 37,216,253,159,167, 49,188,169, 1,195, 38,156,141,217, 23,148, 96,231, 71,159, 98,231,175, 23,225,140, 91, 95,132,189, 96,
+168,233,190, 64,210,124, 1, 64, 18, 37,116,187,125,240,122, 60, 26,161, 70,254,105,106,255,222,111, 3,145,171, 3, 81,221,237,
+232, 52, 40, 40,220,105,181, 0, 50,186,187,125,240,120, 60,136, 18,137, 81,109, 24,219,211,212,236,215, 57, 57, 74, 52,177,181,
+168,199,151,186,128, 78,118,254,106,112, 28, 7,150,101,193,178,108,212, 19,247,244,196,170, 24, 66,238, 41, 19, 48,241,182,151,
+177,125,245, 82, 76, 12, 2,195,167,205,195,212,111,124, 3, 95,110,219,140,109,183,205,193,153,119,190,134,220, 17, 19,178, 55,
+ 10,196,176, 12,114, 28, 54, 64,238,237, 3, 68,185, 41,250, 46, 11,160,105, 33,194, 59, 84,191, 35,161,117,126,107,226, 1, 69,
+ 48,152, 70, 11,192, 48,200,201,177,171,248,135,235,187, 79,183,212, 98,195,166,122,120, 60, 62,248,253, 65,248,131,193,240,183,
+ 63,136, 96,239,239, 76,162,247, 98,232, 46, 19,225, 56, 78,158, 50,101,194,182, 45, 91, 62,255,231, 87,141,191, 26,106, 95, 92,
+ 45, 80, 26, 10,224,240, 95,110, 69,247,190,143, 32, 5, 2,160, 84, 14,187,216,178,220,231, 42, 49, 12, 62,223,186, 31,108,193,
+112,148,143,159,136, 83,207,154, 1, 87, 81, 33,182,221,125, 62, 78,255,217,159, 49,236,236, 69,113,221,161, 84, 16,105, 1,186,
+220, 62,120,221, 94, 0,177, 53,187,161,176,161,250,173,221, 79,181, 34,143,236, 84,197,213, 23,222,227, 73,221, 7,149, 69, 17,
+157,221, 62,248, 60,225, 62,140, 82,123,110,216, 88,131, 23, 94,252, 59,138,139,139, 83,142, 59, 83, 56,120,240, 48,115,198,228,
+179,167, 1,136, 17, 80,182,249,203,178, 72, 24,134,163,122,251, 1, 64,239, 88, 50,252,213, 80,139, 81, 45,210,230,183,254,136,
+ 92,127, 19,166, 93,122, 1, 88, 65, 0, 97,121, 16,150, 3, 97,194, 31, 48, 12, 64, 24, 0, 4,224,108,128,232, 7, 66, 62, 12,
+ 29, 53, 22,179,243,139,240,233,159,254, 11,222, 35,215, 99,244,183,110,201,252, 40, 16,195, 50,112, 58, 4, 16,217, 22, 37,230,
+237,159,127,137, 15, 55,214,192,219, 19, 64, 48, 40, 34, 16, 8, 34, 16, 20, 17, 12,134, 16, 8,132,194,223, 65, 17,146,148,153,
+213, 17, 12,195,200,132, 16,221,139, 65, 8,233,161,148,222, 65, 41,125, 40,230, 60,197,135,150,237, 81,126, 45, 39,112, 40, 46,
+ 46, 70,231,177,154,164,125,220, 96, 48,196,132,164, 16, 3, 0, 60,203,203,130,192,199, 25,106, 73, 12, 95,103, 43, 68, 81,212,
+ 29,166, 72,200,191,181, 22,162,104,190,130,144,101,145,136, 34, 37, 84, 18, 73, 80, 18, 25, 42,202,132,112, 12, 21, 88, 78, 38,
+ 44,215, 91,247,136,164,167, 39,200, 50, 0,108, 54, 65,226,109,188, 28,207, 16,124,221,198,252,181,208, 19,166, 28,236,129,195,
+233, 0, 79,253, 32,162, 8, 80, 30,144,121,128, 97, 65,249, 28, 32, 20, 8, 15,235, 18, 6, 8,249, 0, 42, 3,172, 0,136,126,
+ 56,243,243, 49,231,242, 75,176,245,173,191,192,115,112, 23,206,188,229, 57, 16, 18,107, 4, 41,143, 2, 73,162, 4,183,167, 7,
+ 30,183, 55,202, 0, 62,217, 82,135,255,247,194,203,253, 89,131, 26,230,160,161,161,193, 81,117,250, 89,247, 3,136, 49, 0, 81,
+148,209,237,241,194,211,237,137, 62, 32, 43,199,253, 16,131, 62, 83, 4,100, 89, 36, 62, 95,128,235,234,236,180,185,189, 94,129,
+ 16, 66,115,115, 93,193,130,252,188,128,195, 33, 72,102,106, 75, 61, 4,227,164,159,144,127,208,103,202, 0,100, 89, 38,162, 36,
+ 17,159,183,135,243,122,220,130,183,199,207, 5,131, 1, 78, 18, 69,134,229, 56, 89, 16,108,162,195, 97, 23, 57,150,165, 61, 61,
+ 62,174,219,237,177, 49,132,208,252,188,188, 64, 81,241,144,158,156, 28,135,104,148,191,120,252,213,208,186, 64,202,167,100,254,
+213, 56,248,204,141,216,191,237, 95, 80,207, 75, 51, 44,143,170, 69, 87, 98,196,240, 92, 48,160, 0,219, 59, 21, 36,137,136, 44,
+ 32,144, 2,224, 65, 49, 99,201,133,248,236,189,247,176,247,137,155,113,198,245,255,155,182,248, 1,165, 5, 96, 24, 56, 28, 2,
+100,201, 22,229,162, 8,130,128,226,162, 98,180,183,236,131,164,115, 1, 82, 82, 66,178,177,244, 30, 14,184, 61, 8,137,162,238,
+179,239, 24,134, 65,142,221, 6, 89,180, 71,237,183,219, 5, 0, 50,100, 89,214, 27, 35,137,129, 40,138,196,231,243,241, 45, 71,
+143, 59,119,236,220, 87,242,215,151,255, 51,213,225,176, 5, 47, 94, 50,123,247,148,137, 19, 90, 74, 74,135,122,115,114,114, 66,
+ 28,151,138, 17, 24,167, 31,159,127,239,185,178, 94,247, 85, 21,187, 28,174,209, 59, 59, 58,236,199,219,218,114,106,235, 14, 20,
+109,218,188,103,196,161,134, 99, 69,221,157, 62,103, 65, 65,174,103,100,101, 73,235,244,179,170,142,148,149, 12,241, 29, 58,210,
+146,247,194,203, 27,102,129, 80,233,187, 87,156,251,241,215,102, 76,105, 44, 97, 75,125, 54, 27,163,223,156, 39,209,254,169, 71,
+127,148, 79, 78,233, 40,156,126,251,107,145,237, 96, 91, 35,246,174,249, 54,198,205,154,135,138,145,195, 64, 3,221, 0,103, 7,
+ 41, 28, 5,118,228, 57,128,171, 28, 32, 12,104,231, 65,200,117,239, 64,110,222, 1,244, 28,199,228,121,115,241,241,107,111,226,
+200, 59,103,162,114,225,117,105,137, 31, 80, 90, 0, 73,134,219,221, 3,183,219, 23, 61,246, 79, 41, 40, 40,196,144, 15, 98, 40,
+245, 81,154,116,160,116,144,186,187, 58, 12,195,200,162,140,110, 79, 15, 60,221, 62, 68, 15,248,201,125,223, 9,222,239, 37,138,
+ 34,241,121,125,124,211,209,163,185, 91,182,238,174,248,199,127,246, 44,254,247,251,155, 29,255,248,199, 63,112,247, 93,119,156,
+122,237, 85,254,127,157,125,214,196,198,242,210, 82, 79,142, 51, 5, 35,136,147,126,124,254,137, 13, 88,105,181,142, 29, 63,158,
+211,112,164, 41,127,237,243,111, 77,157, 56,101,246,164, 95,255,246,143, 76, 89, 89, 25,236,118, 59,142, 28, 57,130,109,219,182,
+141,123,250,169,167,100, 57,212,190,167,181,189, 51,111,243,214,125,229,219,182,109,195, 47,110, 90, 62,121,194,248, 83, 91,135,
+ 20,230,251,109, 54,206,192,159, 53,111, 1, 90, 3,208,250,236,238,250,109,168,251,227,143, 49,245,130,111,162,176,192, 14,234,
+ 61, 6,112,118, 48,149,231,128, 25,179, 16, 68,125,107,100,201, 25, 96,134, 77,132, 84,243, 38,196, 29,127, 1,219,115, 28,211,
+207,159,143, 13,107,111, 71,229, 55,174, 6,195,219,140,104,152, 66,111, 11, 64,194, 45,128,104,131,186, 35,235,176,135, 35, 15,
+175, 2, 77,203, 5, 54,134,105, 25, 25, 7,100, 24,244,214,160, 66,212,126,229, 5,216,137, 4,164,212,252, 77, 71,143,230,110,
+222,178,123,248,219,239,213, 44, 90,191,254, 67,135, 40,138, 56,239,188,243,112,202, 41,167,228, 92,119,237, 53,139, 36, 42,191,
+ 53,253,108,185, 33, 21, 35,136,151,126, 34,254,189,153, 48, 60, 63, 20, 8, 50,237,109,237,246,109, 91,119,151, 61,247,226,134,
+243,215,174,251,191,194, 41, 83,166,192,231,243,245,142, 22,249, 49,108,216, 48, 44, 94,188, 24, 11, 23, 46,100,158,120,226,137,
+ 51, 86,175, 94, 21,202,205,205,197,216,177, 99,209,218,218,149, 31,244,251,185, 80, 64,100,100,123, 80,183,195,156,168, 2, 81,
+160,238,140,234,137,255,216, 71, 47,162,233,141, 7, 49,227,210,203,225,100,125,128,207, 13,176, 54, 16, 87, 57, 48,250, 60, 72,
+148, 98,255,129, 86,236, 62,208, 6,175, 63,132,211, 42,242,113,246,248, 18, 8, 99, 23,131,110,250, 3,164,186,183, 33, 12, 29,
+135,161,167,140,192,177,237,255, 70,217,215, 46, 48,197,203, 8,125, 45,128,199, 7,119,183, 55,106, 20, 39,188,216, 42, 44,254,
+ 19,109, 0,241,210, 23,101,197,135,246,169,231,133,194,252,229,200,134,238,185,178, 44, 18,191,175,135,107,106,106,201,221,188,
+101,215,240,119,214,215, 46,122,127,253, 6,135, 40,138,240,122,195,163, 98,227,199,143,199,179,107,255,146,115,237,247,174, 94,
+ 8, 74,223,154,126, 54, 26,134,151,151,184,227,249,204,201, 32, 46,127,196, 55, 96, 89,150, 73, 79,192,207,118,116,117,216,159,
+123,241, 63,231,124,178,105,103, 33,207,243,104,110,110,198,227,143, 63,142, 15, 62,248,128, 30,109,110,236, 41, 45,171,112,204,
+155, 55,143, 44, 95,190, 28,223,255,254,247, 49,122,244,104,149, 59, 73, 33, 81,137,136, 52, 68,228,222, 86, 39, 38,157, 20, 90,
+128, 40,241, 3, 56,248,255, 86,162,167,110, 35,102, 95,122, 41,248,192, 49,208,144, 8, 66, 88, 0, 12,104,229, 92, 72, 50, 69,
+125, 99, 59,254,245,233, 33, 4, 69, 9, 59,235,143,227,143, 77, 93,248,225,133,167,227,154,243, 39, 0,179,110, 6,234,222, 6,
+245, 28, 67, 89,249, 20, 28,126,231,233,204, 24, 0,195, 16, 56,236, 2,164,144,210,156,132,199,254,237,142,112,159, 32,101, 3,
+200, 76, 39, 33, 28, 85,156,135,248,134,125,104, 33,170, 6,149,229,190, 62, 0, 12, 46, 42, 0,132, 66, 34,211,222,209,105,223,
+178,117, 87,197,219,235,247, 47,126,255,253, 13,118, 81, 20,177,115,231, 78,204,156, 57, 19,199,143, 31, 71,125,125, 61,198,142,
+ 29,139,103,215,254, 37,231,154,107,150, 45, 34, 4,255,116,204,226, 14,241,101,165, 94, 67,159, 89,139, 56, 53,104, 92,254, 9,
+ 12, 24,178, 8, 41, 36,145, 80, 32,200,130, 8,197,161, 80, 8,159,127,254, 57,174,191,254,199, 98,249, 80,254,179,111, 46,158,
+ 86,207,210, 9,228,192,145,163,133,207, 60,253,248,153, 47,189,244,210,208, 85,171, 86,145, 9, 19, 38, 68,162, 8,143,121,244,
+166, 33, 27,148, 85, 18, 45,128,182, 19, 44, 7,123,176,255,225,107,225,178,201,248,218,249, 11,192,202, 94,244,240,165, 16,137,
+ 13,185,190, 58, 16, 80, 72,206, 82, 80, 81,196,198,221,205,104,110,243, 98, 91,109, 11,188, 61,225,185,161,191,189, 95,135,111,
+205, 25, 5, 97,232, 25, 96, 8, 3,218,211,129,252,138, 60,236,219,177,197, 20,167,120,136,180, 0, 30,143, 31,221,238,222,158,
+126,239, 24,190, 44,135,151, 59, 83, 12, 4, 3,136,239, 67,123, 60,126,116,119,247,141, 84,200, 80,106,206,222,111,157, 11, 40,
+203, 50,233,241,251,217,246,142, 14,199, 63,223,221, 49,243,131, 15,183, 68,196,191,116,233, 21, 82, 83, 83, 51, 11, 0, 75,151,
+ 94, 33,189,240,194,223,216, 49, 99,198, 96,221,186,231, 29,215, 94,243,237,121, 85, 19, 78,125, 49,191, 48,207,207,178,140,204,
+ 48, 76,194,156,198,245,225,227,242,239,251,211, 5,195, 80,150,103,100,135,211, 17, 28, 55,186,104,203,130, 5,243,206,234,238,
+234, 12,126,235,226, 25,235,207,156, 60,246,168, 32,216,196,206,246, 14,231,191,215,239,158,191,119,223, 23,195,114,115,115,213,
+249, 7, 0,136,162,204, 82, 74, 40, 40,161,178,129, 1,164,210, 2, 16, 66, 16,236,104,198,222,251, 47,199,200, 9, 99,113,234,
+184, 74, 64,242,162,179, 59,136,141,175, 60,135,115,174,188, 26, 32, 4, 84, 12, 64, 18, 69, 80, 73, 66, 83,171, 27, 31,126,222,
+ 16, 53,249,106, 23, 88,128,202, 8,133, 66,176,133, 35, 6,203,219, 16,234,241,232,166,159, 12, 34, 45,128,221, 46, 64, 12, 9,
+ 81,171, 63,115,148, 81, 8, 42,135, 63, 90,152, 27,192,201, 8,226, 25, 0,195,132,107, 75, 81, 12,215,152, 74,200, 8,255, 56,
+144, 68,137,136,162,196,128,216, 10,125, 62, 31,246,237,219,135,107,174, 94,214, 67, 16,240, 0, 24, 10, 0, 4,129,246,107,174,
+ 94,150,187,118,221,115,142,202,202, 74,240,130, 93,160,146, 76,168, 72,205,207,188,196,109, 1, 18,240,143,123,135, 24, 96,227,
+ 57,169, 40, 63,175,231,202,111, 45,216,221,217,217,253, 5, 75, 8,117,185, 92,254,252,188, 60, 63, 24,192,235,245,216, 64, 56,
+254,200,145, 35, 81, 67,218,148, 82,108,223,190, 29,229, 37,133,109,246, 28, 94,228,121,197,152,211,107, 1,148,111,255,177, 67,
+216,253,219,139, 48,105,238, 28,148,150,228, 2,178,136,150,163, 93,216,185,126, 61,114,135,143, 67,200,219, 13,146,199,130, 6,
+ 61,144,218,234, 16, 32, 78,140,173,112,198,220,137,187, 96,114, 25, 68, 49, 4,182,113, 91, 88,135,124, 14,130, 33, 25,142, 33,
+233,191,138,160,175, 5,240,246,160,219,237,139, 74, 92,148,194,125,128,176, 27,164, 35,231,254,124,183, 64,130, 62,128,199,231,
+ 67,183,218,135,238,221, 15, 0, 48,104, 1, 0, 80,142,231,164, 92,167, 35, 48,122, 68,238,167,115,102,207,152, 26, 8,248, 67,
+ 23,157, 63,101,203,171,255,220, 60, 69, 9,196,115,156,116,209,249,103,124,240,131,235,174,154, 68, 88, 91,193,148,211, 43,182,
+229,186,156, 1,142,231, 36, 0,212,204, 27,228,227,118,194, 77,240, 55,238,195,200, 36, 24, 10, 50, 65,127,128,149, 66, 18, 97,
+ 9,161,148,202,196,231,243, 9,161, 80,144, 37,132, 80, 89,146,200,194,249, 85, 31, 95,250,205,133, 83, 65,216, 72,207, 90, 12,
+ 73,236,208,226,220,198,101,151,207,223, 94,224,116,249,109, 60, 39,197,185, 21, 51, 97, 30, 21, 40,174, 79,221,159,126,138, 73,
+115,206, 65, 73, 33, 1,101,120, 28, 58,112, 20, 95,236,216,133,179,239,125, 31,199, 54,191,137,182,218,183, 80, 60,116, 2,224,
+110, 6,249,240, 62,248,207,127, 10, 51,199, 13,193,210,185,149,120,111,103, 11,130,162,132,153, 19,134,226,226,153, 21, 8,133,
+ 66,176,111,121, 24, 0,192, 20, 84,162,179,195,141,194,241, 51, 77,115, 50,130,170, 5,224, 17, 10,132, 71,129, 20, 56, 28,189,
+ 45,130, 44,131,154,172, 1,162,145, 57, 3,137,223, 2, 48,176,219, 5, 4,237,118,168, 47, 84,142,122, 28,221,224, 2,218, 4,
+ 94, 26, 90, 92,232, 91,182,244, 27, 59,151,120,186,247,139, 65,137,117,123,189,118, 96,115,212, 98,144, 49, 99, 78, 57,126,230,
+148,113,255,228, 5, 78,204,115,185, 2, 67,139,243,125,188,192,107, 23,233, 27, 35, 65, 31, 32, 62,127, 99, 3,146,164, 16,233,
+236,236,182,213, 29, 56, 52,228,197, 87, 54, 76,170, 63,208, 84,198,178,125,171,253, 29, 14, 91,224,155,139,167,127, 94, 85, 53,
+234,216,148, 73, 99,254, 33,201, 18, 35, 74, 34, 19, 10, 73, 44, 75, 64,157, 46,167,127,104,113,145,215, 85,232,242, 19,150,208,
+ 56,157,109,115,249, 68,159, 1,136,221,199, 49,100,248, 57,160, 8,162,118,103, 45,142,183,116, 96,250,253, 27,192,231, 22, 96,
+248,130,101,248,228,205, 63, 96,212, 25, 19,193, 52,110, 7,231,239,132,125,227, 61,240, 76,191, 13,151,206, 42,199,101,231, 84,
+ 68,226, 2,149,192,111,126, 20,220,161,247, 1,134,131, 92, 54, 13,181,255,248, 0,179,239,123,196, 52, 39, 35,168,250, 0, 61,
+125,125,128,222, 90, 95, 18, 41,178, 62, 10,100,210, 72,226,117,130,195, 62,180, 79,197, 63,236, 71,132,223,160,217, 91,251, 27,
+ 92, 64,142, 1,117, 58,156, 65,174,140,147,134, 6, 10,124,221, 94,159,208,212,216,172, 37, 70,115,115,236,129,242,210,146,174,
+156, 28,123,200,158, 99, 19, 5,158,147, 57, 6,212,172,107, 16, 15,233,240, 15,244, 4,216,174,142, 78,251,186,231,223, 62,235,
+201,181,175, 78, 26, 59,118,108,212,113,175,215,139, 25,103, 79,201,187,245,231,195, 95, 43, 46, 42,240,130, 2,221, 30,175,205,
+237,118,219, 41,165,132, 99, 56,217, 97, 19, 68,129,101,100, 6,233,231, 71, 61,246,159, 63,225, 28,124,250,175,127, 35,228,243,
+192,117,218, 89,152,250,155,191,130,229,109,225,155, 98,114, 11, 48, 98,241,143,240,197,158, 13, 24, 63,252,108, 72, 95,252, 27,
+185,187,159,134,112,116, 43, 60,147,150, 35, 88, 60, 9,148,176, 16,218,118, 33,119,207, 90,216,154, 63, 1, 0, 48,195,167,163,
+161,177, 3, 67,167,156,139,220,138, 49,105,113, 5, 52,125,128,144, 35, 92,227, 40,139,216,114,114, 4, 80,164, 49, 10,148, 17,
+ 40,203,177, 19,251,208, 57, 14,117,141, 31,230,175,108,199, 29,135,231, 64, 29,156, 77,148,237,172, 36, 82,137, 48, 28,137, 9,
+ 44,138, 18, 35,209, 16,161,176, 33,216, 19, 96, 37, 81, 34, 34, 47, 17,158,231,204,117,130, 77,244, 1,146,229, 47,203, 50, 9,
+132,130,140,183,167,135, 63,220,208, 54,108,252,248,241,104,105,105,137, 10,211,210,210, 2,134, 99, 72, 32, 20,100,125,254, 30,
+ 46, 20, 18,217,154,186, 67, 67,223,124,251,243,185,146, 4, 97,226,132,161,219,190,117,113,245, 30,135,195, 22, 98,121,214,144,
+100, 50, 45,128, 50,252, 57,254,199,143,194,123,100, 31, 4,215, 16,216,139,202, 99, 38,198, 70, 94,248, 19,124,240,147, 63, 34,
+127,200, 44,148, 77,188, 28,210,254,127, 66,104,253, 28, 67,222,251,175,216, 72, 89, 1,236,105, 95, 71,135,152,143,253,155,223,
+195,185,127,220, 97,154, 79, 60,168,250, 0,126,184, 61,225,217, 94,165,182, 13,137, 18, 34,143, 72, 57,209, 6,144,200,135,246,
+248,225,233,173, 65,149,144,162, 40,246,141, 32,154,185,128, 50,192, 16, 74, 99, 23,228, 81,210,213,237,113,144, 35,148,242, 54,
+ 78, 98, 8, 67,121, 27, 47,230,187,242,252,133, 5,121,254,156, 28,187,152,216, 8,210,225,111,208, 2,200, 50, 36, 73, 34, 84,
+150, 8, 97,123, 7, 76,101, 25,199,142, 29, 67, 77, 77, 13,238,190,251, 46,217,239,235,106, 95,124,222,228, 29,238,110,159, 35,
+ 24, 8,242,235, 63,218, 61,210, 19,112,125,237,131, 13,155, 5,159,207,135,217,231,124,109,230,194,249,238,250, 96, 97,190,207,
+ 38,240,146,113, 62,146,155, 8, 83, 62,174,202,211, 13,103,132, 57,155, 3,179, 87,127,136,173,247, 92,130,206, 97, 69, 24, 55,
+229,106,144,163,159,129,186,155, 65,221,205,128, 44,129,228,150,128,184,202, 64, 74, 39,225,224,151,205, 56,184,251, 19,204, 89,
+245, 30,236, 67, 82,122,143, 95, 12, 56, 0, 32, 12,129,221,198, 33,100,231,163, 22,195, 69,106, 36,163, 81,160, 12,192,108, 47,
+ 33,209, 60,128,221,206, 33,232, 80,143,250,200,166, 91, 0, 68,133,146, 65,136, 38, 49, 98, 31,242,240,159,222,168, 86,211,117,
+ 56,132,192,165, 75,102,109, 59,103,230,196,195, 37,252, 80,175,205, 38,196,157, 15,136, 63, 19,156,152,191,190, 0,251,230, 56,
+212, 79,228, 56,124,248, 48,102,207,158,141,215, 95,127,131,121,228,145, 71,138, 63,219,190,173,250,189, 15,255,227,158, 56,105,
+170,235, 7, 63,186,139, 95,184,112, 33,188, 94, 47,234,234,234, 32, 75,129, 46,150, 37, 50, 97,137,254,232, 79, 84, 90,230, 96,
+230,198, 21,229,227, 40,174,192,220,135, 54, 97,207,159,111,198, 71,175,191,141,242, 49, 99, 80, 56,116, 52, 92,227, 74, 65, 24,
+ 6,158,214,227,232, 58,222,138,166,255,108,134,125,232, 72,156,251,248, 46,112,142,220,196, 36, 76,130, 3, 0, 89,146,225,245,
+ 6,208,237,233,137,186, 73, 37, 20,146,122,127,157, 72, 23,168, 23, 9,231, 1,130,232,114, 71,175, 88, 12, 6,195,226,144, 77,
+172, 5, 2, 0, 6,160, 28,207, 74, 54,155, 61, 84, 94, 86,216,186,125,251,246,242,178,178, 50,212,127,113,192,198,113, 92,153,
+ 58,172,223,239,199,180, 51, 79,119,157, 62,126,196,139, 5,121,121,126, 62,209,124, 64,130,181, 64,241,248, 71,250, 1, 49, 81,
+202, 32, 12,237,109, 28,251,146,190,238,186,107,165,123,238,249, 45,123,209, 69, 23,225,206, 59,239,132, 32, 8, 60,207,243, 67,
+120,158, 7,165, 20,173,173,173,120,229,149, 87,112,239,189,191,241, 92,121,201,244, 77, 46,151,211,207,115,108,220, 17,173, 84,
+ 58,193,137,196,223,119,140,197,164,159, 60, 2,247,145, 26,180,237,254, 8, 13,159,189,131,182,247,158, 7,149, 68, 20,142, 61,
+ 11,197, 83,207,199,148,111,206, 70,225,152,105,166, 57,152, 69,164, 5,176,217,120, 56,236, 66,212, 98,184,156,222,135, 20,156,
+216, 62, 0, 20, 18,198,199, 24,192,110,231,224,236, 29, 53,137,140,163,231,244,254, 48,154,221,212,129,192, 50,114,158,203, 22,
+184,228,130,233,187,190,243,237,203, 71,174, 94,243,191,121,211,166,197, 22,252,193,131, 7, 65,194,211,167,136, 55,202,212,135,
+ 56,199, 19,240, 55,154,156, 2,100, 16, 66,168, 32,176, 98,190,203,225, 13, 6,131, 56,118,236, 24, 10,242,184,166, 63, 62,242,
+ 59,255,203, 47,191, 60,102,233,210,165, 56,227,140, 51,112,202, 41,167,160,161,161, 1,187,118,237,194, 11, 47,188,128, 99,205,
+181,251,111,254,241,249,159,158, 50, 98, 88, 71, 65,129,203,207,243,140,156, 76, 45,111,132,228,197,223,183,157, 95, 89,133,252,
+202, 42,156,122,193,242,180,121,152, 5, 71, 8,145, 3,254, 0,211,227, 15,134,251, 0,125, 55,252, 66,150,195,247,117, 82, 89,
+ 60, 97, 6,160,208, 9,134, 66, 32, 36,182,115, 10,128, 6,253, 65,226,243, 7,209,229,241, 35,114, 17,101, 64,150, 57,200, 0,
+ 68, 49, 24,246,167, 77,128, 16, 34,231, 58, 29,129,211, 70, 86,180,126,111,233,244, 55,127,247,235,155, 38, 54,181,116, 20,107,
+125,181,130, 60,135,231,226, 69,103,237,204,117, 58,123, 88,134, 72,178, 44,199,157, 15,232,189,125, 81,207,138, 19,242,135, 44,
+ 26,206, 99,240, 28, 43,229, 56,115, 2, 23,124, 99,234,206,169,103,158, 94, 8,128,187,240,188,169, 59,198,140, 41,111,171,173,
+111,218,247,236,159, 87,143,104, 62,214, 57,164,167, 39,228,116, 56,120,111,217,176,130,246,179,167,141, 62,180,236,210,139,154,
+139,139, 10,188,249,121, 46,127,142,205, 38, 34,193,124, 70,239, 13, 69,166, 60,214, 68,194, 55, 58,126, 34,192, 57,115,108,199,
+107,106,246,151, 12, 43, 41, 67,143,167, 61,178, 22, 84, 18,101, 12, 47, 25, 1, 73, 12,161,187,171, 93,247,228, 68, 47,217, 54,
+ 51, 79, 70, 19,148, 41,237,237,132,215,127,217, 0,187, 93, 56,162, 61,238,116,218,124, 53, 53, 53,206, 97,195, 42,224,119,183,
+247, 45,128, 22,101, 20,149,141,128, 40, 6,209,221,169,207,223, 8,178, 44,139,206,252, 28,207,216,211, 42, 67, 63,190,110, 88,
+ 91, 32, 24,224,169, 36, 19, 74, 41, 33,132, 80, 48, 4, 2,207,139,185,185, 57,126,123,142,224, 15,133, 68, 89,146,226,184, 56,
+178,140, 47, 15, 54,194,225,176,117, 39,203, 95, 22, 69,120, 60,157,198, 75,129,100, 81,206,205,177,247, 76,157, 50,254,200,105,
+163, 43, 94,130, 12, 56, 93,142,128,221,102, 15,149, 13, 45,110,159, 62,109,252,193, 96, 48,196,201,162,204, 48, 28, 35, 11, 2,
+ 47,230, 56, 28, 33,167,211, 22,180,219,236, 34,195, 48,114, 80, 20,251, 30,241,164,151, 6,100,124,249,101,179, 46,127, 61,164,
+242, 80,171, 19, 5,206,110,227,183,191,244,242,203,139,254,235, 39, 63,192,190, 61, 59,194, 79,137,150, 40,130, 33, 25,231, 46,
+ 94,128,142,246, 38,184, 61, 6,119, 3, 37, 50, 0, 19, 4, 18, 27, 81,120, 77,210, 39,155,107,252,146, 36,127,162, 61,238, 16,
+184,230, 23, 95,126,249,180,159,253,244,135,216,183,231, 51,136, 98,184,182, 12, 6,101, 44,184,224, 92,116,182, 55,193,231,247,
+ 39,219,186, 83, 6, 76,200,238,176, 75,188, 32,248, 37, 81,100, 36,205,179, 76,121,142,145, 57,142,151, 32,129,250,253,193,184,
+153,144,101, 25,155,182,214,138,146, 36,198, 24,112, 60,254, 95,191,224, 92,116,118, 54,193, 23,255,153, 61, 20, 4, 98,158,203,
+225,181,219,120, 63, 0, 8, 2, 39,133, 39,195,108,112, 74, 14, 38, 16,148, 24,197,120,121,142,149,121,150,145, 9, 67,168, 36,
+201, 84,146, 18,223, 42, 42,203, 50, 54,110,174,209,229,175, 69,178,181,254,137, 20, 63, 0,112, 57, 60,243, 95, 47,189,252, 70,
+237,183, 46,187,148,253,246,119,111, 66,237,254,237, 16, 69, 9,227,198,159,137,161,195,134, 97,231,150,215, 16,240,167,104, 0,
+137,214, 10,153,104, 34, 40,165, 56,210,216,138,151, 94,251, 56, 20, 12,138, 49, 79, 44,200,145,185,127,190,244,210,235, 63,187,
+252,178,203,200,183,191,123, 51,106,107,183, 67, 20, 69,140, 31, 63, 21,195,134, 13,195,231, 91, 95,135,223,159,242,205, 60, 50,
+ 0,153, 50,132, 48,154,231,203, 82, 2, 26,146, 66, 8, 73, 72,104, 92,135, 27,142,225,197,191,127, 36, 7,131,210,122, 67,254,
+151, 95, 70,190,125,205,205,168,173,217, 14, 89, 20, 49,118,252, 84, 12, 43, 45,197,222,237,111, 34,152,152, 63, 5, 32, 50, 76,
+120,101,170,198, 29,147, 89,134,144,190,251, 16,101, 26,146,228,240,123,102, 96,238, 73, 28, 7, 15, 31,195, 11,127,223,160,203,
+ 95, 15, 39,139,248, 1,128, 80, 74, 49, 98, 68,241,245,109,173,158, 71,174,186,242, 34,246,194, 11, 47,192,216, 49,167,194,235,
+110,197,151,117, 91, 16, 12,196,185, 23, 52, 93, 3,136,211, 70, 72,146,140,163,199, 58,177, 99,215,129,158, 87,223,220, 44, 73,
+178,248,115, 81,164, 79,233,133, 29, 49, 98,232, 89,109,199,187, 23, 95,117,229, 69,100,201,197, 75, 48,246,180, 83,225,243,181,
+226, 96,253, 22, 4,253,153,121,226, 89,178,144, 69, 25, 77,199,218,177,125,199,151,226,203,175,109,146,131,162,248, 22,165,244,
+ 51,189,176, 17,254, 87,125,147, 92,188,100, 9,198,142, 61, 21,126, 95, 59, 14,127,185, 29,193,160, 87, 21,105, 22,249,106,183,
+101, 25, 77, 71,219,177,117,199,151, 98,216,120,141,249, 43, 56,235,172,179,232,167,159,126,138, 64, 32,112, 66,196, 95, 91, 91,
+139,171,174,186, 10, 91,183,110, 53, 29, 57, 81,106,225,252,252,252,211,120, 78,126,212, 31, 16,167,248,124,129,161,148,210, 19,
+250, 14, 97, 66, 32, 11, 2,127, 68,150,229, 79, 66, 33,105, 5,165,180, 54, 94,248,252,252,252, 33, 60, 43, 45,246, 7,197, 82,
+175, 55,144, 3, 36,126, 36,120,150, 65,109, 54,190,155,138,242,145,160, 36,173,167,148,182,197, 11, 60, 96,249, 83,249, 72, 48,
+152,152, 63,208,103, 0,193, 96, 48, 97, 71, 56, 27, 72,197, 0, 34, 79, 99,238,234,234,170, 7,176, 48, 43,204,250, 1, 93, 93,
+ 93,237, 0,158, 59,209, 60, 82,197,201,206, 95, 65, 48, 24, 68,125,125,125,204,227, 10,251,195,237,225,121,221,103, 38,196,133,
+245,154, 84, 11, 25,131,205,102,107,153, 51,103, 78,250,139,244,211,228,144, 76,120, 98,166, 35,106,193,194, 87, 21, 39,212,207,
+183, 96,225, 68,195, 50, 0, 11,131, 26,255, 31,244, 45,114, 84,193,188, 23, 3, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
0};
diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c
index bbce480ecba..73a11f2fdc6 100644
--- a/source/blender/editors/datafiles/splash.png.c
+++ b/source/blender/editors/datafiles/splash.png.c
@@ -1,2483 +1,6328 @@
/* DataToC output of file <splash_png> */
-int datatoc_splash_png_size= 79258;
+int datatoc_splash_png_size= 202316;
char datatoc_splash_png[]= {
-255,216,255,224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 72, 0, 72, 0, 0,255,225, 0, 22, 69,120,
-105,102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,255,219, 0, 67, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2,
- 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,219, 0, 67, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,192, 0, 17,
- 8, 1, 15, 1,245, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1,255,196, 0, 31, 0, 0, 1, 3, 5, 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4, 0, 7, 10, 3, 5, 6, 8, 9, 2, 1, 11,255,196, 0,103, 16, 0, 1, 3, 3, 2, 4, 3, 4, 6, 4, 7,
- 11, 5, 9, 13, 9, 1, 2, 3, 4, 5, 6, 17, 0, 7, 8, 18, 33, 49, 19, 65, 81, 9, 20, 34, 97, 10, 21,113,129,145,240, 35,
- 50,161,193, 22, 23, 24, 66,177,209,225, 25, 26, 36, 40, 51, 56, 73, 82, 98,232,241, 72,104,105,136,168, 41, 52, 57, 67, 84, 88,
-120,150,178, 37, 38, 68, 83, 87,115,130,135,147,152,181,200,210, 54, 89, 99,114,146,184,213,214,215,255,196, 0, 29, 1, 0, 0,
- 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 6, 7, 1, 4, 8, 9,255,196, 0, 80, 17, 0, 2, 1,
- 2, 4, 4, 3, 4, 6, 7, 5, 7, 0, 7, 9, 0, 1, 2, 3, 4, 17, 0, 5, 18, 33, 6, 19, 49, 65, 7, 34, 81, 20, 97,113,
-240, 8, 35, 50,129,161,209, 21, 66, 82,145,177,193,210, 36, 51, 98,162,225, 9, 67, 83, 84,114,130,241, 52, 56, 68, 85,116,148,
-211, 22, 23, 24,115,131,146,147,180,181,255,218, 0, 12, 3, 1, 0, 2, 17, 3, 17, 0, 63, 0,159,198,150,150,150,134, 6, 22,
-150,150,190,100,122,143,199, 67, 3, 31,116,203,220, 60, 68,108,181,171,123, 70,219,170,254,224,209, 41,183,140,167, 25,101, 20,
-135,189,241, 73,101,249, 28,165,136,243,170, 77, 69, 84, 74,116,149,133,163,149,185, 15,180,226,185,211,132,158, 97,151,159, 35,
-212,126, 35, 92,108,227, 63,131, 43,145, 85,251,143,120, 54,213, 18,235,236, 86, 37,191, 87,185,237,148,243, 72,170, 67,146,224,
- 11,147, 81,162,128, 57,167, 69, 42, 5, 75,143,213,230,242, 75, 94, 34, 50,148, 86,158, 42,113, 39, 27,112,159, 14, 38,119,193,
- 60, 55, 23, 19,212, 81,204,173, 89, 4,134, 67, 34,209,128,198, 87,130, 56,138,188,146, 2, 0,242,151, 49,169, 50,114,101, 1,
-128,179,188, 40,225,158, 7,226,222, 37,108,143,142, 56,150,110, 23,166,172,133,150,142,120,196, 98, 54,173, 44,162, 36,158, 73,
- 85,146, 56,200, 44,124,193, 4,140, 4,124,232,139, 41, 61,145,109,196, 58,132,173,181, 37,104, 80,200, 82, 72, 32,131,243, 26,
-247,174, 11,240,211,199, 61,219,180,206, 66,179, 55, 36, 79,186,108,118, 29, 68, 54,166, 58, 92,122,228,181,217, 65, 13, 22,219,
- 47, 30,106,157, 61,174, 95,242, 14, 16,243, 97, 37, 45, 44,128,150,181,219,219, 46,247,181,247, 6,129, 2,231,180, 43, 48,171,
-148,106,139, 65,216,211, 33, 58, 29, 65,232, 57,219,113, 63,172,203,233, 86, 66,219, 88, 74,208,160, 66,146, 14,147,240,211,197,
-174, 19,241, 67, 46, 53, 25, 37, 79,179,102,180,202, 13, 86, 95, 49, 2,166,156,244, 38,219, 9, 97,213,178,207, 29,212,220, 7,
- 17,201,120,194,158, 38,248, 69,197,190, 22,102, 66,159, 60,166,246,156,166,165,136,165,204, 33, 4,210,212,142,160, 95,115, 12,
-218,119,104, 36,179, 11, 18,134, 72,237, 33,202,244,180,180,181,103,226,173,194,210,210,210,208,192,194,210,210,210,208,192,194,
-210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,
-215, 13,125,163,254,220, 13,158,224,130,240,159,178,214, 5,156,238,249,111,173, 45,150, 21,116, 81,219,173,155,110,200,219,199,
- 39,194, 98,116, 8,215, 53,192,138,116,167,170,213,245, 68,151, 17,255, 0,171, 32,177,132, 50,233, 76,186,132, 39,249, 26, 91,
-214, 67,195,217,207, 19,102, 9,149,228,116, 47, 95, 90,224,177, 85, 42,161, 80, 16, 11,200,238, 85, 35, 64, 72, 5,157,128,185,
- 10, 46,204, 1, 98,226, 46, 38,200,248, 79, 45,124,219,136, 51, 20,203,104, 81,130, 6, 96,204,206,237,114,169, 28,104, 26, 73,
- 28,128, 78,148, 86, 58, 85,152,128,170,196,119, 43, 75, 80,124, 63, 73,159,141,131, 84, 83,195,103, 56, 94, 20, 82,242,212,138,
-127,240,103,117, 13, 77, 44, 20,171,195,105, 85,127,227,115,194, 91,193,101, 37, 75, 16,146, 20, 1, 1,180,147,204, 58,247,192,
- 39,183,219,102,184,168,189,173,253,156,222,171, 32,236, 38,233,221, 18,227,210,109, 58,154,110, 6,238, 13,182,188,107,111,132,
-162, 53, 29,138,204,184,113, 36,218,181,233,114, 84, 26,131, 10, 91, 82, 88,144,233, 68,118,234,107,152,244,120,206,205,115,175,
- 7,248,243, 35,161,151, 49,169,202, 86,166,150,157, 75,200,105,230,142,102,141, 64,185,102,140, 17, 33, 10, 55, 98,138,225, 64,
- 44,108,160,156, 64,178, 47, 27,188, 58,226, 12,194, 28,174,151, 57,106, 90,186,150, 9, 16,169,134, 72, 82, 71, 38,202,171, 35,
- 3, 26,179, 27, 5, 18, 50, 22, 36, 42,130,196, 12, 72, 35, 75, 94, 80,180,173, 41, 90, 8, 82, 84, 1, 73, 29, 65, 7,204, 29,
-122,213, 97,139,107, 11, 75, 75, 94, 29,117,182, 91,113,231,156, 67, 76,180,133, 56,235,174, 41, 40,109,182,208,146,165,184,226,
-212, 64, 66, 2, 65, 36,147,128, 6, 78,134, 6, 61,233,107,140, 28, 63,123, 94,236,238, 39,253,160,119,151, 9,219, 61,108,210,
- 43,219, 63,103, 88,247, 29, 77,157,231, 77, 86, 91,178,239, 43,178,215,171, 80,169,213, 69,219, 84,214,227,166, 57,178,252,106,
-195,236,197,150, 92,117, 83,126,173,247,214, 23,238,178, 89, 3,231,181,219,218,129,127,123, 56, 15, 15,137,177,182,194,209,220,
-115,188,169,221, 85, 85, 13,213, 86,172,210,254,165,254, 47, 78,219,136, 94,225,245, 74, 79,188,123,199,240,222, 95,139,226,126,
-167,184,183,201,250,202,212,182, 30, 7,226,105,179,220,183,134,191, 71,242,179,156,218, 1, 81, 12, 50, 72,136,121, 70, 41, 38,
- 5,203, 48, 17,183, 46, 39, 37, 28,171,130, 52,149, 12,109,136, 92,222, 32,240,164, 60, 61,154,241, 87,233, 46,118, 69,147, 78,
-105,167,158, 56,228,145,121,162,104,160, 34, 48,170, 90, 84,230,202,138, 36,140, 50, 48, 58,149,138,139,227,180, 26, 90,134, 23,
-247,207,155,251,255, 0,155, 30,209,127,235, 93,227,255, 0,232,210,254,249,243,127,127,243, 99,218, 47,253,107,188,127,253, 26,
-152,127,247, 29,226, 55,254,233,139,255, 0,155,166,255, 0,234, 98, 19,255, 0,226, 11,194,239,253,245, 55,255, 0, 37, 87,255,
- 0,210,196,207,116,181,166,252, 3,241, 57, 89,226,255, 0,133,157,171,223,235,138,219,165,218, 85,203,250,153, 89,157, 81,183,
-232,178,101,204,165,211,157,166, 93, 53,202, 3,109,195,147, 56,120,175, 33,108, 82,154,113, 69,125, 66,221, 80, 29, 0,214,228,
-106,172,174,163,168,203,171,107, 50,250,180, 17,213, 80, 75, 36, 50,168, 33,128,146, 39, 40,224, 48, 36, 16, 25, 72,184, 36, 30,
-160,219, 22,246, 95, 93, 77,154, 80, 80,230, 84,110,100,163,204, 97,138,120,152,130,165,163,153, 22, 68, 37, 88, 6, 82, 85,129,
- 32,128, 71, 66, 47,133,165,165,165,173, 92,110, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,
-105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,107,
- 3,168,110, 45, 6, 60,249,116,122, 75, 21,123,182,183, 5,239,118,155, 75,181, 41,174, 85, 12, 9, 92,174,168,197,170, 85,150,
-166,169,212,105, 67,194, 32,183, 54,108,117,130,164,229, 32, 40, 29, 12, 12,103,154, 90,104,166,239, 21, 38,143, 91,167,219,119,
- 13,169,123,209, 43,245,152, 83, 39,208,233, 9,165, 83, 46,121,213,134, 41,225,159,126, 83, 12, 88,181,170,177,130,134,188, 97,
-151, 38,251,171, 42,228, 95, 35,139,228, 86, 47,143, 95, 53, 54,130,157,111,109,119, 6, 76, 70,208, 28,118, 91, 44, 90, 40, 45,
-183,221,106, 77, 58, 85,222,220,217, 43, 74,114, 75,108,197,113,213, 99,149,182,214,178, 18, 70, 6, 28, 29, 45, 88,232, 23, 37,
- 18,231,136,236,202, 36,244, 76,110, 60,135, 33,205, 97, 77,191, 18,125, 54,115, 56, 47, 83,234,212,201,141, 55, 38,149, 80, 64,
- 82, 10,216,146,211, 78,164, 45, 36,160, 5, 2,111,154, 24, 24, 90, 90, 90, 90, 24, 24, 90, 90, 90, 90, 24, 24, 99,120,143,168,
-110,117, 51,103,174,233, 91, 65, 29,201, 23,200,138,203,116,255, 0,119,109,167,170, 12, 69,114, 67,104,169, 72,165, 50,240, 40,
-118,166,136, 69,226,200, 32,144,175,137, 0,184, 17,174, 20, 60,223, 25, 18, 95,121,199,215,190,238, 72, 83,138, 83,202, 92,139,
-187,156,186,165, 18,178,175,210,126,183, 54,117, 36,133, 36, 40, 16,160, 8, 61, 8, 35, 32,253,218,208,158, 40, 56,198,176, 54,
- 85,185,246,165,163, 22,151,119,238,105, 66,153, 92, 54,212,151,168,214,187,171, 78, 67,245,249, 12, 43,244,179, 83,148,148,194,
-109, 65,206,185,121,108,167,148, 47,157, 60,116,224,190, 27,204, 99,139,140, 56,175,196,124,203,131,114,188,170, 14, 66,193, 75,
- 56, 17, 77, 38,167,144,114, 96,182,185, 42,165,190,146, 16, 51, 50, 70,132,233, 84,102,199, 72,120, 15,198,220, 77,151, 75, 55,
- 7,112,151,134,185,103, 26,102,153,172,252,246,158,170, 2,101,134, 61, 49,198,121,211,223, 68,116,145, 17,172, 23,210,170,242,
- 53,139, 51,170,227,143,215, 53,223,196,133,153,238,191,194,219,167,117,237,195, 59,196,247, 52,214,107,151, 20, 5,201, 13, 99,
-196, 83, 45,200,148,149, 45, 41, 42, 0,144, 49,147,140,231, 88,195, 91,199,188,114, 93,109,134, 55, 39,112,100, 60,226,194, 90,
-101,171,158,186,235,142, 44,159,133, 40,109, 50,201, 90,179,216, 0, 78,177,155,198,244,186,247, 18,225,151,114, 93,181,137,181,
-218,221, 69,209,207, 34, 82,202,131,105, 39, 13, 68,134,194,112,136,145, 17,156, 33,166,210,148, 36,118, 25, 36,157,221,188, 47,
- 45,145,246,104,112,186,239, 19, 59,221, 70, 93,217,123,214,159,133, 73,179,173, 8,106,140,213,106,227,187, 42,177, 94,153, 78,
-181,233, 18, 37,182,177, 72,167,177, 22, 51,207,212,167,150,214, 25,110, 59,132, 37,229,170, 52,119,121, 7,194,159, 15,120,203,
-198,222, 60,159,134,248, 23,136, 51,106,108,146, 23, 75,212, 85,212,201, 45, 66,164,141,162, 37, 49,195, 36, 81, 52,243,178,187,
- 44, 97,214, 56,145, 92,188,204,177,150,110,196,241,107,196,110, 10,240, 51,128, 32,226,126, 62,225,252,162,167, 58,153, 28,251,
- 61, 37, 52,112,211, 51, 70,161,230, 97, 36,209,203, 42,211,192,172,138,210, 20,105, 37,118,141, 82, 21,105, 2,174,163, 72,218,
-189,222,170,162, 69,126, 85,135,123,206, 76,183, 23, 46, 77, 77,218, 13, 81,227, 33,199,137, 91,146, 29,120,199, 37,106, 82,148,
- 73, 81,238, 73, 58,203,118, 91,127, 55, 47,135,155,149,114,173,233, 18, 19, 1,201, 8, 23, 5,159, 86, 18, 27,166,212,210,217,
-229, 80,122, 50,192, 84, 10,130, 81,144,135,219, 1,196,246, 80, 91,101, 77,171,150, 85, 47,164,143,198, 35,151, 97,170, 81,118,
-183, 97,169, 54,130, 37,133,179,102, 61,111, 92, 53, 14,120, 40, 95,195, 22, 93,192,171,133,185, 46, 62,166,176, 22,235, 65,161,
-204, 74,144,218, 6, 18, 59,121,195,151, 16, 59, 31,237,121,225,250,232,188,108,251, 74, 62,216,241, 35,181,232,138,205,221,106,
- 37,246,165,173,185,210, 97,201,126,152,244, 42,139,108,182,186,213,159, 85, 16,103, 34, 50,222,109, 50, 33,200,136,182, 92, 7,
-194, 14,201,234,207, 16,126,128,222, 38,248, 71,147,143, 16,120, 59,138,106, 38,207, 50,127,174,217,162, 46,210, 29,204,124,216,
-156,104,105,141,227, 9, 42, 77, 79, 51,176,134, 89, 64,146,237,200,222, 28,127,180, 43,194,191, 25, 51,195,225,207, 24,112,181,
- 60, 89, 30,113,245, 32, 50,202, 17, 98, 29, 36, 17, 76,191, 88,176,139, 72,205, 19,193, 81, 10, 35, 77, 20, 76, 99, 32,118, 27,
- 96,248,137,177,183,250,218, 21,123,106, 66,161,213,225, 37,166,235,214,228,213,160, 84,232,242,156, 78, 64,113, 41, 56,147, 13,
-101, 43,240,159, 71,192,224, 65, 7,149,105, 90, 19,106,226, 39,139,222, 29,184, 78,110,198,145,196, 38,229, 82,246,206, 6,226,
-214, 42, 20, 27, 86,171, 91,137, 84, 93, 38, 85, 78,151, 17,153,211, 89,157, 82,131, 5,214,105, 13,162, 43,237,171,196,148,182,
- 91, 86, 72, 74,138,129, 26,224,102,199,110,133,115, 99,247, 86,135,116,199, 84,134, 26,129, 81,250,170,231,166, 5,148, 9,180,
-119, 95, 17,234,144,223,108, 28, 41,230,185, 75,173,103, 33, 47,197, 65,236, 8, 56,167,210,118,170,198,173,240,251,194, 53, 82,
- 35,168,126, 52,237,202,189, 36,178,235,106, 10,109,214,222,179,169,238, 54,226, 20, 58, 41, 37, 10, 4, 31, 67,171, 87,232,151,
-199,112,248,245, 61, 22, 67,196,119,203,243,234, 9,141, 61,127,179,133, 66,234,105,230,150, 10,168,209,213,213, 57,175, 11,164,
-177,216,133,120,223, 78,133,116, 11, 85,125, 48,120, 26,127,163,229, 30, 99,196, 92, 52, 23, 49,200,107, 97, 90,156,188, 84,150,
-112,140, 42, 96,138,162,146, 87, 70, 70,147,148,147, 35,197, 32, 96, 89, 36,143, 86,182, 71, 38, 80,214, 61,247,102,238,101,169,
- 68,190,118,250,231,162, 94, 86,117,203, 5,186,157, 2,229,183,106, 17,170,180, 90,196, 7, 74,146,220,186,125, 66, 35,138,110,
- 83, 5, 72, 80,230, 66,136,202, 72,238, 8,214, 89,168, 64,112,175,237,189,221,253,134,225,159,102,120,123,225,163,133,105,251,
-189, 82,218,155, 26, 53, 58,249,186, 43,172, 93, 53, 88,104,168, 59, 62,163, 61,244, 83, 40, 54, 52,101, 57, 18,156,216,146, 0,
-149, 42, 82, 84,242,185,200,142,216, 71, 50,250, 53,193,103,210, 48,176, 55,151,114, 45,253,161,226,123,106,154,216,235,138,230,
-171,179,111,210,175,154, 45,102, 69, 70,198, 98,189, 45,246,226, 66,166, 92,208, 43, 49,218,153,107, 54,228,197,120, 94,244,183,
-101, 50,219,175, 32, 72, 17,218, 11,121, 61, 57,156,120, 63,198,153,119,233, 74,154,108,168,214, 80, 80, 73, 45,180,205, 3,212,
-154,116,102,229,204,244,233, 33,144,107,140, 7,210, 20,181,143,217, 29,185,103, 35,241,187,128,243, 63,209, 20,149, 89,184,162,
-204,179, 40,225, 7, 84, 53, 9, 74, 42, 93, 19,153, 2, 84,188, 98, 35,203,145,140,122,139,232,184,251,102,226,253,250,171,113,
- 37,195,245, 6,251,107,107,171, 91,211,182, 52,173,200,122,165, 79,163, 51, 98,207,189,104, 17,110,183,106,213,101, 50,154, 93,
- 53, 20, 39,167, 9, 42,157, 33, 82, 99,134, 90, 13,243,184, 95, 72, 64, 60,195, 47, 80, 32,128, 65, 4, 17,144, 71, 98, 53, 2,
-158, 50, 84,211,191, 72, 26,128,243, 1, 10, 14,113, 65,195,147,232, 82, 80,159,137,193, 34,193, 91, 78,246,248,156, 5, 45,144,
-174,224,164, 16,122, 13,118, 87,143, 15,111, 68, 62, 31,247, 89,238, 25,120, 83,218,134, 55,231,120,232,117, 24,214,189,203, 90,
-170, 59, 86,145,107, 83,239, 39, 22, 24,122,204,183,168, 86,222, 39,222, 53,230, 36, 56,219, 82, 84,212,136,236,177, 41, 11,138,
-145, 33,196, 56, 91, 91, 48,240,167, 51,118,225, 88,120,116,201,154,212,103,249,106,102, 51,243, 57,112,197, 76,172, 19, 86,169,
- 89,130, 8,193,123, 6, 98, 25,182, 0, 19,182, 17,203, 60, 97,202,145, 56,190,163,137,196,121, 61, 47, 14,230,178,101,148,252,
-190,100,210,213,186,151,211,162, 37, 82,237, 35, 4,185, 84, 5, 84, 92,179, 1,190, 36,133,165,168,139,220,190,218,255, 0,106,
-111, 13,237, 80,239,190, 41,184, 29,183,169, 27, 89, 90,168, 69,138,228,225, 66,187,237, 23, 16,167,193,117, 20,246, 46, 35, 90,
-169, 70,163, 85,156,101, 14,120, 77, 84, 34,149,172,182,172, 54, 74, 84, 7, 85, 46,223,109,143, 13, 22,231, 5,182, 47, 26,148,
-171,102,247,187,237, 43,183,112,233,251, 83, 88,178, 40,166,138,205,225,100, 95, 50, 40, 85,218,228,250, 85,194,221, 66,123,108,
-120, 76, 51, 65,115,145,214,150,161, 37,154,132, 89, 13, 39,195,116,242,177,215,248,105,197,180, 35, 47,120,168,226,205,105,243,
- 57,189,158, 25,168,170, 33,169,137,167,177, 60,146,241,185, 8,246, 6,193,244,130, 65, 0,146, 8,196,131, 46,241, 91,131, 43,
-206,100,147, 87, 77,147,212,229, 48,251, 76,240,215,211, 79, 73, 50,211,220, 14,112,142, 68, 5,227,187, 45,202,106, 32, 16, 72,
- 0,223, 29,148,210,212, 92,183, 35,233, 31,162,243,160,209,233,124, 25,112,161,184,187,163,185, 51, 34, 63, 58,227,131,120, 83,
-170,147,233,118,147, 44,202,113,150,152,250,163,111,196,153,119, 10,221,142, 27,116,188,153, 48,153, 96,159, 12,248,202, 37, 72,
-198,248, 54,250, 69,151,109,251,190,214,214,200,241,107,178, 86,230,220,166,238,185, 96,217,113, 46,235, 45, 87, 21, 53,219, 86,
-231,169,204, 77, 62,159, 26,239,181,110,153, 50, 30, 76, 37,212, 94,142,195,174,178,251, 78, 69, 46,135, 23, 29,196,133, 99,108,
-248, 71,199,171, 65, 85, 94,249, 46,143, 99, 86,119,128,205, 7,180,136,210,247,113, 0,144,200, 87, 98, 84, 91, 83,129,116, 86,
- 4, 95, 68,120,211,225,211,102, 52,121,116,121,233,147,219,157, 99,142,160, 83,212,123, 33,145,237,166, 51, 80, 99, 17,134,243,
- 0,198,250, 99, 38,210, 50,144,109, 43, 29,120,113,198,217,109,199,157, 90, 91,105,164, 45,199, 28, 89, 9, 67,109,161, 37, 75,
- 90,212,122, 37, 33, 32,146,124,128,215, 14,253,164,222,219,221,157,224, 86,233, 59, 61,101,218, 15,111, 86,249, 34,155, 14,165,
- 92,161, 49, 88, 69, 18,210,176, 89,169,199,110,101, 41,155,170,176,220,103,222,151, 90,126, 19,172,190,154,124, 86,130,209, 30,
- 75, 79, 63, 37,143, 17,182,220,230, 77,175,244,142, 56,132,142,220,122,222,253,112, 91,245, 86,205, 92,140,191, 79, 85,221,100,
- 38,245,165, 74,102, 61, 69,151, 99,183, 46,153, 83,187,226,187, 77,174,184,128,224, 80,100, 59, 27,198, 13,148,165,214,201,230,
- 8,229, 94, 22,113,190,113,150, 83,230,244,153, 69,168,170,198,168,121,147, 65, 20,147,169, 23, 6, 24,228,145, 93,245, 13,211,
- 97,172, 88,173,193, 4,175,156,120,191,192, 25, 38,109, 81,146,214,231,119,174,163, 58,103,229, 65, 81, 52, 84,237,123, 17, 52,
-177, 70,232,133, 78,207,185,229,155,135,210, 65, 2, 71,219, 95,199,191, 8,187,217,187,147,118, 59,104, 55,194,208,220,189,198,
-166,208,234, 87, 13, 70,153,102, 59, 46,189, 76,133, 76,164,205,137, 79,158,183,238, 88, 81, 85, 78, 18, 91,151, 54, 58, 11, 41,
-148,167, 73, 89, 33, 4, 37, 68,109,254,160, 19,244,127,110,123,126,214,227,115,113,175, 26,237, 82, 45, 14,212,183,182, 43,113,
- 46, 74,213,102,160,164,196,131, 73,183,233, 85,139,126,167, 62,165, 57,121, 34, 52, 86, 32, 48,235,174, 30,161, 9,104,247,198,
-186,103,185, 63, 72, 83,125,183,147,120, 38,237, 23,179,215,133,198,183, 45,182,164, 77, 98,145,112,222, 16,174, 10,229,197,113,
-192,167, 58, 82,245,199, 30,212,183,230, 68,102,215,162, 45, 1, 42, 11,168, 75,116,161,181,165, 79,248, 14, 57,225, 53, 36,226,
- 95, 8,115, 26, 94, 38,172,201,120,104, 61, 93, 6, 89, 75, 4,245, 53,117,114,195, 4, 81, 25, 67,146,100,145,185,104,163,202,
- 74,160,212,224, 2, 73, 32, 18, 34,220, 41,227, 94, 89, 89,194,148, 57,247, 21,178, 81,102, 57,181,101, 69, 61, 45, 29, 20, 83,
-212, 77, 48,132,160, 2, 56,151,153, 35,155,184, 12,231, 66, 18, 85, 64, 4,128,101,135,165,168,156,219,158,223, 30, 44,184,114,
-221, 75,123,111,253,161,252, 36, 55,183,244, 42,247,131, 37,117,235, 78,155, 93,160, 92, 80,232,239,201, 68,119,171,244,186,109,
-102,169, 54,159,121,211,227, 40, 44, 58,212, 57,113,220,230, 73, 71,139,226, 0,218,186, 89,198, 87,182,211,135, 30, 14,235, 27,
- 75, 6,163,102,223, 59,171, 70,222, 93,176,167,238,197,161,117, 88, 18, 40, 31, 82,200,182,106,181, 25,180,248, 5, 70,177, 61,
-135,125,225,126,226,183, 10,124, 49,200,151, 18,149,128,224, 82, 83, 20,171,240,211,140,105,171,114,250, 40,178,177,152,182,106,
-143, 37, 52,148,179, 67, 60, 19,172, 66,242, 24,230, 71,208, 74, 13,202,146, 26,219,128, 70,248,152,209,120,173,192,245,116, 57,
-149,124,217,177,202,215, 39,120,227,171,138,178, 9,169,234, 41,218, 83,166, 46,100, 14,156,192, 28,236, 25, 67, 45,246, 36, 29,
-177,217,173,112,163,112,253,133, 28, 55, 95,188,105,212,248,162,173,202,171,215,108,187,186,163, 93,190, 47,125,152,175,202,157,
- 87,160,214,183, 90,175, 85,141, 82,118,228,122,179, 46,114,165,201,181,228, 73,126,179, 50,101, 17,245, 57, 25,115, 93,105,180,
- 56, 41, 5,116,160,202,240,191,237,190,220,158, 50,248,231,219, 77,158,218, 29,130,147,111,112,189, 93,145,119,193,184,247, 10,
-229,165,214,170, 87,151,189,209,182,206,237,185,233,142,205,168,210,100,170,143,106, 52,237,203, 71,166, 71,110, 59,134, 83,174,
-180,249, 30, 48,117,228, 33,185, 31,161, 92,200, 74,187,115, 37, 42,199,166, 64, 58, 74,170, 30, 49,240,218,181,169, 26,169,242,
- 74,252,226,140, 25, 82, 41, 81,156, 65, 43,200,129, 36, 40, 91,149, 48,104,217,133,136,150, 59,130, 25, 75, 17,133,169, 38,224,
-127, 20,232, 22,181,105, 35,207,242,236,146,184,136,164,154, 23, 84, 53, 16,164,110, 94, 33, 32, 83, 44, 44,178,170,155,131, 20,
-182, 33,149,130,131,134,126,151,176,123, 71, 74,180, 27,176,226,237,253,162,205,158,136,126,226, 45,102,173,218, 59, 86,224,136,
- 80, 27, 49, 69, 13,184, 98, 40,143,200, 0,228, 13,114,224, 99, 24,212, 4,189,180, 92, 57,109,223, 10,156,122, 93,182,174,205,
-192,141,105,218,119, 45,169,102,238,133, 50,218,161,145, 14,159,102,213,171,255, 0, 88, 69,169,211,168,140,199,193,165, 66, 53,
-106, 19,243,227,176,217, 74, 34,138,178, 89,140,150,163, 54,195, 77,254,136, 21, 90,173, 54,133, 75,169, 86,235, 51,225,210,168,
-244,120, 19, 42,149, 90,165, 66, 67, 81, 32, 83,105,180,248,238, 75,157, 62,108,183,214,148, 70,136,204, 86, 93,113,199, 22,160,
-132, 33,181, 41, 68, 0, 78,191, 57, 62, 35,175,107,151,218,161,237, 50,184, 37,109,235, 50,196, 29,229,220,202, 77,141,183,190,
- 43, 14,184,170, 30,215, 90, 80,163, 80, 97,220,243, 97, 43, 10,140,219,118,133, 14,117,126,160,198, 73,109,217, 50,144,146,162,
- 19,155, 39,192, 39,174,139, 62,226, 12,218,122,167,135, 34,160,161,145,235, 29,217,140, 69,217,213,208,184, 38,197,194, 71, 52,
-154,236, 88, 42,184,189,156,131, 86,125, 35,211, 47,155,135,120,111, 38,167,164, 73,184,135, 50,204, 35,142,133, 17, 84, 74, 17,
- 81,146, 64,132, 0, 66, 51,201, 4,122, 1, 10, 89,144,218,233,113, 61,206, 11,119, 14,189,187, 28, 40,240,239,185, 23, 75,138,
-118,228,190,118, 83,107,110,250,243,171, 32,173,202,197,203, 99,208,235, 85, 53,168,134,209,146,102,205,124,159,129, 61, 79,234,
-167,176,217,253, 55, 59, 75,100,210,182,231,110,237, 11, 38,133, 20, 65,162,218,246,245, 30,223,164, 66, 7,152, 68,165, 81,169,
-241,233,212,232,193, 88, 25, 13,196,142,210,123, 15,213,211,141,170, 34,178, 72,102,172,170,154,158, 62, 77, 60,178, 59, 34,126,
-202, 51, 18,171,255, 0,106,144, 62,236,116, 69, 12, 83,193, 69, 71, 5, 76,188,250,152, 98,141, 36,127,219,117, 64, 29,191,238,
- 96, 79,223,133,168,165,123,119,125,170,238,209, 91,175,240, 39,195,117,192,235,151, 29, 77, 14, 81,120,135,190, 40, 15,243,187,
- 74,135, 49, 41,105,123, 57,111, 76,138,162,181,214,165, 33,194, 46, 23, 26, 41, 49,152, 90, 40,225, 78, 63, 38,166,204, 61,237,
-246,205,251, 82,224,240, 79,182,174,108,238,209, 85,161,203,226,135,116, 40,142,253, 82,227, 78, 37,255, 0,226,146,206,156,167,
-161,191,184, 53, 54, 18, 8, 53,247,252, 41,108, 80, 99, 56, 82, 61,229,165,212,159, 75,177,161, 8,147,185, 93,236,136,246, 94,
-213,106,214,149,199,198,255, 0, 17,212,217,179,238, 10,173,173,115,221, 27, 61, 64,185, 22,228,217,136, 85, 70,147, 62,106,247,
- 98,229, 19,146,183,100,220, 18,214,234,221,164,120,203, 82,154,110, 66,170,174, 5,201,122, 11,177,110, 14, 3,225,236,179,135,
-178,212,241, 23,140, 33,215, 71, 11,133,202,168,154,193,235,170,175,228,151, 73,191,212,196,192,178,146, 8, 37, 76,132, 21, 68,
- 89,105, 31, 17,120,151, 54,226,108,214, 79, 12, 56, 34,126, 93,116,209,151,206, 43,214,229, 40, 41, 45,231,132, 50,145,245,242,
-169, 10,202, 8, 32, 50,196, 8,105, 29,161,210,223,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199,236,141,116, 43,233,
- 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,207, 95,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199,
-236,141,116, 43,233, 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,106,102,159,250,197,112,231,255, 0, 5, 39,
-255, 0,208,175,197, 59,147,255, 0,234,195,197, 95,252,124,127,255, 0,161,150,227,167,222,201,206, 30,246, 78,244,224, 27,134,
-234,253,209,181,155,125, 93,172,206,219,232,206,205,170, 85,108,219,118,161, 80,150,239,214, 85, 36,151,101, 76,151, 78, 91,146,
- 29,229, 74, 71, 50,212, 78, 0,235,174,142,127, 36,254, 28,127,249, 20,218,239,253, 65,181,127,255, 0, 21,168, 67,236,206,242,
-251,107,106, 27, 11,183,118,135, 14,118,230,248,218,123, 35, 96,219, 49,169,246,138,246,239,108,225, 81, 63,132, 20,246, 12,185,
- 95, 92,181,113, 85,232,203,170, 93,234,124,188,224,255, 0, 4,146,236, 21, 45,180,166, 60,100, 57,144,172,147,102,189,184,158,
-209,254, 22,247, 41, 54,175, 17, 19,170,123,167, 72,160, 84, 35,193,188,246,187,121,108,216, 86,109,253, 75, 99,149,165,201, 68,
- 43,134, 21, 2, 5, 86,143, 93, 49, 75,106,105, 85, 86,234, 49,190, 62,117, 68, 87,136, 87,168, 78,113,225, 63, 21,230,217,158,
-127, 91,147,241, 53, 5,117, 75, 84,212,207,236, 81, 87, 72,103, 68,121,153,145, 24, 4,229,164,150,101, 82,174,202,138,219,115,
- 58, 98,193,200,252,101,224,252,151, 41,225,202, 12,239,133, 51, 44,186,145, 41,105, 96,246,233,178,248,197, 59,201, 28, 17,171,
-186,157,124,201, 35,186,179, 6, 68,121, 25, 70,174, 95,164,237,173, 75, 62,218,177,233, 17,168, 22,157, 22,153,111,209, 33, 37,
-105,135, 73,163,193,139, 77,167, 68, 67,142,173,231, 17, 26, 20, 54,144,211, 9, 83,206, 56,178, 16,144, 10,156, 82,143, 82, 78,
-178, 93, 49, 28, 53,113, 19,183, 28, 85,108,189,139,190,123, 87, 80,118,125,159,125,210, 5, 74, 19,114,219,105,138,157, 46, 99,
- 18, 31,167,214, 40, 85,152,204,188,226, 34,214, 96, 85,226, 78,135, 45,180, 56,227,105,126, 18,252, 55, 93,108,161,197, 62,250,
-231,250,168,106, 41,170,106, 41,234,227,104,170,224,119, 73, 85,193, 14,178, 43, 21,117,112,119, 12, 24, 16,215,222,247,190, 58,
- 70,146,122, 90,170, 74,106,154, 41, 18,106, 58,136,209,225,120,200, 40,209, 58,134,141,144,141,138, 50,144, 84,141,172, 69,176,
-180,180,180,180,134, 54, 48,180,180,180,180, 48, 48,180,180,181,192,111,104, 5,251,125, 80, 56,143,220,198, 45,253,213,169, 89,
- 9,183, 54,167,110,238, 27,118, 11,123,151,122, 90, 50,220,172,139,138,158,153, 72,178, 45,251,125,102, 37,197,116, 63, 9, 82,
- 82,182, 38, 6, 89, 68,111, 26, 95,138, 30,142,216, 47, 57, 30, 78,249,221, 99, 81,164,226, 6, 84, 47,168,169,111,215, 68,181,
-129, 7,171,130, 78,246, 0,236, 78,216,215,169,168, 20,209,243, 10,234, 23,181,175,110,196,255, 0, 44,119,231, 75, 81,244,103,
-138, 29,229,219,186,190,226, 38,204,169, 55,100, 67,220,238, 34,247, 45,250,213,217,125, 65,164,205,147,104,206,165,216,118, 61,
- 94,129,106,212, 95,186,100,197,162, 91,207, 73,151, 86,156,153, 30, 59,169, 82,141, 53,244,196,109,181, 55,135,114,241,198,191,
- 22, 21,107, 15,123,247, 58, 21,239,182, 80, 41,252, 61,195,225,246, 85, 90,221,164,217,177,110, 10,125,254,238,232, 42, 29, 18,
-168, 34,221, 38,172, 62,174,129,245,162, 36,204, 82,163, 52,225, 82,101,134, 98,190,203,109, 37,110, 59,183, 5,230, 62, 70, 90,
-152, 57,114,114,192, 44,206, 14,169, 36, 72,144, 16,168,246,213, 43,132, 6,228, 91,204,218, 84,223, 8, 12,198, 29,193, 70,184,
-191, 64, 58, 0, 88,157,200,232,162,231,111,112,185,199,119, 52,181, 31,219,163,138, 13,215,187,247, 63,109,175,153, 87,125, 18,
-185,126,217, 23,151, 19, 82,104,252, 60,211, 45,201, 52,233,150, 71,240, 34,193,174,162,217,167,220,143,211,222, 93, 66,233,145,
- 84,147, 75,108,134,220, 72,230,113,130,136,203, 97, 74,115,194,187,218, 60,116,241, 71, 94,159,183, 22,253, 63,112, 54,166,175,
- 63,117,119, 39,104,237,104,115,229, 80,109,233,245, 11, 49,235,225,117,154,109,106,149, 86,182, 45, 90,232,117,138, 91, 85, 35,
- 79, 91,126,254,228,106,167, 37, 61,109,158, 66,226,214,144,220, 23,153, 8,213,214,162, 27,132,212,225,139,174,147,174, 69, 33,
- 78,131,172, 1, 25,109,118, 10,194,252,179, 32, 1,136, 25,140, 58,136, 42,221,108, 45, 99,125,129,245,219,115,107,117, 29,237,
-142,245,233,107,147,209,223,222, 43, 46,151,189,123,171, 87,168, 91,247, 45,193, 96,238,236,107, 86,163,184, 18,175, 13,204,135,
- 26,223, 51,155,219,155,122,229,185,225,109, 4,121,171,160, 11, 66,149, 6,229,173, 86, 75, 18,101,144,211, 81, 94, 47, 30, 86,
-130,245,116,153,197,253,205,104,175,125,224,212,119, 98,196,186,104,182, 78,217,238,236,253,159,220, 25, 80,109,250, 84, 61,204,
-189,109, 75,111,110,106,180, 88,240, 28,129, 37, 16, 46,122,140, 59,158,240,173,209,164, 71,165, 4,181, 37,202, 9,253, 10, 30,
- 67,199, 90, 31,253,157,169,144,255, 0,100,153, 42,109, 96,108, 24, 93,173, 25, 33,108, 27, 96, 37, 66, 3,232,144,141, 71,151,
-101, 98, 20,246,180, 31,222, 41, 75,252, 58,110, 5,250,122, 30,151, 3,109,247, 24,234,110,150,185,121,125,113, 27,190,246,141,
- 14,226,220,138, 85,122,149, 95,137, 79,221, 29,192,219, 42, 86,219,187,104, 69,247, 57, 66,135,195,181,213,186,212,122,171,149,
-122,104, 85, 74, 93, 76, 92,212, 56,173,120, 13,169,182, 94,140,242,153, 95,134,178, 36,161,188,127,125,171, 86,214,225,238, 11,
- 22,199, 16, 84,107,178,163,121, 39,108,124, 29,207, 68,141,169,183,108, 72,233,163,237,245,233, 92,170,211,106, 53,186,204, 89,
- 52,202, 39, 35,139,138,182, 99, 49, 2,101, 90, 83, 81,212,194,240,184,239, 73, 25,143,134,171, 36, 66,194,104,254,198,161,110,
- 97, 23, 14,138,202,199, 64, 11,164, 54,162,119, 6,214, 93, 86, 98,161,171, 35, 6,218, 79, 91,118,238, 9, 4, 11,239,126,158,
-238,246,218,253,134,210,215, 23,168,252, 66,238,173,122,152,237,253, 54,243, 85,110,231,171, 76,225,138,243,161,236,203, 18,102,
-193,102,123,213,219, 34,129, 34,173, 62,218,133, 2,172,137,173,218,242, 46,180,203,140,244, 86, 80,236, 39,101,213,208,220,211,
- 33,228,132,186,236, 80,248,135,221,139,146,237,218,187, 18,214,222,123,102,243,129,185, 51,246,200,220,219,133,110,217,182,220,
-151, 54,246,175,118, 89, 27,207,114,220, 59,126,196, 88,238, 61, 5,154,162,127,128,148, 71,161,179, 83, 67,181, 56, 13,161,255,
- 0,172, 27,152,151,144, 18,105,120, 98,178, 37,118, 51,199,104,151, 83,147,204, 1,108,138,237,184, 67,125, 33,173,125,181, 16,
- 66,106,107,129,133,173,141,136, 1, 79,155,167, 77,247, 32,119,239,248,119,182, 58,147,171, 69,118,187, 74,182,233,114,107, 21,
-153,105,135, 2, 47,132,149,185,225,188,251,206,189, 33,212, 71,139, 18, 28, 72,205,173,217,211,223,148,235, 45, 49, 29,148, 45,
-231,222,121, 13, 52,133,184,180,164,182, 60, 63, 94, 23, 13,249,180,118,173,203,117,202,141, 58,225,125,219,146,149, 84,168, 68,
-134,221, 57,154,140,139,106,235,174,219, 34,165,238, 12,168,183, 13,217, 13, 81,219,121,198,219,253, 26, 28,125, 73,108, 37, 1,
- 41, 13, 62,232,111,214,218, 88, 87, 53,221, 90,189,235,241,103, 84, 54,214, 35,223,192,237,191,166,243,212, 43,146,234,168,162,
-210,230,214,174, 85,210,219,108, 4, 84, 20,139,146, 5, 54, 10,228, 56,219,108, 55,239, 43,109,212,137,238, 41, 44, 50,192,240,
-207, 45, 59, 88,201, 19,178, 27,116,186,146, 13,137,182,215, 29, 72, 27,117,198,210,176,101, 86, 29, 24, 3,251,247,199,221,233,
-222,106,181,159, 75,167, 84,174,234, 93, 66,210,177,231, 69,184,235,115,168,180, 74,161,155,188,183, 37,187,104, 81,151, 91,175,
- 70,163, 80, 40,200, 81,166, 32, 83, 84,169, 82,149, 18, 91,178,216,139, 78, 83, 11,126,159, 42,107, 42,103,136,187,179,237, 34,
-226,147,119,235, 63,197,223, 8,251,124,189,158,219,184, 97, 16, 40,176,233,212,196, 92,251,157, 84,166,150,212,167,102,185, 76,
-180, 34, 77,106,221,117,114, 22, 2, 25,135, 45, 15, 52,181, 45,110,204,125, 71,175,108,182, 23,109,174,187,130,169, 84,222,157,
-223,125,186,149,249,123, 65,247,101,210, 60,100,212,104, 54, 69,155, 36, 7,224,237,133,176,149, 2,203,148,166,146,166,158,173,
-205,109, 3,235,170,160, 43, 86, 98, 69,134,211, 59, 51,104,216,150, 77,129, 77,110,141, 99, 90, 54,213,159, 74,109, 41, 66,105,
-246,205, 18,155, 68,137,132,126,169, 91, 20,232,205,165,197,117, 57, 82,129, 81, 36,146, 73, 39, 78,217,109, 94, 95,150, 60,146,
- 85, 80,254,145,169, 22,208, 11, 40,141, 58,223, 82,180,114, 93,186, 91, 96, 71, 98,164, 27,234,212,195, 81, 80, 21, 35,159,217,
-227,223, 81, 0,150, 61, 45, 98, 25,108, 58,223,168,247, 17,136,175,109,165,111,136, 46, 22,110, 90,253,251,188, 55,190,238, 65,
-226, 39,118,227, 73, 22,188, 43,214,173, 93, 15,170,216,230,151, 29, 53, 11,198, 13, 89,199, 26,118,108,119, 24,169, 38,135, 69,
- 37,232,207,174, 19,213,119,127,239, 68, 64,213, 43,151,138,189,231,148,233, 93,203,191,247,220,103, 10,148,232,142,246,226, 85,
-105, 32, 96,149, 21, 51, 79,141, 84,100, 37, 35,175, 68, 55,129,142,128,107,190, 92, 81,109,158,214,113, 35, 67,184,108,237,202,
-102, 60, 43, 2,198,163,212, 42,247, 21,248,211, 49,155,173, 80, 37,183,202,252,118,173,218,155,209,221, 83, 79,170,117, 53,160,
-227, 77, 36,169,228, 67,121, 32,178,242,233,207, 57,194,234, 71, 15,220, 39, 90, 75,109,193, 77,191,119, 2,124, 94, 96,220,151,
-161,219,182,108,103,243,144, 18,185, 21,119,174, 89,106,100,163, 0,129,224,171,201, 60,131, 83,252,135, 54,165,204,160,150,105,
- 50,197,106,184,152, 41, 60,176,194,223,170, 17,180, 5, 22, 29, 67, 58,155,146,119,189,240,193, 93, 73, 45, 59,170, 45, 73,228,
-176,184, 26,172,111,176, 36,139,220,223,181,129,216, 91,107, 91, 29, 21,246,100,113, 47,186, 91,235,125,110, 4, 59,162, 92, 75,
-222,214,164, 89,244,136,116,189,196,146,195,109, 87,221, 69, 6,164,227, 77, 68,157, 83,101,164,170,228,142,252,250,245, 93,166,
- 94,150, 12,132,127, 7, 30, 90, 93,113,183, 73, 87,102,245,197, 62, 8,247, 59,106,118,179,113, 23,103, 90,182, 36, 75, 2, 30,
-235, 85,168,116, 25, 13,199,172,212,107, 14, 87, 43,209,216,152,205,189, 33,239,126, 9,109,170,147,105,114, 75, 75, 16,216,138,
-219,177, 93, 46, 62,219,134, 27, 74, 71,107, 53, 4,226,104,132,121,180,197, 40,197, 20,114, 5,101, 80, 0, 13,113,230,112, 20,
-149, 23,107,139, 2,109,109,247,185, 47,153,107, 22,165, 75,205,206,101,184, 39,115,107,116, 27,128,122, 88,239,235,233,133,165,
-165,165,168,254, 55,240,180, 29, 66,161, 2,147, 6, 93, 78,169, 50, 45, 58,157, 2, 59,178,166,206,154,251,113,162, 68,140,194,
- 11,143, 72,147, 33,229, 4,178,202, 80,149, 21, 41, 68, 0, 6, 73,209,154,212,158, 53,182,250,255, 0,220,189,141,169,219,187,
-118,235,139,169,181, 89,166,213,106,148,134,158, 12, 59,113, 81, 32, 51, 52,201,162,180,181, 16,149, 58,102, 59, 6, 74, 80,165,
- 0,225,167, 6,243,149, 0, 88,184,159, 52,173,201, 56,123, 58,205,242,220,170, 76,242,191, 45,166,150,104,105, 34,254,242,162,
- 68, 66,203, 18,216, 19,118, 35,162,171, 57, 23, 8,172,214, 82,253,194,249, 85, 14,121,196, 89, 38, 79,153,230,209,228, 89,126,
-101, 83, 12, 51, 86, 75,253,221, 60,114, 56, 87,149,174, 85,108,160,245,102, 84, 6,197,221, 86,236, 52,131,138, 95,104, 4,186,
-199,214, 54, 22,197, 77,122, 13, 40,151,161,213,183, 5, 41, 91, 51,234, 13,245,109,214,109,116, 44, 5, 64,138,174,191,225,138,
- 1,245,164,254,133, 45,116,112,232,102,217,108,157,245,187,134,183, 88,166,198,146,138, 37, 30, 21, 78,171, 88,184,102, 54,243,
-205,188,244, 72,207, 77,118, 44,101, 40,243, 79,168,186,180, 97, 88, 36, 32,185,206,226,129, 32, 43,100, 54, 19,129,203,238,248,
-173,181, 55,114, 41,115,173, 91,118, 27,233,241,105,111,225,154,189, 85, 72, 80,230,100,242, 40,251,132, 63, 37, 44,159, 21, 64,
-225,180,167, 62, 34,123,107,102,109,165,171,100,219,108, 91, 52,106, 68, 40,116,214, 97, 24, 34, 35, 12, 33,184,233,142,182,203,
-107,104, 54, 7, 80,164,169, 92,196,228,168,168,149, 18, 73, 58,227, 46, 26,240,155,196, 15, 27,243,131,198,254, 48,212, 79,148,
-100,169,175,216,178,205, 50, 64,197, 79,217, 84,129,142,186, 74, 91,129,173,223,251, 93, 72, 91,234, 0,172,216,237, 78, 38,241,
-115,195,223, 3, 50, 97,192,254, 13, 83, 65,156,103,114, 20, 53,217,166,164,168, 64, 71,218,103,168, 81,162,174,168,169,109, 8,
-159,217, 41, 75, 17,164,144,208,226, 44, 52,185, 13,195,169,211,165,188,142,118, 98,207,137, 33,212, 30,203,109,137, 13,184,226,
- 8,249,165, 36,125,250,127,189,191, 59, 1,126,241, 15,193, 94,202,238,238,208,211,167, 93,244,109,151,184,170,119,101,215, 68,
-161,176,236,233,235,179,175, 10, 4, 24,142, 93, 76, 66,140, 20,185, 76,211, 95,167, 69, 50, 66, 18,165,179, 30,166,244,130, 3,
- 76, 60,164,211,226,127,101, 42, 59, 29,186,181,187,117,109, 62,187,118,168,251,213,155, 78,162,182,200,106, 93, 34, 91,202, 95,
-186,135, 57, 66, 85, 38, 43,203, 84,119, 64,193,253, 26, 87,128,151, 18, 75,183,195, 79, 26, 53,221,151,166,139, 34,240,164,187,
-122,109,226,148,224,141, 17, 46,182,154,189, 13,183,212,165, 72,102, 2,165, 31, 10,109, 61, 74, 90,213,238,238,148, 4, 41,106,
- 40,113, 41, 37, 5,151,232,189,226,236,127, 70,191, 20,115,188,175,140,233,189,135,151, 83, 26, 73, 43,163, 50, 69, 61, 47, 62,
- 45, 50,104, 12,254,207, 83, 5, 76,154, 39,141, 95, 65, 49, 74, 20,198,204,234,241,244,170,240,114, 79,164,247,132,249, 46, 99,
-193,117, 94,220, 37,165,149,227,137, 29, 21,229,130,168,211,204, 26, 46, 97, 84,246,154, 89,233,163,215, 79, 35, 71,204, 2, 88,
-139, 9, 21, 81,160, 87,169,110,253, 27, 78, 31,247, 14,201, 78,246,241, 53,120, 64,159,107,237,173,207,108, 82,237,139, 90, 69,
- 85,167,160,179,114, 68,163, 76,149, 92,175,220,241,144,248, 79,137, 70,138, 26,139, 29,153, 56, 45,188,228,137, 73,109, 71,193,
- 94,122, 95, 89,143,236,147,185,110, 37,110, 61,103,134,205,190,118,245,118, 71,214, 47,186,246,201, 80, 28,168, 63, 81,230,241,
- 76,135,214,152, 94,233, 38,103,139,215,198,113, 69,124,221,121,181,134,239,223, 25, 43,190,109,119, 54,195,105,109,159,226,243,
-110, 28, 97, 16,106, 24, 17,153,172,214,169,236, 0,134,169,158, 5, 63,244, 20,106, 55, 34, 82, 21, 29,165, 56,167, 82, 2, 22,
-180,183,204,210,189, 25,241,187,233,237,225,100,220, 3,152, 80,112,253, 92, 57,166, 99,153, 70,182,130, 10,152,234,164,119, 86,
- 89, 18, 33,201, 5, 97, 70,145, 87,153, 52,237, 25, 88,195,132,133,228, 42, 7,154, 94, 3,127,179,211,197,122, 79, 17,114,220,
-207,136,233,166,203, 50,220,174, 70,250,249,233,164,165,141, 17,213,163,121,155,158,193,230,117,141,219,151, 5, 58,200, 30, 82,
-133,230, 72,149,201,211,219,222,171, 18,185,121,221,181,168, 8, 8,131, 86,185,107,149, 40,105, 74,121, 64,139, 58,167, 42, 76,
-127,132,143,135,244, 78, 35,167,207, 77, 71,183,193, 83,207, 4, 92, 7,166,161,226,120,232,185,171,137, 62, 46,121,194, 5,131,
- 73,240, 82,160,174,160,134, 66, 7,221,173,145,216,173,173,169,238,230,227,208,109,120,108, 60,170,120,148,204,234,252,180, 33,
- 69,184,116,136,238,161, 82, 57,156, 72,194, 30,120,132,178,214,123,173,224,113,202,149, 17,210, 31,105, 23,179, 6, 31,180, 15,
-107, 54,119,111,211,186, 82,118,157, 59, 83,112, 85,238, 6, 95,131,103, 71,187, 17, 86, 21,122, 52,122, 72,130, 99,187,113, 83,
-133, 57, 44,166, 58, 86,149,165, 78,133, 5, 20, 20, 12, 5,107,144,127,217,239, 11,228,156,117,155,248,159,196, 50, 53, 6, 69,
- 81, 49,167, 14, 35,118, 89, 36,209, 81, 36,238,145,198, 25,217, 98,121, 98,141, 74,171, 13, 82, 58,223,200,246,236,191,246,140,
-186,241, 7,135,185, 87,133,124, 53, 18,230, 60, 67, 79, 0,168, 49,153, 35, 86,142, 62,101, 52,112, 70,242, 72,200,138,210,199,
- 20,210,176,118, 83,166, 56,218,223, 88,151,102,125,130,112,118, 42,169,192, 62,220,155, 3,248, 58,253,211, 14, 69,121,189,216,
-141, 20,197,250,250, 61,248,229,122,168, 93,114,229,109, 39,197, 75,206, 82, 17, 78, 84, 37, 57,240,170, 2, 88, 75, 71, 8, 80,
- 17,173,246,250, 13,156, 87,180, 78,224,103,100, 28,162, 63, 88,110,202,179, 25,220,245,218, 78, 69,118, 49,221,175,121,170, 25,
-141,184,237, 53, 69,181,220, 41,161, 42,215, 76,222, 83,227, 38, 98, 92, 68,140, 74, 75,192,117, 38,227,250, 54,119,189,161, 79,
-164, 73,216, 46, 46,110,123, 78,180,253, 25,154,101,232,154,149, 18,165, 73,135, 95,154,143, 16, 72,168,192,114,215,185, 18,237,
- 62, 19,168, 82, 1,129, 35,223, 2, 20,149, 45, 50,202, 86, 27, 67,243,193,111,209,227,219,173,146,220,107,127,118,119,231,112,
-164,239, 85,205,109, 84,218,174, 81,173,207,169, 81, 69,178, 35, 87, 35, 60,153, 16,234,149,118, 37,204,149, 42,232,125,153, 9,
- 75,205, 33,229,199,142, 93, 0,191, 29,240,156, 31, 80, 50,110, 36,240,255, 0,133,248,167,136,120,250,159,140,167,206,102,204,
-197, 81,139, 47, 20,147,199, 51, 60,242, 9, 52, 75, 52,159, 86,209,161, 80, 35, 44, 16, 5,210,199,204,186, 91,202,188,243,133,
-252, 73,226,222, 17,225,159, 14,106,120, 26,159, 34,131, 42, 52,130,108,204,214,211, 75, 2,165, 60, 92,190,100, 48, 71,245,171,
- 35,134, 38, 64,165,201,109,106, 60,175,173,120,101,186,226,227, 30,216,222, 31,145,113,169,212,222, 13,238, 7, 6,204,215,213,
- 43,196, 18, 19,114,181,106,109,123, 85, 19, 47,197,202,132,164,212,146,231,141,205,215,196, 74,201,235,211, 90,121,178,118,150,
-251, 86,248,244,118,209,176, 55, 14,149,181, 28, 67, 63,187,123,137, 77,165, 94, 87,124,150,160,183, 79,191, 68,251,137,138,172,
- 71,101, 79,167,202, 75, 85,121,111,253, 99, 25,144,182,148,167, 95,150,150,144,124, 71, 18, 12,191, 55,139,216,145, 27,114,184,
-246,164,241,181, 23,126,103,210, 85, 77,220,141,186,220, 36,237,202,118,242, 36,168,229, 86, 2,232,107, 69, 32, 92,230,240,109,
- 65,169, 66,136,128, 94,247, 2,166,125,229, 68, 33,194,145,159,188,127,251, 8,246,135,139,155,230, 86,246,237,181,237, 81,216,
-221,230,170,248, 18,174,153,244,186, 83, 85,171, 78,238,170, 68,109,180, 49, 90,169, 81, 81, 50, 35,244,171,136,165,166,146,236,
-232,146,128,119,194, 75,143, 69,117,254,103, 75,214, 91,226,215, 8, 67, 22, 85,150,205, 86, 35,138,175, 35,134,138,121,205, 36,
-147, 69, 73, 85, 26,176,229,203, 3,162,251, 69, 57,230, 48, 97, 30,180,109, 10,167,202,197,149,139, 52,240,103,141,106, 37,205,
-243, 72,104,140,147, 80,241, 4,245,244,244,226,182, 40, 37,173,163,149,163, 60,200,170, 35,145,189,154,161,121, 42, 80,203,203,
-117,214,204, 6,181, 8,220,174,226, 71,130,207,107,101, 91,105,167,218,220, 83,113,207,179,208,246,122,238,169,208,173,233,177,
-183, 54,243,164,208,173,170,181,102,101, 69,135,109,234, 98,103,201,178, 88, 45,207, 85, 69,134,150,209, 67,168, 82, 61,221, 78,
-173, 73,109,181,173, 58,117,197, 87, 1,155,253,192,167,179,178,235,160,238,229,199,101,215,173,141,200,226,147,102,174,107, 61,
- 22, 93, 90,117, 86, 35,117, 8, 59,103,187,240,170,243,222, 92,168, 76,160, 38, 69, 61,202, 40,109,109,115,248,137,137,146,174,
- 80,141,116,161,143,163,193,196, 46,228,213,168, 20,254, 34,120,219,187,111,155, 38,221,113,180,211,233, 77,199,185,174, 25,241,
- 97,167, 8,114, 37, 29,203,202,228,122, 53,190,165, 48, 57, 82,234, 35,200, 8, 29, 60, 21,142,154,234,183, 19,126,200,187, 31,
-124, 56, 36,218,238, 11,108,125,198,175,109,125,165,181, 87,181, 22,242,163, 87, 39,211,158,220,106,188,245,210,168,215, 85, 46,
- 68, 42,129,170,215,224,171,196,147, 34,233,147, 37,110,182,234, 91,105, 81,195, 44, 70,109,146,148, 54,214,158, 34,228,185, 53,
- 87, 15, 81, 71,196,212, 85,249,107, 87, 71, 81, 94,180, 57, 43, 81, 65, 18, 68, 85,227,149, 89,109, 43, 77,170, 53, 86, 9, 12,
-154,144,144, 89, 2,128,238,210,120, 95,158,231,148,156, 75,152, 73,194,149,249,118,106,153,124,148,217,123,102, 25,242,215, 84,
- 77, 36,193,146, 72,157, 90,240,164, 26,100,118, 66,243, 71,165,192, 96,175,172,152,216,127,163,207,182, 54, 85, 63,129, 26, 5,
-213, 18,131, 1,186,245,225,121, 94,117, 27,146,168, 35, 51,239,213,105, 84,250,195,212,170,127,190, 73, 8, 11,121,152,244,248,
-205, 54,202, 20, 74, 90, 10, 95, 32, 5,107, 39,133, 62,218,203,122,129,108,123, 96,109,245,210, 41,177,105,109,213,209,195,221,
-118,176, 97,180,134, 12,218,147,149, 56,208,159,168, 62, 91, 3,158, 81,133, 78,134,130,179,241, 17, 25, 57, 61, 53, 47, 47,103,
-175, 7, 75,224,115,135,139,127, 97,141,234,237,254,138, 5, 74,189, 81, 77,202,253, 13,187,113,201,102,185, 84,122,164,166,141,
- 41,170,164,208,194, 90, 47,114, 3,239, 11, 42, 8,230, 56,206, 53,160, 92,119,251, 21,218,227, 43,139,138, 79, 20,201,223,169,
-214, 59,244,232, 27,125, 4,217,141,109,212,106,251, 11, 22, 36,247, 38,120,191, 94,185,121,196, 82, 76,164, 44, 39,151,221, 15,
-128, 83,205,151,129,228, 17,110, 24,227,108,134,131,196,238, 46,226, 60,195, 51,120,242,140,217, 51, 4,134,110, 92,238, 92, 77,
- 42, 52, 0,198,177,153, 20,104, 81, 96,232, 2, 5, 0,233,176, 24,151,241,111, 0,241, 22, 99,225, 63, 5,112,190, 91,148,164,
-153,214, 76,249,107,207, 8,150,157, 4,109, 4, 46,181, 12, 36,105, 22, 38, 58,216,234, 40,236, 92,177, 35, 85,201,196, 94,166,
-255, 0, 4,227,251,102,171,138,226,141, 80,145,106,127, 43,106,227,151,155,183,111,130, 40, 41,134,253,197, 45,203,106, 77,100,
-206, 72,103,248, 45,250, 74, 26,201, 88, 17,189,203,148,159,208,106,118,219,255, 0, 77,225,202, 23, 11,155,155, 59,120,151,101,
-141,146,115,108, 43,142,220,242,235, 79, 83, 77, 2, 85,186,237, 13,231, 25, 76, 37,173, 94, 28,153, 78, 35,192,250,189, 49,242,
-243,146, 21, 28, 67, 5,242,214,185,225,237, 10,246, 37,236,223, 28, 51,160,110, 93, 50,230,159,180,155,231, 14,139, 6,141, 84,
-188,169, 20,168,245,170, 53,231, 14,149, 20, 69,166, 34,238,183, 93,151, 24,202,168, 48,195,108,176,204,230, 36,178,250, 35, 54,
-134, 94, 76,166,217,142,134,185,163, 99,253, 27,221,214,159, 80,165, 91,187,205,197,181,110,187,181,116,121, 33,246,109, 11, 90,
-155, 92, 73,125,180,171, 33,152,105,184, 43,142,194,160,169, 67,169,117,184,146, 84,156, 20,165, 25, 60,195,123, 59,206,248, 23,
-142, 41, 56, 79, 52,204, 56,182,110, 23,174,225,202,104,160,154,140, 82, 79, 49, 38, 34,167, 93, 35,197,104,209,156,173,149,152,
-146, 20, 70, 93, 84,165,153,191, 32,200, 60, 65,240,254,183,140,178,156,183,130,224,226,234, 14, 40,171,154,162, 10,227, 91, 4,
- 0, 9,129, 81, 29,108,114,131, 35,162, 6,187,162,128, 11, 25, 66, 51,137, 46,188, 20,224,130, 37,122,161,107,241,207, 22,205,
- 68,229,213,151,193,189,253, 34, 59,113,121,149, 53, 84, 40, 55,206,223, 79,185,147,150,134, 72, 22,172,106,177,123, 29, 60, 36,
- 57,159,135, 58,112,125,151, 27,107,197,206,231,238,109,253, 66,224,219,124,109,173,154,220,132, 90,144,164, 85,209, 87,159, 18,
- 13, 86,231,182,219,170,182,183,153,164,123,205, 6,114,159,102, 44,244,195,114, 64,108, 32,164, 58,218,149,148,246,148,183, 0,
- 30,195,186,103, 4, 59,219, 95,221, 41, 91,210,238,236, 81,174, 43, 18,191, 97, 78,179,235, 27,115, 6,133, 5,234,101,126, 92,
- 7,229, 25,178,149,117,212, 19, 61,159,118,131,224,173,133,199, 8,117, 50, 23,206,113,240,235, 95,184,128,250, 57, 52, 5,238,
- 92,237,211,224,251,126,238,109,132,155, 34,168,253, 90,157,107, 61, 18,125, 66, 21,175, 38, 90,150,227,236,218, 87, 93, 26,179,
- 18,165, 71,166,165, 75, 33,152,239, 9,107,109, 10, 40, 18,121, 2, 82, 39,213,158, 45,112, 93,125,119, 19,229,145,230,113,193,
- 73,155,199, 76,244,245,181, 20, 18,212,211,115,163, 69, 71,134,162,150, 72,214, 70, 81,203, 66,172, 80,165,217,219, 82,178,174,
-170,226,135,193,142, 59,203,114,254, 18,205,101,202,100,158,183, 36,150,174, 58,154, 26, 92,198, 42, 74,174, 68,178, 51,199, 61,
- 45, 92, 82, 52,106,228, 72,225,215,152, 30,200,138, 85,149,155, 79, 63,120,152,246,113,123, 73,247,246,235,219,109,167,226,139,
-140,141,138,188,175,178,213,122,187,181,118, 29,241,126, 64,166,221,115, 99, 73, 93, 54,159,112, 78,182, 41,145,237, 56,210,106,
- 13, 56,228,106,115,110, 33, 60,254, 41,132, 84,218, 23,238,207, 41,173, 31,246,169,108, 70,229,240,207, 70,224,147, 98,119,114,
-163, 71,170,222,187,125,195,213,118,150,252,234, 12,137, 18,233, 70,139, 43,118,239, 89,244, 56,177,164,203, 97,167, 29, 12, 68,
-146, 91, 60,200, 72, 79, 32, 74, 71, 40, 26,238, 94,204,253, 30, 26,228,253,212,164,238,167, 22,156, 77, 94,219,207, 82,164, 79,
-131, 56,192,167, 63, 93,167, 79,170,174,154,224,118, 27, 85, 91,234,181, 93,149, 83, 76, 20,173, 8, 10,106, 34, 99, 59,203,144,
-220,182,137,206,183, 63,218, 81,236,103,137,199,254,225,237,141,254,141,242,159,182, 63,197,206,219,177,183,108, 80,227,216, 76,
- 93,200,157, 30, 61,114,165, 89,102,162,106, 82,110,248, 10,142,176,154,138,153, 45, 22,157,230, 12, 37,207, 23, 42, 41,211, 54,
- 91,226,118, 67,149,113, 15, 14, 82, 84,113, 37, 61,110, 65,151, 37, 76,179, 61, 46, 80,244,112, 67, 83, 36, 82,198,139, 2, 70,
- 26, 87, 71,230,182,191,169, 81,168, 7, 46,218,138,163,238,105,225, 55, 17,103, 28, 53,197, 21,180,220, 43, 85, 67,196,121,172,
-148,176,195, 29,102,117, 29,117, 68,244,145,205, 12,142,213, 15, 41, 72, 99,120,249, 43,203,250,242,218, 47, 24,141,116,134,125,
-234,246,125,236,206,223,237,103, 9,155, 11, 64,179,173,250,125, 38, 3, 59, 97,100,212, 92, 17,163, 54,202,230, 85,234,214,237,
- 54,167, 88,172, 76, 82, 19,151,234, 82,234, 82,100, 72,125,213,100,173,199,207,100,132,164,111, 48, 24, 24, 29,135, 65,166,203,
-102,236, 37,237,126,216, 88,187,122,185,202,169,155, 50,212,183,173,113, 82, 83, 9,138,169,233,160, 82, 33,210,147, 53, 81,146,
-234,196,117, 58,152,129,101,176,181,132, 21,242,133, 40, 12,150, 11,143, 78, 49,236,142, 6, 56,109,189,119,206,237,247,106,133,
- 98, 35, 63, 80,109,189,164,235,165,183,175,125,198,171, 71,147,252, 28,183,209,200,180,173, 16, 18,168,242, 38, 84, 93, 65,230,
-143, 77,165,203,121,176,183, 80,219, 78,115,121,134,183, 63,207, 30, 26, 53,122,250,236,222,165,132, 99,114,242,188,210, 27, 18,
- 91,123,146,215, 98,214,176,185,107, 0,113,212, 98,122, 30, 27,225,232,231,174,100,203,178,252,150,145, 76,135, 96,145, 71, 12,
- 64, 48, 1,118,178,133,178,170,222,230,193, 65, 36, 12,113, 23,233, 10,251, 69,127,139,219, 56,240, 51,180,149,207, 14,246,220,
- 58, 76, 90,158,253,213,105,238,225,251,107,110,170, 45,166, 69, 35,111,195,236,175,154, 61, 90,224, 64, 68,138,131,100,165, 72,
-161,165,182, 28,109,216,245,192,166,197,250, 63, 62,207,199, 44, 27, 45,238, 46,247, 46,142,166,111, 45,207,164, 38, 30,218,192,
-168, 71, 90, 31,183,118,209,231,218,148, 43,105,105,228, 15, 10,125,126, 68,104,146, 26, 88, 10, 34,147, 18, 26,217,112, 38,161,
- 37,189,113, 27,217,255, 0,195, 62,227,251, 81,184,218,174,223,155,197, 50,161,115,219, 13, 92,234,221, 61,253,186, 37, 37,214,
-218,174, 63, 83,168,185, 34,149, 99, 68, 49,148,129, 0, 85, 37, 71,114, 43, 76, 50,166,145, 6,141, 74,151,238,188,134, 52,102,
-151,250, 18,218,182,237, 58,213,161,211,168,148,168,145,160,194,167,196,143, 18, 60, 88,140,183, 30, 52,118, 35,180,150,153,143,
- 29,134, 82, 16,203, 8,109, 41, 74, 16,144, 18,148,164, 37, 32, 0, 53,117,113,253,101, 39, 0,112,165, 23,134, 89, 44,193,243,
- 42,197, 90,140,226,116,234,236,225, 88, 67,126,160, 61,151,202,108, 86,153, 34, 86,213,206,123,208,254, 27, 80,214,248,145,198,
- 53,254, 44,103,208, 52,121, 85, 11, 61, 54, 73, 76,251,132, 68, 44,166,123,116, 38, 59,183,152, 92, 53, 84,146,178,149,228, 32,
- 25, 10, 82, 18,144,148,140, 4,128, 0,244, 3,160,215, 62, 61,164, 30,208, 29,190,246,125,108, 68,221,193,174,166, 21,195,185,
-183, 74,103,208,246,111,110, 92,144, 91,126,238,186,153,142,218,156,168, 84,144,203,169,118, 61,155, 75, 18,162, 72,171, 73, 65,
- 65, 8,121,152,108,172, 76,155, 21, 42,223,186,157, 78,157, 69,167, 84, 43, 21,138,132, 42, 77, 34,147, 10, 85, 74,169, 84,169,
- 74, 98, 13, 58,155, 78,130,195,146,166,207,159, 54, 83,137,106, 28, 38, 99, 52,235,142,186,226,146,134,208,218,150,181, 4,130,
- 71, 9,184,174,225,239,128,223,109, 5,235,103,196,178,120,186,133, 90,187,118, 26,145,116,193, 93,191,180, 87, 53,159, 80,147,
- 34,153,115,212,232,158,253, 88,147, 10,183, 72,146,245, 74,148,212,218, 52, 38,155,157, 7,154, 22,102, 37, 42,117, 74,117,156,
-212,252, 35, 69,149,207,156, 82,213,241, 20, 21, 13,195, 52, 45,174,178, 72, 34,146, 64,163, 75, 24,163,145,145, 78,133,154, 64,
-177,177,184,109, 37,180,144, 64, 34,228,227, 92,195, 55,166,201, 42,232,248, 98,122,101,226,188,193,116, 80,199, 81, 52, 81, 22,
- 98,202, 37,146, 53,145,135, 49,160,137,154, 69, 91, 50,235, 85, 12, 10,155, 24,223,112, 43, 69,217,158, 45,184,165,187,120,165,
-246,138,241, 35,182,116,170,123, 23, 91,119, 61, 74,223,220,203,198,221,164,212,247, 82,240, 90,154,145, 18, 4,155,122, 83,169,
- 76, 13,179,165,195,106, 27, 94,232,150, 88,134,243,109, 69,164,194,109, 80,163,204,105,153,125,220, 94,209,127,103,156, 61,184,
-186,232, 52, 94, 47, 56,125,117,247,237, 26,244, 24,113, 99,110, 45,186, 93,145, 37,234, 60,166, 35,176,203,104,151,241, 45, 78,
- 41, 9, 74, 64,234, 84, 0,215, 43,127,189,146,225,251,255, 0,151,141,236,252,108, 47,255, 0,212,117, 98,186, 62,141, 70,193,
- 80,109,171,134,184,206,250,111, 75,206,209,168,117,106,171, 77, 58,108, 79, 9,215, 41,240, 31,150,134,220,228,180,193,240,212,
-166, 64, 56, 32,224,156, 28,234,227,226,156,231,194,238, 48,205, 41, 42,234,248,179, 49,165,167,161, 88,226,165,164,134,136, 37,
- 61, 52,107,164,104,141, 76,102,218,138,130,204,119, 54, 10, 44,136,138, 40,222, 15,200,252, 93,224,124,162,178,142,139,131, 50,
-202,202,154,247,146,106,202,201,235,245,213, 85, 72,218,137,121, 92, 72, 47,160, 51, 4, 81,176,187, 49,187,187,179,241,151,216,
-125,188,123, 87,177,188,108,155,223,120,111,251, 87,109,173, 15,226,150,243,164,127, 8,239, 10,196, 74, 37, 35,235, 57,181,155,
- 69,248,144, 61,246,107,137, 71,189, 56,212, 57, 74, 66, 51,149, 6, 20, 64,192, 58,156, 37,241,179, 92, 40,241,203,106,237, 46,
-225,220,246,214,221,239,165,175,107, 85,218,191,118,150,241,196,122,245, 54, 52,165,184,202, 93,157, 69,169, 68,120, 38,161, 71,
-146,245, 54, 31,189, 67,112,189, 2,106,233, 81,140,168,239, 42, 43, 5,184, 0,123, 51,184, 59,180,120,227,226, 73,123, 35,122,
- 92,215, 45,167, 72,254, 47,238, 75,185, 21, 91, 80,210,133, 79,223,104,181, 43,126, 19, 17,149,245,197, 62, 75, 62,234,182,234,
-239, 21,254,143,159,153,164,114,168, 12,131,250, 11,240,185,177,214,207, 9,155, 29,181,187, 7, 78,186,100,213, 41,118,141, 53,
- 54,133,175, 62,230,151, 77, 98,183, 95,122, 59, 21, 90,234,227,165,168,172,176,212,202,144,167,198,170, 72, 83,113,218, 4, 70,
-167, 60,241, 64,109,167, 22, 49,227,201,203,105, 56,158,154,191, 47,204,234, 97,226,113, 20, 74,241,160, 40,145,211,114,230, 28,
-196,153, 44,218,218,229, 29,117,125,130,110, 45,140,253, 29, 23, 52,173,225, 42,188,187, 50,202,105,103,225, 38,158,102, 73,100,
- 43, 36,146, 85,137, 41,207, 41,224,123,174,133, 0, 58, 57, 91,243, 2,216,220, 12, 63,180,219,118,145, 74,138,212, 72,144,152,
- 67, 77, 33, 40, 72, 13,164, 97, 41, 24, 0, 0, 58, 12, 1,168,214,125, 36,238, 26, 44,170,175, 15, 59,113,196,205, 42,137, 14,
- 22,224,216, 59,137, 73,176,171, 53,136,200, 98, 51,213, 75, 2,242,167, 86,221, 76, 42,145, 5, 42,168, 46, 29,213, 78,163, 42,
- 16, 60,230, 50, 42,243,249, 18, 18,251,170, 18,111, 4, 30,160,228,122,141, 71, 19,233, 42,111, 69,183,107,112,145,182,219, 37,
-239,241,156,189,119, 91,118,169,119, 3, 20,143, 17,179, 37,155, 43,111,169, 53,105, 85,170,210,208, 57,148,210, 5,199, 87,180,
-163, 53,144,128,239,189,200, 40, 89,247,119, 16,170,219,194,167,174, 95, 16,120, 99,216, 11, 9, 94,160, 7,211,125,224, 42,220,
-240,214,234,188,157,100,223,109,175,219, 22,175,140, 41,151,191,134,156, 91,250, 68, 41,133, 41,137,143, 85,182,168, 14,158,207,
-166,253, 27,157,160, 45,183,222,221,240,212,253, 25, 45,199,171,212,118,115,136, 29,176,151, 33,247,169, 54,142,229, 80,110,122,
- 75,110,168, 41,184,138,190, 45,181, 67,159, 26, 49, 42, 42, 67, 62, 61,152,135,139,120, 8, 14, 76, 91,137,202,221,112,234, 82,
- 58,139,207,209,155,219, 90,149, 31, 99,247,187,115,230, 71,118, 60, 91,231,115,160,208,105,106,117,183, 80, 38,192,177,109,214,
- 20,185,241,212,165,114,187, 24,213,110,170,156,110,100,164, 31, 22,152,242, 20,163,202, 2,101, 13,163,120,178,105,219,196, 78,
- 41, 52,214,229,243,208, 27,116,230, 8, 34, 19,125,252,208,250,189,247,193, 60, 25, 90,149,240,199,132, 5, 93,249,190,206,228,
- 95,175, 40,212, 76, 97,251,185, 38, 61, 63,225,181,182,194,210,210,210,213,119,139, 59, 11, 75, 75, 75, 67, 3, 11, 86,231,168,
-244,137, 50,219,159, 34,151, 78,126,123, 74,105,109, 77,122, 12,103,101,180,182, 20, 20,202,155,146,182,138,208,164, 40, 2,146,
- 20, 10, 72,200,193,213,199, 75, 89, 4,141,193,177,247, 96, 98,222,186, 77, 45,198,165,199,114,155, 79,113,137,239,123,196,230,
- 87, 14, 50,154,153, 32, 41, 11, 15,203,109, 77,226, 67,220,237,182,121,150, 10,178,128,115,144, 52,195, 92,219,245,176,182,149,
-122,185,103,220,245, 58,117, 38,177, 14,165, 62,137, 88,166,205,183,100,165, 18, 94,180,182,226, 54,233, 43,153,126,224, 91,159,
- 5,155, 45,232,238,197, 88, 82,208,167,241, 10, 62,100,128,214,182, 39, 90,175,186,220, 34,237,174,239, 92, 87,189,203,114,202,
-174,179, 62,249,180,173,155, 70,114, 96, 73, 97,182,233,177,104, 55, 4, 90,205, 74,117, 39,196, 97, 70, 44,234,189, 58,155, 70,
-165,212,213,146,151,233,244,134, 89,229, 24, 36,239,229,230,133,166, 97,152,203, 44,112, 21,216,197, 98,193,245, 40, 4,130, 13,
-194,173,216,141,137,210, 0, 32,219, 9, 75,204, 10, 12, 42,165,129,253,111, 75, 29,135,199, 97,247,227,225,226,159,135, 84, 56,
-170,163,213, 95,119,172, 38, 13,219, 88,247,105, 22,125, 85,171,145, 66,203,155, 66,162,214, 18,136,138,166,123,195,149, 5, 46,
-227,166, 8,173,167, 43,148,194,220,113,158,102,153,112,164,250, 39, 17,220, 62, 92, 21, 58, 93, 58,145, 81,141, 34,185, 94,151,
- 97,212,226,211,133,167, 80,106,170,170,149,249,112,215, 45,203,118, 92,198, 28,166,133,197,168, 51, 86,164, 85,125,241,199,121,
- 87, 1,181,165,233, 10,109, 15,161, 74,182,220, 60, 32,109,125,201,123,215, 47,185,174, 86, 27,170, 87, 55, 43,109, 55, 45,216,
-204, 61, 29, 48, 33,205,219,106, 84,138, 75, 84, 24, 49,212,193, 12, 91,213, 70,167, 84,156,170,176, 58,201,118,122,151,204, 20,
-134,139,116,232, 92, 31,109,165,187,120,209,239,138, 92,218,235, 53,202, 30,226,110,142,227, 66,113, 79, 68,117,145, 63,115,169,
-177,233,206, 81,214,211,177,136, 85, 10,144,168, 20,183,233, 12,118,138,245, 57, 11,202,185,222, 14, 56,145,195,220,178, 86,106,
-161, 46,139,128, 74,144, 27, 78,161, 30,201,246, 67,125, 94,175,251,237,109,176,143,246,189, 67,202,133,111,239,189,175,107,245,
-235,111, 53,190,235,247,192,151, 23, 20,214,213,149,120,238,245,161,112, 90,149, 90,123,118, 93,223,110,218,116,155,146, 37, 34,
-165, 34,213,175, 92, 87,142,216, 91,119,181, 10, 5,199, 93,102, 0, 98,139, 83,155, 86,172,154, 91, 40,230,144, 74,145, 17, 79,
-169,147, 50, 58, 23,100,166,241,143,176,110, 91,118,252,155,150, 60,202,122, 85,111, 48,244,196,211,236,186,197,114,218,166, 92,
-206, 88,209,239, 59,138,199,163,207,137, 73, 87,214, 85,120,214,244,153,202, 90, 88,103,194,117, 48,100, 69, 14, 42, 91,110,197,
- 77,226,167,194, 53, 62,224,168,214,164, 92,187,177,184,117,202, 93,207, 86,176,238,171,166,132,252, 75, 34, 52, 75,138,247,219,
-171, 22,218,178,232, 23,101, 70,124, 75, 81, 19, 90,146,100, 90,180,154,171,241, 99, 73, 98, 19,149, 8,201,195, 8,139,207, 29,
-204, 89,174, 3, 54,230, 28, 89, 84,218, 93,213,112, 83,169, 85, 8, 13,183, 62, 50,109,173,179,153, 84,126,170,109,166, 45,137,
-213, 38,111, 9,246, 59,149,202,124, 73, 44,199, 68,199, 96,199,169,183, 24, 77, 91,133, 9, 76, 55, 93,134,181,227, 28, 52, 99,
- 65, 52,210, 44,161, 35,212, 99, 50, 88,176,141, 85,236, 90, 50, 67, 23,214,214,210, 86,214,179,139,144, 10, 77,101,201, 85, 4,
- 92,245,183, 75,220,116, 61,133,133,239,123,246, 56,201,110, 78, 45, 54,210,143, 71,187, 69, 26,206,190,106, 23,221,159, 10,239,
-174, 77,176,164,109,229,114,157, 93,162,200,181,109, 26, 5,194,253,122,230, 66,160, 17,111,208,220,164,222, 86,170, 68,245, 41,
- 75, 91, 85,192,134, 91,117,109,188,218, 1,107,139,222, 30, 41,208,160, 38,182,212,154, 96, 81, 98, 34,164, 83,236,138,173, 86,
-132,229,233, 73,143, 2, 77, 86,210,160,202,167, 82,150,229,102,224,167, 57, 85,155,240,177, 28,130,105,117, 4, 48,181,191, 26,
- 67, 73,200,239, 78, 20,232,247, 93,227,184,151,181, 59,113,239,187, 58,175,186, 16,107, 20, 59,177, 20, 6,109, 25, 81, 38, 91,
- 85,235, 26,194,177,234,148, 36, 49,113, 91, 83, 67, 13,174, 54,221, 80,228,162, 75,124,147, 24,118, 76,180,176,251,104,120,114,
- 97, 71,129, 29,185,102, 75,134,157,116, 87,233,212,215,107,237,221,142,192,102,217,219, 23,234, 46,220,107,153, 26,125, 70, 66,
-175, 41, 86, 50,235,200,165, 73,156,220,169, 11,130,138,162, 26, 67,243,150, 16, 68, 68,166, 32,196, 67,134,204, 81,243,102,154,
- 55, 96, 25,172, 90,225,180,141, 75,126, 89, 22, 86,190,141,141,197,203, 50,155, 12, 6,246,205, 70,202,164, 3,177,176,251,143,
-218,190,227,175,167, 96,112,231, 92,188, 65,108,253,156,237, 21, 85,234, 37,205, 77,117, 54,204, 75,162,127,188,109,197,114, 52,
-173,190,178,220,185,255, 0,131,148,235,130,242,141, 38,152,219,246,149, 21,117,198, 37, 41,160,227, 97,192,213, 50, 76,191, 5,
- 44,199,113,212,227,232,226,211,100, 21, 21,169,244,186, 61,249, 82, 97,202,109,126,252,241,169,187, 81,118,165, 40,183,173,245,
- 24,119, 77,250, 28,149, 70,101, 47, 81,162,201,144, 35, 61, 61,165, 56, 94,122, 73,102, 57,144,174,112,155,149,235,194,253, 54,
-254,147, 62, 77,127,114,247, 1, 75,185,109,201,150, 53,252,136,169,180, 27, 69,243,183,234,190,107,183,181, 30,208,169,151,173,
-119, 21, 76,139, 79, 23, 21, 86,150,196,154,122,162,203,114,155, 49,212, 72,121,217, 74, 76,164, 52,251,165,194,237,235, 26,209,
-179,173,109,147,172, 76,141, 81,133,182, 87,238,208, 87, 46,106,213,219, 71,163, 71,122,208,188,167,211, 39,166, 53,106,131, 47,
-109,107,104,172, 50,153,222,250,242,158,167, 46,147, 80, 97,184,166, 59, 47,172,204, 15, 66, 37, 60, 57, 12,220,152,228,168,144,
- 77, 35, 16,197,159, 68,106,161, 88,234,102,104,191,104, 88, 1,114, 84,173,192,114,193,114,237, 84,161,152, 32, 33, 64,176, 2,
-228,155,141,128, 13,233,248,131,216, 12,110,107,245,216,236,216,210,174,155,102, 19, 51, 24,254, 12, 74,185,104,144, 74,126,174,
-102,127,139, 76,118,175, 5,151, 65,108,123,159,142,181,183,206, 74,121,146, 94, 82,148, 50, 14,180,215,116,165,219,144, 32,213,
-182,215,234, 10, 53,122,167, 42,135, 42,149,118,221,213, 70,214,169, 21,107,134,188,202,229, 86,106, 18, 4, 96,219,174,148,212,
- 36,135,144,147, 32, 54,202,144, 24,109,164, 55, 29,160,157,199,135,107, 57, 22,193,139,100,166,162,160,236,107, 61,139, 88, 85,
-154, 99,195, 80,113,154, 42,105, 34,162,212,101, 58,174, 69,115, 39,197, 74, 10,206, 14, 19,204,123,235,144, 59,209, 19,116,167,
- 75,115,110,234, 52,115,107,213, 46,219,210,159, 99,220,151,204, 58,236, 73,212,214, 41,117,135,213, 18,124,250, 47,142,152,243,
- 99,207,171, 72, 8,129, 8,201,140,219, 77, 59, 90,111,154, 74,212,166,148,189, 76,174, 26,121,106,106, 29,239, 34, 68, 9, 80,
-110, 46, 9,181,201,219,183, 91,237,190,248, 60,236,234,136, 7,148,183, 95,203, 29, 10,217,141,236,135,113,237,133,155, 34,137,
-104, 94, 55, 7,131, 64,143, 79,110,109, 18,136,236,138, 4,185, 20, 96,229, 38, 91, 17,174, 7,228, 6, 36,186,204,216, 18, 99,
-188,239, 63, 35,146, 34,186,166, 84,235, 74,109,197,229,117,203,231,113,228, 81, 38, 76, 27,115, 80,181,169, 66, 35,130,109, 86,
-161, 91,167,203,170,192,109,238,102,132,198,233, 52, 53, 63, 33,184, 44,146,133,204,125, 1, 82, 99, 70,241, 95,139, 22, 83,173,
- 37,181,115,182,167,188,183, 37,129, 6,159,182,219, 79, 95,118,221,177,236,232, 45,208,224,166,152,212, 39, 19, 54, 68, 95,130,
- 92,184,146,164, 69, 83,145,233,254, 40, 83,113,195,107, 72,113,182, 68,151, 7,140,251,152,109,170, 91,157,184,213,165,133, 85,
- 47,171,178,127, 33,230, 75,114,171,213, 23, 35,250,156,199, 84,159, 15,147, 25,200, 41,229,229,200, 61, 52,228,156, 45, 83, 33,
- 46,213, 9, 12,109,184,184, 98,214, 61, 46, 54,177,183, 93,246,239,141,118,204, 17,118,208, 89,135, 93,192, 23,247,125,248,187,
-241, 61,191, 16,171, 20,120, 91, 43,100, 59, 38, 45, 50,223,155,227,110,163,143,165,182,103,212,183, 14, 41,104,204,160,206,247,
- 98, 91,122,157, 79, 90, 99, 41,149, 50,183, 97,190,216,132,184, 46, 57, 2, 52, 39,156,210, 5, 41, 40, 66,220, 89, 66, 27,109,
- 42, 90,220, 95,192,219,105, 72,202,150,226,212,112,218, 7, 82, 73, 32, 0, 59,247,214,204, 79,218,105, 60, 77, 67,171,238, 54,
-206,186,245, 31,112, 40,173, 83,169, 53,218, 12, 24,116,183,153,221, 11,113,130,220, 51,122, 91, 76, 85, 22,150, 26, 76, 26,164,
-146,195, 50, 28, 10, 83,241,203,235,111,199,134,228, 45,102,150, 23,179, 43,113,174,103,163, 78,220,186,172, 10, 83, 3,192,117,
-104,185,234,127,195, 25,237, 41, 32,164,174, 53,175, 72, 83, 84,104,143,114, 21,146,164,150,212, 20,190,185,198, 4,179, 46,173,
-203, 50,156,190, 58,121,100, 74, 87,131,103, 86, 97,169,159, 98, 92, 0, 11,184,125,138,176, 91,105, 32,109,107, 6,154,136,106,
-106,106, 25,213, 76,161,250, 16, 54, 3,176, 36,216, 2, 58, 17,126,183, 62,252, 48, 60, 43,109,125, 79,127,119,214,218,118,158,
-185, 44,218, 22,100,195, 85, 21,152, 78,173,176, 24,129, 33,164,215, 46, 72, 51, 89, 87,232,220,113,192,221, 34,148,242, 50,174,
-121,115,101, 55,205, 29,104,115, 82, 78,211, 25,177, 59, 3,102,236, 21,187, 50,139,108,185, 46,165, 62,173, 33,153, 53,170,245,
- 73, 17,145, 54,114,162,180, 89,135, 17,150,162,180,148, 67,165,176,133, 61,224,176, 57,202, 21, 37,197, 41,197,149,100, 62,122,
-131,113, 6,106,185,165, 96,104,175,236,208, 11, 33, 34,197,137,182,166, 35,168,189,128, 0,244, 85, 23,220,156, 61, 80,210,154,
-104,136,127,239, 28,220,251,189, 7,243, 39,212,156, 45, 45, 45, 45, 48,227,119, 11, 95, 8, 4, 16, 70, 65,232, 65,215,221, 45,
- 12, 12, 83, 67, 45, 53,146,219,104, 65, 61,202, 82, 1, 63,128,213, 77, 45, 45, 12, 12, 51,123,215,177,246, 78,250, 90,142,219,
- 55,132, 15, 17, 77,169, 82, 41, 53, 88,229, 45, 85, 40,211,185, 57, 19, 46,159, 36,164,248,107,198, 2,208,160,166,221, 72,229,
-113, 10, 24,199, 21, 55, 95,128,189,229,176,101,201,126,218,136,213,251, 65, 75,139, 49,164, 82,249, 99, 86, 27,103, 36,161, 50,
-233, 82, 22, 57,221, 9,192,203, 14, 59,205,140,242,163, 60,162, 65,250,242,180, 33,192, 82,180,165, 96,247, 10, 0,143,219,170,
-147,196,127, 5, 56, 23,196,226,149, 89,229, 28,148,121,204, 74, 17, 43,169, 25, 98,168,208, 62,202, 73,169, 94, 41,209,127, 84,
- 75, 27, 50, 11,136,217, 1, 55,183,188, 54,241,191,143, 60, 47, 87,165,200,171, 99,172,201,165,114,239, 65, 86,173, 45, 54,179,
-246,158, 61, 46,146,192,237,250,198, 41, 21, 92,216,200,174, 64,180, 88,213,177,251,198,219,222, 2,182,186,252, 11, 10,228,255,
- 0,246, 90,178, 91,207,151,233,189,211,147, 31, 62,108,117,239,167,207,108,248, 36,222, 91,238,100,115, 87,165,127, 3,105, 10,
-113, 62, 60,170,176,241,106, 37,172,142,111,119,166, 48,172,135, 49,156,120,203,100, 12,103,174, 48,100, 58,105,148,245, 30, 99,
- 13,130,123,231,195, 26, 33,168,236, 50, 48,211, 77,182, 63,217, 72, 31,208, 53, 83,100,223, 67,239, 15,232,107, 82,167, 52,206,
-115, 28,238,154, 50, 15,179,179, 69, 4,111, 99,246,100,120, 99, 18,149, 61,249,111, 17,244, 97,139,115, 58,250, 99,248,133, 95,
- 67, 37, 46, 85,146,229,217, 29, 76,128,143,104, 85,150,162, 68,184,251, 81,164,210, 24,131, 14,220,200,229, 95,240,156,107,150,
-193,112,227,103,236,125, 9,184, 52,136,161,218,131,220,143, 84,106,146,130, 29,168, 84,101, 37, 56, 15, 74,120, 32, 14, 80, 10,
-130, 27, 64, 13,182, 9, 8, 72,201, 39,100,244,180,181,212,185, 94, 87,151,100,153,125, 38, 85,148,209, 71,151,101,180, 40, 35,
-134, 24,148, 36,113,160,232, 21, 70,221,110, 73,234,204, 75, 49, 36,147,142, 85,205,115, 92,203, 59,204,106,243,108,222,182, 76,
-199, 50,175,115, 36,211,204,197,228,145,207, 82,204,119,233, 96, 7, 69, 80, 21, 64, 0, 0,180,180,180,181,191,134,252, 45, 45,
- 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12,104, 15, 16,151, 95, 24, 54,239, 17,123,
- 83,103,109, 12, 84,212, 54, 75,118, 69,182, 47, 27,216,219,148, 90,131,187, 24,189,180,184,101, 92,219,132, 23, 42, 76, 82, 37,
-139,234,202,151, 77,160,210,125,241,138,135,213,181, 58,116,137,140,248, 9, 90, 64,231,117, 43,136,239,106,117,199, 89,185,105,
-117, 10, 52,219, 42, 68,189,220,218,235, 50,177, 79,135,177,151,213,106,118,216, 64,186,248,146,182,109, 10,197, 94,196,168,220,
- 27, 33, 79,182,247, 3,109, 33,236,132,171,166,163, 88,171, 53,117,221,106,132,229, 62, 29, 72,212, 41,241, 36, 73,106, 28,131,
- 84,132, 47, 28,201, 10,199,108,140,227, 84, 76, 88,197, 69, 69,150,202,143,115,203,215,203,250,134,165, 20, 60, 69, 77, 73, 4,
-113, 75,195,212, 85,111, 18,196, 57,143, 18,150,102,142, 70, 98,238, 24, 50,182,184,244, 70,234, 2,130, 99, 89, 13,218, 73,249,
-209, 44,195,134, 42,235,106, 36,154, 46, 37,175,163,142, 87,148,152,210,102, 8,171, 36,106,161, 35, 42,200,203,203,148, 73, 42,
- 49, 44, 87,154,209,139, 36,116,252,158, 18,111, 54,228,113,174,250,120,178,217,207,122,222, 77,206,102,216,218,235, 50,169,182,
-183,141, 11, 96,170,118,165,187, 86,174, 81, 46, 93,174,102,187,109,151, 87,181,116,241,125,223,117,200,235,187,229, 59, 34,206,
-174, 87,232,109, 83,149, 52, 24,150,188,232,144,226,189,121,221,222, 37,189,160,182,229,237,191,208,108, 59, 58,250,169,203,183,
-173,190, 38,157,179,108,216,155, 3, 85,170, 88,180,107, 78,206,216,154,213,197,195,166,226,216,251,164,154, 35,177,247, 99,117,
- 46, 45,225,139,109,211,166, 90,113,234, 19,223, 67, 85,233,113, 87,111, 66, 52,228,205,149,220, 51, 22, 58,149,204, 89, 65, 80,
- 24, 4,167,168, 30,131,211, 95, 12, 72,196,133, 22, 91, 42, 29, 1,229, 25, 3,211, 75,197,197, 20,136,176,163,240,229, 36,235,
- 18,176, 33,145, 44,210, 60, 84,241,180,133, 86, 48,170, 73,131,152, 2, 42,144,206,124,197, 76,130, 93,105,120, 70,177,218,103,
-143,138, 43, 96,121, 93, 72, 43, 36,132,172,105, 45, 76,169, 24,102,149,157,128, 21, 28,178,100,103, 82,136, 60,129,132, 70, 29,
- 28,224,214,249,226, 54,181, 83,222,219, 55,136, 39, 43, 85,241,100, 94,246,107, 27,119,127, 86,246,245,141,190,145,120, 91, 23,
-102,204,109,181,247, 91,109,168,212,184, 17,169,213,150, 40,215,245,201,118,208,253,234, 19, 64,161,116, 5, 67,154,165,207,141,
- 37, 70, 41, 62,217,106,175, 29, 60,104,113, 79, 93,164, 80,248, 84,226,128,108,102,199,212,235,214, 38,211,193,135,178, 27,169,
- 46,147,113, 46, 44,255, 0,115,185,183, 61, 15,199,182, 20,196,245, 87, 38,211,216, 92, 23,154, 60,130,143, 6,156,148,254,148,
-200,113,217,206, 33,150,155, 57, 67,105, 73,237,144, 49,211,211, 67,187, 77,128,242,138,221,136,195,139, 61,212,180, 5, 19,247,
-157,111,240,175, 28,175, 11,103,243,113, 12, 25, 5, 53, 85, 91, 66,177, 70,164,152,227,133,180, 34, 75, 44,105, 26,133, 87,155,
- 75, 19,164, 5, 65, 35,170, 0,166,216,110,227, 15, 15,159,139,248,110, 14, 25,168,226, 74,186, 58, 36,153,165,149,192, 89,101,
-157, 4,143, 36, 48,202,242,146,204,144,234, 80, 53, 18,206, 99,141,156,150, 92,126,116,252, 63,207,246,190,240,179,111, 84, 45,
-109,128,218, 78, 44,118,210,133, 86,172, 61, 95,169,195,163,240,195,113, 77,114,125, 93,248,145, 32,174,108,185,213,189,175,149,
- 33,245,136,112, 98,182,132,169,210,134,210,214, 16,148,229, 89,216, 95,229,123,244,129, 63,242,126, 52, 63,251,173,204,255, 0,
-254, 61,169,231,253, 81, 76,255, 0,200, 99,127,246, 73,254,173, 47,170, 41,159,249, 12,111,254,201, 63,213,169,173, 79,140,244,
-149,147,203, 85, 89,225,206, 77, 85, 85, 49,212,242, 73, 10,188,142,118,221,157,162, 44,199,110,164,147,211,211, 16, 58, 95, 2,
-107,104,105,226,164,162,241, 71, 60,163,164,128,105, 72,162,157,227,141, 23,246, 81, 18, 80,170, 58,236, 0, 27,226, 37,155,115,
-253,212,126, 49,125,153,188,113,237,174,247,198,222,153, 59,193, 46,175, 96, 72,219,250, 22,228,109,202,182,202,225,187,172,138,
- 21, 82,137,114,222,246,157,180,203,246,205, 29, 85, 20,205,129, 74,154,216, 8, 67,198, 83,220,180,197, 40, 34, 90,211,174,108,
-123, 29, 56, 93,226,149, 28,122,109, 85,237, 78,219,189,198,219,219,123,106,234,245,201,187,145,114,220,214,181,114,217,129, 10,
-149, 34,223,173, 81,102, 90, 18, 69,110, 36,113, 58,173, 81,126, 98, 97,251,154, 2,223,101, 46, 57, 49, 77,165, 17, 22,226, 63,
- 64, 22, 96,195,143,159, 6, 51, 45,115, 12, 43,145, 0,100,124,245, 69,170, 85, 61,151,140,134,162, 50,135,137, 36,184,148, 36,
- 40,147,243,198,154,161,241,114,174,151, 42,226,204,162,135,135, 40,168,169, 56,157,157,130, 68,186, 35,166,230,211, 71, 75, 40,
- 72,213, 66, 72,165, 35, 14,129,130,132,145,152,182,181, 58,112,239, 63,130,212, 85,153,191, 6,103, 85,252, 79, 95, 95, 91,194,
- 43, 26,151,149,181,201, 87,201,170,146,174, 18,242,179, 23,141,131,202, 81,202,150, 47, 18,162,175, 45,134,178, 91, 28,254, 11,
- 94, 39,235,248,104,231,255, 0,249,185, 70,127,110,177,109,192,143, 34, 93,135,122,196,136,195,210,165, 74,180,238, 40,241,163,
- 71,105,111, 72,145, 33,234, 68,198,217, 97,134, 91, 73, 83,175, 45,197, 37, 41, 74, 65, 82,148,160, 0, 36,235, 46,210, 35, 32,
-131,216,244, 58,169, 35,115, 27,163,129,114,132, 31,220,111,139,166, 68, 18, 35,161, 54, 14, 8,253,226,216,132, 15,176,167,134,
-142, 35,182,159,142,131,114,110,159, 15,251,217,182,150,232,218, 43,214,152,107,251,129,181, 87,213,153, 69,250,202, 85,110,207,
-118, 45, 59,235, 91,142,131, 25,143,127,113,168,178, 84,219, 62, 39,136,180,199,112,165, 36, 33, 68,117, 47,219,205,195, 55, 28,
-251,238, 54, 30,243,225,142, 29, 70,225,177,182, 89, 85,139,166,109,187, 96,220, 82, 40,155,167, 77,220,121,146, 24,110, 13,239,
- 72,138,151, 99, 46,172,220, 26, 44, 70, 24,129,245,108,167, 42,145,159,169,206, 83,113, 11, 78,151, 83, 34,132,192,132,135, 60,
-100,198,101, 46,147,146,224, 64, 11,207,219,162, 84,132,172, 20,173, 41, 82, 79,112,160, 8, 63,113,213,149,152,120,159,153, 87,
-113,173, 39, 27,140,170,149, 43,105, 34, 16,136, 36, 15, 44, 37,116, 73, 27, 19,114,172, 24,164,140, 1, 7,202,108,119,232,106,
-156,179,194, 76,171, 47,224, 42,222, 1,108,226,174, 74, 26,217,140,230,162, 50,144,206,175,174, 41, 20, 11, 43,161, 85,120,148,
-144, 65,212, 46, 54,216,136, 25,208, 61,170, 30,218,237,168,164, 39,110,107,112,119, 42,161, 86,167,180,154,124, 73,123,145,195,
-123,147,175,152, 73, 79, 52,102, 82,236,185, 86,131, 14,213,229, 7, 80,172, 61, 80,106, 99,238,173, 39,196,113,206,163, 77,149,
-151,192,119,180,211,218, 97,189, 44,110, 46,255, 0, 64,220,170, 74,107, 38, 36, 90,246,237,239,133, 26, 85,175, 26,139,111, 48,
-234,221,106,157,101, 88, 47,198,128,235,144, 71,143, 49,200,112, 41, 20,248,116,144,252,135, 28,117,248,190, 58,222, 95,232, 6,
-237, 2,142,250,185,220,129, 29, 74,245,240,211,253, 90, 50, 61, 62, 20, 79,251,222, 43, 45, 99,205, 8, 0,254, 56,212,132,120,
-202,153,122,212, 79,195, 92, 13,149,240,246,109, 84,165, 90,170, 40,213,156,106,234, 81, 86, 56,128,223,205,165,153,208,176, 5,
-209,237, 99, 26, 62, 5,190,100,244,176,113, 87,136, 57,191, 19,100,212,110,174,148,114,202,202,135, 79, 64,238,210,202, 78,215,
- 82,200,169, 32, 82, 66, 58, 94,248,215,190, 20,248,114,178,184, 89,217, 43, 15,102, 44, 56, 70, 37,191,100,208,163,210,163, 45,
-222, 85, 76,168, 74, 82,220,153, 87,173, 84,156, 72, 1,218,172,250,188,153,211, 37, 41, 41, 74, 21, 34,123,133,180, 33, 28,168,
- 78,200,105,105,106,151,168,168,158,174,121,234,170,101,105,234, 42, 93,164,145,216,221,157,220,150,102, 98,119, 44,204, 73, 39,
-185, 56,189,233,169,169,232,233,169,232,233, 97, 90,122, 90, 84, 88,227,141, 5,149, 35, 69, 10,136,160,108, 21, 84, 0, 7, 96,
- 48,180,180,180,180,142, 23,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,
-210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,214, 53,117,217,246,213,239, 67,171,219,183, 69, 34, 21,
- 94,149, 91,165, 79,163, 84, 24,146,195,107,113,112, 42,113, 93,135, 45,182, 95, 41,231,142,178,203,206,114,173, 5, 42, 66,136,
- 82, 72, 80, 7, 89, 46,150,178, 24,169, 5, 77,136,238, 48, 8, 7, 98, 46, 49,196,171,235,133,221,241,219,202,252,170, 5, 5,
-186,133,255, 0,110, 54,227,142, 91,183, 24,180, 43, 87, 5, 89,218, 66,156, 34, 28, 91,130,109, 22,174,210, 93,171,176,128, 27,
-113,199, 24,105,215,249, 3,170, 47, 40,169,247, 49, 56,124, 52,111,189,235, 81,137, 67,173, 91, 85,184,244, 57,175, 52,212,250,
-127,240, 58,177,105,211,231, 52,181, 0, 89,174,220, 21,122,163,202, 77, 11,186,164,199, 97, 13, 46, 66, 17,224,173,197,178,183,
- 24,123,188, 58, 90,146,167, 20, 85,172, 74,141, 2, 59,168,182,162, 91,115,107, 92,168, 54,223,184,232,119,216, 13,176,222,114,
-248,203, 92, 57, 11,126,155,126, 7,249,225,157,217,141,156,160,236,245,178,138, 85, 60, 53, 50,183, 53, 12, 57, 94,173,134, 82,
-202,230,190,210, 57, 90,139, 21,176, 63,193,105, 44, 36,169, 17,217, 29, 0, 37,106,202,214,163,167,139, 75, 75, 81,233,166,150,
-162, 87,154,103, 50, 73, 33,185, 39,231, 96, 58, 0, 54, 3, 97,182, 55,149, 85, 20, 42,139, 42,244,194,210,210,210,210, 88, 54,
- 22,150,150,150,134, 6, 32,111,253,251,111,253, 25,127,246,206,255, 0,117, 13, 84, 31, 77,167, 61,189,153,157,251,127,142,111,
-251,168,234, 6,201, 25, 61, 71, 79,216,116, 66, 7, 92,227,160,237,253, 29,191, 61,180,202,213,149, 2,195, 94,231,220,191,150,
- 52,249,178,126,215,224, 63, 44, 79, 25, 63, 77,151, 39,255, 0, 6,119,218,127,150,103,111,251, 41,107,223,247,236, 95,244,103,
-255, 0,219, 47,253,212,245, 4, 4, 2, 7, 95, 63, 47,223,170,169, 25, 61,186,122,250, 31, 81,243,210,126,219, 83,255, 0, 19,
-240, 95,203, 24,230,201,127,181,183,192, 98,119,163,233,176,103, 24,246,104, 30,163,167,248,229,121,231, 24,255, 0, 53, 62,250,
-168, 62,154,225, 35,175,179, 71, 31, 47,229,149,254,234,154,130, 42, 65,207, 67,215,212,255, 0, 96,209, 9,238, 1, 57,207, 66,
-113,249,198,136,213,245, 67, 97, 37,143,253, 43,249, 99, 60,217, 45,187,126, 3,242,196,238, 7,211, 87,201,199,247, 52,251,255,
- 0,207, 39,240,255, 0,146,174,190,171,233,171,114,130,127,185,167,159,151,242,200,255, 0,117, 93, 65, 69, 9,235,159,151, 79,
-207,231,190,171, 4,115, 15,151,207,215,229,233,211, 26, 76,230, 21,118, 63, 93,254, 85,254,156, 37,237, 18,245,215,248, 15,203,
- 19,165, 79,211, 89, 73, 4,159,102,170, 83,233,158, 50,135,207,254,106,191, 45, 18,215,211, 80,241, 19,205,253,205, 94, 80,123,
-127,142, 62,115,255, 0,101,109, 65, 56, 67,100,168, 18,128,163,223,185,239,242, 25,237,223, 87, 54,211,203,202, 0, 0,118, 29,
- 49,229,158,131,238,210,103, 49,173, 22,250,254,191,225, 79,233,198, 13, 68,189,155,240, 31,150, 39, 74,159,166,146, 79,127,102,
-191, 47,111,249, 99,122,255, 0,213, 99, 85, 71,211, 69,207,250, 54, 71, 94,199,249, 98,244,199,175,249,172,106, 11,137, 0,145,
-159, 63, 79,199,240,209, 41, 7,203, 0,118, 57,237,143, 77, 96,230, 85,191,241,191,202,159,211,140,123, 76,223,183,248, 15,203,
- 19,158,254,253, 11,254,141,175,251, 98,127,186,206,189,143,166,127,144, 15,247, 54,241,159,249,225,255, 0,186,214,160,208,144,
- 8,234,123,244,199,237,253,218, 36, 39, 29,124,250,119, 29,189,116,145,205, 43,199,251,255, 0,242, 39,187,252, 56,199,180,205,
-109,218,196,123,135,229,137,201,143,166,116, 79,250, 55, 15,111,252,240,187,127,217,107, 94,199,211, 56, 39,191,179,119, 29, 51,
-254,120, 95,111,127,241, 91,233,219, 80,111, 66,135,111, 60,254, 7, 24,209, 8,238,125, 72,239,223, 31,119,231,182,138,115, 90,
-253,254,190,214,255, 0, 10,127, 78, 11,237, 51,116, 50, 88,250,233, 31,150, 39, 26, 62,153,166,112, 71,179,131, 57,237,142, 48,
- 63,221,115, 94,135,211, 49, 57, 0,251, 55,241,156,227,252,112, 51,219,254,171,154,131,194, 82, 70, 48, 64,232, 51,143, 33,242,
-252, 52, 66, 49,158,191, 96,244,255, 0,142,136,115,108,195,114, 42, 46, 7,248, 19,250, 48, 95,107,159,246,255, 0, 5,252,177,
- 56, 65,244,203, 15,159,179,135, 31,245,191,207,255, 0,149,221,122,254,252,175,166,127,185,197,246,143,229,127,219,211,254, 75,
-218,132, 10,112, 10,114,160, 9, 29, 7,168, 61,127,167, 94,243,144, 72,238,122,100,244,207,207, 69,253, 47,152,255, 0,204,127,
-146, 63,233,198, 13, 93, 64,255, 0,121,248, 47,229,137,189,127,126, 89,255, 0, 71, 16,255, 0,239,127,229,235,254,107,186, 95,
-223,150,127,209,197,255, 0,107,255, 0,247, 93,212, 32,130, 70, 78, 83,156,121,142,227,167, 97,235,175,129, 39, 36, 96,158,227,
-228, 15,174,116, 63, 75,230, 63,243, 31,228, 79,233,198, 61,174,163,175, 50,254,235, 47,229,137,191,255, 0,126, 86,112, 79,247,
- 56,187, 99, 63,227,127,235,216,255, 0,154,238,144,250,101,100,228, 15,103, 9,200, 56,255, 0, 59,241,143,159, 95,228,189,168,
- 65, 28, 19,201,158,160, 12,125,189, 71, 93,124,228, 56, 61, 58,142,199,215,215, 67,244,190, 96,127,246,143,242, 39,244,227, 34,
-170,163,188,157, 61,195,242,196,224, 26,250,101, 42,117,105, 66,125,155,238,173, 74, 90, 16,134,216,226,229,114, 31,117,110, 45,
- 45,180,204,120,237,112,184, 87, 34, 67,142,173, 8,109,180, 2,183, 28,113, 40, 64, 42, 80, 26,145,125,139,237, 28,187,106,123,
-107, 97, 92,219,161,195,163, 59, 99,184,215, 61,173, 2,228,186,182,189,141,220, 55,106,172, 25, 85, 68,137, 81,173,154,141,204,
-118,206,154,106, 53,248,244,231,225,154,131,105,167, 50,136,178,214,252, 70,220,146, 35,151,215,249,251,123, 18,120, 79,167,111,
-111, 18,114,247,186,251,163, 49, 85,218,222, 24,163,210,111, 53,194,156,128,245, 62,228,222, 74,163,175, 29,169,183,157, 96,172,
- 9,108, 83,222,131, 80,184,101, 52,174,132,209, 41,225, 89, 75,196, 25,105, 85,110, 39,101, 73,126,161, 41,197,174, 75,239,169,
-114,139,171,241, 63,239,176,162,251,170, 86,121,157, 65, 89,113, 67, 7, 35,169, 4, 18,115, 82,113,247,137,217,238, 79, 87, 22,
- 91,147,230, 34, 26,136,198,185,156, 69, 79, 33, 23,221, 80, 44,145, 56, 6,222, 98,116,157,153,122,110, 71, 99,125, 27, 60, 13,
-161,241, 3, 47,175,226,174, 50,162,122,236,146, 71, 48, 81, 64, 36,150, 14,107, 70,214,150,114,244,239, 20,133,117,222, 36, 93,
- 65,110,172, 77,203, 45,186,186,215,180, 61,151,139, 72, 78,210, 40, 56,230, 50,147,125, 47,149, 37, 77,151, 65,231,254, 5, 97,
- 72, 9,229,201,242,231, 29, 51,240,235, 38,139,199, 80,146,160,145,181,193, 5,104, 75,168,255, 0,223,202, 78, 90, 39,195, 82,
-214, 13,164, 11,120,116,164, 96,142,161, 65, 94,120,215, 37, 97,212,227,199,149, 78, 9,151, 17,105,146, 42, 43,109,228,184,158,
- 66,150,152, 96,162, 49, 81, 60,133,229, 15, 16,124, 93, 73, 25,192,198,117,127,135,119,198,133, 85,181,154, 92,152,232, 50, 28,
-186,224, 45, 77,133,168,134,145, 77,106,160,134,156, 25,228,241,210,136, 43, 91,107, 60,205,168,199, 90, 80, 50,188, 26,248,120,
-191,199, 91,223, 62,222,224, 91,217,168,122, 27,111,255, 0,163,123,205,183,183,173,183,183, 70,215,125, 26,252, 47,211,253,139,
-131,216, 17, 28,143,189,110,104,215, 17,164,174,118, 53,123,111, 17, 95, 80, 78,224,219, 29,102,143,198,144,125,124,131,109, 74,
- 72, 74, 85,145,120,165,105,198, 84,135, 7, 50,109,142,133, 46,164,167, 31,102,112, 78, 53,145,195,226,200, 74,117, 13, 42,195,
- 67, 36,164, 41,197, 27,185, 11, 13, 21, 41, 73,194,147,252, 30, 10, 94, 8, 28,197, 41, 32, 5,103, 39,166,121,115, 2,240,167,
- 70, 20, 80,180,187,134,229,185, 73,145, 29,134,150,242,101, 73,157, 30, 64, 97,134,152, 42,230,117,245, 61, 19,152,140,164, 39,
- 42, 42, 1, 32,105,211,165, 85, 16,235,177,228, 37,200,205, 55, 48,170, 47,130,211,169,144,168,175,186,194,157, 76, 57, 13,129,
-240,203, 11,104,243,140, 39,147,168, 74, 84, 64,202,195,197,222, 56, 99,182,126, 45,113,183,178,209,131, 98, 7, 66,105,253,247,
-233,115,110,128, 3,138,247, 55,240, 35,129, 40,195, 21,225,118,129, 72,107, 19, 85, 94,119, 82,194,219,213, 27,146,171,175, 96,
- 71,152,124, 11,113,237, 58,246,213,110,191,179,158,220,176, 55, 74, 7, 3, 3,126,182, 34,238,121,155,106,229,220,202, 87, 17,
- 78, 89, 19,118,199,113,165,190,239,212,246,205,239,105,183,176,245,193, 6,220,171, 67, 74, 62,167,174,138,129,141, 46,106, 28,
-166,201,143, 6, 89,138,153,124,121, 63, 76,188,131,211,217,192, 8,233,212,113,129,228,124,255, 0,205,115,211, 93,240,187,108,
- 11, 23,121, 44, 27,215,104,183, 62,212,167,238, 22,218,110, 61,183, 91,177,239,203, 66,160,208, 85, 46,224,160, 85, 98, 2,253,
- 61,213,161,121,131, 48, 56,162,244, 73, 72, 34, 68, 57,212,248,242,227, 45,183,153,109, 73,252,231,120,230,246,106,239,183, 6,
- 60, 82, 94,220, 62, 83,108,205,193,221, 91, 81,182, 13,241,179, 87,213,187,104,220, 55, 36,155,231,104,106,242,164, 10, 21, 78,
-166,154, 13, 41,239, 10,232,165,186,219,212,154,235,124,169,228,168,210, 87, 32, 1, 30,100,114,171, 79,131, 60, 72,204,115,136,
- 37,165,205, 43, 2, 87, 83,141, 66, 67, 28, 72,146,161, 61,172,129, 53,165,192,178,216, 50, 16, 84, 54,151,115,201,126, 41,240,
- 67,240,133, 90, 87,229,108, 70, 77, 84,193, 66, 19,169,160,115,246, 86,238, 90, 66,143,111, 41,114, 72,109,181, 29, 64, 44,156,
-255, 0,191, 47,234, 71,247, 56, 71, 65,159,243,192,245,237,255, 0, 37,221,124,254,252,192,255, 0,251,184, 58,127,233,129,251,
-191,146,230,161, 89, 94,176, 47,187, 81,114, 17,117,216,247,149,174, 99,171,195,147,252, 35,181,171,244, 20,198,115,152,128,219,
-235,171,211, 88, 13, 56, 84, 8, 9, 81, 4,144, 64, 7, 88,123, 74, 75,159, 19, 69, 14,164, 21, 0,180, 45, 46, 36, 20,146, 20,
- 9,109, 68, 2, 15,124,246,212,249, 51,218,185, 55,142,181, 92,123,132,103,248, 46, 42, 15,110,150,246, 51, 0,111,208,133,191,
-238,181,241, 56, 81,244,203,137,239,236,225,192, 29,201,226,255, 0,215,254,171,186,248,126,153,120, 29, 15,179,135,175,203,139,
-254,159,143,242, 93,212, 32, 71,158, 48, 9,235,223,204,253,191,118,188,167, 39,161,193,199, 83,242, 36,159,221,165,127, 75,230,
- 63,243, 31,228, 79,233,193,189,170,162,223,222,111,255, 0, 72,252,177, 56, 1,244,203,201, 56, 30,206, 14,191,250, 95,255, 0,
-186,238,190, 43,233,152, 4,128,127,185,195,159, 80, 56,191,234, 62,223,241, 93,212, 32,142,124,128,239,248,116,243,251,245,224,
- 2, 84,115,211, 3,186,122,117, 63,111,200,157, 15,210,249,143,252,199,249, 19,250,113,159,106,159,254, 39,224, 63, 44, 78, 11,
-251,242,241,128,127,185,197,247,127, 43,254,191,183,133,221, 47,239,203,198, 79,253,206, 35,129,231,252,175,186,125,255, 0,226,
-187,211, 80,130, 66, 58,149, 12,115,116, 4,159, 63,159,111,206, 53,240,167,226,206, 58,142,135, 29,189, 58,232,126,151,204,127,
-230, 63,200,159,211,129,237,117, 31,183,248, 47,229,137,190, 15,166, 96, 9, 35,251,156, 36, 99,204,241,125,223,236,255, 0, 21,
-237,123, 31, 76,184, 28,127,220,226,239,156,127,141,247,167,127,249, 47,106, 16, 24,207,151,108,247,244,199, 92,126,124,181,244,
-117,192,232, 61, 63,183,166,135,233,124,199,254, 99,252,145,255, 0, 78, 49,237, 85, 23, 31, 89,248, 47,229,137,191,143,166, 88,
- 79,250, 56,122,245,233,252,175,255, 0,163,252, 87,122,235,233,250,101,100,119,246,112,227, 63,243,191,235,248,127, 37,221, 66,
- 19, 3,190, 50, 71, 94,159,213,159,150,190,247, 32,249,119,193, 25,253,190, 93,244, 63, 75,230, 63,243, 31,228,143,250,112, 61,
-170,163,254, 39,224,191,150, 38,238,126,153,113, 31,232,224, 56,245,254, 87,248,253,159,201,119,166,169, 43,233,153, 17,254,141,
-252,140,227, 63,203, 3, 30, 93,255, 0,205,115, 80,137, 32,156,156, 0, 51,142,224,117,245, 61,123,245,213, 5, 32, 17,128, 51,
-158,253,127, 63,145,172,254,151,204, 44,127,180,111,255, 0, 68,127,211,140,251, 84,255, 0,183,248, 15,203, 19,121, 63, 76,212,
-130,113,236,221, 39, 7, 31,231,129,248,255, 0,201,111, 95, 15,211, 55, 35,183,179,120, 30,153,255, 0, 60, 47,217,254,107,125,
-245, 7,245,128, 51,129,133,119,198, 14, 62,255, 0, 77, 10,172,140,244, 29,122,244,245, 31,111,111,237,209,151, 54,175,239, 83,
-123,255, 0,129, 63,167, 25,246,169,251,191,224, 63, 44, 78, 33, 95, 76,228,167,253, 27,185, 30,191,203, 11,253,214,245, 72,253,
- 51,220, 28,127,115,115, 63,245,194,255, 0,117,175, 77, 65,216,247,233,128,113,149, 30,227, 30,127,111,150,188, 16,112,114, 0,
-207, 92, 14,248,249,244,232, 59,232,227, 53,175, 32, 30,127, 95,240,167,244,224,235, 81, 49, 23, 50,126, 3,242,196,226, 85,244,
-208, 57,127,209,181,145,235,252,176,255, 0,221,103, 84,207,211, 67, 35,253, 27, 63,135, 24,191,238,177,168, 57, 45, 35, 56,193,
-193, 29,252,191, 31, 95,234,208,235, 73, 57,230, 30,125,255, 0,163, 74, 46,103, 90,127,223,127,149, 63,167, 0,212,205,183,155,
-175,184,126, 88,156,137,250,105, 24,200,254,230,199,108, 99,252,113,123,255, 0,217, 99, 84,213,244,210,249,127,209,175,159,250,
-227,126,239,228,175,168, 52, 41, 61, 72, 62, 89,255, 0,142,168, 41, 56, 62,164,103, 31,126, 58,232,227, 50,173,255, 0,141,127,
-251, 83,250,113,145, 81, 41,232,255, 0,128,252,177, 57,179,244,211,113,219,217,173,147,233,252,177,255, 0,221, 95, 94, 15,211,
- 80,198,127,238,106,246,242,254, 88,253,127,254,213,181, 6, 5,142,164,147,229,220,116,200,251, 71, 97,211, 84,150, 6, 51,159,
-179,211,246,104,227, 48,172,218,243, 94,253,244,175,244,227, 62,209, 55,237,254, 3,242,196,231,207,211, 85, 32,103,251,154,121,
-199,252,242,113,255, 0,229, 87, 84,149,244,214, 72,255, 0, 70,150, 71,254,153, 61,191,236,169,168, 45,169, 56,237,219,247,143,
- 95,191, 67, 44,117, 35, 3,175, 92,104,195, 48,171,190,242,237,255, 0, 74,254, 88, 56,158, 75,253,187,253,195,221,238,196,233,
-215,244,215,249, 15,254, 13, 12,143, 95,229,149,251,191,146,159,174,168, 31,166,202, 57,185, 71,179, 56,159, 60,255, 0, 44,190,
-159,179,133, 62,250,130,147,205,243,116, 35,207,203,167,159, 76,103,203,250,244, 42,153, 60,221,200, 3,183,150, 62,206,158,154,
- 88, 86,212,216,125,109,255, 0,237, 95,203, 6,231, 73,183,159,240, 24,157,183,247,236,196,140,143,102,104,199,110,188,102,224,
-231,211, 31,201, 71, 94, 15,211,105,229,239,236,204,199,253,115,191,221, 71, 80, 71, 82, 0,206, 51,208,227,167, 94,222,154, 25,
-105, 72, 7, 35,174,124,242,122,252,243,246,104,235, 89, 57, 27,203,191,192,126, 88,199, 58, 77,183,189,253,195, 19,188,254,253,
-183,254,140,191,251,103,127,186,134,150,160,120, 80, 60,142, 63,111,239,210,209,253,170,163,254, 39,224,191,150, 13,205,147,246,
-191, 1,249, 99,234, 65, 0, 3,249,235,162,146, 15, 64,123,244, 31,156,106,138, 70, 79,203,207,243,246,232,132, 12,159,179,175,
-223,157,105, 22,185,191, 75,116,194,120,174, 1, 61,189,113,249,249,106,176, 0, 96,121,121,254,253, 83, 70,122,244,200, 36, 12,
-231,183,231, 58,174,144, 14,115,158,131, 61, 52, 76, 12,123, 74, 74, 73,234, 49,249,252, 52, 66, 7, 76,250,254,204,106,130, 50,
- 71, 92,224,158,153,235,223,231,231,253,154, 41,180,246, 7,203,169,252,253,186, 65,141,205,241,131,176,191,166, 43,163, 29,135,
-197,143, 79,159,217,162,144,140,142,131, 3,207,237,253,231, 84, 17,208,244, 3,175,125, 20,140,253,223,191, 68, 98, 69,192,194,
- 36, 91,248,227,210, 7, 98, 79, 83,230,122,244,253,253,180, 72,193, 3,207,211,167,159,110,218,164,145,147,246,117,209, 9,237,
-140,128, 1,200,251, 71,223,219, 73, 49,185,233,108, 99, 21, 18, 0,193,193,235,223, 61,241,233,162, 83,140, 14,157, 60,134,124,
-191,118,168,164,115, 31,219,247,116,237,162, 80,158,163,167, 65,235,162,147, 97,115,219, 4,244, 23,177,255, 0,199,207,250, 98,
-170, 64,242, 3,229,162, 82, 9,192,249,119,249,252,245,118,183, 45,171,130,238,172, 83,173,203, 86,135, 85,184,238, 26,180,164,
-196,164, 80,104, 52,233,117,122,213, 90, 99,129,106, 68, 58,109, 46,158,203,143,206,146,164,161,100, 33,180, 40,242,182,165, 16,
- 2, 73,213,222,187, 99, 94,182,156,151, 98, 93, 54,117,215,108, 74, 96,148, 63, 30,227,182,235,180, 39, 90, 90, 78, 20, 28, 77,
- 82,158,215, 41,230, 7, 90,109, 60, 43, 32,137,165, 81, 43, 11,133, 36,106,181,237,123,117,183,107,224,250, 36,229,180,162, 54,
- 49, 41,179, 56, 83,164, 27, 94,197,173,164, 27, 88,218,247,182,248,198, 80,144,123,128, 8,207, 65,220,156,249,122,157, 86, 70,
- 62, 33,143,179,215,239,252, 63,110,188, 32, 18, 50,217, 14, 1,220,161, 73,115,211,185, 65, 56,237,162, 27, 73, 86, 58,128,125,
- 7,127, 95, 61,101,136,223,126,191,127,195, 26,250,131, 11,131,127,120,239,138,168, 73, 56,233,212, 12, 30,190, 64,234,179,125,
- 79,108,128, 65, 3,191,221,251, 53,245, 40,236, 58,103,190,122,253,191,187, 85,144,140, 43,169, 3,207,228,114, 15, 95,217,164,
-240, 49, 84, 39, 42,193,232, 59,129,129,148,140,118,207,225,175, 74,108,245, 4,242,143, 47, 81,233,175,160,149,103, 24, 10,245,
- 30, 99,243,231,175, 67,174, 2,178, 51,230, 48,123,121,159,195,246,235, 24,199,195,174, 40,165, 56,206, 85,212,156,142,157,254,
-204,246,215,148,164, 2, 50,163,223,238,235,242,243, 58,172,224,201, 29,122,122,142,157, 51,140,159,151, 93, 92,168,148, 58,189,
-195, 84,167, 81, 40,116,202,141,102,177, 88,152,213, 58,145, 73,165, 65,153, 85,171, 85,170, 18, 20, 16,196, 10, 77, 42, 3, 46,
- 72,169,206, 90,136, 8,101,134,214,226,179,209, 58,195, 50,162,150,118, 10,171,185, 39, 96, 48, 91,133, 2,231, 97,181,254, 54,
-183,239,197,153, 93,240, 57, 64, 30,106, 3,174, 51,128, 61, 53,233, 88, 67, 69,215, 84, 27,101, 56,241, 29, 89, 8,105, 40,238,
-165, 21,172,129,140,103, 82, 39,224,247,232,242,113, 5,186, 44,209,175,126, 45,110,120,252, 41,109,245, 65, 45, 76, 98,212,168,
-192,137,115,111,205,126, 34,210,167, 80,219, 22, 95,189, 38, 13,132,167, 80,143,133, 85,151,221,152, 18,178, 69, 47,152, 99, 82,
- 25,217,126, 4,125,158,220, 32, 70,111,248,177,225,226,214,187,174,202, 84,112,204,221,208,222,132,198,220,171,212,205,121,104,
- 12, 72,241,238, 54,151, 77,163,211,164, 45, 56,103,220,169,241,154,109, 74,229, 79, 82, 64,134,103, 28,115,148,101,101,145, 24,
-213,204,187, 89, 14,215,247,144, 9,248, 27, 91,212,226,216,224,191, 5,184,251,142, 12,111,150,229, 38,134,142, 80, 8,158,164,
- 20, 4, 18, 0,100,140,217,216, 94,195,204, 99,185,176, 23, 36, 3,170,254,203, 46, 26, 46, 77,165,224, 39,102,233,180,203, 98,
-123, 55, 94,240,135,247,210,247,144,229, 50, 82, 28,149, 42,249, 17,191,130, 80, 39,169,184,229, 79,197,133, 96,194,183,154,100,
-100, 99,197,117, 73, 37, 43, 81, 86,234, 87,236,203,238,132,204, 33, 46,221,170, 32,138,139, 45, 45,243, 6, 98, 99, 20,165,137,
-143,123,195,179, 60, 34, 27, 65,240,249, 15, 57, 79, 42,214, 17,130, 72, 35, 99,155,223, 42,234,221,136,202,101,194,143, 66,171,
-184,105,112,211, 76, 5,132,211,101,181, 28,123,180,100, 71, 82, 83,238,168, 82, 80,227, 9, 67, 73, 8, 14, 54,132, 97,180, 20,
-130, 37, 39,125, 42,234,171,170,153, 34,124,151,131,206,170, 19, 32, 54, 57,101,207,141,200,137,172, 48, 57,190, 37, 8,222, 27,
-165, 60,170, 39, 42, 9, 10,109, 42, 35,158,243, 89,104,243,106,250,186,249, 38,156,203, 86,236,231,104,202,139,157,149, 87, 85,
-236, 1, 10,190,110,130,198,230,248,244,231,129,168,248,183,129,184,107, 38,225,202, 14, 30,163,155, 47,200,105, 99, 77, 38, 89,
-121,146,114,215, 68,146, 59, 8,236,178, 22, 87,121, 1, 82, 69,181, 95, 73, 7, 26, 81, 90,169, 61, 79,168,208,167,204, 91, 44,
-184,170,148,168, 83, 66, 11,141, 70,124, 78,167, 84, 35, 51, 29,198, 66,130, 11, 8,121,168,165, 36,146,181, 41, 14, 44, 21, 40,
-224, 88,100, 92,178, 84,252, 41, 12, 58,134,169,236,223, 20, 56, 17, 31, 91,158, 31,213,209,106, 45, 85,162,212, 38, 53,239, 67,
-159,220,194,222,100,171, 9, 37, 41,111, 45,133, 37,120,214,238,238, 21,145,110,110,237, 53,104,141, 18,147, 65,187,160,213,226,
- 84,226, 75, 44, 52,154, 77, 70,163,111,200,247,152,240,235,208,227,114,167,192,113, 14, 20, 25, 44,164, 59, 28,191,226, 56,135,
-145,206,141,115, 74,240, 69, 70,139, 58,226, 93, 94,157, 42,151, 38,217,171,209,163,191, 18, 75, 72, 91,241,167,211,107,148, 86,
-235, 13,120,141,225, 15,143,117,147,200,218,176,158,118,242,164,158, 78,241, 42,202,121,105,230, 69, 46, 37,138, 83,229, 96, 54,
- 39, 96, 53, 11, 27, 48,191,217, 61,150,247, 32, 99,163,184, 11, 53,202,248,178,154, 72,228,131,244,126,105, 66,170,147,211, 72,
-202,218, 17,229, 26, 94, 18, 8, 15, 27, 23,116, 14,187, 34, 6, 89, 17, 67,170, 54,206, 82,238,185,177,160,198, 76,229,153, 13,
-208,110, 74, 4,198,235, 44, 56,149,128, 69,106, 35, 41,155, 33, 8,201, 46, 37,233,173,153, 1,226, 91, 60,203, 41, 39,176,223,
-221,171,219,215,238, 40,178, 42,213,233, 10,163,209,233,181, 8,142, 38,114, 84,251,110,185, 54, 35,209, 31, 13,197, 91,138, 79,
-143,206,150,212, 57,242,124, 38,229, 16, 84, 73,240,213,204, 75, 50,143, 87,173, 84,164, 89, 20,181,168, 46,225,151, 26,159, 71,
-109, 65, 14,184,229,111,223,226,166, 53, 41,224,179,148, 64,114, 79,132, 90,113, 73,200,104,184,146,174,118,146, 79,101,175,201,
-205,219,204,155,102,128,180, 26,125, 18, 28,150, 98,195,105, 10, 14, 85, 92,139, 49, 44, 74,113, 69,160, 66,149, 34, 98, 36, 58,
- 20, 83,202,178,235,104, 56, 3, 26,125,225,170,120,167,231,215, 85,141,112,211,105, 68, 66,108, 25,200, 98, 1, 35,204, 2,129,
-118, 32,139,221, 73,211,171, 88,164, 60,112,168,124,170,167, 38,200,178,103, 72, 51, 44,237,231,149,166, 81,253,213, 50, 10, 79,
-172, 10, 67, 42,201, 44,175, 42,128,126,168, 90, 67,176, 82, 27, 44,157,124, 91, 86,163,172,210, 40,209, 33, 66,112,182,149, 48,
-228,143, 4,186,243,202,144,134,136, 71, 50, 71, 59,195,196, 43,253, 81,128,121,143, 54, 9,213, 9,123,191, 49,153,245, 55, 35,
-206,109,168,116,233,113, 41,236,173,165,115,203,126,108,150, 24,126, 66, 34,165,149,164, 32, 41,215,163,182,233, 78, 22,166,155,
- 90,143, 48,108,145,165, 85, 75,154, 37, 70,161, 46,164,219,243,155,165,183, 95,162, 83, 41,204,184,183, 31,120, 38, 3,190, 45,
-101,232,203,231, 40, 76,115, 83, 50,127, 74, 20,164,143,112, 40,242, 9, 31, 98, 92, 79, 79,129, 78,140,203, 11,121,138,245, 72,
-215,101,185, 49,196, 39,158, 19, 18, 21, 36,165,158, 84,115,163,196,105,234,116,116, 44,252, 60,143,172,114,249,234,105,237,243,
-234, 88,226,151,149, 96, 84, 34, 93, 22,215, 29,128, 4, 3,181,141,183,216,168,177,185,166,163,240,166,136, 67, 12,245,145, 53,
- 84,238, 0,153,166,177, 96,204, 18, 87, 55,144,155,186, 70,146, 43, 45,216,107,212, 1, 59, 91,122,169, 91,167, 70,186,227,184,
-197,203, 10,131, 87,163,189, 10, 69, 85,214,171,148, 90, 69,113,166, 35, 70, 56,136,137, 81,234,204,184,151,100,173,214,164,200,
-104, 6,254, 24,254, 26,193, 30, 33,214,177,238,127, 2, 62,206, 30, 34,208,151,119,167,131, 14, 31,170, 51,171, 76, 70,150,170,
-189, 2,208,133,100, 93, 16,152,156,135, 92, 15,166,232,176, 13, 54, 74,101,165,135, 57,220, 33, 69, 97,249, 39,169,192, 0, 26,
- 93,210, 95,153, 46,142,195, 48,212,207,240,138, 76,170,188,247,144, 86,212,166, 41,209, 88, 17,109,147,200,217,240, 91,113,230,
- 10, 86,128,162,166, 98,165, 96, 97,201, 9, 78,178,250, 69, 65,249,177,152,150,228,245, 53, 78,141,239,234,159, 40,211,220,125,
-234,189,102,123,128,204,166,210,121, 79, 70,152, 89, 40,114, 90,121,185, 11, 65,166,199,232,221,121,189,200,179, 42,152, 93, 92,
- 75,230,181,135,235, 18,204, 69,152,107,221, 75, 2, 72,234, 69,174, 46, 14, 32, 60, 65,225, 38, 67, 80,102,246,156,185, 96,142,
- 64,186, 65, 26,216, 43, 6, 40, 6,149,221,157,212, 46,150, 93, 69, 68,110,116,131, 41,199, 40, 55,231,232,175,112, 39,186, 52,
-233,149,158, 27,247,143,120, 56,116,174,173,153, 18, 34,210,174, 57,144,247,130,194,102, 74,185,149, 26, 52,200, 23, 10,162, 86,
- 96,176, 86,182,130,146,213, 93,197,161,183, 1, 8, 39,149, 38, 53, 60,110,123, 1,189,162, 92, 20, 64,171,222, 82,246,226, 47,
- 16,123, 65, 75, 15, 72,127,116,120,126, 77, 82,239, 20,202,115, 40, 46,174,117,219,183,111, 65, 69,126,215, 97, 8,232,243,169,
-139, 58, 27, 74, 74,185,166,114,142, 99,250, 18,209, 46,181,183,224, 68,113,102, 52,106,107,177, 37,200, 76, 89,105,113,113,218,
- 56,118, 12, 55,101, 50, 10,230, 23, 86, 85, 37,215,208, 22,167,192, 67, 77,169, 69,206,125,108,205,177,123,137, 81,132,228, 77,
-240,230, 79,154,105,244,170, 68,172, 70,170, 45, 44,243, 23,229,205,128,165,133,198, 42, 67,110, 60,176,176,144,220, 86,155, 75,
-156,175,184, 82, 37,249,111, 22, 85, 64,218, 42, 36, 46,150,235,171, 86,247,176,186,185, 5,172, 47,228,140,198, 46, 44, 72,234,
-121,147,139, 60, 39, 92,176,153,168,117, 68,140,198,218, 71,144, 3, 98,138, 64,212,159,103, 84,140,214, 0, 32, 12, 28,131,124,
-126, 50,105,198, 21,146, 20, 2,150,143,132,228, 7, 26, 81,109,214,212, 65,248, 92, 74,194,146,164,156, 20,169, 37, 42, 0,131,
-165,219,161,234, 58, 18, 58,228,124,254, 71, 95,166,111,180,163,216, 17,194, 7, 31,240,238, 45,193,218,248,212,110, 26,248,173,
-144,137, 82,206,229, 89, 52, 54, 25,176,183, 2,186,219, 40,113, 49,183,135,111,169, 74,106, 53, 73,215,223,228, 75,245,122,111,
-187,214,152, 50, 20,235,206, 84, 2, 61,217,127,158,255, 0, 24,156, 20,241, 33,192,134,239,206,217, 30, 38, 54,238,125,139,118,
-182,211,245, 43,118,166,211,159, 90,217,123,137,109, 53, 37,113,155,187,182,234,235,101,180,177,115, 80,148,226, 64,116, 0,220,
-200, 46,171,221,234, 49, 34, 72, 30, 25,177,178,252,214,159, 48,137, 36,141,135,159,161, 6,234, 78,231, 77,251, 48, 0,221, 90,
-199,202,197,117, 32,214,105,170,234, 26,172,186, 65, 29, 84,101, 65, 54, 87,177, 10,215, 32, 13,141,138,150,236, 14,199,245, 75,
-111,141, 87,232, 7, 78,223, 46,186,240,164,147,156, 28, 3,215, 4,145,249,235,175, 68,129,142,189, 7, 76, 99,191,151,125, 32,
- 65, 39, 61, 71, 76, 36,140,103,167,252,116,233,141, 78,248,166, 18, 9,199, 92,122,143, 95,234,239,175,161, 36,250,244,200, 30,
- 93,115,158,191,142,170,121,127,171,248,116,215,196,144, 1,202,147,156,231,167, 92,228,232, 96,111,143,129, 56, 33, 89,201, 25,
-230,243,242,215,164,117, 4,143,135, 25, 61,115,251, 63, 29,125,233,140,254,206,216,252,245,215,209,215,246, 12, 1,220,121,253,
-253, 52, 48, 58,123,176,136,207, 68,245,233,231,142,164,103,246,106,130,219,198, 9,242, 61, 70,124,244, 78, 14, 58,140,121, 2,
- 70, 49,246,252,191,175, 84,207,110,131, 39,246,103, 63,212,127,167, 88, 6,255, 0, 17,140,224, 37,160,224,249,103,215,184,207,
-168,252,247,208,170, 64, 0,231, 36, 18,123,250,252,190, 90,184, 57,205,158,184, 61, 58,231,190,125, 58,121,245,208,238, 32,242,
-231, 4,117,232, 58,231,175,203,236,214, 65,232,122, 99, 32,158,221, 78, 45,197, 1, 39, 32,245, 29, 49,158,152,199,174,188, 20,
-231, 36, 28,121, 28,159,179,207,240,209, 42, 73,234, 20, 7, 79,245,123,146,126,126, 67,174,168,242, 12, 40,100, 99,166, 0,243,
-235,158,231, 75,169,184,235,131,168, 34,219,109,243,243,111,195, 3, 40, 3,212,147,129,248,125,186,160, 70, 70, 63, 35, 70, 41,
- 35, 56, 30,153, 63, 44, 13, 12,180,144, 73, 3,167,246,126,206,186, 81, 79,108, 24,216,116, 23,254, 71, 0,184, 0, 32,116,206,
-122,159,217,215, 31,158,154,162,160, 78, 58,100,103,175,175,221,163, 20,147,230, 7,221,216,158,250, 25, 89,201,230, 56, 39,183,
-207,211, 31,119,244,105, 92, 1,208, 95,113,129, 22,128,114, 64,199,200,249,250,140,104,117, 35,166, 6, 1,239,246,103,200,244,
-209,138,206, 65, 56,207,160,242,208,199,169,200,207, 95, 92, 14,221, 63,118,149, 7,160, 39,167,207, 95,158,248, 54, 5, 87, 76,
-228,103, 25,253,159,187, 66,172,116,206, 15, 78,216,253,164,244,237,211, 70,172,100,142,152,235,220, 30,253,124,255, 0, 62,122,
- 25,196,228,156,100, 1,208,227,182, 79,228,104,248, 50,250, 91,127, 92, 91,215,128,112, 14, 73, 39,167,161, 29,123,232,115,223,
-168,235,158,191,184,104,199, 19,144, 83,211, 62,126,189, 61, 63, 13, 12, 80, 70, 78,114,125, 15,225,223, 58, 89,122, 97, 81,107,
- 3,210,216, 29,105,243, 25,206,133, 90, 72, 39,183,153,251, 62,223,150,116,105, 25,251,186,250,103,228,126, 90, 25,105,206, 73,
-200, 62,126,125, 59,253,250, 85, 79, 91,157,176, 69,216,144,119,183,250, 96, 34, 48,113,165,175,107, 73, 39, 35,175,224, 52,180,
-174, 15,113,220,216,227,234, 49,143,233,209, 40, 24, 3,231,215,243,247,106,128,198, 6, 1, 31, 35,223, 85,211,204, 59,128, 49,
-233,223, 61, 58,233, 18,118, 3,231,221,140,226,178, 60,250,253,223,191, 85,209,220,253,157,189,127, 63,191, 84, 81,143, 33,215,
-204,234,178, 6,122,231,177,237,249,242,254,173, 16,157,137,190, 6, 8, 78,112,112, 70, 7,124,143,196,244,243,233,162, 27,234,
-126,239,234,213, 4,125,189,188,191,126,189, 18, 64, 86, 14, 8, 30,125, 1,207,244,255, 0,102,181,216,133,193, 78,224,142,199,
- 7, 54,115,211, 61, 62,206,158,126, 99, 69,164, 14,128, 16,123, 15,151,236,213,189,146,233, 74, 78, 19,142,153,251,112, 63,171,
- 71, 55,223,162,122,140, 28,224,246,249,233, 34,215,194, 71,174, 43,165, 61, 65, 57,232,123, 99,191,167,237,209, 9, 0,142,169,
-249,103, 39,175,175,217,170, 64, 18, 71,145,233,231,230,123,231,229,170,232,200, 36,116, 29,135,203,168,243, 62,103,182,176, 73,
- 61,123, 96,167, 21,209,156, 1,208, 14,195,241,243,249,104,148, 3,216,156,228,224,103,250,117, 65,160, 72, 29, 58, 3,231,163,
- 16, 58,231,175,203,211,211, 73,191,175,207,108, 99,107,145,181,206, 58,159,236,114,180, 36,215,120,223,178,238,166, 92,121,134,
- 54,178,207,191,175,249, 50,154, 42, 65,101,248,212, 39,104, 52,196,151, 17,213,181, 46,101, 96,132,144, 65,248, 62,103, 82,170,
-147,119, 79,171, 52, 99,214, 12, 27,130, 56,200, 92, 43,154,147, 73,175,197,113, 32,149, 96,181, 85,136,238, 83,215,166,114, 61,
-117, 30,111, 98, 93, 13, 12,206,226,110,249, 80, 74, 93,129,102,217,118,147, 11, 61, 22,147, 89,172,205,170, 73, 66, 84, 58,128,
-180, 66,104, 17,242,215,110, 85, 89, 62, 34, 74, 78, 18,162, 18,178, 78, 2, 72, 24,243,252, 53,207,158, 33,214, 52,188, 67, 60,
- 91,218,146, 56,163, 6,254,160, 73,191,190,242, 16, 55,233,143, 67,190,140,252, 57, 24,240,222, 10,185, 97, 89, 6,113, 87, 87,
- 57, 12, 1, 4, 44,130,152, 2, 8,181,138,211,143,223,140, 91,113,184, 80,224,223,122, 90,127,248,197,225,195,111,141, 78, 74,
- 74, 28,185,236, 6,100,109,189,210,202,149,255, 0,194, 25,155,109, 45,182, 30,116, 14,184,114, 58,193, 35, 36, 29,114,235,126,
- 61,136,232,153, 30,101,195,194, 78,234, 11,142, 74, 18,167, 81,180, 59,192,184, 84, 27,145,224,126, 38,225,219, 27,129, 13, 41,
-129, 85,124,254,171,109, 79,106, 42,220, 56, 5,240, 78, 79, 93,141,126, 51,110,161,151, 93, 72, 82,213,250, 21,147,128,162,159,
-242,172,156,116, 75,192, 96,143,245,128,214,109,101, 34,179,125, 87, 98,219,150,188, 73,117, 58,171,235, 8, 75,113, 88,113,228,
-190,130,160,148, 6,130, 7,194,176,163,212,158,137, 41,207,108,226, 37, 67,197, 89,254, 85, 44,107, 65, 92,242,128,109,202,127,
-172,140,251,130, 53,244,131,234,154, 77,174, 21,133,241,105,113, 79,128,254, 26,113,109, 13, 76,249,182, 65, 22, 83, 80, 16,177,
-174,164, 11, 73, 52,123,127,120,210, 70,162, 57,108,123, 78,146,165,250,169,223, 16,133,191,246,226,251,218,171,186,173, 97,110,
- 77,165,112,216,183,165, 5,229, 49, 86,182,110,106,115,212,202,172, 69, 5, 40, 7, 80,219,163,150,100, 37,129,150,164, 48,167,
- 88,117, 63, 19,110, 40, 29, 97,233,193,243, 24, 29,250,143,184,116,215,232,143,190, 62,204, 45,147,226, 95,110, 34,219, 28, 90,
- 85,225, 64,173,211, 34, 4,217, 87, 45, 7,192,123,116,108, 57, 14, 35,197, 13,193,172,182,131,239, 52,194,172,248,180,249,101,
-232,171,201,194, 80,172, 40,106, 85,157,236, 48,246, 94, 89, 49, 96, 11,150,111, 16, 59,185, 80, 43, 83, 18, 93,168,222, 84,251,
- 54,159, 41,214,155,241, 92, 81,129, 64,166,133,196, 36,117, 74, 67,170,207,108,116,206,173,202, 63, 17, 40,214,142, 55,205,233,
- 13, 21,112,217,227, 87,141,135,185,128, 46, 29, 67,117,210,202, 74,244,212,246,213,142, 20,207,126,143,124, 95, 14,119, 61, 31,
- 6,200, 56,195, 36, 55,104,107, 68,114, 83, 2, 59,199, 46,168,204, 70, 69,177,250,200,100,120,157,124,223, 84, 73,137, 96,225,
-130, 70,121, 22, 8,237,202,133, 96,250, 28,227, 72,168, 32, 0, 58,146,113,140, 31, 63,151,222, 53, 61,230,125,146,190,201, 76,
- 62,208,225,254,252, 87,128,217,112,248,251,193,118,173,197, 4, 39,152,242,173, 11, 29,115,211, 32,117,193,211, 69,186, 94,193,
-159,103, 5,247, 75, 55, 6,222,220,187,247,177,170,142,168,178, 84,212, 27,150,141,124,210, 39, 70, 74,144,228,182,226,199,187,
-233,222, 60, 23, 11, 1,196, 7, 82,242,195,107,113, 42,240,151,142, 83,177, 77,226, 46, 75, 83, 47, 41, 81,193,177, 55,242,216,
- 0, 46, 73,185, 22,183,223,238,190, 25,235,190,143,254, 42,229,177,123, 69, 87, 14,170,171, 21, 80, 22,161, 11, 51, 57, 1, 84,
- 2,160, 93,137, 3,114, 63,142, 35, 1,192, 79,179,155,127,248,252,190,165,208,246,210,151, 26,220,219,219, 90, 68, 49,185,187,
-209,119,179, 45,157,189,219,184,210,112,227,112,228, 57, 29, 33,219,162,244,145, 27,153, 80, 40, 80, 57,165, 61,128,236,151, 33,
-196, 10,146, 38,173,194, 71, 5, 92, 32,251, 61,109,198,127,137, 11, 71,248,111,187,134, 47,186, 92,156, 68, 95,208,233,213, 77,
-203,169,188,166,210,220,230, 45,176,210, 20,198,221, 91, 60,222, 42,147, 78,163,161, 14,132, 16,169, 50,102, 40, 41,100,251, 2,
- 70,221,108,222,222,208,118, 35,135,219, 98,141,182,187, 99,183, 80,221, 22,253,169, 5,240, 28,175,120,202,109,117, 43,158,224,
-172,168, 42, 69,193,113,212,166, 35,154,109, 86, 73,117,239,122, 88, 75,220,172, 22,219, 70, 15, 39,112, 35,202,153, 34,108, 9,
- 83, 16,228,242,167, 30,167,205, 67,209,101, 60,247, 40, 75,203,132,133,184, 16,103,115, 6,213,204,193,117,183,249,130, 73, 35,
- 5, 53, 87, 20,120,131, 91,154, 84, 73, 73, 68,198,158,137, 73, 10, 65,221,198,214,239,181,250,134,185,234, 8, 61,113,217, 30,
- 12,253, 20, 41, 50,184,169,243,158, 45,133,115, 76,244, 44,114,114,236, 90, 10,109,118,101, 69, 7,109, 69,110, 68,166,247, 32,
-244, 91, 5,122, 46, 93,207,151,112,185, 82, 84,201,237, 85,196,152,174,184, 88,241, 23,239,197, 8,146,129,239,112,210,195,217,
-143, 82, 97,220,134,151,240, 7,148,160,230, 82, 64, 42,108, 46, 11,170, 52,200,142, 42,108,229, 75,154, 25, 10,128,251,176,220,
- 69, 62,231,164,248,160, 73,129, 34, 43, 32,148, 79,109,191, 21,101,149, 97,198,164, 54, 36, 52,149, 5,184, 19, 97,136,251,117,
-212, 9,207, 47,222, 75, 83,204, 70,166,198,109, 84,203,178,149, 49, 96, 25, 28,237,178,132,166, 28, 66,181,167, 45,188,144, 84,
-217, 47, 45,181,163,161,199,231,178,168,238, 61, 67,174,165, 50, 30, 68,210,138,101, 69, 41, 66,226,214, 24,154,175, 18, 68, 23,
- 25,200, 16, 43,237, 53,206, 89, 40, 41,101,229, 18,227, 11, 67,153,107, 85,228,149, 94,103,214, 88,177,181,218,251, 49,190,198,
-219, 19,126,194,199,107,117, 59, 14,220,202, 56,115, 41,161,100,166,134, 46, 65,164,220,199, 24, 80,202, 6,149, 99, 29,208, 93,
- 86,200,179, 38,148,109, 12,205,160, 36,107, 36, 87,151,170,161,165, 46,223,113,167,151, 78,170, 42, 43,148,218,139,143,133, 60,
-212,244, 50,100,136,203,150,242,135,136,250, 60, 22,164,198,112,144,183, 19, 29, 76, 58,165, 45, 0,185,112,131, 94,118, 83,239,
- 68, 41,110,145, 84,110, 85, 61, 77, 75,109,178, 94,166,215,169,104, 8, 67,209,226,188, 8,118, 28,136,175, 69,146,129,147,227,
-180,167,144,130,160, 73, 24,237, 74,148, 41,180,184,241,225,200,118,224,181,231, 71,136, 98, 84,161,159, 30,183,110, 75,101,207,
-122,101,135, 67,139, 34,171, 78, 67,173,161, 72,116, 98, 92, 85,128,204,132, 60,193,241, 18, 44,199,101, 84, 85,252, 43,112,177,
- 42, 84, 4, 52, 95, 52,245, 4,179, 84,167,160, 46, 60,163,202, 84, 82,137,173,158,119, 35, 43, 36, 50,180, 41,160, 2, 22, 0,
- 48,114,196,178,177, 80, 55,211,178,238, 64,223,114,118,234, 70,226,196,234,190,160,112,250, 40,232,234, 98, 13, 29,180, 72, 74,
-135, 58,129, 51,142, 88, 77,113,191,149, 76,133, 66, 76,142, 54, 49,137, 46,240,201,115,180,187,121,113,159,112,167, 74,168,126,
-134,164, 39, 75, 21,246,192, 76,150, 24,152,101, 59, 6,160, 22,251,164, 23, 22, 86, 34,169, 37, 64, 41, 77,186,215,114,156,150,
- 43,139, 43, 97,169, 85,218,101,105,162, 25, 69,219,106, 92, 52,234,159, 51,106,114, 59,213,187, 98, 11,114, 96,186,162,129,133,
- 58,105, 47, 71, 91,228,165, 74,112,210, 83,241, 18,146, 11,135,106,214, 98, 78,172, 73,102, 43,177,164, 67,184,105,116,249, 76,
-184,164, 4, 42, 59,240, 23,245, 98,155,113,151,208, 49, 37,216,174, 66, 88, 82,250, 45,200,200,202,137, 72, 26,161,196, 82,249,
- 44,237,191,114,123, 77,202,228,191, 13, 50,108,176,183, 27, 75,109,213, 41, 83,161, 73, 7, 42, 42, 37,230,219,111,224, 71, 41,
- 82,129, 72, 56, 26, 82,178,211, 80,176, 96,117, 33, 87, 27,130, 65, 15,123,139,250, 43, 17,247,133,176, 59,154,251, 35,230,229,
- 30, 34,101,181, 84,209,154,121,115, 5,168,137,162, 38,222, 89,169,228,145, 35,177, 23,211, 13, 74, 42,128,222, 98,209, 33, 93,
-247, 45,207, 13,114,155,103,122, 54,250,161, 33,214, 94,250,215,234,202,139,111,115, 54,235, 9,117,115, 33, 84, 25,247,117,161,
- 36,186, 75,171,142,226, 92, 32,132,169, 8,234, 2,250,244,178,232,151, 46, 85, 85, 97, 46,180,218,152,141, 41,185, 10, 82,146,
-133, 56, 87, 49,135, 28, 75,206, 54,128, 82,149,182,149,114,148,252, 73, 40, 42, 25, 63,173,202,173,165,149,245, 27, 59,105, 37,
-133,198,106, 75, 46,199, 11,153,201,226, 56,179, 68,204,101, 51,206,133, 4,148,184,138,122, 64,229,229,233,145,221, 56, 61, 81,
-185, 75, 51, 27,159, 80,109, 41,125,186,148, 24,239, 53, 37,180,135, 92,106, 52,136,171,113, 78,165, 68,140, 37, 16,223, 89, 4,
-156,167,195, 25, 30,171,240,236,165,105,234,169,128, 26,161,150,226,251, 18, 25,116,220,216,131,250,167,125,192, 39,222,113, 12,
-241,161, 4,252, 89,144,102,166, 63, 45, 69, 19,211,173,192, 32, 52, 53, 5, 73,183,217, 0,172,167, 96,196,253, 93,251,227, 89,
-170,116,137,115, 41,150,180, 88,239, 52,228,155,128,190,219,171,105, 45,132, 20, 84,125,242,101,110, 97,109,192, 60, 15, 6, 4,
-169, 41, 7,205,101, 42, 4, 30,100,235, 48, 98,100,183,170,109, 55, 77,129, 26, 53, 90, 77, 38,159, 64,165, 69,109,165, 59, 30,
- 52,118, 31, 90,205,199, 80, 1,144, 68, 88,139, 74, 3, 44,182, 0,117, 80,218,100,243, 23, 20, 81,245,170, 20,128,229,191, 57,
-231, 18,227,180,170, 21, 94, 83,170,231,105, 13,211, 41, 41,129, 19,194, 45,180, 74, 72,152,162,162,165,171, 24, 90,155, 91,121,
- 64, 1, 10,190, 89,208,106, 49,147, 38,123,140,190, 42,215, 59,205, 63, 4, 41, 77, 7,232,116,248, 77, 39,221, 90,229, 3, 45,
- 60,220, 25, 11,121, 77,164,169,180,203,154, 2,178,180,171, 50, 56, 55,242,106, 47,163,123,251,137,182,215, 39,127,128, 23, 32,
-147,183, 70, 90,252,198, 22,163,102,103,142,115, 15, 52,168, 39, 72, 47, 37, 68,133,131, 88,139,196,145, 68,178, 49, 42, 54, 4,
- 38,158,106, 17,126,147, 14,157, 74,146,213, 34,214,106,160, 3,145, 23, 72, 93, 65,214,154,147, 60, 45,214,208,171,150,181,227,
- 40,145, 58,176,135, 20, 0, 88, 40, 71,191, 85, 50,133, 16,199, 40,204,233,149,217, 16, 81, 74,106,213,167,196, 41,166, 68, 93,
- 61,218,202,202,222,163, 83, 36,180,202,163, 63,224, 83, 73, 82,235, 51,209, 30, 63, 41, 12,169, 45,248,223, 4,213,169, 74, 90,
- 53,128,211,101, 42, 82,164, 55,109,135, 89,147, 41, 74,163,196,152,181, 2,229, 14,132,196,169,105,114, 84,194,235, 37, 15,213,
-165,203, 74,222,142,144, 8, 75,184,116,146, 25,235,123, 77,126, 53, 26,159, 50,222,163, 82, 34, 87,170,209, 34,199,165,211, 98,
-196,145, 42, 52, 27, 97,182,148, 76,169,143,206,119,244, 45, 5, 21,254,145, 74, 46, 58,167, 16,167, 2, 71, 51,139,214,220,104,
- 21,172, 65, 37,238, 69,201, 58,119, 82, 55, 23, 34,254, 81,127, 40,177, 82, 54, 23, 48,154,250, 57, 42, 21,105,164,129,171,170,
- 20,141, 98, 87, 0,144,254, 73, 38,170, 44,234,129, 19, 88,176,146, 78, 89, 34,103,179,171,162, 77,157, 81,164,143,123,163, 8,
- 73,114, 60, 56, 14, 56, 25,153, 92, 82, 27, 64,113,230,129,159,116,212,234,141,165, 30, 35,232,150,149, 34, 26,138, 67, 35,195,
-229,195, 64,160,161,215,163,214,229, 61,114,193,118, 3, 18,169,144,234,116,244, 83,105,213, 73,128, 42,170,162,244,180, 53, 84,
-173, 73,139, 52,114,195,114, 72, 17,209, 13, 46,130, 91, 66,252, 80,144,164,132,233,150,102,139, 89,170,162, 58, 42, 11,109, 2,
-156,194, 86,221, 33,181,251,181, 38, 42,218, 67, 77,174, 97,127,153, 78,214, 92, 14, 2,191, 29,239, 13,182, 62, 55, 80,210, 57,
-121,206,113, 74,153, 54,127,189, 8,203, 67,140,225,184,143, 85,220,123,222,211, 87,121,197,162, 59, 80,232,138, 96,225,196, 37,
-231, 93,231,158,158,124,173,226,166, 18,183, 1,113, 59,104,206, 7,217,212,166,214, 54, 39,125,193,177,184,189,190,201, 2,219,
-129,115,109, 36, 64,115,202, 58,106,133,145,131,199, 51,172,111, 27,220,150, 84, 18, 57, 32,181,236, 38,119,102,187, 2,172,173,
-245,138,161,227,115, 42,109, 53,183, 89,113,151,211, 75,165,167, 49, 32,171,220, 30, 90, 20,243,205, 83,164, 33,100, 75, 87,189,
-190,190,121, 21, 18,250, 71, 48, 94, 91,105, 75, 43,121, 74,230,229, 45,103, 23,124, 32,112,213,237, 11,217, 74,166,193,241, 37,
-103,179,117, 80, 93,247,138,133,163,115, 83, 94, 17,183, 11,108, 46,100,165,216,113, 47, 43, 30,236, 12, 41,116, 27,141,183,211,
-202, 18,144,184,181, 22,208, 98,204,139, 46, 18,220,104,135, 30,225, 76, 56, 81,105,212,133, 48, 41,180,229, 70,162,206,126, 38,
- 92, 98,148,206, 66,164,193,166,164, 45,105,171,200, 68,140,120,203, 37, 97, 47, 60,174,114,244,144, 80, 29,171, 42,165, 30,155,
- 49, 51, 37,181, 81, 79,132, 15,185,196,151,151,234,114, 30, 44,248, 41,113,104, 4,248,238,184,148,190,180,184, 74,188, 52,182,
- 16,234,154, 81, 58,124,203,115, 9,169, 39, 2, 57, 12,104,246, 82,172, 26,204,163, 72, 34,253, 44, 52, 92, 91,236,149, 12,133,
-109,183, 62,241,103, 9, 69, 81, 77, 83, 52,208,150, 44, 27, 66,145,121, 36, 63,181, 37,206,204,250,129, 61,116,169,212, 89,131,
- 43,201,249,104,123, 74,253,155,155,225,236,203,226, 10,102,204,110,202, 63,132, 86,125,198,138,149,127,100,183,134,155, 1,112,
-237,173,219,177,225,202, 67, 75,152,211, 60,203, 77, 6,247,167,123,204, 54,107,180, 85,184,167, 33, 62,251,114, 35,170, 69, 54,
- 84, 73, 46,115,200, 36,167, 25,234, 60,137, 61, 71,217,242,198,191, 92,191,104, 95, 2, 27, 99,237, 47,225, 82,247,225,235,116,
-208,197, 6,191, 47, 55, 54,209,110, 43, 17, 27,149, 84,218, 45,211,165,197,120, 90,215,101, 56,171, 11,149, 13, 70, 66,225,214,
- 96,115,165, 21, 26, 85, 74, 92, 66,166,214,227, 79, 55,249, 64,239, 46,206,238, 55, 15,155,187,185,155, 17,187,212, 5, 91, 27,
-163,180, 55,157,106,194,190,104,165,101,216,241,171,116, 57, 30, 18,166,211, 37, 16, 5, 70,131, 54, 18,226, 79,167, 74, 70, 81,
- 42, 5, 78, 52,132, 18, 28, 26,183,178,186,229,171,129, 84, 73,169,212,119, 35, 85,129, 0,134,181,188,202, 72, 5,128,210,110,
-164,121,139, 34,115,126, 99,150,201,150, 78,208,177,215, 21,236,173,125, 91,218,250, 75,126,181,187, 55,113,190,246, 44, 91, 95,
-135,148,129,156,147,147,205,212, 31,144,244, 3, 58,243,202,158,132, 96,121,118,234, 51,223,167,152,213, 84,132,144, 83,212,144,
-122,231,250, 71, 93,121,229, 7,168,206, 61, 58,103,231,212,233,216,126,242, 48,223,133,202,123,243, 12,118,207,203,183,111, 61,
- 32, 14,126, 17,140, 14,161, 90,245,202, 0,199,235, 2,114, 60,191,110,190, 5, 15,139, 57,201, 32,114,253,216,239,161,239,192,
-233,108,123, 39,162,135, 78,189, 62,195,246,249,106,136, 10, 78,112, 73, 80, 61,113,230, 62, 64,254,122,234,166, 18, 83,202,122,
-103,184,207, 81,130, 49,223,236,215,174, 80, 6, 9,201,199, 47,111, 46,189, 71,203, 89,192, 63, 27, 96, 53, 1,149, 31, 49,140,
-143,183,211, 84, 10,122,103,152,159, 49,204,115,211,229,233,253,186, 57,109,140, 0, 0, 42, 35,161, 61,188,137,207,221,161, 86,
- 58,145,216,118,198, 58,231, 30, 93,116, 48, 63,158, 1,112, 96,228,246, 63,119,203, 84, 21,220, 28,101, 35,160,235,242,245, 31,
-102,138, 90, 22,121, 72,232, 51,231,247,231,247,104,117, 39, 61, 58, 2, 59, 96,249,104,234, 64,191,160,198, 65, 55,247,255, 0,
- 60, 14,160, 50, 60,137, 24,206, 58,103,203, 61, 58,234,146,135,124,156,121, 99,160, 31, 51,219,236,252,116, 73,206, 49,128, 51,
-231,231,251,123,106,130,209,216,142,152, 32,159, 63,195, 75, 14,184, 84, 94,215, 29, 79,250, 96, 55, 19,215, 9, 7,190, 79,166,
-113,212,157, 10,180,231,174, 51,219, 30,163,230, 61,124,245,112, 94, 8, 35, 56,199,150, 58,254, 63, 97,208,174, 36,246, 79, 78,
-132,250,231,203,175,160,237,165,148,155, 11,141,240, 1, 23,176,233,128,148,158,253,122,158,192,247,206,126,126, 93,116, 42,219,
- 61,126, 33,142,248, 29,128,238, 64,251,180, 98,130, 72,235,144,115,140, 99, 39,215, 61,190, 90, 29,105, 56, 32,252,142,124,190,
-223,195, 58, 58,223,238,254, 95, 39, 6,192,106, 72, 24,199,207,169,245, 30, 90,160,176, 6, 79, 92,227,183,145,249,118,249,104,
-165,167, 61,148, 78, 62, 93,254,239, 93, 12,179,220, 30,157, 60,198,115,242,249,127,110,150,193,148,246,192, 42, 80,207, 64,115,
-230, 7, 95,188,250,119,213, 21, 12,100, 99, 63,179,231,162,150,129,220, 12,103, 57, 35,191,246,104,101, 2, 7, 81,158,249, 35,
-174,127,183, 74, 39,124, 40,187,129,129,212, 62, 68,122,250,125,199, 84, 23,140,143, 92,117,213,117, 19,215,184, 4,231,175, 66,
- 79,245,106,130,251,142,158, 93,255, 0,118,149, 29,122, 95, 24, 34,198,227,107,126,239,159,158,216, 20,140, 18, 59,227, 75, 95,
- 85,250,199, 75, 75, 13,192, 56, 53,129,222,221,113,224, 31, 34, 70,125, 6,170,115,117, 4, 36,146,112,146, 71,252, 62, 67, 84,
- 57, 57,156, 74,190, 46,131,167,126,189, 72,198, 14,138, 73, 72, 0,249,103,174,123,247,243,198,181,201, 39,189,191, 44, 27,238,
-190, 43,164,129,129,211, 63,236,245,233,243, 58, 32, 97, 35, 36,140, 31, 65,231,246,249,232,100,242,133, 16, 14, 78, 58,158,157,
- 7,144, 58, 37, 4, 36, 28,167,155, 7,168,239,223,182,147, 44,119, 29,113,140, 86, 9, 88, 80, 33, 67,148,142,189, 58,147,229,
-223,183,125, 16, 27, 14, 36, 37, 73,206, 14, 71,113,233,215, 84,146,114, 59, 96,121,126,113,162,219, 33, 61, 20,122,227,203, 61,
-135,228,105, 51,107,111,211, 4, 38,221, 6,253,190,126, 24,172,132,132,167, 25,192, 31, 46,167,238,209,141,168,114,132,252,186,
- 31, 95,234, 58, 17, 41, 24, 32,168,146,115,128, 59,159,179,174,138,108, 18,115,203,216, 12,131,215, 0,103,174,144,194, 71,174,
- 42,227,160,207, 92,117,206, 62,223, 33,242,209, 40,194,176, 79, 64,124,186,245, 61,190,239,236,213, 16, 1, 81, 29, 64,242,237,
-249,245,209, 45,130, 6, 1,237,228,113,147,251, 59,104, 99, 7,241,193, 13,224,100, 14,158,159,183, 68, 33,125,121,112,122,103,
- 36,117, 25,207,111,219,170, 8,237,156, 12,250,116,207,217,159, 61,101, 86,165,169,113,222,213,218, 85,175,104,208,234,151, 29,
-199, 92,154,205, 58,143, 67,162, 64,145, 83,170,213,103, 62,174, 86,162,193,129, 17,181, 57, 37,226, 79, 92, 12, 36, 30,101, 16,
-144, 78,144,150, 68,141, 93,157,130, 34,110, 73, 54, 0, 1,212,158,192, 96, 14,194,219,159, 78,228,237, 97,234, 73,216,119, 56,
-239, 95,177,184, 52,198,205,241, 34,250, 82,145, 37,219,203,111,154,116,243, 97, 74,140,138, 52,229,161, 36,121, 36, 56,165, 99,
- 62,127,102,186,125, 58,178,168,165,224,240,108,180,227,106, 45,243,168,133, 3,219,224, 41,253, 99,156, 28,124,181,130,123, 43,
- 61,153,123,231,176,246, 46,230, 76,226, 66, 69, 19,109, 99,238,172,123,102, 85,189,105, 61, 82,102,161,115, 83, 77, 53, 47, 41,
-114,110, 56,241, 22, 91,166,201, 83, 79, 37, 41, 96, 41, 78, 35, 7,156,131,211, 91,183,187, 60, 21, 87,216,164,202,171,216, 55,
- 44, 43,172,211, 80,185, 34,157, 13,254, 73,133,108,167,153, 73,110, 58,212,124, 76,167,200,119,206,185,175,140,211,219,115,250,
-250,186,121,150,106, 87, 41,102, 86, 4,217, 99, 69, 62, 95,180, 64, 96, 69,237, 98, 6,161,177, 7, 30,160,125, 30, 51, 92,167,
- 42,240,231,133, 50, 92,240,205,148,102, 10, 42, 3,172,240, 74,138,188,202,201,222, 50,206,202, 2,106, 70, 70,243, 90,193,183,
-223, 26, 33, 89,187, 38, 56,211,173, 73, 82, 68,134, 29,100, 33,180, 43,195,241,146,165,129, 30,115, 42, 79, 82,234, 84, 82, 20,
- 61, 53,220,158, 22,104,113,246,115, 98,169, 87, 66,163,180,230,226,223, 48,159,157,245,162,217,109,215,233, 84,130, 15,134,212,
- 53,167, 42, 99,197, 78, 84,181,167,226,199, 98, 53, 30, 10,163,245, 54,234,111,196,144,202,209, 82,166, 75, 80,109,137, 72, 83,
- 78, 49, 38, 59,153,147, 79,146,210,250,165,126, 35,100, 96,227, 24,215,127,118,138,242,164,110, 62,192,109,157,106,149, 47, 30,
-229, 76, 54,197, 89, 17,150, 68,186,101, 86, 23, 51,106, 97,104, 7, 45,130, 23,217, 88,202,117, 28,118, 20, 81, 23,136,105,153,
-198,204, 58,139,149,189,143,111, 45,236, 65,254, 3, 29, 5,199,185,104,158, 14, 29,203,164, 80,217,101, 77, 86,170,133, 93,209,
-180,199,170, 20, 96, 14,241,187, 6, 37,127, 93,148, 45,136,181,242,106,229,223, 42,176, 31,122, 91,235, 11,114, 43,173, 63, 43,
-152,169,199,159,143,135,153, 45,243, 30,101,243,182,162,159,187,215, 88,194,171,109, 42, 52, 22,155,105,229, 73,168, 62, 22,203,
-206, 5, 45,198,219, 49,203, 37, 62, 31, 54,124, 70,223, 9,248,135, 92, 47,174,172,242, 97, 74,133, 54,150,235,136, 92,152,237,
- 58,252, 89, 13, 45, 92,139, 46, 50,219,136, 74, 20, 9,248, 28, 41, 32,143, 62,190,122,188, 83, 18,164, 54,242,101, 71, 65,114,
- 44, 22,132, 53, 40,114,187, 30, 75,239, 23, 82, 65, 72,234,224, 65, 70,125,121,117, 30, 87, 45,172,129,168,158,155,237,126,135,
-115,211,189,187,236, 62, 56,127,142,130,130,138,154, 49, 79, 24,120,134,234,170,193,123,180, 96, 91,169, 10, 66, 18, 15,151, 77,
-128, 4,226,231, 71,140,106,110,203,144, 95, 44, 50,131, 42, 92,249, 46, 56,161,202,196, 32,136,201,141, 24, 96, 36,190,183,201,
-194, 51,149, 21, 28,117,214,187,111,102,251,181, 33,243,106, 81,228, 61, 14, 37, 33, 97,130,251, 50, 21, 30, 63, 51,105,194,152,
- 98,106,148, 82, 95, 81,200, 60,195,245,138,142, 20, 14, 19,125,222, 75,250, 78,218,216,238,219,180,169,142, 42,187, 85,231,169,
-204, 91,107,109, 14,183, 50,106, 86,182, 24,105,167,112,133,173,168,202, 43, 80,230, 79,199, 45, 56, 33, 67, 58,228,228,187,229,
-250,132,217, 47, 75, 67,178, 96, 58,242, 83, 61,164, 56,226,208,226,208,181,175,198,125, 46,167,157, 35,226,117, 68, 43,152, 40,
- 32, 32, 40,140,101,246, 58, 73, 18,147,146,135, 76,211,128,242,145,107,170,177,186,198, 9,237,250,205,184,185,216,218,219,233,
-112,238, 72, 56,183, 63,169,204,229, 28,252,143,135,165, 49, 82, 40, 35,235,170, 18,203, 36,204,173, 96,202,132, 24, 98, 13,183,
-146, 66,118, 56,218,122,181,245, 81,114,145, 37,110, 60,103,198, 97,207,125,165, 84, 31, 79,131, 90,163,190,219, 97, 10,108, 48,
- 26, 9,169, 66, 90, 80,227, 47,128, 80,181, 33,204,169, 42, 79, 34,145,144, 27,238, 36,202, 77, 46, 61, 71,146,158, 91, 77, 34,
- 80,129, 80,121,196,192,149, 37,107, 67,234,250,134,230,105, 96,211,223,104,169, 92,205,169, 77, 58,128, 83,145,140, 41, 90,141,
- 75,174,173, 77,251,204, 9, 44,170,156,220,176,219,244,224,164,200,165, 79,117,183, 20,184,138, 75,160,173,218,100,118, 89, 33,
- 75, 40,230, 73, 95, 94, 82, 7, 38,179,218,117,105, 35,154,151, 61,164,211, 34, 50,180, 74,121,186,147,237,205,163, 21, 60,162,
- 29,110, 35,204,164, 37,216,238, 48,180,134,146,248, 5,180,189,243,232,211, 62, 92,169,112,162,228, 27,221,109,123,121,123, 16,
-109,110,225, 46, 44,215,186, 62,199,161,242,220,190,156, 36,113,114, 47,203,109,107,162,234,192,145,231, 26, 47,177,110,190, 75,
- 27, 13, 65,145,137, 24,220,138, 82,100, 86,167, 67, 85, 85, 5,217, 21, 54, 83, 26,153, 91,143, 41, 84,218,173, 77,175, 19,157,
- 16,100, 78,167,184,142,105,169, 96,169, 46,243, 41,104,121,178, 22,223, 34,202,155, 23,250,140,137, 20,138,148,138,125, 82, 20,
-234,253, 56, 69,122, 35,244,247, 86,135, 43,244,199,152,112, 33,197, 60,228, 96,159,173,226,132, 50, 84,121,113, 53,165,176,135,
- 82,167, 71,194, 53,242, 20, 11,121, 84,166, 35,198,155, 38, 4, 37,169, 19, 41,142,209, 42, 19,225,165,233, 62, 34, 25,142,226,
- 80, 30,113, 17,157, 66,149,252,196,164, 18,216, 82, 84,115,167, 38,148,205,126,152,227, 49, 97,220, 38,171, 81, 86, 91, 68, 26,
-187, 13,248, 14, 69, 97, 62, 35,143,138,156,112, 22,101, 41, 15, 18, 22,226, 10,194,136,230,230,233,134,127, 42, 6, 37,206,199,
-117,101, 43,181,186,143,180, 75, 2,110, 73, 96, 5,128,176, 42, 44,157, 77, 28, 1,181, 71, 86,166, 56,195,160,133,227,150, 34,
- 10, 48, 60,200,165, 70,147,146,168,163,204, 71, 45, 85,148, 2,193, 25,163,195,167,111,214, 86,203,172,196,137, 45,186,155,174,
-161, 10,167, 73,203, 62,227, 94,136,211,232, 33,202,160, 82,127,192,238, 54, 24, 88, 10,120, 37, 1,208,149, 43,151,151,153,182,
-170,166, 34,105,117, 25,181, 40,161, 79,194,159, 53, 78,221,148, 2,130,244,202, 62, 11,173,203,168,196,140,210,177,239,188,139,
- 79,188, 52,148,143, 25, 25,113,159,210,140,171, 8,167, 26, 85, 94, 65,131, 35,235, 11,102,226,130, 87, 49,132, 48,166, 27,155,
- 34,167, 24, 20, 49, 81,133, 37, 81,151, 26,170, 90,112, 31, 21,124,188,252,170, 13,201, 72, 73,201,204,105,149, 74,157, 57,200,
-147,110, 38,154,139, 18, 67,205,195,153,115, 70,104, 51, 79,155, 83, 70, 23, 21, 85, 85, 0,161, 70,146,242,249, 2, 78, 76,126,
-101,128,219,173,128,148,235, 34, 80,196, 0,231, 83, 92, 1,220, 90,204, 10,145,112, 0,185, 42, 1, 2,236,108, 45, 99,136,197,
-109, 57,134, 90,147, 78, 60,243,173,165,136,149, 15, 48,189,215,148, 86,241,202,190, 93, 81,152,134,165,148, 13, 11,202,242, 35,
-169,110,248,110,177, 16, 67, 42,158,104,128,170, 20,215, 22,194,141,110,142,176,131, 25,131,225, 54, 11,133, 84,196,180, 99,164,
- 18, 82,252, 36, 58, 2, 73, 90,181,243,137,137,169, 94,219, 91, 8,140,165,159, 30,241,143, 84, 66,139,156,202,240, 96,192, 62,
- 18,156, 82,206,124, 78, 89,140,129,203,241, 21, 30, 76, 19,163,109,106, 99,148,203,129,215,161, 22,149, 70,170, 36, 45,108,171,
- 31,224, 53, 5,243, 58,217,101,215, 79,193, 25, 79,185, 33, 32, 39, 1,165,190, 66, 50,135, 15, 45,187,123,227, 46,167, 87,178,
- 45,198, 26,115,194,143, 66,171,214,144, 26, 91,156,200,171, 26,148,118, 84,145, 31,151, 10, 8,167,198, 11, 4, 31,135,197,207,
-235, 37, 39, 74,201, 56, 20,179, 48,220, 2,160, 89,137, 27, 48,218,251, 92,218,224, 27,108,182,181,237,189, 90,213,112,199,197,
-185, 37, 66, 63, 50, 26, 82,245, 33,186, 21, 2, 41, 29,149,214,224, 41, 89,127, 85, 64, 0,155,129,164,168,195,121,106,210,157,
- 49, 16,180, 67,123,221,105, 23,132,151, 98,143, 8,133,181, 9,233, 2,160,114,132,149, 41,152,202, 77, 80, 0,122, 20,224,133,
-140, 19,174,145,216, 85, 22,174,139, 58,117, 20,167,255, 0,116, 45,215,218,183, 92,253, 48,116, 59, 66,168, 71,135, 84,162,201,
- 91,137, 33, 46,115, 83,165, 76,101, 96,101, 41, 92, 44,103,200,106,117,145,110,169,112,231, 15, 1,196,123,195, 84,153, 12,178,
- 20,148, 41, 94, 28, 38,226,200,119,157,100,120, 95,165,138, 1,112,228,146,114,114,161,173,186,219, 8, 70,145, 86,150,137, 9,
- 45, 70,158,138, 76, 55,148,216, 65,109, 45,150, 86,152,239,128, 57, 65, 12, 75,229,234,122,225,213,148,244,209,114,119,104,171,
- 4,128,125, 92,254, 87,191, 96,110,192,158,223,104, 2,109,189,142,214,189,197,123,226,102,115, 14,101,151,130,175,170,167, 41,
-126,116, 54, 59,220, 24,181, 41, 23,243, 93, 94, 65, 97,177,125, 39,160, 56,182, 92, 20, 69, 77,185,225,210,208,218, 12,121,177,
-214,245,101,132,175,147, 20,200,207,169, 77, 67, 12,161, 64,187,239, 14, 55, 24, 58, 82,112,164,176,232,229, 32,231, 94, 29, 77,
- 69,138,133, 70, 29, 29,163, 30,174,236, 24, 12, 74,171,176,182, 29, 93, 18,157, 80, 46,135, 10, 99,172, 22,209, 86,126, 34, 28,
-247, 86, 74,249, 90, 42, 50,212,149, 37,164,133, 61,149, 74, 50, 96,174,108,231,227,148, 73,104, 70, 98, 34, 90,232,251,142, 52,
-174, 65, 30, 63, 46, 28,230,126, 90,201,119, 25, 60,138,113, 64,225,189, 82,183,173,152,148,155,102,178,203,203, 68,215,166, 72,
-114,183, 95,156,227,173,149, 84,171, 51, 30, 74, 27, 67, 12,173, 36, 52,203, 81,219,102, 60, 68,130,144,203,109,165, 36,133,120,
-138,212,193, 31, 77,212,144, 72, 34,198,251, 27,245, 44, 15,154,214, 6,230,224,239,182,149, 3, 21, 18,113, 76, 43, 65, 3, 50,
-137,214, 49, 12, 40,135,117,121, 29,209,158, 71,223, 75, 42, 46,136,204,108, 8,145,132, 74,193,144, 72, 75, 74,213, 54, 21, 45,
- 76, 91,246,218, 94,139, 17,193, 28, 86, 29, 14, 46,115,208,212,249, 67, 77, 64,167, 72,144, 20,185,149,135,226,180,158,101,145,
-202,195, 40, 83,141,144,227,200, 2,245, 21,216, 52, 92,248, 96, 70,161, 83,252,103, 98,197,145, 15,156,115, 78,109, 49, 66,157,
-109, 1,110,205,152,167, 16,175,119, 65,203,206,130,172,229, 69, 42, 23, 85,184,213, 38,116,122, 77, 49, 30,243,112, 48,191,122,
-156,175, 0,120, 52,218,131,205, 97, 18,106, 83,146,149, 4,194, 76, 0,146, 91, 88,241,164,101, 41,109,188,184, 10,126, 34,216,
- 84, 0,137,213,234,155,149, 73,236,160, 76, 76,164,176,212,104,116,198,150,183, 7,131, 18, 42, 93,229,167,198,253, 69, 23,214,
- 76,149,151, 57, 71,195,200,157,109, 69, 33, 82,243, 60,133,180,234,176,248,250,244,211,107, 91,226, 72,211,167,112,188,181,209,
- 76,160,213,204,197,106, 0, 96, 24,179, 79, 82,204, 72, 51,121,144,128, 10,249, 98,149,218,225, 28,149, 89, 27,152,205, 94,144,
-220,249, 80,209, 79,171, 70, 91, 20,181,184,135, 92,141, 50, 72, 14, 84, 76,118, 19, 36, 34,177, 25,151, 21,138,119,187,114, 19,
- 21, 68, 12,117,150,149,132,150,213,150, 54, 98,220,136, 16,188,119,163, 67,101, 5,113,196,105, 72,165,185, 82,119,197, 5,126,
-248,228,114,219,144,233,141, 70, 67,104,106, 56, 82,124, 82, 79,136,218, 88, 9,105, 88,156,247,222,169, 82,227,191, 45,232,212,
-218, 11, 78, 71, 98, 59,143,161,113, 39, 84, 75, 46,153, 13, 76,172, 45,229,243, 37,135, 29,104,251,180, 52,101,110, 6,210,236,
-148,169, 74, 12,138,140, 74,153, 50, 51,206, 33,177, 76,164,162, 59, 73,171, 73, 72,104, 78,168,197,125,231,124, 63, 6, 48,109,
-102,142,200, 60,234, 28,229, 82, 93, 7,244,104,105, 39, 91,241,105,141, 99, 37,254,169,195, 11, 90,214,220,144, 53, 30,151,233,
-216, 2, 62,226,207, 81, 79, 37, 64, 53, 1,150,150,100,144,129,164,144,145, 57, 33,117, 0, 73,102,157,197,144,162,146,201,229,
-185, 91, 7,133,199,163,200,101, 79,198,131, 70,106, 76,183, 83, 33, 17, 40,212,166, 60, 24,241,189,234, 27,101,247,106, 85,121,
- 13, 51,138, 77, 9,190, 85, 34, 58,146,217, 82,185,213,225,182,227,202,108, 33,244,163, 51, 30,132, 13,122,179, 61, 46,206,167,
-178,218,106, 21, 83, 17,198,105,113, 16,255, 0,130,203, 84,152, 48,121,220,112, 58, 60, 70,144,219, 72, 14,202,154,226, 91, 75,
-137,117,229,164, 37,133,166, 84,233, 54,205, 18,152, 42, 78, 72, 74,100, 38,109, 70,157, 75,167,176,101,215,110,185, 45,168,183,
- 26, 21, 45,132, 58, 22,233, 81, 25, 47, 73, 45, 70,101, 9, 42,121,228, 37, 28,165,217,183, 32,206,171, 85,105,149,250,165, 82,
-149, 14, 75, 94, 12,218, 69,174,167, 26, 93, 42,136,182,199, 51,171,157, 33,213,135,234, 53, 63, 17,100,187, 57, 41,104, 33, 40,
- 8,142,218, 24, 74,121,221,169, 86, 22, 72,193,212,205, 96,202, 46, 67, 48,184, 22, 31,101,130,133,184, 4, 88, 49, 35, 72,181,
-216, 86, 28, 81, 1,116,150, 73, 25,169,242,225,205, 66,229, 73,146,164,163,105,104,209,130,181,131, 0, 76,135, 75, 68,143,118,
-149,228,145, 98,129, 95,138, 36,233,202,152,138,141, 93,169,141, 69, 80, 30,227, 5,244, 43,222, 82,165, 36,243, 74,171,176,208,
- 41,106,160,226,222, 82, 83, 28,169, 98, 40, 10, 73, 90,220,201, 68, 52,254,150,111, 2,144,225,187,179,158,209,187, 10,132,211,
- 79,213,165, 82,118, 15,137, 25, 20,246,210,148, 75, 91,140,190,246,200, 95,117, 36, 32,115, 57, 41, 10,102,175,109,202,146,122,
- 41, 18,232,108, 40,225,134,134,166, 17, 71,172, 75,173,183,254, 28,202,224,136, 19,125,223,220,189,237,247, 37, 21,179, 37,214,
- 81, 80,121,191, 1, 45, 16,166,130, 31,105, 33,106, 75, 76,149, 56,163,206,177,200,205,113,141,195,133, 51,141, 78, 12,248,147,
-225,150,176,148, 59, 23,119,182,166,230,182,237, 57, 15, 97,150,105,151,140, 70, 87, 85,176,107,200, 50, 27,253, 3,177,111, 58,
- 93,191, 49,181, 28, 41, 2, 57, 60,193, 74,200,158,100,149,102, 22,210,191, 88,166,198,203,123,107, 2,250, 84, 17,179, 17,170,
- 37, 36, 88, 6, 45,176, 1,135, 60,241, 94, 80,210,197, 55, 50, 52,167,146, 27, 38,149,177,141,119,250,189, 44, 46, 13,254,219,
- 16,222,117, 4,220,220,223,242, 16, 41, 10, 0,121,103, 35, 29, 63, 35,174,144, 0,146,129,231,232,122,252,251,246,242,213,103,
-105,213, 58, 52,201,244, 90,252, 69,192,174,208,170, 53, 26, 21,114, 3,128,135, 96, 86,232,211, 30,166, 85,233,238,115, 96,133,
-177, 82,139, 41,165,103,205,147,175, 33, 3, 57, 79,194, 14, 78,124,199,203,236,212,253, 72, 96, 25, 78,160, 70,198,251, 27,216,
-220, 31, 76, 83,251,247, 22, 56,241,142, 65,215,160,207, 76,143, 35,229,243,210, 78, 79,144, 72, 39,250,186,145,142,218,250, 74,
-136, 25,198,115,208,129,220,124,245,247, 36,146,124,191,217,244,236,126,205,103,127,191, 3, 30, 72,200,230,229,206, 58,121, 15,
-199,215,251,117,236, 5, 31,245, 72,242, 7,190, 62,223, 76,233,114,133,144,114,164,245,198, 7, 65,219,215,238,215,190, 92,127,
- 56,224,103, 31, 47,191,211, 67,221,233,129,138, 43, 71,124,156, 15,196, 14,221,186,244,208,171, 3, 3,191,166, 64,201,249,119,
-249,234,232,212, 41,147, 22,132, 71,105, 74, 46,186,134, 91, 32, 16, 29,125,194, 18,211, 12,249,188,250,213,209, 40, 72, 43, 89,
- 56, 72, 39,166,186, 71,195,191,178, 43,142,110, 36, 99,196,171,219, 27, 61, 83,178,237, 25, 97,151, 26,188,247, 98, 90, 54,206,
-131, 38, 59,229, 63,225, 52,182,171,241,205, 66,178,148, 52,175, 16,166, 60, 5,115, 36, 97, 43,202,147,157,121,171, 41,169,236,
- 37,148, 43, 55, 69,234,199,224,162,228,159,112,198,205, 37, 29, 93,124,188,138, 26, 89, 43, 38, 29, 86, 36,103, 32,122,182,144,
-116,143,123, 88,123,241,204, 5,140,156, 36,231, 29,252,135,224,124,251,232,117, 0, 14, 70, 1, 7, 7,183,159,203,207,166,117,
-177,124, 80,240,223,126,112,157,189,183,214,195,110,107, 49,211,119,216, 53, 54, 96,207,155, 77, 84,151,104,213,200,115,224,199,
-169,209,174, 75,118, 76,184,204,185, 50,223,157, 79,148,219,177,157,113,166,212, 74, 28, 66,144, 20,218,181,174,203,234, 48, 7,
-159, 79, 94,255, 0,111, 83,141,108, 83,203, 28,200,146,198,218,163,144, 2, 58,142,190,160,216,223,220, 69,240,155,199, 36, 18,
-203, 12,200, 98,158, 22,100,116, 59, 50,178,157, 44,164, 14,132, 16, 65,247,140, 12,160, 58, 18,122, 12,253,253, 63,179, 67,171,
-168,200, 61, 58,140,249,227,207,167,231,182,138, 63,173,208, 17,223,167,203, 25,201,252, 53, 69, 64, 1,142,253,115,246, 15, 67,
-173,144,108, 65,244,198, 70,227,125,199,254, 48, 26,129,245, 28,189,186,140,125,224,250,245,208,171,192,201, 25, 7,255, 0,104,
-122,103, 69,184, 70, 72, 57, 0, 30,195, 29,124,186,126, 31,179, 66, 47, 62,163, 30,158,121,249,116,210,202, 73, 23, 56, 0,108,
- 61, 54,192,202,193,193,193, 4,247,206,116, 58,199,159,175, 67,233,162, 87,235,229,140,122, 96,250,252,244, 58,129,201,200,200,
-251,113,131,219, 56,209,199,198,216, 54, 6, 88, 0,100, 39,175,203,167,231,251, 52, 43,131, 39, 36, 2, 64,236, 58,254, 63, 61,
- 22,231, 76,100,244,201,251, 60,134,132, 80, 30,188,221,127,104,193,245,251, 52,170,155,223,107, 91, 25, 22,223, 2, 44, 12, 18,
- 70, 49,219,212,117,237,161, 87,243,234, 15,111, 44, 31, 92,249,249,232,197,140,103,249,222,127,105,251, 6,133,115, 24,236,123,
-246,244,239,223,229,165,147, 10,139, 27,123,190,126,126,252, 12,188,246,199, 76,103, 62,152,254,142,154, 13,206,249,201, 78, 51,
-156,140,231,211, 31, 46,250, 49,194, 2,122,244,243,207,151, 79, 93, 90,212,167,148,162, 20, 50,159, 34,158,248, 35,184,244,210,
-152, 2,247, 55,232, 48, 59,171, 82, 85,220,156,231,177,199, 79,179, 75, 84,137, 89, 82,129, 64,192, 61, 9,238,125,123,157, 45,
- 11,159, 92,102,195,211, 7, 1,145,228, 49,230,115,215,175,153,251,245, 85, 41,199, 65,212,158,255, 0,159, 77, 82, 78,114, 7,
-145,207, 79, 35,223,203,237, 26, 37, 0,231, 61, 49,231,219,242, 53,130, 1,198,113, 85,164, 37, 39, 24, 29, 70, 51,230,123,121,
-232,129,156,245, 31, 8, 29,193,235,233,231,223,190,169,163, 29,176, 58,117, 7, 26,244,121,242, 2, 82, 20, 60,250,224,142,189,
-251,246,210, 76, 0,248,223, 3, 5, 39, 29, 51,146, 59,252,240,123,103,174,138, 64,206, 8, 35, 31,183,240,208,109, 54, 70, 78,
- 78, 73,235,147,144, 6, 78, 6, 51,215, 70,163, 57,233,142,157,199,203,229,162, 27,218,255, 0,203,124, 17,187,155,224,134,240,
-161,156,231,174, 64,235,211, 29, 63,164,104,132,168,143, 60, 14,199, 24,243,245,249,127, 86,168,160, 96,103,207,203,243,246,141,
- 16,132,224,228,245, 7,174, 63,160,231,215, 73, 16, 5,253,223, 39, 9, 28, 86, 71,127, 62,223,143,231, 58, 44, 1,220,122, 99,
-160,192,252, 52, 58, 82, 7,219,143,207,238,213, 86,242,162, 60,134,112, 57,142, 0,243, 42, 62,128, 12,232,167, 5, 97,182,231,
-108,101, 54,149,175, 93,188,238, 42, 37,171,108, 82,103,215,174, 43,142,169, 10,139, 68,162,210,216, 92,170,133, 82,169, 80,121,
- 49,225, 64,134,195, 96,151, 31,113,229,164,118,194, 70, 84, 72, 0,157, 78, 55,217,195,236,235,180, 56, 5,219,136,183,189,229,
- 6,143,114,241,101,120,210,144,245,197,112,186,195, 83, 99,109,101, 38,115, 41,113, 22, 77,152,167, 82, 66, 42, 9, 66,147,245,
-132,212, 0,227,174,130,132,144,210, 64, 58, 65,236, 48,224, 78,145,183,150, 91, 28,115,238,229, 25, 47, 93, 23, 10,101,211,120,
-127,163, 84,163,165, 73,163,211, 57, 87, 30,165,184, 46, 48,226, 73, 76,201, 4, 45,184,107, 35, 40,101, 37,105, 33, 78,103, 93,
-206,171,207,168, 77,158,242,214,234,165,120,206, 45,240,239, 57, 83,188,203, 36,252, 62,157, 9,239,170, 51,196, 46, 48,105, 37,
-147, 42,160,151, 76, 16,146, 37, 96,109,169,129, 27, 92,118, 83,208,119, 32,181,143,145,135,112,125, 25,188, 13,143, 54, 16,113,
-223, 19, 82,137, 17,172,244, 16, 72, 60,170,157,125,165,213,191, 93,246, 49,126,194, 16,247,212,254, 92,102,175, 95,155, 82, 46,
-162,100,151,208,236,151, 84, 86,135,157, 83,143, 45, 96,146, 94,142,181, 28,149, 31,231, 39, 61,245, 66,141,115,205,137, 57,175,
- 1,247, 75, 76, 35,195, 76,148, 41, 72,125, 46, 37, 67,149, 50, 80, 63, 89,178,122,100,246, 29,245,245,218, 59,147,164, 45, 78,
- 62,215, 50,202,148,134,101,254,133,244, 62,145,140,180,188,124, 11, 56,232, 71, 67,171, 83,148,233, 49,170, 13,190,247,248, 44,
-245,182, 90,104, 56,144,150, 39, 33, 63, 10,154,125, 67,225,241, 20,158,202,245,193,243,213, 56,106, 88,146,193,203,105,235,239,
- 59, 19,191,201,199,127,158, 23,202,218,157,233,146, 24,236, 81,136, 80, 46, 1, 43,107,143, 46,174,130,197,183, 3,169,212, 47,
-102, 23,138, 45,142,166,222, 16, 42, 27,183,108,211, 81, 10,232,163, 70,247,155,186,155, 13,174, 83, 92,132, 0, 8,170,165,134,
-192, 6,115, 39, 5,106, 72,203,136, 86, 73,233,166,207,131,205,208,115,108,174, 89,118,133,206,234,163,216, 59,146,166, 20,169,
- 42, 82,136,161, 93, 77,252, 49, 42, 33, 4,225,182,215,204,148,185,216, 20,171, 61,198,186, 27,110,114,132,166, 53, 69,148, 59,
- 30, 90, 23, 25,101,236,171,154, 43,201,240,223,133, 36, 17,241, 35,145, 74,229, 39,161,215, 63,238,253,167,145,106,238,109,193,
-110,177, 27,154,158,103,166,165, 71,109,208, 75, 65,135,207,188, 66,117,149,227,252,159, 41,228,233,219, 3, 75,181, 66,188,109,
- 27,157, 72,221, 61,223,199, 99,123,219,220, 65,219,108, 51,192, 88,210, 85,228, 53,174, 76,116,104, 30,157,201,185,229, 35, 0,
- 2, 19,125,224,147, 75, 37,239,101, 33, 13,213, 69,250,103,114, 80, 10,102,173, 46, 58,164,199,113,180,212,163,184,159,141, 18,
- 38,180,144, 27,150,219,136,255, 0, 40,194,218,193,244,234, 52, 13, 53,152, 76, 85,228, 75,126, 75,175, 83,218,112,212,170, 11,
-111, 28,170,135, 77,132,169, 78,242,115, 15,209,175, 45,242,143,153,236,117,227, 97,231, 85,171,148, 38,109,155,155,154, 91, 20,
-248,232,126,139, 84, 87,199, 38, 34, 85,134,223,163, 74, 82,186,185, 28, 40,126,141, 95,205, 7, 30, 67, 69,110,125, 33,219, 19,
-109,119, 58,172, 90, 66, 93,116, 66,166,211,214,225, 63,160,250,214, 82, 3,169, 64,233,241,150, 27,112, 39,168, 3,155, 62, 88,
- 58,244,144,243,106,233,148, 11,197, 35,128,123,129,109,205,246,238, 6,199,184,235,108, 71, 42,184,155,216,242,188,198,154,162,
- 95,237,180,208,232,140, 11, 90, 66,236,136,172,189,245, 3,160,145,212, 16,122,249, 73,227,159, 17,187,137, 50,231,190,101, 63,
- 18,112,228,140,252,162,176, 30, 62, 10,228, 73, 82,164, 22, 95, 72, 63, 2, 91, 10, 66, 22,112, 8, 82, 66,185,126, 28, 29, 79,
-145, 81, 80,168, 42, 68,213, 63, 12, 37,188, 63, 45,130,209,128,132,156,150, 26, 75,203, 73, 74,254, 39, 10,138, 92, 67,124,164,
-229, 42, 25, 25,186,221,245, 35, 87,185, 43, 18,155, 90,227, 77,126,164,251,143, 7,129,118, 51,188,178, 11,120,144,148,242,135,
- 91,232, 71, 50, 10, 92, 36, 36, 39,211, 88,139,213,131, 77,117,196,212, 27, 16,219, 83,220,225,196,169, 47,211,101,161, 71,194,
- 11, 92,133, 4,174, 9, 66,203,105,113,183,145,240,248,193,124,202,108,130, 38, 34, 59,179, 29,137,125,253,230,246, 63,127,165,
-250, 13,186, 11,218,248,225,108,186, 60,159, 36,202,104, 33, 80,239, 79, 18, 6,232, 36, 44,108,206, 88,216,171,134,102, 58,137,
-189,193,232,183,182, 51,138,107,197,167, 35,145, 32,194, 75,137, 45,162,170,204,129, 26, 59,172, 0, 57, 16,250, 88, 42, 67,173,
-168, 44,132, 33, 97,105, 81, 89,194,193,192, 15, 21,183, 34, 93,189, 17,133,173,196,213, 88,150,133,188,239, 51, 44,199,149, 29,
- 45,142, 86,210, 82,135, 2, 38, 68,112,144,144,148,168, 41, 39, 32,133, 0, 2, 89,200, 80,154,117,109,186,212,100,199,139, 80,
-101, 13, 33,216, 78,199,114, 51,238, 37, 74, 91, 78,189, 27,148,178,231, 80,164,172,130, 9, 41,201,238, 14,179,250, 11, 83,227,
-182,194,154,145, 2,161, 25,212,187, 44,196, 66,213, 18,124,111, 5,107,100,166, 20,148,169,198,211, 12,115,175,153, 42, 74, 80,
- 70, 78, 78, 51,166,186,192,172,178, 6,109,136,220,117,189,189,227,117,177, 30,160, 27,119,233,139, 14,158,162, 39,142, 0,101,
- 66, 93,128, 10,247, 70,216,130,108,214,176, 96,108, 65,243, 95,175,187, 27, 7,111,210, 27,168,182,211,116,199,151, 78, 75,232,
-110, 83,209,169,177, 26,125, 10,125, 72, 91,143,187, 34, 34,142, 34,172, 0,129,128,132, 45, 73, 72, 9, 43, 56, 80,206,163,202,
-184,216,125,223, 26,158,154,225, 56, 80,114,142,180, 69,150,162,178,150,227, 46, 61, 62,106,200, 76,129,146, 74, 91,146, 28, 87,
- 54, 67,121, 73,211, 37, 69,159, 9, 83, 19, 42,175, 34,171, 13,106, 74,227,154,156, 84,200, 79,185,120,108,229,135, 25,169, 81,
-213,250, 96,176,134,208,128, 65, 64,248,130,145,141, 58,116, 74,219,236,148,159,175, 97, 86, 33,180,182, 20, 87, 17,108,199,169,
-180,216, 91,106, 47, 79,130,128, 61,245,230,208,113,204,207, 34,215,156,148,247,212, 94,170, 25,163,109,148, 76,140, 5,245, 41,
-218,254,142, 8,213,107,116, 44, 47, 97,229, 55,198,205, 75, 85, 29, 71,255, 0, 73, 68, 85, 96,178,164,159,111, 98,202,179, 71,
-229, 98, 69,134,130,202, 77,238, 0, 83, 96,239, 82,107, 84,106,164,152,205,214, 16,245, 17, 75,247,101, 22, 43, 1,232, 83,105,
-203,136,165, 50,229, 98, 34,151,202, 17,226, 61,202,145,202,178, 48,162,146,142,250,216,251,105,128,186, 36,170,100,211, 22, 67,
- 77,176,209,122, 60,214,153,145, 30,167, 10, 65,240,214,164,164,158, 79, 13, 73, 45,115, 37,224,181, 33,120, 81,230, 79, 42,131,
- 59, 69, 16,106,201,139, 50, 64,129, 87,142,243,161,150,146, 80,211,168, 90, 71,134,148, 54,236, 25, 3,150, 43,129, 5,101,229,
- 41, 92,199,162, 51,130,112,245,208,236,136, 14, 52, 88,165, 63, 50,139, 34, 51,197,246, 98, 51,239, 14, 83,216, 91,139,113,121,
- 76, 73,110,172, 58,223, 48, 72, 13,160,134,135,112,144, 6,154,194, 70, 23,117,229,143,129,216,236, 71, 80, 47, 96,118,184, 4,
-222,231,114, 6, 41,222, 44,205,105, 4, 73, 28,205, 45, 7, 45,193,177,250,212,141,149,187, 31, 44,137,107,144,124,172,109,102,
-184,117, 1,243, 59, 82,158,154, 90, 88,167,200,142,181,210,164,169,181, 70, 81, 89,144,237, 61,164, 97, 8,142, 95, 89, 89,114,
-156,227,128, 6,143, 58,148,202,185,146,172,161, 73, 41, 58,230,163,187, 82,190,163,190,164, 15,240, 15,170, 97, 12,245, 79, 47,
-184,169, 46, 41,174,193, 14,169,111,140,231,161, 40,198,122,227, 89, 5, 18, 3,176,154,143, 6,166,202, 9, 1, 73,143, 61,174,
-116,199,117, 99, 11,126, 47,134, 18, 84,193,229, 10, 37, 10, 37,180,225, 64, 40, 28, 13,100,168,166,120,245,217, 15,133,120,168,
-146,220, 87,219, 46, 28,171, 6, 52,112,158,128,225, 60,175, 70, 87,197,205,140, 40, 16,112, 64,214, 42,193, 90,101, 10,126,211,
-169,184,233,123, 31,188,110, 72,220, 3,125,207, 67,138, 55, 49,206,155,219,234, 42,132,129,216,197, 32, 46, 15,145,195, 50, 2,
-235,191, 86, 80, 85,250, 18, 70,227, 86,166, 57,149,157,109,178,148,183,224, 71, 1,183, 35,200,142,217, 40, 25, 72,109,212,201,
- 82,185, 20,122,144,165,158,100,158,128,171, 25,198, 50,253,209, 40,136, 75,137, 56, 90, 16,244,102,139,216, 60,229, 92,174, 20,
-160, 14,224, 59,241,225, 62,105,200,244,214, 51,107,195,108,165,151, 16,146, 22, 20,133, 20, 2, 74, 64,121, 60,138, 65, 87, 76,
- 96,117,207,114, 8,243, 3, 79, 5, 53,182,146, 64, 57,193,111,145, 35,178, 84, 80,226, 28,232,165,126,162,177,219, 31,234, 19,
-220,105,223, 44,132,121, 88,223, 77,198,253,250,119, 62,253,247,252,113, 75,113, 30,119, 60,175, 32, 4,249,186,239,191, 91,252,
- 54,176,222,214,184,191,174, 50, 89, 20,195, 81,143, 72,144,180,173, 79,134, 84,226,176, 3,206, 10,131, 10, 49,156,120,149, 12,
-182, 3, 33,100, 31, 37,188, 73,238, 14,172, 46, 81, 36,215,106, 78,136, 82, 13, 46,159, 29,244,173,218,140, 98, 3,147, 86,130,
-148, 42,159, 79,101,212,148,184, 90, 82, 9,117,242, 64, 39,157,182, 86, 64, 39, 89,163,142, 4,210, 26,113,106,112, 18,169,104,
-109, 13,148, 32,151, 20,219, 9, 95, 85,156,163, 43, 88, 5, 64, 16, 3,157, 50, 73,215,199, 43, 45, 65, 83,113, 91, 14,161,136,
-145, 25, 84,196,198, 1,231, 22, 91, 74, 20,150,219,107, 33, 42,116,156, 18,165, 16, 57, 84, 58,142,131, 82, 86,141,140,129, 80,
- 14, 99, 42, 29,250, 93,128, 39, 98, 55,238, 64,233, 99,214,219, 98,176,130,186,186, 61, 66,153, 3,200, 12,138,151, 0,172,107,
-174,228,216,130, 24,139,170,168, 32,128, 73,218,246, 35, 9,159, 71,167,209,161,120, 20,248,236,194,134,100,203, 91,178, 29, 95,
-186,251,203,202, 90, 28,149, 81,118, 76,215,143,188, 39,196, 74,202,151, 33, 97, 35,155,151,196, 40, 72,195, 37, 84,174, 73,169,
- 84,154,106,129, 77, 18,105, 49, 10,229, 68,157, 80,241,218,102,167, 32,224, 55, 84, 90, 25,111,222,102,198, 15, 5,251,154, 64,
-109, 11,229, 46,180,231, 39, 33, 15,133, 74, 59,117,246,189,234,168,242, 95,136,212,199, 36,199,182,218,105,167,105,241,249, 74,
-146,211,181,151, 92, 73, 53, 87, 2,149,206,150, 9, 76, 54,221, 64, 80,109,197, 32, 43, 88,189, 94,149, 6, 43,205,191, 86,230,
-247,217,135,221,162,211,216,142,170,140,185,124,205,173, 45, 70,131, 10, 58,124,106,140,226, 75,124,160, 0,202, 50, 8, 82, 18,
- 57,198,220, 72,224,134,210, 45,176,191, 96,122, 95,208, 6,189,206,219,216, 29,247,196,207, 33,174,134,153,155,219, 85,171,171,
-156, 48,220,187, 89,207, 83, 96, 67, 75, 32, 91,221,193, 17, 45,216,175, 48, 50,178,224, 84, 74, 44,154,236,184,109, 72,113,234,
-237,116,165,197,177, 54, 82,143,185,194,138,164,184,249, 16,105,241,143, 44,103,208,121, 50,164,146,226,240,182,220,119, 4,235,
- 37,164, 65,153, 92, 80,137,106, 70,139, 82,125,151,164,197,155, 93,168,123,196,123, 46,150,251, 8,240,252, 17,238, 40, 42,185,
-170,222, 34,155, 80,141, 16,150, 88,230, 75,114,101, 51,130,141,103,113,118,222, 84,228,199,126,232, 95,240,106,136, 16,215,189,
-218, 86,235,201, 53,185, 52,220,146, 81,114, 92,236, 97, 49, 90,112,128, 36,194,166, 1,146,181, 52,236,199,138, 84, 53,147, 85,
-149, 73,182, 92,129, 6,223,109, 81,169,207,198,147, 79,163, 83, 41,232, 5, 82, 81, 29,145,152,108,180,165, 54, 91,134,211,156,
-200,113,210, 18,218, 3,193,103,153, 99, 39,101,145,165, 85,144, 39, 49,211,208,128,187,218,251,146, 58, 53,134,171, 94,215, 4,
- 88,173,147,175,226,120,170,103,246,122, 6, 21,149, 44, 27, 66,168,189, 44, 37, 67, 23, 6, 68, 33, 36, 54, 58,210, 58,127,236,
-202,171,173,165,149, 12,145, 11, 77, 10,223,167, 90, 47,203,153, 93,154, 39,203,117,178,229, 86,225,153, 22, 43, 10, 90,217, 97,
-108,173,148, 73,109,194,197, 34,138,149,128, 98,176,158, 86, 18,160,180, 32,169,197, 18,171,243, 12, 71,188, 39, 42,174,205, 61,
- 18, 45, 72,169, 45, 52,144,181, 82, 30,158,238, 86,184,179,219,134,160,218,163, 82,146,160,225,109, 14, 58,219,178, 20, 76,135,
-249, 18, 91,109, 56,227,176, 25,153, 75,137, 81,185,166,184,212, 78, 68,193,165, 81, 33, 56, 20,195, 85, 39, 10, 11, 82,165, 48,
-193, 47, 87,234,137,240,209,202,128,158, 72,168, 70, 91, 66, 74,214,240,187,209,162, 25,147, 29,241, 80,243, 20, 40, 45,185, 21,
-234,107,146, 57,170,243,146,235,172,178,227, 19,125,225,132, 36,196, 91,197, 42, 68,112,151, 28, 82, 94, 80,113,210, 62, 13, 58,
-210,106, 66,183, 75, 35, 17,168,117, 97,109,198,228, 16,111,212,237,190,224, 90,197,113, 23,172,103,117,158,190, 74,182,147, 48,
- 80, 99,105, 64,211, 10, 1,101,209, 78,168, 99, 38,107,105,141, 52, 17, 20, 68,221,110,162, 55, 14,212, 81, 18,171, 73, 69, 54,
-151, 80,170,193,183,229,135,231, 85, 42,149, 41, 47, 79,143, 80,247, 20, 52,203, 16, 98,229,240,126,168,115,170, 31,125, 39,149,
-208,202, 26, 10, 40,231,230,113,232, 15, 68,139, 87,166, 53, 26, 60,198, 94,122, 51, 68, 71,148,250,148, 25,103, 63,162, 83,229,
- 41, 41, 99, 37, 69, 44,160, 37, 60,201,103,152,129,206, 20, 27,135, 43, 8,141, 22,153, 2,220,110, 28,171,174,170,134, 89,142,
-153,169, 66, 35,209, 88,108,174, 57,126, 80,125, 99,220, 96,135, 91,113, 92,141,161, 33,199, 27, 75,101, 92,216, 34,241, 2, 53,
- 62,152,134,101, 34,161, 49,233,206,169,137,117, 56,178,156, 90,231, 45,245,190, 29,112,130,215,199,159, 17, 9,113, 10, 64, 72,
-240,130, 80, 82, 83,212, 76,105, 31,217,222, 25, 64,230,104, 8,110,162,224, 1,102,223, 85,193, 99,246,172,183, 96, 73,103, 47,
-101, 81, 84,230, 84,205, 52, 18,164,134, 72,163,156,202, 35,140,221,164,118, 98, 85,165,150,214,109, 39, 74,162, 72,246, 71,229,
- 5, 65, 26,139,159,203,207,219, 83,176,204,240,223,237, 79,227, 35,111, 41,204, 69,139, 67,175,238, 80,222, 59, 98, 36, 38,195,
-113,161,208,183,162,149, 7,112,132, 52,182,144, 3,101,170,213,102,182,215, 40,232,148,176,158,221,135, 48, 73, 36,100, 96, 99,
-184, 61,250,246,212,159, 62,150, 45,137, 6,222,246,135,108,254,224, 66, 67,137,123,117, 56, 94,183,220,168,135, 22,209, 74,230,
- 88, 87,181,215, 66,109,109,161,180, 2,209, 52,250,172, 0,176,165, 45, 68,165, 61, 64, 1, 34, 48, 64,228, 21, 18, 15,251, 56,
-236,115,211, 86, 37, 3,171, 82, 68, 23,236, 70, 90, 53,182,195, 76,108,209,131,111, 66, 22,227,189,136,190,247,199, 60,230, 49,
-152,171,170, 80,253,162,193,143,184,200,162, 66, 62,237, 86,255, 0, 76,120, 41,206, 48,160,113,145,142,217,207,150, 15,125,123,
- 0,227,148, 14, 92,116, 63,209,247,244,215,220, 39, 25, 35,191, 83,230, 71,159,125, 87,109,178,242,146,134, 70, 92, 87, 96,172,
- 36, 4,128, 84,165, 45, 71,162, 80, 0, 36,146,112, 0,201,233,173,195,210,228,218,223,187, 26, 93,174,118,199,134, 90,117,213,
- 33,166,208,167, 28, 90,185, 80,132, 2,165, 40,158,192, 1,174,165,240, 33,236,163,226, 11,141,133,195,187,161,181, 31,108, 54,
- 57,185,170,102,161,188,215,148, 9, 46,210, 42,138,140,234, 81, 54,157,182,214,243, 78, 53, 39,113, 42,232,234,133, 62,203,140,
- 81,226,186,164,251,205, 65, 68, 45,141,111,127,178,155,217, 11, 7,117,232,244, 30, 38,184,174,161,203,107,103,231,248, 21,109,
-173,218, 73,190,241, 78,168,239, 51, 13,168,169,155,182,242,228, 90, 36, 81,246,136,186,131,238,144,210, 90,151,113,134,203,171,
- 91, 20,149, 36,203,150,181, 2, 36, 72,241, 41,180,202,125, 62, 5, 42,149, 74,131, 14,149, 68,162, 82,162, 70,166,209,168,180,
-168,109, 37,152, 52,202, 93, 50, 19, 72, 98,155, 79, 98, 58, 66, 90, 97,150,208,219,105, 24, 66, 83,166, 25,243, 9, 42, 36, 48,
-211, 63, 42, 59,216,200, 44, 75, 90,215, 17,131,112, 7, 91,187, 2, 54,178,171, 92,178, 89,124, 43,192, 18,102, 49, 69,153,103,
- 74,240,208,200, 3, 69, 2,157, 18, 76,166,196, 60,141,179, 69, 19, 15,178, 22,210, 56, 58,131, 70,186, 89,244,203,132,143,102,
- 23, 8,220, 37,199,165,207,176,182,222, 37,237,184,240,218, 71,188,239, 38,234, 68,167,221, 55,203,178, 8, 5,199,104, 48,157,
-143,245,101,141, 16,184, 57,155,143, 75,138,210,217, 36,230, 83,228,243,158,151, 69,160,187, 49,126, 36,133, 58,235,129, 35, 46,
- 60, 86,226,143, 94,131,153, 68,246, 24, 3,200,118,213,202,135, 74,248, 27, 28,132,168,164, 41, 71, 3, 60,167,178,137,239,204,
-123, 15, 64, 52,232,211,232,248, 74, 64, 64, 35, 29, 71,146, 73,235,146,113,212, 96,254,205,107, 90, 40, 75,114,198,159, 86, 38,
-236,109,251, 76, 73, 38,219,253,162,109,208, 91, 22,226, 81, 83,208,192,148,180,116,233, 71, 78,189, 18, 53, 84, 94,219,144,182,
-187, 30,236,110,205,212,155,226, 36,191, 73,131,133,184, 14,237,254,198,241,107, 70,166, 37,170,205, 10,172,246,199,238, 12,230,
- 90, 72, 51,232,213, 6,101, 92, 59,127, 50,122,210, 50,227,241,167, 51, 87,134,218,213,158, 86,166, 6,193, 0, 1,168,116,169,
- 41, 33, 39,204,245,237,215, 39,203,251,117,250, 82,251,111,182,226,159,122,123, 47,248,158, 68,212,183,205,103,209,237,109,192,
-166, 56,164,149,248, 53, 59, 98,234,166, 45,165,183,223,145, 74, 98,100,132,103,253, 85,145,219, 95,154,217, 61, 0, 4, 2, 74,
-134, 8, 61, 7, 49,198, 52,227,147, 73,255, 0,165, 66, 15,216,112,195,220, 36, 0,159,222,225,201,223,169,197, 33,199,180,137,
- 77,196, 45, 34, 0, 5,116, 17, 74, 69,250,190,167,136,155,109, 98,194, 32,222,246, 36,247,192,206,116, 56, 35,174, 1,207,238,
-253,186, 25, 65, 61,243,212,246,243, 7, 26, 53,192, 0,199, 55, 83,220,158,189,254, 95,142,132, 88, 87, 83,128, 65,237,142,152,
-192,193, 56,199,174,159,241, 15,192, 46, 18, 50, 66,124,241,246,227,185,249,232, 98, 58,147,216,252,251, 39,236, 30, 90, 53,207,
- 47,191, 65, 58, 65,207,175,110,189,250, 16, 14, 52,178,244, 30,252, 20,218,254,159,207,182, 5,112,227, 39,190, 51,142,131, 31,
-120,199, 78,154, 17, 68,242,243, 31,159, 40,251,126,126,154, 37, 72, 61,249,137,198,122,121,118,238,122,245,213, 5,161, 68,100,
- 16,191, 34,124,135,231,247,232,227,183,207,254, 48,111,134, 5, 42, 36, 16, 71,124,114,231,182, 61,126,122, 29, 68,103, 25,234,
- 1,232, 6, 0,235,229,162, 84,147,145,215,246,116, 0,106,130,240, 62,121,237,229,142,217,251,124,180,162,141,133,183, 31, 63,
- 61,177,144, 1, 62,151,192,138, 73, 25,229, 57,201, 57,255, 0,103,240,208,221,251,232,197, 2, 50, 70, 0,235,156, 30,227, 61,
- 50, 61,116, 50,192, 29,129,245, 39,203,236,252,116,170,117,249,219, 10, 40, 4,116,183,200,197,185,230,249,199, 41, 42,198, 70,
- 82, 58,103, 25,238, 71,150,116, 51,141,184, 1,235,202, 2,112,144, 0, 36,143,159,167,158,174, 42, 0, 30,132,158,249,207,174,
-132,121,178,164,158, 85,169, 7, 39, 24,254,119,219,234, 51,165,176,110,158,235,226,222, 82,148,255, 0,148, 36,147,212, 99,211,
-208,244,239,165,175, 69,181,182, 0, 82,148,225, 61, 73,192,233,242,239,165,161, 99,233,140,227,210, 7, 92,249, 15,233,252,157,
- 20,130, 49,129,223,185,251,245, 65, 32,224, 12,117,234, 63, 19,255, 0, 13, 86, 64,238,124,199, 76,122,104, 96, 96,148,167, 3,
-175, 66,127, 28,126,227,253, 90,168,210, 0,200, 56, 61,207, 79,158, 58,231,243,223, 84,210, 73,233,142,131,166,126,239,219,162,
- 91, 73, 57,233,223,215,207,166,147,112, 55, 61,255, 0,241,129,143, 96,121,224,159,199,161,251,180, 91, 63, 23,113,203,215, 25,
-238,123, 13, 83,109, 35,160,235,215,175,223,141, 18,148,131,208,116,233,158,223,102,147,193, 77,141,238,118,193, 72, 79,216,122,
-118,249,250,227,203,207, 85,146, 1, 56, 61, 61, 49,251, 7,109, 14,216,230,198,125, 50,122, 99, 68,160, 2, 64,198,125, 63,225,
-164, 90,192,144, 62,122, 97, 28, 86, 29, 14, 58,140,121,159, 62,158,186,218,174, 11,120,121,159,197, 23, 18,123, 87,179,145,130,
-147, 79,185,110, 40,206,220,178, 66, 73, 76, 27, 74,150,164,207,184,229,172,143,213, 6,158,202,219, 7,253,105, 35, 90,172, 1,
-206,113,144, 59,143,159,245,234, 71,254,193,173,178, 98,146,141,245,226, 34,165, 22, 63,188, 82,169,144,118,234,211,150,250, 66,
-158, 98, 93, 83, 19,235,142, 70,200,253, 26,253,223,221, 91, 42, 24, 61,198,152, 56,151, 50, 57, 86, 77, 91, 84,173,166, 80,186,
- 80,142,161,155,107,143,122,130, 91,254,220, 76, 56, 7,134, 79, 24,113,142, 65,195,218, 75, 67, 95, 58,243,173,255, 0, 2, 48,
-101,152, 92,116,213, 26, 20, 7,179, 48,196,149,103,214, 45,203,102,139, 77,179,109,136,172, 83,237,139, 54,149, 2,215,182,224,
- 65, 9,106, 37, 62,145, 72,142,136, 76,165, 49,147,211, 5, 45,100,145,212,231, 39, 86,118,235, 42,143,200,227, 47, 37,210,234,
- 18, 24, 83,124,167, 5,120, 37, 7, 39,169, 39, 31,142,154, 22,235,241,228,173,213, 7, 98,188,149,229,164,178,233,228, 89, 82,
-186, 30,101,122, 21,107, 39,167, 33,181,182,204, 85, 70,113,109, 7, 2,195,161,204,169,167, 50, 20, 18,130, 15,196, 61, 53,201,
- 85,114,187,206,236,205,119,148,147,111,221,239,252,122, 91,240,246,231,132, 50, 26, 12,191, 43,166,165,142, 30, 84, 80,168, 93,
- 32, 13, 58, 85, 84,105,177,176, 1,109,176, 91, 3,211, 99,135,136,196,145, 38, 52,105,210, 76,121, 79,186, 10, 76,117,169, 45,
-200, 65, 31,170,160, 65,233,140,104,132,199, 66,144,161, 62, 50,221,107,148,150,150,164,248,168,109, 67, 33, 74, 86, 6, 71,200,
-131,160, 41,209,224, 56, 99,202,116, 72, 15, 50,217, 66,222,125, 75, 64,192, 24, 0,163,205, 35,215,229,172,162, 35,108, 56,218,
-125,222,104, 97,121,193, 42, 81,113, 50, 18,162, 73, 1,181,118, 3, 58, 69,199,148,148, 66,227,107,244,216,237,190,219,127, 28,
- 18,170, 83, 9, 43,230,178, 30,161, 74, 4,185, 54, 11,164,181,128, 27, 95, 77,200, 59,139, 97, 81,169,202,247,134,228, 67, 90,
- 39, 71, 36, 55, 34, 19,199, 15, 6,193, 24, 91, 89,234,160, 7,109, 86,220,221,191, 69, 90, 85,181,115, 68, 96, 46, 68, 6,140,
- 7,138,147,149,150, 82,160,166,208,188,140,168, 39, 39, 25,242,233,167, 58,137, 71,166,201,142,194,201,142,212,216,196, 6,229,
- 50,121, 11,153, 61, 65, 3,161,199,207, 78,207,240,125,201,244,162,195,141,165,106, 65, 67,236,188,216,248, 92, 90, 48, 74, 84,
- 7, 98, 83,144,126,221,106,152,228,100,145, 44, 64,101, 22,223,184,183, 79,141,173,235, 98,111,138,187,136,120,137, 99,171,130,
-101, 58, 30, 38,100,109, 86, 82,202,195, 78,228, 88, 56, 32,141,236,172, 58, 16,109,124, 91,182, 90,193,101,183,152, 82, 35,165,
- 30,248,200,113, 65, 41, 9, 79,140, 82, 57,198, 49,211,152,245,251, 78,155,223,104, 77, 33,251, 91,135,122,140,200,202, 44, 42,
- 69,199, 77,109, 75, 9, 39,197,247,120, 85, 7, 27,105,208, 6, 86,128,176,147,145,219,151, 56, 58,220,141,174,167, 53, 29,232,
-216, 70, 58, 14,152,232,133,143,214, 72, 31,205, 26, 97,253,170,148,143, 23,133, 86,229, 70, 46,101,187,202, 15, 56,105, 57, 89,
- 75,148,154,162, 84, 79, 78,191,171,143, 92,159, 93, 75, 50, 90,104,205, 42,203,166,242, 70,111,241,189,135,243,239,235,142,124,
-204,184,154,105,248,255, 0, 33,161,119,211, 75, 85, 83, 4,100,118,176,147, 86,254,237,133,254, 24,136, 5, 65,227, 38, 82,145,
-202,226, 39, 41,110,184,151,185,156,241, 27, 46, 17,149,180,210, 23,200,250, 75,169,109, 32, 45, 42, 64,235,207,202,174,244,225,
- 84,213, 6, 69, 67,223,225,189, 84,158,167,131,113,207,129, 29,150,216,138, 80,148,182,153,212,240,151, 19, 0,248,133,126,240,
-180,243,120,152, 79,110,128, 7, 61,166, 95, 74, 93, 83,147, 93,247,105, 92,175, 73,101,190, 69, 71,105, 74,202,153, 10,108,130,
-212,142,100,163, 40, 88,230, 36,130,160, 83,202, 52, 77, 26, 68,232,229, 30, 27, 79,123,184, 37, 79,205,166,196,101, 85,116,182,
- 73, 71, 35,108, 72, 90, 68,166,220, 46, 4, 56,180, 23, 84,209, 5, 97, 7, 3,149,225,214,234,123,129,216,253,221,239,113,176,
- 23, 3,174,219, 95,167,161,116,245, 3,200,177,221,159,162,132,176, 97,182,229, 73, 27,128, 53, 11,223,179, 1,176, 39, 14, 61,
-179,110, 49, 87, 92,138,164, 73,146,233,178,165,150, 16,227, 84, 69, 42, 50, 94,109, 10, 71, 71, 96,168, 22, 37,159,133,105, 75,
-193, 9, 83,132,168, 41, 95, 14,158, 74, 45, 26,235,147, 34, 76,184,244,134,171, 40,104,204, 83,146, 41,175, 68,162, 76,140, 26,
-117, 76,161, 51,233,207, 31, 0,115,161,149,165, 62, 10,135, 57, 87,234, 12,157, 54,148,138,123, 5, 81,133,159, 38,108, 39, 22,
-195,242,231, 68, 66,152,157, 2, 68,128,208, 83,174, 57, 5,247, 3,144, 18,140,142,105, 41, 91,107, 89, 89, 79,134, 84,158,109,
-108,157,156,170,253, 2, 24,110, 77, 1, 74, 65,106, 28,151,106, 52, 57, 77,206,132,236,118,255, 0, 72,150,159,167,169, 41,148,
-219,202,116, 37,124,170,241, 18,165, 16, 50, 10,136,212,110,190, 89, 0,102, 91, 57, 54, 10,173, 96,125, 45,246,150,247,176,217,
- 88,139,245,185,184,195,137,205,164,100, 34,153, 99,169,146, 43, 14, 92,202, 82, 66,118,230,106, 62, 73, 25, 71, 75,134,111, 41,
- 23, 70, 4, 1,238,148,138, 91, 79,179, 2,163, 42,161,107, 43,221,217,145, 13, 23, 52, 5,211, 28, 76,196,148,190, 35,243,188,
-223,129, 37,188,163,195,105,198, 94, 1,193,212, 37, 68,105,199,141,108,212,103, 60,153,146,233, 80,100,164, 73,113, 42,158,134,
-163,128, 66,210,128,223, 59,193,178, 90, 87, 40, 29, 82, 74,185, 79, 84,231,174,179,235, 33,170, 93, 82, 77, 65,154,147, 17, 46,
- 76,178,176, 41, 85, 40,140, 45,104,144,248, 64, 74, 13, 62,115,105,115, 41,101, 46,164,185,225,171,144, 31,132,142,153,120,104,
-155, 91,103, 58,196,127,118,165, 59,108,201,150,211, 50,140,139, 86,167, 83,165,188,209, 10, 66, 17, 17,112, 22,243,140, 60, 16,
- 72, 81,231, 97,105,115,147,153, 93,245, 22,146,172,134,180,138,209, 72, 58,244, 55,189,174, 71,217, 35,212,143, 54,251,139, 30,
-173,181,252,117, 14, 86,239, 28,240, 77, 72,225, 81,117, 42, 44,182, 50, 45,220,171, 22,130, 84,251, 42, 72, 28,237, 90, 65, 85,
- 58, 66,227, 1,178,236,216, 17,129,148,194,170,116,121,146, 79,188, 38, 93, 38, 95,133, 10, 82,217, 78, 91, 18, 24,229,114, 60,
-196,167,194, 87,134, 28,105, 10,115,149, 65, 71, 7, 26,218,107,126,109, 90, 10,162,154,132,152, 21, 33, 32, 55,133, 48,201,165,
-212, 26, 80, 33, 63, 20,102,159,113,167,222, 82, 65, 82,130, 11,105, 73, 39,225,199, 46,172,180, 45,177,175,198,113,230,233,151,
-117, 62,124, 98,178,148,183, 92,183,144,196,137, 9, 81,248,202,103, 82, 28, 65,109, 73,194,146, 20, 24,229, 74,149,158, 83,170,
-151,157, 90, 22,218, 91,117,139,187,113, 17, 73,181,172,155, 85,134,101,215,110,181,213, 99,253, 77, 72, 98, 68,134,161, 70, 15,
-171,149, 18, 12,199,165, 63, 30, 59, 44, 48,211,146,228, 58,240, 75, 8,112,149, 16,164, 80,243, 60,247, 50, 62,199,125,199,193,
- 73, 23,219, 99,125,143, 82, 0,239, 80,241, 39, 21, 71,196,149,209, 83, 82,212,174,107, 81, 80,226, 56,226, 80,230,162, 70,147,
-234,226,138, 33, 50, 71, 80,238,238, 21, 99,138, 13,122,152,170,128,194,195, 15, 28,122,147,162, 40,105,244, 58,132, 37,223, 18,
- 3,231,194,234,242, 86, 28,114, 59,165, 43, 30, 26,249,214,164,228,128,219,188,202,202,185,192,213,242, 37, 81,151, 30,143, 37,
-197, 57,226, 48, 3, 43, 43, 9, 11, 44,184,174,102,157, 83, 95,206, 90, 22, 66, 70, 64,200, 86,124,137, 13, 21,189,112, 82, 46,
- 11,114,151,114, 91,117,216,119, 21,175,113, 83, 33, 86,232,117,120,238,174, 76,106,173, 26, 82, 67,145,101, 66,125,192, 11,141,
- 45, 4,130,146,128,164, 41, 37,183, 57, 92, 66,210, 3,147,114,251,147,205, 46, 54, 83,202,178, 2, 20,226, 80,132,161, 96,169,
- 73, 10, 36,120,173,129,204,140,147,204, 20, 64,198, 59,150,162, 37,117, 42, 5,134,194,253,108, 65,216,110,125, 71, 75, 11,250,
- 92,139, 85, 45, 11, 75, 83, 85, 72,209,180, 51,196,206,140,172, 25, 25, 24, 29, 14,146, 35, 0,209,184, 32,134, 82, 46, 24, 18,
- 55, 26, 78,240, 90,213, 31,208,130, 86, 9, 4, 18,130, 72, 73,229, 80, 42,230,108,126,177,199, 46,112, 65, 25,207, 93, 58,209,
- 39,130, 16,145,159,214, 81, 60,157, 65,194, 72, 0,114,156,158,128, 96, 14,165, 71, 30,128,234, 46,217,220,212,153,116,202,237,
-193,112,215,105,214,197,177,108, 64,126,171, 91,175,213, 37,166, 53, 46,151, 79,136, 18,100, 76,145, 41, 67,244, 76, 39, 45,163,
-148, 5, 41,199, 22,134,154, 11, 82,210,147,121,177, 56,210,225,140,221, 20,202, 80,185, 43,180,231, 43, 85, 4,209,236,251,142,
-240,181,165,219, 54,109,110,224,123,244, 52,198,233,213,121,111, 56,150,164,191, 39, 34, 8,154,220, 70,223,145,203,133,133,114,
- 37, 82, 44,159, 40,174,158,140, 87,178, 8,168, 83,237, 72, 72, 38,202, 69,200, 91,220,219, 97,125,133,250,145,136, 77,103, 11,
-113, 14, 98,249,179,100,188, 59, 93,159, 12,160, 94,161,169,105,165,154, 56,137, 78, 96, 87,150, 53,100, 83,203, 28,198, 91,150,
- 88,129,148,174,133, 36,110,229,114, 79,128,205, 58,148,133, 31, 26, 20,100, 59, 45, 60,196,132,212, 39, 20,202,122, 50, 84, 70,
- 84, 27, 10,142,218,188,129,109, 73,206, 70, 5,137,201, 14, 46, 63, 35,110,172, 30, 98,236,137, 60,136, 43, 66,208, 65, 73, 5,
-196,225,111,114,171,166, 73,229, 9, 25,193, 3, 88, 95,215,200,158,183, 30, 67,206, 41, 43,116,248,202,117,107,231, 82,249,143,
- 62, 86,165,101, 75, 43, 42,230, 4, 2, 9, 87, 55,198, 14,178, 38, 92, 98, 67, 32, 20,251,201, 8, 88,240, 16,146,164, 41, 67,
-178,192, 65,194,147,145,216,231, 10,198,125,116,226,139,237, 51,153,109,101,216, 45,137,176, 85, 0, 40, 38,219,249, 64,243, 91,
-246,186, 2, 70, 32,113, 80,251, 44, 81, 44,131, 83,130, 89,141,129,187, 49,212,196,131,181,139, 18, 64, 38,192, 90,228,140, 52,
- 23, 71, 18,155, 27,182,247,133, 23,109,175,221,230,219,141,180,184,238, 72,209,228,209,169,247,213,194,220, 10,181, 86, 20,201,
- 78, 65,135, 62, 60,103,163,251,172, 38, 37, 75,102, 75, 81,164,214, 36, 66,142,250,153, 91,141,169,214,146, 84,119, 30,147, 66,
-165, 80,195,147, 41,232, 38,166,235,108, 25,149,121, 74, 76,250,173, 65, 50, 26, 67,141,184, 37,252, 94, 36, 34,194,208,182,218,
-140, 81, 20,180, 82, 89, 10,109, 73, 89,131, 15,180, 99,113, 31,190,120,217,226,105,247, 21, 37, 48,237,189,193,122,201,132,220,
-231, 27, 90,216,183,172, 58, 52, 11, 98, 37, 40,182,149, 41, 9,140,210,225,202, 12,167,155,149,105,150,162,177,158,154,222,143,
-101, 55,180,158,109,129,120, 91, 92, 38,241, 1,118, 84,165,108,197,201, 83,133, 67,218, 59,194,177, 84,117, 3,105,238, 58,130,
-145, 22,145,102,215, 42, 78,168,190, 54,130,167, 53,198, 99,180,128,239,129, 65,155, 33,153, 40, 74, 41,207, 76, 66, 18,163,204,
- 18,106,169,105,103,136, 44,113,146,169, 37,205,135,152, 11, 55, 64, 21,137,251, 98,218, 65, 1,129, 26,156,119,103,137,223, 65,
- 12,230,155,192,222, 23,241, 67,129,120,142,163, 57,207,166,202,105,115, 92,243, 34,120, 80,201, 36, 83,210, 71, 89, 57,203, 94,
- 45, 47, 81, 37, 18,146,173, 69, 62,179, 89,161,231,164,145, 39, 16,209, 79, 40,202,229,206,203, 50, 92,167,210,208,107, 18,249,
- 17,239,226, 44,119,234, 17,224,182,163,206,183, 36, 8,104, 87,141, 37, 68, 5, 37,149,169, 33,190,156,196,116, 73, 21, 52,233,
- 79,123,195,137,167, 34,158,186,130, 89,101,234,213, 77, 81,234, 87, 35, 64,168, 41,152,136,167, 35, 45,198,233,144,132,186,180,
-161,158,159,161, 42, 57,214,118,211,109, 82,144, 99,162, 60,122,107, 81,146,184,210, 98, 6,209, 25, 12,173,165,168, 41,185, 13,
-180,145,149,165,224,224, 89, 57, 61,193, 61, 53,141, 63,114, 33,233, 11, 85, 22, 2,170, 6, 42, 84,212,185, 46,120, 80,168,201,
-117, 77,148,182, 88,156,160,181, 73,125, 4,163, 41,105, 11, 32, 40,146,226, 20, 64,212,177, 40,249,104,218,136, 93, 29, 1,247,
-238, 71,235, 92,237,232, 58, 18, 54,181,252,231,165,168, 98,130, 44,186,134,201, 24, 5,166,121, 54, 99,112, 87, 94,233, 10,130,
-202,186, 81,249,136, 78,144,193,201, 44, 84,122, 5, 38, 28, 86,234,113,156,144,169,205,161,212, 57, 82,170,201, 76,201, 45, 60,
-163,153,137,113,197,182,159,113,143,202,130, 20,219, 0, 33, 33, 33, 36,173, 0,232, 37,215, 92,148,250,153,181,195,113, 24,204,
- 83,252, 40,144,178,220,218,116,212, 96,205, 77,188,203,169,196,146,181,168, 6,221,112, 41,150,139,220,205,165, 69, 32,139, 44,
-136,107,113,106,122,179, 49,215,100, 48,241,113, 20,248,234,113,186,107, 6, 70, 20,166,155,136, 28,230,125, 10, 89, 0,151, 66,
-148,164,164,149, 30,184, 24,253,199,122, 66,165, 47,234,152,208, 81, 88,170, 60,133,169,134,151, 37, 17, 89,142,182,144,160,195,
-138,116, 16,184,175,115,146, 26,228, 35,152, 2,144, 10, 70,182, 97, 64, 14,163,229,113,223,173,246,245,220,141,236, 46,119,233,
-208,144,112,239, 75,150, 79, 93, 50,162,150,205,103,109, 68,106,254,230, 52,186,181,201,144,170,200,168, 55, 28,194,177, 0, 89,
- 74, 58, 49,195,130,197, 46,151, 71,143, 89,156,136, 50, 16,226,147,239, 45,220,146,230, 75, 91,181, 22,228,134, 85, 46, 53, 65,
- 42,116,169,215, 27, 81,116, 21,143,136, 56,176, 83,223, 69,209,101,194,118,104,120,212,188,105, 41,116,182,242, 25, 83,206,149,
- 54,218,214,160,181,186,242,194,131,168,108,182, 83,205,250,200,108, 3,147,240,233,134,126, 83,142,181, 21,235,160,213, 20,137,
-105,109,136,245, 1, 33,149, 69,131, 86, 73, 74,228,162, 18,225, 47,194, 98, 66,176,143,133,208, 29, 73, 36,133, 44,128, 52,237,
- 91, 17,157, 91,145, 84,244,169,143,180,227, 68, 21, 75,109,133,243, 33,111,129, 20, 74,114, 56,241, 39,182, 84,174, 82, 70, 20,
-165,173, 69, 57,239,167,120,101, 42,241,198, 6,146, 55,181,138,219,126,164, 14,187, 16, 5,245, 16, 5,201, 45,115,133, 51, 76,
-165,169, 40,229,154,170,189,170,102,150,227, 88, 37,145,130, 42,169, 88,221,140,154,183, 83,169, 71, 40, 43,236,138, 6,155,195,
-227,233,107,174,155, 39,136,190, 10, 30, 97,107,118,164, 56,127,220, 70,158,146,160, 16,217,132,155,246,143,200,210,154, 35,155,
-222, 4,191,120, 37, 71, 9, 82, 86, 10, 64,235,168,152,132,228, 28,164,164, 19,215,231,143, 77, 73,155,233, 79, 95,204, 87,248,
-240,217,189,185, 66,217,147, 47,105,120,111,164,154,148,182,157, 83,138,126, 70,226,221,245,186,220, 86,150,133,146, 80,148, 83,
-104,144,212,158,249, 18,186,147,129,168,234,237,246,223,222, 27,165,119,219,150, 21,133,110, 86,174,219,186,237,172, 68,160, 91,
-118,213,189, 79,122,169, 91,174, 86, 39, 44, 34, 53, 58,153, 1,128, 75,239, 43,226, 82,212, 74, 91,101,180, 45,231,150,219, 72,
- 90,211, 98,229, 79,202,203,150, 89, 92, 34,171, 76, 88,147,176, 28,199, 55,185,216, 11,111,185,252, 49,198, 60, 76,139,250,126,
-189, 32, 28,197,102,132, 46,145,114,196,195, 16, 0, 0, 1, 44, 73,181,128, 4,182,214, 7,108, 96,193, 42, 89, 72, 66,114, 71,
-100,165, 36,149, 99,176, 0,119, 58,237,167,177,211,217,215, 3,138,221,197,169,239, 54,241,210, 85, 43,135, 45,155,171,194, 77,
-122,148,248, 83,108,110,166,227, 37, 13, 84,169, 27, 94,149,140, 21,219,145, 99, 42, 44,251,145, 77,156,169,135,162, 82,185,144,
-185,207, 4,246, 39,129,175,163,187,181, 22, 69, 46,141,184, 92,116,214,164,223, 87,121,101,186,140,141,132,177,171,110,211,108,
- 90, 17, 41, 14, 34,153,125,223, 20,181,162,117,229, 60, 3,201, 42, 45, 53,216, 84,224,161,200,151,229, 4,149, 43,177, 76, 91,
- 27,113,181,244, 24,150, 14,210, 88, 54,166,216,237,189,188,185, 31, 81,216,214, 37, 26, 21, 6,221,166, 25,110,243, 75,144,204,
- 24,141,132,174,107,238,225,201, 18, 29, 43,126, 67,129, 42,121,215, 23,130, 27,243, 44,205,164,167, 43, 26, 24,161, 39,118, 99,
-165,220,118, 10,191,105, 84,157,152,182,150,181,202,117, 86, 19,158, 18,240,238,182,106,218, 90,236,242, 5,138,150, 59, 56,166,
- 62,103,145,133,180, 9, 71,217, 84,185, 12,200, 75, 22,182,135, 80, 11, 12,100, 74,154,169,242,176,132, 54,203,109, 54,195, 44,
- 71,140,203, 81,226, 70,137, 29,164,179, 10, 4, 72,236,165, 45,195,134,212,102, 91, 75,109,182,148,182,219, 76,161, 8, 74, 80,
- 18,144,232, 90,112, 2,249, 93,117, 25, 66,146,209, 71, 66, 22,162,163,134,241,211,245,150,177,159,152, 58,106,104,113, 92, 82,
-188, 39, 22, 57,159,117,107,144,172,114,134,208,144, 20,235, 77,249,242, 37, 62, 27, 96,249,156,159,144,217, 59, 62,158, 23, 33,
-162,160,146, 26, 67, 60,168,236,129, 33,209,134,130,134, 48, 2, 26, 35, 31, 51,211, 77,180, 46,116, 52,199,224, 54,176, 30,128,
- 14,214, 29,134,219,219, 98, 14, 47,113, 78, 21, 72, 3, 87,123,254,238,135,222,126,240, 59, 91, 14,157, 22,158, 26,105,164,172,
- 5,168, 4,243,159,213,231,121,125,145,208, 99, 30, 93, 60,129,211,139, 26, 35,109, 54, 49,133, 17,220, 16, 79, 83,232, 60,250,
-246, 31,187, 86,138,100, 68,165, 73, 8,229, 81,142, 64, 42, 86,112,183, 22,144, 21,130, 15, 85, 36, 19,242, 28,218,203,218, 78,
- 49,240,169, 41, 70, 66, 74,122,165, 68,142,170,207,160, 57, 72,251,254, 88,216, 14, 90,230,251, 15,244,249,254,125, 48,211, 87,
-166, 54,210, 5,205,133,251,123,192,239,235,247, 3,211, 99,142, 83,123,105,234,144, 40, 62,204, 78, 45,213, 56,172, 10,158,223,
-193,161, 68,109,166,214,234,222,168,213,110,106, 44,120, 49,210,219,105,230, 42, 83,161,103,253,144,131,228, 53,249,148, 74,163,
- 86, 33,178, 31,157, 73,168, 68, 97, 73, 37, 15, 75,136,244,102,150,130,114, 10, 29,117,176,149,119,242, 39, 7,166,117,250,228,
-239, 21, 54,139,113, 81,162, 91, 21,234, 77, 58,187, 2,167, 53,185, 83, 41, 53,168, 81, 42,144, 36, 71,167, 16,227,102, 68, 9,
-141, 45,167,146, 37,173,178,146,164,171, 5, 25,232, 70,154, 39,182,131,105, 43,148,145, 68,173,237, 86,217, 86,168,230, 58,226,
-138, 93, 86,195,181,102,211,147, 24,131,204,194, 99,191, 75, 41,109,188, 19,219,175, 94,132, 30,186,205, 29,108,244,181, 21, 13,
- 12,113,200,178,104, 7, 83, 48, 55, 91,237,178,176,177,213,114,119, 55,218,198,215,196, 43,137,120, 6,163,136,230,167,205,151,
- 49, 90, 53, 72, 22, 32,134, 2,250,180,203, 43,106, 45,205, 75, 41, 46, 64,178,159,179,125,239,183,228,250,227,101, 60,188,224,
-140,142,128,244,207,144,199,168,198, 48,126,122, 21,192, 0, 3,155, 35, 57,233,215,215,166,191, 65, 78, 47,125,129,220, 19,241,
- 21, 2,167, 90,218,170, 35,252, 48,110, 99,233,144,252, 74,205,131, 29,202,134,222,212,103,172, 18,132, 92, 59,119, 53,242,134,
- 99, 45,220,115, 59, 76,122, 43,169, 25, 41,109, 88,229, 48,230,227,131,217,183,196,255, 0, 1,119, 35,112,119,146,205, 19,108,
- 74,180,247, 33,217,251,193,104,151,171, 59,105,118,144,165,248, 44, 49, 88, 13, 5,219,245,162,132,229, 84,234,138, 35,202, 73,
-200,108, 58,145,204,100,244,217,164, 82,178,199, 50, 26,105, 9, 0, 92,221, 24,250, 43,250,158,193,130,177,236,164, 11,226,164,
-206,184, 91, 56,200, 65,146,174, 1, 45, 32,219,159, 17, 47, 24,222,195, 93,194,188,123,216, 93,212, 33, 36, 42,187, 28,115,229,
-210,158,163,169, 24, 62, 96,119,253,255, 0,215,160,212, 66,187,167, 24,232, 58,249,116,198, 49,219,174,141,117, 3,152,133,229,
- 39, 56, 41,199, 80,122,227, 65,120, 97,165,169, 73,201, 43,238, 14, 79, 41,235,146, 61, 52,244, 14,192, 1,182, 35,160, 31, 92,
- 14,231, 32, 73, 74,186,231,203, 24,251,137,244,208,101, 3,148, 32, 40,165, 57,236, 60,201,209,133, 63, 26,186,168,231,201, 71,
-225, 29,187,121, 13, 81, 86, 50,122, 16,115,246, 12,124,177,163,142,222,236,103, 3, 40, 3,211, 29,186, 30,189,241,215, 57,208,
-203, 24, 36, 15, 67,140,252,199,207,203, 69, 47,208,103,166,115,229,147,129,215, 62,186, 25, 64,244,230, 29,124,143,175,113,215,
-212,233, 85,189,129,245,235,243,240,198, 69,172,126,125, 48, 42,129,193, 30,127,147,161, 85,246,156, 17,215,204, 2, 8,199,217,
-162,148, 58,146, 20,122,103,207,167,159, 83,161, 92, 42,235,233,230, 71,159, 95,232,210,139,215,173,176,170,143, 95,157,176, 50,
-206, 15, 76, 31, 80, 71,224,126,220,104, 85,168,227, 28,189,125, 61,126,206,154, 37,100,103, 3,200,156,244,243,249,232,117,227,
- 57,235,233,242,251,180,182, 50,126, 54, 56, 25, 99,175,159, 81,231,229,242,210,215,178,172,119,200,244,198, 14,127, 31, 61, 45,
- 40, 47, 97,229,191,200,255, 0, 79,155,224,126, 56,162,144, 64, 30,191,143,158,170,163, 62,125,137,232,115,220,250,106,159,236,
-213, 69, 35,156,131,204, 71,166, 63, 63,156,233, 54,219,160,220, 99, 35,227,108, 20,131,208, 14,228,121, 99,231,251,116, 80, 56,
- 35,184,249,250,104, 22, 57,146, 8, 81,234, 59, 31, 80, 60,243,247,232,209,216,117,207,207, 68,223, 77,200,244,254, 88, 24, 45,
- 24,207, 92,231,203, 69, 35,207,183,239,208,173,124,207, 92,126,127,118,138, 64,232, 79,221,249,252,249,105, 44, 16,142,190,251,
- 15,145,130, 80, 58,103,215,250,244, 66, 49,140,129,215,212,247,207,245,106,146, 48, 57, 79,150, 7,252,116, 64,193,232, 49,223,
- 31, 97,210, 44, 79, 91,236,127,211,253, 48,153,183, 97,138,128, 40, 5,103,208,224,119,235,169,123,123, 41,104,112,173, 78, 2,
-173,121, 73,134,167,220,191,111,139,158,183, 80,116, 97, 14, 1, 26, 65,131, 29, 41,199,146, 91,142, 0, 58,136,106, 65,193, 4,
-140,224,156,227,211,175, 77, 75,111,217,163,113,199,172,240, 9,183,233,105,231,146,187, 86,241,187, 45,249,133,131,143, 9,213,
- 78,114, 75, 97,196,121, 2,219,168, 32,158,224,244,213,121,226, 65,147,244, 28, 33, 13,148,206,186,191,254, 57, 45,142,131,250,
- 49, 71, 12,158, 42,209,137,118,101,162,169, 41,214,225,249,148,226,226,196, 27,233, 45,211,181,251, 99,118,128, 83,114,214,210,
-153,146,220,116,144,235,125, 10,212,129,205,144, 20,161,156,249,105,224,180,100,161, 50, 35, 25,130, 74, 80, 57, 85,206, 20,176,
- 26,230,198, 22,164, 30,253,198,153, 40,181, 49,238,232, 92,122,195, 47, 73, 82,210,211, 81,100, 39,149,110,184,178, 82,218, 1,
- 61,252,180,248,219,242,107, 80,222,162, 71,155, 77, 98,169, 61,192,124,102, 35, 56,130, 91,108,254,170, 94, 72,254,110, 58,245,
-215, 54,213, 70,193,217,152,217,148,130,111,182,219,117,233,112,127, 28,123, 9,151,215,172, 84,113,194,236,164,181,215,237,232,
-114,116,222,246,144, 11,142,228,222,194,248,216, 58, 84,210,135, 89,145,227, 49, 81,108,184, 26, 12,189,132,132,180,123, 21,146,
- 58,249,103, 78, 29, 49,216,145,157, 46,202,141, 0, 50,165, 99,153,162,151, 0, 10,255, 0, 80, 14,216,207, 93, 55, 22,253, 58,
-116,249, 14,180,186, 68,194,162,227,110, 41, 40,100, 22,154, 72,236,208, 41,238, 63,167, 78,237, 50,222,105,197, 50,210,160,203,
- 5, 43,248,209,238,139, 82, 16,172,254,170, 84, 6, 15, 64,123,246,209, 97,137,100, 58,121,100, 21, 38,219,129,125,253,251,159,
-203,124, 66, 51,202,138, 53, 13,169,202,221,119, 10,203,112,189, 71,216, 96, 1, 27,139,233,177,239,124, 60, 54,123, 86,252,196,
-161, 45,162, 50,155,229, 7,170, 74, 10,129,238, 6, 71,112,116,252,211,104,240,209, 29, 41,140,174, 68, 20,228, 53,207,204,217,
- 24,234, 19,232,174,250,105,109, 74, 83,112,209, 24, 57, 24, 70, 14, 44, 8,200,152, 24,136,167,206,112,124, 36,200, 90, 75,189,
- 71,243,115,233,167,174,148,195,204, 73,247,101,182,182, 20,172, 18,219,237, 41, 33, 67,200,161, 67,203,168,237,167,136,114,230,
-101,187, 11,252, 13,192,191, 66,125,255, 0,150, 57,147,139,234,195, 84,202, 96,169,114,138, 75, 0,206, 26,224,108, 77,134,219,
-119, 54,216,237,113,131,109,233, 2,149, 48,165, 68,165, 30, 38, 65, 7,177,206, 58, 19,172, 11,142,250,104,187,248, 72,189,156,
-100,243,201,160,212,173,234,211, 33, 37, 75, 0, 55, 52,196,120,156,116, 8,228,153,212,158,131, 26,214,142, 52, 56,200,162,240,
-178,104,182,149, 18,205,170,110, 30,239, 93,144, 68,251,106,214,167,179, 37,200,145,162, 56,240,138,204,250,159,186, 52,167, 29,
- 74,229, 97, 13,180,210, 74,150, 65,201, 72, 25,215, 24,110,255, 0,109,214,236, 89,181,169,123, 63,196,206,212,209,225,216,219,
-139, 33, 54,133,121,152,140,200,163, 86,236,207,172, 95, 67, 44,213, 92, 50, 29, 90, 28,247, 39,220,142,243,241,228,161, 37,109,
- 48,160, 22,133, 16,160,237,150,210, 77, 74, 30, 57, 24, 4,148, 29, 42, 55,123,122,233, 0,155, 3,252,176,190, 77,224,151, 30,
-113,173, 21, 7, 27,228,116, 52,241,195,151,149,172,136, 84,213,193, 77, 53, 92, 16, 72,162, 73, 41,163,149,129,100, 44, 12,107,
- 36,134, 56,222, 75, 34,185, 39, 28,240,171, 81, 92, 18,235, 15,189, 50, 83, 15,182,251,205,242,193, 1,135, 11,172,188,227,129,
-215, 90,116, 41, 15,167,152, 55,128,160,127, 87,190,113,171,197,186,251, 84,199, 27,110,231, 91, 11, 8,109,105,102,164,211,204,
-152, 75, 4,120,205, 50,166, 93, 67,142, 51, 33,194, 84,147,146,190, 85, 0, 82,178, 59,103,187,207, 96, 84,168,155,135, 92,164,
-148,251,168,139, 80,118, 74,101, 49,206,195,115, 26, 83,165,196,200, 97,164,164,165, 44,172,160, 41, 39, 56, 83,110, 36,144, 0,
-213, 45,183,165,251,180,225, 57,214, 41,211,231, 46, 59,134, 32,155, 57,137, 75, 47, 56,165, 48,251,207, 7, 20,216, 97,211,207,
- 28, 22,210,121,212,147,204,148,242,228,105,122,137, 21, 98, 46,198,247, 22, 0, 1,112,118, 0, 3,218,222,150,216,220,157,247,
-199, 91,101, 89,173, 61, 78, 87, 77, 84, 36, 38, 42,136, 21,215, 65,180,182, 96, 28, 89,154,203,123,157,181, 30,246, 5,126,214,
- 30, 11, 94,207,114,229,117,201,237, 69,164,202,120,197,143, 54, 85, 82,157, 37,183,147, 22, 59,235,108, 65,134,165, 70,194,224,
- 61,226, 33, 45,144,231, 55, 47,196,226,209,149,116,219,107, 39,110,107,207,161,154, 43, 53, 69,192,105,220, 59, 45, 51,224, 51,
- 86, 64,151,226,135,152,104,200, 64, 67,211, 90, 7, 24, 74, 94, 41,111, 9,230, 0,233,156,176,182,201, 77,169, 18,170,137,115,
-223, 42,193,152,112, 99, 91,243,158,143, 35,199, 74,144,226, 36, 74,147, 13,192,137,144, 80,224, 4,151, 2,137, 82,194, 64, 37,
- 56, 27,217,102, 90,215,133, 41, 49, 27,133, 84, 98,165, 57,224,159,142,189, 5,146, 26,113, 35,153,236,152,138,109, 46,169, 69,
- 25, 87,137,133,140,117, 36, 18, 53, 10,175,145,203, 5,138, 80,109,208, 48, 59, 17, 96, 8,190,160,123,246, 0,108, 20, 27, 91,
- 12, 57,247, 17, 10,106,116,134,130,190,154, 78, 89, 80,156,196, 87, 1,193, 91, 30, 97, 18,163,152,205,238,197, 65, 6,218, 88,
- 22,108, 90,237,237,189,152,234,185, 95,164, 89,245,210,228,149, 56,245, 82,107, 53, 74,100,246, 35, 52,164,165,243, 25, 77,135,
-115,204,242, 70,121, 29, 74,177,211,148, 96, 43, 79, 29,187, 98, 95,172, 58,106, 17,164, 80, 67, 45, 56, 12, 74,109, 70,100,217,
-240, 85, 24,171,153, 44, 69,113,113, 82,236, 53, 20, 4,149, 21, 41, 69, 5, 39, 41, 86, 6,179,123,118,157, 92,141, 29, 16,156,
-183,161,203,117,169, 45, 41, 85, 8,181, 70, 27,109, 47,173,212,248,236, 71,106, 84, 99,132,175, 36, 36,133,242,100,225, 68, 4,
-141, 58,241, 37,169, 36,181, 81,162,206,163,163,196, 75,109,173,245,177, 34, 3, 69, 39,152,189,239,177, 10,146,225, 89, 79,232,
-208,128, 73,194,129, 72, 61,117,169, 79, 70,103, 39,152, 2,179,118,234, 61,230,215,211,210,196,129, 98, 64, 29,141,241, 79,103,
-220,101,153, 30,114, 70,144, 85, 43, 2, 13,228, 73, 14,130, 64, 58, 33,230, 2,133,252,192,233,140, 21,185, 0,130, 72,108,110,
-143, 14,191, 8,188, 39,209, 80,234, 30, 65,115,252, 6,171, 17,212, 71, 73, 7,149, 40, 68,198,155,113,192, 74, 65, 61,137, 39,
-175,124,235,131,126,216,205,247,152,111,141,190,225,194,146,243,176,233,118,141, 10,155,186,215,228, 17, 33,165,138,133,245,119,
- 54,244,107, 38, 20,208,210,212, 86,213, 50,201, 6, 83, 77, 44,254,130, 77,220,242,193, 10, 9, 34, 68, 98,167, 69,113,239,115,
- 98,162,209,150,227,169,100,164, 50,250, 30,142,153, 10, 67,104, 47,161,113,185,149,250,217,193,234, 7,124,117, 58,132,167,180,
- 11,114,157,191, 56,207,226,110,235, 91,220,193,123,191,119, 82,161,167, 35, 13,210,109, 57,205,218, 52,134, 80,174, 65,250, 54,
-233,246,252,102,210, 48, 48,150,250,247, 58,147, 81,229,101, 16,136,212, 49,107,111,110,151,247,223,215,107,145,238, 29,206, 45,
- 63,161,246, 88,153,247,139,149,156, 79,155,208, 8,233,184, 47, 46,150,174, 32,203, 38,147, 89, 80,241, 82,211,189,164,119, 95,
- 36, 18,213,200,157, 74, 75, 28,114, 11, 50,130, 59,157,236,172,221, 24,215,231, 13, 23, 37,147, 81,118, 25,168,236,189,253, 46,
-152,218, 93,144,151,101, 53,102,223,141,191,116, 91,190, 19,107, 28,209, 97, 71,172, 69,186,152, 65,253, 80,165, 4,167, 7, 26,
-218,107,158,228,161,191, 61,218,125, 49, 94,245, 40,172, 37,210,202,148, 67, 42, 11,229, 81,117,224, 57, 60,114, 15, 92, 2,160,
-149, 14,100,228,234, 49,124, 2,239,229, 79,110, 55,233,155, 77,234,234,233,116, 45,237,130,141,181,173,200,114, 66, 99, 70,106,
-181, 46,104,159, 98, 79,117,194,147,225, 52,221,203, 17,152,171,112, 17,134,171,110,142, 96, 9,204,138,108,186, 50,226,248, 65,
-230, 94, 18,210,234,138,218,116, 40, 56,144,201,253, 42,228, 2,144, 82,232,125, 39,155,155,185, 24,199,163, 70,113, 75, 61, 53,
- 66,211, 24,192,102, 80,250,173,177, 4,158,128,236,109,107, 27,244,244, 55,216,120,245,195,212, 92, 51,226,119, 20,241, 60, 83,
- 51,208,241, 68,223,164, 41, 96, 4,170, 44,179, 42,251,111, 53,134,197,189,176, 77, 41,141,108,170,146,160, 98, 5,181, 97, 28,
- 75,220,181, 26, 38,200,211,104,247, 69, 74,235,183,182,170,177,190,251, 65, 11,117,110,107, 14,159, 10,179,117, 91,182, 75,207,
-220, 78,183, 82,133, 14,168, 4, 79,171,216,186,153,183, 21, 41, 82,210, 98, 36, 41, 9,115, 46,170, 58, 78,196,185,236,244,224,
-218,187,107, 59,115,220,156, 71,239,126,228,237,173, 2,138,187,170,107, 84,230, 45, 75, 86, 5,193, 65,109,135,229, 52,252, 91,
-142,223,106, 82,213, 70,114, 67,192,198,106, 35, 40,154,243,242, 91,140,151, 91,112,244,112,233,245, 17, 14, 44,120,174, 52,203,
-140, 76,104,179, 45,183, 16,135, 25,122, 52,130,142,120,210,155,117, 36, 60,203,137, 64, 5,181,165, 73, 88, 7, 57,232, 53,131,
-111, 20,122,181,183,183, 23,101,181,105,248, 52,138, 5, 74, 76, 74,251,148,250,116, 97, 1, 16,222,167, 60,106, 47, 70,165, 53,
- 21, 77,181, 6,159, 41,244,182,244,150, 67,100, 56,236,116,184, 10, 10,220, 42, 89, 95, 56,135, 46,142, 10, 39,138, 88, 81,180,
-202, 38, 14, 74,164,134,226, 72,138, 50,168,146, 61,200, 73, 86, 72,223,161, 85,177,213, 91,112,255, 0,139,220, 97, 77, 6, 89,
-195,156, 53,196, 21, 60, 22,207,152, 77, 60,242,208,138, 52, 21, 75, 82,148,144,150,121, 38,162,154,174,158,178, 4,129,185,117,
- 52,245, 41,169, 36, 80, 81, 94, 4,118, 96,232,187,243,188, 52, 58, 53,183, 22,179,113, 84,169, 53,196, 81,160,251,245, 41,201,
- 62,244,245, 37, 30, 24, 17,105,181, 9, 10,121,208,245, 77,152, 9,140,153, 37,110, 58,225,146,151,148,235,139,112, 41,106,217,
-189,151,227, 46,253,131,118,219,180,250,252,122,125,201, 79,118,165, 17,114,150,164, 24,178,216,166,197,117, 15,212, 36, 41,109,
-252, 46,145, 13,149,146, 84,156, 16,146,163,211, 58,229, 18,107,239, 62,242,147, 37,199, 31, 91,206,242,186,241,117,192,165, 58,
-115,211, 39,155,149,210,121, 78, 15,117, 43,161,198,175,245,237,208,133,180,123, 77,185, 27,181, 83,195,175,211, 41, 12,109,245,
-155, 17,197,165, 15, 85, 55, 47,117, 95, 93,149,109, 82, 48,149,164,169,198,162, 73,174, 84, 86, 89,234,134,109,247, 20,190, 92,
-115, 20, 34,161,174,138,166, 35, 73, 52,177, 73, 35, 11, 42,177, 35,177,251, 38,224,129,110,227,176,216, 3,139, 63, 49,225,124,
-159, 58,137,168,171, 50,122, 67, 83,155,200,176,199,104,150, 37, 89,170,228, 17, 68, 21,129,214,136, 36,145, 64, 37,137, 84, 80,
- 88,147,124,113, 55,116,247, 70, 69,253,187,251,165,124,248,206, 6,183, 3,113, 47,219,205,230,124,103, 29,108, 53,115, 87, 43,
- 21, 40,234, 47,172,146,232, 75, 18, 90, 9, 39, 39, 13, 39, 9,232, 14,172, 14,214,153,120, 48,183, 78, 92,152, 57,157, 10, 37,
- 43,109,167, 26, 13,184,150,207, 80,131,206,176,172, 30,169, 9, 5, 24, 32,105,155,145, 77,159, 79,177, 55,214,248,122, 99,102,
- 14,214,238, 37, 54,195,167, 33,244, 45,181,207,144,221, 5,213,204, 44, 21, 16,151,138, 88,241,164,244, 32,167,198, 64, 82, 64,
- 41,200, 53, 27,141, 40,118,147, 76, 15, 45,169, 62, 12, 25,243, 2, 86, 20,234, 16,197, 62, 19, 65,165,164,117,229,247,167,138,
- 73, 61, 22,177,202, 7, 66, 69,171, 7, 12,211, 48,141, 68, 97,196, 42, 34,118,176,243,125, 68, 82, 27,237,230, 26,101, 64, 77,
-183, 59, 94,221,125, 38,200,188, 76,203,114,202, 54,165,142, 67, 20,116, 65, 22, 8,217,183, 68, 90,250,204,182, 21, 7,236,171,
- 60,153,116,228, 2, 70,148, 58,202,134,186, 15,209, 95,217,213,187,149,126, 36, 56, 44,216,253,206,187,174, 26,157,110,227,126,
-218,126,193,186,149,240,199, 84,155,163,109, 39,191,101, 84, 39,204,125,144, 23, 80,149, 50,149, 75,163, 76,121,231, 85,202,227,
-245, 23,148, 15, 58,213,173,192,169,181, 57,184,233, 69, 62, 75, 17,217,117,148, 54, 25,157, 8, 41, 77,184, 20, 57, 18, 85, 21,
-196, 40, 55,148, 36,167, 33,106,235,158,185, 26,226,103,176,146,232,171, 73,224,105,202, 90,107, 52,248, 49, 97,111,182,232,183,
- 25,185,145,221,148,239,233,169,118, 36,151, 91, 74,223,144,136,236, 44, 74, 46, 41, 40,108,169, 68,173,101, 73,230, 86,187, 41,
- 49,154,218,209,205, 42,173, 52, 52,180,165, 74, 68, 70, 98, 69,116,182, 9, 42, 83, 15,150, 84, 82,172,173, 43,228, 0,100, 3,
-231,140,166,170, 86,154, 21,107,179,160, 10, 88,238,110,160,139,147,114, 77,254, 59,238,122,227,195,207, 25,248,114,151,135,188,
-100,241, 27, 44,203,158, 10, 60,158,155, 59,204, 26,142,156, 69,166, 56,105,158,169,228,130, 24,163, 88,121, 65, 97,137,146, 53,
- 32,147,100, 5,141,201,182, 5, 94, 69,230, 10, 94,145, 46,158,251, 79, 45,104,148,212, 6, 23, 14, 74,219,229, 12, 45,182, 36,
- 58,225, 37,149, 97, 25,231, 83,121, 7,151,152,115,103, 88,171,145,168,116,244,134, 97,194,115,222,240,219,142,210,234,106,145,
- 26, 99, 65,211,209,246,222,146, 74,159,116, 16, 64, 41,113, 93,130, 80,224, 61, 53,146,220, 18, 42,169, 71,189, 65,175, 23,224,
- 43,196,110,100,138,180, 52, 73,141, 20,132,150,219,121,201, 49,146,211,140, 32,184, 66, 20, 84, 8, 65, 74, 73,198,117,138, 87,
- 28,148,234,162, 34,187, 74,117,192,134,195,141, 85,221,124,204,165, 74, 66, 64, 8,106, 33,105, 1,113,212,225, 81, 86, 31, 66,
- 49,205,221, 67, 11,214,189,142,171, 48,185,237,109,186,218,221,251, 94,219,220,117, 0,118,198,190, 89,205,228, 83,161,104,226,
-136,234,212,180,224,194,199, 64, 4, 7,140,136,249,140,128,157,144,137, 21, 72,107,233, 54, 57, 45, 21,111, 50,239,128,212,167,
-155,106, 99,237, 53, 50, 5, 82, 58,170,112,130, 22,133,248,114,226,201, 82, 20, 84,194, 84,162, 75, 79,133, 20,150,202,144,180,
-144, 70,158,219, 70,151, 29,231,155,118, 60,104,204, 22, 63,193,222,142,151, 20,169, 10,146,203,194, 58,208,195,190, 63,232,220,
- 83,255, 0, 26, 27, 64, 12,165, 9, 10,230, 9, 32,105,148,162, 91,141, 33,248, 83, 89,126, 99, 48,230,182, 20,180,198,150,244,
-129, 79,113, 60,188,170,101,153,170,115,222, 32,173, 37, 93,149,240, 99,149,124,169, 9, 89,109,184,249,226, 98, 31, 5,220, 21,
-239,191, 17, 15,200,136,155,150,213,178,166,210,246,246, 59, 73,141, 4, 86, 55, 54,239,228,181,236, 42, 83, 8, 90,185, 31,124,
-220, 21, 40,178,202, 18,149,144,213, 45,220,101, 41, 86,157,232,209,181,169, 10,100,111, 40, 23, 59,177, 54,181,129, 23, 4,146,
- 58, 1,212,220, 92, 98, 11,198,117,212,212,212,243, 58,213, 20, 77, 12,210, 54,146, 52,132, 30,109, 96, 29,244,170,155,187, 57,
- 42, 0, 96,197, 77,204, 4,253,172,219,203, 47,139, 95,105,175, 18,183,101,176,204,138,245, 61,141,200,141,179, 22, 18, 41, 9,
- 93, 86, 93,102,147,182,162, 46,222,210,152,166, 51, 24, 19, 62,108,219,142, 29, 80,176,134,211,151, 87, 57, 0, 2, 78, 76,168,
-189,147, 30,205, 59,119,129,141,189,137,185,219,145, 71,167,212,120,177,191,168, 72,110,225,150,239,131, 57,157,155,182, 42,104,
-109,241,183, 54,188,132,130,150,171,238,183,225,154,253, 69,162, 22,251,224,192,105, 98, 36,114, 29,230,127,176,159,128, 53, 76,
-144,190, 60,247,198,152,229, 94,166,106,149, 39, 54, 34, 21,106, 58, 84, 43, 87,116,135,159, 77,209,188,211,162, 60,140, 58,227,
- 18,159,150,197, 29,103, 9, 19, 37, 74,154,140,150,153, 34, 80,232,121,231, 86, 94,194,151,206, 84,165,229, 89, 83,132,156,149,
-100,255, 0, 59,169,238,117, 52,214,174,144,192, 15,246,106, 75, 42,129,210, 73, 19,102,115,254, 20, 96,116, 95,171,221,172, 52,
-163, 53, 11,192,252, 48,106,170,102,226,204,206, 29, 53, 57,147,188,180,145, 48,254,234, 41, 9,101,148,237, 96,238,166,209,126,
-196, 86, 97,188,158, 91,213,199, 90, 49,104, 79,128,238, 30,144,121, 9, 61,192,192,201, 10,245,242,251,181,174, 71,196,148,241,
-192, 74,219,247,143, 25,101,101, 88, 83,109,158,100, 32,143,231,159, 20,183,140,231,245,116,231,222,179, 3,236,178,194, 18,160,
-158, 67,240,159,214,231, 63, 8,200,245,230, 7,246,107, 16,183,233,171,125,220,148, 41, 94, 26,193, 82, 72, 56, 30, 24, 42, 25,
- 7,182, 93, 82,127,254,159,144,211, 69, 97,106,138,152,227, 83,176,254, 38,222,238,150,252, 15, 81,139, 78, 53, 68, 46, 72,176,
- 83,107,124, 58,253,247,191,243,198,113,108,211, 19,227,169,194,215, 63,134,203, 99, 5, 93, 27,101,146, 22,246, 14, 62, 37, 45,
-242, 7,255, 0, 71, 91, 55,104, 83,196, 88,200, 91,141, 21, 62,226,125,225,196,142,201,144,233, 1,182,178,161,208, 1,200, 7,
-158, 18,112, 52,218,218, 20, 34, 11, 72, 82, 48,167, 29, 66, 86,162, 9, 37,168,227,198,115, 36,249,169,100, 15,158,126,122,216,
- 74, 93, 56,165,176,160, 48, 80,160,230, 79, 96,234,193,228, 24,207, 80,150,250,245,243, 58,216,145,194,132,133, 59,122,123,247,
-233,252, 61, 58,123,176,171,188,113,197,169,205,134,223,126,214, 23,251,250,216,250, 19,223, 23,184, 45, 45, 45,164,250,130,146,
- 81,130,165, 58, 79,198,161,205,211,205, 71, 39, 29,135,217,171,242, 82,161,202,146, 14, 66, 64, 79, 92, 18,112, 18,132, 16, 7,
- 82, 71,151,110,167,174, 79, 64,225, 49,204, 6, 74,148, 8,194, 60,151,142,203, 80, 0,244,206, 50, 62, 95,110,173, 87,197, 93,
- 84, 74, 17, 76,101,242,212,170,171, 93, 62,154, 51,254, 77,126, 25, 50,166, 56,148,245, 8,102, 57, 81, 78, 59,184,180, 13, 2,
-252,184,139,157,194,142,158,167,111,226,127,215, 17,237, 18, 87, 87, 69, 75, 8, 13, 45, 67,233, 30,130,251,146,127,194,160, 22,
-111, 64, 9,233,134, 94,191, 60,214,174, 57,178,155, 80, 92, 88,138,250,178, 34,146, 73, 75,205,197, 89,247,133,181,215,245, 87,
- 40,172, 41, 93,185, 91, 30, 93,117,113,101,178,148, 36, 20,167, 60,185, 33, 32,115,124,125,242,123, 32, 17,235,228, 58,103, 58,
- 6,155, 5, 49,217, 1, 3, 41, 72, 72, 43, 80,202,251,124, 13,167, 57,231,230, 87,116,142,188,202,202,181,122,119,157,164,242,
-182,128, 48,114, 74,210, 29, 82,148,174,231,149, 4, 14,112,122, 96,156, 36, 12,232, 82,130, 20, 22,181,207, 83,241,235,252,127,
-134, 38,117,241,198,136,144, 66, 60,145, 40, 65,126,182, 80, 5,205,187,158,167,191,125,177,107,145,209, 56, 56, 42,192, 31, 7,
- 50,136, 81, 39,245,114, 6,113,145,215,212,143, 62,186,109,183, 18,195,178,183, 58,203,185,118,235,114, 45, 74, 13,245, 98, 93,
-244,185, 20,123,178,204,185,224,179, 84,161,215, 41,210,208, 90, 83, 50,227,188,143,209,202, 66, 15, 51, 50, 26, 45,202,140,234,
- 80,244,119, 91, 90, 65, 46, 20,133,132,149, 18,121, 66, 82,146,158,167,227, 3, 9, 11,231,233,205,133, 28,116,233,240,231,231,
-171, 4,167,130,146, 70,115,130, 7, 41,230, 1,190, 97,133,140,168,119,230, 25, 87, 47,167, 66,115,128,228,164, 50,233, 32, 21,
- 35,161, 23, 7,226, 15, 81,234, 45,238,196, 78,170, 0,218,129, 93, 72,247, 12, 8, 22, 32,141,193, 7, 98, 10,220, 16,110, 45,
-112,118,216,254,127, 62,215,111,101, 5,107,129, 75,173,157,208,218,223,173, 46,126, 22, 47,170,217,166,219, 21, 73,139,114,161,
- 95,218,219,154, 98, 29,148,206,220,223, 83, 66, 63,194, 24, 91, 77,191,245, 45, 81, 88, 76,246, 99,150, 29,196,198,148, 28,226,
- 11,202,192,207,250,185,206, 65,252, 7,207,183,227,175,213, 99,121,118,187,111,119,183,109,239,125,163,221, 75,114, 53,215,183,
- 27,137, 66,147,110, 93,212, 9, 73, 66,132,168, 18, 70, 89,155, 1,197, 28,211,235,208,230, 33,137,116,249, 72, 41, 92,105,113,
-154, 90, 84, 7, 50, 85,249,178,113,225,194, 13,235,193, 55, 17,215,238,197, 93,238,191, 80,167, 82,159, 69,111,111,238,242,201,
-110, 45,251,182,117,197,186,245,165,117,196,233,203,239, 75,138,218,226,212, 26, 24, 84,122,141, 58, 75, 74, 74, 64, 71, 51,238,
- 85, 86,192,138, 57,152,176,223,150,204,110, 72, 29, 81,137,234,203,216,159, 51, 46,237,118, 86, 99, 65,113,143, 12,174, 75, 50,
-215, 81, 41, 25,101, 83,105, 43,215,145, 46,237,160, 27,127,116,226,230, 50,126,201, 86, 67, 97,203,213,166, 30, 57, 89, 86, 50,
- 57, 63, 91, 35,175,110,154,250,115,156,144,122,249,254,255, 0,158,190,132, 99,161, 63, 14, 7, 46, 51,204,122,121,244,234,117,
-245, 72,229, 29, 50,113,234,114, 6,127,226, 52,254, 46,118,196, 36, 11, 11,116,192,142, 40,231,160, 24, 29,207,175,231,166,135,
- 82,137,238, 64,232,124,241,143,179, 68, 44, 19,211, 24,237,156, 99,160,245, 31,126, 52, 50,128,235,212,121,128, 78, 49,215,207,
-246,105, 68, 59, 91,211, 6,181,253,109,251,240, 59,128, 1,240,171,174,122,121,121,246,207,159,246,104,101,244,200,243, 35,246,
- 1,147,162, 21,140, 28,140,254,113,161,148,112, 8,235,215, 56,237,248,125,154, 85,112,176,189,136, 39, 3,168, 0, 15,145, 62,
- 99,204,143, 35,249,242,208,203,229,235,235,211,242,126,225,162, 87,140,117,249,224,122,159,158,135, 88,233,231,247,118,251,254,
-237, 44, 58,142,248,193,237,183, 67,243,247, 96, 69, 12, 31,183,175,217,165,175,171,198,113,140,126,255, 0,187,241,210,210,202,
- 77,133,197,207,221,131, 99,202,112, 72, 7,242,117, 92, 15, 35,128, 60,190, 67,250,245, 69, 3, 39,236, 25,209, 40,239,246, 15,
-207,219,164,143,175,174, 6, 42,164,124, 64, 14,131,166, 15,207,236,243,242,209, 35,215, 56,198, 62,220,124,191, 62,122,164,143,
- 51,208,255, 0, 72,235,253, 31,213,170,160,100,227, 56,233,145,243,252,254,237, 17,175,109,186,223, 3, 4,160,140,231, 62, 93,
-207, 79, 77, 22,130, 49,143, 63,233,251, 52, 26, 72, 30, 64,143,179,183,217,162, 1, 74,146, 72, 61, 65,252,115,142,159,159, 93,
- 35,140, 48,184,235,108, 20,140, 18, 1,239,158,135,203,239,209,169, 7,166, 14, 79,145,253,186, 1,158,132, 17,149, 14,196, 19,
-140,124,243,251,180,122, 72, 79, 76,145,211,160,233,147,164, 9, 36,220,225, 54, 29,199,206,216, 33, 4,224,142,153, 29, 85,219,
-183,166,164, 73,236,110,220, 31,173,246,111,125,182,170, 68,175, 13,251,106,189, 68,191,169,177,199,196,183, 33, 84,227, 24, 21,
- 2,134,250,229, 41,151, 17, 57, 35, 63,229, 6,117, 29,198,252,179,144,122, 1,230, 79,219,211, 93, 44,246, 85,110,228, 13,175,
-226,214,210,164,215,229, 24,246,198,234,192,168,237,157, 95,227,228,108, 75,174, 32, 59,111,188,224, 39, 4, 38,172,195,104, 4,
-246,247,157, 70,120,186,135,219,242, 26,232,130,234,146, 37,230, 46,215,221, 14,166,255, 0, 32, 97,247,226,198,240,131,136,227,
-225, 95, 18, 56, 87, 54,157,180, 83,123, 64,167,148,237, 97, 29, 72, 48,220,223,107, 43,186, 57,255, 0,166,248,146, 36, 30,101,
-188, 76,200, 92,160,148,190,196,228, 14, 82,218,114, 10, 92, 8,242, 87, 93,108,205,136,136, 94, 60,105,208,170, 83, 26,151, 9,
-191, 29, 82,222, 74,157, 92,231, 64, 7,195, 90, 79, 64,192,244,244, 26,103, 63,131,149,104,117, 26,148, 68,184,195,109, 83,228,
-173,134,209, 44, 2,226,202, 22, 82, 16,178, 79,234,114,242,159,179, 79,213,149, 33,113, 88, 77, 61,112, 27,121,229,248,106,149,
- 58, 39, 41,101,148, 19,213, 63, 32, 79, 66, 62,237,115, 51,211,150,121, 6,155,219,175, 91,109,181,133,253,226,219,123,241,235,
- 75,241, 11, 79, 76,188,137, 11, 48, 93,149, 89,118, 13,107,151, 89, 1,176, 11,212, 3, 98, 79, 75,219, 27, 67,183,181, 74,244,
-214,231, 56,229, 74,158,135, 38, 41, 14, 18,160,166,156, 74, 16,156, 36, 32,118, 65, 62,159,191, 89,190,241,113, 11,110,112,191,
-176,215,206,245, 95, 6, 20,202, 61,145, 74, 92,138,101, 45, 18,130,100, 92,247, 68,212,150, 40,116, 70,185,198, 84, 94,156,164,
-120,132, 3,202,211,110, 40,118,198,137,219,165, 83,139, 76,133, 80, 28, 90,114,210,212,240,109, 10,241, 74, 15, 76,167,253, 94,
-159,126,117,202, 47,164, 21, 92,174, 69,225,135,102, 32,209,169,178,160, 90,181,125,216,152,229,206,180, 71, 8,142,167,224, 81,
- 11,148,102, 36,173,177,132,143, 17,201, 42, 66, 85,208,148,156,117, 26,113,203,168, 3, 58,157, 54,103, 33,125,118, 36, 94,196,
-237,222,227,213,182,195, 70, 89, 79, 69,197, 92, 91,144,112,245,125, 61,168, 43,234, 1,157,252,177,147, 20, 49, 60,207, 26,149,
- 58,245, 75, 28, 77, 18,149, 55, 93, 87, 27,139,227,130,123,191,198,175, 16, 27,247,184, 53, 45,208,191,119, 70,231, 85, 90,163,
- 41,199,233,180,154, 61,106,117, 46,133,107,211, 84,247, 52, 26, 77, 22,153, 17,228, 34, 20,118, 27, 40, 72, 87, 47, 57, 41, 37,
-106, 42, 36,235,167, 28, 15,251,109,119,107, 98,106,116,123, 7,136,169,179,119,107,102, 31,113,136, 72,172, 74, 90,101,223,214,
- 83, 75, 33,180, 78,165,212, 93, 60,213,120,109,143,137,113,159, 82,138,146,217, 13,173, 11,198,163,142,186,235,108,188,164,169,
-213,165,121, 56, 0,143,231, 19,148, 16, 58,242,145,159, 46,186, 6,109,204,220, 84,151,229, 73, 75, 76,165, 69, 13,186,181,124,
- 13,149,252, 65,167, 20,122, 32, 43,175, 41, 61, 51,208, 28,156, 25, 60, 92, 63, 80, 37, 67, 1, 49, 19,208,129,189,141,182,255,
- 0, 21,246,184, 55, 7,184, 56,236,142, 32,151,195,140,255, 0,133,223,133,248,147,134,104, 42, 50, 10, 88,196,113,162,172,112,
-123, 24, 69,210,178, 83, 74,129,100,164,145, 7,247,111, 27, 39, 75, 54,164, 44,167,244, 98,220,125,244,218,109,207,181, 44, 93,
-211,218,219,134,218,187, 42, 87, 53, 36, 51, 69,220, 10, 51, 17,100, 76, 69,191, 35,149,215, 40, 82,159,113, 5,234, 52,228, 57,
-209,198, 86, 27,121,151, 16,161,243, 44, 38,219,240, 59,195,109,247,187, 50,119,219,118,236,200,251,153,118, 75,170, 65,173, 67,
-182,174,118,154,153,103,210,171, 16,188, 32,197, 90, 69, 61,192, 77,102, 97, 83, 13, 41, 94, 54, 91, 36,117, 74,129, 58,135, 95,
- 6,188,107,223,252, 45,110, 43, 52,233, 52,170,149,203, 96,222, 20,101,215, 83,103, 60,250,190,174,187,227,193, 5,199, 38, 91,
-143, 44,148,196,174,178,208,123,149, 72,234,165, 37, 41, 87, 50, 84, 70,166, 95,193, 71, 19,251, 57,196,190,221, 82,183, 35,102,
-111, 8,119, 37, 13,224,211, 21,170, 59,206,165,155,154,207,170,129,201, 34,143,114, 82,138,185,226,186,219,193, 72, 75,184,240,
-221, 9,202, 85,215, 26,134,231,185, 70,123, 75,158, 38,105, 42,145, 71,202, 88,163,146, 50, 90, 29, 18, 16,197, 88, 92,133,119,
-146, 38,219,245,140,108,190,102, 70, 11,198, 92, 75,194, 16,120, 95, 13,105,224,204,246,176, 46,111, 21, 85, 20,213, 74,239, 79,
- 89,200,142, 74,121, 30,138,165, 99, 8,209,242, 82,106, 70, 89, 32,229,195, 52, 53, 48, 77, 24, 84,168, 68, 26,105,237, 7,217,
- 19, 64,220,153,215, 20, 88,210,156,133, 88,145, 38,124, 79,119,101, 69,163, 18,166,128,243,109, 37, 40, 1, 44,161,169, 41,117,
-174,100,245, 74, 25, 74, 0, 3, 3, 90, 51, 69,177,226,173,138, 60,234,204,122, 85, 38,221,129, 41, 51,103,211,161,176, 94,110,
- 91,208,250,114, 84,204,148,115, 56,210,150,121,194, 65, 70, 22, 18, 73, 35, 82, 72,226, 42,210,160,110,117,160,197,162,168,115,
- 29,188,213, 74,168, 86, 45, 9, 77, 65,126, 76, 10,156,120,126, 17,171,208,229, 78,105, 60,176,167,150, 84,151,226,161,194, 60,
-101, 71,113,182,200, 89, 26,226, 82, 54,226, 82, 43,245, 56, 55, 19,146,165, 82,168,173,189, 53,234,122,121,219,167,174, 92, 53,
- 21,161,215,162,173,172, 60,148, 33, 24, 82, 73, 88,113, 92,185,201,201, 27,117,108,244,241,194, 26, 80, 4,200,175,177, 5,212,
-177, 33,144,129,246, 88,144, 74,234,211,113,184,242,225,135,128,248,146,174,159, 42,143, 44,172,115, 72,249,120, 15, 20,146, 35,
- 63, 50,152, 72,218, 26, 20, 93,164,179,172,144,173,201, 8,234, 67,105,179, 12, 29,182,244,136,190,236,139,162, 43,211, 44,218,
- 8,144,234,232,245, 56, 11, 17,235, 21,134,156,116,152, 20,134, 80,176,164, 56,209, 72, 43,143,200,135, 22,133,101, 74,113, 57,
-214,238,237,187,251,130,203, 76, 67,151, 72,167, 84, 98,133,170, 91,213, 42,148,233, 12, 76,138,192, 82,148,219,210, 68,113,202,
-170,138,219,193, 89, 73, 67,106, 72, 42, 40,200,248,181,222,133, 7,252, 38, 61, 94,168,236, 48,218, 34,198,106,222,121,215, 12,
- 42, 5,177, 73, 72,109,202,131, 44, 54,165, 4,166,172,236,131,241, 5,128, 23,219,155,149, 1, 39,109, 54,169, 47,214,159,141,
- 78, 48, 42, 53, 11, 73,106,126, 99,142,173,244,196,145,119,169,196,182,166,100,201, 84,167, 3,137,162,161,194, 72,100, 6,202,
-154, 9, 82,143,134, 60, 50,195, 58,115, 25,121,138, 2, 2, 5,250,155,236, 2,134,216,220, 95,168,238, 13,133,186, 73,115,220,
-216,213, 80, 74,207, 75, 13, 76, 72,128,234,144,106, 49, 40, 80,161, 99,149, 74, 52,149, 4,141,198,181, 87,112,116,142, 90,187,
-151,130,212,169,221, 85,192, 81, 71,162, 69,143, 17,233,177, 66,234,213,121,210, 29,109,249,104, 83,136, 47,211, 99,197,142,149,
- 42, 58, 27, 13,132,100,161, 42, 4, 36, 14,234,214,192, 82,168,207, 6,100, 72,146,243,115, 36,115, 37,223,120, 83, 66, 40,134,
-150,151,200,182,225, 67,103,224,109,191, 19,152,143,214, 95, 97,205,166,202,221,175,203,122,100, 42,117, 14, 27, 48, 96, 45,217,
-109,187, 93,144,132, 73,164,149, 65, 11,113,200,212, 8,170, 80, 21,149,224, 37, 41,120,242, 70, 10, 10, 9, 83,160, 99, 78, 43,
-116,232,146, 18,162,237, 86,169, 54, 43, 79, 52,133, 63, 42,172,182,163, 42, 83,190, 32,120,165,166, 16,210, 27, 75, 65, 69,178,
- 18,158, 64,162, 82, 50, 81,157,111, 81, 68, 21,129, 8, 22,227,101,189,237,123,109,114, 1,185,236,109,232, 47,107,226,137,226,
-141, 77, 41, 30,203, 30, 87, 20,158, 96,168, 26,121,138, 19,111,172,118,118,179, 18,159,221,137, 20, 88,110,150, 85,193, 53, 73,
-145,226,170, 46,101,196, 76,164,184, 28,240, 12,134,153, 95, 43, 10, 74,155, 46,181,207,144,121,194, 7, 62, 9, 82,143, 47,108,
-234, 4, 62,210, 58, 72,219,158, 58,184,155,183, 37, 40,183, 29,237,225,189,234, 44, 58, 57,127,200,220,181, 35,117,198, 37, 8,
- 56,229,118,159, 89, 74,128,242, 87, 67,131,157, 78,142,170,138, 83,209,158, 69, 30, 52, 6,160, 54,228,136,114, 46, 38, 99, 50,
-181,206,146,133,248, 78, 67,166, 72,113, 37, 82, 16,149,149, 37,199,134, 91, 66,242, 26, 11, 88, 90,147, 16,207,164, 3,178,234,
-161,113, 5,183,251,173, 73,167,134,104, 59,189, 97,210,168, 85, 9, 52,211,200,236, 43,223,109,162, 38,218,168,185, 41,231, 21,
-137, 21, 23,168, 70,202,152,128, 87,226, 56, 92, 95,235,114,171, 51, 28,157, 98,150,190, 8,100,110, 92, 83,221, 79,199, 69,239,
-185,177,177, 27, 15,128,189,142, 45, 63,163,127, 17,212,112,127, 20,113, 29, 53, 38,185,106,243,156,177,196, 81, 58,133,230,212,
- 82, 85, 83, 84, 44,108,169,172,160, 52,166,171, 97,169,163, 3, 91,114,200, 24,226, 4,154,196,244,219,106,220, 88, 18, 36,123,
-230,213,238,117, 58,151,184,116,120,110,184,212,168,118,117, 66, 76, 20,196,186,144,180, 43,157,136,145,234, 12,197, 91,146, 81,
-132, 70,114, 83, 75, 43, 75,110,100, 74,151,217,207,198,213, 39,137, 54,238, 61,133,221, 10,180, 42,127, 21,123, 72,167,219,169,
-193,146,168,241, 90,223,139, 2, 44,118,170, 52, 45,207,178, 66, 74, 81, 80,184, 88,183,166,211,141,199, 76,103,157,106, 33, 53,
-232,129,216,210,102,162, 20, 59,161,215,121,234, 81, 43, 84, 91,170,177,103,222,204, 45,171, 98,241,138,155,114,161, 89, 69, 74,
-148,180, 59, 78,143, 92,122,151, 17,151, 83,112, 82,132, 69,184,196,200,129,133, 59, 38, 25,125,133,176,243,141,180,149,244, 87,
-132,222, 13,248,140,184, 47,203, 39,113,120,121,171,199,191,238, 93,185, 98, 53,251,111, 91,251, 99, 85,166,215,175, 87, 41,240,
- 42,241,155,165,214,182,154, 47,191, 41, 91,145,104,211,234, 42, 83, 92,148,103, 83, 85,163,199,117, 84,250,197, 33,136,225, 97,
-185,206,113,194,121,109,101, 27, 45,125, 80,163,171, 2, 95, 99, 38, 41,121,134,115,162, 78, 66,144,133, 38,141,138,205,202, 84,
-102,150,120,231,139,150,134, 90,104,163,158, 75,196,249,142,105,226,180,212, 89,118, 93,165,163,138,170,138, 74,220,202, 74,236,
-184,209, 80,208,200,239, 65, 46, 97, 87, 27,213, 71, 85, 72,252,182,203, 23, 53,133,225,134, 42, 12,195, 41,170,210,211, 69,154,
-203, 85,150,205,166,227,165, 61, 6, 5, 54, 97, 74,156, 18,227, 69,110, 35,140,180,165,169,249, 82,156, 67, 13, 71,138,218, 85,
-241,185,226,184,218, 91, 31, 9, 82,214, 50,122,244, 11,114,111, 27,114,131,182,251,199, 34,255, 0,136,154, 45,247,176,245, 58,
- 22,218,111, 22,216,181, 81,143, 85,184, 45,221,195,188, 89,183,161, 89, 20, 42,100,159,117, 96, 92,148,187,141,187,194,223,118,
-133, 84,102, 59,113,170, 72,126, 72,105, 41,114, 12,164, 55, 75, 99,119,122,224,174, 51,245, 7, 19,219, 89,112,112,215,186,220,
- 60,220,144,175, 61,215, 77,193,108, 87,174,237,159,151,101,211,226, 77,189, 33,110,173,151, 93,162, 70,144,154,221,142, 81, 76,
-164, 63, 80,165, 60,241,153, 77, 68,215, 72,114,100, 8,147, 31,135,146,113, 71,183, 59,103, 34, 92, 13,253,110,235,173,110,165,
-205,184,176,173,202,147,143,193,221, 91, 86, 92, 45,209,191,156,186,104, 59,129,181, 86,205,199,245, 20,121, 48,102,109,181,175,
-123,214, 32, 86,104, 82, 40,181, 28,208,209, 13, 52, 53,191, 38,135, 86,101,109,214, 19, 84,229,188, 53, 74,207,159,161,161,167,
-175,150, 56, 86,121,140,113,211, 67,100, 55, 51,107,101,157, 73,146, 72,180,145, 11, 42,168,147,153,162,197,146,162,201, 56,112,
-210,113,141, 46, 79,196, 20,245, 18, 53, 58,173, 84, 67, 46, 95,106,106,245, 73, 41,170, 2,208,207, 24, 52,245, 80, 86, 80, 37,
- 72,165,150,158,114, 90,122,170, 9,135,212,151, 87,227, 20,104, 45, 87, 24, 85, 86,218,241, 42,148, 71,110, 43,170,211, 76,212,
- 52,150,132,106,245,151,114, 85,109, 11,162,129, 84,104,168,251,149,106,157,112,209, 42,113,229, 48,188, 58,218,227,142,108, 33,
- 77,169, 90, 21,237, 94,168,222, 22,133,223,195,254,202, 10, 93, 82, 93,177,180, 43,183,183,154,236,164, 81, 20,153,146, 98,238,
-125,229, 73,129, 91,163,213,175,116, 52,191, 22, 53, 66, 29,188,253,173, 71,167, 81, 57, 76,150,133,213, 81,149, 33, 81,220,148,
-211, 74,150,182,225,218, 92, 50,112,247,195,165,153, 77,165, 90,219,117, 99, 91,150, 60, 43,174,244,174,223, 49,109, 27,134,228,
-218,202,205,255, 0,107,212,149, 18,116,251,243,114,104,207,201,168, 51,121, 72,220, 7,211, 38,169, 13,184,115,170,215,251,244,
-217,244, 88,238, 70,155, 37,169, 49,121, 20,212, 93,185,118,222,225, 46,203,225,223, 98,183, 23,120,253,160,252,116, 84, 55,118,
-117,213,191, 91,223, 72,247, 69,219,219,105,184, 23,221, 98, 20,254, 44,230,237,204, 42,236,138,109, 42, 84,217,212,251,153,118,
- 17,144, 93, 52,138,101,143, 85,175,174, 58,252, 58,125, 67, 79,254, 28, 54, 93,153,214,174,113, 79, 20,121,133, 44, 97,185,112,
- 9,150,105,100, 73, 41, 86, 94, 92, 38, 35, 21,167, 43, 81, 29, 57,169,144, 44, 20,142, 37,170,101,154, 49, 70,106,111,238, 14,
-168,151,137,248,115,244,207, 19,210,215,101,116,144,212,140,186,131, 48,134,146, 36,164,139, 59,164,121,107,219, 53,204, 26,181,
-229,163,139, 38,160,162,201,235, 36,205,169, 85,235,234,125,154,190, 36,140, 9,162,154, 90, 72,169,213, 45,253,208,118,151, 97,
- 90, 91,181, 38, 13,167,103, 94,215,213,102,231,174, 55, 49,215, 31,172,238, 77,247, 17,216,119, 14,228, 45, 49,233,233, 9, 77,
- 46, 21, 66, 69,159, 70, 41,134,135, 99,193,140,211, 84,180,200,231,102, 82,155, 18,155, 83,131,120, 85,111,219,154, 3, 50,105,
-148,169, 19,160,193,160,214,170,113,194,103,214, 98,211,229,168,183, 62,159, 72, 66,178, 89,147, 84, 14,152,173,252, 45,248, 13,
- 54,178, 84,149,147,169,133,123, 64,189,146, 86,255, 0, 13,187,109,182,187,145, 64,219,248,219,185, 14,215,178,234,116, 13,218,
-222, 42,148,217, 2, 53, 42,184,204, 22,226,237,117,131, 14,206,132,240,114,194,225,222,157, 83, 53,138,149,106,161, 29, 14, 73,
-171, 86, 42,171,153, 89,124,169,230,121, 34,177,182, 91, 65,116,111, 46,243,196,218,253,171,247,251,206,183,116,213,106,146,228,
-110, 45, 77,182, 89,136,139,118, 28,148,197,186,119, 9, 54,243, 47, 6,109,107, 54,152,143, 26, 45, 38, 35,139,255, 0, 5,141,
- 9, 78,190, 85, 41,232,140,170,115, 83, 86,212,245, 25,140, 21,212, 63,162,231,161,141, 36,125, 43,202,166, 45, 35,172,211, 73,
- 10, 63,152,169, 40,176, 6,149,220,186,195,120,162,104,238, 34,191,184, 15, 62,224,252,219,132,178,206, 51,225,190, 45, 60, 75,
-193,102,174,190, 55,168,174,180,249,164,116,185,109, 52,249, 86, 93, 75,153, 84,195, 32,246,103,141,107, 43,115,158, 82,101,249,
- 74,150,205,227,150,183, 49,167,173,118,253, 35, 52,143, 98,189, 5, 54,159,179,243,109, 77,101, 98, 4,221,196,190,119, 71,112,
- 90,102,181, 21, 8,139, 91,164,212,174, 88,182,196, 10,140, 85, 56, 18,219,240,220,254, 9,200, 41,115, 33, 74,231, 82,146,146,
-218,155, 42,234,187,209, 27,163,184,237, 90, 72,168, 42,130,200,240,165, 64,143, 38, 82,158,160,173, 74, 13, 9, 84,182,157,124,
- 46, 93, 57, 73, 90, 10,152, 73, 43,100,172, 41,160,180,115, 32, 49, 27, 9, 77,177,109, 93,139,217,139, 99,111,227, 72,143,183,
-214,214,217,218,118,173,163, 6,173,153, 19, 88,131,108,210, 99,208,101, 65,174,135, 83,148,212,157,159, 79,150,244,181, 20,148,
-123,204,229, 43,177, 57,114,208,124, 17, 57,202, 83, 14,170, 36, 5,137, 85, 10, 36,185, 75, 84, 55, 96,202, 71, 42,132,120,171,
-113,106,241,219,116,146,219,173, 15, 11,186, 85,148,168,114,194,132,136,200,173, 31,158, 54, 80, 65, 3,168, 34,224,129,232, 65,
-213,184,220,116, 23,199, 0,113,150,101, 55, 20,241,127, 20,113, 19,235,165, 25,245,125, 85, 67,198,196,108,179, 84,182,152,185,
-133,129, 73,145, 89, 34, 14,220,203, 72, 8,103,229,150, 86,247, 81,110, 91, 49,167, 78,161,215, 37,212,219,113,213,165,218, 85,
- 69,240,244, 26,132, 54,129, 11, 49,228,181, 29, 46, 66,168,140,245, 75,156,193,124,161,183, 27, 28,201, 86,190, 81,155,125,104,
-135, 34, 12,114,220,121, 41, 40, 98,157, 53,228,170, 35,114, 20,230, 86,221, 26, 80,200,167, 40,169,103,158, 59,169, 8,202,112,
-128,131,144, 60,211,163, 71,152,183,230, 83,229,191, 4,133,169,153, 76,134,179, 60,198, 89,109,232, 14,212,225, 62, 86,221, 65,
- 13,185,148,165,196,101, 78, 32,243, 37,209,130, 19,153,208,146,134, 81, 41, 19, 11, 49,214, 86, 24,121,165,178,165, 69,168, 40,
- 31,135, 1, 64,169, 46,149, 41, 36, 40,254,144, 5, 36,146,188,100, 38,134, 48, 25,152,141,172, 46, 77,136,220, 27,250,141,253,
-222,226,122,130,193, 89, 80, 41,169,164,139, 72,146, 84, 43,112,200, 85,236, 84, 40, 87, 84, 1, 94,219, 21,144, 93,244,155, 22,
- 69,101,209,125,183,168,209, 97,190,250,204, 70,152, 5, 64,200,140,166,150,203,176, 87,241,151, 94,136,160,178,134,218, 89,230,
- 82,128,202,114,162,164,100, 2, 53, 28,111,107, 60, 59,251,143, 63,104, 23, 11,126,205,170, 3, 53,106, 46,201,109,173, 53, 27,
-255, 0,189,117,166,249,216,137, 90,147, 49, 18,105,172,202, 66,146,174, 71, 98, 81, 45,102,106, 49, 24, 42,193, 53,155,189,229,
-160, 5,197, 73,215,123, 47,141,211, 98,142,167,173,155, 89,193, 42,229, 25,106, 76,148,165, 47, 71,180, 91,112, 5,120,181, 23,
- 14, 83, 34,182, 58,174, 44, 18,162,180, 43,149,249, 92,173,165, 40,113,184,160,218,118,243, 51,158,189,219,161, 64, 93,228,170,
- 58,109,137, 55, 99,177,210,229,194,253,186,103, 61, 86, 93, 46, 69, 85,196,248,174,194, 85, 90, 68,169, 42, 65, 86, 20,243,235,
- 89,234,113,167, 76,190, 73, 36,154, 36, 66, 2,174,204,196,216,168, 96, 86,235, 97,187,142,171,113,179, 0, 79, 96, 43, 78, 39,
-200,167,207,168, 64,172,169, 48,195, 60,176,243, 35, 59,153,169,213,129,145, 9,184, 40,178,128, 35,189,201,120,217,238, 72, 33,
-152, 74, 45,191,110,218, 20, 10, 5,159,104, 82,163, 80,109, 43, 50,145, 78,182,173,138, 20, 36, 37,152,116,202, 37, 38, 58, 33,
- 65,136,219,104, 24, 24, 97,176,165, 43,186,214,165, 45, 89, 82,137,214, 66,192, 44, 56, 50, 64, 66,255, 0, 84,246, 74, 22,174,
-188,167,230, 79,109,121, 92,114, 87,226,132,243, 5, 16,162,145,156, 45, 62, 69, 56,238,161,231,246,106,239, 2, 58, 29,109,109,
-140, 45, 4,158,231,170, 65, 29, 58, 31, 49,251,181, 41, 93,150,200, 52, 42,216, 5,236,161, 64, 0, 1,233,167,107, 95,107, 15,
-118, 6,132,133, 20,133,242, 45,129, 0, 88, 1,181,128, 29, 5,187, 14,150,219,160,198, 15, 92,140,185,115,138, 64, 42, 71,192,
- 48, 51,148,245, 42, 81, 7,237,199,237,198,179, 75, 74,130,162,174,110, 64,124, 66, 48,124,213,215,155,149, 64,142,249, 35,240,
-215,148, 83, 60, 73,124,161, 36,156,132,103,190,121, 71, 64,125,124,254,243,173,128,177,237,177,134,150,166,134, 7, 42,186,224,
-143, 44, 12,121, 14,154, 67,202,160,201,111, 49,218,255, 0, 63,127,239,196,120,213, 0, 90,237,117,185, 55,251,239,238,249,252,
- 47,182,197,185,224,181,226,148, 36, 57,202,148, 5,148,228,167,152, 5, 58, 79, 79, 76, 14,157,180,226, 8,126,236,203,104,229,
- 60,234, 39, 41, 0,168,144,160, 20,178, 64, 31,173,203,129,242,206,178,138, 93, 27,145,148, 5, 35,225, 35, 39, 61,212, 7,196,
- 78, 60,251, 1,143, 61,123,145, 19,153, 69, 69, 4, 41,106, 8, 66, 83,212,227, 32, 37, 32,103,190, 59,159, 85,124,134,144,177,
-221,137,249,239,127,225,134,106,140,228, 77, 49,141, 79,213,198,127,211,243, 54,237,139, 84,118, 89,109, 14, 61, 41,212, 70,139,
- 13,135, 37,204,148,176, 18,212,104,172, 36,184,227,206, 40,246,108, 37, 56,249,146, 7,158,181,250,179, 86,126,239,172,200,171,
-165,165, 49, 78,105, 40,133, 70,101,239,129, 48, 41,109,171,225, 88, 0,126,146, 83,234,203,139, 61, 57, 66,130,124,177,167, 30,
-243,170, 10,151, 53,173, 13,126, 37, 62, 51,173,185, 94,117, 25,228,155, 49,165, 7, 24,164,151, 19,254, 82, 35, 74, 8, 47, 36,
-116, 83,129, 32,146, 1, 26,196,209, 13,152,192,120,189, 72, 36,248,109,160, 56, 2,128, 5, 63,163, 79, 92,103, 3, 39,160,236,
- 58,233, 61, 70,161,194,166,241, 70,119, 63,180,195,227,217,127, 22,248, 41,196,175,135,160, 90, 56,228,204, 39, 66,107,106,150,
-209, 41, 6,241,194,108, 75, 91, 99,174, 91, 3,191,217,140, 1,191, 54, 69,192, 76, 50, 27,111, 13, 54, 73, 64, 9, 75,139, 82,
-155, 0, 43,169, 44,128, 9, 62, 93, 64,193, 61,206,129,152, 95, 41, 82,138,208, 22, 65, 72, 12,164, 32,165, 0, 36,148,163,152,
-144,217,234,147,145,223, 36,228, 96, 13, 93,159, 83,174,103,149, 32, 40,182,126, 55, 51,206,132,145,201,240,161, 7, 35, 62, 99,
- 32,129,158,249,214, 55, 45,212, 37, 96, 41, 41,120,167,152, 0,148, 0,129,149,167, 39,148,225, 32,224,247, 61, 71,166,116,224,
-158, 91,109,185, 27,219,231,253,127,117,240,237, 35,179,146, 77,153,143,253,199,183,115,176,223,225,139, 75,238,163,147,144, 21,
- 40, 96,142,116,142,164,165, 71,170,222, 82,187, 31,136, 4,140,243, 1,229,215, 88,252,183, 65, 72, 11, 82, 74,126, 16, 8, 28,
-184, 82, 72, 9, 66, 86,188, 18, 18,124,176, 62,100,224,157, 92, 39, 56,224, 82,146, 23,204,162,174, 95, 9, 9, 79, 55, 83,240,
- 40,169, 64,252, 33, 36,252, 92,160,245,192,214, 45, 49,208,142,112, 21,241,171,170, 65, 78, 85,128, 50, 82, 74,129,229, 60,160,
-143,187,169,234, 53,176,135,175,112, 15,243, 31,187,175,201,195, 45, 82, 13,247,235,252, 62,255, 0,187,182,253,175,139, 84,247,
- 82,160,163,130, 9, 39, 36,167,159,175,196, 10,138, 66,176, 19,215,191,145, 57, 25,215, 6, 61,188, 92, 35, 69,226, 19,132,201,
- 91,199,110, 82,195,187,161,195, 10,102, 93,241, 28,140,192,126,125,115,105,170, 47, 48,214,226,219,142,184,128, 86,242, 33, 44,
-195,173,196, 64,207, 34,224, 76,242,116,235,186,178,222, 24, 37, 41, 81,237,144, 82,160, 20, 48, 84, 0, 3,162,199, 82, 58,245,
- 31,127, 70,250,191, 79,164,215, 96, 84, 40, 85,216,173, 79,160,215, 96, 84, 40, 53,232, 14,182,151, 35,203,161,214, 98, 61, 73,
-173, 66,121,165,116,117,135,105,115,166, 54, 71,126, 85,224, 28,246,216, 14,203,105, 35, 63, 89, 25, 12,191, 17, 98, 47,238, 61,
- 15,184,145,176, 59,197,243, 92,186, 44,214,138,175, 46,156,218, 42,180, 41,114, 7,145,137, 5, 36,183,172,110, 22, 65,210,229,
-109,238,199,229,128, 82, 2,137,239,143, 49,212, 31,152,199,126,154,248,172,145,219,166, 51,147,251,191, 13, 61,188, 74,237, 67,
-251, 7,196, 22,245,108,212,198, 21, 21, 91,103,185, 87,117,161, 21,133,168,173, 72,164, 83, 42,242, 5, 1, 65, 71,170,194,232,
- 46, 83, 92, 10,235,144,230,114,115,146,198,169,106, 88, 4, 43,155,166, 71, 76,119,245, 30,186,153,211,202,179,197, 12,202,124,
-178,168, 97,235, 98, 1,254,120,230,119,142, 72,157,226,149,116, 75, 17, 42,227,209,212,233,101,251,152, 17,138, 46, 16, 70, 51,
-235,156, 28, 99,251,116, 42,177,142,195,148,103, 30,125,187,147,243,213,117,168, 30,224, 12,142,248,206, 79,217,161, 87,208, 31,
- 60,156,126,255, 0,221,173,192, 44, 0,244,192, 29,190, 56, 29, 89,193,233,255, 0, 14,253, 52, 34,142,113,223,207,184, 3,240,
-209,107,237,223, 29, 71,231,243,233,161,156, 32, 2, 51,147,231,142,191, 62,154, 85, 7,124, 42, 44,119,192,171, 35,203, 63,126,
-113,231,228,117, 69,125,179,147,255, 0, 31, 93, 87, 95, 55,158, 49,229,249,245,208,235,199,207, 62, 94,159,126,149, 2,228, 99,
- 29, 0, 3,231,255, 0, 24, 21,103,175,216, 49,159, 93, 45, 37,254,183,221,211, 75, 74,139,128, 0, 31,142, 13,143,168,198, 79,
-124,227,238,199, 79,219,162,145,140,118,235,230,113,251,254,205, 8,223, 83,147,145,208,244,251,241,215, 69, 35,177,235,231,219,
-247,232,141,107, 47,108, 12, 18,142,199,167,223,235,249,253,250,169,158,221,250,124,254,126, 94,154,164,140,245,233,211,215,247,
-124,245,237, 36, 40,144, 15, 99,131,223,161,210, 78, 54,248, 96, 99,223,140,142,249, 24, 0,103, 25,202, 78,139,108,149,129,212,
- 0,124,241,215,168,233,211,239,253,154, 16,180, 1, 56, 0, 36,228,159, 79, 44,147,243,254,189, 86,109, 65, 36, 14,184,198, 2,
-143,203,212,253,218, 64,155,117,192,193,237, 39,151, 3,175, 66,123,119, 63, 63,144,209, 8, 95, 51,137, 73, 78, 57,115,241, 30,
-221, 60,178,126,122, 8, 60,140,148,130, 85,216,224,117, 87,159,124,253,167,240,209, 63, 11,137,248,186, 28,252, 35,168,207,219,
-248,233, 22,234,113,131,235,243,233,139,187, 64, 43,162,136, 63, 49,147,235,233,247,106,247, 70,169,212,104, 85, 90,117,110,145,
- 41,200, 53, 90, 68,248,117, 58, 92,198,148, 80,236, 90,141, 62, 75, 82,225, 74,109, 67,170, 84,137, 44,180,175,184,141, 88,152,
- 10,229, 79, 96, 48, 57,177,219, 35,167, 79,219,162,211,156, 40,118, 30, 71,184,249,245,242,233,162,144, 24, 21, 97,112,118, 32,
-239,132, 15,196,169, 30,155, 16, 71,112, 71, 67,137,193,240,233,185, 20, 62, 44,120,124,219, 61,240,167, 76, 71,191, 84,105,140,
- 81, 55, 14,155, 5, 64, 73,165,223,148, 54,155,135, 89,139, 53, 8, 57,103,197,121,191, 25, 25,253,100, 72, 65, 4,131,173,161,
-180,210,245, 40,183, 10, 44, 52,248, 14,171,153,247, 36, 40,150,208,211,100, 16,181,171,201, 93, 7, 79, 83,168,161,123, 40,248,
-226,137,194,214,237,191, 97,110, 76,199, 6,196,111, 20,202,117, 42,239,113,106, 82,155,179,174, 82, 83, 18,135,123,178,146,127,
- 69, 25, 42,113, 12, 78,199,254, 43,149,211,158, 67,169,140, 46,220,104,182,207,128,184,210,104, 79,178,197, 70,159, 80,128,226,
- 36, 70,171, 65,146,132,189, 18, 92,121, 77,168,165,248,174, 52,182,212, 10, 73, 7,155, 84, 39, 16,240,233,203,115, 25, 99, 88,
-201,130, 67,170, 35,216,169, 61, 47,220,173,244,155,247,243, 17,102, 24,239,143, 11, 60, 80,110, 39,225,218, 88,107,103, 15,152,
-229,170,144,213, 33, 98, 60,234, 0, 89,236, 55, 34,117, 93, 98,219,115, 3,198, 8,209,135, 82,196,175,212,218,113,133,198, 84,
-117, 38, 71, 32, 67, 78,101, 4,182,142,157, 7,255, 0, 22,125,124,255, 0, 13,121,226,147, 97,169,220,100,236, 45,251,195,253,
-214, 96, 83, 89,184, 96, 55, 58,221,184,156, 71,138, 45,139,210,151,207, 34,220,169,161, 93,196,113, 36,248, 82,113,221,137, 11,
-244,198,172,116, 62,102,100,181, 29,160, 61,231,149, 60,142, 99,224,101,164,246, 3, 29,128, 25,233,173,128,164, 74, 18, 99,198,
- 73,116,183, 25,181,114, 60,178, 57, 76,151, 16, 50,162,162, 14,124, 60,129,246,235, 82,158, 2,165,118,210,203, 98, 45,216,245,
-190,219, 94,253, 7,223,139, 66,108,214,122, 57,232,179, 76,177, 18,150,182,141,214,104,102,243, 49, 73, 35, 33,209,244,220,171,
-217,133,180,176,210,230,225,188,151,199,230,211,196, 86,208,238, 55, 15,155,153,121,237, 22,231, 81,100,219,215,221,143, 82,149,
- 79,168, 71,125,106,110, 52,230, 88, 90,132,122,157, 46,106,128, 76,202,124,136,220,143, 71,121, 63, 11,141,186,146, 8, 36,141,
-107, 90,238,137,210, 99,242, 84,194, 39,208,228,243, 69,156,165,101, 50, 16,209, 35,156,184, 17,212, 56,158,138, 66,198, 72,229,
- 26,253, 19,125,160,126,206, 29,169,246,133, 88,112,226,214,219,129,100,111, 5,191, 18, 68, 91, 19,116,219,132, 28,148,220, 38,
-208,181, 53, 65,186, 99,180, 66,170,182,233,119, 30, 25, 39,198,138, 86,165, 50,121, 74,144, 97, 29,196,223,179,219,138,238, 14,
-171, 85, 42, 30,238,109, 69,202,253,158,137,146, 26,165, 95,150,229, 61,202,229,149, 91,134,219,133, 41,155, 18,173, 13,165, 6,
- 91, 82, 48,172, 57,202,180,231, 5, 26,179,178, 42,250, 57,225, 72,106,149, 86,169, 74,233, 44,116,220, 29,175, 27,118,123,216,
-133,216,130, 59,142,146,250,158, 42,173,226,215, 74,204,190,189,178,218,167,133,214,182,141,111, 32, 18,142,242, 68,219, 84,208,
-202,162, 69,119,250,199, 68, 58, 38, 17,181,158, 86, 98,205, 98,245,184,155,179,246,190,133,117, 81, 43,212, 69,205, 93,107,111,
-171,201,247,180,220, 22,125, 75,170,221,143, 77,172, 67, 70, 41, 51,212, 66,147,225, 62,180,195,146,121,152,117, 41, 82,145,153,
- 39,123, 14, 56,116,186,118,163,136, 57,119,139, 91,231,181, 82,105,117, 56,211, 85,187, 59, 81, 50,174,154, 46,225, 86, 41,142,
-178,236, 71, 96, 81, 44, 39,154, 15, 79,169,138,138,154,146,169,140,169,198,154,240,202,146,121, 8,214,156,123, 19,246,162,147,
-184,219,245,181,214,173, 74,157,114, 91,212, 68, 94,177, 46, 9, 87,209,164, 82, 35,166,152,213, 40, 26,147,148,152, 53,249, 12,
-182,135,161, 77, 92,118,163,188,212,150,221, 87, 43,171, 72, 10, 95, 41,212,194,248,217,224, 59, 96,239,203,211,110,184,157,163,
-220,219,119,195,142,224,236,189, 90, 53,199,112,238,141,180,213, 54,131, 86,184,173, 90, 80,241,158,162,204,105,137, 44, 68,247,
-146,216,120, 38, 83,136, 82,185, 95, 91,106, 14, 36,132,105, 42,177, 85, 95, 69,196, 84,180,235, 13, 45, 13, 59, 8,229, 63, 84,
-100,153,228, 44,254,209,101,229, 8,180, 29, 45, 34, 57,120,102, 98,238, 84, 54,248,177,115, 46, 32,224,110, 24,171,225,142, 26,
-226,122,217,198,119,199, 25, 21, 76,116,245,242, 71, 93, 93, 67,144, 67, 83, 72,217,122,208,154, 38,146,170, 74,254,122,137, 97,
-203,171, 80,123,126, 86, 13, 50,114,230,134, 52, 43,104,160,110, 52,106,229, 82,239,218, 10,165,197, 42,143, 92,155,112, 63, 79,
-182,109,170,172, 86, 42, 53, 42,212, 72,110,166, 83, 17, 83, 38, 18,137,166,133, 50,164,172, 60, 85,240,145,228,123, 92,248,153,
-225, 90,117,139, 14,223,186,217,144,212,184,247, 13, 37,217,245,234, 50, 30, 68,154,188, 47,118, 5,245,153, 13, 36, 5, 84,225,
-248, 64, 45,114, 16,133, 4,120, 5,183,210,145,135, 23,170, 17,120,166,246,122,210,239, 8,251,245, 73,221, 42,108,202,125, 54,
- 85,110, 12,136,116, 25,110, 42,164,252,181,186,183, 36, 84,100, 71,157,200,243,176,212,251, 97, 40,154,128, 27, 80, 87, 42, 0,
- 73,215, 28,248,248,246,138,238,223, 31, 27,209,100, 13,189,190,175, 61,174,217, 13,133,184,168,247,110,220, 46,215,168, 72,182,
- 43, 50,175, 26, 23,136,134,174, 58,133, 66, 41, 14,213, 96, 61,144,143,113,148, 85, 17,198,121,155,117,149,165, 68, 30, 78,240,
-151, 41,171,203,168,248,214,139,140,242,218,147, 61, 39, 46,146,154,176, 74, 94, 58,115, 70,238,237,110,102,210,194,237, 49, 74,
-101,167,176,152,106,242, 71,253,233, 17,120, 7,226,111,137,188, 85,195,180,126, 29,112,252,188, 55,150, 71, 72,245, 89,147,103,
-144, 54, 91, 11,230, 13, 18, 65,236,212,236,144, 84, 78,202,220,184,170, 37,144,199, 57,137, 21,156, 76,199,149, 3,245, 94,101,
-153, 14, 91, 11,118,106, 60, 38, 42, 50, 98,248, 52,232,255, 0,224, 76,210,169,176,210, 23, 58, 67, 75, 75,170,196,215, 65, 90,
- 66,200, 82,134, 70, 57,121,122,190,116, 74, 93, 58,224,113, 52,104,137,117, 22,180, 38, 41,236, 84,166,201,117,250,127,189,196,
-138,202,165, 63, 77,135, 61,213, 5, 70,128,166,194, 12,199, 18,144,165,140,160, 16,130,179,166,155,101, 55,170,133,187,214,166,
-214,220, 55, 67, 20, 74, 22,231,223,150, 76, 91,182, 85,181, 1,133, 66,160,215,231,197,159, 82,164,204,170, 90, 80,221, 39,244,
- 42,118,154,185, 47,211,155, 89,114, 42,164,175,221,144,228, 84, 39,195,216, 74,124, 72,107, 67,204, 60,133,205, 66,221, 76,153,
-140,248,200,105, 21,106,162,212,144,195,107,125, 39,244,116,228, 20,254,149, 32,124, 73, 74, 16, 82,160,149, 5, 73,200, 40,225,
- 8, 33,133,138,157,182, 82, 3, 95, 73,181,137,216,116,212, 13,238,110, 49, 90,230,167, 55,225,188,207, 50,225,188,237,100,164,
-205,114, 10,186,138,102, 10, 67, 66,181, 20,181, 15, 75, 52,145, 56, 33,102, 11, 36, 14,177,206, 9, 14, 84, 59, 29,188,174, 84,
- 59,173,112, 93,143, 85,131, 21,160,229,114, 44, 58, 45,153, 66, 12, 7, 27,139, 74, 91,136,101,170,139,205, 35,148, 83,216, 89,
-109, 47,175,160, 45,198, 97,150, 17,149, 40,129,153,191, 33,138, 45, 46, 76, 10,157, 73, 53,234,220,249, 45, 83,233,211, 28,109,
- 44, 82,226, 34,114,131, 18, 43, 40,129, 31,153, 48, 97, 70, 47, 36,186,181,120,174, 58,242, 82,209, 95, 50,212, 18,208, 73, 83,
- 80, 80,204,199,127,194, 85, 21,242, 79,187, 56,168,170,169,212,221,108, 50, 91,138,234,193,240,227,178,130, 24,101, 57,229,108,
- 41, 75, 86, 74, 20, 9,139,172, 74,165, 58,245,126,172,220, 89,142, 26,131,177,226,196,130, 86,202, 30,125,154,122,189,198,155,
- 17,167, 0, 8,166,198,149,239, 78, 60,238, 79,139,135, 31, 80, 75,139, 70,183,210, 72,208, 37,152, 14,131,107,157,246,216,129,
-183, 77,134,221,141,183, 54,195, 12,185,100, 85,145,194,212,139,125, 68,121, 69,150, 73, 36, 70, 28,168,213,141,221, 80, 38,242,
-239,121, 25,155,153,118, 55,137,194,174, 84, 41,148, 85,183, 64,162,120, 21, 9, 84,184, 49,145, 29, 46, 45, 79, 64,165, 64,110,
- 50,132,154,165, 69,214,148, 82,194,220, 74,138,147, 28,101,231,150,232,192, 66, 9, 86,185, 17,237, 36,216, 24,156, 79,108, 45,
- 91,106,157,145, 17,119,146,170, 52,251,163,110,235,115,214,150, 35,192,191,179, 38, 60, 55, 42, 47,160, 19, 2,219,168,211, 29,
-118,157, 56,164, 20, 50,202,227,203, 3,158, 10, 73,232,220,233,143,193,167,180,203, 82, 67,210, 37,192,145, 88,170, 20, 52,150,
-230, 54,253, 90,120,113, 41,119,149, 69, 38,115,235, 1, 12,182, 7,193, 25, 9, 82,185,130, 82,117,175,119,139, 85,218,217,157,
-245,121, 66, 42,143,213, 32,176,154,170,185, 28,143, 69, 75, 2,115,178,106, 74,141,250,175, 22, 25,108,248, 12, 35, 8, 91,142,
- 54,181,252, 5,122, 88,213,203, 28,145, 75, 78,229, 37,167, 97, 34,183,236,148, 33,148,223, 96, 69,197,183,176, 63,102,214,216,
- 58,240,190, 68,114,250,243,152, 23, 19,199, 8,114,242, 72, 72,231, 22,188,108,205,176,101,137,213,157,138,160, 37,149,131,121,
-245, 2, 96,171,183, 20,137,123, 31,191,149, 91, 47,123,232, 85, 27, 62, 93, 6,181, 34,220,190,237,155,214,132,186,220, 88,179,
-217,150,220, 71,128,149, 75,125,138,149,169, 90, 75,203, 96,211,110, 42, 91,143,176,165,184,194,229,195,126, 59,201,121, 83,127,
-216,175,102,198,192,241,189,192, 78,211, 93,151,173, 66,131, 11,121,110, 27,122,109, 78,202,226,103,134,152,244,170, 29,255, 0,
-106, 75, 77, 80,127, 7,147,118,200,183,170, 81,169, 27,137,124, 65,102, 20, 38,171, 53, 4, 24,110,205,241, 18,226,164,123,227,
- 13,202,211, 37,186,124, 33,108, 79, 16, 66,211,103,113,182,182,139,118, 84,173, 7,156,166,216,183, 99,192, 67,187, 32,202, 95,
- 52,202,236,231,238, 88,201, 46,213,173,214,193, 83,203,133, 49, 50, 99,173,245,243, 52,203, 11,115,159, 93, 2,225, 42,126,233,
-240,185,105, 84,108, 74, 45, 95,108, 43, 59, 35, 69, 97,250,141, 10,138,230,217, 90,251, 48,139, 9,233, 47,173, 83,167, 92, 23,
-133,177, 85, 69, 46,182,212,244, 48,183, 86,228,216,112,223, 43,138, 95,241, 29,230,228, 19,170, 78, 41,201,115, 12,218,154,183,
- 54,203,228, 66,244,207, 79, 57, 83,174, 48,118,211, 36,113,139, 51,236,182,144,200,197,209, 89, 4, 74, 66, 18,100,220, 71,196,
- 25,253, 47,135,176,101, 60, 41,197, 99, 32,207,114, 92,228,102, 52,138,194,116,168,154, 25, 34,146, 41,169,214,165, 68,180,176,
-199, 36,210, 6,122, 3, 28, 20,213, 45, 28,143, 83, 37, 84,238, 34,143, 74,120, 89,225,111,121,247,111,121,238, 89,155,225,184,
-220, 82,237,142,251,112,146,253, 17,207,229,239, 14,200,188, 40,150,199, 16, 91, 53,100,203,106,223,161,219, 59,177,105,238, 28,
- 8,141,191,184, 84,122,123,188,237, 86, 66, 93,102,187, 65,135, 61,155,146,157, 54, 68,117, 85,170, 29, 5,246,132,237, 76,171,
- 94,215,181, 54,235,103,182,227, 99,237,219, 50,147,100,221,151,117,186,253, 38,155, 38,143,114, 90, 87, 4,106,212, 53,220,242,
-118,242,194,180,160,179, 75,166, 81, 39, 84,235,112, 68,217,140, 61,226, 50,212,247, 22, 89,118, 35, 77,235, 83,184,202,246,199,
-112,111, 70,219,122,181, 6,171,108, 65,226,231,125,105,213,122,204, 75, 11,108,236, 27,130,252,141,176,118,155, 98, 2, 33,193,
-175,238,213,251, 13, 81, 98,223, 52,197,206, 75,206,187, 71,165, 38,170,196,168,241,155,138, 85, 9,111, 46, 98, 52, 47,111,189,
-188,183, 37,209,109, 10,103, 17, 22, 2,110,109,194,146,227,138,131,118,219,246,163,116, 11, 98,132,235,103, 52,122, 75,118,253,
-157, 38, 77, 80, 90, 17,210,101,178,248,116,206,118, 75, 83,212, 28,101,175, 1,149,162, 45,226,190, 70,185,231, 0,203,149,228,
-121,123,231,153,198,105, 91, 28,230, 88, 16, 36,112,211, 70,154,212, 24, 39,149,165, 18, 74,198, 72, 89, 35,105,100, 12, 41,231,
-158,112, 57,145,137,231, 10,100, 94, 51,241, 87, 23,112,111, 30,211,112, 52,153, 38, 73,225,242, 10, 90,124,155, 50,146, 42,116,
- 99, 45, 52,112,243,178,218,153, 12, 21, 85, 52,171, 42,205, 88,212,181,201, 75,149,209, 37, 91, 81,100,148, 51, 81, 75, 49, 50,
- 6,217,173,183,155,188, 84,118,173,158, 32,172,235, 87,118, 54,166,179,183,149,203,134,222,225,242, 30,215, 80,233, 54,151,241,
-165,100,213,106,245,122,156,138,221,227, 2,160,150, 46, 42,164,235,130,161, 57, 86,251,132, 51, 77,169, 64,173,174,167, 38, 59,
- 85, 4, 56, 26, 3,109,118,123,135, 41,252, 96,110,135, 23,245,109,254,221,189,165,168,219,173, 91,123, 97, 87,216,251,190,175,
-183,219, 85, 99,219,212,155,126,209,183,217,137,183, 10,131, 66,169, 76,169,205,176,225, 70,165,194, 83,180,116,125, 88,219,175,
-148,178,243,175,199, 75,173, 59, 29, 61,249,246,206,238, 94,228,237, 61,211,181,155,117, 97, 50,205, 62,247,110,151, 14,183,114,
- 57, 71,149,102, 55,111,211, 40,145,161,125, 74,213, 25, 54,141,222,227,180,202,188,130,169, 82, 23, 30,151, 57,136, 16,218, 83,
-108, 72, 50, 38, 25, 64,114, 67,110, 47,253,229,176,174, 10,205,199,103,238,253,237, 99, 85,238,119,154,122,231,157, 75,174,215,
- 74,238, 7, 25, 46,152,207,214,220,157, 58, 73,170, 74,109, 18, 30, 75,110,190, 29,121,180, 44,165, 42, 9,232, 21,240,162,151,
- 56,225, 46, 16,143, 36,205,178, 88,214,186,130,176,206,181, 50,212,206, 37,168,141, 97,228, 37, 63, 46, 9,201, 90, 37, 96,103,
-142, 25,155, 74,243, 26,157, 97,150, 33,237, 83,203,114,127,162,199,141,220, 86,188, 75, 85,151,241,125, 31, 2,167, 23,193, 83,
-150, 54, 91, 79, 78,166,152,101, 85,109, 75, 81, 85, 61, 59, 60, 98,150,158,166,174,122, 58, 72, 42,106,150,136,102, 51,123, 10,
- 85,205,152, 73, 43, 44, 16,206,123,218, 61,196,127, 12, 59,235,177, 53, 46, 29,169, 86,189, 55,136,234,109,215, 88,166, 26,197,
- 38, 53,233,116,109,198,223, 91,198,222, 80,171,209,234,119, 5,221, 67,164, 25,151, 10, 5, 85,136, 33,154, 93, 49, 37, 18, 15,
-233,100,202, 97,150,139,131,132,251, 87,179,251, 79,179,194,224,147,101,216,244,202, 5, 90,229,159, 17,119,149,211, 72,110, 69,
- 46,248,110,163, 29,217, 43,129, 66,171, 79,122,116,167, 35, 90, 76, 72,147, 37,216,236, 37,215, 98,203,117,126,245, 45, 50,100,
-114,186,222,133,219, 60, 77,113, 16,220,102, 29,123,136, 11,214,170, 86,194,217,230,148,229, 46, 98, 20,211,128,115, 50,125,254,
-146,190,100,228,116,200, 4, 30,163, 7,187,151, 72,226,234,249,165, 72,105,119,173, 54,145,119,199, 91,105,138, 42,209,169,240,
-173,203,214, 44,100,188,211,178, 16,205,110,152,208,135,112, 48,176,215,197, 10,171, 13,109,124, 69,109,200, 97, 95, 24,214,226,
-126, 46,204,248,131, 53,169,253, 34,207, 26, 53,144, 71, 4, 79, 21, 56, 17,133, 22,229,150,231, 57, 26, 1, 47, 34,187, 2, 44,
- 52,198,170,139, 50,202,126,130,126, 47,120,111,192,109,194,252, 57,154,229,220, 65,148, 9,205,116,180,137,154,214, 10,186,170,
-162, 10,137,109, 91, 69, 71,150,198,235, 25, 10, 22, 25,169,163,100, 69,105,125,166,116, 70,126,237,240,173,188,242,233, 18,100,
-237, 93,235, 42, 60,202,109,114, 92,138,190,220,221,209,196,104,148,181, 76, 74, 16,170,157,149, 92,105,110,132,210, 43,242, 74,
- 19, 42,158,164,115,198,158,234, 36, 48,143, 6, 66,144,210,247,177, 85,202,124, 85, 41, 50, 23,238,234, 96,171,220, 84,131,201,
- 81,167,186,242, 66,220,103,194,112,116,136,167, 49,204,218,135, 38,114,149, 36,142, 82,142, 24,109,205,249,100,111,109,188,154,
-141,169, 87,121,132, 69,149, 25,154,133, 12, 70,102, 35,244,170,162,202,228,211,227,215,160,171,156, 70, 90,220,109,197,198,112,
- 60, 25,150,134, 86, 98, 60,242,193, 74, 54, 70, 21,203,185,137, 49, 41,209, 55, 38,242,181,228,211, 26, 17,157,129, 46,114, 42,
-180,121, 76,135,128,240,207,214,112,156,148,134, 86, 18, 75, 79, 49, 33, 50,163,165,120,248,146, 57, 73,105,106,159,147, 26, 7,
- 37, 20,121, 74,249,129, 29,199, 81,176, 38,192,147,176,176, 11,229, 39, 28,113,196, 92, 57, 81,148,103, 21,249,110,121, 69, 46,
- 69,155, 81,200,201, 87, 73, 60,114, 67, 44, 19, 46,155,235,139, 65,117, 46,165, 73, 11, 30,131,175, 80,250,185, 64,199, 74,170,
-247,117,187,111, 83,215, 94,171,203,137, 65,135, 79, 67,143,174,161,207, 41, 13, 62,140, 15, 16, 83, 24,105,167, 37, 84, 28, 81,
- 82,130,227, 69,105,245, 45, 71, 41, 66,191, 91, 76,133, 87,124,171,187,130, 29,167,217, 76,213,237,251,106, 66,189,205,119,162,
- 28, 98, 37,199, 86,142, 16,162,185, 54,235, 12, 41,106,181,161,242, 45, 99,199,119,154,162, 48, 80, 81, 16,158,154,182,205, 62,
-117, 86,178,221, 66,238,151, 81,166,214,156, 82,227, 66,168, 73,171, 77,171,198,152, 82,188,180,236, 27,145,222, 95,115, 36,148,
-242, 70, 81,136,160, 29, 56, 67,138, 29, 54, 42,202,179,153,139, 37,154,143, 44,138, 93, 90,115, 13,179, 42, 84, 55, 84,228, 58,
-130,154, 32,177, 34,167, 76,116,248, 83,164,158, 85, 21, 58, 66, 29,194,202, 84,242,134, 53,191, 74, 37,168,148, 34, 92,139,239,
-126,187,219,125,133,150,228,146, 47, 98, 55,179, 1,136, 86,103, 62, 91, 69, 8, 36,153,106, 8, 60,182,111, 58, 40,216,157, 54,
- 98, 36, 0,234,243,171, 58, 3,101,229,106,179, 43,139,104, 91, 70, 44,120,176,217, 45, 59, 21,146,164, 50,232, 71, 43,133,111,
-117, 90,230,100,144,252,149, 40,149, 41,210, 74,150,181, 21, 44,149,171, 39, 97,160,209,196, 74, 98,138,211,204, 1,101, 39, 41,
-232,160, 84, 80, 91, 86,122, 5,117,207,217,171, 93,167, 74,230,109,190,118,227,151, 50, 18, 67, 73, 80,101,207,212, 10, 45,182,
-190,169, 65, 32, 16, 14, 72, 61, 50,113,157, 59,206,211,128,167,184,215,134, 84,218,139, 67, 9,202,136, 9, 81,207,134, 79,235,
- 28, 17,243,252,113,169,165, 53, 56,166, 68,176, 35, 72, 23,245, 29, 5,183,191, 78,155,254, 24,174,234,171, 13, 76,138,146,157,
-228,111, 49,216, 94,228,111,219,173,201, 22,181,250,250,130,207, 61, 76, 83, 78,129,201,136,206, 30,102,214, 63,241, 74, 61,219,
- 81,242, 79, 81,141, 92, 33, 83, 11, 11, 43, 74, 70, 79,235,128, 48,146,159, 95,183, 89,187, 48, 16,248,113,190, 78,100,130, 82,
-160,176, 65, 32, 28, 5, 99,215,168,252, 53, 65,216,162, 34,146,199,235, 39, 31, 2,200,193,233,215,144,231, 79, 81,206,164,117,
-233,252,125,253,240,213, 89,206, 82,241,176,243, 14,190,132,117, 7,227,110,189,143, 94,183,197,134,155, 9, 14, 77, 73, 35,160,
-115, 31,105,236,123,140,118,214,207,217,208, 91, 67, 45, 2, 19,212, 36, 12, 14,163,212,156,142,135,247,233,135,163, 69, 10,155,
-158, 95,135,196,200, 0,103, 57,200,252,115,173,138,183, 84,150, 18,214, 79, 47, 42, 82, 64,200,200,192, 25, 63, 34, 51,173,102,
-107,129,181,255, 0,158, 33, 53,234,201, 4,224,108,194,246,251,207,207,175,124, 57,232,109,180, 51,202, 72,248,130,113,142,248,
- 78, 0, 31, 35,235,246,233,191,188, 42,206, 66,108,193,167,132,253,103, 41,181, 0, 71,255, 0, 2,140,174,134, 73, 35,245, 92,
- 39, 33, 30,121,235,229,171,141, 90,228,106, 11, 32, 52, 80,236,183, 73, 12, 70, 4,229, 74, 7, 30, 43,152, 63, 3, 41, 29, 84,
-123, 28,224,100,235, 5, 13,173,197, 57, 46, 67,138,125,249, 46,120,146, 95, 88,253,117,156, 97, 40, 39,245, 91, 0,225, 35,176,
- 29,180,142,179, 80,220,168,205,149,126,211, 15,223,164, 16,122,250,158,195,208,145,134,108,155, 45,116,149,107,106,210,241, 41,
-186,161,255, 0,120,194,221, 71,236, 47,127,218, 35, 79, 77, 86,176, 66,163, 8,205,225,197, 43, 56, 37,105, 65, 56, 36,252, 75,
- 82,212,174,171,112,149, 28,156,245,207, 93, 15, 45,216,241, 57,146, 57, 27, 56,200, 72,192, 89, 78, 15, 85,168,159,128, 99, 39,
-226, 63, 33,223, 89, 20,167,114,130, 10,130, 80, 72,248, 26, 31, 30, 65, 0, 16,165, 3,208,231,174, 61, 61, 53,129,212,188, 52,
- 7, 20, 82,214, 78, 74,148,226,186,164,228, 18, 84,181,103, 36,244,238,122, 30,157, 53,185, 26, 44,106,170,160, 1,238,236, 54,
-253,214,249,247,206,169,100,122,153, 25,234, 36,251, 71,160,233,212,122,216,124,236,119,197,146,116,196, 43,156, 23, 20,234,176,
- 66, 83, 24, 44, 50, 18, 79, 66,235,132,167,159, 61, 50, 50, 18, 9,206, 15, 83,172, 58,116,165, 37, 64, 4,182,218, 73,199, 59,
-139, 10, 82, 73, 66,186, 33, 13, 30, 94, 96,174,108,228,231,168,198,123,139,140,202,131, 79, 30, 70,148,227,238, 33, 74, 65,102,
- 43, 97,196, 54,147,211,226, 81, 41, 74,129, 0,103,226, 56,236, 70, 51,172, 78,114,228,243, 5, 43,193,100,115,243, 36,120,134,
- 75,201,194,128, 42, 71, 54, 17,204, 60,206, 74,114,122, 18,116,112,214,210, 59,223,241,219,240,190,226,251,116,251,158,201,176,
- 10, 23, 73, 61,143, 95,141,182, 61, 58, 16,167,226,118,197, 23,220, 24, 42, 82,202,147,250, 50,234,130,146,217, 45, 36,168,133,
- 45, 94, 71,175,197,215,174, 49,223,174,177,233, 50,208, 66,131,105, 61,214, 66, 64, 78,114, 64, 32,244, 61, 27, 42, 36,100, 30,
- 80, 0, 29,250,232,185,104, 66, 49, 33,199, 21,150,220, 43, 66,158, 90,158, 9, 94, 72,229, 74, 84,180,165, 36,173, 63,234,146,
-156,146, 6,173,114, 20, 80,180,165, 72, 80,112, 20,145,206,164, 41, 92,139, 1, 96,182,144,172, 56,130, 20, 14, 50, 0, 39, 56,
-233,141, 46,141, 98, 54,244,254, 95, 29,247,198,133, 76, 90,206,166, 58,175,233,178,237, 97,238,254, 93,189,215,178,204, 42, 33,
- 93, 64, 42,248,136, 81, 57,235,147,209, 95,205, 61, 51,156,117,229,239,140,107, 16,158, 7, 42,147,206, 74,138, 85,241,171,148,
- 17,140, 96,145,216, 96, 12,125,253, 6,178,233, 89, 1, 42, 89, 0,224,140, 40, 16,146,179,204,164, 55,201,216, 60,158,153, 29,
-114, 59,100,118,197,106, 10,207, 40, 35,170, 73,230, 36,114,149,103,155,161, 9, 87, 86,241,147,231,213, 88,193, 58, 92, 49,218,
-223,135,110,159,187,221,238,253,216,103,145, 0, 34,219,123,186,124,143,147,136, 13,251,114,237,134,237,143,105, 46,242, 73, 13,
- 22,133,233,109,109,125,248,227,197, 1, 40,126, 69,118,199,166,197,148,182,249, 0,241, 0,122,146,174,101, 31,136,168,158, 98,
- 78,117,200,194,180,168,126,137,101, 88,239,233,246,107,183,127, 72, 24,180,175,104, 99,158, 27,161,215, 19,195,254,205, 37,246,
-129,255, 0, 34,180,195,184,124, 52,148, 17,150,202,152, 45,175,169,201, 11, 7, 0, 99, 92, 70, 83,105,199, 81,140,246,229,242,
-249, 29, 75,178,155,181, 13, 41, 59,217,109,211,176, 36,116,235,219,242,199, 51,241, 50, 44,124, 69,158, 34,159, 47,181,212, 31,
-255, 0,116,172,199,247, 18,113, 76,168, 40,116, 72, 29, 62, 47, 63,188,117,208,235, 35, 24,207, 92,244,254,221, 86, 40, 35, 62,
-152,207, 95,232,251,116, 51,133, 67,168, 78, 71, 81,243,251,244,236, 6,194,221, 48,206,160, 29,173,211,161,253,216,162,179,229,
-143,191,211,175,217,170, 11, 0,227,176,245,245,199,175,207,160, 58,244,188,254,177,201, 82,124,188,177,231,246, 29, 81, 39, 39,
- 58, 93, 70,194,221, 63,158, 20, 24,164,230, 60,136,232, 72,244, 39,183,109, 12,178, 9, 61,242, 59,122, 30,223,214,116, 74,241,
-130, 73, 3, 7,167,246,245,213,189,240,234,136,240,212,148, 97, 95, 22, 70, 74,128,236, 58,249,233, 68,235,140, 3,126,155,227,
-193, 36,156,254,113,165,175, 10, 63,237, 99,238,206,116,180,125, 62,182,191,207,191, 25,199,180,146, 15, 65,159,151,174,171,165,
- 93,142, 58,142,227, 61, 70,135, 31,120,254,145,251,117, 92, 96,245, 30,127, 46,250, 37,188,191, 15,195,231,231,124, 12, 86,241,
- 19,156,117,235,231,142,159,126,136,111, 10,193, 74,187, 28, 99, 24,201, 62,191,136,252, 53, 65, 9, 0,131,220,244,251, 58,232,
-164,225, 61,178, 7, 94,221,254,236,246,210, 76, 24,139,124,252,223, 25,219,239,197, 69,160,168,119,233,221, 93, 78, 6, 49,216,
-125,186, 33,164,115, 36, 40,247, 29, 66, 71,160,233,235,170, 64,133, 15,207,113,215, 69, 36,242,224,244,244, 35,208,105, 34, 0,
- 39,190, 49,143,104,101, 42,238, 57, 85,215,168,198, 72,251,188,244,123,104, 72, 72, 24,201, 79, 78,191,187,166,132, 65, 39,226,
- 72, 25,244, 39,167,152,251,180, 90, 22,144, 1, 87,195,147,231,252,236,250,124,244,153, 23,216,158,159,233,140, 17,124, 28,214,
- 58,114,244, 24, 61, 62, 93,191,167, 70, 32, 12,103, 39,230, 60,137,199, 94,154, 13,178, 23,215,168, 29,253, 59, 99,250,245, 93,
- 11, 73, 95, 47,114, 62,127,102,127,103,150,147,194, 39,221,190, 13,108,129,145,140,228, 16,160, 70, 82,164,158,133, 36,121,130,
- 9,200,212,133,253,149, 30,214, 40,187, 66,197,191,195, 39, 20,245,169, 15,236,235,143,162, 14,220,110,140,213,189, 54,163,181,
-211,100,184, 17, 30,135,114, 58,162,165,203,177,148,226,240,211,164,149, 65,206, 21,150, 70, 83, 30,118,242, 14,122,121,126,206,
-218, 33, 39, 37, 68,227,168,229, 32,128, 82, 65,232, 65, 7,184, 56,237,231,157, 55,102, 89,109, 54,103, 78,208, 84, 37,251,171,
- 11,106, 86,236, 71,240, 32,236, 71, 81,211, 14,249, 22,123,153,112,230, 99, 22,103,149,205,202,158, 63, 43, 43, 92,199, 44,100,
-130,209, 74,160,141, 72,214, 29,195, 41, 1,144,171, 0, 71,233,189, 78,163,199,149, 6, 5,118,137, 50,159, 88,161, 86, 97,179,
- 50,145,112,209,228,179, 81,164,214, 32,202, 66, 93,106,101, 62,161, 25, 74,109,214,150,210,146, 82, 66,186,115,105,198,165,210,
-220, 45, 54,156, 0,210, 18,130, 16,156,144,132,160,130,113,234,163,215, 63,102,191, 63,142, 13, 61,168,188, 90,112, 88, 35, 91,
-187,121,119,179,119,109,106,165, 54,185,123, 83,184, 1,218,213,172,195, 74,112, 25, 31,193,231,222,112,191,110, 58,164, 21,224,
- 48,176,215, 49, 7,195,198,117, 59, 45,161,226,130,149,124,109,157,131,126, 59,105, 34, 25,190,109, 42, 53,196,184,241, 30, 15,
-198,138,237, 78, 35, 82, 31,140,211,167,245,219, 66,220, 41, 7,190, 19,170,167, 56,203,165,200,101,140, 85,149,104,230,213,203,
-101,189,155, 78,155,220,117, 82, 3, 46,198,227,123, 43,181,137,199, 98,248,121,226, 4, 60,107, 28,144, 81,211, 52, 25,134, 94,
-168,243,195, 33, 13,165, 88,233, 15, 20,151, 2, 68,212, 8, 23, 84,117,184,212,128, 27,157,174,166,211,138,218,110, 68,166,202,
- 12,226,136,177,129,232,166,216, 72,248,148, 83,159,213, 41, 3, 58,199,247,101,136,115, 44,202,189,191, 58, 53, 62,165, 75,147,
- 13,232,255, 0, 85, 84,225, 70,168,193,124, 22,212, 1, 92, 57,109,173, 42, 25,207, 92,107, 7, 94,247, 82,222, 44,120, 49, 37,
- 54,166,153, 62, 27, 97,162,180,183,147,212, 19,228,122,244,251, 53,166, 60, 82,241,139, 69,219,203, 98, 69, 54,140,180, 86,247,
- 30,234,150,139, 66,201,183, 25,149, 29,233,234,185, 42,196, 70,134,169,113,219, 89,247, 70,154, 91,161,107, 46,114,242,132,100,
-244,206,153,205, 97,168, 2,158, 4, 44,100,219,125,135, 64, 78,228,219,222, 73,244,222,221,174, 76,131, 35,204,179,124,218,130,
-135, 45,164, 51, 85,202,227, 76,106, 62,206,255, 0,109,219,126, 90, 70,190,103,145,136, 84, 93, 78, 72, 23,191, 48,247,123,113,
- 54,107, 98,106,146,105, 9,180, 41, 21,123,162,141, 80,151, 62,153,110, 91,228, 81,105,212,218,178,156,241, 34, 77,169, 72,130,
-226, 75, 2, 57,229, 90, 91, 71, 95, 19, 25, 61, 49,174,102,239,183, 16, 27,245,196,245, 64, 82,110,171,182,181, 46,217, 96, 6,
- 35,218,212,137, 51, 32,219,108,198,105, 92,201, 85, 69,199, 30, 6,166,164,128, 10,220,112,144, 72,251, 53,214,202, 31,178,178,
-163,118, 58,154,214,227,110,196,250,141,229, 94, 90,234,215, 82,232,240, 89,168, 70,166, 84,170, 4,190,168, 41,121,249, 0, 76,
- 90, 29,119,151, 56, 9,248, 73, 25,214,146,202,219, 91, 51,104,184,161,111,104, 55, 2,101, 83,114, 54,198,194,191,169, 77,110,
- 68,221,177,164, 63, 85,175,214,237, 88,241,211, 82,147, 76,141, 78,128, 22, 91, 87,142,150, 98,205, 74, 85,132,248,171,248,142,
- 53,173,150, 83, 84, 83,203, 81, 44,142,139,160, 27, 2,160,233, 3,114,117, 16, 12,141,127, 70, 80, 9, 35,125,241,233,239,130,
- 41,224, 38,103, 13,117, 54, 67,153,205,226, 87, 28,112,190, 95, 45,125, 92,210, 83, 86,187,242,226, 42,178,174, 80,149,113,165,
- 44, 65,229,100,134, 4,141,150,122,141, 81, 51, 73,162,237, 30,168,196,225,210,109,131,180,183,158,251, 93,182,173, 90, 77,131,
- 96, 89,181, 75,242,173, 86, 98, 49,102, 9,183, 41, 18, 99, 82,213, 61,169,147, 28,108, 26,115,213,233,208, 41,241,139, 73, 89,
-155, 50, 88, 98, 57, 82,144,225, 71, 44,173,110, 47,174,107,174,254, 98, 13, 58,249, 85, 6,131, 87,171, 39,220, 44,241,181,244,
-153,180,166, 32, 5,149,154,122, 42,162,227, 19, 75,165,128, 71,188, 56,178,174,115,204, 82,145,128, 36, 3,237,235,223,234,222,
-215,112, 55,182,219, 31, 86, 98, 61,181,187,220,112, 95,208,183,126,253,180, 97, 54,220, 21,109,191, 13,155, 89, 33,113, 54, 95,
-106,218,165, 50, 18, 40,148,150,231,154,107,198, 55, 42, 67,242, 41,179, 93,113, 42,113, 74, 86,162, 97,177, 48,209, 39,113,161,
- 58, 64, 13,211,225, 75,148, 51,140, 36,165,190, 84,143,159, 65,171, 75,135,178,168,107,242, 90,172,214,180, 51, 59,234, 16,134,
- 17,190,133, 64, 20, 55,158, 54, 2, 70,146,225,136, 0,174,157, 43, 97,185,243, 63,233, 63,244,231,241, 66,159,196,102,225, 15,
- 14, 51, 37,224,188,143,132, 9,142,161,114,156,207, 55,165,122,154,211,180,201, 83, 95,148,230, 89,116,181,212,212,192, 8,224,
- 5,150, 25,142,186,190, 84,124,245,138, 25,117,109,141,230,157,201,225, 47, 99,174,184,147, 81, 37,251, 42,185,185, 27,109,239,
-116,234,109, 66,219,122, 4,155, 82,247,170, 85, 97,120, 77, 63, 82,121,198, 42, 45, 83,110,106, 65,247,182, 36,165, 14,184,226,
-150,194, 25, 9,113, 3,110,182,151,139,125,212,183,132,104, 23,139,113, 55, 18,137, 24, 33, 42,171,202,150,138, 77,231, 10, 58,
- 80,148, 41,215,106,105,101,113,238, 23, 2, 0,109, 6, 99, 41,127,224, 0,190, 84,115,174, 89,251, 50,110,182,111,109,161,226,
- 3,101, 36, 58,211,149,138, 21, 94,218,222,203, 78, 35,202, 81, 46, 82,231,199, 69,129,126,193,167,180, 63, 93,214,103,194,179,
-170, 50, 48, 15, 42,103, 21,168, 17,147,174,130,217,182, 49, 51,154, 91,177,188,102,144,164, 58, 35,144,191,242,169, 25, 99,159,
-148,124, 72, 7,226,207, 80, 49,207,131,216, 83, 92, 69, 69, 29, 6, 99, 95, 73, 34,235, 8,250,148,236, 9, 14, 17,197,138,133,
- 2,215,210,116,217,110,164, 91, 97,105,119,134, 62, 33,208,248,151,225,118, 89,196, 28, 81, 28, 85,249,213, 91,213,189, 89, 99,
- 36,143,237,143, 83, 41,169,117,146, 89,165,169, 6,105,139, 75,170, 73,228,145,245,134,150, 73, 9, 44,122, 97,110,111,221,149,
-120, 67,165,189, 58,161, 34,214,201,105,134,233, 55,148, 69, 83, 11, 50,221, 90, 92, 68, 40,213, 72,110,200,135, 46, 73, 41,108,
-171, 14,167,245, 84,130, 65,200,211,166, 94,171, 84,102, 51, 47,194,143, 89,131, 9, 5,184,240,105, 85, 40,147,218, 74,222, 40,
- 89, 97,227, 2, 67,137, 97, 78,252, 5,254,110, 85,114,132, 39, 9, 72, 32,233, 93, 14,201,122, 65,143, 22,156,212, 69, 86,100,
- 46, 44,135, 38, 57,135, 33,219,180,231, 22,234, 83, 60,161,192, 10,170,170, 8,144, 33,178, 71,233, 29, 30,242,191,208,181,133,
-191,182,125,129, 22,137, 24,184,219, 16,105,244,122,116,229, 24,172,196,140,227, 51,106, 82, 37,172, 0, 92,153,226, 37,249,213,
- 57, 83, 22,165, 18,225, 82,222,113, 69, 74, 9, 71,234, 68, 9,208,198,209, 94,219,218,228, 15, 83,112, 65,184, 62,227,110,189,
-109,178,169, 62, 83, 5,218,149,249, 37,181, 42,198, 87, 89, 80,199,253,217, 86, 70, 70, 98,204, 20,146, 89,197,201,101, 22,230,
- 59,242, 41,215, 69, 77, 73,128,236, 67, 18, 58,167,154,138,231, 60, 4,102,158,150, 80, 82,130,218,157,115, 45,198,101,174, 84,
-165, 1, 68,114, 52,130,156, 99, 89, 45, 34,212,134,228, 73, 16,146,227,205,181, 1,201, 78, 77,171, 38, 42,218,143,227,144, 4,
-201, 12,201,115, 36, 71, 12, 32,165, 43, 3,226,248,212,144, 10,146, 53,126,180,172,233, 73,154,154,212,168,202, 93,197, 80, 97,
-136,104,140,211,242,100,192,162,196,109,194,166, 41,208,221,148,163,201,135, 23,227, 62,232, 78, 95,127, 36, 0,218, 27, 1,238,
-160, 90,138,170,136,112, 34,196,122,116, 24,179, 26, 97,224,201, 66,151, 91,158, 22,121, 26, 8,112, 2,184,136,155,133, 28, 30,
- 89, 15, 32, 1,204,132,117,220,138, 25,100, 69,141, 33, 42, 95,185,185, 36,108, 64,216, 41, 3,125, 76,119, 96, 54,234,214, 58,
- 53,249,220, 11, 78,232,142,144,194,128, 23,101, 1, 6,175,214, 62,103,112,219,249, 82,197, 84,238,108, 17,110, 52,139,118, 47,
- 29,184,225,215,110, 42,187,173,184,204,207, 72, 80, 85,167,183,182, 36, 9,173, 70,184,111,106,192, 66,170,116,219,106,146,227,
-200, 80,164, 50,235, 10, 77, 66,191, 84,117, 10,106,153, 79,228, 73,241, 36,174, 36,119,184, 21,190, 59,243,185,156, 69, 84,159,
-170,238, 77,125,233,212, 64,224,114,153, 96, 80,157,149, 74,219, 91,113,168,200, 9,139, 79,161,218,173,191,225,204,247,118,130,
- 18,103,207, 18,106, 18, 92, 10,125,231,194,214, 80,151,139,218, 61,196, 11, 91,199,196,197,237, 22,149, 81, 84,157,189,217,229,
-191,180,182, 2, 88, 11, 17,100, 68,160,212, 84,221,239,112,178,210, 9,241,102,214,111,225, 52,151, 48, 84,168,148,168, 76,161,
- 74,109,180,160,115,231,137,235,103,118, 56,127,147,104,217, 55,156,251,107,111,175,235,178,220,141,117, 86,109, 75,154,123,113,
-238, 29,183,163, 87, 2, 87,106,211,239, 74, 50,150,145, 64,189,234,148,231, 29,158,154, 36,149,174,165, 75,167,166, 52,138,188,
- 24,138,159, 21,133,236, 83,112,252,185,180,169, 8,169, 20,176,234, 0, 18, 88, 7,176, 39, 89,211,114,119, 4, 70,189, 44,161,
-148, 22,190,159, 75,188, 43,225,207, 12,190,140,158, 22,229, 62, 49,120,177, 11,207,199,124, 79, 74, 43, 96,166,138,138, 92,199,
- 54,166,167,120, 99,153, 50,252,166,134, 37,121,162,150, 40, 36,137,243,154,231,228, 65, 75, 44,172,185,141,117, 61, 12, 49,202,
- 64,184,109,119,103,132,181, 74,129, 79,134,194,135, 43,190,237, 21,191, 29,100, 96, 37, 40,117, 73, 82, 99, 35, 32,124, 88, 42,
- 63,170, 53,226,221,219, 54,154,144,210,159,144,184,110,188,191, 9,111, 50,130,176,158,110, 80, 84,251,171,202,128, 1, 93, 73,
-229, 25, 56, 37, 0,140,233,155,215,238,236,178, 81,245, 6,230,196,184, 38, 72,117,114,146,204, 10,157, 18,124,222, 68, 55,238,
-229, 13,192, 85, 62, 51,171,139,134,207, 35, 41,140,233,231,202,146,147,144,117, 96,166,239,230,251, 91, 78,170, 52,187,154,100,
-238, 69,175,198,143, 95,161, 83,106, 18,154,101, 79,165,231,152,117,164, 67,133, 45,134,212, 82, 91,194,156, 5, 45, 44,164, 2,
- 66, 84,155, 34,147,133,243, 36,165, 20,116,217,188, 35,151,238,126, 97, 4,254,177,125, 68,239,211, 82,223,173,172, 0, 24,167,
-179, 47,246,170,125, 30,232,243,104, 31,139,124, 24,227,142, 30,161,169,102,142,147, 50,172,203, 50,121, 41,229, 42, 69,218, 3,
- 30,118,241,202, 0,243,200, 41, 94,165,129, 22, 42, 88,227,163,116,203, 17, 8,185, 93,183,106,208,252, 38,221, 75,239, 69, 82,
-148,212, 98,226, 86,217,118, 44,165,167, 9, 65,101,223, 60,148,144,181, 96,168, 43, 0,252,174, 91,214,181,183, 10,117, 86,179,
- 50,153, 73,166, 83,194,214,252,233, 83,209, 26, 43, 44,162, 64,140,219,206, 58,234,210,112,235,191, 11, 64,100, 44,244, 4,168,
-145,172,123, 98,119,186,189,184,148,118,141, 70,148,197, 50,191,111,207, 66,201,167,161,249, 52,249,241, 42,212,229, 7,204, 15,
-126, 66, 92,110, 3,140,161, 73,118, 19,202, 81, 97,108,148,161,199, 27, 91, 78,107, 86,119,238,216,221, 43,230,252,250,182, 13,
- 58,183, 46,147, 70, 13, 38, 4, 56,116,185,179,162, 69, 46,180,223,141, 81,142,184,140, 41,147, 41,114, 84,242, 75,171, 82, 84,
-194, 91, 72,230, 64, 90,214,181, 33,200,201,170, 43, 89, 94,208, 24,128, 15,166, 66, 20,216, 3,112,111, 96, 88,110, 78,159,118,
-155,220, 99,160, 60, 98,250, 99,112,207,134,255, 0, 71, 46, 29,250, 64,120, 83,195, 50,248,169,148,241,245, 69, 30, 93,144,193,
- 67, 79, 83, 28, 82,215, 85,189,122,153,115, 32,105,154,178,134, 26,105,168,101,163,146,156,211,189, 75,102,130, 44,173, 68,114,
- 77,207, 71,110, 15, 18, 59, 61, 18,251,183, 45,234,180,107,233,187, 1,250,171, 17,238,235,214,213,164, 83,170,247, 53, 22,146,
-247, 59,114, 43, 22,149,141, 85,159, 17,119,100,134, 63, 68,234,163,187, 34, 18,164, 53,206,152,138,117,244,161,183, 58,193, 87,
-225, 15,135,235,154,206,165, 93,187, 71,198, 37,215,186, 16,174, 74, 84,106,197,183,252, 7,217, 27,135,115, 66,233,111,133,248,
- 82,110, 88, 27,108,185, 18, 44, 98,226,138,217, 76, 74,176, 98,168,211,208, 31, 14, 67,113, 0, 40,199,138, 77, 58,219,219, 50,
-244,105,201,133,114, 94, 12, 56,227, 82,225, 41,246,106, 20,107,126, 74, 1, 10, 21,105,145, 29, 83, 87, 29,105,183,135, 90, 99,
- 14, 24,108,168,230,161, 33,210,145, 21,121,134,197,241,157,196,167, 13,119,204,187,239,101,247, 94,228,180,103, 85, 93, 74,238,
-122, 27,239, 11,130,196,190, 89, 74, 3, 65,139,247,111,234,106, 52,187,152, 37,129,200,203,193,152,211, 98, 54, 3,112,101,197,
-108, 4,133,235, 56, 58, 10,228, 87,202, 71,178,152,134,242, 75,119, 19, 27,222,225, 88,150, 31,254, 96, 54, 34,214,141,213,129,
- 30, 77, 63,251, 74,190,146, 28, 63,196,245, 21, 94, 41,241, 81, 90,138,137,238,120,103,135,232,114, 90, 51,145,166,250,161,204,
- 42,243, 28,191, 56,115, 80,172, 17, 36,201,106, 30,171, 49,165, 99, 58,215,215,101, 85,180,199, 46,155,165, 84,250,206,231,112,
-167,186, 84,202,229, 58, 84, 41,147,169,133,248,238,197,175, 91,119, 93, 18,221,187,232,146, 84,224,168,218,183,125,171,122, 80,
-169,146, 69, 62, 91, 77,165,197, 50,182,199,186,202, 90, 37,197,125,153, 76,161,221, 73, 67,102,161,181,186, 27, 75, 97,238,133,
-149, 75,174, 53,111,223, 86,211, 87,109, 54,213,185, 35, 77,146,237, 17,137, 14,200,167, 84,169, 77, 86, 23, 24,190,212,104, 85,
- 56,114,217, 98, 72, 75,241,159,101,166,228, 0, 16,240, 9,226,206,213,123,125,246,154,253,183, 26,179,248,203,225,125,202,139,
- 46,178,168,179,235,251,104,229, 22,255, 0,179,166, 52, 82,164, 41,247,246,211,115,158,110,161, 69,150,180,149,143, 14,155, 84,
-150,134,210,172, 54,180,249,236,206,213,123, 69, 61,143,214,236,216, 85,123,123,115, 55,238,195,166,195,122, 53,197, 19,108, 46,
- 26, 79, 16, 44,236,253, 26,226,128,250,223,131, 85,141,183, 84,234,188,232,106,173,199, 90,212, 89,142,137, 15, 83, 81,144,125,
-209,101, 40,228,141, 47, 10,102,180,149, 86,154,156, 24, 92, 29,108,129,135,154,226,204, 2, 44,137,115,111, 54,226,254, 93,182,
- 24,147,120,185,244,188,240,119,233, 7,195,249, 54,103, 93, 17,224,159, 17,114, 33,203,106,209, 45, 37, 92,121,173, 8, 71, 34,
-150,170, 58,150,200,101,166,150, 41,220, 61, 44,139, 5, 76,112,171,213, 71, 20,136, 39, 4,118, 6, 29,186,134,194, 27,148,195,
-193, 62, 44, 68,187, 21,106,102, 84, 30, 70, 85,205,142, 80,158, 87,201, 81, 7,153,192, 0,192, 80, 64,211,149, 66,165,180,203,
-136, 67,104,240, 27, 90,130,130, 17,226, 37,166,148,162, 1, 67, 73, 94, 66, 83,252,227,140, 39, 39,160,215, 35, 46,223,110, 95,
-179,178,219,105,233,244,219,195,120, 47,233,139, 89,112, 67,182,118,102,191, 77,247,149, 21,115, 41,196,213,175, 41,244,200,241,
- 80, 85,142,139,201,194,137, 9,207, 77,115,159,136,255, 0,164,222,229,137, 30,163, 15,134,190, 13,228, 85,153, 9, 87,213, 91,
-165,191, 87,204,167, 45, 40,174, 45, 76,182,204,169, 86, 14,216,198,101,228,255, 0,133,202,109,178,212,219,137,132, 41,194,148,
-158, 96,180,131, 37,202,248,118,182, 90,133,138, 42,118,185,221,117,133, 75,133, 32, 29,216,168,185,189,236, 14,163,109,129, 0,
-219,143,243, 63, 16,184, 90,150, 55,105,115,232, 42,165, 31,169, 77, 42,212,177, 32, 14,130, 18,226,224, 0, 53, 57, 0,216,238,
- 55,196,195, 45, 68, 22,211,205,146,176,133, 54,151, 20,132, 15,133,229,231,144, 40,224, 37, 5, 65, 39,151,155,148, 18,158,152,
-235,167, 48, 77, 75,205,166, 35, 10,241, 36,158, 64,164, 52, 60, 79, 9, 9,207, 48, 83,160,114,149,103,148, 96,103,182, 73,215,
-230, 7, 43,219,203,237, 79,157,190,246,230,253, 61,196,180,212, 75,181, 94,156,213, 51,101,233,182,221, 22,223,225,210, 69, 2,
-168,227, 11,169,218,181,125,167,162,176,212,122,212, 25, 8,142,218,126,176,154,244,170,211, 68, 7, 88,168,182,234, 82,177,213,
-203,167,233, 12,113,211,199,133,235,182,188, 54,240, 99,176,227,101,238,251,254, 37, 46,135, 81,183,246,214,113,190,247, 95,112,
- 47, 39, 98, 37,203,129, 54,157,199, 86,136,195, 22, 53,140,193,106, 91,252,225,149,204, 98, 19, 75,118, 84,180,165, 7, 18,169,
-178, 74,170, 69, 51, 56, 73,209, 23, 81,210,224, 42,219,115,204, 50, 5,109, 34,219,149, 87, 3,115,219, 16, 36,241, 71, 32,204,
- 22, 85,167,138,163,219, 12,129, 32,128, 37,228,152,177, 1,116, 88,216, 92,246,107, 17,218,230,195, 19,125,171, 92,246,205, 30,
- 90, 32, 84,171,244,168,149, 5, 16, 61,205, 83, 89,247,180,147,216, 56,218, 23,148,121,247,198,178,122,125, 22, 5,114, 40,154,
-138,154, 22,210,134, 80, 99,180,183,112, 79,162,136, 1, 95,118,123,235,152,220, 17,123, 63,247, 3,103,237, 26, 77,219,197, 85,
-255, 0, 51,114,119,174,160,202, 42, 21, 90, 12, 74,180,170,149,181,104,202,120, 37,197,211,222,171, 73, 81,114,229,171,182,181,
- 40, 63, 37, 88,100,184,149,120, 41,228,194,143, 75,153,101, 48,185, 91,107,153,134,155, 1, 8,109,165, 41, 41, 74, 64, 1, 32,
- 4,224, 99, 3, 80,103, 78, 51,204,101,157,185,180, 57, 21, 10,146, 34, 81, 20,149, 19,184,236,206, 95,148,177,131,216,104, 15,
-110,168,167,108, 60,209,182,123, 57,246,138,169,146,133, 91,117,142, 38,105,152,127,215, 43, 89, 24,145,251, 10, 7,241,197, 84,
-154,117, 14, 91, 72, 18,147, 35, 46,114, 97,104, 83,107, 42, 39, 25, 0,249,254,115,167, 66, 11,229, 77,120,141, 0,191,209, 21,
- 33, 25,229,241, 84, 82, 74, 83,146, 59,103, 90,221, 94, 77, 82,101,118,154,148,130,244, 86,221,202,228,255, 0, 60, 39,160,229,
- 89,254,119,200,247,211,203, 6,164, 88,105,150, 65,236,148,131,147,213, 56, 24,206, 62,221, 45,195,237,153,206, 43,169, 51,119,
- 73,100,164,125, 34, 72,211, 64, 97, 96,110, 1,191, 81,243,214,210, 12,210,138, 24, 41, 40,102, 89, 57,178,213, 33,105, 1, 32,
-244, 32,111, 96, 45,125,246,219,221,139,140, 97, 48, 58,236,154,131, 46,153, 46,146, 87,204,146, 82,132, 15,242,109, 36,167,167,
-132, 6, 59,119,206,190,200,170,100,132,160, 21, 41, 56, 1, 36,134,210,133,100,156,114,158,195,191,225,170,166,170,211,105,248,
-149,212,255, 0, 59, 56, 36,156,100, 15, 64,113,246,235, 24,171,213,226, 60, 10,142, 60, 84,244, 75,137,232,164,103,245, 65, 82,
- 71, 80, 58,100,117, 7, 79,209, 82,242,147, 69, 59,116,245, 27,159, 93,250,111,240,235,241,195,116, 85,144, 77, 56, 50,195,229,
- 27,121,122, 40, 22, 2,202,123, 1,254, 33,247,226,229, 38, 74,212,210,138,159, 75, 96, 2, 2, 89, 3,156,146, 72,192, 46,118,
-242,234, 6,176,138,131,208,130,143, 59,105,144,180,243, 97,114, 84,183, 74, 71,117, 30, 85,124, 41, 72, 32,103,160,201,234, 15,
- 82, 53,100,169,214,165, 52,218,131, 78,182, 91, 7, 5,229,115, 43, 41, 62,101, 9,253, 85, 99, 29,115,128,122, 16, 53,132, 78,
-168,190,250,242,169,137, 87, 33, 4, 48, 26, 80,111, 0, 28,172,132,175,226, 56, 4,128,162, 71,159, 77, 32,237, 34, 54,153, 1,
- 86, 59,239,247,110, 15,243,248,219,221, 40,164,162, 89, 84,201, 21, 66,136,191,195,112,122,116, 32, 11,143,131, 90,221, 78,196,
- 28, 93,170, 53, 86,220, 45,182,214,121,193, 56, 75, 24,202, 63,156,175,242,120, 8, 79,194, 49,147,208,172,140,107, 28,144,185,
- 14,165,196,243, 54,128,227,107, 95, 40, 1,247,148, 10, 82,160,148, 36,114,161,156, 18,146,126, 53, 99, 7,225,193, 26, 21,201,
-165,223,209,170, 87, 43, 69,196,145,224,199,109, 32, 21,142, 84, 37, 68,147,135, 50, 73, 61, 7,235, 99, 61,180, 42,150, 9, 83,
-110, 45,199,193, 66,138, 91, 83,156,173,178, 57, 84,149, 20,132, 36, 4, 47, 4,158,234, 33, 74, 7,212,107, 34, 85, 36, 91,174,
-195,111,187, 14, 2, 4,136, 88, 88, 50,239,114, 9,216,252, 64,239,107,131,210,253,111, 96,106,135, 9,241, 91, 90,152,154,224,
- 81, 10,117,183, 66,150,132,132, 32,132,199, 90, 18, 18,211, 62, 25,202,136,229, 86, 80, 71, 55, 78,180, 86,211,138, 90,218,109,
-210,132,173, 42, 40,195, 97,226,160,188,146,149, 61,202, 17, 24,252, 7, 4,147,128,148,146,114,179,143,162, 72, 66, 20, 93, 82,
- 91, 32,243,151, 0, 13,184,226,121, 87,250, 54,210,216, 3, 57, 40,248,112, 84, 48,188,119,233,112,142, 86,234, 29, 75,124,173,
-161,158,235,112,133, 50, 75,156,174, 56,246, 66,135, 48, 3, 10, 10, 0,128, 64, 10, 4, 29,108, 70,250,118,191,227,252,183,237,
-110,134,223,125,175,163, 80,140,221,139, 15, 94,194,214,251,186,251,205,239,140,110,108, 82,150,189,228, 33,212, 54,225, 10,142,
- 29,108, 40,168, 1,209, 40, 65, 63, 3, 28,169, 5, 42,200,193, 95, 80, 71,124, 14,168, 18,210, 86, 21,203,202, 82,160, 8, 0,
-169, 41, 24, 9, 81, 60,184, 87,196,165,224, 12, 28, 28,231,190,156,202,203, 43,100, 60,180,187, 46, 83,142,128, 90, 68,167, 20,
- 70, 74,148,144,167, 1,235,149, 35,157, 71,249,216, 72, 0, 37, 61,155,106,154, 76,153, 41,136,149, 4,169,231,163,196, 66,202,
-129, 9,117,245, 33,158, 98,160,112, 71,136,224, 32,158,132,126, 26, 84, 48, 2,250,134,223,233,191,126,157,125,253,112,216,241,
- 18,202,161, 65, 55, 29, 0,222,246,181,135,238, 29,126,252, 64, 99,219,127,112,181,112,123, 74,183,173,166, 28, 82,255, 0,130,
-214,206,212, 89,178, 82,176, 66, 90,159, 67,176,105, 47, 75, 67, 68,147,204,215,137, 82, 24, 35,204, 30,154,228,170,206, 51,216,
-231,166, 58, 99,237,251, 53,183, 60,121,238, 60, 93,220,227, 99,138,189,200,132,233,122,157,114,111,133,244,154,114,249,150,180,
-154,125, 6,168,171, 94, 25,104,172,228, 50, 89,161,161, 72, 29,130, 92, 0,116, 26,212,101,246, 56, 61, 59, 96,227, 63,241,212,
-247, 43,140,165, 5, 18,176,179, 8,144,144,122,130, 84, 18, 62, 32,155, 28,114,150,121, 50, 85,103,185,197, 66, 29, 81,207, 87,
- 80,202,123, 21, 51, 57, 82, 15,189,108,126,252, 8,178, 15, 79, 76,232,117,245, 36,142,192,224,252,191,179, 85,214,174,254,137,
-207,231,246,104,101,224, 28,231,161,235,248,233,200,126,252,104, 1,220,109,129,221,230,199, 97,142,189,189, 51,215, 63,159, 61,
- 14, 64, 0, 96,247, 29,126, 71, 68,169, 89, 62,120,252,245,208,202,238, 79,204,253,154, 92,108, 5,240, 48, 58,192,202,135, 67,
-215,243,231,249,198,133, 81, 3, 57,249,224,119,237,229,162, 28, 39,169,249,249,126,125, 52, 26,200,251,199,127,179, 74, 45,198,
-227,126,216,200,253,248,160,178, 50, 58, 3,211,207, 63,184,253,186, 90,240,163,147,159,195,236,210,210,184, 24,175,170,168, 61,
- 49,215,167,225,161, 16,112,122,156,116,213, 97,248,103,161,251, 51,164,216, 90,227,174,173,255, 0, 60,100,245, 38,214,190, 14,
- 73, 56, 0,142,152,239,145,247,116,213, 66,176, 7, 82,172,142,216,249,246,207,222, 52, 58, 84, 83,211, 29, 7,111,236, 58,242,
- 80,162,174,101, 47, 8, 61,128,206, 71,222, 7,174,116,131,222,222,236,101, 69,254,127,150, 46,141,168, 96, 0, 57,137,206, 73,
-254,145,243,192,215,213, 44,173, 73, 8, 39, 9, 56, 87,124,103,247,245,254,141, 80,105,188,242,146,174, 81,158,128,117, 61, 49,
-215, 25,244,209,205,167, 57,192,206,127,164,117,237,249,237,164,172, 79,207,166, 48,109,219, 21, 90, 56, 35, 35, 32,143, 46,221,
- 61,125, 15,125, 28, 57, 72, 79,160, 62,127,205,251, 62,125,244, 50,121,112, 0,252,253,190,154, 37,176, 85,142,192,124,135,244,
-231,207,166,177, 97,123,227, 24,184,178, 15, 76,159, 82, 63,163,247,234,184, 24, 57, 24,201, 57, 7, 31,135,219,161, 16,175, 35,
-231,219,250, 49,162,146,113,220,245,232, 65,198, 59,246,199,175,246,233, 22, 22, 36, 97, 50,187,220,155,223,231,255, 0, 56, 37,
- 43, 8,199, 58,186,159, 32, 59,244,249,104,146,238, 70,113,140,249,250,227,183,159, 77, 4,113,144,190,153, 63, 44,227,184,200,
-252, 53, 81, 36,116, 32,231, 29,201,251,125, 7,150,146, 98, 58,223,225,130,219,221,123,117,193, 41,119, 24,248,249, 64, 32,224,
-227,175, 94,160,122,244,206,167, 39,236,166,220,118,247,115,129,157,165,148,252,148, 73,171, 88, 74,169,237,245, 93, 33, 73, 46,
- 54,186, 44,133, 38, 1,113, 61, 74, 65,132,228,126, 92,227, 35,168,212, 42,118,215,108,110,189,211,185, 98,219, 86,181, 49, 83,
-231, 73, 5,229,186,227,137,139, 78,167,194, 66,128,145, 85,173, 84, 93, 79,135, 74,164,183,252,247,156,234,162, 66, 26, 67,174,
-148,160,203, 23,217, 2,214,215,112,241,106,238,110,209,215,119,102,143, 34,181, 87,151, 2,239,168, 76,172, 75,110,139,108, 53,
- 53,136,201,133, 34, 21,179,239,238, 5,184,218, 82,218, 11,139,119,149,215, 15,196, 91, 66,126, 17, 4,227, 9,104,167,142,154,
-137,228, 6,169, 95, 86,155, 95, 74, 21, 96, 75,158,136, 11, 5, 3, 81, 26,142,194,230,246,184, 60, 26,124,214,135,136,167,204,
- 41,105,100,124,178, 88, 36,167,158, 80, 44,129,137, 73, 35, 0,159,180,193,212, 2, 20, 18,129,238,218, 65, 23,235,214,231, 75,
-174,219, 59, 83,184, 21,235, 93,151, 30,184,224, 91,147, 13, 27,193,104,188,236,105,178, 18, 35, 38,162,134, 82, 50,234,163, 33,
-213,188, 0,207, 86, 70,181,171,102,120, 8,183,217,222,155,115,124, 46, 59,138, 53,229,105,208,108, 90,123, 86, 21, 10, 66,223,
-155, 42,179,121,215, 33,166, 69,211,124,221,210, 95,234,244,211, 45,231, 83, 25,177,128,216,198,122,164,107,107,162,239,150,195,
- 32,148, 57,188,187,110,233,193, 75,141, 34,227,167, 60,130,146, 48,180, 45, 33,226, 20, 8, 39, 35,207, 26, 14,226,227, 7,134,
- 29,183,182,107,183, 12,173,200,163,213,169,246,180, 23, 39,205,163, 89,141,125,115, 86, 84,102,186,172, 83,169,144,129, 84,133,
-127,178,128,126,237, 65,225,142,150,158, 82,226,162, 33,169,116, 0, 89,111,114, 69,200, 23, 59,157,133,183, 61,135, 91, 99,179,
-242,190, 62,226, 28,135, 33,205,114,204,161,165,203, 70,109,205,246,202,132, 82, 30, 74, 87,138, 56,249, 76,250,117, 70,177, 5,
-155, 76,136,234,116, 85, 84, 45,129,101, 97,144,207,224,179,103,238,181, 56,183, 81,123,208,158,152,250,158,156,245,169,125,220,
- 20,116, 60,235,202, 42,121,197, 48,137, 42, 66,150, 73, 60,184, 78, 0, 56,244,208, 91,129,114,240,113,236,166,216,187,155,114,
-235, 20,202,117,183, 21,229,201,153, 69,162,189, 37,138,222,236,111, 13,232,227, 74, 84, 26, 29, 62,109, 77, 74,149, 44, 56,247,
- 39,140,233, 40,139, 17,165, 41,231,112, 0,207, 27,248,128,250, 66,114,226, 82,170, 52,190, 16,184,115,190, 43, 19, 3, 14, 52,
-141,201,220,155,106,174, 41, 84,247,112, 66,100,195,183, 41,209, 86,185, 78,160, 14, 96, 30,113, 8, 56,248,186,103, 81,143,226,
- 11,136,157,247,226,127,114,100,238, 30,253,238, 45,126,244,188,158,105,214,162,199,173, 62,168,205, 81,169,238, 40,172,211,168,
- 86,223,192,221, 6,154, 50, 7, 43, 76,160,168, 1,206,181,158,186,127,203, 56,124,207, 46,161, 18,211, 34,253,166, 54, 14, 6,
-215,180,103,204, 24,247, 50, 42,129,179, 89,197,215, 20,239, 27,253, 36,248,135,244, 13, 71, 12, 80,113, 94, 97,196, 20,179,105,
- 38, 7,168,168,108,188, 50,127,118,243,135, 96,181, 38, 34,111, 20, 96, 58,169,220, 60,100, 95, 24, 39,180,115,137,253,201,226,
-247,127,170,251,223,186, 82, 27,254, 16, 94, 74,118,124, 26, 44, 87, 92,118,155,105, 91, 81,121,162, 91, 54,141, 31,196, 63, 13,
- 58, 13, 59, 9,230,192, 47, 62,243,210, 23,241,186,117,175, 92, 57,196, 97,202,237,211, 57,208,178,252, 42, 34,147, 24, 1,211,
- 46,149, 5, 18, 60,253, 6,173,251,228,231, 53,219, 29,128, 65,247, 42, 12, 6, 79, 41,200, 5, 73, 4,129,215,191,174,178, 14,
- 26,216,118, 93,122,230,134,202,121,164,204,167, 68,139, 29, 9,238,183,223,119,194,101, 41,207,153,113,104, 31,126,172,212,141,
- 41,120,124,197, 24,209, 26, 34,128, 46,118, 28,192,119, 59,147,183, 82, 73, 39,169, 36,239,142, 53, 53,117, 21,115,214, 86, 85,
- 74,211,213, 84,180,178, 72,231,118,103, 42,204, 73,176,238,123, 0, 0,232, 0, 27, 98,109, 63, 71,223,128,234,125,203,195, 15,
- 16,156, 74,220,244,174,123,199,114, 99,200,218,237,155,145, 45,177,136,116,123, 98, 92, 90,221,217, 83,134,149,167,225, 85, 82,
-187, 18, 29, 56,186, 15,197, 30,152,164, 14,138, 57,216,168,246, 17,161,213, 31,142,228,117, 50, 90,146,235, 97, 10,230, 75,225,
- 8, 56,228,115,185, 67,169,229, 41,229,239,204,112, 8, 58,236,151, 0,219, 99, 15, 98,184, 76,225,239,107,105,113, 83, 17,187,
- 99,109,109,231,167,180,148,132, 41, 85,138,164, 38,234,181,105, 14,116, 28,206,174,124,199,201, 39,174,123,233,168,226, 23,134,
-171,150, 93,110,226,220, 91, 38, 61, 58,161, 65,144,255, 0,214,146,168, 44, 62,182, 43,237,206,148,240,247,152, 52,168, 9,103,
-146,167,207, 53,197, 58,202, 3,136, 63,166, 80, 94, 2, 65, 52,151, 19,209, 54, 99, 28, 89,138, 38,170,131,118,127, 82,142,117,
- 40, 61, 55,137, 74,160,247, 13,239,215, 29,145,225,180,210,240,102, 89, 6, 69, 36,194, 24, 42,163, 73,100,212,214, 95,105,101,
- 94,110,228,237,169,174, 22,254,128,108, 0, 3, 82,108,234, 84,116, 52,134,210,201, 41,147, 33, 50, 29, 8,240,203,143,186, 2,
- 0, 83,220,201,207, 58, 67, 40, 7, 36, 0, 19,132,156,107, 99,104, 52, 8,210, 93, 98,116,150,210, 36,193,113, 47, 65, 13,129,
-225,199,203,101,135,198, 79,235, 74,113,133, 41, 10, 89, 5, 32, 16,148,242,167, 36,170, 87, 15, 59,203, 71, 82, 20,230,223, 76,
-148,128,134,151,205, 74,153, 75,168, 33,105,194, 64, 39, 19,144,162, 0, 37, 71, 41, 4, 99, 28,189,244,241,218,123, 83,186, 79,
- 41,180, 35,109,238,133, 20,114,133, 45,113,162, 37, 61, 14, 28, 74,221,114,104, 72, 79, 81,147,216,245,198,162, 81,100,213, 74,
- 64,146,146, 66, 91,182,134,244, 22,232, 13,237,215,211,210,214, 24,178, 78,125, 70,186,229,108,198, 24,237,177,102,158, 32, 0,
- 54, 4, 18, 91, 96, 64, 3,222, 5,177,113,161,208, 12,134, 16,211, 10, 90, 34,143,242,202,115,224,151, 49,158,230, 50, 29, 74,
-147,238,236, 18,160, 10,191, 89, 64,114, 35, 1, 74, 86,178,171,163,112,237,237,158, 85,185, 95,170,208,239,234,203,242, 38,132,
- 82,227,109,214,216,222,251,153, 34, 51,212,224,196,176,253,106,153, 99,209,229, 46,149, 79, 64,228, 45, 41,208,217,144,176, 88,
-142,149,168, 40, 7,150,209,216, 45,211,158,164, 57, 54,149, 73,183,217, 80,229, 46,213,234, 77, 72,113, 41, 0,142,127,114,166,
-182,234,138,136, 63, 8,231, 66,124,250,119,214,136,251,111,106,123,151,194, 15,179, 87,116,183, 91,103,247, 82,225,178,183, 81,
- 55, 54,223, 91, 16,111, 43,121,168,212,249,212,202,101,201,112,177, 6,177, 22,136,227,168,117,112,106, 47,198, 43, 67,115,185,
-253,229,144, 74,152, 83, 75,194,132,166,147,135,179, 55,167,146,177,104,218, 8,163, 49,131, 44,171,101, 82,242, 36,105,101, 37,
- 93,174,238, 0,210, 13,137,213,184,190, 34, 25,199,137,124, 27,150, 48, 25,157, 89,207,105, 98, 73,154, 90, 74, 25,209,101,153,
- 68, 78,197, 69, 87, 38,162, 8,201, 42, 11,115, 17,137, 23, 64, 22,225,150, 51,124,116,238, 62,206,240, 93,121,221, 53,125,139,
- 98,254,183,183,166,236,173,213, 46,123, 18,139,190, 78, 91,107,223,205,183,143,115, 74,157, 85, 27,132,254,217,209, 34,200,137,
-176,244,148, 57, 59,154,223,149,118,189, 34,254,168, 6,195,212,202, 37, 1,178,229,101, 17,220,184, 46,123,134,236,174, 85,110,
-107,134,183, 87,184,110, 58,228,233,117, 42,229,201, 93,156,253, 74,191, 90,168,206,125,114, 39, 77,169, 84,100,184, 86,235,239,
- 72, 90,214,224, 4, 37, 74, 86, 72, 39, 36,218, 42,181, 73,149,138,165, 74,181, 92,157, 58,167, 88,172,212,165, 86, 43, 53,106,
-148,217, 85, 42,173, 98,179, 80,115,198,159, 87,171,212,230,186,183,234,149, 55,158, 37, 78,200,125,199, 29,112,245, 90,142, 6,
-128,109,101,110, 97, 36, 6,179,241,128, 71, 49, 62,185,242, 26,176,114, 30, 31,163,201, 33,178, 14,117, 76,191,106, 66, 5,197,
-194,141, 9,251, 40, 52,128, 22,229,136, 85,214,206, 85, 72,164,252,120,250, 73,120,157,244,128,204,169, 36,227, 28,238, 99,195,
-217, 60,113, 67, 69,150,137,165,120, 17, 41,193, 88,102,171,119, 98,213,213,195, 83,191,180, 77,245,112, 73, 61, 64,160,130,138,
- 25,228,133,136, 90,148,234, 57, 93, 9,121, 9, 80, 90, 91,144,148,188,144,176,114,149,165, 14, 2, 18,224, 80, 4, 40, 96,130,
- 50, 8, 58,204,169,155,143,113,209,211, 21,169,110,192,185,160, 68, 11, 17,232,183,173, 53,187,170,154,198, 82, 82, 61,205,249,
-174, 9,212,229, 15,255, 0,131, 48, 54, 63,248,163,211, 24, 96,228, 10, 88,201, 41, 7,162,137,244,238, 63, 57,213, 53,164, 43,
- 36, 14,185,200,252,159,150,159, 39,166,130,161, 52, 77, 10,202,163,166,160, 13,137,238, 13,174,167,222, 44, 71, 99,138,111,135,
-120,167,136,248, 74,170,106,190, 27,206,170, 50,105, 42,192, 74,133,134, 66,176,213, 68, 13,249, 53,148,230,244,245,180,228,253,
-170,106,184,166,129,255, 0, 94, 54, 24,116,231,239,189,238,150, 89,133, 64,254, 15,237,252, 36,248,206,123,141,131, 77, 48, 29,
-151, 33,230,210,209,151, 80,170, 84,195,206,184,250, 26, 64,229, 8, 74, 50,160,149, 45,107, 8,109, 8,177,171,117,119, 10,108,
- 7,169,170,189,110,207,170,159, 74,208,253, 57, 21,201,173, 71,113, 46,161, 40,144,133, 73, 74,196,165, 54,232, 78, 92,111,222,
- 60, 37,149,168,148,124, 74,206, 0,166,219,230, 33,120, 36,117,206,124,251,143,219,175,170, 91, 74, 90, 19,207,241, 32, 19,200,
-147,240,156,250,254,205, 37, 29, 21, 36, 32,133,167, 64, 24,223,236,130,111,182,228,145,114, 71, 98, 73, 54,218,248,156,102,190,
- 58,120,209,157,242, 99,172,241, 87, 62,130,146,154,148, 80,197, 71, 69,153,213,101,153,108, 20, 34, 40,225, 52, 84,185, 86, 89,
- 37, 30, 91, 75, 70,241, 68,139, 37, 45, 45, 36, 84,242,232, 13, 44,108,196,177,172,227,188,193, 37, 92,169, 75,105, 8,109,150,
-208, 16,219,109,131,209, 13,161, 0, 37,180,228,147,128, 7, 82, 79,114,117, 72,146,163,205,129,140, 14, 81,216,140,129,158,184,
-237,223, 94, 84,177,158,216, 4,224, 31, 32, 73,237,246,107,233, 9, 80, 79, 50,129,198, 79,194, 64, 35,215, 61,126,205,109, 95,
-111, 47,109,189,216,170, 85, 2,233, 91,105, 10, 6,221, 0, 3,160, 30,158,131,165,177,229,212,133,160,131,128,125,112, 51,211,
-236,243,208,105, 11,230, 60,201, 8,109,191,139,226,248, 78, 71,159,207,251,116,122, 20, 20, 50, 7,145,200, 61,199,151, 95,191,
- 67,169, 36, 55,151, 49,215,161,201, 4,252,137, 0,246,233,161,179,111,219, 6,177, 6,221,251,126,255, 0,227,138,110,123,186,
-192, 82,130,150, 8,200,194, 73, 3,182, 73, 31, 61, 75,227,232,215,112,195, 99,223,219, 35,198, 38,227,110,133,131,105,238, 13,
-175,184,202,183,248,125, 93,173,121, 80, 32, 92, 54,253,118,207, 69, 45,203,170,246,167, 78,131, 84, 97,109,174, 60,137,213,122,
- 35, 78,132,242,171, 48, 16,160,164,173,180, 40, 68, 24,149,143, 8, 54,158,138, 74,147,205,144,144,181, 99, 24, 3, 29, 15,109,
- 77,123,217,103,184,103,103,189,143,246,187,116, 6,164, 81,171,123,149,186,219,227, 85,173,205, 79, 52,105,170,164, 82,174,168,
-214,139, 78,199,144,180,167,195,143, 48, 82, 93, 67, 79,160,169, 10,102, 26,210,135, 57,138,185, 98,156, 99,155,193,146,101, 73,
- 89, 80, 12,138, 37, 10,177,139, 6,150, 66,173,201,141, 9,232, 76,161, 9, 36, 16,136, 25,200, 33, 72,197,129,225,126, 86,115,
-110, 47,162,164, 72,185,210,136,228,101, 7,117,187, 20,132,234,244, 26,101,111,190,214,223, 28,193,223, 63, 97, 79, 4,115,184,
-194,185,209,179, 27,239,185, 54,175, 14,116,135,150, 47, 93,165,163, 83,105,149,186,237,191,122,205, 66,164,162,196,218,237,215,
-185, 31,144,220,155, 36, 48,243, 62, 60,137,208, 39,207,167, 56,164, 69,140,229, 65, 78,120,204,111, 6,212,251, 26,125,155,123,
-125, 58,216,185,109,203, 55,136,138,110,227, 80, 37,198,122,216,220, 26, 55, 21,119,221,175,121,219,245,200,177,194,145,114, 81,
-170, 86,149, 42, 2,105, 21,166,212, 60, 80,227, 40, 75, 45,172,132,134,150,223,194,108, 27, 71,113,203,157, 91,184, 42,197, 34,
- 81,147,122, 93, 21, 71, 34,115, 36, 46, 82,152,170, 10,100, 82,181,243,128,150,154, 17, 84,177,200, 6, 11,105, 81, 80, 1, 58,
-222,155, 74,229,118,163, 38,164,121, 90,136,212, 8,204, 83, 34,180,202,131,110,158, 98, 36, 84,159, 83, 97, 28,172, 45, 43, 91,
-109, 37, 72,230, 95, 43, 74, 4,164,144, 53, 71,103,220, 99,198,175, 58,200,217,245, 68, 48,132, 0,197, 3,242, 22,221, 8, 44,
-154,100,147,169, 93, 83,188,174, 86,218,156,144,111,212,220, 79,225, 79, 9,228, 78,100,161,201,225, 89, 2,172,143, 33, 82, 89,
-164,178,130,234, 9,180,107,204, 58,149, 35, 85, 80,157, 55, 14,113,212,219, 99,136,234,228,106,101, 18,155, 87, 66, 43,171,106,
- 35, 20,230,230,213, 86,165, 86,106, 81,233,145,219,143,245,157, 94,162,202, 82, 39,213,158, 8, 74,228, 72,240,144, 31,125,213,
-185,225,160,171,151, 78,181,189,187, 22,141,226,232,140,220,143,169,234, 75,115,193,110, 28,247, 27, 75, 82, 94,236, 27,137, 40,
- 30, 71, 22, 72,232,147,202,162,122, 0, 78,185, 81, 30,244,240, 36, 85, 11, 97, 75,143, 66,134,205, 38, 36,144,114,151,170,110,
-182,100, 75, 96, 4,171,162,144,234,163,165, 65, 32,245, 74,178, 8, 26, 10, 61,219, 41,136, 17,203,239, 31,124,142,204,154,156,
-175, 13,210,158, 95,136, 52,201,108,142,169, 62, 50,148,126, 69,191,150,148,202,184,199, 54,167,208, 37,169, 53,106, 7,153,101,
-243, 27, 0,162,250,143,152, 27,234, 59,146, 0,182,199, 21,248,142,186,130, 68, 16, 73,204, 22, 91,197, 37,200, 58,148,200, 0,
- 63,105,108,186, 23, 99,179, 29,212,244, 27,233,106,113,119,182,151,183, 20,183,231, 10, 22, 90, 95,184,110,205,174,179, 85,117,
-110, 45,213, 17,214, 92,183,173,234,168,126, 51, 38,204, 66,193,230,145, 91,105, 50,153,247,130, 7, 35, 78, 18,214, 74,210,172,
-108,130,235,136, 99,157,106, 88,230, 57, 24,206,126, 30,184, 29,122, 99, 35,174,184,239,193,253,153,180, 27, 99,196,214,228,110,
-244, 17, 42,218,187,248,132,179, 97,219,181,104, 40,144,201,180,230,222, 73,172,174,167, 38,226,195,235, 46,192,175,213,208,195,
-104,125, 33, 94,236,228,180, 23,194, 91,114, 74,129,232,125,205,113, 42, 50,221, 64,113, 73, 41, 74,147,200, 62, 21,165,105, 39,
- 60,201, 61,142, 2,178, 62, 90,181,184,106,180,102,212,111, 59, 48, 18, 60,132, 50, 0, 46,130,202, 66,144, 55,247,134, 61, 71,
-223,105,215, 25, 75,194, 85,210,100,173,193,144,212,211,209, 46, 91, 68,149,130,172,222, 99,154, 8,239, 94,118,188, 98, 35, 41,
- 2, 1, 17,229,242, 66,157,152,184, 14,149, 74,248,109,178, 71,136, 2,123,168,115, 2, 14, 14, 57,186,118, 32,228, 31, 62,191,
- 45, 97, 51, 47, 98, 23,151, 29, 87,134,165, 30, 85, 12,144, 73, 56, 9, 36, 28,115,140,128, 50, 48,190,217,242,214,190, 84,238,
-181,120,174, 53,206, 10,138, 20,251,121, 81,248,208, 14, 28,111, 62,153, 35,167,145, 94,177,148, 93,188,217,104,175,152, 41, 36,
-165, 46, 12,115, 32, 15,137, 25, 36, 18,180, 96,127,181,202,144,175, 93, 74, 99,129, 80,108,110,126, 63, 15,221,249,252,113, 22,
-167,164, 88,198,195, 87, 75,254, 23,239,215,227,252,142, 54,149,187,161, 46,158,100,184, 10, 85,203,158,101, 4,148,156,144,121,
-194,199,192,114, 21,229,141, 90, 42,114,158, 91,107,145, 76, 8,113,208, 10,213, 17, 74, 45,161,212,100,229, 76, 41, 32,144,224,
-234,174, 78,161, 92,159, 14, 20,113,166, 18, 37,213,201,202, 92,120, 40, 0, 57, 92, 36, 41, 65, 39, 56, 67,160,145,146, 15, 76,
-158,152, 57, 32, 19,157,102,144,110, 4,175,225, 82,207, 50, 70, 72, 4,148,117, 57,200,207, 83,144, 6, 64,237,203,243,234,149,
- 69, 58, 78,154, 36, 23,244, 61,193,236,111,235,211,249,140,110, 67, 81, 45, 20,162,104, 13,237,177, 83,114,174, 63,101,198,215,
- 30,253,136,189,193, 83,190, 47,109,215,101,185,200,130,228,102,194, 92, 90, 75,164, 58,231, 42,146, 73,229, 80,113, 35, 60,189,
-138,136,248, 74,128, 86, 58,234,234,212,199,221, 1, 78,200, 88, 33, 68, 16,142,102, 27, 82, 21,132,242, 40, 55,146, 82,112, 59,
- 17,133, 39, 33, 64,231, 88, 13,198,183, 11, 6,169, 79, 9, 91,204, 2,185,108,130,176,149,181,132,149,201, 71,135,250,206,161,
-180,146,226,123,173, 0,158,139, 29,113,232,181,233,174, 28,169, 77,128,142, 71, 27, 45,169,120, 83, 43, 79, 55, 50,121,143,249,
- 64, 84,147,211,161, 24,193,202,134, 98,211, 43, 81,204, 98,153,246,107,216,216, 88,131,109,238, 59,250,223,241, 6,248,157, 80,
-188,121,165, 42,212, 83, 34, 68,192,217,212,145,169, 24,117,235,185,235,117, 35,175,186,197, 67,227, 22, 64, 10, 60,141,168,243,
-128, 10,146, 74,212, 91, 65, 32, 37, 74, 41, 42, 91, 32,227,252,152,234, 9,207, 49, 35, 87,149, 84, 92,140,217, 90, 25, 74, 60,
-117, 4, 33, 47,165,213,199,195,201, 42,109,160,129,149,198,144,226,142, 19,206, 49,147,240,163,148,243,105,158,139, 82, 82,138,
- 1,113, 92,142, 19,203, 33,183,156,229, 70, 87,204,203,109,242,184,163, 29,174,101,225, 33, 28,203, 82,148,148,148,231, 35, 87,
-196, 84,214,134,138,188, 73, 40,112,151,217, 83,209,203,109,180,180,164,252, 94, 34, 22,162,183,100,103, 28,223,168, 83,130,148,
-143,136,157, 47, 28,195,190,192, 88, 95,247,119,235,183,190,247,177,191, 77,244, 42,224,209,114, 95, 93,183,232,119,183,196,245,
- 29, 59, 16, 63, 12,178,167, 82,117,101,214,158,116,143, 5, 24, 90, 23,206,135,176,149, 30,171, 28,152, 67,133,148, 37, 68,130,
- 72, 82,136,233,216,106,111, 20,187,199, 75,216, 78, 31,183,187,123,107, 14, 3, 11,107, 54,178,243,187,194, 90, 57,118, 69, 74,
- 29, 37,232,118,227, 17, 80,181, 15, 26, 67,151, 45, 70,140,218, 83,159,252, 98,186,121,105,253,153, 86, 47, 7, 9,115, 32, 43,
- 45, 41,124,222, 48,200, 88, 62, 39, 83,200,159,140,117, 57, 42,192,233,231,168,229,253, 33,126, 36,209,101,112,247,183,156, 51,
- 81,166, 20,220,123,253,118,139,190,234,105, 14,114,189, 19,107, 54,170,107, 47, 14,101, 54,172, 24,245, 77,192,149, 76,140,166,
- 92,229,230,106,223,125, 65, 36, 5, 99,118,157, 26,170,122,122, 52, 39, 85, 75, 0,125, 66,117,118, 29, 62,202, 6, 59,122,116,
-190,198, 41,159, 87,166, 83,147,230, 89,163, 16,134,138, 38,100,189,183,152,128,144,169, 29,124,210,178, 41,223, 96, 73,219, 16,
-244, 92,153, 82,150,236,202,131,161,234,140,247,159,157, 80,125, 32, 97,234,132,215,151, 38,107,224, 96,116, 92,167, 94, 87,207,
-155, 66,172,131,211,207, 61,115,246,127,110,136,115,169, 29,135,115,161, 87,230,174,152,245,239,216,121,254,124,181,105,160, 0,
- 11,108, 63, 45,182,199, 34, 42,236, 13,205,207,174,253, 14, 6, 86, 50,113,249, 63, 47,150,135, 81, 10,242,192,235,159,159,204,
-250,104,133,250,130, 20, 72,252,244, 26, 21, 71,161, 62,125, 79,223,165, 20, 18, 70, 21,192,234, 32,117,249,224,103,231,246,124,
-180, 51,131, 57,234, 1, 4,245,209, 90, 17,194, 14,122,247, 57,199,203,231,165,199, 81,129,129, 85,211,167, 82, 79,115,242,244,
-199,166,116, 42,200,207,108,117,199,219,215,207, 68,185,242,238, 7,159,111, 95,223,160,150, 79,126,152, 61,193,243, 61,127, 63,
-118,148, 65, 97,210,247,249,255, 0, 92, 12, 82, 36, 2,122,129,247,254,255, 0, 61, 45, 81, 95,235,119,242,252, 62, 95,159, 93,
- 45, 31, 3,108, 86, 29,251,103,229,162, 52, 42, 87,219, 61, 15,145,199, 76,131,229,170,129, 68,158, 94,108,116,207,111,159, 94,
-190,189,244, 71, 2,221,108, 70, 14,195,173,190, 63,195, 7, 54,123, 21,125,223, 63, 67,162, 7, 95, 35,246,121,232, 38,240, 58,
-100,147,243,252,247,254,173, 22,149,245,244, 62, 94,126, 95,102,146,193, 58,116, 56, 41,161,203,212,156, 99,200,252,243,216,104,
-214,200,243, 0,253,248, 39, 64,165, 89, 29,191, 17,231,231,131,157, 86,108, 20, 44,168,172, 16,172, 1,159, 47,179,238,210,109,
-233,109,135,242,198,113,112, 10,193, 1, 67, 4,249,129,223,237, 35,243,215, 68,167, 3,168,200, 39,161, 29,191,102,122,118,208,
-169, 81, 32, 12, 12,140,119,237,140, 1,140,143, 60,232,128,172,100,156,100, 96,228, 96,147,246, 99,229,253, 58, 79, 24,193,141,
-168,119, 61,113,211,239,233,131,248,104,132, 28,224,245, 56,235,243,233,235,143, 45, 0,133,103, 3,168, 4,250, 14,255, 0,105,
-213,126,108, 17,133, 41, 57,207,234,250,255, 0,195, 72, 55, 94,183,198, 45,251,240, 96,194,212, 65,206, 15, 99,156, 99,167, 83,
-223,166,178,107, 86,133, 46,228,174, 83,168, 84,230,131,242,231,203,102, 43, 41, 89,195, 69,215, 20,122,190,224,255, 0, 37, 29,
- 13,165,110, 56,175,230,182,210,136,235,140,226,141,149,172,148, 40,242,164,140,243, 0,115,229,231,167, 83,107,106,201,163,215,
- 27,102, 59,168,106,161, 80, 68,168, 17,165,168, 14,120,254,244,202,121,148,223, 55,119,212,203,110,165, 63, 53,159, 44,231, 74,
-177,164,138,154,105, 34, 0,200,138, 72,248,250,159,147,183, 77,240,231,146,208,195,153,231, 25, 94, 91, 81, 57,166,167,174,158,
- 24,157,199, 85, 87,117, 86, 43,125,181, 16,108,183,219, 81, 23,218,248,222,138,101,205,111,109, 53,188,139, 14,206, 6, 92,185,
-106, 97,219,158,165, 20, 33,169,181,218,147,105,229, 75,211,229, 39,172,106,107, 74, 42, 76, 88,249,229,105,177,148,165, 78,169,
-197,168,202, 52, 58,189,201, 45,107,152,251,134, 43,136,241, 26,136,133, 56,212, 96, 73,206, 22, 82,160,183,187,255, 0, 56,129,
-159,230,233,172,181,109,231,101, 77,113,174, 96, 84,151, 11,234, 90,143, 58,214,238,114,165,184,181, 28,173,106, 39,185,234,115,
-211,167, 77,109, 61,163, 22, 44, 22, 27, 91,137, 83,171, 74,128, 82, 1,207,234,158,188,201, 56, 29,255, 0, 15,232,173, 43,102,
-142,152, 57, 86,230,207, 39,153,152,245, 98,109,185,219,238, 30,131, 97,176,176,238, 92,135,135, 96,160,165,130,158,154,139,217,
-233,169,194,164, 80, 40,217, 20, 91,173,247,102, 39,119, 98,117, 51, 18,204, 75, 18,113,157, 88, 27, 77, 6,162,243, 10, 91, 45,
-173,210, 17,204,134,249,192, 79, 80, 63,214,237,246,249, 13,116,123, 98,182, 58, 4, 74,205, 30,167, 79,136,195, 21, 8,242, 27,
-109,110,132, 5, 41, 73, 87,235,167, 43, 4, 56,130,140,228, 96,131,208, 99, 90,225,182, 40, 67,142, 48, 16,148,176,211,139,108,
-165, 13,164, 41,196,146, 1, 0, 28, 0,122,103,200,227, 93, 65,218,186,205,175,107,194, 23, 45,203, 58, 29, 22,218,182, 96, 72,
-174,220,149,170,131,237,177, 22,155, 74,165,199, 84,185,211,101,200,116,132,182,210, 35, 52,242,142, 78,112,156, 0, 78, 6,171,
- 12,238,173,234,222, 88,228,156,164,106, 9, 35,215,160, 2,195,177, 61,189, 58, 92,224,103,185,230,105,150, 32,167,167,102, 26,
-193, 82, 7,165,183, 6,219, 90,219, 1,190, 56,205,197,103,181,207,127,173, 13,203,184,118,215,133,170,141, 31,104,108,203, 18,
-227,169,219,114,110, 38,173, 59,114,175,120,222, 85,138, 12,199, 41,181,154,156,153, 53,154,123,241,232,148,133, 84,163, 74,110,
- 60, 86, 88, 82,220,105,176,227,238,146,190, 68,232,182,233,123, 64,184,141,223,154, 60,154, 6,249, 57,181,123,167, 78,146, 84,
-227, 18,107,187, 67, 98, 81,110, 42,116,165, 0,145, 34,159,117,218,148,120,114, 99,114,227,163,101, 42, 70, 84,115,229,173, 86,
-221,155,170, 61,231,185, 27,133,121, 69, 66, 4, 43,174,251,188, 46,104, 37,150,148,210, 87, 78,184, 46,106,173, 86,152,226, 26,
- 95, 86,138,160, 76,140, 84,147,241, 37, 74, 32,128, 65, 26,194,202,138, 27, 72, 66, 66,146,164,249,147,216,250,231,207, 87, 69,
- 31, 7,240,224,142,134,170,163, 33,165,108,202, 5, 70, 19,180, 17,154,132,144, 1,186,205,167,154,132, 27,219, 75, 46,158,139,
-101,216,113, 46,113,196, 25,150,101,152,213,213, 75, 88,211,164,146,185, 69, 33, 74, 4,212,116, 0, 45,109,150,194,253, 77,174,
-196,146, 78, 25, 29,226, 14, 57,121,205,113,232,130, 3,142,211,225,184, 35,161,210,251, 60,158, 24,194,153,113, 74, 39,194,232,
- 48, 51,240,246,211,245,236,251,162,194,185,248,143,179, 45,121, 83, 19, 21,250,213,203,107,181, 9,165, 71,118, 87,191,186,213,
-102, 27,130, 3, 81,152, 66,148,243,239, 41, 41,105, 3, 24, 5,238,101,124, 41, 58,101,247,161,159, 22,181, 69,168, 39, 42,110,
-109, 13,166,193,234, 48,228,124, 36,164,245,239,145,174,129,251, 9,174,186, 5,165,237, 66,225,233,203,134,153, 75,169,179, 93,
-122,232,183,105,102,171, 29,185, 77,211,107,245, 27,114,161,245, 77, 90, 19,110,130,148, 84,153,121,149, 6, 86, 70, 82, 94, 37,
- 63, 16, 4, 76,106,145,166,225,202,216,163,115, 19,154,118, 0,141,244, 17,182,175, 48,111,179,107,216,131,211,124, 55,240,245,
- 50,102,121,237, 29, 36,238, 33, 74,218,128,140, 64, 27,115, 13,172,189, 64, 38,246, 91,130, 3, 17,112, 70,216,253, 60,108,203,
-170, 61, 38,218,163, 69,169,210,215, 6,123, 52,168, 12, 42, 18, 30, 74,149, 13, 45,197,109, 30, 2,136,232, 84,156, 96,142,195,
- 24,211,173, 99,205,135, 95, 67,163,195, 82,216,105,226,174, 71,124,148,149, 2, 51,235,129,141,105, 44, 90,227,175,203,110, 58,
-159, 60,234,145,200,227,139, 86,113,133,225, 74, 81,201,236,156,159,187,231,170, 28, 4,113, 50,246,254,220,188, 78,211, 27,167,
-174,157, 67,217,253,200, 98,198,160, 62,226, 84,149,213,154,110, 59,134, 85, 65, 74, 80,193, 38, 67, 46,128,145,156, 36,167, 56,
-206,171,117,160,130,138,122, 97,237, 82,206,210, 2,164, 74,193,245,233, 0,234, 42, 2,170,144,127,100, 1,189,173,233,213,116,
- 57, 94,103,152,229, 89,246,102,140,213, 17,228,201, 12,179, 73, 36,128, 58, 9,234, 18,153, 52, 40,182,162,210, 72,183, 8, 0,
- 85, 5,141,128, 24,234, 84, 22, 97,190,160,211,140,160, 37, 73, 9, 37, 39,151, 35,203, 4,118, 61, 53,114,153, 78,153, 71,107,
-235, 40, 14, 61, 50,158,222, 60, 88,104, 36,186,207,108, 43,161,248,155, 29, 63, 29, 97, 20,201,202, 47,103,152,116,235,202, 79,
-126,158, 94,167,229,242,211,203,110,200,247,142, 86,186, 45, 43, 28,139, 74,199, 69, 36,140, 40, 28,142,185,211,232,142, 26,149,
-210,124,143,250,172, 54, 32,246,233,212,123,143,108, 87, 57,193,168,203, 88, 74,126,186, 30,174,140,110, 24, 27, 95,115,186,183,
-163, 11, 88,251,182, 38, 90,149,147, 81,103, 43,113, 42, 36,101, 41, 4, 97, 63,236,131,246,106, 57,159, 74,191,116, 98, 90,254,
-207, 59, 39,109,189,229, 13,212,183,107,126, 44,232,173, 70, 10, 79,139, 34,151,103,194,170,220, 21, 37, 33, 4,228,182,151, 83,
- 3,152,129,211,196, 79, 81,158,178, 30,102,146,109,219,145, 41, 96, 40, 65,169, 43,197,142,145,209, 8,117, 68, 7, 25, 3,237,
- 80, 32,127,181,168, 24,253, 41,190, 42,105,187,177,198, 54,217,240,225,110, 85, 81, 54,139,195,101,145, 34,125,214,152,206, 7,
- 99,181,184,187,128,182, 37, 59, 9,124,170,199,189,197,183, 98, 83,146,176,122,161, 83, 8, 58, 74, 58,202,145, 17,201,101, 26,
-102,168,170,131, 88,244, 90,105, 22,173,158,223,176,226, 5,136,155, 90,243, 32,234,192, 98, 1,158, 71, 76,139, 85, 95, 79,189,
- 36,176, 18,155, 91,205, 48,228,232,235,246,147, 91,189,183, 39,148,198,196, 2,113, 23,105, 12,224,142, 92,114,128, 57,115,230,
- 60,193, 31,158,218,166,220,116, 96,148,167, 35,185, 0, 30,135,231,131,219, 70, 58, 91,112,228,147,129,219,200,129,212,245, 26,
-163,239, 1,162,164,182, 58, 16, 2,148, 48,123,246,233,248,234, 69,123,110, 78,199,253, 49, 95,238,192, 91,182, 41,184,218,146,
-112, 2, 85,145,205,128,115,240,232,117,175,166, 2,185, 84,122,144,123,252,146, 48, 58,249,126, 26,246,165,183,205,207,226,242,
- 41, 68, 0,146,160, 57,188,186,141, 8,236,164,182,248, 10, 66, 79, 40,192, 24,234, 78, 51,205,246,235, 5,182,178,131,140,233,
- 61,206, 62, 37, 37,100,130, 84,143, 85, 20,247,251, 9,215,196, 52,218, 22, 28,108, 23, 20, 73, 10, 73, 32, 16, 58,117, 3, 29,
-117,111, 83,203,146,247, 41,116,161,190, 96,162,140,245, 64, 79,113,246,247,209,173,134,220,112, 58,130,174, 68,156, 21, 96,167,
- 56, 29,142,124,186,235, 23, 38,226,214,237,108, 24, 0, 8,223,231,108, 84,202, 80,181, 45, 75, 37, 10,236,140, 14, 84, 19,208,
- 21, 19,249,206,145,240, 91, 89, 35, 4,168, 2,181, 39, 36, 1,143, 63,207,219,175, 14,180,248, 91,135,225, 44, 44, 19,203,230,
-113,158,202, 35,190,147, 72, 75,188,184, 10, 97,180,167,149, 94,101, 68,116,193,200,235,219, 67,113,176,234, 62,253,255, 0,241,
-140, 88, 27,158,199,247, 99,223,138,128,176, 16, 74,202,192,200, 64,234, 51,216,159,151,174,144, 56,112,168,255, 0,226,210, 65,
- 39,211,169,193, 30,191,219,161,201, 91, 97,101, 11,229, 33,124,169,112,164, 97, 67, 25, 41,193, 29, 62,221, 18,149, 30, 64, 28,
- 41, 83,138,201, 81,233,203,131,211, 7,167, 95,158,178,160,129,238,248, 99, 4, 11,219,211,111,159,187, 23, 91,122,216,174,223,
-151, 45,171,103, 91, 30, 48,173, 94, 23, 45, 2,211,161,169,134,124,101,166,185,117,214,160,219,116, 71, 18,206, 63, 72,148,213,
-170,176,202,135,110, 84,156,234,116,188, 70, 90, 86,214,200,237,141,191,195,253,145, 22, 45, 26,196,217,203, 30,212,219, 59,118,
-140,216, 15, 52,105,182, 85, 52,210,220,144,228,146, 7,188, 57, 58,187, 14,173, 81,121,213,101,199,100, 86,221,117,213, 5,175,
- 81, 5,246,122, 41,151,120,231,225, 49,165, 45,167, 25, 70,253,237,171,138,109, 68, 6,138,152,185, 35, 72, 66, 58,164,128, 60,
- 86, 81,140,142,248, 24,212,167,184,174,185,213, 80,146,133, 73, 46,189, 42,116,101,176,243,171,116,136,206,165, 92,181, 24,242,
- 29, 66,122, 56,175,137,244, 12,128,174,102,202,115,202, 19,170, 83,197, 9,101,168,206,184,107, 46, 36,242, 99,215, 57,177, 27,
-176, 33,119, 7,246, 0,242,159,241,145,183,126,148,250, 56,229,176,205,157, 87,230, 36, 3, 52, 82, 67, 18,237,186, 42,142,113,
- 96, 78,222,114, 22,253,238,138, 65,198,134,236,221,125, 48,227, 85,230, 51, 33,182, 20, 46,139,193, 78, 71,146, 11,172,173, 49,
-107,213, 39, 22,218,176, 65,104, 45,181, 17,240, 28,231, 10, 57,192,214,224, 91, 87, 56, 52,186,124, 87, 37, 60,195, 17, 27,114,
-181, 86,168, 52,165, 33,208,211,232, 84,135, 35,180, 82,172, 45,194,149, 57,206, 62, 17,225,181,156,149, 19,174,110, 88, 21,191,
-119,114,244,165,183,202, 67, 27,155,118,199, 87, 58,178, 4, 89, 50, 96,212,208,176,140,117, 30, 4,208, 18, 6,122, 47,168, 24,
-193,216,148,220,233, 17, 19, 8, 58,234,126,185,152,195,115,214,218,208, 94, 77, 49, 13,178,244,133,248,196, 0,223,193, 29,180,
- 33, 36,116, 68,133,242,242,101, 71, 81,250,188,185,106, 15, 67,113, 99,239,183,107,245,232, 9,183,107,219,224, 58,227, 63,165,
-142,190,158, 48, 77,158,254, 98, 55,217,118, 36, 14,246, 5,200, 7,112, 64, 22, 35,166,219,210, 47,185, 82,233, 80,131,107,114,
- 60,217, 83, 30,159, 55, 1, 97, 10,126, 99,143, 59,200, 93, 39, 36,248, 79, 52,216, 74,146, 85,208,149, 28,227, 87, 58,150,229,
- 67,154,202, 4, 96, 35, 72,171, 77,110, 44, 73,100, 36,180,229, 58,157,136,136, 91,136, 10,230,111,157,193, 37,215, 17,208,101,
-244,168,228,117,214,181, 64,187,158,122, 93, 82, 99, 15, 54,251, 37,214,153,128, 31,117, 72,105,199, 39,177,225, 23,146,164,156,
- 48,194, 20,135,157, 91,128,140, 41,148,243,100, 17,156, 82,117,230,220,185,110, 46,150,234,204, 86,210,213, 38, 18,207, 68,178,
-246, 20,194,221,232, 57,159, 45, 69, 67,133, 75, 72, 8, 74,217, 4,243, 28,107, 65,114,134, 28,192, 19, 72,150,215,216,116,216,
-247, 29,143,240, 35,215, 20,246,103,146, 44,245, 78,252,176,174,237,171, 80, 54,208, 8, 14, 67, 30,182, 4,169, 0,130, 8,141,
-150,215, 27,108,165, 82,240, 65, 91,130, 60,226,182,132,167,101,192,151, 29,238, 83, 25, 20,197,120, 81,158, 74,218, 87,253,240,
- 30, 74,156, 5, 56, 40, 82,144, 70, 78, 52,237, 90, 94,211,206, 31,238, 61,215, 87, 13,251,187,120,211,246, 99,125,216,166,219,
- 53, 27, 46, 70,225,213,169,180,173,188,223,218, 29,126, 20,116,211,238, 11, 14,254,117,214,224,219,183,114,235, 2,165, 77,157,
-110,215,151, 5,255, 0,172, 41,143, 26,124,233,201, 95,132,215, 47,235,155,134,253, 49,169,137,139, 33, 17,217, 13,120,112, 82,
- 15, 49,240, 35, 44,163,195,112,169, 32,252,110,120,100, 14,255, 0, 6, 84, 78,117,197,111,105,134,220,238, 93,231, 65,219, 45,
-247,167,109,213,197, 90,217,251, 58,155,114,237,149,225,186, 16,105,102,169,111,209,111, 26,133,206,237,223, 6,220,186, 37, 68,
- 46, 57, 71, 74,105,117,120,239,199,126, 99, 76,195, 90,234,170,101,153, 10,125, 14,182,139, 3,128,178,227, 14,113,200,102, 49,
-197, 94,146, 41, 26,186, 58, 14,100, 76, 1, 54,102, 4, 50,105,239,205,107, 48,109,241, 25,226,106, 58,222, 29,225,154,236,230,
-154,152, 85, 54, 88,209,177,136, 41, 60,216,218,101,137,193, 42, 24,198,232,143,175, 85,138,168,137,139, 93, 73, 6,112,183, 37,
- 78,163, 2, 75,208,150,135,161,212, 82,216,153, 17,169,141,173,151,176,166,195,172,115, 50,232, 25,142,243, 42,192, 88,248, 20,
-135, 67,169, 82,146, 1,214, 30,110,102,229, 6,164, 37,229,248, 15,167,153, 14, 21,167,199,131, 45,149, 41,178,218,193,232,133,
- 37,208,234, 20,133, 14,138, 74,146,161,200,172,136, 53,240,131,237,106,226,159,133, 24, 84, 59, 53,218,219, 59,239,178, 52,133,
-176, 33,109, 62,233,213, 42,115, 87,110, 83,210, 19,207, 27,108,183, 21,133,187, 86,176, 89, 90, 16,222, 98,161, 83,232,235, 9,
-248,233, 74,207, 48,145,223, 13,254,212,238, 15,184,152,159, 78,162,209, 47,183, 54,118,249,175,188,219, 14,237, 94,249, 74,164,
-218,245, 37, 92, 79,169, 49, 99, 27, 63,112,216,112, 91,183,164,105,106, 74, 80,226, 84,253, 38,123,107, 83, 14,125, 94,162,183,
- 66,108,186,204,183, 48,166,102,149, 71, 62,156, 30,169,168,233, 30,174,159,105, 0, 23, 14,192, 50,168, 43,245,131, 77,196, 95,
-135,248,215,135,243,244,142, 40, 42,125,147, 48, 63,251, 60,246, 73, 9, 31,170,141,253,220,164,236, 80, 35,107,102, 86, 28,176,
- 93, 65,235,149, 54,227,231, 82,252, 98,143,120,111, 30, 50, 3,153, 10, 74,242,148,190,207, 95,141,149, 1,219,201, 64,160,158,
-157, 92, 10, 45,120, 41, 72, 30, 42,210,211,129, 60,138, 36, 39,194, 40, 56, 9,201,199, 34, 15,194, 82,125, 71, 47, 98, 51,173,
- 78, 57, 42, 4,150,225, 74, 68,136, 85, 24,204, 38, 66, 27,148,194,153, 91,140, 60,112,210,188, 53,165, 42, 92, 71, 18,144, 65,
- 31, 2,199, 43,141, 41, 93, 9,204,232,245,213, 45, 41,192, 82, 28, 24, 15, 5,245, 67,125, 1,240,211,143,214, 37, 36, 97, 93,
-148, 8, 56, 7, 58,212, 89, 53, 45,155,126,155,250,244,189,247,220,131,214,195,222, 7, 80, 36, 83, 0,111,109,143, 66, 55,176,
-233,219,176,244,244,232,113,182,208,103, 41,109, 2,130, 8, 28,170, 10, 7, 24, 72, 25,194,155, 35,170,130,179,216, 16,115,215,
- 3, 58,111, 43, 10,114,143, 57, 62, 8, 83,116,247,138,158,104, 35, 42,247, 7, 50, 75,237, 35, 36,226, 62, 87,206, 17,241, 16,
- 21,132,140, 32, 1,125,182,231,180,168, 76, 58, 9, 40, 84,116,130,133, 30, 98,133, 5, 4,164,144,145,213, 29,122,131,213, 61,
- 0, 36, 29, 13,118, 6,157,142,165,164,161, 74, 66,131,137, 36, 16, 75,137, 11,198, 66, 58, 1,225,133,117, 7,177,199, 76,105,
-179, 52,167, 21, 20,206, 20, 94, 88,188,203,247, 14,159,247, 13,175,219, 99,141,204,138,188,229,245,233,172,222,154,164,132,144,
-123,143, 71,223, 96, 84,155,244, 59,106, 94,135,127, 84,218,177, 40, 8,109, 77,171,152, 21,173,176,163,224,169, 71,153, 72,125,
- 10, 73,232,160, 71, 80,122,228,147,140,224,235, 37,102,160, 10, 82,164,185,132, 45, 57, 74,215,202,149, 96,228, 37, 5, 93, 73,
- 30, 65, 68,115, 96,128, 73,233,134, 98,157, 41, 13, 56, 75, 78,101, 30, 32, 41,200, 60,139,109,106, 31,174,223, 79,137, 36, 30,
-189,207, 76,140,117,214, 72,221,101, 45,182,162,165, 36, 32,100,243, 41, 75, 81, 70,115,204, 0,245,193,235,219, 60,157,117, 24,
-134, 67,166,254,131,225,214,223,195,240,185, 63, 9,141,122, 6,118, 85, 58,239,247, 92,246,191,191,212,255, 0,166, 51, 26,229,
-207, 71,161, 82,171, 21,250,253, 86, 21, 10,222,160,210,170, 53,218,245,110,162,164,183, 78,161,208,104,176,228, 85, 43,117,153,
-206, 45, 73, 9,137, 18,151, 18, 91,238,228,225, 72,142,160,158,165, 57,252,241,248,236,226,198,175,198,143, 19,187,139,190,210,
-211, 34, 37,167, 54, 67, 54,134,209, 80, 36, 40,149, 91,187, 67,106, 59, 42, 29,153, 29,224, 82, 63,247, 86,123, 78,203,172, 84,
- 21,128,163, 54,224,117, 10,232,210,117,219,143,110, 55, 31,168,247, 9,220, 13,237, 45,117,106,153, 60, 65,155,196,245,118,153,
- 33, 73,250,186,148,129, 22,167,110,108,123, 50,218, 88,204,249,174, 8,181, 59,157,180,158,102, 99, 49, 2,144,247, 42,222,154,
-216,140, 58,201, 42, 87, 55, 92,245, 24,242, 62, 93, 51,208, 99, 86, 23, 10,101,174,168,115, 74,133,179,204,161, 98, 4,110, 35,
-184, 38, 79,255, 0, 83,109, 63,224, 1,129, 34, 76,115,135,139, 28, 75, 29, 69, 68,124, 51, 69, 46,168,168, 95, 93, 91, 41,184,
-105,192,178, 67,126,252,133, 36,200, 55,250,214,208, 64,120,119,164,226,207, 66, 6, 58, 99, 61,253,127,110,168, 40,146, 14, 79,
-145, 3,176,234,117,236,175, 32,140,119,245,254,173, 14,178, 50, 7,166,115,251, 53, 54,197, 56, 6,195,215,223,143, 26, 25,222,
-163,190,112,127,103, 95,199,190,136, 80, 4, 28,249,117,233,242,208,171,236, 62,223,191, 74,170,144, 55, 30,252, 27, 3,172, 12,
- 19,233,219,241, 26, 21,194,122,100, 96, 15, 50,122, 99,167,203, 68, 45, 88, 7,168,198,127, 12,119,207,207, 39,246,104, 39, 14,
- 65,238,122,244,207, 92,117,243,209,240, 49, 73,194,122,158,135,167, 78,221,191,225,160,214, 70, 49,230,127,175, 85,214,124,179,
-246,254,237, 12,162,115,131,131,230, 15,203, 74,168,176, 3,231,255, 0, 56, 24,164,161,156,124, 57,251,241,165,175, 42, 81, 4,
-128,123,105,104,248, 61,215,161,234, 61,195, 9, 4, 17,131,140,142,223,159,183, 85, 65,193, 7,254, 56,208,233, 56, 57,252,117,
- 84, 28,245,242,237,243,207,245,104, 16, 14,221,176,115,176,176,216,246,251,173,130,144,113,212,117, 31,209,147,251, 52, 64, 81,
- 7, 3, 57,199, 92, 12,227,237,208,169, 35,151, 56,237,220,122,227,174,171,161, 97, 64, 96, 17,233,247, 31,233,206,144, 35,125,
-251,225, 50, 15,218,181,186,127, 44, 28,217, 61,137,207, 79,219,211, 69,160,115, 4,228,115, 96,228, 12,227,183,110,191,142,129,
- 66,176,164,143, 53, 1,246,117,209,136, 61,199,167, 81,162,144, 13,182,219, 5,193,232, 56,201, 61,187,103,231,233,170,157, 57,
-128,201,237,219,190,122,158,195, 61,244, 58, 14, 70, 85,219,229,220,254, 78,137, 78, 6, 9,248,142, 58, 30,199,229,215, 73,176,
- 32,251,176, 49, 85,178, 80, 71, 49, 24, 29,179,128,122,159,234,206,170,161,228,172,227, 5, 63, 51,208,106,130,129, 57, 36, 12,
- 43,246, 12,103,250, 53,245, 33, 41, 28,169, 39,168,200, 39,169,243, 62,154,215,113,110,214,192,193, 69, 75, 80, 41, 11, 40, 72,
-242, 79,235, 44,117,198, 14,142,138, 84,193, 74,208,181,165,208, 82,164,172, 44,165,214,212,133, 5,182,227,107, 79, 84, 56,149,
- 0, 82, 71,108,122,116,213,184, 21,116, 32, 12, 36, 16,175, 92,121, 99,240, 58, 41, 11, 82,192,198, 50,156, 1,158,159,143,207,
- 73,144, 8, 32,238, 14, 5,200, 32,131, 98, 8, 32,251,198,227,247, 28,108, 53,141,190,213,107,108,134, 43,180,182,171,204,124,
- 41, 19, 35, 60,136, 85, 18,145,128, 11,205,175, 13,186,160, 60,210,164,149, 28,156, 13,108,141,181,197, 54,220, 70, 82,197, 66,
-151,116,195,121, 72,202,146,221, 49,185,109,229, 32,244, 75,141, 75, 60,221,199, 95, 93,115,201, 4,164,124, 94,189,207, 82, 7,
-168,253,186, 37,176, 66,144, 22, 84,164,142,169, 32,227,161,236, 8,243,244,251,245, 28,174,225,188,174,181,153,164,137,162,103,
-235,203,114,160,244,191,151,117, 31,114,140, 91,121, 55,141,220,125,147,211,199, 74,107,169,243, 88,225, 80,170,107, 41,214, 89,
- 52,139, 90,242,161,142, 87, 35,177,119,115,110,248,235,133,191,199,206,218,219, 45, 52,170,125,157,118,214,229, 55,146,132,186,
-136,148,166,213,201,219,244,179,102,224, 18, 71,250,170, 3, 29,180,196,241, 5,199, 86,232,111,197, 1,251, 8, 50,221,147,182,
-143, 56,211,211,237, 58, 60,167,100, 74,185,156,140,226, 94,138,213,215, 87, 83,109,251,229, 61,183,144,219,158,226,195,104,140,
-227,141,161,111,151,249, 82,145,162, 3,148,130, 92, 5,192, 20, 20,148,231,148, 55,212,227, 4, 14,186, 61,162, 86,176,146,225,
- 80, 56,228,194,113,201,219,161,207,235,116, 56,211,117, 47, 5,112,245, 21, 84,117,201, 69,207,170,132,134, 71,149,218, 77, 12,
- 8, 33,149, 73,229,134, 82, 46,173,163, 82,145,169, 72, 32, 28, 53,241, 15,138,188, 97,196,116,243, 82,213, 84,195, 69, 77, 80,
- 10,200,180,176, 44, 69,212,245, 83, 35, 25, 38, 10,219,134, 85,145, 85,193, 42,192,169, 32,158,135, 75,235,241, 20,165,243,156,
-130,149,228,227,191,234,252,191,175, 69, 53,226, 20,169,146, 9, 42, 80, 87, 50,134, 0, 79, 79,192,118,208,142, 44, 52,130, 84,
-175,137, 56,248,146, 49,143, 64,122,117,233,170,145,222, 81, 66, 66, 73,248,178, 73, 87, 82, 79,108, 12,246, 29, 53, 36, 61, 54,
- 29, 62, 70, 43, 94,183, 35,123, 91,175,205,241,136,238,148, 54,166, 91, 20,250,139, 88, 47,209,166,170, 59,233, 79,254, 76,255,
- 0, 80,172, 99,160,230, 39,240, 58,198,120,103,221, 57,187, 25,196,150,199,238,244, 21,134, 94,176, 55, 62,210,175,186,181, 28,
- 15,112,143, 87,142,138,146, 84,113,217, 84,215,101, 39,255, 0,165,167,117,218,108,106,205, 62,177, 68, 90, 2, 93,157, 79,120,
-165, 71,245, 68,134, 82, 86,218,243,228,123,254, 61,245,167, 85, 38, 11,109,188,210,135,233,152, 91,140,184,160,122,120,145,212,
- 83,145,142,255, 0,171,251,117,187, 66, 18,104,170, 41, 36,251, 18,234, 83,255, 0, 68,162,196,254,253, 93,251,227, 20,149, 82,
-101,249,133, 45,100, 91, 73, 4,145,202,189, 62,212,108,174, 63, 16, 49,250,180,211,238,200,245, 37, 67,171,211,156, 15,194,174,
- 65,129, 89,167, 45, 4, 20,189, 10,173, 21,153,145,214,133,121,160,178,242,122,249,231,190,180,239,217, 89,188,242,168, 28,101,
-113,223,195, 53, 74,165, 21,248,241,110,200, 59,151,105, 48,148, 54,212,150, 99, 85, 66, 25,171, 70, 90,211,133, 72, 8,121,198,
-149,215, 37, 35, 61,129,214,138,112,241,237, 18,181,246,247,217, 85,195,199, 23, 55,221,185, 92,188, 87,110,170,222,216,155,158,
-135, 70,113,168, 85, 74,133,213, 66,154,237,182,137,209,228,212, 2, 90,247, 81, 18, 12,119,150,178,172, 40, 40,165, 36,172, 99,
- 92, 76,225,195,218, 43,112,108,191,180, 68,241,163, 87,137, 53,218, 13,213,121, 85, 13,251,109, 69,117, 79, 59,252, 93,220,210,
- 61,214, 85, 57,148,140, 9,179,169,240, 12, 87, 90, 24,253, 35,176,207, 39, 85,140,213, 94,201, 95, 89, 89, 81, 50, 68, 88,229,
- 41, 44, 77, 97,114,211,137, 33, 50, 70,130,251,177,141, 24, 11,126,210,130,124,216,234, 92,247,139,178,110, 30,135,135, 86, 26,
-240,171,156,212, 69, 53, 68, 96, 18, 70, 89, 60, 14, 18, 89, 46, 45,161,102,104,166, 0, 18,247,167,107, 0, 6,255, 0,166, 5,
- 42,103, 57, 65, 82,185, 64, 32,133,247,194,134, 58, 28,253,191,183, 79,189,167, 40,130,133, 15,136,130, 15, 48,207, 92,244,234,
- 62,127,191, 90,215,182,213,122, 45,249,108, 90, 55,197,175, 49, 85, 11, 94,248,160,211,110, 91,114,123,145,228,195, 92,170, 77,
- 82, 51,114,163, 41,232, 51, 90,109,232,174,134,220, 0,165,196, 37, 67, 29,181,181, 22,173, 32,176,218, 22,172, 0, 58,144, 15,
- 48, 35,161,232, 51,211,182,149,165,204, 0,210,250,182, 96, 8, 55,216,131,107, 17,234, 8,177, 7,208,223, 12,252,106,244,209,
- 69, 44, 79,229,112, 89, 74,158,160,131,165,148,142,161,131, 2, 8,234, 8, 32,216,139, 99, 84,189,166, 92, 73, 94, 92, 36,240,
- 71,190, 60, 72,109,253,170,139,190,243,218,251, 81,202,181, 6,152,247, 63,185,197,151, 53,246,105,136,172, 84, 2, 7, 50,224,
- 67, 84,180,200,117, 35, 4,165,140, 2,158,227,242,123,220, 13,193,188,183,102,246,187, 55, 70,255, 0,174,202,185,175,125,193,
-184,106,119,117,217, 95,154,225, 92,154,165,106,179, 33, 82,165,200, 61,127, 70,202, 74,130, 26, 64,248, 91,109,180, 33, 32, 37,
- 35, 95,176,103, 17, 91, 65, 79,226, 3, 96, 55,155,100,106, 73,104,195,221, 29,180,188, 44,162,167,194, 11, 49,228,215,104,147,
- 33, 65,146,176,160, 71, 43, 83, 28, 97,207,145,107, 58,252,126,111,173,183,174,109,101,223,114,237,205,200,243, 14, 87,172,107,
-134,183,104, 86, 21, 21,196,191, 31,235, 27,118,163, 34,153, 41,108, 62,142,143, 50,181,199, 42, 74,135,250,248,242,211,205, 11,
- 23,205,103,169,168,185,146,170,158, 46, 83,159, 68,102, 90,132, 67,211,202, 69, 43,202,122,183, 50, 37, 98,121,105,106, 87, 55,
- 74,198,201,233,231,141, 79,232,234, 57,204, 82, 16, 6,132,158, 85, 50, 83,153, 27,174,169, 99, 74,129, 10, 55,149, 68, 19,180,
-118, 47, 41, 56, 67,100,168,171,151,155, 61, 79, 95, 60,122, 15, 61, 35,130,164,243, 43,195,200,232, 85,144,149, 30,190,103,160,
-235,163,138, 10, 81,148,161, 61, 1, 57,207,196, 1,237,229,215, 58,179, 73, 73,100, 1, 32,169,109,175, 10,108,133,117, 65, 61,
- 64, 35,211,190,164, 33, 71, 78,184,138, 6, 12,221,108,127,211,249, 99,203,205, 18,188,146,148,164, 30,157,114,114, 49,212,122,
-121,235,227,237, 45,212, 2, 7, 84,167,184, 57,230,251,255, 0,214,210,105,196,231,225,201, 72, 78,112, 71,161,193,239,249,235,
-162,163, 54,227,231, 9,229,102, 56, 25, 86,126, 37, 18, 58,142,158,154, 26, 64,223,165,177,147,211,115,112, 58,252,252,223, 22,
-213, 70,117,150,146,176,201, 81, 88,230, 39, 35,152, 1,253, 61,115,159,248,104,168,146,144,231,232,202,255, 0, 85, 56, 40,229,
- 0, 30,157, 78,124,245,114, 83, 5, 65, 72, 11,202,122,142,131, 4, 30,196,245,208, 41,136,220, 55, 57,130, 80,160,172,229, 74,
- 5, 71, 24, 57,192, 61,188,255, 0, 13,102,195,174, 10, 13,246,245,219,231,231,243,194, 75,106, 66,138,139,202,121, 62, 73, 39,
- 41, 64,244,249,235,195,175,165, 29, 16,164,129,215, 3,176, 10,244,237,242, 58, 13,247, 86, 20,162,210,241,205,219, 9,199, 76,
-118, 57,252,252,244, 57,121,183, 22, 18,162,114, 8, 46, 36,167,166,122, 30,132,122,147,160, 1, 61,122,224,218,109,176, 59,124,
-252,244,193, 73, 62, 42,249,210,160,160, 6, 10, 58, 4,243,117,237,215,174,169,202,116,144,148,163, 9, 35, 41,232,112, 73, 35,
- 26,244,226,149,225, 44, 52,218, 83,202, 50, 6,112, 73, 3,166, 20, 60,186,106,200, 38, 56, 22,159, 25, 41, 42, 74,136,229, 35,
- 39,237,230, 7, 25, 25,253,154,205,172, 79, 99,140,129,115,240,254,120,124,184,115,189,156,218,173,243,217,253,196,140,226,154,
-114,201,221, 29,189,186,157,144, 2, 28, 76,104,148, 91,202,137, 62,170,234,144,226,146, 10, 19, 71,106,164, 78, 72,192,235,229,
-214, 89,252, 84, 79,135, 38,165, 91,167, 64,144,125,222, 21, 90, 83,212,194, 9,203,148,103,102,202,149, 75,147, 29,226,231,198,
-199,134,165,180, 86,174, 83,250, 48, 82,145,204,117, 12,134, 36, 32, 58, 89,144,219,141, 68,148, 28, 97,215, 25,112,135,124, 41,
- 13,150, 30, 13,148,156,182,191, 13,197,224,142,160,224,143, 93, 73,106,193,222, 9,123,221,195,158,213,110, 37, 84, 5,220,177,
-173,145, 99,221,170, 9, 90, 82,245,211, 97, 33,139, 66,186,235,106,113, 41, 18, 89,144,221, 38,151, 80,109,206,169,241,170, 79,
- 3,133,165, 68,213,126, 32,229,133,243, 12,131, 53, 81,228,136,205, 3,157,175,169,213, 36,139,223,107, 71, 40,244, 5,135, 82,
-109,142,146,250, 55,230, 49,199,158,230,217, 92,205,165,166,142, 42,152,199,111,171, 99, 12,173,241,188,212,235,255, 0,117,239,
-229,177,215, 10, 45,116,211,119, 43,112,233,170, 37,182,230, 76,183, 43,177, 16, 48, 67,141,212,104,203,167, 84, 84,210, 85,250,
-200,247,186, 39, 42,135, 76,169,127, 17,201, 25,126, 41,181,229, 37, 94,246,130,227,139, 83, 98,158,134,210,180,160,134,139,132,
-169, 8,228,234, 57,157, 60,196,119, 33,160, 58, 3,173, 54,220,106,162,232,187,147, 64,173, 32,128,221,114,157, 86,182,101,168,
- 2,112,236, 98,110, 58, 71, 42, 0,200, 82,156,139, 85,108,168, 12, 37, 47, 14, 99,215, 89,237, 42,241,122, 42, 89,121,149,120,
-143, 68,240,228, 71, 67,193, 97, 42,112, 20,248,104, 82,146, 14, 81,149, 36, 43, 61,130,149,202, 79, 77, 54,154, 98,201, 79, 48,
- 93,157, 23,215,245, 64,140,254,242,183,247, 3,113,214,216,234,185,107, 85, 90,190,153,200,103,134, 73, 8,185,181,196,141,207,
- 0,122,217, 95, 77,199,166, 54, 18,161, 94,151, 79,143,238,201, 90,156, 74, 11,144,195, 67, 45,167,222,100,242,185, 41,107, 79,
- 47, 68,161,128,211, 94, 17, 4,143,139,237,214, 33, 94,188,163, 65,166, 48,194, 95, 91,117, 54,202,144,132, 54,165,128,183, 95,
-199,188,184,162,159,133, 33, 12,114, 39, 3,184,113, 99, 62, 90,108,110,125,200,155, 57,192,243,237, 54,135, 98, 37, 65,105,104,
-184, 83, 38, 67,170, 74,157,117,106, 82, 65,231, 43, 42, 36,158,164, 28,103,182,152, 91,179,113, 22,203, 82, 31,144,227,141,177,
- 29,133, 60,243,188,138,117,126, 27,202,229, 79,134,132,140,173,213,186,224, 64,230, 35, 28,249, 82,146,156,168,109, 83, 80,180,
-133, 70,155,131,247,250, 91,173,253,215,233,123,143,190, 31,153,230, 40,116,234, 94, 76,155, 11, 13,199,112,250,136, 0, 48,181,
-193, 30,164,142,215, 14, 21,209,121,205, 91,172,198,128, 37,214, 37,203,151, 18,147, 71,162, 69, 74,158,159, 91,173, 84, 31, 76,
- 74, 61, 38, 10, 82, 57,149, 46, 76,199,210,132, 36,116, 79,141,204,122, 13, 72,111,103,182,153,253,140,217, 59, 59,105,234,166,
- 43,245,214, 40,146,102,238, 75,165,136,243,169,213, 75,230,241,120, 86, 47, 54, 36,211,230,178,227, 21, 26, 75, 53, 55, 26,167,
- 24,207,180,236,119, 35,210, 16, 22,218,146,117, 21, 91, 99,137, 58,134,192,111, 54,211,110, 76,122, 84, 42,181,197,100,221,246,
-174,224,205,167, 84,216, 19,169,212,123, 66, 37, 89, 42,151, 77, 97,181, 39,195,159,114, 79,128,212,245,169,240, 22,212,111,116,
-105, 13,225, 69, 58,152,173,218,236, 42,179,108, 87,233, 14,186,253, 46,181, 6,157,112, 82, 30,120, 56,211,238,209,110, 10,124,
-106,204, 5, 62,219,128, 41, 18, 61,194,107, 60,193, 64, 44, 45, 4, 30,186,117,106,119,163, 48,188,177,253, 92,232,116, 31,218,
-177, 26,182, 29, 0, 5,108,118, 44, 24,145,181,142, 35,114,231,116, 85,239,152,101,148,181,162, 92,195, 43,146, 35, 87, 18,135,
-188, 13, 42, 22,128, 23, 42, 35, 98, 66,200, 24, 35, 57,137,208,164,161, 30,202,120, 41,197,183,177,147, 96, 55,194,117, 82,245,
-225,250,163, 11,134,125,197,158,169, 14,206,182,216,166, 75,169,236, 93,114,190,156,248,141,189,108,196, 90,166,237,169,121,196,
-181,250,106, 40,147, 79, 30, 49,116, 81,219, 78,117, 26, 30, 33,248, 90,223,142, 22,238, 53, 90,251,235,183, 21, 75, 77,169,146,
-228, 66,162, 92,232, 13, 87,118,250,239,240, 22,241, 75,150,189,233, 78, 11,167,214, 10,153, 99,198, 17,203,141,204,109,181,161,
- 79, 69,104,144, 53, 62, 58,210, 27,142,235,239, 21,135, 25, 12,160, 78,108, 32,130, 2, 20,150,218,156,215,108, 60,148,173, 41,
- 88, 7, 42, 65, 24, 28,201, 25,193,174,203,122,131,116,219,213,139,110,241,182,232, 55,173,161,112, 70, 84, 43,170,207,186,169,
- 84,234,253,183,113,211,152,109, 97, 46, 84,104,245, 86, 28,142,237, 70, 59, 5,226,196,128,132,200, 66, 22,182,154,125,146, 80,
-180,201,178,222, 38,170,167,211, 29, 71,246,200, 86,223,104,218, 69, 29, 1, 87,177,189,186,233, 96,214, 30, 85, 40, 0, 56,170,
-184,143,195,156,143, 60, 18, 84, 69, 23,232,156,193,247, 18,194,160, 70,237,183,247,176,221, 84,146, 79,219, 83, 27,110, 29,203,
-146,109, 13, 30, 23, 61,163, 28,100,240,219, 38,149,107,237,182,228, 73,189,236,148, 58,150,218,218, 61,216, 67,151,221,136,166,
-144,210, 25,240, 41, 6,169, 45, 53, 11, 53, 66, 58, 57, 80,186, 76,248, 97,190, 98,160,218,142,164,109,178,158,214,237,167,175,
- 65,161,127, 41,109,181,191,248, 74,174, 85,212,196, 72,247,141,118,159, 86,189,184,118,184, 38, 56,243,200, 67, 20,205,205,163,
- 65, 92,187,103,244,108,243,134, 42,113, 37,120, 42,121, 41,114,160, 80, 84,117,167,220, 73,251, 19,182,242,247,150,245,217,194,
- 29,220,173,162,186,165, 45,185,180,237,176,187,166,214,235, 27,115, 85,154,242,203,141, 53,105,221,169,247,138,213,131, 33,111,
- 58, 60, 24,243, 19, 85,132,218, 80, 19,227,198, 71,195,173, 7,218,190, 57,120,161,246,121,238,117,107,135, 46, 42, 54,246,212,
-222,125,182, 66,215, 76,220,221,149,190,133,155,115,191, 81,182,165,170, 84, 41, 82,173,155,198,146,212,216, 50,159,240,155,121,
-200,241,235, 44, 76, 97,206, 80,135,152,140,178,151, 90,121,170,146, 44,222, 17, 46, 79, 77, 21,101, 90,144,210, 68,210, 26, 90,
-141, 23, 26,157, 24, 36,177, 72,226,224,221,193, 66, 60,166,100, 39,106,230,105,184,247,129,158, 20,172,144,102, 25, 56, 96,130,
- 73, 11, 77, 13,172, 72, 85,114, 4,208,176, 63,238,220,198, 0, 12,193, 90,219,205,107,111, 55, 22,222,185,109,106, 77,203,105,
- 92,212, 27,170,209,172,183,227,209, 46,123, 90,179, 79,185, 45,186,219, 47,160, 44, 55, 78,175, 80,230, 63, 25,215,130, 20, 20,
-227, 72,116,188,206, 64,121,180, 19,141,103,175, 87,204,134,148,133, 47,152,148,124, 42, 90,135, 81,202, 0, 79, 42,142, 57,128,
-233,159,246, 64, 39, 57, 58,138, 47, 16, 27, 71,120,112, 95, 98,211, 61,164, 94,203, 13,207,174,217,124, 50,238, 29,187,102,110,
- 70,229,240,243,119,189, 42, 85,155, 77,162,222,245, 72, 16, 41,117, 22,108,155,169,231, 90,184,109, 7,235, 46,162,151, 58,152,
-243,203,175,208,101,130,245, 6,171, 58,144, 89,145, 18, 68,155, 3,127,214,247,155, 98,118,115,120,231, 91,109, 90,114,247, 99,
-108,236,173,194,145,108,177, 83, 77, 90, 45,188,253,219, 67,139, 87,122,147, 14,164,243,190, 44,248, 45,185, 37, 98, 59,143,101,
-242,194,155, 18, 15,188, 7, 73,143,214,196, 35,167,138,170, 9,185,212,211, 51, 37,153,116, 75, 28,128, 41, 49, 75, 29,205,152,
- 95,170,150, 83,177,218,235,123, 43,134,115,213,207,218, 72,189,141,233,170,169,213, 93,148,221,209,145,142,149,120,220, 40,189,
-200,177, 4, 41, 27, 0, 8,185,198,215,109,149, 22, 37,219,112, 75,167, 73,165, 92, 21,191,118,183,110, 26,195, 20,107, 85,228,
- 68,174, 84,165, 82,105,206,202, 98, 44, 87, 92,162,212, 48,165, 45,180,169,192,152,142,168,161, 4, 36, 36,229, 99, 64, 56,226,
-223, 77,219,218,203, 74,243,176,184,111,131,100,212,184,131,106,210,106,188,182,174,237,198,176,104,236,108,117, 26,191,107,238,
- 45,231, 67,159,114, 83,238, 42,188, 53,220, 59,203, 46,201,218,125,206,169,219, 54,146, 99,166,100,164,216,146,234, 18,227,161,
- 2,157, 2,167,204, 14, 62, 61,170,123,199,195,134,245,239, 23, 13,187,105,102,194,182,165, 83,246,238,171,105, 84,183, 81, 53,
-244,170,245,137, 87,220,107, 45,183,233,117,187, 54, 41,166, 73,133, 64,143, 76,250,217,135,130,156, 67,211,229, 61, 20,165, 50,
- 32,160,164,235,150,155,127,199,229, 2,218,166,220, 17, 47,141,155,184,239,201,213, 27, 39,106,105,180,122,212,125,229,250,134,
-170,214,227,109, 78,199,111,230,200, 68,190,174,249,149,109,181,172,187,121, 82,106, 16, 56,129,184, 42,147, 41, 97,218,124,229,
- 79,183,224, 36,215,213, 28,203,110, 70,206, 69,195,144, 85, 69, 5, 70, 98,154,105,203, 23, 84, 82, 9,145, 88, 2,188,203, 43,
- 29, 22,223, 64,107,155,217,130, 11,134,211,227, 63, 18,206, 91, 83, 89,150,100, 83,153,115, 5, 2, 9,166,100,112, 41,101, 77,
- 75, 50,195,172,141, 83, 43,150, 83, 39, 47, 66,149,186, 60,183, 82,141,110,225,240, 39,196,221,155, 81,191,231,222,141, 89,213,
- 55,237, 88,247,245,205,127,221,171,222,173,181,185, 61,226,240,182,175, 86,237, 91,186,211,159, 89, 98,236,113,202,246,245, 75,
-190,106,209,152,110,218,100, 61,112, 84, 36,212, 28, 91, 16, 22,220,105,170,139,127,159,236,242,222,186, 77, 26,239,166, 87,232,
-112,233,215,213,183,115, 90,106,118,188, 55, 27,106, 92,217,154, 61,128,237, 3,137,199,119, 10,177,114,223, 77,221,139, 75, 53,
-122, 53,223,195, 53,253, 73,112, 71,241, 98,181, 54,200,172, 83,221,113,115,223,163, 51, 57,230,147,199, 5,183,187,182,199, 20,
-139,188,118,233,203, 98,159, 84,186,183,115,137, 91, 34, 52, 27,238, 84,170,188, 61,236,220, 94, 32, 44,203,171,108, 40,237, 75,
-107,110, 95,141, 88,160, 80,145, 95,186, 77, 97,137,205, 83, 25,174,211,162,188, 99, 84, 40,149, 52, 64,143, 46,157, 75,218, 83,
-101, 77,186,105, 19,162,236, 45,249,108,218, 84, 43,254,198,220, 58,109, 34,211,226, 14,155, 2,237, 19,173,203,215,141, 77,199,
-186,173,217,247,125, 99, 98,170, 16,170,182,125,110,232,227, 78,236,167,187, 2, 77, 5,212,166,211,181,219,161, 84, 87, 88,151,
- 81,153, 91, 22, 42,173, 58,216, 2, 66,109,243,176,249,247,227,159,188,172,197,153,181, 23,220,146, 73, 36,158,189,183, 55,238,
-119,191, 83,134, 79,133, 94, 26, 54,163,119, 40, 23,245, 15,114,220,191,142,226,213, 56,139,225,227,133,189,165,172,237,181,249,
- 97,155, 30,221,191,119,242,131,196, 96,167, 93,151,172, 39,236,250,202, 55, 62,208,102,241,218,107, 53,128,138, 37,126,130,149,
- 83,107, 53, 9,204, 84,230, 17, 17,189, 55,212,190, 3,248,146,172,211,160,212,169,214,189,181, 33,186,142,219,211,247, 54, 44,
- 95,227, 14,196,106,162,186,125, 98,181,178,180, 58, 45,166,105,207, 92, 9,120,110,100,217, 28, 70,108,107,177,109,190, 79,173,
-221, 99,115, 41,203, 76, 94, 97, 37, 17,242,109,137,226,246,211,217,104,251,163, 81,127,101, 62,187,186,171,187,235,180,188, 70,
-108,210,237,235,249, 22, 93,137,180,219,153,179, 84,221,245,137,101, 55, 93,179, 23, 99,212,230,110, 13,155, 14,126,244, 71,153,
- 30,155, 22,183,110, 58,135, 44,136,172,191, 58, 84,105, 79,178,151,218, 87,181, 90,244, 52,109,183, 49,108, 26,164,171,191,110,
- 45, 11, 30,153, 2,181,115,110, 83,149,219, 97,171,198,196,221, 46, 9,183, 14, 21,126,223,177, 98,217, 80,152,183,109,137, 17,
-184, 39,182,216,149, 73,247,169,115, 94,157,126,212, 38,174,188,170,109, 62,145, 66,136,100, 17, 21, 93, 71,204, 47,211,227,220,
-219,115,111,195,225,108, 1,107, 11,252,252,239,134,106, 63,179,199,115,133,155,125,215,171,187,135,179,118,237,197,106,110,150,
-201,109,205, 10,223,153,185,246, 52,250, 21,249, 15,122,172, 61,215,189,169, 23, 85,173,123,210,110, 87,226, 85,161,161,221,180,
- 69, 50, 35, 16,154,153,245,133, 70,101, 86, 39,143, 18,101,191, 50, 43,173, 61,131,193, 94,250,238,142,241,110, 54,200, 89,144,
-172,105,247,150,215, 94, 63,197,253,209, 54,126,230, 88,150,253,156,245,230,245,238,157,187,165, 91,118,205,231,112, 87,162,211,
-175, 26,213, 74,234, 15,179, 73,139, 75,126, 92,138,179, 48,164, 75,167,183, 38, 43, 46, 58,157,172,107,218, 71,106,187,184,205,
- 93,151, 6,202,110, 37,197,110,209,175, 29,134,190,172,246, 39,241, 13, 5,253,203,160, 93, 60, 62,109,135, 18,118,213,139,112,
- 73,220, 10,142,200, 73,165, 84,170,177,119, 63,136, 8, 23, 60, 70,218,180,225,210,217,143,182,241, 40,114,169,117, 3, 80,155,
- 86, 12, 7, 9,252, 89,216,124, 52,223,247, 21,199, 92,217,203,159,115,109, 71,183, 27,106,119, 94,200,183,218,221,216, 86, 93,
-205,110,222, 91, 37,184,134,249,219,247, 46, 91,196,109, 93, 86, 53,227, 71, 49,101, 84,161,213,227,179, 69,164, 59, 61,217, 13,
- 76,139, 38,154,150, 85, 17,245,109, 21,212, 94,194,230,253,122,118,237,252, 63,118, 51,229,219,231,249, 97,202,188, 61,155,155,
-199,118,239,117,185,183,155, 45,111,219, 48,169,151,253,165,181,247, 29,144,197,255, 0,186, 86, 69,154,185,177,175,167, 54,191,
-110,233, 53, 41,149, 43,218,189, 9,184,108,215,247,190,249,155, 69,160, 50,234,210,253, 65,250, 53, 77,200,172, 42,159, 74,151,
- 45,166,227,134, 30, 29,118,127,120,246,186,191, 46,244, 59,148,198,229, 93, 91,162,198,209,109, 69, 98,214,187, 45,122, 85,145,
-109,220,147, 54,155,112,111,218, 69, 66,255, 0,180,170,251,125, 80,157,121, 82,101,220,150,181, 18,154,240,167,215,104, 46, 83,
-162, 85, 36,212, 19,245,147,172, 55, 5,237,158,182,189,170,118,111,241,175,183,251,177,186, 92, 50,213, 47,138,213,133, 67,216,
- 27,113, 74,181,183,186, 14,223, 84,174,122, 47, 11,119,174,202,223, 59, 29, 14,226,170,191,178,245,148,204,114,158,230,219,222,
- 52, 89,210, 61,212, 74,157,109,221,244, 74,100,119,233,207,218,140,207,171,105,175, 15, 60, 86,219, 59, 19,183, 23, 37,185, 55,
-107, 42,215,157,246,197,244,141,202,218,155,189,189,196,135,110,218,246, 85,232,222,219,222,187,117, 26,163,120, 88,142,109,229,
- 70, 70,225, 69,136,139,192, 85, 33, 71,143, 94,160, 33, 53, 10, 36,116,205, 53, 8, 43,126, 27,135, 2, 45, 74,111,229,107,222,
-224,251,173,219,227,235,252,241,159, 47, 99,243,255, 0,140,109,229,209,192, 61,139, 67,254, 54, 13, 55,134, 30, 56,238,159,226,
-247,134,189,165,221,155, 88, 82,239, 26, 58,127,141, 58,134,224, 29,184,254, 17,110,133,181,238,252, 37, 74,228,217,202, 39,240,
-190,165,239, 17, 99,253,100,191,208, 49,227,221, 17,185, 92,241,117, 46,135,178,187, 35, 81, 28, 31,213, 31,183,183,186,171, 31,
-122,172,157,204, 93,241,102,218,215,157,151, 58,233,188,119, 54,204,184,111, 91, 90,206,160,237,157, 94,102,218, 53, 31,110,232,
- 55, 5,201, 73,181, 97, 62,229, 82, 21,212,253, 17,170,156,202,136, 53,143, 5,170,122,233,238,255, 0, 21,182, 21,251, 73,221,
- 38,109, 61,163,187,173, 42,230,243,109,206,204,217,215,189, 66,226,221,186, 53,235, 74,102,187,180, 15, 88,202,106,225,181, 40,
-212,205,160,161, 61, 71,164,207,141,102,114, 42,155, 50,125, 77,232,203,169,120,130,166,250, 89,240,157,111,237,173,252,177, 83,
- 70,217,139, 67,114,246,121,205,192,178,182,194,199,221,235, 38,179, 78,133,124, 51,107,215,171,138,221, 10,189,205, 93,167, 93,
- 54,173,114, 93,149, 85,143,101, 93, 20, 42,173,118, 11,240,157,147, 78,174, 70,121,218, 70, 95,139,225,190, 91,109, 66, 82,230,
-223, 59,143,119,166, 50, 8,184, 3,231,127,135,166, 49, 78, 42,118,162,139,177,156, 68,238,246,208, 80, 63,132, 77, 83,182,246,
-242,168, 91, 74,166, 93,239, 65,153,117,219,117, 40, 41,100, 86,172,219,150,169, 75,166,194,137, 94,175, 81, 43, 42,159, 72,151,
- 83,133, 10, 28, 42,156,138, 35,149, 8, 81, 34,197,146,211, 13,173, 88,184,129,221,147,190, 91,193,122,238,130, 40, 10,181,162,
- 92,146,233,172,210,109,231,107, 47, 92,147, 40,244, 11,118,135, 75,181,237,216, 53, 75,142, 68, 40,170,184,107, 72,161, 81,105,
-222,253, 60, 68,134,137,147, 11,242, 90,133, 13,183, 81, 21,165,172, 21, 55, 58, 70,221,186,116,193,180,169,223,215, 31,255,217,
+137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13,
+ 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0,
+ 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7,
+116, 73, 77, 69, 7,217, 11, 23, 13, 49, 40,184,203,133,107, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,148,101,199, 93,
+231,249,137,229, 46,111,201,151, 75,173,218,229,146,188, 27, 27, 83, 50,244,216, 24,170,161,212,110,179, 13, 91,137, 99, 6,204,
+176, 73, 3,211, 51,109,250,140, 37,205, 52,115, 12,167,177, 81, 21,208, 6, 26,152,163,106, 24,186, 27, 24,104,149,221,192, 48,
+199,224, 86, 25, 4,182,161, 1, 23,182,177,145,109,217, 42,107,177, 84,107, 86, 86,102,190,229, 46,177,204, 31, 17,239,229,171,
+116, 45, 89,155,164, 18,247,171,243, 78,170,222, 18, 55,226,222,136,248,254,126,223,223, 47, 34,160, 65,131, 6, 13, 26, 52,104,
+208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,
+ 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,120, 78,160,158,227,235,137,248,202,129, 29,
+ 82,178,197,123,134, 64, 29,223,111,208,160, 65,131, 6, 13, 26, 92, 3, 16,128,148, 82,220,254,175,247,188,238,247, 62,241,243,
+223,126,252,211,191,248, 29,139,239,249,190,175,250,195, 84,203,157, 83,223,105,208,160, 65,131, 6, 13, 26,188,192, 61,117, 1,
+164, 63,254,214,151,191,251,231,191,251, 21,111,223, 86,143, 58, 91,122,157,214,155,191,230,165, 47,255,218, 87,108,217,253,145,
+207, 28, 61,186,212,175, 30, 3,124, 67,238, 13, 26, 52,104,208,160,193, 11,155,212, 37,208,254,250, 91, 91,223,245,207,182,154,
+215,140, 78,156,162, 94, 90,196,140, 74, 94,246,178, 91,230,191,251,107,111,251,214,207, 61,179,164, 62,255,236,202, 39,129, 81,
+ 67,236, 13, 26, 52,104,208,160,193, 11,219, 83,207,254,250,137,149,163,155,102,211,215,190,233,182,222,118,111, 60,118,117, 5,
+179,186,202,252,214,173,250,109,223,248,170,175,183,206,188,244, 35,143, 30,253, 56,176,216, 16,123,131, 6, 13, 26, 52,104,240,
+194, 36,117, 0,225, 61,171, 31,120,116,249, 19,199, 70,118,211,157,175,156,123, 89,174, 52,245,104,132, 61,125, 10,178, 54,119,
+190,233, 85,175,124,237, 45,179,187,254,252,211,207, 62,209, 47,204,225,230, 17, 53,104,208,160, 65,131, 6, 27,247,158,159,235,
+235,229,192, 44,112,227,215,222, 62,243, 3,191,253,182, 29, 63,114, 75, 75,231,195, 97, 13, 74, 33,175,191,149,252,166,155,120,
+252,217,197,149,123,126,229,145,159,253,208, 39,158,249, 53, 96, 53,254,222,191,144,111,166,247,126, 39, 48, 31,255,121, 88, 8,
+241,162, 54, 74,254,177,181,183,193,186,231,191,111,215,153,207,255,222, 71, 14, 95,203,215,105,208,160, 33,245, 75,135, 4,122,
+192,182,237, 61,253,109,255,249, 7,110,251, 87, 95,187,189,179,189, 24, 89,192, 33,182,221, 72,235,230,151, 80,121,199,255,246,
+155, 31,253, 79,255,238, 15, 63,245,147,192,211,177,190,151, 77,236,222,251, 29,192,142, 13,126,125, 73, 8,113,104,131,229, 62,
+ 12,236,142,255,188, 95, 8,177,247, 69, 78,234, 47,138,246, 70,227,100,119, 36,142,157, 83, 31, 29, 2, 14, 3, 7,132, 16, 75,
+ 87,224, 58,235,203,231, 74,247,193,203, 32, 75,128, 67,226,222, 71,150, 46,226,247,103, 62,255,123, 31,185, 42,207,255,185,186,
+206,243, 96, 16,237,158,106,215,184,191, 29, 18,247, 62,114,160,161,166, 6,151, 10,125, 25,164,236,128,153, 77,221,228, 43, 54,
+117,244, 38,231,133, 56,195, 82, 16, 32,132, 16,126,252,142, 24,191, 63,249, 84, 3,237,218,250,209, 79,124,224,248,159,252,226,
+183,223,244,237,111,220,218,153,171,106, 15, 75,139, 20,237, 46,201,166,109,252,242, 61,187,222,190,243,246,109, 47,127,199,131,
+127,241,206,211,253,234, 35, 87,136,216,247, 0, 15, 92,196,100, 12,112, 0, 56, 40,132,216,223,116,155, 23,141,202,176, 39,190,
+206,101,224,141, 39,220, 7,189,247,251,163,225,114, 57,228,190, 19,120,248, 18,126,119, 16,184,243, 10,147,202, 60,240,177,117,
+111,239, 5,238,111,122,199, 85, 37,243, 29,192,131,235,200,252,140,254,230,247,237, 58, 12,220, 35,238,125,228, 96,115,199, 26,
+ 60, 23,164, 46, 0,209,201,212,206,159,121,235, 45,239,121,219,235,182,238,154,109, 37,169, 19, 50, 16,182,148,225, 37, 4, 66,
+171, 51,254,141,148, 8,165,214,254, 45,194,103, 14,225,107, 47,156,209, 26, 57, 85,142,177, 53,110, 36,248,129, 59, 95,243, 53,
+175,191,125,203,251,127,248,189, 7,223,245,177,199, 78,252, 38, 80,242,220, 75,241,123,128, 61,222,251, 61,192, 93, 87,194,115,
+107,240,188,226, 99, 23,249,253,187,129,221,222,251,187,174,134,215,252, 60, 96,207, 57,218,216,144,250,213,245,206, 31, 94,167,
+142,156, 13, 59,128,135,253,190, 93,247,136,123, 31,105,156,136, 6,207,137,167,190,101,223,183,190,228,189, 63,254,198, 27,222,
+ 92, 13, 29,222, 9,148, 20,193,129,247, 34,188,144, 8, 39, 2,245,122, 64,138,224,219, 59, 15, 10,132, 16,193,223,247,160,132,
+ 16, 90, 10, 21, 61,226, 64,234, 30,240, 30, 39, 4,229,176,226,181,183,108,221,242,240,123,190,243, 87,126,252,215,254,236,165,
+191,251,167,143,253, 44,112,226, 10,121,237, 99, 79,136, 11,120,107,211,255,126,216,123,127,103, 67,236, 47, 26, 28,138, 74,204,
+ 33, 33,196,193,232,201,207,199,103,125,247, 84, 31,216, 1, 60,228,189,191,227, 10, 61,251,253, 4,121,255, 66,184, 26,253,236,
+238,179,188, 55,239,247,237,218,211,200,191, 87,133,208,231,207, 66,232,247, 3, 7,196,189,143, 28,142,159,143, 21,196,241,119,
+ 30,244,251,118, 29,110, 60,246, 6, 87,221, 83,207, 18,185,227, 91, 94, 57,255, 6, 63,168,169,139, 18,156, 11, 36, 61, 81,214,
+199,254,188, 88,227, 93, 37,145,155,182, 70,114,119, 8, 9,184,168,226, 11,152, 48,188,116,129,248,165, 4, 75,200,207, 23, 80,
+149, 53,179,105, 42,255,159,123,191,233, 39,222,240,242,237, 95,241,191,255,250, 71,239, 45,107,251,137, 43, 65,236, 66,136,243,
+ 74,155,209, 59,127,128, 53,153,118,103,156, 20,247, 54, 93,232,154,198,126, 96,255,217, 60,239, 72,218, 7,128, 3,222,251, 7,
+167, 72,112,199, 21,124,246, 7,198, 70,196,243,224, 49,238, 92,103,212,238,158,242,224, 27, 82,191,242,120, 96, 29,161,223, 33,
+238,125,100,210,239, 98, 46,195,126,191,111,215, 1,130,138, 52,158,107, 30, 4,110,107,110, 95,131,141, 66, 94,194,111, 84, 85,
+187,197,223,251,251, 19,127, 45,100, 73, 39,181,116, 90,208,206,125,124,185,181,255,207, 28,185,172,192,214,136,172, 29, 72,222,
+ 57,112,142,137, 87, 14, 64, 5,174, 0, 55, 2, 95, 0,101,248,183,175,226,247, 61,222, 59,106,235, 48,165,229, 39,190,235, 13,
+187, 31,222,247, 93,127,112,235,182,222,119, 70,218,151, 87,243, 38, 9, 33, 14, 16, 98,154,211, 30,211,158,166,251, 92,211,184,
+ 83, 8,113,207, 70,164,116, 33,196, 61,235, 60,234,251,174,241,182,239, 89,167, 82, 76, 75,188,123,162,215,216,224,202, 25, 81,
+ 59,214, 41, 35,247, 79, 19,250, 25,125, 45,144,251, 61, 83,111,237,240,251,118,221,221,220,197, 6, 87,211, 83,199,195,226,125,
+127,248,196,187, 62,240,233,147,223,249,202,237,173, 91, 4, 72,231,189,139,221, 18,231, 3,101, 15, 43, 39, 95,127,243,204,171,
+126,244,235,110,223,145,235, 92, 58,231, 64,169,224, 91, 59,135,175,250, 8, 37,144, 55,189, 14,185,229,118, 68,111, 59, 34,239,
+129, 41,113,131, 19,248,213, 35,184, 19,143,129, 25,129,104,225,177, 88, 15,174, 95,241,230,215,220,124,243, 7,247,125,215,111,
+252,243,251,255,139,250,226,145,229,247,179,150,188,119,181,136,253,176,247,254,192,212,224,220,121, 69, 6,252,151,103, 68, 31,
+186, 66,153,214,211, 25,254,151,180,220,236, 74,148,241, 92,180,119, 93, 61, 55, 84,222, 37,120,200,251, 89, 75,174,156,247,222,
+239,188,134, 99,235,211, 36,177, 95,220,251,200,129,152,156,181, 99,234,243,171,166, 66,173,203,186,191,168,140,251,243,144,230,
+ 90, 63,189,132, 37,111,151,187, 18,224, 34,140, 40,214, 25, 81,103, 35,246,131,126,223,174, 67, 83,227,100,247,133,126,211,160,
+193,229,144,186, 5, 6,192,103,254,252,241,254,123,255,252,241,126,139,179,111, 98,179,233,173,175,221,250,195,223,121,199, 75,
+174,107,203, 84, 26,231,131,244, 94, 20,248,114, 0,118,128,122,217,155,209,119,124, 47,234, 37,255,228,156, 18,130, 63,245, 4,
+230,241, 15, 97,159,252, 40, 66,165,224, 61, 94, 64, 53,172,120,217,245,155,102,255,224,167,255,251, 95,253,198,119, 62,116,234,
+228,114,241,167, 92,185, 24,251,185,112, 69,214,199, 70, 98,187, 59, 14,246,157,103,249,252, 48,107,210,240,210, 57,202,120, 96,
+234,183, 7,132, 16,251,167,202,189,155,117, 25,221,177,204,189, 27,201,222,247,222,223, 29,189,209, 29, 23, 91,175,171,209,222,
+243,180,245,190, 88,238,244,100,124,197, 51,197,167, 60,218,105, 92,147,222,172,223,183,107,207,186,186, 31,152,250,123,223,149,
+ 32,117,191,111,215,153,207,235,222, 71,246, 71,226,189, 47,246,129,249,117,223, 63, 8,236,189,152,216,113, 84, 19,206,222,215,
+131,129,178,247, 92, 73,102,241,183,227,229,100, 59,207,101,160,199,114,246, 71,195,231,114, 8,126,154,212, 15,108,176,172, 3,
+ 83,245,218,227,247,237,154,191,130, 70, 70,131, 23, 49, 46, 69,182,118, 64, 65,144,162,143, 17,214,143, 63, 9, 60, 21, 95, 79,
+ 10, 65,103,223,158,151,253,212, 7,238,249,202,239,191,165,157,118,140,181,248, 98,128, 59,117, 28,183,116, 20, 95,173,144,190,
+229, 94,178, 61,191,124, 86, 66, 63,195,106, 93,184,149,228, 13, 63, 76,242, 53, 63, 6,222,131,176,129,183, 5, 84,195,154,215,
+190,244,186,205,239,253,177, 93,251,128,155,185,250,235,238,167, 39,163, 75, 26, 96,222,251,221,192,227,209,235, 59,151,183,191,
+ 35,126,254,177,184,244,234,108,152, 94,231, 58, 31,191,247, 48,103,198,254,215,151,249, 96,140, 15,159,147,124,189,247, 15, 17,
+226,120, 59,206, 83,175,135, 35,169, 62, 87,237, 61, 91, 91, 31,143, 36,209, 72,197, 87,134, 96,166, 9,112, 71,244, 92, 47, 21,
+103, 62,175, 80,214,199,206, 98,128, 49,229,137, 62,236,247,237,218, 80, 88, 99, 42,139,252,252,125,125,223,174, 7,207,163, 84,
+ 60, 20,255,158,175,157,227,126,249,248, 21,184, 31,231, 50, 14, 55,106, 68,238,108,186,110,131,171,229,169, 19,189,225, 58,190,
+152, 34, 83,117,203,230,252, 91, 31,124,219, 43,246,190,229,101,155, 95, 90,142, 28,214,214, 80,142,192,212, 32, 60, 34,129,236,
+ 59,126, 22,245,154,111,158, 20,182, 50, 42,249,224, 39,158,224,131,159,124,130, 83,253, 17,137, 18,188,242,250, 5,190,237,142,
+219,249,170,219,174, 11, 5,223,244, 6, 68, 58, 67,253,145, 95,128, 84,135, 42, 72,129,233,151,124,223, 55,190,230,245,191,253,
+161,207,254,240, 7,255,246,137,119,115,149,150,187, 69, 18,219,179,206, 35,188,216, 50,246,196,201,100,253,224, 61, 56,101, 36,
+ 76,123,179, 59, 88,203,180, 63,116, 1, 99,227,161,169, 9,238,192,212,164,176,115, 93,189,239,246,222, 31, 62,199, 70, 49, 15,
+156, 69, 42,156, 46,107,207,148,103,243,208,243,212,222,245, 89,196, 75, 83,245,219,113, 21,199,202,238, 11, 76,186,151,211,175,
+174,120,248,229, 28,100,184, 99, 61,169, 79,140,231,144,129, 61, 45,249,222,205,153,177,221,203, 49,132,167,159,215,217,250,211,
+164,255,249,125,187,150, 46,176,140,235,226,250,122,200, 30,223,123, 1,245,237,240,186,241,188, 35, 62,239, 29,211,109,240,251,
+118,221,113,177,210,190,223,183,235,146,250, 77,148,224,215,147,122,147, 5,223,224,170,145,250, 25,253, 47,146,232,236, 91, 95,
+179,240, 19,251,239,122,249,189, 55,118, 91,173,209,192,226,109, 9,117, 25,175,164, 16,102, 64,242,166, 31, 57,131,208,255,219,
+231,143,240,206,223,249, 48,135, 79,174,146,103, 9,137,150, 72, 15,159,124,250, 20,239,251,171,207,242,173,119,220,198,255,185,
+231,205,180,179, 4,185,237, 21,232,215,220,133,249,248,111,194,204, 54,192,135, 32,186, 23,252,244,219,223,248, 35,255,245, 99,
+ 79,188,207,123, 62, 77, 8, 17, 92,105, 66, 95,239,189,238,191,200, 50,198,155, 78, 76, 79, 38,247,156, 37,182,187, 55,122,183,
+ 15,197,201,100,124,237, 59,206, 83,252,125, 83, 19,220, 61,235, 73, 33, 94,251,161,169, 9,244, 62,239,253, 25, 82,119,148,220,
+239, 94, 55,249,220,181, 46,142, 62, 93,183,221,207, 83,123,239,155, 42,239,254,152,196,184,254, 89, 93,109, 15,247, 74, 17,239,
+ 67,103,243, 92, 99, 56,226, 0, 33, 28,113,248, 42,181, 97,233, 44, 75,215,206,144,124,175, 16,169,223,119, 70,127, 58,147, 20,
+247, 70,210,155,190, 15, 15,250,125,187, 14,158,135, 60,207,236,235,235, 36,233,104,184,156,217,215,247,237, 58,155,124,190, 55,
+ 42, 21,135,206, 67,200,119,179,150,181, 62,238,151,119, 62,135,243,243, 82,163, 68, 53,184, 88, 92,110,214,248,152,208, 95,242,
+142,111,184,225, 87,127,255, 7, 94,249,174,235,178,180, 53, 44,107,188, 25,130, 41, 67, 28, 93, 9,192, 34, 54,223,132,254,234,
+183, 79,126,252,249,163, 75,188,253, 87, 63,200,167,142,172,224,211,156, 90,165,144,100,164,173,156, 78,183, 67,222,233,240,254,
+191,254, 2,239,121,255, 71, 39,191, 81,183,255, 83, 68,251, 58,176,195,112,117, 9,166,170,121,253,109, 91,183,127,245, 43,183,
+191,133,201, 34,184,139, 34,220,251,206,243,122, 24, 56,181,110, 66,188,231, 18, 18,173, 30, 92,231, 93,222,113,174, 50,226,251,
+211,217,246, 59, 35,233,158, 15, 7,133, 16,103,221, 20, 39, 18,195,253,235,188,157,221,231,152, 44,199,132,121,231,217, 8,101,
+170,110,207,103,123, 15,199,242, 14,156,165,172, 43,238,229,122,239,239,187, 28,131,238, 2, 94,231,217, 48,142, 63, 63, 30,175,
+125,165,112,247, 5,218, 48,253,222,252, 21,204,186, 14,253,233, 44, 68, 29,227,232,119,158,167, 47,158,189,175,223,251,200, 93,
+103,139, 49,199,107,156,183,175,139,123, 31,217, 43,238,125,228,254,243, 17,122,252,222,126,224,174,105,181, 38, 26, 13, 23,131,
+157,103,105,239, 70,113,232, 60, 74, 81,131, 6, 87,156,212, 5, 32, 22, 58,122,247,239,253,143, 47,255,253,247,126,203,173,255,
+ 3, 53,148,174, 14,203,209,132,133, 68,130, 22,160, 5,158, 10,245,178,175, 67,116, 55, 79, 10,184,255,119, 62,202,231,191,180,
+204,178, 17, 28,233, 27,158, 94,174,248,194,201, 17,135, 79,142, 88, 42, 44, 94,107,102,103,187,252,193,223,124,158,131,159,252,
+ 98,100,117,141,218,241,117,248,149, 19,160, 36, 8,143, 19,144,182, 82,190,103,215,203,119, 19,246,148,191,216,216,250, 3,231,
+121,237, 94, 55,233,221,121,177, 91,197, 78,237, 45, 62,105,250,133,200, 39,202,207,251, 47, 98, 80,223,115,129,242, 14,174,155,
+ 36,118, 76,213,111,253, 86,169,123,207, 87,191,179,212,237,185,110,239,222,231,106,227,159,216,150, 7,214,121,233, 87,130,212,
+199, 27,222,220, 63,245, 58,192,151,231,106, 60,112,190, 60,136, 13,183, 35,196,132,119,172,243,202,215,147,216,210,186,247,175,
+212,178,205,189,231, 75,242,138,228, 58,125, 79,239,190,192,178,186,123, 46, 64,198,231,236,235, 23, 61,201,125,121, 89,205, 82,
+214, 6, 47, 58, 82, 31,239, 40,211,125,243,109, 51,255,234,163,255,243,171,223,247, 61,175, 92,120,221,112,104,177, 88,112,117,
+ 40, 85, 9,132, 18, 8, 45, 16, 74, 34,180, 64, 94,255,154, 73, 33, 95, 60,118,154, 63,254,196, 83,208,110,133,101,110, 82,130,
+ 82, 88, 36,171,165,229,139, 39,134, 28, 62, 62,164,246, 2,167, 20, 31,250,212,147,107, 21,216,124, 59,126,180, 2,152, 88, 27,
+ 15,198,241,138, 27, 23,110, 3,174,227,234, 37,204,237,137, 94,228,197, 74, 98,211, 4,181,116, 17,164,112,112,131,147,201,161,
+ 13,202,180,231,178,252,119,175, 35,216,141,212,239,192,243,212,222,195,207,213,254,251, 49,132, 48,189, 87,251, 18,151, 39, 73,
+ 47, 69,242,190, 77, 8,113, 71, 84, 86,246, 78,189,238, 18, 66, 44,196,239, 44,157, 65,114,193,240,186, 82, 94,250,161,243,120,
+169, 7, 46,211, 51, 61,151,199,123,177,253,105,207, 57,251,250,198,226,218, 87,210,203, 61,176, 1,117,165, 65,131, 23, 4, 46,
+ 54,166, 62,150,219,175,255,161,127,178,229,167,126,237, 91,111,249,209,196, 41,134,149, 3,229,193, 59,132, 7,225, 4, 94,137,
+ 32,189,139,240, 19,161, 83,228,252,205,147,130,158, 56,177,194,104, 88, 67, 47, 91,179, 19,198,233,109, 82,130,247,156,238,215,
+212,149,225,198, 89,205,106, 81,175, 85, 98,102, 27,160,160, 28, 34, 90, 51,120, 60, 24,195, 75,182,205,108,205, 82,181,189,172,
+236,103, 46,178, 93,231,219,239,122, 58,105,102, 62,122,109,123, 46,114,155,216,221,231,152,108,184,144,119, 61,189, 73,207,121,
+214, 70,111, 84,210, 59,124,158, 54, 94, 84, 89,235,235,246, 28,182,247, 57, 89, 27, 30, 13,183,245, 49,239,251, 47,103,109,122,
+252,237, 70, 54,187,217,235,189, 63,200,153,251,211, 63,192, 37,238,244, 54,181, 5,233, 5, 13,178,184,102,125, 58,150,187,135,
+203, 91,179,190,177,254,244,229,137, 97,243,151, 83, 30, 23,177,252,116, 74,197,216,177,129,254,220,100,161, 55,120,209,144,186,
+ 0,152,201,213, 27,127,238,155,111,220,119,207,206, 45,111,170, 42, 40,146,176,229,171,183, 30, 81, 59,210, 84,178,108,173,107,
+ 33, 37, 90, 77, 86,176, 11, 0,111, 38,133,109,157,109,163,210, 4,235,136,251,197,251, 72,234,241,175, 23,160, 36,131, 97,205,
+147, 69, 65,246,186,169,170,122, 11,190, 6, 83,128,236, 33,188,195, 59,199, 66, 39,105,207,182,211,249,227,213,232,162, 20,136,
+141, 28, 25, 26, 99,155,227, 37, 84,227, 37, 53,119,108,240, 18,211, 19,193,142, 24,167,191, 20,204,159,199, 3,188, 28, 92, 18,
+ 9,199,239,238,124,142,219,123,213, 73, 61, 18,250,195,235,218,113,207,115,121, 66,159, 16,226,144,247,254,126,214,164,255, 29,
+222,251, 61,103,203, 35,216,160,194, 52,191, 65,149, 5,130, 20,126, 69,214,172, 95, 70,127,218,125,142,235, 94,145,176,203,212,
+ 58,247,102, 89,100,131,127,116,164, 62,150,178,147, 87,108,203,191,247,119,190,231, 37,123,191,106,107,123,235,168,114,144,233,
+ 64,232,181, 67,215,142,180,165,248,215, 31,122,230,147,183,204,165,115, 63,186,115,203, 45,133, 7, 49,246,214,235, 26,119,242,
+ 11,200,155,222, 0,192, 43,111,216,196,215,188,116, 43,127,249,153, 19,160,117, 32,113, 25, 9,125,188, 47,156, 11,191, 45, 78,
+ 13,120,233,246,181,113,231, 87,158,133,114, 5, 95,206, 33,226,137, 49,222,141,141, 2, 36, 87, 65,126,143,222, 19, 83,147,236,
+ 78,239,253,221, 27,156,232,231,215,121,197, 59, 94,192,125, 98,233, 10,124,247, 90,106,239, 70, 8,253,254,231,233,200,221,233,
+ 93,236,184,140,251,184,126,109,250,133,188,216,233,141,104,118,248,125,187,118, 95,198,161, 34, 75, 87,233,187,151, 67,232, 27,
+ 61, 45,237, 90, 29,151, 13, 26, 82, 63, 47,161,123, 96,235, 93, 95,185,240,206, 95,250,166, 27,255,215,237,121,146, 14,157, 64,
+180,131, 11,238, 43, 71,238, 60, 69, 10,255,203, 31, 61,249, 71,251, 63,122,252,247,127,227,174, 91,239, 21, 62, 42,239, 42, 30,
+240,162, 37,254,216,167, 39, 5, 75, 41,248,201,239,184,131,111,122,244,255,131,162,134, 44,141,167,187, 69, 82,119,128,119,208,
+ 31,242,250, 87,221,192,247,127,253,171, 39,191,117,199, 63,131,247, 53,194, 86,225,139,222, 35,133,231, 84,191, 24,173, 12,171,
+213,171,232, 61,237,141,187,155, 77, 79,150, 23, 59,217,143,215,197,254, 99, 25,216,215, 90,123,215, 19,250,254,141, 40, 57, 87,
+169,191, 45,121,239, 55,226,189,158,143,192,118,172, 83, 98,118,250,125,187, 46, 86, 57,217,195,139,100,141,244, 89, 78, 75, 91,
+138, 99,248, 16, 97,139,217, 67,103,249,205,125,235,140,171, 75, 86, 42, 46,210, 64,186, 84, 5,173, 65, 67,234,231, 36,116,161,
+149,120,217,187,255,249,245,191,244,206,255,110,251, 91,140,129,161,150,136, 76,226,157,199,143, 44, 29, 45,120,162, 52,197, 15,
+254,246, 23,127,253,145,199, 86,126, 7,112, 79, 45,215,199, 16,254, 21,126,226,169, 3,121, 27,251,196, 71,208, 75, 79, 32,230,
+111, 5,224,173,175,191,149,253, 63,246, 79,121,199,111,124,152,225,233, 18,242, 44,100,180,123, 15, 85, 13,195, 17, 95,245,138,
+109,188,239,157,223, 76, 39, 79, 66,173,234, 17,246,209,247, 35,210, 44,100,216,123,135,119, 22,164,228,241,163,167, 79, 20,149,
+ 61,193,213,221, 89,110,250, 68,171, 75, 73,192,121,222, 72,226,121,194, 53,211,222,152,101,190,158,208,239,121,158,171,117,185,
+134,205,250,132,179, 75, 81, 78,246,248,125,187,238,127,145,108, 83,122,247, 58, 66,191,243, 66, 75,219,174,240,243,219,216, 78,
+140,205,161, 58, 13, 46, 17,242, 2,164,190,245,129,111,186,225, 87,239,125,211,246,183, 20, 6,234,182, 70,180, 20,222, 1, 67,
+ 75, 39, 87,252,217,179,131, 99,187,126,237,179,239,122,228,177,149,255, 11,120, 2,120,230,115, 39,139,207, 33, 5,216,152,244,
+164,100,144,216, 77,159,250, 35,239, 61,227, 34, 63,250,141,175,230,175,126,246,187,121,199,183,124, 5, 47, 89,200,200,125, 77,
+ 87, 90,222,248,210,205,252,202,143,127, 3,127,241,238, 61,188,100,219,236,228,251,230,111,127, 29,127,250, 9, 72, 50,124, 76,
+194,195, 88,144,130,207,125,105,233, 73,194, 57,235,238, 5,118,159, 95,232,235, 77, 47,181,126,187,175,209,246,158,139,208,239,
+126,129, 17,250,149, 34,177,203,197, 60,151,190,148,235, 82,251,211,213, 34,218,233,118,236,221, 32,161, 95,206,146,184, 67,151,
+ 88,214,206,243,121,252, 13, 26, 92,138,167,206, 77,243,233,174, 31,252,138,133,111,172, 10, 7,221, 4,145, 10,124,229, 81,133,
+ 33,235, 40,126,235,147,139,159,253, 23,239,123,226,231, 86, 70,246,195,192, 34,225,160,151,252, 47, 30, 95,253,155, 35,171,245,
+ 15,109,110, 39,218,122,191,182, 8,174,213,198, 61,245, 23,152,143,254, 34,250, 77,239,152, 92,231,181,183,108,230,189, 63,244,
+117,252,236,247, 27,142,158, 26,144, 38,154,235, 23, 58, 95, 86, 31,251,232, 31, 98,254,254,183, 32,111,135, 1, 35, 21,222, 58,
+132,117,212, 69,201,251, 63,252,248, 71,129,213,171, 76,234,151, 50,192,207,144, 80,189,247,243,207,213, 58,235, 13,226,240, 84,
+253, 54,148,221,123,158, 61,233,175,133,246, 94, 75,132,126,201, 68, 23, 15,111,153,238,175,247, 95,100, 25,247, 77, 93,255,110,
+ 46,109,211,157,157, 27,172,235,206, 43,172, 80,108,164, 62,135, 46,225, 25, 92, 10, 14, 76, 25, 19, 27, 93, 77,112,230,178,208,
+ 75,207,105,104,208,144,250,218,103,183, 46,100, 47,157,207, 20,163,154,224,117, 15, 45,169,243,184, 76,240,206, 15, 62,125,240,
+231, 31, 62,242, 94,224, 31,226, 0, 28, 68, 50, 85,207,158,174,254,230,253,159, 89,250,196,191,248,154,173,119,152,194, 34, 82,
+ 25,101,120, 9,237, 25,236,223,255, 39,252,232, 36,250,141,239, 64,180,215, 54,163,201, 19,205,173, 83, 94,249, 4,245, 8,251,
+119,191,137,249,196,127, 64,100, 41, 72, 5,206, 66,146, 65,109, 72, 36,124,248,115, 71,142,254,229,163,199, 14, 18,246,126,191,
+ 42,164,190,238,136,207,139,153, 20, 14,174, 35,141,171,122,180,229, 37,224,224,212,164, 51,239,189,223,189,129, 29,243,118, 95,
+195,237,189, 38, 8,253, 44,187,234, 93,108,110,194,122, 98,184,156,120,252, 78,191,111,215,142, 75, 56,214,116,126,131,113,228,
+221,103, 33,194,231,255, 25,132,109,108,119, 92,193,241,181,209,251,184,231,133,118, 47, 26, 92, 27, 56,159,252,174, 30, 61, 54,
+122,236, 75,149, 53,237,182,162, 93, 91,218, 10,250,202,249,239,123,232,240,239,254,252,195, 71,126, 10,248, 36,112, 50, 18,122,
+ 60, 62,141, 26, 56,246, 75,127,126,236,192,114,109,209,181,133,218,133,172,185,184, 41, 13,157, 25,220,227,127, 76,245,254,183,
+ 99,255,225,253,248,149,103,206, 62,160, 6, 39,112,143, 31,164,250,253, 31,194,124,252,223, 67,158,131,210, 97,179, 25, 33, 16,
+ 50, 65, 20, 53, 40,207,207,252,222,199,127, 31,248, 66,188,254, 21, 39,245,169,117,203, 23, 61,241,196,101, 72,211,131,248,190,
+ 11,120,186,207, 53,214,239,100,118,223, 6,238,197,125,215,112,123,207, 69,232,135, 56,255,158, 5, 23, 52,250,214,109, 49,188,
+123,221, 61,187,216,254,246,192, 58,207,117,195,147,251,212,146,173,137,177,114,137,253,130,117,198,217,165,224,190, 13,212,117,
+250, 59, 7, 47,229, 76,244, 13, 98,105,163, 30,120,172,215, 3, 87, 97,124, 61,112,129,235,174,223,150,184, 33,245, 6, 87,132,
+212, 89,236,155,191,253,158,223,253,226,222,135, 30, 59,253,216,135,142, 14,143,253,202,161, 19,135,190,246,223,125,246,167, 15,
+ 28, 58,245,115,132,163, 47, 23,129, 17,103, 30,160, 98,129,209, 23, 78, 20,127,252,238, 63, 61,250,112,146, 41,124,223,224,107,
+ 7,196,229,109, 66, 64,187, 7,102,153,250, 35,239,161,122,255,247, 82,253,191,247, 96, 62,178, 15,243,223,126, 25,243,151,191,
+ 64,245,129,127, 73,245,190,183, 81, 31,188, 31,223,127, 2, 58,179, 97, 83,154,113, 10,156,147,248, 82,144,228,146,255,120,240,
+115,143,254,215,191,123,230,119, 9,210,123,125,165,189,243,232, 49,125,140, 51,165,187,165,139,156, 40,167,189,191,112,234,211,
+212,164,191, 17,162,184, 90,157, 32, 74,227,211, 94,220,238,115,109, 77, 58,181,228,107,254, 90,109,239,121, 8,253,206,203, 12,
+ 19,140,143,234, 28,191,166,251,203, 78,239,253,195, 27,217, 25,110,234, 24,221,233,123,124,177, 91,227,238,185, 92,207,247, 10,
+110, 27,187,251, 92,199,160,158, 37, 27,157,171,172,234, 76,183,231,238,115, 29,169, 58, 85,175,203, 54, 70,227,125,156,110,211,
+158,115, 29, 51, 27,149,129,245, 6, 78, 35,189, 55,216, 48,206, 39,191,215,192,169,191, 58,188,250,127,255,213,225,213,135,129,
+153, 72,226, 71,129,101,160, 31,191,179,126, 91,177,241,121,235, 71,127,225, 67, 71,222,251,250,155,218, 47,121,219,235, 54,221,
+ 62, 90,169, 16,189, 20, 50, 25,118,154,195, 67,146, 32,146, 36,100,176, 47,126, 18,115,252,208,164, 56, 33, 53,232, 20, 58,221,
+117,189, 30,168, 44,222,181,200,179,148, 67,159, 63,182,244, 47,255,253, 95,239,139, 94,250,122, 3, 99,163, 19,252,165, 28,213,
+122,207,197, 76,178,113,183,180,123, 88, 59,185,108, 76,116, 7,163, 60,183,126,175,234,177,244, 57,158, 84,238,191,202,125, 97,
+ 63,103, 30,133,121,119, 36,225,253, 83,117,219,205, 90,246,240,225,104,216,236,188,214,218, 27,219,117, 54,175,243,161,139,232,
+ 10, 7, 46, 97,237,250,238,104, 48,141,143,250, 60,188,238, 62,140,143,181, 93, 79,158,135, 46, 97, 5,193,116,251, 14, 95, 70,
+134,247,116, 60,120,135,223,183,107,207, 89, 78,119,219,200,239,239,142,132,117,174,254, 52,233,135, 87,153,196, 14, 76,221,155,
+121,224, 99,126,223,174,253,172, 29, 7, 60,222, 92,106,186, 94, 7,184,204, 61,223,197,189,143,236,141, 57, 14,227,254,253, 64,
+188, 31, 99, 85,107,126,234,126, 76, 59, 14, 47,134,100,205, 6, 47, 16, 82,183,145,184, 77, 36,113, 25,223, 43,227,203,114,238,
+115,203, 13,208,119,222,127,234,127,250,189, 47,254,204,166,142,126,247, 63,187,125,246,134, 98,185,130,153, 4,145,171,181,245,
+235,129,193, 33,205,207,191, 14,205, 3,206, 67,105,113, 43, 21,173,235,182,241,153, 35, 75,253,187,246,254,249,222,229, 65,253,
+225, 41, 35,227,106,227, 80, 36,244,139,158, 36,133, 16,251,167, 54,176,153,159,158,232,159,239,142, 16,215, 68,223, 21,189,147,
+ 29,235, 60,207,245, 88, 34,156, 94,245,192,181,218,222,179,224, 98, 61,178,203, 33,158, 29,108, 92,202,222,127,177, 6, 78,244,
+ 62,119, 94,142,151, 62, 69, 70,103,219, 54,246,192, 69,142,151,131,172, 29, 93,252,192, 5,238,233, 85, 53, 94,227,118,180,211,
+198,230,216, 0,186,251, 60,138,211,229,100,255, 79,227,206,117,222,255,249,198,194,120,185,221, 97, 26, 52,184, 8,200, 11,208,
+168, 33,196,203,151, 8,199,143,158, 6,134,241,125,127,129,223,150,192,242,202,200, 62,242, 29,251, 31,251, 63,126,235,227,139,
+159,205, 83, 73,178, 82,227,150,107, 40,220,164, 20,129, 64,136,179,188,226,127, 88,160,114,248, 21,131, 88, 42,105,205,207,241,
+200,225,229,163,111,121,215,193,119, 29, 62,214,255, 47,177,110, 67,174, 94,214,251,193, 56,185,222, 21, 15,226,184,156,253,191,
+247, 19,182,151,221,207,198, 50,124, 15,196,137,229,170,239,104, 22, 15,133,185,227, 2,215, 58, 72, 56,246,244,208,181,222,222,
+231, 24,227,120,253, 70,251,206, 1, 66, 56,224,158, 75, 8, 9,236, 57,139, 97,112,185,222,237,164,236,139, 93, 67, 29, 15,116,
+185,147,115, 39,250, 45, 1,247,139,123, 31,185,243,185, 88, 11, 63,117,164,234,225, 11,246,243,141, 29, 70,179,209,235, 46,137,
+123, 31,185,131, 47, 63,176,231,108,134,220,109, 87,121,253,124,131, 23, 41,196, 85, 46, 95, 1,237,104,233,190,250, 7,223,184,
+245, 71,254,205, 91,111,248,182, 27,102, 83,109, 74,143,209, 2,114,133,208, 50,120,238,114,170, 58,222,131, 5,111, 28, 20, 22,
+ 85, 59,146, 68,176, 98,225, 61, 31, 62,245,103,255,246,143, 30,127,176,182,238,111, 89, 91, 74,103,174,197, 7, 16,165,224,245,
+ 94,226, 97,194,233,102, 7,159,199,122,141,229,240,233,141, 58, 14,110,240, 52,184,107,174,189,207,211,115,223,193,151,231, 38,
+ 28, 34,200,237,215,236, 70, 47,113,199,186,177, 7,122,255,116,214,125, 84, 17,118,175,123,246, 7,159,175,141,109,162, 4,190,
+115, 93,125, 14, 61, 23, 30,242, 57,174,125,240, 69,178,201, 79,131, 23, 41,169,143,137, 61, 7,102,129,237, 55, 47,100,223,112,
+247,155,183,126,251, 15,236,220,252,213, 55,206, 36, 9, 94,224,189,199, 9,129,155,170,141,244, 32,189, 15, 91,205, 10, 88, 44,
+172,251,207,159, 60,245,169, 7, 63,122,252,143,254,254,233,193, 7,128, 47, 69,229, 96,116,173, 18,122,131, 6, 47, 74,131,229,
+ 60,164,222,160, 65,131,171, 11,253, 28, 92,195,178, 38,217, 23, 79,157, 42,223,247,147,127,248,244, 71,254,237,135,142,124,229,
+ 87,223,218,253,234,239,126,221,194, 27, 94,119, 67,251,186,249, 76,117, 58, 90,164, 90, 10,105, 28,126,104, 93,181, 92,185,225,
+231,143,143, 78, 28,248,196,169,191,251,203,195,253,191,121,246,116,117, 8,120, 6, 88, 33,196,208,175,218,154,244, 6, 13, 26,
+ 52,104,208,160, 33,245,115, 24,239, 64, 53, 38,118,160,127,170,111,158,253,147, 79,159,254,240,159,124,250,244, 2,176,173,157,
+201, 77,185,150,189, 68,137,212, 56,111, 10,227, 87,135,165, 93,244,158,227, 4,137,125, 37, 26, 7, 3, 46,156,168,215,160, 65,
+131, 6, 13, 26, 52,164,126,149,137,221, 18,228,242, 50,122,218,167,129, 99,192,227,195,210,233, 97,233,212,212,247, 29, 33,155,
+189,142, 6, 65, 25,141,130,134,204, 27, 52,104,208,160, 65,131,231,153,212,215,147,251,120,121,156, 96,237, 12,116,185,142,212,
+253,212,223,134,200, 27, 52,104,208,160, 65,131, 23, 24,169,175, 39,248, 49,113,195,153,137,123, 13,137, 55,104,208,160, 65,131,
+ 6,215, 16,169,159,141,228, 27, 52,104,112,109,227, 0,107,155,243, 52,107,173, 27, 52,104,208,160, 65,131, 6, 13, 26, 52,104,
+208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,
+ 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 94,124, 16,223,251,117,175,243,166,191, 74,119,110,
+150,185,133,121,146, 44, 35, 77, 83,250,171,167, 57,125,114, 57,156,128,106,106, 90,169,230, 85,175,126, 25, 69, 97, 24,150, 35,
+110,184,233, 6,172, 51,124,250, 83,143,209,106,229,204,204,244, 40, 71, 35,182,109,219,202,204, 92, 11,179,184,140, 82, 18,169,
+ 19,150,158, 57,194,233,197, 37, 86,170,154,194, 91, 90,105, 14,194,147,181, 59,164, 89,142,183,150,178,191,202,112,233, 4,175,
+126,249,237,188,246,245,175,225,115,143, 61, 70,127,185,196,107, 65,214,238, 50, 51, 55,207,169,147, 39, 73,211, 4, 33, 53, 43,
+253,146,225,168, 64, 56,203,246,249, 46,155,102, 51,158,126,250, 36,127,249,232,103,153,155,233, 34, 60,120, 45,217,241,170,151,
+211,246, 32, 60,216,225,128,147,199, 79, 50,119,195,117,232, 86,142,176,142, 98, 56,100,241,228, 18, 91, 59, 25,249,168,207,202,
+137, 37, 78,215,150,190,117, 88,173, 24, 33, 24, 26, 11, 66, 80,149, 6,161, 60,183,110,218,202,188,146,100,206,210,109,207,146,
+221, 48, 79,237, 61,127,245,241, 71,209,194,211, 94, 94, 69, 46,151,168, 77,179,116,175,219, 6,198,144, 88,199,104, 48,160,191,
+ 60, 36,105,167,228,221, 22,179, 11, 61,182,110,221, 68,213, 95,229,115, 79, 30,230,248,192,209, 91,152, 99,219,245,219,152,153,
+155,103, 88,244, 57,114,116,137,214,112,133,217, 78,139,124,118,129,103,250, 35, 4, 48, 63,219,230,228,241,147, 84,195, 17, 69,
+ 85,179,108, 44,105,171,195, 13,155,230,216,218,206,232, 42, 15,163, 17,162,170, 65, 9,172,169, 49,198,209,175, 12,171,166,102,
+ 88,213,220, 52,215, 65,229, 57, 54,209, 12,156,229,139, 79,159,100,101,165, 68, 41,129, 21,146, 44,209,244,186, 29, 78,245, 87,
+ 41, 43,199,214,182,228,214,110,206,233,213, 17,171, 85,133, 19,208,202, 83,110,156,153,165,141,226,200,112,196,103,142, 45,226,
+ 80,108,206, 53,121,166,145, 74, 65,170, 17,157, 14,165, 79, 89, 58,125,138,165,229, 62,165,181, 56,239,145, 78,160,149,100,100,
+ 13, 42,145,180,179,140, 20,129,198,163,240,164,137, 70, 75,137,115, 14,149,104,242, 44,163,221, 74,201, 19, 9, 2,172, 19, 8,
+175,152,219,210, 98,243,214, 77,116,187, 57,167, 79,247,249,135,207, 62, 69,127, 48,100,199,173,215,115,235, 77,215, 33, 19, 5,
+120,180, 16, 8, 33,169,234,138,162, 95,132,227,125, 5,232, 92,211, 91,152, 37,239,180,144, 94, 32,132, 64, 72,137, 80, 18, 41,
+ 36, 2, 1, 66, 32,180, 68, 10, 69, 85, 84, 88, 99, 64, 72,140,181, 96, 60,197, 96,128,148, 96,107,199, 39,254,230, 16,171,139,
+ 35, 22, 54,207,178,101,203, 60,105,162,104,205,180,201,218, 41,189, 94,206,252,194, 2,115,243,219, 57,117,228, 8,253,163,207,
+224,218,115,108,222,124, 19, 71,159,252, 2,253,211,139,204,222,122, 19, 35, 83, 99,150, 87, 88, 58,252, 20, 89,103, 6,151, 38,
+ 56, 44, 46,205, 80, 73,130, 43, 28,197,114,159,178, 44, 41,107, 11,222,210,109,181,168,133,103,197,212,116,178,156,249, 78,135,
+ 76, 41,122,179,109, 28,158,194, 89, 84, 59,167, 59, 63,199,204,182, 57, 58,173, 28,101, 61, 30,144, 90, 33,132,192,185,176, 19,
+179, 0,132, 16, 88,231, 16, 2, 60, 14,239,194,126, 81,222, 58,156,247, 8, 17,246,139, 18, 2,240, 22,231, 60, 8,144, 94,224,
+140,193, 88,131,181,177, 60, 33, 81, 82,132, 45, 37,157, 5,239,192,135,107,120,239,113,238,204,179,153,188,119,241,229, 39,159,
+ 43, 41, 67,159,138,239, 25, 99,112,214, 78,213, 99,237,239,248,119,147,178,189, 7, 31,234,225,177,120, 15,136,184,227,149, 23,
+120,103,241,227,223,226,145, 50,252,245,206,199,251,178, 86, 23, 33, 68, 60, 30,218,175,213,211,121,140,119, 72, 49,238, 63, 2,
+ 41, 4,214, 58,140, 13, 7, 73, 74, 41,113,214, 82,151,134,149,229, 1,194, 58,180, 84, 12, 7, 37, 10,104,101, 9, 82,101,212,
+ 3,131,178,134,153, 86,135,180,149, 48,234,175, 66,191, 64,117, 58,148, 85,129, 82,154, 36,105, 83,121,207,169,122,192,178, 31,
+226,171, 26,239, 44,173,118, 11,239, 44,189,249, 46,174,246, 32,161,211,203,240,174,198, 57,143,243, 80,140, 12,197,176, 64,106,
+133,197, 83, 87,158,227,167,134,156, 60, 61,162,172, 44,131,194, 48, 50,142,109, 89,155, 77, 51, 93,102, 23,122, 8, 37,192, 58,
+234,186,166,246, 53, 2, 75,101, 61,139,131,154, 39,142, 45,210,175, 12, 74,105, 64, 80, 20, 37,206, 3, 72, 16, 2, 45, 61,219,
+186, 29,242, 44, 67,107,133,180,150,133, 94,155,185,217, 14,139, 75,171, 60,249,204, 49,188,140,125,206,131,119,142, 86,158,179,
+121,243, 2, 58,145, 8, 60,121,222,230,233, 99,139,100,221,140, 60, 73,241,214, 49, 44, 75,172,181,220,122,219, 45,140, 70, 21,
+167, 78,173, 80,123,135,247,130, 44,207, 25, 21, 5,185,134, 68, 41, 60, 26,167, 51, 28,158,118, 42, 88,152, 93,224,216,169, 83,
+124,233,216, 73,138,210,160, 50,133,183, 22,172, 37, 77, 18,188,115, 12, 71, 37,105,150, 48, 36, 52, 20,175, 0, 0, 32, 0, 73,
+ 68, 65, 84,211,235,210,206,114,250, 43, 43, 20, 69, 65, 34, 36, 72, 65, 85, 91,172,115, 36, 90,113,221,246, 45,156, 90, 58, 78,
+ 53,180, 92,119,221, 22, 84, 28, 79,139,167,150,217,118,221,102, 94,254,138,151,226,156, 99,121,101, 25,132,167,149,229, 88,103,
+ 57,117,226, 4,163,193, 0, 41, 21,121,171,195, 96, 84,112,252,196, 18, 89,174,153,153,233,178,121,203, 60,155,103,122,156, 60,
+126,156,147,139, 43,120, 47,184,249,182,109,220,254,242, 27,200,116, 74, 81, 12, 88, 25,140, 24,149,142,178,116,200,186, 40,144,
+ 90,147, 38, 9, 82, 42, 18,157,146,104, 77, 93,213, 56,231,144, 82, 81, 27, 71,187,149, 35,165,164, 54, 53,121,158,161,181,100,
+ 84,150, 20,163, 17, 74,105,164,148,120,225, 72,114, 13,198,226,141, 5, 37,177,117, 77, 85, 91,156, 23, 8,231, 72,128,196,123,
+148,243,104, 33,145,113, 79, 57,103, 29, 82, 10,102,123,109,188,173,232,175,174, 34,180,196,216, 10,157, 42,138, 97,129,179, 30,
+143,167, 54,150,202, 90, 16, 30, 37, 32,209, 26,111, 61, 95, 58,126, 2, 37, 53, 90,106,202,202, 48, 63,191,128,118,113,226,112,
+146,209,176, 32,107,229,232, 86, 27,143,199, 26,203,242,210, 50,157, 68, 51, 99, 42, 76,127,149, 85,111, 49, 78, 96,128,210, 91,
+138,218, 0,130,186, 54, 56,227, 89,104,117,232,117, 91, 72,231, 81, 82,147,116, 91,100,121,139, 47, 62,115,132,178,170,232,162,
+144,181,165,206, 32,105,181,195,196, 37,194,150,121, 35, 83,129,146,200, 68,147,104, 69,183,221, 34, 77, 52, 43,195, 1,101,191,
+ 2, 15,121,183,131,212, 9,214, 26, 70,163, 10, 95, 22,100, 90,145,100, 41,125, 35,233,247, 71,180,103,123, 12, 6, 35,234,114,
+132,113,150,162,182,120,167,152,233,116,153, 85,138, 92, 25,148, 51, 96,106,164, 6,111, 44,198,193,168,170, 25,212,134,190,177,
+108,154,105,147,165, 26,167, 36,131,170,230,248,201,101,250,163, 18, 41,193,163, 16, 2,242, 52,161, 40, 10, 10, 99,233,166,138,
+ 27, 59, 9,253,225,136,126, 85, 99,164, 39,211,138,205,173, 46,109, 4,203,163,146, 47, 44, 46, 99, 17,204, 39, 10,165,100, 36,
+ 69,133, 73, 83, 42,149, 50, 28,174, 50, 24,149,212, 54, 82,134,243, 36, 74, 80, 59,131, 80,138, 44, 73, 73,165, 64, 8,135,199,
+147, 42,133, 84, 30,231, 61, 58,213,164, 89, 66,154,100,100, 73,168,159,247, 2, 33, 96,102,174,197,230,235, 54, 49, 55,223, 97,
+121,117,149,207, 31, 62,198, 96, 80,112,253,117, 91,185,233,166, 77, 36,169, 68,198,201, 91, 41,133,173,106,138,213, 81, 32, 38,
+ 60, 73,146, 48,211,155, 33,111,229, 8, 60, 50, 18,135,148, 42, 76,208, 82, 34,165, 68, 72,144, 8,156,117, 56,231,208, 90, 3,
+158,186, 40, 41, 6, 67, 0,210, 44,229,217,167,158,101,249,248, 42,157, 94,206,236,236, 12, 66, 64,154,167, 36,173,132, 60,149,
+204,204,180,233,206,204,178,186,120,146,254,201,163,168,110,143,238,230,235, 88, 57,121,132,211, 71,159,101,126,251,117, 12,157,
+197,218,130,213,167,143,146,182, 59,160, 53,206, 59, 72, 19,116,146,226,173,160, 88,233, 99,171, 26, 39,194, 1, 9,157, 52, 3,
+ 1,165,181,100,105, 74, 55,111,161,188,160,211,206,241,194, 83, 58,131, 76, 53,173,217, 46,115,155,231,232,117, 59, 72, 17,140,
+ 21, 41,215,118,104,150, 82, 78, 72, 41,242, 94, 32,235, 56,217,186, 41, 66, 23, 66,226,189, 99,237,155,113, 60, 71, 2,180,241,
+ 94, 57,111,215,136,154,177,145, 48,222,109, 74, 76,174, 57, 33, 98,231,176,117, 53, 33,111,107, 45,222,173, 17, 38,145,168,167,
+119,171, 26,183, 97,124,109,177,174, 93,227,115,156,165, 20, 40,169, 16,200,201, 38,212, 34, 78,210,227,122, 4, 67, 46, 24,116,
+161,222,161, 95,140,235, 55,105, 39,145,228,227, 78,215, 74,105,148, 80, 8,169, 16, 94,224,172,141, 6,194, 90, 57, 8,168,108,
+ 48, 42,164, 82,193, 96,244,158,112,103,198,134, 72,168,152, 71,224, 92,104, 19, 66,224,157, 67, 56, 49,233,143,241,233,160, 0,
+225,195,253,247,241,187,196, 18, 60,110, 98,204, 72, 25,198,130, 82, 30, 33, 5, 2,143,150,225,124,108, 33,195, 75, 74,137,148,
+144, 68,187,197,225, 49,214,162,149,140,229,133,235, 78,158, 21, 46,212, 7,144,241, 83,165, 20,227, 26, 8, 60,198, 25,106,235,
+113, 16,250, 14,146,170, 54,184,218,210, 74, 83,178, 44, 9, 23, 11,246, 21, 78, 10, 42,107,168,157, 93,123,124,210,145, 9,129,
+179, 53, 8,143,136,247, 52, 73, 18, 60, 2, 99, 76, 48,188, 67, 47, 64,137,112,223,157, 15, 6,153,179,161,159, 10, 41,169,107,
+139,245, 21,237, 52, 65, 41, 21,142,253, 22,177,143,120, 98,159, 14,125,205, 91, 38,134,157,138, 6,165,137,125, 47,204, 13, 2,
+ 99, 13,131,193,144, 44,111,225,189,153,140, 23,132, 32,107,101, 12, 7, 35,202,170, 38, 73,211,216,143, 68, 52, 82, 21,105,146,
+ 0, 18,103,195,189, 74,211, 4, 37, 84,176,121,189,163,170, 42,106, 87,163, 83,133,210, 18, 47,160, 28, 85,161, 47, 0, 74, 18,
+250,169, 23, 56, 15, 18,107,145, 74,161,147, 36,144,114,166,241,117, 77, 89,153, 80, 39,173, 48,117, 69,150,101, 32, 4,198, 56,
+178, 44, 67, 32,169, 7, 35,164, 55,104,169,112,206,209,202, 58, 36,173, 22,222,122,132,179,225,102, 89,131, 53, 53, 94,132, 9,
+ 81, 75,129,116, 22, 37, 4, 34,118, 12,129,192,151,134, 86,222,102,211,230,205, 44,175, 12, 41, 87, 43,188,135,218, 38,100,105,
+139,178, 28,133,251,237, 60,214, 24,172,247,120,111, 73, 21,180,146,224,185, 31, 61,117,154,153,118, 6,222,161,149,100,166,211,
+ 70,198, 78, 98,170,130,213,193,128,214,204, 44,202, 7, 66,233,247,251,212, 85, 77, 71, 38, 80,148, 84,101, 77,133,103,136, 9,
+167,201, 24,176, 30,172,117, 88,227,200,243,140,109,243,179, 72,235,241, 78,144,164, 57,189,205,179, 60,123,244, 4, 79, 61,123,
+130,185,118, 70,207,123,124, 21, 6,149, 76, 19, 4, 14,225, 61, 85,109,176,206,162,180, 32,149,130, 86,158,145,181, 51,234,186,
+ 98,101,117,192,106, 85,146,119, 90,228,121, 11, 41, 21, 85, 93, 83,141, 74,242,106, 8, 90,225,178,148,149,178,143,110,231,228,
+169,100, 56, 24,226,140, 13, 68,141, 68,183,115,230, 82, 77,166, 28, 93, 45,241,197, 8, 41, 60,214, 57,172,119,140,172,101, 24,
+ 61,134,185,118,206,108,150, 97,165,166,116,150,213,126,193,234,234, 48, 60, 55, 37,113,194,145, 37, 26, 39, 4,131,178, 66, 34,
+185,190,173,209,149, 99,165,168,169,241, 72,169,153,239,204,176, 41, 73, 40, 75,195, 23,151,250,244, 71, 37,243, 73,138, 86,129,
+ 8, 85,162, 41,148,198, 38, 25,101, 49,162, 95,148,212, 85,141,136, 30,142,150, 10,188,195, 75, 73,158,104, 50, 41, 81, 94, 32,
+ 60,164, 90,144, 72,129,112,130, 44,145,228,105,130,214,138, 60, 83, 40, 68,244,227,161,221,205,216,122,221, 60,237,118,135,126,
+127,192, 83, 79,159,226,212,210, 50,155, 23, 22,216,113,235, 86,210, 44,197, 1,194,121, 18,169,168,202,138, 97,127,136,181, 97,
+ 10, 85,137, 96,102,174, 75,187,221, 14,147, 43, 18, 47,195, 4,143, 12,131, 86, 8, 17, 39,124, 5, 94, 80,149, 21, 58, 73, 16,
+ 73,206,104, 80, 96,134, 37,194, 25, 18, 45, 89, 29, 20, 60,251,212, 51, 40, 37,233,180, 91,104, 45, 73,210,132,180,219, 38, 73,
+ 20,189,110,139, 78,111, 22,129,100,229,248, 81,146, 36, 97,118,203,245, 36,198,176,248,204, 51,108,186,225, 58,202, 44,193, 72,
+193,232,217,163, 8, 82, 72,114,140, 4,180, 64,232, 4,129,164,236, 23,216,178,196, 11,207,106, 85,211,213,154, 86,162, 24, 58,
+139, 87,138, 78,171, 69,162, 36,173,150, 70,104, 69, 97, 45, 94, 73,178, 94,151,222,150,121, 58,189, 46,137, 84, 36, 82, 33,181,
+154,120,233,193,171,245,193, 9,181,246, 12, 47,215, 71,143, 93,140,137, 53, 78,158, 99,178,155,246,180,199, 4, 37,165, 64,105,
+133,214, 58,148, 63,158, 52, 93, 32,251,200,179, 56,107,227,191, 99, 29,140, 5, 39, 3,241, 73, 25, 72, 66,202, 64,246, 54,120,
+212, 99,130, 87, 74,157, 97, 20,172,121,250,107, 4, 19, 62, 7,149,132,191, 94,128,148, 4, 98,147, 2, 49, 38, 9, 17, 9,212,
+135,207, 38,237,137,215, 29,183, 59,144, 89,184, 23, 14,130,154, 17,141, 2,175, 2,181,249,104, 92, 76, 27, 74,227,251,235, 76,
+ 80,169,148,148, 88, 31,188,231,208, 30, 66, 93,132,192,187, 72,242,128,183, 22,161,166,141,150, 48,177, 73, 69,244,112,199,134,
+192,152,207, 93, 56, 72,195, 59,198,187,112,143,175, 47,165,152, 24, 82, 82,202, 48, 23, 11, 27,201, 80, 32,124,112,184, 52,114,
+ 98, 32, 56,231,145, 82, 33,100, 84,108,198, 50, 7, 2,235, 45, 40, 80,145,100,133, 8, 14, 26,113, 44, 35, 2,181, 91, 31,158,
+175,139,207,207,213, 22,227, 28, 42, 87,164, 89, 18,239,235,216,187,135,218, 90,106,107,226,184, 12,207, 90,167, 58, 24, 83,222,
+ 35, 84,184, 95,202,134,154,152,186, 6, 31, 8, 78, 18, 13, 51, 33,194, 61,116, 2,103,205, 68, 29,242, 66, 82,212,193, 9, 77,
+180, 66, 6,179, 6, 4, 24, 1, 99,187, 72, 8,129,243, 46, 42, 80,138, 36, 77,226,253,112, 88,231, 80, 50, 60, 67, 60, 20, 69,
+ 69,171,213, 70, 72, 25, 12,112, 66, 57, 73,162, 24,141, 74,234,162, 68,107,129, 74,194,181,172,245,144,128, 76, 18,148,212, 19,
+162, 79, 83, 69, 43,211,224, 28,206,122,156,245, 20,117,137, 74, 52, 90, 43,140,116,172,142, 6,152, 50, 24,136, 90, 42,100, 52,
+164,141,247, 72,103, 61, 89,158, 33,181,194, 35, 72, 90, 25,195,170,196,213, 53, 66, 8, 76, 89, 34,157, 37,207, 51,172, 21,224,
+ 29,105,154,226,188, 15,147,155,151,164, 74,131,117,164,105, 66, 42, 45,222,213, 72,173, 81, 74, 99,107, 67, 93,135,137, 92,120,
+ 23, 60, 29, 4, 94, 41,156,144, 88, 33,112,222, 82,148, 3,102,186, 9,221,133, 14,167, 79, 45,146, 70,139, 76, 8,208,194, 82,
+ 87,101,176,178,156,199, 24, 71,226, 29,218, 43,178, 36, 65,101,154,163, 39, 79, 81, 90,143,214,146,218, 89,122, 11, 61,210, 86,
+130,246, 30,229, 28,102, 48, 64,102, 18,221,107,225,165,167, 26, 13,233, 47,173,146,183, 91,180,234, 62,101, 49,160,111, 45,206,
+ 41,172, 3,107, 28,181,115, 88,103, 49,181,195, 58,197,230,110,135,118,162, 73,108, 24, 84,105,187,131,149,130, 47, 28, 61,134,
+196,179, 32, 19,188, 49, 24,239, 73, 68,130,212, 42,116, 80,231, 48,117, 9,206, 35,149, 38, 83,138,118, 39, 67, 41,137, 41, 12,
+171,203,167,177, 42, 33,239,117, 72, 18,141,195, 83,186, 10, 51,236, 35, 49,248, 68, 81,251,140,254,234,144,153,153,156, 65,127,
+132, 41, 10, 42, 3,149, 11,210, 86,175,149,145,136,138, 78, 55, 65, 21, 22,111, 28, 66,133,142, 51, 50,158,126, 81, 82, 24,131,
+206, 52, 51,121,138,147,130,194, 89, 6,131, 17,171,253,130,170, 12, 3,209, 10, 80, 8,100,170, 40, 76, 69,225, 44, 91,219,154,
+205,194,115,178,168,169,156, 67, 75,193,124,154, 49,151,164, 56, 83,243,196,242,128, 35,253, 33,115,121,134,150, 30, 47, 60,105,
+162, 24, 73, 73,157, 36, 24,235, 24, 12, 71, 84,149,193, 56,143, 5,148,112, 8,233,168, 68,176, 84, 51, 37,208,194,131, 51,164,
+ 16,228, 45, 33, 72,147,132, 60,107,161,165,164,149,104, 82, 21,102, 99,135, 39,205, 53, 91,183,111,102,102,161,135,169, 43,158,
+124,250, 20, 71,142,158, 98,110,174,199,205,183,110, 34,111,181,192, 71, 79, 77, 9,108,109, 40, 6, 35,172, 11,147,179,210, 9,
+157,217, 30,173,110, 14,202, 7,226, 22,114, 34, 59,135, 73, 80, 76, 60, 62, 33, 20,181, 49, 72, 37,201,219, 57,195,213, 21,250,
+171,171, 72, 9, 42, 73, 72,243, 22, 79, 61,246, 24,253,149, 1,237, 94,135,118, 43, 67,107, 77,187, 59,131, 74, 60,237, 92,211,
+233,205,210,206,186, 44, 31, 61,134,199,209,154,219, 2, 66,115,252,201, 47,210,154,233,194,252, 12, 21, 37,238,217, 19,212, 75,
+ 35,124, 59,195, 75,129, 84, 18,149, 5,175,162, 42,106,204,234, 16,161, 52,149,177,116,164,100, 62, 73, 25,120, 75, 9,228,145,
+208,211, 76,211,107,103,212, 56,156,148,164,221, 46,179, 91, 54, 51,219,235, 5,131,123,236,233, 10,129,159, 34,176,208,222,224,
+133,143,137, 90, 68,246, 13, 10,182, 95, 39, 69,199, 50,226,251, 19,210,145,225, 89, 41,169, 17,168, 72, 4,209,211,141,247, 84,
+ 42,133,144, 2, 99, 45,214, 90,140, 9,114,125, 80, 9,163,194,226, 61,194,123, 84, 12, 5,248,248,185,139,239,143, 73,127,218,
+139, 30, 27, 36,227,231, 40,165, 68,235, 4, 41, 53, 66, 41,132, 15,207, 83, 64, 84, 94,130,236, 59, 14, 7, 72, 37, 39, 78,199,
+ 52,177,251,169,144,195, 88, 69, 24, 27,128, 99,165,194, 57,183,230, 45,143, 13,153, 41, 37, 1,239,241, 54, 56, 77,225, 61, 57,
+ 49, 78,148, 82, 19, 47,216,137,105,149,129,120, 47,192,121, 23,148, 1, 1, 78,196,126,171, 64,170,177,163,196, 68,101, 16, 4,
+197, 64, 10,206, 8, 69,140,219, 17, 8,201, 79,188,122, 33, 4,210, 11,146, 72,136, 53, 62,212,223,249, 9,233, 78,238,137, 8,
+ 70, 87,232, 35, 14,169,228, 25,106,136,148, 49,238,233, 1,161, 48, 46, 26,137, 30, 28,142,186, 54,152,218, 34,140, 32,213, 26,
+ 37,166,119, 45, 23, 56, 47, 48,149,141, 36, 31, 60,110,165, 84, 12, 1, 9,146, 36,143,161, 18,135,244, 2,107, 28,120,131,132,
+160, 0, 11,135, 18, 18,111, 67,245,189, 15,252, 49,134, 53, 38,140,219, 68, 7, 47,217,157,249,172, 33, 26, 60,147,126, 93,133,
+144,178,140,134,130,117,103,244,151,178, 44,176,181, 39,109,183,130, 3,167, 52,198, 88,148,214, 56, 43,232, 15, 11,132, 20,104,
+157,196, 62,228,193, 10, 18,157,144, 36, 65,169,112,198,146, 40, 69,150,167, 65, 77,182,193,120,176,181, 33, 77, 20, 89,170,208,
+ 22, 68,237,113,133, 37,145, 10,225,195,124,233,157,197,121,135,148, 90,211,106,183, 48,198,144,104,141,140,158,136,113, 46,116,
+ 46, 99,144, 4, 9,175,170, 74,210, 36, 37, 75, 52,214, 58,138, 81, 65,170, 4,105, 26,226, 40, 82, 43,148,140,158,186, 86,120,
+ 9,166, 10, 49,143,224, 28,187,201,137, 45, 82, 37,184,104, 61,123,107,169,234, 58,120, 48, 94, 81,142,134, 8,157, 80, 87,134,
+118, 59,167, 24,148,216,170, 70, 69, 43,175, 46, 43,188, 9, 30,126,170, 21,117, 49,226,153, 99, 39,104,231, 57, 42, 78, 68,221,
+153, 25, 20, 50, 12,130,186,100,117,184, 66,119,102,150, 84,181,168,171,154,165,211,167, 81, 82,209,118, 14, 81,140, 40, 11, 67,
+233, 36,198,132,184, 96,225, 61,149,245, 88, 23, 58,224,124, 59,103,161,213,194,214, 22, 13,180, 36,180,231,230,248,194,211,199,
+ 56,189,218,103, 78, 39,104,235, 41,141,161,176, 6,223, 73, 16, 42, 13,138,134,177,212,214, 34,145,228, 90,145,229, 9,173,118,
+155, 68, 40, 86, 7,171,156, 94, 25, 34, 50, 77,187, 51, 19,172, 64,235,168, 7, 37,118, 52,130, 52, 71, 38, 41,253,209,136, 44,
+ 75, 73, 18,197,240,244,105,172, 49,140,170, 10, 3, 36, 73, 74, 7,207,108,158,210,147,146,170, 44,144, 82, 97,106, 79,101, 29,
+131,218, 80,214, 53, 82, 73,122,237, 22, 41,142,218,195,106, 85,177, 58,172, 40, 70,101,176,229, 69,152, 96, 84, 42,113,214, 49,
+170, 12, 51,137,230,134, 12,150, 70, 53,171,166, 70, 72, 65, 59, 77,217,156,181,200,140,231,169,211, 21,143, 47,173, 48,147,105,
+ 50, 45, 2,161,235,148, 74, 37,140,148, 70, 72, 69, 49, 42, 48,166, 14, 19,182, 19, 8, 44, 82, 75, 28, 2,157,104,180, 18,232,
+ 24,203,149, 82,144, 36, 73,152, 20, 82, 73,187,157, 35,149, 36,209,154, 44, 77,131, 90,228, 13, 73, 91,114,221,205,219,233,206,
+245, 40,139,130,163,199, 78,241,236,179, 39,201, 90, 9,183,222,188,133, 45, 11, 29,164,114,177,175,169,208,158,193, 8, 83,135,
+193, 42, 37,180,102, 58,116,123, 51,160,130, 92,170,116,156,240,199,146,180, 80,209,139,137, 3,221, 90,140,179, 36,173,156,202,
+ 25, 78,159, 90, 36, 65, 32,148, 36,235,182, 88, 62,185,204,211,143, 63, 67,146,165,116,187,109,116,146,210,153,153, 33,109, 41,
+242, 68,208,235,245,232, 44,108,102,249,196, 34,253,165, 37,122,115, 91, 81,173, 14, 75,207, 62,141,119, 21,201,182,121,138,186,
+134,149, 33,197,209, 19,208,234,224,132, 8, 6, 71, 34, 16, 42, 9, 74,193,233, 17, 66, 73, 42, 27,194, 80, 51,121, 78,129,165,
+239, 44,173, 60,163,173, 52,153,144,204,116,114,140, 10,132,157,180, 90,244, 54, 45, 48, 59,215, 67, 39,145, 96,165, 12,100, 46,
+196, 25, 19,218, 68, 70, 23,107,222,102,240, 30,153,120,119,114,226,149,177, 38,249, 78,123,200,206,225,173, 59,227,132,166,137,
+ 4,205,154, 52,238,195,108, 59,241,100,199, 6,132, 82,106, 50,169,213,117, 61, 33,202, 9, 89, 75,249,101,134,196,152,192,215,
+164,127,251,101, 68, 44, 68,148,169,165,159,120,219,161,156,160,104, 77,134,129,152, 18,154,207, 80, 38, 34, 57, 68,245,199,199,
+235,142,229,103,239, 61, 42,106, 21, 34, 90, 9,225,239,218,157,245,214,225, 29,209, 99, 14,100,172,148, 66, 43, 53,165, 48,172,
+ 93, 95,198,178,188, 20, 49,140, 17, 13,169, 88, 95,188, 71, 4, 22,195,141,115, 15,148, 66, 74, 61, 49, 70, 17, 42,146,109,112,
+ 52,164,208, 32,124,176, 71,132, 68, 40, 29,115, 13,130, 1, 44,162,145,224,241, 8,233,214,194, 47, 49,124,176,102,111,132,156,
+ 3, 28,104, 41, 73,148, 68,138, 96, 68, 72, 37, 38,125, 73,122,143,141,249, 22, 30, 79,109,253, 36,148,227,189, 37,209, 10,149,
+168,181,147,189,132, 4,124,200,201,112,193,225, 16, 68,135, 99, 28,134, 16, 30,165, 52, 58, 73,131, 55,109, 12,194,129,154, 50,
+ 78,181, 86, 19, 99,196,186,160,238, 6,131, 85,224,106,131, 18,146, 86,158, 34,132, 15,132,232,131, 65, 96,173,139,170, 70, 36,
+120,235,112,181, 69, 43,133,214,161, 77,214,217, 96, 84, 2, 74, 73,202,194, 82, 85, 21,105,146,226,157, 69,105,137, 53,134, 44,
+ 17,120,225, 88,237, 15,240,214,135,112,113,236,119,206, 57,148, 86, 36,137, 70,107,129, 53, 21,206, 65,158,231, 33, 84, 24,115,
+ 82, 42,235, 49,150, 48, 95, 38,146,218, 65,191, 24,196, 48,129, 67, 8,135,242, 14,172, 69,182,187,109,178, 44,167,174,107,242,
+ 44, 18,104, 89, 5,175, 82, 4,107, 70, 42, 73,146,166, 88,107, 73,242, 52,120,216,182,166, 42,170,144,176, 99,195,195,206,178,
+ 12, 41, 61,206,152,137,197, 89,151, 85,140,127,173,197, 83,226,236, 16, 30,140,247,224, 44,104,201,220,150, 89, 6,131, 1,171,
+171, 37, 66, 43,106, 83,162,179,140, 97, 81,130,179, 40, 1,214, 88,170, 24,239, 23, 2, 82,165, 56,121,122,137,165,213, 1,121,
+146,128,131,222, 76,143, 44, 77,195,192,247,158,122, 56,162, 86,146,172, 61,131,243,150,193,106,159,114, 80,144, 73, 65, 86,140,
+168,107,203,168, 50, 24, 36,181,135,194, 67, 97, 93,240, 30,156, 35, 17,146,249,118, 27, 77,236,176, 74,211,154,155, 99,213,151,
+ 60,254,244, 51,244, 18, 77, 90, 91,234,186,198,216,112,147,117,146, 35,165, 10,147, 82,244, 62,180, 80,100, 74,146,116, 90,232,
+110, 72,104, 90, 92, 94,193, 56, 79,187,215, 35,205,131, 7,234,165,160, 26, 14,130, 97,149,102,120,165, 41,170,154, 52,207, 40,
+ 87,135, 20,197,128,210,212, 88,239, 81, 82,161,164,160,155, 74, 54,119,115,234,149, 33, 54, 14, 60, 99, 45,131,170,166, 40, 43,
+140,128,153, 78,139, 84, 73,140,119,140, 76,205,112, 88,178, 58,168,168,156,139, 19, 70,240,206,164, 86, 84, 85,141,198,115,125,
+ 43,195,149,142,126, 85, 35,188, 37, 81,146,217, 44, 39,151,130,147, 69,197, 23, 22, 87,104, 39,138, 76,135, 88,147,214,138, 82,
+ 39,172, 2, 40, 77, 93, 27,108,204, 71,176,149, 5,111,208, 82,131,144, 40, 29,146,224,116,180, 50, 21,225,121, 74, 60, 90, 41,
+ 58,173,118,144,109,165, 39, 73,195, 4,101,241, 40, 13,219,183,109,163,183,208,163,246,134,147, 39,251, 60,253,204, 73,156,183,
+220,114,227, 22, 54,111,158, 11,147,152, 3,129,192,213,142, 81,191,160, 54, 38,144,147, 18,180,123, 93,122,189, 25,148, 92, 75,
+136, 11,241,196, 64,210,194, 71,209, 79, 6,111,221,123, 65, 93, 91,180, 78, 73,146,140,165, 99,139,193,170, 78, 82, 84,150,162,
+ 84,202,231, 31,253, 44, 30, 79,167,219, 34,203, 83,186, 51, 93,242,110,142, 74, 60,189,153, 25,230, 54,109,194,247,135,244, 79,
+157,162,213,155,167, 51,187,153,193,137,147, 12,150, 22,201, 54,205, 83, 89,139, 43, 42,250,199, 23,241,173, 28,167, 84,152,248,
+ 19,137, 72, 18,132, 75, 25,156, 26,224,157,193,224, 25, 86, 21,221, 52, 35,147,146,190,169,209,105, 74,158,166,104, 60,157, 86,
+134, 64, 80, 88,139,208,146,206, 66,143,249,205,243,228, 99,153, 19, 63, 49,178,197,148, 84,189, 38,211, 2,110, 45, 89,206, 57,
+127,134,172, 56,150,179,189, 63,147,216,148,148,200,104, 0,121,107,113,198, 68,239, 65,158,225, 53,135, 4,180, 64,198,214,216,
+ 73,204, 90,235, 64,110,107,177,240,232,109, 71, 15, 84, 69,163, 75, 76,201,239,211,222,231,216,107, 87, 83,101,140,219, 54, 81,
+ 95, 98,142,128,247, 30, 41, 98,157,101, 24,219, 83, 84, 53,145,211, 93,244,112,199,178, 53, 8,188, 35, 24, 1,129, 45,130,158,
+ 63, 86, 52, 98,125,199,247,108,146,112, 24,243, 2,156, 5,103,125, 80, 41,196,152, 40,131, 81, 97, 38,161, 15, 31,149,226, 24,
+107,117, 98, 18,166, 16, 72, 60, 14,227, 45,214, 59,188, 8, 42,198, 90, 34,224, 90, 61,156,240,161,106, 62, 18,186, 80, 65,129,
+241,145,233,164,192,199,159,138, 73, 92, 61,148,161,132, 64, 69,246, 14,247, 63, 42, 23, 30, 68, 12,175,184,113,243, 17, 40, 37,
+ 80, 2,164, 8, 30,186,148,227,103, 21,140, 20, 27, 67, 12, 32,168,106,131,241, 34, 36,166,121, 31, 56, 38,209,107, 33,217, 24,
+166, 49,206, 97,173,137, 33,147, 96, 32,105, 41, 98,174,146, 64,105,141, 74, 2, 73, 90, 99,241, 54,134,131,198,164, 47,197, 90,
+238,134, 7,231, 44,222,133,123,111,125,184,175,121,150, 34,188, 65,122,113,134,218, 66, 52,222,198, 70,171,115, 22, 45, 4, 90,
+141,199, 80,232, 39, 72,208, 90, 35, 19, 24,141,138,144,107, 19,251,128,192,227, 44,180,243,148,193,104,196,168, 52,164, 58,137,
+138,213, 56,227, 32,168, 90, 82,235,192,145,206,145, 36, 58,120,239, 34, 40, 73,198, 58, 28,144,166, 41, 58, 9,210,124, 49, 42,
+227,115,146,104, 9, 82, 6, 35, 68,102,237, 22,206, 90,242, 36, 33,201, 50,234,170, 12,129,100, 31, 72,221, 91, 27, 46,160, 67,
+ 12, 83,167, 9, 94,132,100, 53, 91, 27, 68,146, 6, 9, 8, 73, 43,207,113,174,196,155, 26,161,130,181, 86,246,171,137, 69,134,
+ 15, 94, 67,240, 30,228,196,130,173, 77, 77,150,231,204,206,245,232,175, 14,168, 29, 24, 66,103,213, 74, 83,150,101,140,215,132,
+108, 87, 19, 39, 1, 37, 64,103, 9,199, 23, 87, 16, 66,163,181,196, 90, 79,222,106,133,137, 33,140, 14,202,225,136,206,204, 28,
+105,214,102, 52, 42, 88, 93, 94, 38, 87, 26,101,107,146, 98, 72, 89, 27,134,198,134,172, 80, 7,133,247, 24, 31,100, 39,129,160,
+157,231,244,178, 20,137, 71, 9,137, 76, 19,218,179,115, 60,246,212,211,148,206,176,169,149,227, 70, 67,156, 8,217,175,169, 82,
+ 40, 21,172, 63,227,130,172,136,135, 84, 73,180,212,180,230,186,120, 17, 6,240,233,211,167,145, 90, 51, 51, 51,143,240, 18,227,
+ 45, 85, 89, 80, 23, 69,152,200, 85,136, 89,123,225, 73, 50,205,104,117,128,171, 13,133,117, 32, 53, 18, 79, 38, 5, 91,123, 45,
+ 84, 89, 81, 87, 21, 72, 65,105,106, 70,117,205,160, 50, 84,206,210,106,231,116, 82,141, 53, 21,165,243, 12, 70, 37,195, 81, 69,
+ 85,213,120, 25, 36, 66, 27, 45, 78,103,131, 74,177, 37, 79,233,224, 88, 46,106, 42,225,208, 90, 49,155,230,244,100, 66,191,168,
+120,108,105, 9,180,163,157, 40,132,119,168, 36,193,234,132,190, 16,212, 66,226, 76, 72,242,176,206, 83,213,150,218,185, 40,201,
+129,144, 58,196,221, 67,150, 36, 74, 16, 66, 41, 66,146,104, 69,167,149,145,199, 12, 84,173, 36, 73, 26, 60, 55, 39, 61, 91,175,
+223,202,220,252, 60, 88,195,234, 82,159,103,158, 57, 65, 93, 57,110,186,105, 43, 55, 94,191, 16,173,115,133, 20, 9,194, 67, 49,
+232,135,164,171, 56, 81,183, 58, 45, 58,179, 51, 72, 61, 78,238, 89,151, 80,133, 8,153,190, 82, 4, 15, 94, 37,212,181, 65, 74,
+ 73,150,231,172,158, 92, 98,184,184, 74,158,230,168, 52, 97,102,126,134,199, 31,125,140, 35, 79, 29,161,221,106,211,110,183,233,
+245,186,116,123, 93,148,246,228,185, 98, 97,118, 30, 73,194,202,179, 71,209, 73,194,204,150, 77, 44, 46, 30,167, 60,125,154,238,
+252, 28,190,221,194, 85, 53,163,197,211, 24, 3, 86,133,196, 85,157,134,248,190, 18, 9,102, 84, 97, 6, 53, 8,193,234,104, 72,
+174, 52,243,173, 54,253,178,164, 78, 20,121,222, 66,121,200, 91, 25,105, 43,163,118, 22, 39, 53,121,175,203,220,230,121, 90,237,
+108,205,211,140,147,230, 56, 73,107, 34,165,159,145,125,238,195,164, 25,147, 6,253, 84, 50,156,159, 34,143, 49,105, 78,164,119,
+231, 38,222,164, 24, 43,211,172,147,111,109, 72,128, 12, 82,180,195,198, 44,118,239, 60,182, 54, 24, 99, 38, 49, 98, 21, 37,122,
+169, 36, 90,107,148,214,129, 28,166, 60,252,105, 79,122,252,222,196, 0,136,159, 57, 31, 18,207,164,138, 74, 67, 84, 97,252,132,
+168,253,148,162, 16,141,133, 9,161, 75,156, 35, 42, 11,193,203,146, 74, 79, 18,233, 38, 4,185,214,131,214,254, 29, 61,191, 16,
+175,247, 33,233,214,251,104,148,248, 53,195, 69,201, 72,146, 46,132, 40,125,120, 70,214, 56,108, 84, 61, 66, 22,125, 36,216, 24,
+167, 70,128, 66, 77, 72,116,236, 55,249, 24,162, 24, 39,213,249,113,111,143,158,180,144, 65, 62,247, 83,121, 18,147,241,128, 64,
+ 75, 21,194, 96, 99,189,192,218, 73, 2,223,216,107, 15,202, 64, 80,217,117, 36,117, 49, 86, 98,116,184,238,120,158,247,128,137,
+ 9,129,149, 13,121, 81, 46, 26, 88, 82, 66,162, 19,116, 52,116,240, 65, 37, 8,234, 94, 72,150, 19, 42, 60,115, 37, 98,216, 38,
+206, 87, 73,150, 96,106,139,117,225, 53, 81,103,188,159, 36,123,218,113, 95,139,202,208, 56,133,175,172, 43,218,173,140, 68,130,
+247,246,140, 80, 4, 49,180, 17,114,122,131,225,104,129, 68,199,100, 55,130, 97,231,199, 43, 99,132, 96, 52, 24,162, 0, 37, 85,
+140,251, 43, 76,109,201, 82, 69, 93, 85, 12, 7, 67,116,154,134, 92, 10,235,162,161, 37, 67, 98,165, 84, 65,193,142,206, 81,162,
+ 53,146,240, 61,107, 45,214,212,228, 90,147, 37, 41,206, 67, 89, 86, 56, 19,212, 10, 37, 69,136,215, 75,137,204,178,140,162,170,
+ 72, 91, 45,188,115,177,195,173, 37,130, 20,101, 65,167,211,194,137,176,228, 69,107, 29, 6,111,109, 24, 21,101,144, 54, 5, 72,
+ 13,237, 86, 59,120, 99, 66, 32,148,198, 26, 67,109,106, 32,100, 7, 58,192,122,129,209, 10, 39, 37, 94, 72, 16, 26, 83, 87,244,
+102,218,100,121,139,213,254, 0,157, 36, 84,214,161,179, 78,204,244, 43, 65,170, 16, 99,177, 54,100,193,123, 71,170, 37,163,210,
+114,244,216, 34,157,118, 32, 81,153, 39, 36,105,130, 20, 2,229, 28, 85, 89, 82,122, 79,222,155,195,225,233, 47,175, 96,170,154,
+ 68, 74,124, 57, 66,186,154, 65, 85, 81, 75, 69,109,106,202,104, 45,187, 56,160,242, 36,165,215,110, 35, 99,236, 95, 43, 77,187,
+219,230,153,165, 69,158, 57,113,130, 45,179, 61,228,160,164,176,117,200, 19,240, 30,153,166,136, 44,129, 52, 26, 33, 54,196,161,
+211, 84,211,158,237,146,168, 12, 83, 11, 86, 86,250,156, 94, 89,166, 61,211,161, 59,211, 13,241, 41, 99,168,202, 17,117,101, 67,
+242, 34,130,218, 88,178, 60,165,168, 10, 70,163, 17,198, 10, 16, 58,100,198, 90,216,222,109, 51,159, 38,148,253, 17, 94,130,119,
+ 33, 4,176, 92, 25, 10,107,113,105, 66,119,166,133, 51, 21,181, 51, 12,235,154,209,168,100, 80,212, 49,228, 44,176, 46,198, 81,
+ 21, 84,198,208, 75, 21,155,180,162, 95,140, 24, 58, 11, 18,218, 73,206, 86,221, 66,213,130, 47,157, 94,101,169,182,204,170,168,
+ 14,107,133,215,138,190, 72, 40, 33,198,184,130,151, 86, 91,199,176,172, 66, 50,141, 86, 8, 45, 16, 50,116, 88,176,136,177, 33,
+ 36, 5, 73,162,232,180,115,218,157, 22,142, 48, 91,100, 73, 18, 38, 50, 41,216,186,125,129,217, 45,179, 8,105, 24,246,135, 28,
+251,210,169,152,233,190,192,173, 55,111, 33, 73,114,156,181, 99,247,147, 81,127,136,169,234,104,117, 11,242,118,139, 94,175, 11,
+ 82, 96, 8, 18,180,144,225, 89, 75, 47,145, 81,141,241,193,109,143,131, 47, 40, 45, 82, 75,234,106,196,234,226, 34, 82,134,208,
+ 65,103,166,203,104,101,200,231,254,254,147, 36, 74,211,110,119,152,155,155,163, 55, 59,139, 74, 37, 58,177,204,206,206,209,234,
+204,178,122,114,145,202, 84,204,110,221, 70, 85, 25,134, 75,139, 36,237, 12, 57, 63, 67, 81, 21,212, 43,125,138,165, 21,156, 76,
+ 80, 42, 33,203, 82,156,242, 40,157,224,107, 40, 6, 35, 84, 34, 41,170, 2, 89, 91,230,178, 22,163,170, 98,224, 44,237,118, 72,
+ 10,205,180,102,166, 59,131, 21, 14,167, 4, 89,183,205,236,182,205,116,123,221, 32,125,122, 31, 60, 18, 31, 38,239,105,217, 28,
+ 49,118, 63,162,151, 34,229, 68, 95, 95, 35, 11, 49,201, 10,102,146, 48, 44, 38,147,161,243,107,222,125,240, 98,198,196,105,163,
+ 28,110,177, 38, 76,188,184, 40,239, 59, 23,194,100,209, 81,152,168,121,177, 62,211,158,246, 36, 46, 60,158,124,215, 43, 12, 83,
+177,239,181,236,250, 53,111,107,236, 45,143,201,212, 58,247,229, 75,231,162,116,111,140, 9,177,125, 33, 39, 30,234,218, 50,185,
+144,153,236,198,249, 4, 34,146,113,108, 11,209,179, 12,147,125,240,142,199,247,109,156,167, 16,150, 60,201, 64, 62, 34,198,193,
+165, 12, 70,135, 8,201,168, 99,153,119,220, 38,198,203, 11,163,122, 20, 18,200,166,226, 32, 49, 86, 27,200, 44,100,112, 43, 29,
+146, 1,153, 34, 88, 33, 68, 48, 4,198,223, 31, 75,241,113,137,104, 72, 54,243,104, 29,250,136, 84, 97, 14, 31, 43,254,227,251,
+ 23,171,132, 20, 33,132, 38,133,140, 89,248, 62,182, 65, 50, 9,193,199, 36, 68,231, 29,131,186,192,184, 49,137, 70,181, 71,138,
+184,162,100,220,174,224, 96, 24, 23,157, 0, 27,140, 24, 41,130,234,224,189, 71, 69,101,198, 24, 19,140, 0,103, 34, 17,135,126,
+ 42,163,193, 98, 76, 48,202,133, 27, 39, 16, 6, 71,166, 54,134, 52, 77,104,103, 45,240,225,217,137,216,241,156,247,129,108, 17,
+147, 28, 14,188,159, 40, 65,222,199,254, 3,193, 0,215,154,178, 42, 66,168, 51,134, 15,148, 86, 24,107,208,137,198, 58,203,112,
+ 52,138,170,118, 50,233,115, 66,168, 16,102,147,129,220,125, 12, 93, 40, 29,115, 44, 28, 56, 23,140, 27, 41, 64,199,132,201, 81,
+109,169,203, 26, 23, 21, 11, 29,201, 93, 10, 28,101, 89,160,211, 20, 83, 87, 96,106,106, 87, 35,156, 71, 74,143,177, 21,121, 43,
+167,182, 54, 72,161, 42,116,236,209,104,132,117, 6,149,104,132,119,100,185,128, 44, 16,144,244, 33,113,168, 44, 11, 74, 99,113,
+ 8,106,103, 49, 34, 76,210, 10,137,139, 3, 16,231, 40, 77,193,204,252, 12, 74, 58,134,253, 21,112, 80, 89,135,200, 82,202,225,
+ 0, 41,100,200,132,198, 97,235,160,247, 24, 39,232,100,146,163, 39, 22, 41, 44, 49,174, 15,105,158,160, 85,156,140,189,163, 28,
+ 12, 73,186, 93,100,154, 51, 44, 86,233,159, 94, 34, 87, 41,174,170,104,153,146, 62,138,161,241,120,161,168,140,167,180,150,218,
+133,120,150, 18,130,217,118,139,182,214, 40, 28,162, 12, 75,203, 68,154,241,196,145, 99,228,105,198,246,222, 28, 43, 39,151, 81,
+ 42, 65,235, 4,239, 5, 42,203,145, 50, 44,179, 51, 85,133,112,150, 60,209,164, 42,165,213,107,199, 36, 23,205,210,169, 83,216,
+170,162,189, 48, 15, 58, 36,145, 81, 25,220,104, 4, 74, 32,117, 18, 38, 9, 45, 81, 42,101,184,180,138,183, 5,149, 31, 75,117,
+134,153,150,226,134,173, 51,140, 70, 67,156,175,249,255,217,122,175, 30, 89,178,236,222,239,183, 93,152,116,229,142,237,238, 25,
+154, 11,233,251, 63, 10, 16, 32,225, 62, 8, 50, 23, 2,174,112, 65,145, 20, 41, 82,156, 33,123,166,187,143,169,170,204,112,219,
+234, 97,237,136,204,115,200, 1, 26,152, 54,167, 42, 77, 68,236,181,254, 22,107,153,163, 28,162, 83,200,228,172,120,184,219,209,
+250, 68, 72,153, 37, 41,230, 37, 51, 76,194, 85, 41, 99,137, 21,206,179, 90, 19, 67,162,100,197,219,214,145,162,103,140,145,140,
+166,211, 29,119,174, 69,229,196, 31,206, 47,252, 58,120,158,156, 1,109,113,218, 80,140,227,172, 45, 99,169, 98,219, 20, 33, 69,
+116,201, 44,139,108,235, 86, 25,208,174,114,124, 1,136,152, 34,214, 56, 99, 12,141,209,236, 90,195,126,223,161,141, 12,143,206,
+ 90,172,117,160, 21, 15, 79, 71, 62,188,187,199, 22,205, 48,204,252,252,167, 23, 62,191,190,242,240,246,142, 15, 63, 62,210, 52,
+ 45,105, 19,246,192, 56,142,162,191, 40, 34, 24,234,250,158,195,195, 9,213,218,170,250,149,233, 56,223, 76,218,235,255, 12, 34,
+240,138, 73,208, 6, 99, 29,104,184,124, 57,227,115, 65, 57, 71,191,235, 56,220,159,248,175,255,251,223, 48, 79,153,246,216,113,
+127,127,228,238,238, 1,211, 58,180, 77, 28,142,119,220,221,191,225,242,252,204,252,250,137,253,155, 55,196, 98,184,252,249, 55,
+ 26,101, 81, 15,123,198, 16, 40,151,137,241,243, 87,146,113, 20, 5,109,231, 40, 54, 97, 48,152,220, 49, 93,102,177,206,228,200,
+ 48,205, 60, 29,142, 88,165,248,205,143,152,187,131, 64,112, 37,112,218,183,160, 18, 20, 3,198,114,247,225,137,247,239,238,113,
+198,144,114, 33,107, 81,107, 43,193,237, 4,165,209,144, 85, 22,100,106, 93,175,111,132, 96,155,130,187,226,180, 87, 78, 92, 96,
+207,117,155, 53,133,234, 76, 88,185,119, 75,201,213, 53, 86, 32,151, 72,142,114,168, 22,174, 16,127,174, 91,163,179, 86,108,132,
+218,214,237,209,108, 63, 99,227,206, 43,220, 95,170,176,238,214,139, 30,110, 32,120, 81, 45,215,131,189, 62,107, 84,213, 14,228,
+ 20, 55,248, 93,161,235,230, 45,206, 15,149, 5,238, 68,233,202,235, 42,148,184,103, 49,170, 10,167, 86,251, 88, 81, 50,152, 86,
+ 40, 91,175,214,180, 10,187, 27,165,170,126, 78,188, 26, 69, 33,215, 90, 54, 98,169,211, 5,140, 60, 11,149,210,104,163,208, 90,
+212,204,214, 32,202,246, 18,200, 49,138,224, 51,101,200, 81, 22, 12, 34,232, 34, 52, 81, 73,104,179, 30,204,130, 46,161,174, 54,
+173, 21, 29, 81,245,181,172, 67, 73, 34,145,148, 80, 39,242, 90,179,104, 13,180,108,197, 90, 23,186,166,161, 20, 77,171,148,104,
+ 1,182,109, 63, 67,209,248, 92, 8,213,223,111,172, 70,185, 2, 86,120,102,141, 12,234, 74,201,118, 78,253, 46,100,128, 86,248,
+156, 48,165, 34, 45, 81, 80, 51,227,234,103,142,104, 95,114, 41,132,148, 40,170, 30,248,197,139,186,254, 70,124,104,156,173, 57,
+ 1,245, 13, 43, 65, 49, 98, 1, 83,106, 86,192,205, 16,168, 74,217,174, 47, 31,146, 32,112, 59, 11,161,212,103,147, 80,145,169,
+104, 76, 17,161,166, 12,159,162,177, 82,230, 58,124,164,141,198,145,127,150,149,102,156, 2, 69,105,113,103, 89, 69, 40,178,245,
+234,198,241,114,121,169, 52,165, 35,248, 32,127,214,104,148,181, 68,228,158, 20,123,184, 32, 55, 90,107,172, 82,152,168,136, 65,
+ 16,108,227,100, 40,153,199,200, 60,205, 20, 43,239,201,162,208, 37,163, 83, 8,236,118, 59, 9,248,136,162,158, 43, 21, 38, 47,
+185,144, 74,161,233, 58,161, 48, 42, 44,133,129,101, 94,190,241,129,182,141, 64,127, 37,136,245,194, 24,195, 50, 45,132, 20,100,
+ 94,214,154,108, 44,217, 88,176, 2,141,171, 82, 40,113, 65,165,204,211,227, 29,195,203, 72,240,158, 84, 18,161,120,250,182, 39,
+120, 47, 40,136, 49, 84,189, 2, 73,116, 46,228,172,120, 62,191,224, 90, 39,147,145, 50, 56,231, 68,116, 80, 10,105,241,204, 41,
+209,236,118,152, 18,184,188, 12, 85, 8,173,201,179,112,234, 75,202, 68,228,194, 25,147, 8,203, 74, 77, 64, 56,116, 45,135,166,
+197, 85,219,137,113,145,254,238,192, 63,254,249,103, 46,203,200,199,183, 79,204,159,190, 50, 79, 3,218, 57,225,165,211, 36,155,
+186,113, 36, 47,162, 55,163, 53, 77,211,210,223,237, 81,189, 35,148,200,197,143, 60,191, 60,211,238,247,236, 30, 31,201, 33, 19,
+ 82, 96,246,139, 12, 52,213,187, 88,170,191,116,188, 12,248, 37, 80,180, 17, 53,100, 74,168, 8, 31, 79,123,246, 25,226, 16, 81,
+198,146,189, 80, 9,151, 32, 28,208,225,208,178,183,154, 16, 68,185,238, 67, 98,153,102, 38, 63,163,180, 28,232,185,126,190,168,
+ 66, 76,153,155,251,126, 8, 0, 0, 32, 0, 73, 68, 65, 84,135, 86,209,231,204,101,246,248, 36, 23,215,125,107, 57, 41,195,191,
+141, 51,255,250, 58,208, 55, 22,167, 52, 78, 65,114,154,139,117, 4, 20,148,132,174,124, 84, 6,150,152, 54, 59,134,118, 34, 80,
+171, 43, 29, 38, 37, 26,173,105,172,208, 59,125,219,112,220,237,113,214,137, 61, 5,196, 66,162, 97,127,234,121,120,127, 79, 81,
+150,156, 3,191,253,246,149,207,159, 94,184, 63, 29,249,139, 31, 30,185,235,123, 20, 50,204, 25,165,152,135,145, 48, 45, 98,171,
+ 81, 10,183,107, 57, 60,221, 97,187, 6, 84,221, 68,170,133, 73,124,203,213, 78,100, 86, 56, 87,182,138,101, 17,215,130,109, 52,
+126, 88,240,211, 34,215,251,190,227,253,239,126,226, 95,254,225,159,248,227,223,255, 63,180,206,113,255,240,192,221,211, 3,182,
+ 53,104, 93,216,117, 45,111,238, 31, 40,203,194,240,245, 19,221,221, 19,237,195, 91,198,151,223,200,241,130, 57,237, 68,156, 57,
+ 6,150, 95, 94,152, 82, 38, 24,197,110,215,161, 28, 36,173,176,182,197, 79, 35,197, 39, 76,210,124,157, 47, 28,119, 61,251,166,
+231, 57,204, 52,251, 29,141,181,176,120,118,187, 61,182,105,137, 57, 19, 84,226,254,237, 3,111,223,188,161, 32, 3,175,209, 34,
+ 28,189,133,204,215, 65,198, 84, 91, 12,122,229, 2,175,138,244,245,122,187,110,158,106,219, 72, 75, 17,139,105, 76,137,196,245,
+193,249,125,240,203,250,151, 4,209,136,144, 12, 37,155,174,232, 28, 64,217,170,154,222,230,138,132,210,165, 10,174,202, 6,237,
+175,170,253,111,160,245,155,127,119, 11,193,223, 66,242, 70, 95, 45, 78,171, 71, 88,215,205,104, 67, 46,180,132, 11,217, 85,207,
+ 64, 65, 64,215, 10, 83, 27,131,177,102,179,137,149, 27, 84, 83, 14,237,245, 0, 43, 27, 7, 93,170, 69,174,177, 13, 68,136, 41,
+212, 67, 88,158, 99, 37,177,121,200,203,250,249,101,181,169,248, 83, 78,215,208,158,154, 17, 32,135, 83,229,182, 85,222, 60,234,
+171,214,160,108, 40,134,250, 70, 95,112,117,114, 8,103,174,179,186, 18, 6,202, 86,104,190, 30,188, 70,139,133, 12, 97,100,229,
+115,191, 21,254,149,106,247,170,249, 1, 90, 73,246,136,210, 66, 5, 80,137,122,173, 43,100, 46,238,133,156, 10, 6, 67, 74,224,
+ 83,196,106, 69, 41, 87,199,131,181,213, 98,136, 32, 40, 57,103, 97,132,149,198,100, 39,232,134,186,126,175,182, 42,226, 75,181,
+204,149,148, 40,213,225,178, 90, 26,114, 89, 55,237,250,202,181, 80,108,113, 9,228, 12,125,223,215, 47, 99, 35, 79, 68,221,174,
+111,134,220,250,123,149, 46, 87,139,230,154,161, 80,105, 34, 99, 45,243, 60, 19,179, 12,140,214, 88,114,200,168, 92,232,173,101,
+ 25, 39,150,217, 99, 91,139,178,215,231,187,213,171, 40, 87,161, 52, 56,163,101,249,173,122,167,164, 16, 42, 55, 67,227, 26,180,
+ 19, 33,244, 52,121, 84,178, 85, 66, 40,223,137,206,177,208,118,157,220,124,117,242, 37,203, 47,202, 49,211, 54, 13,174,233,182,
+ 15,176,148,140, 74, 10,239, 61, 5,133,173, 30,213,182,237, 81, 70,145,115,148, 27,199,128, 31, 39, 92,117,118,164,146, 81,198,
+ 80,234,244,145, 75, 68,229, 76, 12, 1,107, 21,167,195,137,229,121, 36, 44,133, 20, 2,170,104, 9,213,240, 97,155,222, 98, 20,
+ 40, 23, 10, 70, 37,190, 94, 70, 62,191,188,210,183, 13, 80,112, 77,131,209,141, 64, 35, 41, 17,231,133,102,119,192,237,118,132,
+193,243,114,121,198, 24,141, 31,207,232,156, 40, 40,166,152,209,198, 16,115,102,142,149,203,162,208, 40,195, 97,127, 64, 87,101,
+182, 74,137,221,241,192,243,226,249,127,255,248,103,222, 62, 61,242,238,116,228,151, 95,126, 38, 33, 63, 67,165, 66, 14, 6,109,
+ 45, 16,136,113,166,164,133,214, 26,186,174,165, 59,236, 73, 62,227, 83, 98,248,250,194,249, 60,112,255,246, 45,221,161,149,128,
+ 24, 31,240,203, 82,175, 31, 43,240,115,245,168, 78,227, 40, 9, 90, 89,208,144, 28, 19,247,189,227,253,195, 29,227,121,168, 10,
+ 85, 24,150,192,197, 71,124, 44,216,198,113,119,220, 9, 23,155, 18, 75, 76, 76,190,112,126, 93, 4, 41, 49,134,165,134, 75,168,
+234,181, 61, 56,197,163,214,156, 23,207, 28,229,162,126,106, 28,119,198,242, 60,121,126,254, 50, 96,173,198,104, 9, 61,200,206,
+ 48,219,142,133, 66,200, 69, 66,132,170,136,165,160, 89,124, 66, 43,133,115, 18, 70,147,138, 8, 95,116, 22,200,189,113, 6,103,
+ 53,251,198,114,216,119,180,187,166, 6, 69, 36,218,182,193, 52,134,110,215,240,244,230, 65,224,232, 24,248,243, 47, 47,252,250,
+235,153,118,215,241,195,239, 30, 57,157, 14, 20,165,200, 74,110,196,249, 60,178, 76,139,216,150,180,166,233, 26, 78,143,247,184,
+206, 65,201, 24,170, 55,153,171,224, 10, 4,142,219,212,221, 40,162,247, 34, 14,117,150, 56, 78,204,227, 36, 1, 23, 26,222,191,
+123,207, 52, 37,254,207,255,249,127, 69,107,184,123,124,224,253,219,247, 52,125,135,115,176,107, 12,135,211,145,198, 90,198,223,
+158,113,125,203,238,237, 59,166,151,175,148,113,193, 30, 14, 68,103,153, 39, 79,248,250,194,171, 15,148, 98, 57,117, 61,205,206,
+145,116,193,154,142, 18,192, 79, 30,148,226,235,112, 97,135,227, 77,215,243,178, 12, 76, 6,220,190, 37,251, 64,215, 26,142,187,
+158,162, 10,197,104,238,158, 30,120,250,233,157,120, 98, 43, 60,123,171, 46,215,122,133, 73,215,237, 70,127,227,247,198,232,205,
+187,174,111,108, 86,183, 57, 46,249,134,131, 20, 49,118,217, 32,197,245, 16, 95, 15,147, 24,195, 85,196,180,254,153,237,255,139,
+101,169,160, 69, 12,165,203,166, 12, 79,213, 6,181,250,148,111,135,133,111, 14,238,239, 32,250,252,157,111,126, 11,194,161, 84,
+229,185, 6, 45, 15,251,245, 65,159, 75,174,126,117,110,148,217,171,101, 77,125, 11, 85,107, 13,170, 14, 26,138, 42,170, 83, 98,
+121, 50,186, 34, 1,121,123,221, 24, 65,195, 54,165,254,122, 24,213,231, 46,100,180, 2,167, 76, 29, 88, 76,101, 66,106,162,221,
+141,144, 79, 87,202,104, 61,248, 76,133,139,215,175,103, 29, 88, 5,238, 23,181,181,254,142, 46, 81, 21, 29, 49, 78,116, 1, 34,
+142,187, 6,251,104,165,112, 70,134,109, 9,103, 17,107,213,170,168,171, 49, 46,132, 36,124,191,169,215,147,174, 7,184,208,226,
+ 34,120,213,170,106, 27,140,170, 7,147,252,174, 41, 69,150, 84,233, 10, 32,167, 40,180,150,181, 87, 29, 64,185, 94, 83,169, 92,
+245, 10,235,231,161,129,214,181, 87,250,164, 14,108,235,192,180, 81, 65, 57,147,183, 33,161, 6, 25,105, 3,186,176,196,133,166,
+113,228,162, 43,101,177,218, 34, 43, 21,189, 58, 65, 42, 10,163, 87, 81,160,174,174,137,213,130, 89, 97,249,121, 9, 44,222,139,
+235,164,181,144, 19, 41, 70, 58,215,145, 19,156, 47, 23,122,215,201,242, 18, 99, 21,186,105,140, 66,212,235,136, 87,221, 90, 75,
+ 8,249, 27,145,102,204,162,115,105,156, 80,189,222, 71, 74,138, 88, 43, 30,118, 65,186,156, 92, 0, 41,198, 77,198,191,197, 46,
+230, 76,107, 28,182, 49,219,164,155,115, 65,101,185, 73,215,112,142, 12, 88,231,136, 41,225,103, 81,255,229,164, 8,227, 34,170,
+204,152,133, 11,170, 23,156,170, 1, 7, 84, 24,237,254,254, 14,173, 53,195, 40,129, 42,115, 88,112,198,146,163,192, 11, 86,107,
+200,133, 24,101,147, 36, 38, 82,138,252,250,252,140, 54,226, 85, 95, 31, 62, 78,139,122, 58,122, 79,136,158,118,183,195, 40,195,
+121,120,133,201,163, 20,204,195, 72,111, 20,175, 49, 51,229, 76, 86,154, 57, 38, 22,174, 15,164, 67,211,210,174, 23,151, 2, 21,
+ 19,238,208,241,175,127,250, 51, 86, 43,126,120,247,142,175,127,250, 21, 63, 77,216,178, 78,109,145,214, 88, 17,200,148, 53,172,
+162,208, 55, 13,251,227, 1, 85, 55,230,100, 20,151, 97, 32,229,196,225,225,129,156, 33,196, 72,240,158,114,163, 20,150,233, 18,
+249, 51, 81,148,142,193, 7,114,204, 52,218,240,225,233,128, 74, 19,209,123, 81,172,231,200,107, 8,140, 33,129, 86,236,247, 29,
+217,123, 73,245,139, 5, 31, 11,195, 52, 51,199,140,118, 13,177,110, 9,235,198,106,148,230,104, 45, 37, 69,230, 24, 41, 26, 78,
+206,114,111, 44,193, 71,126,126, 61,163,173,190, 66,106,218, 48, 27,199,108, 20, 49, 43,146, 15,232,146, 55,231,131,143,145, 16,
+ 34,206, 53,226,237,172,159,173, 42,153, 70,107, 90,231,104, 27, 71,223, 52, 28,118, 61,251,190,147, 8,214,106,191,107,219,134,
+182,109,184,127,251, 64,127,236, 73, 33,242,245,229,194,111,191, 61,163,117,225,199, 31, 30,120,247,116,218, 14, 0, 85, 52,203,
+180,176,204, 11,171,166,203,118,142,227,189,100, 22,128,192,149, 26,228, 97, 99,213, 22,232,177,218,125,214, 3, 47,166,196,178,
+120,156, 19,177, 93,152, 22, 66,140,196,156,121,120,124,228,233,253, 91,254,183,255,241, 63,243,242,233, 43,221,126,207,199, 31,
+127,160, 57,180,184, 70,211, 53,176, 63,116,220, 31,239,184, 60,191,128,201,236,239,158,136,139, 39,190, 14,168,174,129,110,199,
+236, 3,105, 24, 24, 47, 19, 99,206, 52, 93,203,225,216, 19, 17,135,128, 45,134,113,152, 41,192, 56,143, 76,203,204,125,191,195,
+199,200,179, 31,233,118,123, 88, 50,174, 36,142,119, 7, 17, 37, 25,131,217,245,188,249,241, 3,251,187,131, 28,242, 55,135,241,
+150,152, 86,211,254,244, 26,181, 87, 55,205, 82,214,192, 19,121,176, 27, 99, 54,222,114,245,214,150, 92,237, 98, 27,193,202, 38,
+ 64, 42, 85, 25,118,245,183,223,192,211,183, 73,117,107,128, 72,133,184, 73,108, 73,117,107,164,236, 10,141,223,122,206,111,125,
+196, 49,198,237,231,234,237,245,241, 77, 96,142,186, 81,200,167, 28,101,184,216,160,252, 76, 81,121,243, 86,175, 60,117,206,169,
+134,225,212,135,248,205, 6,157,146, 88, 51,115,221, 10,169, 7, 79, 78, 2,207,174, 1, 50,101, 13, 44, 89, 63,131,234,220, 9,
+113,141,139, 53, 91,216,136,216,223, 86,120, 59, 95,225,242,122, 24,173,239, 35,167,184, 89,201, 84,169,220,186, 82, 91,160,206,
+ 22, 30, 83,131,190,214,225, 75,107, 81,222,175, 67,220, 54, 36,173,223,199, 54, 20,148, 45,165, 81,163,234, 97, 99,132,195, 85,
+ 98,237,149,247,189,218, 9,229, 59, 75,148,186,208,138,234,206, 42,189, 5,232, 40, 84, 85,140, 27,114,169, 73,122, 89, 80,138,
+ 80, 18,177, 14, 9,206, 58,124,140,178,176,213,195,113,117, 60,164, 92,200, 74,174, 57,185, 95, 87,244, 65,161,235, 16,150,235,
+240,167,202, 42, 0,213,219, 97,172, 37,109,134,180, 10, 34,139, 44,116, 74,107, 98,132,236, 11,187, 93,183, 9, 39, 85,229,206,
+101,224,147, 77, 61, 38,249, 62,115, 69,154,140, 54, 88,107, 54,231,200, 45,191,175,200,204,227, 68,201,133,198, 53,114, 56,167,
+132,107, 26, 98, 44, 12,195,132,174,232,100,222,206, 69,176, 90,161,106,124,114, 41,101, 19, 7,167,152,234,103,169, 43, 53, 4,
+ 77,227,240, 37, 51,123,137,171, 86,149,131,183,206,160,117, 21,180,229,213, 58,112, 51,177,230, 36,211, 99,107,221, 38, 12,144,
+ 9, 61, 50,207, 11,218, 74,136, 73, 99, 45,182,107, 73, 49, 49, 79,115,221, 90, 51,203,235, 92, 21,232, 2, 63,216,149,119,171,
+188,171,162, 80,130,231,254,254,129,146, 11,227,101, 32,149,140, 47, 9,109, 69,237,171,171,248, 2,168, 34,185,132, 42,224,125,
+228,121,156,232,251,174, 66, 63,149, 83,119, 26,149, 11, 75,244,168,174,195, 52,162,158,127,121, 62,211,105,195,242,122,166,164,
+196, 78, 41, 46, 49, 11, 84,153,225, 18, 35, 81,240, 68,118,218,176,239, 59,156, 54,152, 26, 37,169, 93,195,207,207, 23,126,254,
+252,149,223,125,124, 71,223, 24, 94,126,249, 36,147, 17, 26,171, 37,220,196,180,118,243,154,231, 20, 41, 41,179, 59,236, 57,222,
+157,196,171,157, 50,211, 18, 88,150,133,253,225,200,241,233,158, 56,207,132, 20,197, 81,176,138,132,168, 98,157,148, 55,238, 37,
+198, 32,200, 69,209,188,123, 56,240,112,236,137,227, 34, 15,230, 92,120,141,145, 87,239,137,185,208,237, 58, 92, 3,121, 89, 72,
+ 57,227, 83, 97, 90, 18,195, 52, 64,107, 41, 74, 56, 86,189, 66,118, 40, 14,198,208,231,204, 16,196, 46,215, 27,203, 99,211,162,
+ 82,225, 95,191,158,153,235, 67, 69,139,236,148,197, 52,204,198,177,228, 44, 7,113, 46, 52,213, 26,134,210,132,232,177, 78,196,
+ 64, 37, 43, 82,138,148,148,104,141,161,117,150,182,177,180,206,114,232, 59,118,125, 71,107, 45,139,247,132,152,233,250,150,174,
+115,220, 63,156, 56, 60,236, 41, 41,115, 57, 79,252,242,219, 43, 49, 37, 62,124,120,224,237,211, 73,172,107, 74,166,119, 63, 44,
+194, 49, 85,129,148,117,150,195,233, 64,183,107,235,123,212, 2,185, 90, 43,252,232,141,221,104,221, 70,149, 82,164,152,152,198,
+ 9,165, 52,174,105,241,211, 76, 10,162,208,182,189,227,247,127,245, 87,252,237,127,251, 27,254,225,191,254, 55,250,190,227,135,
+223,253,142,221,221, 9,109, 21,141,131,182,117,236,143, 71,150,243, 5, 63,205,116,119, 39, 84,187, 35,156, 47,114,205,239, 90,
+166,152, 40, 75,196,191, 14,156,125,166,115,150,211,177, 39,106,241,209, 54, 52,132, 41,144,114, 97, 9,145,243, 48,112,191,239,
+113,192,231, 97,164,189, 59, 9,204, 58, 39,238,143, 71,218,174, 1, 45,208,240,219, 31,223,177,127,188,163, 36,245,157,184,235,
+250, 87,170,150,179,149, 11,222,212,188, 73,108, 82, 41, 70, 73, 52,219,134,124, 54, 88, 86, 40, 58,234,193, 94,190, 57,112, 75,
+253,119, 43,100,153,162,228,145, 43,110, 82,231,138, 40,141,115,172, 86,165,178, 50,116,234,102,163,148,111,108,165, 79,110,183,
+244, 91,218,160,220,136,228,110,173,121,155, 57,233, 54, 16,231,102, 75, 93, 55,218, 45,113,102,181,120, 81,237,183,155,191,157,
+ 77, 92, 87, 84,169,127,102, 77,161,187,254, 44, 85,174,191,175, 20,217,196, 55,186,146,245, 51, 43,164, 40,135,162,196, 40,171,
+ 45,212,199, 88,179,241,223,121, 75,107, 43, 91, 6,189,174, 30,245,245,208,205, 41, 95,115,246,213,234,235,174,222,247,154,128,
+184,122,247,175, 67, 75,217, 62,207,219,239,136,205,106,168,106,202, 30,117,195, 23, 74,206,213,236,143,235,107,187,138, 6, 67,
+ 12,226,211,182,122,243,230,155,245, 25,177, 70,198,106, 89, 4,200, 16, 99,253, 30, 42,107, 30, 98,220, 80,151, 88, 23, 75, 99,
+106, 2, 97, 93, 34,115,205, 76, 73, 37, 75, 18, 31,171,109, 78,180, 91,117,102,194,104,179, 81, 5,165,210, 44,235,123, 45,155,
+157,154,141, 58, 82, 40, 92, 99,137, 33,210, 56, 71,223,239,214,201,247,102,128,188, 58, 69,114,186,217,202,111,220, 21,226,224,
+144,131, 87,144, 9,197,112,190, 16,130, 12,231,109,103, 37,196,205, 26,186,182,101, 24, 22, 66, 72,180,173, 35, 5, 65,158,181,
+169, 26, 12,117,117, 74,216, 70,186, 51, 66, 12, 98, 65,212,245, 41,166,180, 4,198,169, 76, 72, 17,239, 43,101,172, 53,202, 26,
+137, 37,218,110,244,156, 5,150,173, 83, 86, 46,153,126,183,163,105, 13, 69,235,141, 15, 75, 33,202, 70,222,200,135,104,173,165,
+105, 27,210,178, 8, 87,165, 20, 33,204, 4, 63,139, 95,186,138, 59, 44,224,114,174,124,184, 28,160, 93,111,120,247,225, 61, 41,
+ 21, 18,154, 57,101,230,156, 80,218, 16, 22, 9,190, 81,213,171, 25, 98, 16, 72, 36, 39,166,121, 34,204, 11,189,147,248, 90,140,
+112, 18,214, 42,114,240,196,144, 49,109, 7, 10,198,215, 51, 75, 88,208, 57,115,254,250,204,161,181,132, 12,115, 22,123,196, 20,
+ 19, 83, 29,235, 52,176,215,134,198,216, 13, 89, 0, 77,208,138, 63,126,254,196,227,241,192, 95,124,248,145, 79,127,252, 85,144,
+133, 2, 69, 37, 76, 85, 72, 98,244,182,237,144, 35,251,182,229,244,120, 36,107,205,248, 58,224,115,102, 14,145, 97, 28,121,120,
+247, 6,213, 56,188,247,228, 34, 80, 86,174, 81,133,165, 42, 94,115,206,196,224, 73, 57, 49,123, 79, 6,238,143, 61,143, 15, 59,
+244,226,165, 16,194, 89,198, 20,121,153, 2, 83, 44,184,214,176,223, 59,212, 28, 73, 41, 50,135, 72, 42,145,243, 60,225,179,162,
+ 24,139,223,242,148,197,187,221,105,195, 14, 17,133, 45, 9,156, 82, 60,184,134,198,192, 47,151,145, 47,161, 78,183, 74,130,133,
+188,211,140,206, 18, 18,248,217,163,115,192, 84, 8,175, 32, 34, 62, 86,149, 42, 10, 31, 19, 41,100, 73, 75,178,154,190,109,232,
+156,227,208,182,236,251,150,166,177, 44,185, 48,197, 72,183,107,232, 58,199,225,180,227,244,102,143, 74,112, 25, 38,126,249,244,
+194, 56, 45,188,125,119,207,135,143, 15, 34, 94,171, 15,255,121,152, 89,134, 1, 34, 53, 64,199,114,188, 63,210,239,251, 26,248,
+ 85,243,190,141,100, 39, 23,173,234, 97,182, 70,164,106, 76, 13,224, 88,230,153,130, 98,119, 56, 17,198, 25,191,120,161,125, 50,
+124,252,248,145,203,243, 23,254,151,255,225, 63,163,172,230,233,135, 15,124,252,248, 65,160, 83,167,232, 27,195,225,116,194, 36,
+136,227,192,225,238,136,219,239, 9,203, 76, 73, 51, 28,122,150, 84,200,243, 76,184, 12,124,253, 58,144,149,226,225,254, 8, 86,
+145, 83,193,169,134,101, 73,204,147,132,229,140,227, 76,223,180,220, 53, 29,151,176,160, 14, 59,108,215,176, 44, 11,167,125,195,
+110,215,203, 96,105, 26,142, 63,188, 21,216,189, 78,246,183, 94,237,219, 96,150,117, 11, 44, 49,111, 89,237,235, 70,184,110,114,
+101,181, 1,149,235,131,117,117, 21, 84,139, 76, 61,252, 89,195, 76,175,106,248, 53, 20, 69,169,239,252,239,215,131, 93,173,233,
+114,100,114,142,117,219,170, 48,234,246,247, 10,138,222, 84,215,183,138,247,239,223,219, 74, 31,172,162,253,149,207, 94,249,246,
+ 53, 58,116,133,131, 75, 41,117,208, 83, 53,108, 38,111, 62,230, 53, 21,109, 69, 29,228,103, 72, 50,154,169,207,134,237,117,168,
+111,109,114,235,161, 79,165, 23, 82, 74,162, 29, 77,200,161,100,244,182,105,230,186, 29, 91, 91,245, 38,101, 85,175,235, 42,254,
+186, 70,191,202,134,107,174,246,188, 34,161, 35,234, 38, 45, 14,117,221,192,245,237, 38,126,141,229,255,246,117,235,155, 97,128,
+ 43, 7,173,149,108,138, 74, 75,168,204, 70,133, 84,248,121, 45, 93, 9,181,252, 71, 87, 45,138,209, 2, 77,111, 37, 72,154, 90,
+166,148, 4, 9,190,141, 18, 46,226,191,214,107, 16,108,165,221, 74, 41, 27, 4,191, 22,229,168, 82, 40,166, 82,133, 85, 55, 99,
+ 42, 50,149,235, 18, 36,185,232,130,178,149,237,218, 96,227,253, 75, 46, 53, 63, 63, 82,195, 85, 48,214,224,189,199, 41,205,126,
+215,214,159, 95,135,203,122,175, 24,189, 14, 88,137,148,227, 70,245, 88, 35,136,196, 74,247,220,126,230, 33, 75,138,166, 54,142,
+166,115,248, 16, 37, 45,179,113, 92, 46, 47, 44,211, 68,223,183,130, 28,145,177, 86, 87, 10,199,136, 88,179, 46, 37,125,223,212,
+236,253, 88, 45,182,106, 11,213, 81, 90,208,159,148,228, 28,163,162,142, 58, 87, 37,170, 15, 30,165,244,198, 91,160, 33, 1,251,
+211, 94,236, 4, 10, 98, 20,190,220,123, 79,136, 81,226,238,138, 36,128,181,214,224,151, 73,126,110, 99,241,203, 44,242, 77,103,
+200,250,154,113,168,106,185,192, 90, 52,160,181, 34, 59,248,252,233, 55, 34, 73,252,208,186,129, 34,118, 3, 83, 84,109,227, 74,
+132, 69, 32,177, 24, 19,151,121,162,107, 27,186,122,168, 39,141,132, 23, 20,129,129,149, 51,152,166, 35, 41,195,249,124,166, 45,
+153,243, 52,211, 91,199,193, 90,158,151,140, 15, 17, 93, 10,151, 37, 16,171,168,162, 81,208, 25, 69, 93,220,160, 64, 40,153, 95,
+150, 17,159, 18,255,221, 95,252, 68, 9,137,207, 47,175, 4, 52, 42,107, 40, 73, 22, 70,165,208,202, 73,206,176,211,168, 16,216,
+ 63,221,115,120,124,100,184, 12,204,151, 9, 79, 97,158, 6,148,130,251,187, 7,150,105,170, 48,157,102,172,229, 56, 20, 77,138,
+ 5, 82,221,156,146, 76,248, 75, 72,236,155,150,251, 83, 79,111, 21,202,199,141,151,123,241,145,243,188, 96,181,102,191, 63,162,
+125, 4,159, 8, 65, 54,252,209, 71,150,193,131,177,242, 94,139,220, 0, 90, 59, 26,109,233, 84,194,164,200, 88,211,255,238,154,
+134,189, 49,124,121, 93,248, 60,123,140,114,146,181,108, 12,147,182, 76,182, 37,231,194,184, 44,228, 28,112,181, 36, 3,109,200,
+ 90, 30, 88,182,218,154,150, 20, 25,226,130, 51,138,206, 26,250,198,209, 53,134,125,235, 56,246, 61,173,179, 96, 52,131, 95, 48,
+ 70,211,247, 29,187, 93,207,241,238, 14,173, 91,150,121,230,249,203,133,241, 60,242,246,233,196,135, 55,111,105, 93,191,249,164,
+195, 24,240, 99, 16, 65, 37, 10,235, 12,167,135, 19,253,113, 47, 15,173, 34,246, 52,204,170, 12, 94,163, 99,245,166,148, 85, 70,
+182,120, 63, 73, 7,192,174,223,145,253,204,178, 12, 34,230,202,112,120,188,163, 63, 28,248, 63,254,167,255,194,240,245,149,195,
+221,129, 15,191,251,137, 72,193,212, 3,125,191,235,105,154,134,120, 30,104,118, 61,205,105, 71,244,153, 60, 47, 36,231,240,141,
+ 98,153, 3,121, 12,124,254,237,133, 49, 21,126, 56, 29,216,117, 22,175, 50,216,134, 18, 21,243, 52, 19, 66, 98,152, 7,114,142,
+ 60,180, 13, 75,152,184, 24,112,167, 3,105, 14,236,148,225,116, 58,200, 53,160, 13,221,211,129,167,159, 62,214,180,176,107,168,
+202,173, 95, 91,223,112,229,219, 33,189, 90,217,178, 4, 31,217,202,241,173,185,224, 2,119,203,128,184,249,204,149,160,111, 42,
+215, 20,254,213,114,165,174, 9, 98, 91,132, 44,255, 30,254,191, 61,160,175, 9,112,114, 31, 72, 78, 55,223, 36,214,129, 66, 43,
+251,205, 65,126,141,164, 45, 55, 27,231,109, 83,219,245, 80, 87, 27, 26, 33, 3,196,109,113,204,182,233,215,244,181,219,196,188,
+ 21,234, 93,131,172,114, 18, 61, 75,138, 55, 97, 55,214,160,172, 60,231, 84,205, 54,200, 89, 6,159,237,165,101,181,109,101,110,
+243,254,171,250,188, 85, 87,188, 76, 41, 81,193, 87, 49,103,185,217,242, 11, 26,180,173,229, 46, 43,144,113, 83, 2,195,181,171,
+ 64,223, 12, 57, 84,165,183, 90,125,236,250, 26,251,203,119, 81,181,235,183, 37,215,141,208, 31, 77,211,108,156,242, 45, 74,146,
+171,232,109, 85,237,175,214, 62,173, 53,218,174,118,200,252, 77, 52,108, 89,209, 28, 37,195, 65,218, 14, 68,141, 43, 70,220, 17,
+117,243,151,175, 64,232, 30, 25,163, 36,201,180,172, 41,120, 53, 40,202, 40, 25, 18,141, 17,229,122, 74,153,213,148, 64,213, 37,
+172, 57, 4, 91, 57, 81,150,255, 96,205, 65,201,100,186,182,217, 60,250, 40, 65, 6, 74,142, 91, 33,142,174,250, 78,178, 12,132,
+114, 95, 85,116,160,198, 2,175, 69, 80, 74,105,190,190,188, 82,114,228,208,245,144, 19, 49,134, 10,197, 7, 46,227, 64,211,117,
+ 82, 70, 83, 41,158,213,223, 47, 22,219,130,118, 74, 68,224,218, 80,114, 45,150, 41,146,196,105,140,184,169,114,146,243, 48,230,
+114, 45,227, 89,231, 55,191,248, 27,101,232,166, 72,192,245, 59, 41, 40, 40, 50, 85, 26,219, 50,205,203,246,229,129,192, 4,202,
+ 24,226,101,193, 21, 73,220, 73,115, 32,235, 76, 82,133,164, 37,134, 80,182, 7,185,224,117, 85,111, 54,251, 29,126, 89, 24,199,
+133,164, 13, 62,102,138, 50, 82,103,153, 86,155,201,202,167, 39,113, 54,231,200,101,137,180,109,131, 86, 73,184, 30, 36,188,132,
+232,137, 37, 99,187, 29,218, 57,150,243,133, 97,156,176, 33,114, 25, 7,186, 70,218,174,190, 38,241,207,159,179, 98,140,185,110,
+233,138,190,232, 45, 17,200,100,176,192,146, 35, 95,134, 87,126,252,240,134,183,111,223,240,235,231,223,152,166, 17,155,171,111,
+212,105,156,113,219,164, 91,140,132,107,180,206,113,247,240, 72, 4,230,113,196,135, 76, 84,153, 28, 2,199,187, 59,218,211,142,
+ 24, 34, 90, 91, 41,147,153, 22, 26,107, 55, 72, 51,215,205, 57,165,136,247, 1, 93, 12,143,167, 3,135, 67,131,154, 2,186,128,
+ 53,142,175, 49,242,219, 56,147,150, 68,127,232,105,187,130,154, 3, 57, 36,230,232, 41,202,112, 30,103,146,213, 36, 37,168,139,
+174,245,120,198,104,172, 18, 37,250,228,165,172,229, 96, 20,247,206,113,246,129,207,163, 39, 38,133,210, 82,171,184, 24,139, 55,
+150,144, 21,131,247,164,236,233,140,149, 27,193,136,248,168, 49,170,250,211, 17, 27,221, 60,211, 43,195,190,177,236, 91, 39,135,
+186,179,236,187, 22,231, 52,166,181, 44, 73, 46,204,174,113,236,118, 13,199,135, 3,187,189,195,135,153,175, 95, 46,188, 62,191,
+114,127,183,231,253,187,123, 78,123,201,124, 86, 69, 17,166,196, 60, 46,228, 18, 37, 60,199,105, 78,119, 71,250,211,129, 82,213,
+124,186,194, 88,235,195,211,108, 74, 99,217, 40, 12, 18,218, 48, 47, 51,195,232, 57, 28,143,104, 5,211,112,185,166,165,237, 29,
+199,135, 19,127,247, 95,254,134,127,252,187,191,197,182,142,159,126,250, 11,218,166, 69, 89, 77,219, 42,250,190,161,107, 90,194,
+101, 64,181,134,238,112,172, 55,125, 34,199,140,106,157,180,241, 13,129,175,159, 47,188, 76, 11,239,158,246,236,239,123,166, 24,
+208, 81, 97,178, 97,153, 60,203, 20,152,124, 96,138,129, 99,219, 96, 80, 12, 62, 97,143, 61,113,153, 81, 41,242,244, 32,176,123,
+108, 52,221,190,229,225,247, 63, 72,178, 95,142,242, 48,213,183, 94,102,117,109, 31, 91, 5, 85,235,131,183,220,186,216,100, 3,
+204, 37,213,108,134,178,109, 35, 91,205,169, 86,255, 97,124,234, 22, 23, 91, 61,238, 90, 27,248, 38,120,230,150,223, 23,255,246,
+237,214,173,191,131,216,111, 85,242, 74,201, 32,113,123,224,126, 95,222,178,110,228,165, 92, 3, 93,196,173, 86, 95,127,136,242,
+ 64, 86,245,240, 70,147,139,150, 62,130,146,170,251, 65, 44,118,229,182,125,173, 66,238, 70,169,186,181, 94,131, 90,110, 45,128,
+229, 38,244,228,250,222,217, 30,252, 49, 4,148,102,171,228,148, 88, 87,217,125,212,186,125,171,171, 32, 47,165, 64, 73,101, 21,
+ 59,200,161,174,248, 78, 36,184,114,242,124,147, 31,127, 29,228,190, 87,189, 43, 84,209, 87,241,213, 58, 0,105,153, 92,237,154,
+ 36,167, 5,230,205, 37,227, 76,205,135,175,113,186,186,214,197,132, 34, 5, 34,118, 21,229, 85,203,154, 86, 50,224, 27, 85,208,
+ 37,139,229,110,141,209,173, 90, 6,106, 75, 95, 42,137, 92,155,226,138, 85,117,137,145,131,189,113, 78,210, 75,171,234, 30,163,
+240, 21, 69,210, 70,168, 25,163,140, 40,243, 83,146,120,233, 26, 37,174,203, 45, 29,147,209,170, 84, 49,173,156, 39,185, 72,123,
+158,181, 86,130, 92,130,167,171,101, 49, 87, 87,151,100, 89, 40,212,214, 42,184, 90, 42, 85,145, 66, 42,179, 53, 3, 10, 23,190,
+182, 83, 2,204,211,196,121,242,116,251, 35,218, 88, 66, 8,244,221, 14,171, 27,134,243,136, 69, 22,152,152,162, 12, 2,214,201,
+197, 80,175, 89, 98,193, 25, 75,227,108, 77, 36, 12,155,171,194, 88,139,109,141, 88,155, 83,220,114, 27, 36, 95,160,198,235,197,
+165, 6,201,196, 21,102, 85,132,146,104,251, 30,103, 28,177,242,186,206, 88,230,105,146, 80, 3,165,165,233,169,109,101,147, 14,
+ 51,182,105, 49,182,230,125,171, 92, 51,223, 87,184,143,237, 5,235, 44,208,215,254,112, 96,156, 7,194,188, 80,140, 98, 9, 9,
+109,173, 68,254,133,132, 81, 70,248,161, 27,117,231, 28, 61, 88,232,187, 22, 95, 68,165,218, 41,133, 51,162,216,199,106,225, 90,
+114,230,245,124, 70,199,196, 52, 77, 24, 63,177,183,134,193, 71,230, 10, 1,190,134, 72,172, 1, 40,125,209, 52, 74,109, 48,172,
+ 86,138, 24, 34, 95,166,145,182,105,249, 79,191,255,145,151, 47,175, 92, 94, 94,201,222,215, 69,167,160,140,195, 89, 43,177,168,
+245, 70,201,192,221,187, 55,156, 30, 30, 24, 94, 94, 25,167, 9,111, 13, 11, 16,114,230,248, 40, 57,223, 69,129, 49,150, 95,191,
+126,161,107,186, 90,150,147,165, 55,187, 68, 82, 10,164, 84, 88,124,230,241,208,243,225,225, 40,142,130,152, 48, 78, 19, 77,230,
+121,152, 25, 46, 11,237, 97,207,254,238, 8,195, 68, 78,129,113,153,200, 90,243,186, 4,150, 8,177, 24,177, 3,106, 73, 88,114,
+ 90,227,148,162,171, 57,221, 11,153,189,209,188,113, 13, 49, 38,190,158, 71,124,148,192, 3,103, 13,139,214, 76, 90,177, 20,197,
+ 56, 45, 76,203, 66,107,164,223,168,212,148,167,174,113,104, 68,220, 23, 98, 97, 24,103,148, 82, 28,155,150,125,211,176,107, 27,
+218,198,178,239, 91,218,206, 98,118, 78,110,214,144,104,156,225,112,144,112,152,238,208, 49,250,200,243,151, 51, 95, 95, 6,218,
+221,142,167,119,143,236,118, 59,178,146,141,103,241,158,121, 24,160,114,182,214, 58,118, 15, 7,118,119,135,173,172,194,105, 35,
+170, 84,109, 48,218,110,153,212,170,250,161,215, 27, 56, 44,158,151,151, 87,186, 93, 71,183,219,225,167,169,170,142, 27,137, 95,
+221,245, 60,255,249, 11,255,248,127,253, 29,121, 74,124,252,225, 35,143, 31, 30, 36,114,214, 41, 14,157, 99,119,232, 72, 33, 96,
+ 82,100,127,119,128,182, 35, 39, 69,140, 30,181, 51, 76, 99, 32, 15,158,225, 60,242,233,203, 23,238,143, 59,222,220,223,115, 89,
+198,218,248,100, 73, 62,115, 25, 39, 22, 63, 51, 69,207,189,115, 28,156,227, 92, 2,229,216,137, 72,117,241,220, 29, 78,156,246,
+157,128, 97,109,195,195,239, 62,114, 56,238, 43,212,200,117,195,219, 10, 60,249, 38,249,109, 13,135, 89,173, 88,107,241,136, 12,
+ 60, 53,230,116, 61, 96,191, 73, 90,147,252,236, 82,196, 99,173,140, 32, 31,235, 33, 86,110,248,232,173, 30,181,240, 13, 4,143,
+226, 10,179,171,213, 26,149,234,118, 37, 89, 22, 74,149,170,132, 87,215,215,250, 31, 4,206,220,230,230,168,218, 63, 81,244,150,
+218,122,181, 49,213, 72,216, 45, 0, 70, 34,202,182,152, 88,165, 77,205,193, 55, 53,148,167,108, 98, 75, 25, 84,242, 55, 97, 47,
+ 90,203, 86, 86,170,143, 89,252,182, 53,218, 53,149,154,123,175,234,251,148,237, 62,134, 82, 5, 77, 82,107,149, 75,164,148, 53,
+138, 86,120,120,170,136, 48,165, 82,213,215,185,134,159,172,245,171, 98,175, 93, 55,242,111, 62,137,200,141,240, 81,109,254,233,
+239,173,125,165,166,181,177, 37,200,177, 89,125,215,211, 75,138, 75, 36, 1,206, 52,238, 74,167, 20,161, 6,197,137,147, 54,193,
+160,222, 28, 21, 50, 48,216,218, 94,182,234, 1,172, 98,107, 51,139,181,153,209,212,170,208, 18, 69,100,214, 25, 83, 19,244, 4,
+ 73,177,107,165,119, 45, 58,201, 37,215,140,142, 82, 95,159,108,196,186, 20,129,208,157,219, 54,239,111,195,138, 68,128,153,111,
+ 82, 19,115,150,144, 49,227, 28,141, 49, 76,115,228,208, 53,184,166,136,149, 82, 93, 15,235, 85,126,112, 29, 28,203,214, 63, 96,
+215,133,166, 6,162,105,179,222, 63,154,201, 71, 94,207,175, 52,109, 75,215,247,196, 56,163,109,193,185,134,151,215, 87,114,150,
+ 65, 36,167,188, 37, 37,174,161, 57,130, 12, 20,201,210,175,233,172,166,100, 82,244,148,148,232, 90,139, 49, 50,180,167, 84, 72,
+ 90, 34,133,149, 2,237, 92,195, 50, 78, 91,138,156, 64, 85, 85,249,170, 37, 23,215,106, 83,149,166,130,162,135, 16,100,187,169,
+190,189,118,215, 17,131, 40,157,109,227,132, 3,136, 65,148,224,181,230, 84,175,242,165,181, 52, 0,133,109, 20,187,190,103,190,
+ 4,138,159,200,254,106,155,136,161, 66,232, 86, 87,207,108,217, 98,249, 94, 67, 96,239, 44, 77,107,165, 26, 21, 68,172, 87,114,
+237,230,110, 80, 90,225,253,194,120, 57,147,163,103, 90, 22,142, 77, 11, 69, 49,133,132, 75, 5,159, 37,211,156,218, 29,220,214,
+108, 98, 99, 36,237, 44,102,248, 50,141, 92,198, 11,127,253,187,223,241,116,247,192,203,231,103,150,105, 17, 81, 97,221, 98,172,
+115,100, 87,117, 7, 85,140,177,111, 91, 30, 30, 30,200, 41,178,204, 11,227, 56,145,157,244,178,183,157,227,116,186,175,125,202,
+150,203,112,102,153, 23,142,199, 78,162, 14,107,134,177,196, 67, 38,124,138, 24,149,120,115,127,164,239, 44,202,123, 73, 96,179,
+134,231,201,243,229,117, 2,165,216, 63,236,177, 37,160,125, 98, 89, 22,124,201, 68, 5,195, 20, 8,104, 60,235,123,147,165,218,
+ 25,131, 75, 5,157, 19, 33,203,180,120,111, 29,166,104,126, 27,102, 46,222,139,189,175,117, 68,215, 48, 27, 75, 84,134,113,153,
+241,126,102,103,100, 40,136,245, 38,235, 27, 71,215, 26, 41,181, 9,145,105,241, 64,230,216, 57,246,141,101,215, 56,220,202,167,
+ 55, 45,166,105,176,125,203, 28, 18, 49,102,186,190,225,112,218,115, 60, 29,196,250,241,122,225,203,231, 51,206, 52,188,125,119,
+207,221,233, 32, 23,127, 77,144,154,207,163, 36,189, 41,121, 8, 29, 31, 14, 28,238,142,155, 47,118, 83,116,175,155,202, 90,104,
+177,246, 74,215,232,209, 24, 51,227,235, 68,215,119, 28,251,142,225,249, 21, 31, 60, 69, 41, 92,219, 96,172, 99, 24, 2,127,248,
+251,127,226,211,175,191,113,122,184,231,253,199, 15,164, 92,112, 13,236,122, 17, 86,178,100,242,178,208,223,223, 97,107,133,174,
+ 88,158, 52, 62,103,150,203, 66,156, 50,191,126,249,130,113,134,119,111, 30, 88, 82, 68, 92,114, 22, 83, 52,195,101, 98, 24,103,
+230,224,105, 20,156,156, 99, 10,129,197,104,104,100,218,127,232,123, 30, 42, 18,161,141,230,233,195,123,142, 31,223,201,225,178,
+ 38, 83, 97,170, 40,170,108,130,183, 43,132,170,183, 0,144,170,120,186,110,183, 55,181,162,107,246,117,185,137,131, 93, 55,241,
+109, 51,229, 6, 98, 47,101,171,230, 76, 41,138,174,130, 82,105,218,242,239,183,250,154, 61,127,229,192, 83, 61, 28,212,154, 33,
+242,141, 93,237,123,161,220,173,223,190,168, 53,206,147, 77, 96,183,242,161, 34,139,169, 74,245,170,212, 54, 55,226,176,171,191,
+ 91, 75,161,199,141,151,187,144, 43, 28, 90, 57,114,106,180, 42, 55,244,194, 42,178,187,169,149, 93, 59,218, 87, 72, 56,134, 36,
+153, 21, 85,213, 85,110,210,251, 86, 27,151,170,195,140, 90, 97,226, 84,182,144,156, 82, 99,172,183, 1,160, 66,231,137,116, 77,
+223,171, 67, 16, 55,204,138, 68,181,234,186, 73,174,217,240,107, 86,124,253,252,215,193,188, 38,145, 43,242,230, 4,177, 90,213,
+ 64, 22,182,239,185, 20,249,222, 99,109, 41, 19, 79, 63, 21, 32, 87,219,159,179, 90,111,127,198,104, 57, 47, 74, 93,206,180, 82,
+149, 11,191, 14,157,186, 30,250,185,114,239, 27,125, 80,237,108,166, 40,138, 81,164, 28,197, 19,111, 12,170, 20, 82,214,226,229,
+111,228,153, 40,247,238, 90, 35,123,213, 66, 74, 86,127,190,230, 26, 80, 33,115,107,165,199,196,104,246,109,191,149,236, 40,165,
+235, 32, 87,203,205, 40,148, 10,163,151, 34,219,191,179,166,102, 25,172, 81,190,117,224,168,104,197,243,231, 87,172,213, 28, 79,
+ 71,150, 32, 67,118,215, 57, 22, 31,152,231, 64,219, 54,181, 5,238,198,251,190, 38, 92,214,223, 42, 14, 20, 48,107,155, 97, 29,
+ 52,154,214, 73,164,116,129, 24,145, 70, 62, 81,210, 88,194, 56, 85, 11, 68,157, 54,180,188,129,253,110, 71,183,235,240,201,147,
+124,160,113,194, 7, 44,126,169,144, 11,100, 93,232, 91, 71, 8, 98, 37,114,109, 75,140, 73, 54,150, 2, 37,102,217,202,139,124,
+ 32,172,245,137,100,140, 21,129,219, 60, 46, 24,215,224,125,148,164,162,106, 37, 81, 86,138, 54, 40,200, 5,164,192,215,174,247,
+125,183, 35, 43,181, 85,121, 54,214, 18, 82,148, 76,121,235,176,197,241,242,252, 74,152,103,162,159, 88,114, 97,103, 59,166, 4,
+115,148, 27,231, 82,211,211, 84, 86,116, 74,146,153, 86,171,135, 85,134, 97, 89,248, 60, 13,220,221,221,243,223,255,197, 79,188,
+190,206, 76,231, 1,239, 3, 33, 87,125, 0,242,224,215, 93,123,133, 25,149,226,241,233,129,166,111, 24,134,129, 16, 35,211,236,
+101,179,201,137,126,183,151, 60,111, 99, 73, 73,113,121,126,169, 45,100, 18, 29,152,235,205, 18,163,116,233,134, 28, 57,116, 45,
+ 31,158,238,241,139,199,228,128,107, 12, 94, 27, 62,191,142,204, 33,136, 40,172,179,152,217, 19,151,192, 60, 5,104, 27,134, 97,
+193,103,152, 75, 70, 57, 43,188,119, 70,148,253, 37, 99, 83, 34, 20,169,129, 60,105,203, 17,195,215, 37,242,121, 14,100,109,112,
+187,134,220, 90, 46,218, 16,148,102,156,131,180,245, 25, 69,111,196, 98,145,148,162,111, 27,246,141,193,135,204, 24, 34,195, 18,
+152, 99, 96,223,180,156, 90,199,190,119, 88,107,233, 92, 67,223, 52,216,198,209,238,118, 68, 95, 24,230, 64,235, 44,167,187, 61,
+135,251, 3,170, 81, 92,134,137,215,151, 1,165, 44, 79,111, 79,220,223, 29,104,173,216,107,130, 79,140,231,113, 11,237,192,104,
+246, 15,123,246,119, 7, 84, 13,146, 49,171,205,169, 62, 24,138, 84, 60, 85, 85,178,217, 54,174, 82, 10,195, 48,128,213,236,143,
+ 59,166, 97, 36,204,139, 12, 6,109,131, 54,154,121, 90,184,124,122,230, 95,254,225,159,232,246, 13,239,127,255, 3,202, 26,172,
+130,174, 21,232, 91, 43, 69, 30,102,246,119,119, 52, 15, 71, 43,151, 2,161, 0, 0, 32, 0, 73, 68, 65, 84,138,105,208,100,177,
+126, 90,195,229, 60,129,143,252,242,249, 19,243, 60,243,241,195, 91,140,134, 57, 44,148, 36,106,247,203,101,230, 50, 12,196, 32,
+ 52,211,222, 56,150,148, 88, 20,168,198, 17,188,103,111, 29,239, 31, 78,180,173, 65, 59,203,238,241,145,211,135,183,194,223,162,
+170, 27,160, 66,234,165,138,225, 86,175,109,133,133,141, 17, 63,248,186,157, 93, 17,241,155,237,124, 19, 82,234, 10,227,151,109,
+ 67,221, 68,116,185,108,145,178,235, 86,156,115,169, 28,112,222,210,203, 86, 97,157, 8,109,175, 10,236,154, 19, 43,246, 53, 99,
+ 4, 37,184,177,165,169, 27,240,254,155,226,150,117, 91,191, 25, 20,210, 26, 58,163, 36, 41,112,237,210,254,166,159,156,130,182,
+181,134, 85,138, 45, 54, 43, 20, 53, 99, 65,248,222, 53,152, 76,109, 93,222,235,193,169,111,248,104,245, 77, 52,171,218, 90,213,
+ 86, 56, 91,173,170,116,165, 9, 62, 66,169, 16,113, 69, 55, 72,146,112,103,172,222,208, 11,217,189,141, 32, 3, 34, 33, 68,175,
+ 57,250,198, 84,203, 91,218,196,111, 69,231,107, 65,139,173,234,252,172, 48,186,108, 8,140,120,210,205,134,198, 40,116, 13,187,
+ 81, 20, 4, 54,214,234,250, 62, 36,138,212,144,179,198, 58, 43,161, 68,219, 27, 43,149,107,150,248, 86,129,234,165, 86,123,245,
+197,175,159,219, 55, 42,248,117, 8,171,113,186,170,166,248,173, 88,146, 90, 11, 96,170,124, 61,215,102,182,206, 53,146, 88, 87,
+160,164,128, 86,102,107,211, 51, 70,227,172,150, 14,146, 44, 13,113,214,104, 74,140,130, 38,229,155,235, 52,175, 9, 36,245, 90,
+ 72,226,238, 72, 85,100,157, 99,168,144,127,187, 89,252,214, 12,122,117,211,209,174,138, 80, 53,107, 59,154,115, 22,180,150,127,
+ 22, 75, 77, 10,212, 34, 16, 4, 94,135, 51,195, 48,113,220,237, 0,141, 95, 60, 77,211,144, 98,225, 60,140,180,109, 87, 43,118,
+ 21,198,184,122,191,177,105, 0,132,187,183,178,220, 26,181, 5,132, 69, 10,174,105,193, 72,112, 90, 78,178, 48, 43, 10,122,153,
+206, 44, 62,200,180,104,228, 98,178, 85, 85,188, 63, 28,113,141, 35,231,196,101, 24,113,189, 37,204, 11, 97,152,177,213, 27,222,
+ 53, 29, 86,203, 63, 47, 41,211, 55,141,240,192,231, 81, 60,131, 49, 85, 17,205,149, 91, 42, 41, 99, 75, 97,215, 73,168,205,203,
+203, 11, 70, 41, 22, 63,227,104, 40,241,166,136, 64, 73,115,153,168,227, 97,152, 39,156, 81,114,168,123, 49,245, 55, 90, 90,106,
+ 82, 76, 96,164,199,124, 41,145,241, 60,144, 66, 34,206,129,190, 40,172,109, 88, 66, 33,162,153,115, 17, 81, 24,133, 6,104,215,
+ 68, 38,235,106,173,101,228,121, 30, 48, 86,241,159,126,250, 9,237,118, 60, 63,127,101, 94, 22,130,247,216, 21,147,201,242,192,
+117,182,138, 9,151,204,233,225,129,167, 31,223, 48,188,188, 16, 99, 96,246, 1, 95, 10,217, 25,172,115, 82, 11,235, 20,166,213,
+ 60, 63, 63, 19,230,200,254,208, 75,180,109,148,135, 98, 74,145,144, 68,105, 89, 66,225,195,187, 71, 90,167,200,222,227,108, 75,
+ 81,138,231,203,200,151,203,196,126,223,177,223,239,104, 2,152, 37,112,153, 39,146,211,248, 37, 50, 68,233,216,206, 90, 97,157,
+166, 24,208,214,162,139,198,164, 5, 16,120,191,181,134,147,133, 75,204,188, 94, 60, 90,105, 73, 18, 52,134, 87,109, 88,208, 76,
+243, 34,185,227, 90,211,217, 70,116, 22, 26,129,158,251,150,164, 52,227, 28, 57, 95, 38, 98, 72,156, 90,199,169,111, 57,236, 90,
+ 90,103,112,206,208, 53,162,122,239,246, 61,170,117, 76,243,130,202,153,227,195, 65,184,240,222,113, 25, 22, 94, 94, 7,188,143,
+ 60, 62,237,185,123,216,227, 58, 73,146, 10, 75, 96,120, 29,200, 33,111, 77, 90,251,211,129,227,211, 29,172,225, 41,218,144, 43,
+218,164, 55, 46, 89,118, 16,234,118,190,250,167,199,203, 64,244,145,253,254, 64, 14,145,101,158, 81,198,224, 92, 67,219,236,152,
+166,133,101, 92,248,183,127,252,123,150,203,192,199, 31,127,228,120,186,151,207,160, 51, 28, 15, 59, 26, 35, 60,122,127,183,103,
+255,238, 17, 67,131, 81, 45,243, 50,147, 53,156, 95, 38,242,148,248,237,203, 51,159,191,124,226,167,119,239,184, 63, 28, 24,195,
+ 66, 78, 9,171, 53,147,247,188,188,156, 69, 59, 1,236,180,195, 82, 24, 83, 36, 58, 83,183, 60,197,211,113, 79,179,239,208,214,
+210, 30,247,220,125,120,139,109, 28,122,141, 41, 85, 43,236, 94,174, 7,147,210,215,195,105, 51,252, 21,146, 18,143, 49, 55,208,
+226,170, 62, 94,159,227, 82, 36, 17,183, 7,239,118,232,223, 64,243,210,180, 22,183,108,117, 85, 4, 22,165, 62,148,178, 86,219,
+ 96, 32,238,149,184,169,233,111,109, 97,249, 54, 88,230,187,160,156,111,224,212,122,128,231,239, 54,247,237,117,213, 66,153, 91,
+112,126, 13,130,169,132, 25,169,168, 45, 32, 70,169,194,122, 2,173,175,115,165, 13,164, 13, 64,213,188,237, 68, 94,185,119,190,
+ 71, 29, 4,145,216,168,141, 90, 84, 67,109,161,139, 49,162,204, 42, 0,147,100,148, 88,109, 80,235,102, 39, 96,138, 32,126, 69,
+151,141,138, 16, 27,191,252,125, 42,137, 66,168, 30,117,182,140,242, 53, 59, 93, 21,217,186, 41, 34, 75,211,245,253, 80, 29, 31,
+171,103, 45,215, 33, 65,213, 4, 56,234, 48,160,138, 65, 89, 43,131, 95, 42, 24,211, 80,116,220,232, 44,173, 12, 49,233,202, 54,
+228,122, 24,223,112,206, 55, 8,136,179, 85,118,182,230,176,235,245, 51,170,155, 55, 16, 54, 65,165,198, 25,139,169, 13,126,235,
+ 0,104,106,228,119,161, 16,124, 64, 27,161, 34,174,161, 62,102,179, 97, 26, 99, 49, 74, 28, 29,102, 13, 61,171, 9,127, 90,105,
+116, 46,213,171, 14, 84,119, 17, 20,156, 49,248,101,161,228, 66,187, 70, 72,107, 83,133,113,121, 75,247, 83,232,173,248, 74, 6,
+133,245,222,146,249, 52,215,129,112,107,182,211, 34,120,253,250,245, 43,167,187,125,237,145, 72, 53,207, 61,115,185, 12, 24, 99,
+105,187,118, 43, 46,218,180, 24, 43, 77, 37,160,186, 8, 87,171, 46, 40,166, 76,244, 25,235,220, 38, 12,140, 49, 86,237, 73, 66,
+143, 95,191,146, 76,144, 24,215, 36, 23,188,214, 50, 37,247,125,143,179, 45,222, 7,226,178,208,116, 61, 97,158, 68,176, 86, 31,
+160, 77, 35,156,104,246, 53, 72,223,104,210, 18, 54,200,125,171,102,188,105, 14, 42, 37, 99,141,162,235, 45, 99,152, 57,159, 71,
+116, 46, 85, 52, 6, 33,164, 13, 34, 21, 43,191,136,162, 22, 31, 56, 79, 11,187,190,135,214,110, 5, 10,173,174,141,108, 90,161,
+141,195, 42,205,249,229,149,215,225, 34,246,182, 20,217, 59, 75, 44,137, 37, 69,178,134,151, 28, 9,181,135,214,106, 81,235, 26,
+ 4,206,180, 70,241, 60, 15, 76, 97,230,247,239, 63,240,195,253, 19,227,226,165,178, 53, 86,179,255, 54,184, 38,217, 58,173,147,
+ 9,218,194,195,199,143,148, 4,207,159, 62, 99,156,101, 89,162,116,254,170, 66,211,119,156, 30, 31,192, 40, 46,175,175,140,151,
+ 1,156,165,181, 98,183, 10, 33, 84,117,109,148,144,157,162,232, 27,203,143,239, 31, 73,243,136, 41, 25,211, 56,230,144,248,114,
+190, 80,148,166,237,123, 90,155,113,201, 51, 95, 70,153,220,180,101,156, 3, 83, 86, 44, 37,211, 58, 91, 31, 80, 82,212,144, 75,
+194, 20,241,254, 55, 10,158,180,131,164,248,116, 25, 9,165,208, 54, 29,217, 57,206,198, 48,167,204,101,156,121,157,103,148,130,
+157,169,194, 13, 13,157,115,220,117, 29, 70,193, 28, 35, 95, 47, 35,175, 62,209, 26,197,195,174,225,110,223,209, 88,135,181,138,
+ 93,171,217,181,150,246,208,227,246, 61,203, 60,179,248,200,113,223,113,127, 58,208,238, 58,198, 49,240,250, 50, 50, 78, 51,143,
+ 15, 39,238,238, 14,236,186, 22,167,164, 24, 97,188, 12,228, 40, 28,186, 54,154,253,169,231,248,112,170, 54, 37, 73,226, 43,255,
+129,149, 74,113,229, 83,215,237,109,158, 23,188,143,220,221,223,161, 77,193,207,139, 8, 51,173,193,181, 7,124,240,132, 24,248,
+245,143,127,226, 79,255,244, 39,222,252,240,145,211,211, 35,202, 64,211, 40, 14,251,150,166,107,137,175,103, 90,107,121,122,243,
+132,109,118,224, 26,226,114, 33,170,194,224, 3,203,236,185,188, 12,252,233,207,159,120,255,248,200,195,155, 19, 99, 24,201, 41,
+ 98,149, 37,107,203,243,235, 69,188,254, 10, 26,173,104,180,218, 98, 99, 69,144,148,120,216,117,220,237,119,104,163,112,125,203,
+233,237, 35,205,195,254,202,143,214,108,115,233, 70, 95, 25,243,107,255,249, 55,225, 44, 37,223, 8,221, 42,143,200,218,155,174,
+ 55,177, 86, 41,233, 74,157, 21,174,215,189,250, 15,162, 91,111, 20,239,130,210,223,182,182,173,210,225,107, 15,251, 42, 40, 34,
+ 23, 74, 44, 85, 85,172,170,114,236,223,123,211,191,241,163, 87, 63,241,181, 15,253,251,104,218,111,255,158,114,237, 63, 95, 5,
+112, 26,189, 65,179, 90,175,156,240, 13,237, 80, 97,213, 66,222, 14,158,162,111,126, 95, 77, 13,145,120,216, 26,177,107,234,129,
+185,110,165,165,144,130, 56, 88,172,117, 53,245, 75,215,236, 6, 73,146, 19,123, 82, 77,213, 83, 53, 46,180,138,185,214, 82, 29,
+ 17,151, 73, 78,182,162,110,135,136, 16, 89,175,194, 63, 99, 41, 70,196, 93, 69,233, 74,175, 84, 33, 29, 89, 26,212,234, 9, 36,
+ 46,164, 58, 68, 84,207,182,209,160,116, 18, 75,154, 54, 64,196,185, 76, 38, 84, 63,118,222, 26,203, 82, 17, 77,128,214, 72,184,
+204, 26,210,181,102,250, 87,127,186,173, 61,232,168,140, 86,249,138,116, 40,133,214,174, 94,117, 98, 85, 51,250,138,140,172, 3,
+146,181,106, 67, 48,215,160,161,160, 74,205,220,191,162, 57,210,240,230,174, 34, 51, 25, 91,107,102,251,181,186,119,189, 22, 19,
+ 53, 57, 53,101, 76, 35,153, 29,243,178, 72,196,248,154, 89,177, 6,175,170,178, 69, 0, 23,165,200, 89, 85,162, 66,218,229, 76,
+ 29,142,214,124,251,107, 72,163, 34,134,204,229, 34,205,108,199,227, 81,222, 83, 77,154,155,134,153, 76,192, 57, 83,157, 96,230,
+ 38,160,137,205, 82,185,194,255,186, 14, 73,146, 15, 32, 20,132, 51, 78,160,255,170, 67, 40, 74,161, 7,159,176,218, 85, 97,141,
+ 68,212, 73, 52,170,165,107, 91,172, 81, 44,243, 66,219,181, 88, 99, 8, 62,214, 56, 63,153, 56, 27,215,224,140, 33, 76,158,166,
+105,165, 32,196,123, 41,114,168,135,198,122, 35, 82,121,113,105,149,209,180, 77,207,249,235, 89,166, 73,181,246,151, 43,105,163,
+209, 6,173,174,249,186, 62, 71,134,121,166,228,204,161,239,137, 53,100, 69, 21,104,141, 38,229, 72, 50, 26, 26, 71, 82,133,225,
+242, 10,203, 66,246,129, 8,116,141,102,204,153, 5,152,146,212,145,234, 12, 38,229,122,204,201,133,102,140, 97, 88, 34, 95,135,
+153,251,253, 61, 63,189,123, 71,192, 51,140, 3,243, 44, 85,165, 41, 37, 44, 90,248,163,146,104,250,150,162, 45,195, 48,114,247,
+254,145,135, 71,105,228,210,141, 38,229,194, 48,123, 76, 99, 9, 57,243,238,253,123,172,115,204,243,194,229,229,140, 46, 17,109,
+ 5,138,151, 0,160, 64,202,137, 24, 4, 98, 91, 66,230,195,155, 7,246,173,195,207,158,166, 10,129, 62, 15, 19, 97,241, 28,118,
+ 29, 77,227,112,170,144,150,153, 97, 18, 46,120,246,129, 49, 25,150, 8,202, 90,169, 16,173,229, 0,164,130, 77,137, 88, 85,156,
+119,186,161, 41,154, 79,131,103,244, 25,219, 59, 98,163, 25,148, 80, 21,195, 56, 49, 45, 51,173,214,244, 85,184, 81, 20, 52, 70,
+113,215,181, 52,173, 99,201,137,175,151,153,215,203,192, 65,107, 30,143, 61,167,125, 71,103,229,247, 58,101,232, 93, 67,119,232,
+105,239, 14,120, 63, 49,143, 11,154,194,225,110,207,225,161, 39, 23,120,126, 25,185, 12, 35,247,119,119,236,239, 15,244,187, 86,
+186,143,163,196,191, 70,159,182,200,201,221,233,192,221,227,131,180, 80,173,133, 15, 43, 71,184,122,150,215,156,247,170, 65,208,
+ 53,157,112,158,103,194, 37,208, 31, 14,152,190, 35, 76,179, 8, 56,157,147,150, 64, 63, 83, 74,100,121,125,230,159,255,239,127,
+224,254,238,158,187,167,199, 26, 3, 10,125,239, 56,236, 15,164,113,132, 24,184,255,240, 30,125,127, 47, 15, 77, 31,240, 57,144,
+ 34, 44,175,158,249, 28,249,195,175,127,226,116,119,228,227,227, 19, 49, 44,146, 77,144, 21,202, 90, 46, 95, 47,188, 14,147,116,
+197,163,176, 69,113,137,158, 89,101, 66,141, 34, 61, 53, 13,247,135, 29,186, 49, 24,215,112,120,122,160,127,123, 47,133, 47,149,
+ 63,143,181, 52,100, 77, 87, 91,109,207, 87,193, 25, 87,238, 60, 83,147, 30, 83, 45,223,176,181, 2,178,242,160, 53, 78, 83, 14,
+111,217,204,184,141,129, 93,135,130, 27,225,221, 85,136, 37, 67,194,218,100, 86, 74,172, 27,177,145,231, 75, 45,204,209,149,135,
+206,232,107,140,109, 22,213,175, 8,153,190, 23,220, 85,143,251, 26,236, 82,109,104,229, 38,174,102,235,194,230, 59, 49,157,248,
+ 29, 55,154, 49,151, 80, 5,121, 2,115,230,186, 85,175, 92, 69,174,182,219, 84,179,223,165, 14,181, 90,238,234,118,189,249,159,
+ 43, 84, 43,229, 28,230, 38,168,171,138,224, 82,165, 6,156,222,138, 82, 40, 69,158, 95, 91,128,201, 53,244, 37,151, 88,147,238,
+214,193,167,194,229,202,146,180,240,232,185, 68, 32, 73, 36, 51,183,138,248,155,239, 80, 66,206,175,121,242, 37,213, 60,245,178,
+ 13,247,133,180,241,241,165,242,241, 86,233, 26, 53, 9,109,219, 83,178,174, 66, 83, 73,112, 75,229,106, 19, 84, 21,210, 47, 27,
+204, 95,209,129,170, 69, 88,197,108, 87,161, 94,205, 52, 88, 19, 8,213, 53,130,117, 85,239, 87, 62, 69, 32,120, 4, 65, 94, 43,
+108,101,232,118, 43,174,143,113,226, 59, 79,217,163, 93, 61, 20, 75, 22,222, 93,213,132,192,122, 48, 67, 38,213,136,104,106,150,
+ 70,174, 27, 62,202, 16, 67,160,237, 26,140, 51, 53, 46, 88, 17,115,230,182,200,176,100,161,143,147, 56,219,170, 8, 87,111,238,
+ 16, 74,141,176,173,177,185,198, 89,134,225,194, 18, 35,125,223,226,125, 36, 43, 69,223,245,156,207, 3, 97,137, 24, 45, 61, 31,
+214, 57,116,229,213,217,236,137, 90,250, 78, 80, 88,211, 74,236,115, 46,228, 32,191,203, 56, 45,118,201, 84,136,233,154,181,114,
+211,165,123,133, 25,154,222,209,247, 61, 57, 38,150,113,196,185, 6, 12,210, 75,173,100,210, 85,218,210,246, 45, 41,103,134,231,
+ 23,154,166,165,104, 77,156, 23,185, 89, 85,237,203,213,181,247,119,221,148, 74,193,181, 13,109,231, 56,159, 47,132,172, 5,158,
+174,113,124, 0,174,170, 26, 85, 45,182,159,131,231,245,124,161,223,117,236,246,123, 98, 78,196,156, 36,248, 94, 11,148,166,140,
+195,104, 24,207, 19,195,249, 34,176, 68, 72,236,148, 33,162, 24, 99, 98, 41,153, 41, 4,121,124,150,130,205, 25,147,213, 22,112,
+144,129,243, 50, 99,200,124,124,243, 72, 99, 12, 75,202, 76,195, 72,242, 53,211, 55,101,220,234,201,176, 13,237,241, 72,244, 11,
+165,181,124,248,235,223,179,156, 95,152,191,190, 96,218, 61,227, 18,132, 34, 51,153,253,190,231,195, 79, 63, 48, 76, 23,198,203,
+ 72, 88,194,141, 88, 71, 17,188,120,129,197, 58, 36, 15, 68, 99, 10, 63,189,127, 36,158,199,170,236, 55, 92, 6,207, 52, 5,104,
+ 26,172, 51,116, 86,211, 36, 81, 77,123, 5, 17,195, 28, 18, 83, 76, 91,226,159,174,238, 0,146,196,180,170, 18, 81,169,112,103,
+ 12,189,214,124, 26,102, 94,150, 72,119,220,145,172, 97, 68, 34,116,207,211,194,236,131, 76,228,166,150,159,212, 3,253,208, 58,
+246,109, 75,204,133, 97, 10, 60,159, 71, 48,134,199,125,199,253,190,151,162, 17, 13, 86, 67,219, 52,244,251, 61,253,233, 72, 46,
+137,105,156,241, 62,114,186, 63,112,255,230, 68, 65,241,250, 60, 48,142, 11,187,125,199,241,180, 99,191,235,113, 77, 67,142,137,
+241,245,178,125, 94, 40, 69,191,239,184,123,188,195, 52,110,115,107,172, 94,100, 83,123,174, 37,219,185, 22, 74, 88,179,217,166,
+ 98, 72, 44,243,140,221, 55,116,251,150, 48, 47,164, 92,106,254,185,197,135, 64, 38, 97,179,226, 95,254,254, 15, 24, 13,247,239,
+222,176,235,123,140,179,116,189,229,126, 47,101, 67,249,245,194,227,199,119, 28,222, 62, 97,180, 33, 21,197, 20, 71,146,130,225,
+121,100,190, 36,254,248,199, 63,208, 20,195,239, 63, 60, 17, 77,100,154,103,162,207,104,211,112,190,204,156,159, 71,164,192, 80,
+ 44, 64, 33, 69,150,146,241,117,211,115,214,240,120,216,211,119, 29,186,177,236,239,239,233, 31, 78, 88,219, 10,194,182,113,127,
+106, 27,182, 87,149,249,170,146, 22, 29,155,218, 82,207,174, 98,183, 82,185,187,180, 9,215,214, 84,180, 85,164, 38, 73,102,178,
+245,144,175,121,236,183,127,197,186, 41,228,155, 77,248, 42,112, 83,215,176, 19,101,171, 77,172,118,146,203, 18,183,109, 87,121,
+ 27, 24,216,168, 19,245,157,133,237, 54, 53,110, 29, 82,106,146,105,221,126,111,224, 89,174, 98,172,194,170,182,151,129, 37,165,
+184, 73,195, 86, 42,161,212,161,112,133, 62, 89,145,134,114,253, 93, 32, 7,155,169,246,192, 82, 61,233,106,157, 29,202, 21, 81,
+ 80,165,224,235,117,187, 90,174,182,207,120, 59,228,106, 4,235, 77, 89,108,201, 53, 1, 81, 85,191,246,234, 0,138,105,139, 66,
+ 77,148,173,152,100,237,103,151, 97,137,155,247, 81,191,107,165, 73, 89,218,199, 86, 10, 66,109,162,189,178,233, 46,116,209, 88,
+101,165, 31, 93,107,186,102, 87,197,191,210,218, 41,135,122,250,102,104, 89,115,251,175,225,117,107,149,108,145,198,204,117,224,
+ 83,101,173, 6,173,103, 72, 29,194,212,149,238,177, 55,223,117,240, 98,213, 90,237,121, 49, 8, 2,236,180, 44, 75,171,192, 48,
+133, 32,105,143, 86,208,187,166,109,170, 54,169,108,170,119,173,174, 88,209,138, 4,172,254,121,109,197, 9,227, 67, 68,235,234,
+100,170,195,219,149,190,249, 78,224, 89,242, 55,133, 57,107, 43,224,170,201, 18,221, 4, 88,171,249,242,229, 43, 33,120,246,187,
+ 14,165,170,178,223, 57, 66, 72,204,211,130, 49,215,123, 85,215, 36, 61, 17,119,150, 74, 55,228,106, 39, 23,133,188,132,209,212,
+178,163, 58,196, 73,140, 94,213,189, 24,125,245,141, 82,107,251,148, 86, 52, 77,203,254,180, 39,132,192,112, 30,176,173, 3,163,
+197,206, 86,121, 58,107, 44,253,190, 33,164, 68, 12,158,166,111, 40,120,210,178, 64,221,158, 82,245,203,110,211,117,125,144,180,
+173, 35,150,204,235,101,192, 25, 45,162,181,122,128,175, 23,179, 85,107, 11,148, 64, 35, 33,120,186,182, 33,164, 80,115,135, 19,
+174,222, 88,185,214, 52, 58, 93,120, 61,139,154,124,181, 31,244,214, 50,103,133, 79,176,228, 36,222,195,114, 85,213,234,122, 51,
+ 22, 96,140,145,179,247,252,240,254, 29,239, 30,239,241, 37,177,204,177,170,251,131,124,152,148, 43,111, 98, 45, 93,183,195,151,
+194,143,127,249,215,116,253,142, 47,255,250,111,149,114,177,248, 40,211,184, 47,133,247, 31, 63,144,137, 60,191,156, 73,139,175,
+153,190,219,108, 69, 12,137,224, 19, 33, 72,213, 96, 0, 62, 60,221,113,234, 37,128,197,182,150,133,194,121,156,201, 69, 97, 93,
+131,181, 10, 75,102, 30, 23,124, 40,132, 82,152, 66, 98,136, 5, 79,198, 53, 13,146, 7, 36,214, 9, 82,194, 20,105, 49,218, 89,
+197,222, 24, 46, 62, 48,248, 68,119,232, 73, 86, 51, 21,197,144, 50, 47,195,192, 18, 68, 52,214,104, 83,161, 38, 17,164,136, 61,
+173,197, 43, 24,150,200,235, 48, 19, 67,226,205,126,199,227,113, 71,235, 68,144,165, 20, 56,107,217, 31,247,236,238,143,148, 70,
+ 49, 77, 30, 63, 69,154,214,241,240,116, 79,211,118, 92, 46, 19,151,215,137,174,179,156,142,123,118,187,142,214, 57, 74,204,204,
+231,129,228, 99,221, 36,165, 33,237,238,233, 30,215, 54, 21,230,179, 87,123, 75,125, 74,106, 99,183,168, 78,165,175,117,160,209,
+ 71,150,105,193,185,150,221,105, 7, 62, 83,124,148,255,206, 24,177,195,104,197,174,107,249,255,254,254, 31,249,237,223, 62,113,
+255,244, 40, 29, 2,141,163,105, 53,167, 67,131,179,154,241,249, 43,247,247,247,220,255,248, 17,219,119, 80, 44,126,158, 65, 21,
+198,243,196, 50,121, 62,125,250,204,101, 92,248,221,135, 55, 52, 22, 22,239, 89,150, 9, 99, 90, 82,210,124,122, 57,227, 75,192,
+ 41, 48,245,160, 89, 74,198,107, 8, 89,248,246,183,135, 29,247,187, 94,120,244,211,137,195,187, 55,184,253,174,138,105,216, 56,
+211, 45,138,117,123, 96,149, 26, 5,155,183,115,124, 5, 38,175, 86, 39,245,109,157,122,206,155,120,108,133,173,245,218,109, 93,
+211,209, 84,249,214, 34,119, 45, 76, 73, 87,232,123,251,209,155,217,172,102,143,235,205,159,189, 37,208, 85,120,145,111,162, 86,
+175,175,172,220,100,184,175, 67, 93,249,166,176, 69,109,135,249, 74,173, 92,233, 6,189,249,243,175, 2,182, 53,186, 53, 81, 84,
+141,116, 69,158,125, 43,105,177,230, 32,232,170,164, 95,219,227,182,166,185, 27, 94, 93,213,130, 18,173, 52,185,170,147,215,135,
+127,240,169,210,138, 85,179,180, 41,228,215,162,150,235,123, 90, 35,177, 87,244,160,130,217, 27,106,176,198,188,218,106,209,204,
+181,109,108,171,194, 85, 85, 0,169,215,160,157, 27,191,126, 45, 89, 90, 95,115, 38, 95,251,234,179,108,160,186, 10, 39,215,109,
+217, 25,139, 54, 34, 2,211, 55, 7,246, 58,144,172,201,102, 91,159,192, 55,226, 68,181, 37,204,233, 27, 42, 69,175,161, 64, 37,
+ 99,171, 48, 46,149, 77,148, 94,109,135, 50,208,165, 36,218, 34, 83,211,250, 66, 16, 45,193,202,177,175,223, 99, 76,121,243,165,
+ 83,221, 58,171, 62, 46,213,207,122, 83,148,164,117,232, 84,155,230,195,106,113,229, 68, 89,117,113,141,251, 54, 32,233,198, 78,
+121,189, 93,214, 16,181,140,182,107,232, 77,250, 6,181, 90,241, 35,191,100, 94, 95, 95,105,219, 29,109,219, 11,210,107,229,179,
+ 61, 95, 46,184,198,109, 26, 24,231, 92,253, 60,203,214, 32, 9, 69,174, 41,133,216,222,170, 48, 52,249, 92, 99,130,175,129, 79,
+ 70,150, 68,189, 9,105,114,150,135,166,181,134,166,105, 48, 90,179, 44,146, 75,222,245, 61, 42, 20,166,151, 17,205,181, 69, 71,
+187,150, 24, 34, 86, 25, 26,215, 72, 61,104, 8, 87,110, 68, 75,130, 21, 70,139, 0,164, 78,119,125,219,177,204,137,243,101,162,
+ 49, 53, 41, 40, 23,114,140, 85,144,113,157,234, 82,202, 12,179, 76, 52, 93,223, 9, 79,149, 18, 42, 37, 90, 43,109, 53, 89, 75,
+231,120,240,137,231,215, 87, 41,223,240, 18,168,227,148, 98,137,226,113,244, 49, 94, 39,228,213,239, 89, 4,174,203, 90,177,228,
+ 68,223, 54,252,248,254,189,148, 14,196,204,188,120,114, 73,146,164,151,234,235,171, 19,246,254,241, 14,101, 20,205,126,207,155,
+247, 31,249,252,243, 47,248,243, 11,182,105, 8, 89, 54,173, 66, 97,255,112,207, 15,127,245, 59,254,252,199,159,201,243, 66,140,
+162,188,205,185,194, 87,165,224,131,175, 23, 86, 77,102, 82,138,247,111, 30, 8,227, 44,129, 58, 78,115,185, 76,140, 33,108,240,
+ 83,215, 55,164, 69, 28, 1, 49, 75,212,236, 24, 11, 83, 82, 40,231, 80, 10,172,117, 82,198, 19,133, 94, 81, 41,208, 41,195,201,
+ 40,198, 88,184,196,140, 57,246, 20,103, 24, 75,225, 53,201, 33,189,212, 98, 24,163,100, 59,183,218,208, 58,195,190,235,232,154,
+134, 4,140, 33,115, 89, 34, 99, 12, 60,236, 27,222, 30,228, 64,215, 85,205,107,180,226,120, 58,176, 63,237,209,141,193,207,158,
+101,242,228, 84,120,184, 63,114, 56,182, 12,131,103,184, 76, 52,173,225,112,216,179,219,239,232,187,142,146, 50,211,203,133, 48,
+251, 45, 45,171,219,117, 60, 60,221, 99,219,166, 90,150, 76,133,155,245, 6,187, 75,196,100, 85, 57, 87,175,171, 2,114,204, 76,
+211, 12, 26,118,135,158, 18, 50, 97,246, 85,253,171, 36,202, 17,184,127,186,231, 79,255,252, 7,254,249,111,255,133,187,199, 7,
+118,199, 35,174,111, 80,206,176,235, 45,251,190, 97, 56,127,229,208,183,220,255,229, 79,216,211,145,152, 12,211,248, 74,137, 30,
+ 63,120,230,215,133, 79, 95,158,249,237,211,111,252,229, 79,239,217, 31, 27,206,211, 44,109,123, 88,138,109,249,244,229,133,101,
+246,160, 11, 38, 11, 95,229,115,102, 86, 5, 95,123,150,239,250,142,119,167, 35,182,109,104, 14,123,142, 79,111,177,167, 29,218,
+186,205,246,162, 55,239, 52,155,101,180,108,253,231, 84,241, 91,222,182,204,173, 99,124,219,124,175,212,221, 53, 27,254,154,115,
+157, 83,185, 65,179,215, 34,166,111,121,244,111, 4, 99, 85,172, 71, 69,161, 86,229,249, 26,206, 84,123, 80,106, 89, 71,150, 46,
+247,181, 70,166, 30,214,233,187,190,244,111, 14,245,219,184,216,255,128, 79,255,214,254, 86,182,247, 80,138, 18,103, 78,186, 38,
+208,149,156,106, 71,131, 36,115,173,188,225,186, 13, 11,100,108,191,203, 71,175, 30,230,245, 96, 89,255,217,250, 16, 94,169, 1,
+132, 83,205,185, 72,209,134,213, 55,149, 95, 92, 61,234, 85,175, 96,181,145,237,186,230,156, 23, 37, 62,241, 85, 45,174, 81,196,
+ 18, 43, 85,120, 69, 97, 84,181,136, 81, 17,209,188,169,202,111, 61,254,185, 66,239,177,218,177,184, 22, 28, 21,209, 46, 81, 15,
+ 36,177,192,101, 92,235,136, 72,169,148,169,131, 82,222,226,119,197,130,101,141,174, 10,250,180, 93,135,234,166, 13,206, 26, 93,
+249,246,171,199,127, 61,224,183,185, 47, 11,210,154,171,125,235, 54, 92,200,215, 97,222, 57,123, 21,207, 89,189,249,212,133, 26,
+ 74, 50, 32, 20, 65,129,251, 93,143, 42,130, 40,165, 90,252,163, 54, 70,166, 34, 36,149, 79, 87,117, 64, 49,202,144, 67, 32,198,
+ 69,170, 77, 43,226,117,117, 89, 92, 47,255,117,112, 5,249,243,198,184, 45,153,114, 77,154,219,196,157,245, 93,126,250,244, 66,
+235, 26,218,166, 21,113,183, 19, 13,192,235,120,174, 86, 52, 57,135,157,107,234,119,182, 70,223,202,146,189,106, 1,172, 19, 71,
+ 79,138,114, 93,160,117, 69,218,106,203,157, 92, 11, 26, 83,106,205,159,241,194,121,105, 77,215,119, 40, 69,109,188,202,236,118,
+ 61,139, 95, 88,162,151,135,168,164,110,162,108, 75,156, 60, 57,131,107, 59,194, 20,200, 73, 4, 75, 41,131, 54, 14,101, 29, 73,
+ 41,178,145, 11, 88, 57,195,225,184,231,245,124,225,245,117,168, 15, 92,233,138, 13, 75,160, 53,215,110, 89,163, 52, 62, 71,198,
+113,164,239,123,154, 78,172,107,137, 76, 83,131, 13, 34, 74, 18,235, 76,225,245,249, 76,188, 76,242, 32, 75,210, 67, 60,149,194,
+146, 18,115,138,219,212,105,138,216, 48, 92,145,106,211, 72,102, 86,224,115,225,175, 63,252,192,169, 49,148,156,241,179, 8,227,
+ 98,200,120,191,136, 72,171,222, 80, 37,103,186,227, 1, 92,195,253,219,183,204,203,194,159,127,254, 25,219,237,176,109, 47, 41,
+105,128,238,246,188,125,255,129,152, 18, 95, 62,125,150, 66,154, 24,254,127,182,222,179, 91,142,235,188,214,125, 86,170,208, 97,
+ 7, 68, 82,164, 72,201,146, 45, 29,251, 30,251,255,255,142, 51,238, 73, 86, 22, 69, 16, 4,176, 67,135, 10, 43,222, 15,239,170,
+234, 6,174, 63,104, 12, 74, 20, 54,122, 87, 87,213,122,195,156,207,172,187, 40, 33, 90,229, 36,217,221, 41, 73,160,135, 38,243,
+234,110,199,109,231,152,231, 25,101, 12,167, 41, 48,140,190, 70, 62, 38,156,213, 20, 47,145,173,169, 32,222,240, 4,231, 92,136,
+149,232,101, 20,108,156,149,184,211, 34,135,135, 45,153, 91,101, 80, 73, 51, 37, 77,106, 27,188,129,115,134, 33, 22,158,198,145,
+ 49, 37, 17,219, 32,153,233,168, 66,103, 52,219,166,101,235, 26, 82, 41, 12, 9,134, 16, 73,201,179,177,154, 87,251, 13,189,171,
+163,163,186,210,184,221,109,217,221,108,112,187, 22, 31, 2,254, 20,200,243,204,205,253,142,251, 87,119, 76, 62,243,124, 58,163,
+148, 97,123,179,161,223, 54,244, 93, 75, 73,153,225,249,192, 60,251,245, 61,216,244, 45,119, 47, 95,210,117,205, 23, 17,148, 50,
+106,148,127,214,107,135,126,157, 72,150, 83,102,154, 38, 0,250,205, 6,148, 38,206,161, 90,221, 52,211,236, 33,194,253,203,151,
+156,127,250,192, 31,255,199,255, 21,171,220,126, 71,179,233,208,189,165,111, 52,247,219,158,241,112, 34,249,204, 87,191,250,158,
+254,171,183,148,220, 48,157,159,136,105, 98, 78,145,225,228, 57, 28, 6,254,246,195, 39,190,126,251,146,111, 95,223,226,199,192,
+121,154, 72, 73,108, 51,159, 30, 30, 57,140, 35, 14,133,205,242,125, 70, 96, 40,133, 41, 7,140,145,149,197,139,237, 6,211,118,
+152,190,103,251,242, 30,183,219,162,157, 17,225,169, 86, 40,107,192,214,152,202,156, 86, 15,182, 94,252,191, 95,170,200,151,172,
+237, 43,156,234, 37,184,162,124,150, 17, 46,182,170, 68, 33,137, 98,253, 42, 67,124,205, 72, 95,178,196,175,192, 50,194, 27, 91,
+188,226,215, 99, 75,201,100, 95,186,225,188, 42,216,235,206, 83,101,208,101, 69, 46,127, 6,172,185,238,216,175,130, 89,114, 74,
+ 87, 99,254, 84,211, 17,107,254,123,185,196, 21,137, 37, 42, 47,171,220,122, 61,170,151,127, 57, 36, 75, 70, 47,127,166, 18, 51,
+151,128, 94,153,172,214,128,153,114, 17, 38,162,213,103, 89,234,169,174, 41, 74, 77,121,243,126, 70, 41, 69,211,216, 53,141,141,
+138,220,214,215, 59,228, 75,164, 90,173, 43,114,101,245, 23, 1,207,160, 8, 57,145, 84,146,149, 75, 93, 53,164,250,156,150, 69,
+ 75,144, 50, 42, 8, 86, 58,103, 81,221, 7, 31,100, 10, 56, 71,252, 20,152,103, 95, 97, 56,162,204, 47, 57,227, 17, 34,227,178,
+ 11, 14, 41,208,116, 45,185,218, 43,181, 18,173,213,114,109,149, 86, 24, 85, 48, 74, 58,196, 37,157, 78,151,178,174, 31, 36,111,
+161, 32, 34,237, 42, 52, 92, 28, 26,162,237, 71, 45,192, 60, 77, 93,129,213,159,169, 36,242,101,204, 94,212,235, 92, 31,176,166,
+ 22,175, 18, 16,166, 10,168,198,214,105,107,161,105, 27, 84,200, 43, 52, 41,167,188, 90, 58,115, 46,117, 42,160,214,152, 86,107,
+ 12,182,177,196,144, 72, 62,210,116, 70,116, 58,250,250,233,184, 0,125, 36,165,176,174,150,151,124,133,202, 15, 72,139,134,236,
+202,131,111,140,230,225,112, 2, 29,233,186, 70, 86,172, 41,209,118,150,121,154,133,251, 82, 49,177,141,179,181, 64,225,234,189,
+166, 87,151,137,112, 58, 44,190, 58, 8,148, 86,132,235, 85,130, 54, 88, 93, 20,197,212,135, 58,130, 70, 58, 29,215,200, 78, 96,
+ 26, 38, 26,219,227,186,158,243,249, 64, 72,190, 50,180, 53,253,126,135, 81,153,121,154, 41,186,208, 52,142,249,248, 36, 47, 2,
+149, 73, 58, 73, 72,133, 50,146, 15, 93,187,234,214,106, 54,141,229,116, 56, 9, 45,167, 8, 45, 40,196,140, 83,150,214, 90, 41,
+102,141, 70,183,150,179,159, 24,231,137,237,205,150, 4,168,106,121,115,206, 80,180,252,114,141,179, 36, 10,207,167, 35, 41,199,
+ 90, 73,201,232,103,206, 16, 50,248, 36,159,165, 55,150, 56, 5,241,115, 86, 37,168,215,134, 51,153,175,239,246,252,226,237, 29,
+193, 23,114,214,140,243,140,113,142, 20, 61, 49, 68, 76,201,226,249, 52, 26,109, 44, 77,211,177,189,191,165,221,108,249,203, 63,
+126, 32, 12, 3,155, 87, 47,136, 53, 87,183,221,117,236, 55, 61,119, 47, 94,240,244,241,131, 88,252,140, 35,248, 32, 86,149, 34,
+170,199, 57,204, 85, 79,176,232, 26, 44, 47, 94,236,201,213, 18,168,157,230,233, 48,225, 83,145,223,223, 20,108,175, 9,207, 3,
+ 70, 9, 40,103,138,153,177,142,221,149,147, 8,218,190,233, 4,220, 19, 18,134,132, 46,129,173, 22, 10,210, 80, 12, 89, 23,102,
+ 20,147,207,204, 62,240, 92,147,228,196,242, 44, 2,153,146, 19,155,166,101,211,119,236,155,134,185, 68, 78,177, 16,234, 42,197,
+104,184,221,118,244,141,236,208,115, 22, 59,207,221,190,103,191,223,225, 92, 67,154, 35,126,148, 21,138,179,134,155,187, 61, 81,
+ 41,206,231, 1, 67,166,223,244,116, 93, 67,223,247,104,173, 56, 63, 28,136,115, 16,149,178,178,180,219,150,155, 87,183,184,182,
+ 17, 13,117, 29,235,151,170,158, 93, 58, 0,173, 63,127,233,163,164, 96,244,179, 39,229, 76, 91,247,244, 49, 4,178,150,123, 36,
+204, 1, 31, 3, 47,223,188, 70,149,192,159,254,215,127, 50,156, 39,238,238, 95,224,156,163,217,116,180, 38,115,123, 43,248,227,
+249,121,228,251,127,254, 37, 47,190,255,142,172, 27,198,243, 39,252, 60, 99,179,102,122, 26, 57, 28, 6,254,244,247,119,188,184,
+ 49,124,255,213,107,206,227,192,121, 30,137,227, 72,219,222,240,112, 10,156,207, 3, 77,213, 42,168, 10, 80, 10, 5,124,201, 98,
+169, 51,150, 87,125,199,126,187,193,118,142,205,203,123,218,219, 91, 92,107, 48, 57, 83,140,240, 6, 84,221,121, 47,233, 89,165,
+142, 24,169, 89,230, 11,242,121,137, 68,165,138,215,116,249, 66, 89, 94,212,149,160,170,142,108,149, 20, 67, 98,255,187,236,123,
+191,140, 52, 93,187,227, 85,143, 38, 99,224, 85,245,174, 63,183,162,161, 46,159,229, 50, 10, 23,150,197,245, 33,254,121,128,203,
+ 21, 63, 94, 41,217, 64, 87,230,247, 18,178,118, 25,125, 46,244,201, 44, 16,158,101,103,191, 16,216,180,172, 18, 4,231,106, 87,
+148,232, 98, 81, 93,160, 36,234, 42,229,107,177,213,171,171, 41,199,218, 37, 87,111, 69, 89, 10,148, 20, 65, 25,194,236, 25,135,
+145,182,239,229,221, 87,197,101, 57, 69, 82, 61,212,151,200, 83,212,133, 98, 22, 83, 36,228,128, 81,194,250, 46,171,191, 59,177,
+ 36,197,166,148,152,117, 36, 25, 89,169,201,212,196, 86,189, 67, 66,199, 12,216,250,181, 41,124, 12,248,152,136, 73,212,248, 42,
+131, 4, 91, 74, 22,122,201, 16, 82, 16,215, 81,145, 29,237,110,187,225,124,146,162, 90, 44, 94, 82, 20,169, 42, 60,180,118,217,
+253,139,179,168,232,186,104, 81, 34,134, 94,180, 21,182,230, 9,120,242,133,135,192,197,202, 88, 76,150, 46,187, 78, 55,156, 54,
+235,247,157, 67,181, 67, 27, 67, 70, 80,217,230, 98,128,199,212,180,192,166,109,170,239, 29,177,120,142,105, 45, 78,115,138,100,
+107, 69,127,144, 50,137,122,255, 71, 57, 39, 98,181,251,106, 50,209, 7,154,110,131, 51,117, 93,116,213,162, 95, 51, 20, 74,202,
+245,126,170,168,109,173,137, 73,138,181,198,185,186,122, 84,107,151, 63, 15, 19,167,211, 72,219, 89,180,147,238,218, 54,134,227,
+105,100,246, 65, 38, 30,165,224, 76,131, 91,132,138,170, 10,246, 22,253,104,140, 52, 77,131,179, 70, 86,222, 41,209, 88,177,239,
+ 70,192, 81,155, 25, 17,206,102,177, 98, 32,139,121,107, 45, 77, 99,201,185,112,122, 56,208,182,150,110,215, 50,157,206,100,159,
+209, 74,198, 19,125, 29,133,151,148,112,173, 67,101,117, 25,213, 21,133,178, 45,165, 74,238, 85, 53, 86,150, 82,232, 58, 75, 49,
+240,124,124, 90,119,219, 41, 23,124,152, 81,173, 37,187,134,162, 52, 70,146,255,120, 60, 13, 24,107,233,218,142, 56, 74,112,189,
+ 41, 25,167, 36,163, 87, 25,139,213, 45,195,241,196,233, 60, 16,114,134,146, 48, 20, 74, 49,204, 89, 49,196, 89,242,206,149,166,
+211,194,150, 55,149,130, 53,107, 77,208,134, 6,205, 47,223,190, 89,247, 48, 97,246,140,231, 73, 82,205,162, 23,127,122, 18,161,
+ 6,166, 96, 90,203,238,213, 43, 94,127,245, 53, 15, 31, 62, 50, 61, 31,104,108, 75,179,221,226,167, 73, 96, 33,247,247,152,206,
+161, 77,146, 34, 70,107, 66,152, 40,197, 83,208, 98,233,200,137, 56,132, 58,142, 19, 1,223,253,125,207,237,166, 71,249, 8,166,
+240, 60,204,156, 7, 47,120,201,156,105,219,134, 52, 68,129,252,163, 56,205, 51, 67,202, 12, 57, 83, 42, 96,166,105, 26, 90, 45,
+192, 3, 69,193, 21, 77,135,163,177,150,100, 52, 1,197, 88, 12,211, 36,206,130, 39, 63, 51,229, 76,214, 5,165, 13, 45, 6,149,
+ 11, 77,107,217,111, 26,182,157,163,168,204,121, 74, 76, 49,147,178,172, 72,118,141, 99,219, 24,148,150, 46, 41,206,137, 6,129,
+185,232,198, 18, 74,230, 60, 14,204,126,194,151, 72,127,183, 99,179,105,153,143, 71, 17, 29, 54, 13, 77, 39, 84,182,198, 41,206,
+207, 71,194, 56, 87,244,172,162,217,180,220,191,122, 65,219,247,117, 74,116,225,243, 43, 37,105, 73,186, 78, 38, 68, 28, 39,228,
+ 7,133, 34,251,128,247,158,152, 35, 77,219,114,179,217,212,253,107,193, 90, 45, 60, 0, 95,120,113,247,146,190,111,248,235,255,
+252, 3, 63,252,244,129,205,205,141,220,115,219, 13,198, 41,182,155, 30,163, 20,231,167, 79,188,126,117,195, 87,191,253, 13,182,
+233,240,195, 73, 16,196, 20,142,167,129,211, 41,240,151,191,189,199,218,204,111,191,253,150, 52,123,198, 97, 96, 56, 31,208,101,
+203,144,225,116, 30, 40, 41,162,116,174, 17,146, 5, 95, 18, 67,154, 41, 6, 92,103,185,239, 55,220,109,183,180, 93, 71,127,119,
+ 71,247,234, 94,246,246,214,176, 58,149, 42, 82,115,241,150, 47,120,179, 75,250, 89,185,116,135, 92, 5,159,228,154, 15, 93, 46,
+ 80,150, 92,167, 63,185,190,132,148, 82,213,251,158,235, 11,230, 34, 12,186, 6,175,148, 34,129, 46, 50,249,100,222, 64,200, 0,
+ 0, 32, 0, 73, 68, 65, 84, 74,162,162, 86,101, 85,133,175,100,186,146,106, 88,203, 37, 6,245,122, 76,174,191, 72, 16,203,245,
+112,151,206, 74,200, 65,151,209,109, 77, 93,203,172,127, 46,213,113,255,197,183,190,140,242,163,220, 11,213, 50,170, 20,148,152,
+ 96,241,203,215,189,122, 89,166,111, 87, 86,254,178,120,193, 21, 23,207,253, 23, 34,189, 82, 46,198, 55,116,117, 90,212, 0,172,
+ 16, 50, 42, 25,218,202,244, 46, 10, 66,241,210,209, 69, 49,106, 47, 46, 5, 1, 5, 41,230, 84, 56,156, 39,252, 92, 8, 65,146,
+205,114, 22, 31,118, 78,144,106,160, 72,200,178, 74, 76, 1,230,144,201,200,232,190, 40, 77,209, 22, 69, 67,139, 37, 39,205,121,
+ 46, 12, 67, 33,123, 77, 14, 10, 31, 20,115, 40, 76,190, 48,122, 56,143,153,243, 16,152, 71, 41,116, 98,241,226,197, 86,102, 77,
+216,164,250,230, 99,146, 49,121,163, 13, 78, 59,217,233, 27,185,103,108,201, 24,157,193, 20,116, 73,117,100,159, 47, 64,150,108,
+170,176, 76, 99, 87,219,164, 38,134, 74,110,171,220,132, 5,198,163,138,184, 46,114,157, 26, 45, 1,129, 86, 91, 84,145,235,156,
+ 80,196, 24, 49, 77, 67,140,153, 60,103, 26,235, 86, 7, 71, 74,130,229, 94, 29, 10, 68, 74,150,117, 98,169, 92, 6, 91, 10,214,
+ 54,160, 21, 49, 69, 84,209,213, 3,206,213,119,115, 49,137, 46,159, 73,229,197,187,185,164,121, 94,115, 19, 46, 14, 13,208,132,
+ 57,242,248,124,160,113, 29,173,105,136, 41, 96,173, 67, 23,131,159,166,149, 4,216,218, 74,150,171,121, 0,170, 10, 33, 75, 77,
+ 1, 85,186, 90,219,148, 38,134,188,198,196,230, 84, 8, 73, 92,237,186, 84,209,152,209, 85,108,162,138,236,211, 27, 71,241,129,
+113, 30,216,116, 91,156,115,132,217, 87,224,128, 94,163, 42,151,248, 69,215,245,164, 34, 34,145,172, 20, 73, 21, 80, 86, 80,128,
+ 87, 5, 79, 70, 2,222,231, 49,112,124, 30,215, 74, 56,166, 66, 8,243,186, 83,208, 74,209,219,158,179,159, 57, 28, 78,108,186,
+142,198,104, 98,138, 24,165,100, 36,172, 21,161, 20, 92, 99, 49,170,112, 60, 29,153,231, 32,219,185,148,208,245,231,250, 92, 8,
+117,167,216, 55, 77, 37, 95, 69, 65,222, 42, 8, 70, 19, 74,225,171,251,123,238,239,110,200, 62, 17, 75,225,116, 58,145,124,160,
+115, 13,254, 60, 49,196,128, 81,162, 38, 23, 44,235, 29,111,127,253, 29, 37, 71,126,124,255, 30,155, 5,189,106,247, 59,142,231,
+ 19,187,187, 91, 54, 93, 75,244, 51, 41, 36,198,195, 1, 99, 45,243, 28, 80,202,213,132, 34,200,115, 36,164, 84,117, 4, 96,141,
+226,254,110, 67, 9,242,210, 73, 40,158,143, 19,164, 66, 10, 81,196, 41,214, 48,141, 35, 69,105,230, 32, 25,232,231, 92, 72, 90,
+ 88,249,206, 25, 54,141,101,242, 1, 74,193,169, 66,175, 10,219,198,161,181,101, 76,112, 40,137,199,121,228, 48,205,140,115,100,
+ 70, 24,194, 84,145, 34, 8,195,249,110,219,179,109, 36, 84,228, 48, 71,158,252, 76,166,208, 90,197,182, 49,236,156,195, 40, 77,
+142,117,172,104,160,219,181,196,156,241,193, 51, 13, 35,211, 56, 49,141, 17,231, 28, 55,119, 55,156,135, 81,120,205,214,208, 52,
+146,220,230,156,226,240,112,194,159,166, 21,161,105,173,229,238,205, 45,205,182,249, 44,180, 98,217,253, 45,169, 72,162,120,151,
+157,173, 54, 74,198,235, 57, 17, 66, 36,198, 76,211, 52,108,182, 61, 73, 75, 96,135,209,138, 20, 18,211, 48,177,187,217,112,251,
+234, 5,239,254,239, 95,248,241, 15,127, 67,105, 71,219, 56,218, 77,139,235, 29,189, 85,236,122,199,240,233,196,166,223,242,205,
+191,253,142,246,197,107,134,113, 96,120, 58, 96,138,146,241,250,113,230,111, 63,252,204, 60,156,248,253,119,223,211, 57,199,113,
+ 60,113, 30, 79,164,104, 9, 24, 14,207,103,217,125, 85,113, 15, 64,204,133, 83,144, 1,104,219, 56,246, 77,203,253,110, 75,183,
+233,105,246, 91,182, 47,239,177,109,123, 25,213,102,245,153, 66, 93, 95, 9,147,150,176, 22, 99,204, 37,152,233, 58,168, 37,139,
+ 48,204,152,139, 58, 29,181,100, 43,200, 1, 94,178, 76,135,168,226,177, 11, 92,229, 74,209,180,164,116, 85,197,248,130, 29, 43,
+107, 2, 99, 89,151,171,121,113, 48, 85,155,214,218,174, 95,249,140,175, 35,217,214,209,254,162,164,215,235, 28,224,178, 42,184,
+138, 94, 85, 53,234,248,122,239,190, 0, 81,148,190, 8,235, 74,229,179,115,165, 98, 95,212,131, 43, 78, 84,171,149,182,183, 8,
+218,174, 20,124, 23,251,213,181,107,168,138, 8,139,146,196, 75, 85,195,130, 66, 76,152, 86, 97, 27, 17, 3,154, 66, 5, 76,165,
+181,152, 64, 87,159,127,204,156,198,137,199,167, 35,126, 14,162,122,103,225,172,171, 58,242, 13, 2, 57,201, 16, 82, 90,113,204,
+ 62, 70, 82,209,120,159,136, 62,145, 67, 33, 69,120, 60,123, 62, 60,159,249,116, 60, 75,241,108, 28,173,113,184, 90, 0,231,162,
+241,161, 48,205,137, 97, 74,100, 36, 29, 46,198, 12,218,225,131,175,118,188, 82, 87, 48,162,186, 46, 85,148, 41, 35,226,114, 89,
+ 71,202,162,191,238,214, 85, 37,156, 73,161, 99,205,133, 73,175,170, 18,254, 10, 98,183,178,245, 83,254,194,175,141,149, 16, 33,
+ 64,105,129,162,217,250,252,167, 42,236,180, 74, 11,165, 45, 37,166,105,164,113, 26,221, 84,203, 94,206,132, 36,187,245,117,205,
+ 82, 45,185,203, 33, 29, 98,172,140, 0,121,127, 25,173, 4,192, 86, 63, 23, 85,183,114, 21,251, 86, 99,104,115,253, 29,178, 40,
+216,201,107, 24,205,178,186, 41, 21,237, 27, 99,228,248,124, 66,107,187,126, 86,173, 53, 93,211, 48,214,181,160, 86,154,162,141,
+176,246, 23, 53,253, 21,213,112,141,157,173,182,201, 37,173, 79, 27, 35,133, 70,204, 53, 26,151,202,216,173,241,138, 70,107,218,
+174, 3,229, 24, 79, 3,211, 60,177,185,221, 9, 30, 48,165,117,119,150,138,224, 81, 75, 41,140,195,128,107,173,236,124, 66,148,
+119, 78,181,180,165, 34, 47, 8, 85, 42, 79, 55, 75,250,206, 52, 78,140, 62, 84,181,189, 40, 24,115, 46,116,141,176,112,173, 53,
+ 52,157,227,227,211,145,217,207, 18,103, 89,119, 42,166,102,252,138,217, 94, 99, 91,135,247,103, 14,199, 35, 41,200, 97,110,171,
+240, 35,148,196, 92,164,208, 48,218,176,177, 86,178,105,149,132,202, 68,171,201, 74,161, 83,228,237,139, 59,121,144, 82, 38,196,
+196, 60,121,172,147,241,156,159,166,122,195, 45,162,141,204, 87,191,254,158,219,251, 59,126,252,225, 31, 40,228,144,232,218,134,
+168, 68,241,222,223,236,121, 62, 62,209,109, 58,134,233,140, 9, 50,150, 12, 99, 64,105, 43,195,168, 34, 19,129, 66,145,202,150,
+204,203, 23,183,108, 27, 71,142, 1,101, 52, 15, 71,207, 48,137,222,129, 28, 49,173,101,154,194, 58,178, 58,249,200, 24,193, 23,
+181,130, 47, 54,157, 88,193, 38, 31,112,170,176, 49,178,242, 48, 70, 51, 39,137,106,253, 56, 12,156,103, 47,113,176, 85,109, 47,
+ 52,175, 5,217, 89,184,221,201,200,221, 40,205,228, 35,159, 78, 35, 1,232, 26,195,206, 89,122, 83,189,171, 9, 66, 85,143,246,
+219, 22,215, 53,204, 33,113, 58, 13,204,147,175,177,185, 18,120,112, 62,143, 76,126, 70, 91,141,179,134, 77,215,176,233,122, 14,
+ 15, 39,166,211,176,118, 73,174,117,220,189,125, 65,187,233,214,248,201, 37,110, 81,153, 26, 37,169,245, 21, 41,237, 42, 57, 44,
+103, 66,136,164, 44, 73,127, 93,215,161,181,196,249, 42, 99, 8, 41,114,122, 62,209,239,182,188,122,243,138,247, 63,252,149,119,
+127,250, 43,195,232,217,184, 6,109, 12,155,221, 22,235, 20,119, 93,195,116, 60, 96,125,224,219,223,255, 11,119,223,127,207, 56,
+ 14,156,159,159,209, 58,147,231,196,120,138,188,123,247,145,135,167, 71,126,253,237, 47,184,221,110,120, 60, 60, 51,140, 35,195,
+ 56,145,117,207, 97, 62, 73, 87, 61, 7,129, 53, 35, 69,231,121,246, 76,165,208,116, 29,157,147, 46,125,211,182, 52,187,158,205,
+171, 59,108,223,226,172,132,209,148,138,131, 93, 94,134,162,250, 55,255,127,216,206,138, 48,213,151, 81,102, 45,108,175,133, 76,
+159, 5,117, 44,241,167,229,162,168, 95,186,213, 69, 65,188,112,191,215,252,117,214,120,135, 5,224,190, 10,220,174, 85,208,133,
+ 5,160,162,185,200,149, 46,202,221,207, 32, 53,245,231,172, 43,133,242,133, 34,255,234,179,171, 10,127, 17, 7,132,190,242, 68,
+171,207, 70,160,171,162,126,217, 99, 47,135,198,146,138,182,252,206,185,172, 59,117,181, 30,166,233, 98, 16,186, 58,236, 37,223,
+188,142,223, 21, 43, 95, 61, 43,177,248, 77,163,199, 88,141,179,170,238,235, 21, 58,178,102, 58, 80, 50, 49, 4,198,201,243,124,
+ 26,248,249,241,145,113,152,176, 74,132,166, 57,101, 82, 72,235, 94, 56, 37,153,142, 37, 96,138,129,105, 14,162,245, 9,137,201,
+103,166, 41,212,162, 5,142,231,145,231,243, 72, 74,133,189,107,104,172, 28,210,195, 56, 18,131,176, 54,130, 79,132, 41,146, 99,
+ 89,226,197,165, 64, 73, 10,231, 44, 83,240, 43,235, 63, 84,171,109,168,124,139, 84,138, 88,221,202,234, 78,148, 48,147, 26,144,
+ 99,180, 90,109,138, 74, 73, 10,155,185, 2,207, 44, 23,178, 49,210,160, 73,126,142, 90,228,125,151,132, 64, 35,215, 63,196,184,
+ 66,145,148, 8, 71,200, 69,138, 12, 83, 25, 21, 37,231, 53,222,212,104, 93,207,157, 82, 11,179,117,144,181,190, 75,196,194, 88,
+149, 34, 85,191,149,115,193,167,112,217,109, 43,174,238,227, 11,217, 48,175, 68,186,218,252,212,223,125, 17,122, 94,138,146,197,
+154, 12,227, 48,201,170,192,185, 90,168, 40,172, 85,156,230,161, 18, 84, 21, 69,187,170,166, 55, 23,153,197,213,114, 63,215,156,
+ 13, 83,195,111, 98, 77, 50, 45, 64, 10, 17, 82,150,115, 66,235, 26,129, 88,146,204,236,157,136,219,134, 65,188,217,221, 70,162,
+ 46,115,140,178,111, 81, 74, 94,220,141, 19,127,106,202,184,214,146, 67, 88,111,130,162,145, 20,159,138, 58, 21, 27,140,116, 2,
+ 93, 35, 76,244,113,154,196,235, 9,248,152, 48,202,209,247, 45, 74, 41,218,182, 97,142, 51, 31,158,143, 56,237,176,141,195, 87,
+101,188,169, 41,159, 5,133,181, 45, 86, 89,158,158, 79, 60, 63, 31,201, 5,108,202,168, 32, 98,132, 89, 21, 66,221,229,180,206,
+ 94, 42,179, 58, 54, 73, 74, 81, 82,230,102,219,179,191,223, 19,147,140, 32,253, 20,152,199,132,117, 13,115,242, 76,243, 9, 87,
+ 36,173, 76, 41,205,254,238,142,239,126,255, 59,158, 30, 30, 57, 29, 15, 88,109, 24, 15, 39,218,205,134,156, 13,221,118, 71, 82,
+137, 97, 28,184,189,217, 49,158, 78,152,214,144,131, 84,232, 89,105,114, 86,196,217, 11, 8,167,222,240,157,213,220,223,237, 41,
+ 81,154,159, 41, 37, 62, 62,157,197,226, 17,102, 26,103, 8, 37,227,231,128, 54, 13,231,144, 56,133,200,144, 37, 88,165,144,233,
+172,163, 45,134,121, 10, 88, 10, 27,167,216,219, 6,163, 12, 83, 44, 60, 77,158, 79,195,200, 60, 39, 50,154,137,194,100, 50, 89,
+129, 69, 11, 35, 64, 41,110, 55, 45,119,155, 86, 48,138, 41,241,112, 30, 56, 77,145,155,174,101,223, 58,122,173,209,149, 23, 48,
+ 71, 81,213,182,141,165,177,118,181, 8, 77,115,224, 60,204,132, 88,104, 58, 7,170,240,240,124,144,157,118, 61,228, 59,103, 5,
+193,123, 26, 68,204, 68,193,244,142,219, 87,247,180,125, 87, 65, 86,170,234,148,170, 55,247, 10, 1, 43, 64,143,154,107, 93,213,
+160,193,139,119, 21,173,233,186, 6, 99,101,191,104,180, 33,133,192,243,249, 64,219,111,120,249,246, 45,159, 62,126,226,231, 63,
+253,131,199,199, 51,182,223, 64,130,110,187,193, 54,134,109,227,152,231,192,116, 58,241,237, 63,255,138, 95,252,238, 55, 76, 57,
+ 49, 60,127,164,132,137, 66,226,124, 24,249,225,221, 35,127,251,233,103,190,251,250, 43,126,249,230, 45, 79,135, 39,233,228,135,
+145,156, 59,142,243, 92,215, 66, 25,170,202, 62, 41,113,117, 60,207,129,182,239,232,219,134, 23,187, 13,251,109, 71,191,223,112,
+243,250, 37,237,126, 39,137,131,181,179,212,106,233, 50,242,149,124,231,243,140,113, 57, 4,210,133,134,181,116, 25,245,254,184,
+120,185,235, 33,157, 19,203, 91,253, 18, 37, 90,119,245, 57,173, 42,123,177,199,177,118,189,178,195, 94, 40, 98,215,228, 72,181,
+166,129,201,203,112, 97,123,219,250,125,233,245,239, 89, 66, 61, 20,215,169,106,101,141,111, 93, 15,252,207,104,113,215,255, 93,
+246,173, 90,153, 10, 9,209,171,109,110,241,199,171, 43,187, 92, 81, 23,164,171,186, 18,109, 93,143, 12,174,135, 9, 75,186,228,
+234,231, 79,249,242,239,175, 18,192,202,122,208, 71, 74,150, 9, 80,206,133,174,149, 16,169, 92,100,156, 30, 99, 36,133, 44,144,
+ 45,159, 56, 63, 79, 60, 29,206,188,251,116, 38, 71, 67, 83, 53, 44, 33, 4,230, 74,162, 43,245, 0,245, 49, 49,231, 76, 40, 48,
+167, 68,138, 5, 63,103,130,135,217, 39,150, 42,236, 52,141, 60,143,103, 64,210, 17, 29,138,243, 52,115, 28,103, 6, 31, 25,125,
+ 36,132, 12, 69,209, 24, 39,240, 34, 52,166, 50, 4, 38,159,132,246, 22,242,154, 80, 55,251, 76,136,133,209, 7,142,211,140, 79,
+145, 16, 11,114,142, 44, 89,222,226, 99, 95,190,127,153,150,136,191,221,233,186, 78, 85,122, 85,122, 95,159,239,105,229, 33, 92,
+ 98,100, 75,197,220,106, 37, 16,179,156,235,138,169, 78, 42, 65,130,191,180, 54, 52,125,135, 15, 2,238, 82, 74, 99,173,190,244,
+183, 41,201, 33, 90, 89, 36,215,156, 3, 65,139, 35,220,245, 58, 53, 46, 33,227, 26, 87,201,114, 95,100,207,215,119, 78, 94, 44,
+148, 85,121,169,245,165,177, 47,213,185,178,106, 56,106,234,221,225,116,102,158,189, 48, 51,172,140,204,173,117, 36,159,235,187,
+ 10,108,103,165, 64, 81, 11,233,175, 92,194,133, 22, 43,161, 22,239,191,216,254,214,228, 23,113,140,200, 59, 85, 94,132,185,166,
+142,181,109, 87, 59,247,194,120, 24,104, 26, 75,219,119,144, 33,156, 7,138,145, 95,170,235, 59,116,163,137,179, 95, 3, 52,114,
+242,168,186,167, 88,150, 15, 42,137, 26,210,212,177, 76,235, 26, 90,235,120, 60,158,152,231, 80,199,116,154, 41,196,186,123,118,
+116,109,195,182,235, 56, 60,158,120, 58, 30,113,182, 17,149,123, 12, 52,198,138,136, 65,137,196,205, 89,203,236, 61,143,135,103,
+ 74, 86,100, 45,128, 21, 63,207,132, 12,161,186, 72, 12,138, 70, 27,169,164,163,236,247,162, 19,159,100, 59,103, 94,223,222,163,
+ 27, 75, 12,129, 16, 18, 97, 74, 20,149,176,206, 50, 71, 79,156, 11, 78, 41, 97,222,107,205, 55,191,249, 13,214, 54, 60, 62, 60,
+160,181, 99, 28, 39,146, 82,180,125, 79,179,221, 50,167,196,249,116,102,187,221, 64, 10,204, 7, 81,239, 79,211,132,181,154,144,
+178,216,238,194,188,200,127,208,214,112,247,242, 6,189,236, 12,173,226,227,243, 64, 76, 30, 93,162, 20, 50,198, 48,204, 81,212,
+197, 73,113,154, 18, 83, 78,136,126,191,212,235,107, 25,188, 39,215, 3,126,223,244, 24, 10, 49,102, 30,142, 19,255,120, 62,227,
+ 67,198,160, 37,201,173, 20,116, 86, 88,148, 60,124, 5,246, 93,203,139,125, 79, 99, 37, 97,236,121,152,120,127, 24,185,217,117,
+220,109, 90,122, 99, 80, 20, 66, 46,178, 95,175,185,203, 93, 83,167, 55,179, 36,217,161, 36,180, 36,148, 32,244, 37, 12, 38,101,
+185,190, 73,147, 82,225,211,227, 19,231,231, 19, 41,102, 74, 6,235, 44,183,247, 55, 52,251,150, 82,164,163,201, 75,234, 85,214,
+232, 36,106, 88,165,107,119,112,229,118, 38, 65,152, 61,209,203,110,172,107, 90,121,177,214, 80,139, 28, 11,195,241, 76,151, 27,
+ 94,125,253,150, 48, 14,124,252,227,159, 56,127, 58,161,141,248, 91,109,239,232,182, 29, 93,163,113,100,166, 97,226,235, 55,111,
+249,197,191,255, 27,186,105,152, 63,126,194, 31, 14,162, 22, 31,224,253,135,103,254,244,247, 31,121,243,234, 21,255,244,245, 27,
+158, 79,207,156,199,129,105, 56,227,125, 97, 76, 34,114,106, 49,164,113,150,131,203, 24,166,201,243, 60,157,104, 55, 13,109,219,
+112,211,181,220,246, 45,221,182, 99,243,230, 5,253,253, 45,186,145, 0,144,117,155,125, 53, 53, 94, 64,166,210,141, 94,130, 89,
+114,190,196, 20,171,122,184,149,202,177, 38,229, 47, 80,170,121,245,163,203, 93,184,240,211,107,252,231,210, 37,215,148,176,242,
+133, 34, 61, 47, 73,108,117, 76,168, 10,159,101,164,127,158,159,174, 87, 75,156,186, 10,101, 89,254,254,101,215,190, 22, 22,255,
+133, 32,111, 21,163,149,171,252,246,148,107,252,238, 21,154,182,124,126, 72,107,181,100,112,179, 78, 25, 62,243,226,171, 43, 96,
+207, 23,191,135, 90, 4,116,215,104,177,245, 26, 84,181,122,172,135,190, 42,228,144,152,199, 64,239, 68,240, 24, 83, 33,204,145,
+217,143,156,198,129,211,233, 72,154, 2,222,103,206,163,231, 48, 68,156,109,217,152,158, 48, 7,230,105,102, 14, 85,177, 94,211,
+ 26,131, 23,247, 78,164,160,178, 22, 44,168,146, 48, 38,239, 11, 49, 20,230, 57,241,241,124,230,227,113,164, 4,141,202,154,211,
+ 20,120,127, 62,115,240, 51,185,106,118,140,177,104, 45,123,231, 72,196, 23, 79,206, 9,163,108,189, 39,162,228,140,167,234,124,
+ 72,129,146, 52, 57, 9,128,170, 49,212, 56,232,200,121,172,171, 59, 31,197,158,168,107,191, 93, 11, 58, 99,228, 63,202, 24, 17,
+ 88,171,250, 51,107,161,103,140,198,168,166, 82,211, 22,255,188,144, 21, 75, 41,216, 90,124,121, 47, 4, 53,189,230,196, 75,103,
+157, 82, 18,180,183, 18,219, 87,231, 26,201, 79, 48, 70, 58,223,156,177,186,173, 63, 92,206,162,107,145, 99, 73,153, 18, 68,116,
+109,156,140,180, 99,140,194,217,176,246,130,171, 89, 39, 78,139,255, 93,215, 4,198, 11, 73,113,177, 53,166,148, 68, 88,184, 76,
+156,170,194,114, 26,103, 78,207,103,186,182,165,177, 77, 21,213, 89, 20,134,217, 75,222,134, 41, 26, 99,155, 11, 89,174,176,114,
+ 20,116, 81,171,117, 81, 85,175,126,142,177,126, 6,133, 79,137, 41, 6,236,226,187,148,139,211, 98, 27, 43, 85, 80,134,113, 56,
+209,116, 61, 77, 43,222,186, 57,200, 62, 91, 23, 45,116, 27, 99, 8,222, 67,181, 4,204,167, 40,149, 75,229, 79,235,144, 48,169,
+ 86,144, 86,192, 14, 93,215, 98, 52,156,142, 3, 33, 95,168, 86,211, 60,113,187,121,129,237, 91,186, 77,143,210,154,167,243,137,
+ 24, 50,219, 27, 33, 4,165,146,177,206, 98, 74,198, 3,197, 26,148,177, 12,231, 19,167,131, 4,200, 88, 37, 85, 99,160,144,141,
+ 17,150,125,129, 70, 45,177,124, 73, 70, 84, 70,145,140,193,133,200,214,194,203, 23,123, 74,137,196,156, 25,166, 72, 72,139,202,
+ 93,145,230, 9,159,197,171,105, 82,225,229, 55,223,240,205,239,126,203,143, 63,252, 64,152,133,158,119, 56, 62,179,223,245,236,
+ 94,222,146,173,230,241,221, 3,205,109,199,205,247,111, 57, 28,142,148,198,146,172,193,143, 19, 56, 81,198,250,152,200,169,250,
+140,181, 68,146,246,219, 94,208,157,218, 48,204, 51,159, 30, 7,122, 11,196, 32, 17,129, 81, 17, 2,244,198, 50,248,153, 49, 71,
+230, 2, 41, 43,180,129,198, 25,114,168, 4, 34,163,216,183,154, 78,107,202, 28,121,255,116,226,199,243, 40,227, 91,171, 25, 13,
+204,245,133,175,169, 86, 18, 96,219, 58,238,183, 45, 91, 43, 96,161,227, 48,243,243,105,102,179,105,121,117,179, 99, 83,149,245,
+115,138,132, 40, 5,136, 51,154,206, 85, 63,124, 46,132,146, 46,214,159,218, 83, 14, 83,160, 47,213, 98, 87, 96,158, 38, 98,244,
+232,152,233,140, 67, 55, 64, 3,253,205,134,206, 90,114, 72,152,170, 45,214,186,102,117,171,140, 42,102, 77, 33,171,138, 42,217,
+243, 21, 81,240,198, 40,135, 67,219, 53,180,125,179,190,217, 99, 12, 28, 31,158,209,185,112,247,203,215,104, 50,239,254,240, 87,
+142, 31, 70,124, 18,187,149, 63, 79,220,190,126, 67,211, 22, 26,147,153, 14, 71,238,110,110,248,229,127,255, 29,155,187, 87, 60,
+127,250,137,231,199, 79, 34,198,153, 18, 63,127, 56,241,135, 63,255,141, 23,251, 29,255,237,155, 95, 48,159,143, 28, 79, 79,248,
+ 97,228,124,156, 57, 99,153, 73,236,157, 35,206, 19,201,123,180,213, 12,193,139, 0,180,111,233, 55,142, 91,103,185,219,108,104,
+123,113, 83,108, 94,221, 82, 42,222,183, 92,217,171, 74,206, 21, 3,121, 5,153,190, 94, 73,231, 85,204,190,114,213, 87,173, 23,
+234, 51, 49,154,160, 92,203,218, 41, 93,186,207,171, 52,171,149,130,190, 52,251, 85,193,125,125,186, 85,209, 90,169,147,129,203,
+ 33,156,214,207, 40, 49,180, 97,157, 36,104,189, 86, 32,235, 56,126,165,173,173, 74,122, 25, 53,171, 47, 68,117, 80, 9,146,138,
+213,174,166, 20, 87,227,208, 47,233,115,101,237,184,117,245,208,231,171, 16, 22,165, 46,191,127,169,157,227,245,207, 90, 71,253,
+229,178,202, 40,149,127, 46,224,171, 44,194,166, 98,200, 69,225,167,145, 28,206, 52,237,158,232, 19, 33,206,196, 36,207,187, 15,
+158,232, 53,174,105,153,138,226,121, 30,200, 40, 26,165, 56,156, 7,185,231,147, 66, 71, 57, 32, 83,141, 56,157,124, 96, 78,176,
+215,138, 82,102, 66, 22,212,117,170,182,222,121,156, 25, 66, 38,199,137,187,187, 45,174,107, 57,248,137, 86, 27, 90,107,209, 70,
+138,146, 20,165,184, 47, 58,202,122,180,138,175,208,114,144,198,180,240,204,203,234,127,142, 89,166, 25, 83,201,196, 40,172,122,
+107,193, 68, 17,221,165,146,137, 73, 17,147, 96,251,157, 18, 75,199,197,146, 47, 5, 85,227, 28, 41, 9,172,117,181, 21, 34, 22,
+198, 56, 37,177,180, 85, 82,175, 54,178,179,215, 73,116, 8, 49, 85, 18,155, 54,245,254,147, 21,109,140, 81,116, 76,182, 33,198,
+132,107,219,234,195, 95, 98, 99, 5,241,119, 17,103,170, 75, 96,209, 66, 28, 91, 64, 67,186, 65,169, 80,109,105,224,156,173, 89,
+ 4,203, 65,170, 68, 51,186,218, 58,101,186,205,146, 43, 97,244,197,137, 96, 21, 43,177,167, 86,226, 74,107, 78,211,153,215,230,
+ 94,246,236, 37,161,170,174, 55, 76,190, 22,187,137,198, 58, 17, 61,198, 10, 22, 90,169,144,122, 93,105,176,222,167, 21,164,166,
+ 4,173, 91,124,196,154,182, 93, 71,106,206, 58,140,115, 24,107, 9,126, 98, 28, 39,110, 94,221,201, 8, 52, 4, 82,240,107,144,
+139, 68, 8, 58,226, 52,215,221,131, 37,197, 34,200,224, 12, 58,102, 74, 8,152, 84,106, 8,130,116, 4,206, 73, 5, 56, 76,115,
+221,133,105,124,242, 68,160,239, 26,186,190, 99,183,219, 50, 30,158,120,126, 30,176,173,195, 89, 71, 8, 81, 58,101, 93,189,146,
+104,108,211,128,206, 28, 15, 71,185,249, 74,102,103, 27,210, 4, 25, 35,135,186, 2, 87, 41, 76, 74,107,188,159,136, 5,138,117,
+168, 12,206, 39, 54,175,239,104, 55, 59,202, 92, 8,163, 39,120, 57,168,230,156,120,209,183, 28, 62, 29, 37, 37,171, 20,246,175,
+223,240,205,175,127, 69, 24,103, 30,223,189,231,230,171,151,124,250,248, 9,171, 52, 47,222,190,193,117, 91,222,191,251,153,225,
+116,228,238,219,123, 90,215,240,240,116, 96,187,221, 50, 14,103,176,134,160,101, 71,159, 39, 95,181, 6,242, 32,221,222,108,112,
+104, 74, 12,168, 70,243,243,195,137, 66,148,148, 92,173,136, 74, 49,134, 8, 24,124, 44, 76, 57, 49, 18,136, 69,190,244,198, 25,
+121,113,105,249, 14,182,202,178, 55,134,224,103,126,122, 60,240,143,199,145, 98,165,104,243, 26,166,170,122, 94, 69, 63, 90, 4,
+107,183,187,142,155,206, 18, 83,230,228, 19,135, 73,198,254,111,238,246,220,118, 22,171, 52,195, 60,227,131, 28, 10, 86,105,122,
+ 39, 97, 21, 33, 70,177,171,212,236, 95,171, 21,173, 53,148,162,152,166, 73,160, 22,214,210, 25,195, 28, 60,113,148,196,190,228,
+ 50, 91,219,177,239,118, 96, 29, 67,204,168, 44, 66, 61,157, 36,103,219, 58, 71, 49, 26,107,171,136,164, 24,140,174, 52,166, 2,
+161, 82,255, 74, 22,161, 88,219,183,178,167, 1, 76,204, 60, 62, 29,152, 83,224,205,155, 55,180,173,227,231, 63,254,200,225,227,
+ 3, 99, 8,132,148, 8,243,196,230,229, 45,109,215,176, 49,138, 56,142, 52,174,229,187,223,255,142,155, 95,255,134,233,233,137,
+199,247, 63,226,180, 66,199,194,167,199,145,255,249,167,191,208, 53, 13,255,237,251,111,200,233,204,211,233,137, 52, 78, 28, 14,
+ 3,207,190,144, 45,108,187,150, 20, 60,254, 60, 98,180,194,167,204, 97, 28, 41,141,161,221,117,180,206,114,223,181, 18, 95,123,
+127,199,237, 87, 95,161,140, 91,119,131,107, 26,153, 82,164, 74,141,186, 78, 92, 91, 56,219, 57, 93,198,138,234, 51, 37,120,213,
+120,105,181,162, 80,175,193, 51,165,138,126,214, 23,222, 34, 36, 83,117,239,152, 46, 81,153, 84,168,199,197, 23,190, 8,232, 46,
+ 48, 24,245, 37,121,189, 44,160, 14,181,118, 47,139, 53,140,107, 75, 92,206, 43, 71,251, 51,127,112, 41,159,103,167,151,139,144,
+109, 45, 66,106,232,201,194, 93, 95,198,244,170, 10,242,202, 23, 44,120, 93, 19,251,174,237,120, 75, 34,214,133,243, 93, 62, 27,
+199,151, 43,104,138,174,162,193, 92,150,124,241, 58, 5, 77,145,249, 60, 67,110, 73,169,174,158,130, 8,117,133,182,218,160,140,
+ 98, 82,137,167,195,192,228, 19, 14,197,227,116, 34,135, 72,103, 90,116, 66,222, 81, 41,147, 85,170, 99,213,178,190, 7, 82, 20,
+157,208, 92, 50, 42, 55, 96, 13, 57, 5,250, 70, 99,247,251,138, 22,245,108, 91,105,188,114,201, 76, 49,144, 66,194,199, 10,195,
+ 81, 50, 18,214, 43,195, 0,108,129, 57, 69,154,182, 66,101,150,131, 80, 75, 97, 49,175, 93,161, 92,148,174,107,185, 37, 50,206,
+158, 24,197, 86,107, 53,100, 91, 49,191,213, 98, 85,148,116,210,141, 82,204, 85,171,179, 16,251,172, 86,146, 20,121,165,153,200,
+ 57,211, 58, 39,118,187,166, 42,189, 99, 93,227,174, 60, 96, 17,188,165, 34,194,215, 82,153,242,146, 42, 42,197,136,169,121,235,
+102, 89, 51, 85, 13, 86, 73, 98, 9, 46, 69,161,114, 70,229, 68,113, 5,109, 45,196, 74, 43,205, 18, 18,179,236,209, 75, 53,211,
+ 43,117,113, 59,196,188,120,237, 75, 5, 45,233, 10, 77,202,216, 98, 42,164, 76,173, 36, 64,163, 36,181, 45,230, 34,194,115,159,
+235,104,222,224,195,188, 90, 50,173, 49, 56,109,136, 74,238, 95,123,165, 65,144, 2, 85, 95,176,203,229,130, 40, 46, 10, 98,142,
+ 88,235, 28,201, 75, 37,105, 27, 9,179,112,109,203,241,225, 1, 63, 12,108,183,223,224,154,134,225, 60, 86,186,143, 66, 57, 69,
+191,223,146,195, 76,158, 37,156, 62, 86,202,212,242, 96, 40, 81, 78, 85, 43,130, 94, 71,135,214, 26,230,243,200, 84, 71,224, 74,
+107,102, 47,126,210,126,211,177,223,239,104,187,150,159,222, 13, 60,156, 14,108,250, 30,171, 21,227, 28,217,110, 90,148,146,145,
+111,169,193, 3,243, 48, 49,140, 3, 33, 39,130,130,219,219,158,247,199, 35,217,136, 47, 17, 36, 27,221, 25, 39,163,217, 20, 37,
+167, 93,131,245, 9,151, 51,155,253,158, 84, 1, 37,126, 20, 46,124, 46,153,182,149,138,201,207, 51, 49,122, 58, 99,248,246,247,
+255,196,246,254,142,191,255,245,175, 98,213,112,142,167,195,145,251, 23, 47,184,127,241,130,135,135, 71,206,135,103,116,103,185,
+185,191, 37,142, 19, 62, 4,110,250,150,195,207, 7,140, 49, 28,207, 18,247,153, 23, 66,146, 82,220,244, 13,251,205,134, 18, 3,
+198, 24, 14,231,153,135,231, 51,187,166,129, 28, 65, 27,230,152, 8, 89, 4, 40,158,194,152,146,132, 66, 64,181, 34, 58, 26,109,
+ 48, 21, 50,179, 49,138, 56, 5,126,126, 62,241,227,211,137,100,172,132,177, 24,133, 71,118,232,153,130, 45,178, 67,223, 52,150,
+219,109,203,190,115,228,162, 24,252, 44,163,126, 99,120,211,181,220,110, 26,122,103, 25,230,128, 15, 97,101,133, 55,206,210, 52,
+ 78, 14,114, 47, 10, 6,163,107,144, 2,138,190,211, 40, 43, 35,202, 97,242, 56, 99, 48,125,131,174,113,162,177,226, 81,199, 16,
+176,227, 68,177,150,216,181,130,173,172,227, 59, 84,161, 73, 65, 30,180, 82, 42,136, 94, 65,142, 34, 82,140, 81,184,252, 69,132,
+152,109,223, 95, 68,116, 89, 14,244,225, 60,241,234,245, 43,246, 55, 55,124,248,241, 71, 62,254,227, 35,211, 40, 34, 28,239, 61,
+ 56,195,246,166,167, 55, 26,124, 68,249,196,175,254,159,127,225,171,127,249, 45,100,197,195,195, 15,152,226,113,186,231, 60,102,
+254,207,159,255,193,121,158,249,143,127,250, 21,157,211,188,255,249,192,236, 61,231,227,200,211, 97, 98,180,142,155,182,197, 32,
+152, 99, 74,198, 23,120, 30,207, 12, 37,115,179,223,211, 53,142,155,190,163,235, 59,186,155, 45,183, 95,189, 69, 57,139,174, 36,
+188, 85, 76,182,176,190,235,119,102,174, 4,102,215,202,240, 53,191,124,237,150,115,237,104,229, 69,154,175,109, 99, 85,217,189,
+ 20, 13,170,228,149, 62,150,139,236,216,117,221,231,138,239,188, 92, 41,234,243,106,241, 50,168,139,207, 91,113,101,175, 91,199,
+ 5,117, 37,103, 46,197,194,213,232,221, 44, 99,205, 90,180,112,117,208,234,171, 81,188,254,226,192,231,154, 30,151, 43,174,243,
+179, 80,151,229,255, 35,123,217, 5, 18,179, 22, 32, 21, 86,130,174, 62,243, 58, 9, 89,127,135,101,138,176, 92,235, 10,232,145,
+221,186,252,115, 74,153,152, 36, 46,151,162,153, 78, 19,211,232,229,154, 70,152, 83, 38, 6,133,209, 86,196,196,177, 48,197,137,
+227,243,153, 97, 22, 4,118, 72,226,114,113, 90, 64, 79,165, 84, 49, 90, 10,180, 86,175, 73,113,166, 42,183,135, 92,240, 33,163,
+ 92, 97,187,235,104,155, 13,190,117, 98,115,243, 51,155,126,195,126,215, 18,162, 28,196,126, 10, 12, 99,160,228,184,118,166, 11,
+ 17, 84,236, 80,145, 92, 22,230,135, 56, 69,180, 81,171,102, 80,107, 77, 81,145,148, 99, 13,223,146,162, 58,229,136,115, 26,231,
+ 58,206, 67, 96, 10,153,152, 75,221,133,215,235,167, 76, 37, 59, 10, 93,206,104, 8, 73,118,197, 40,133, 85, 6, 82, 77,179, 91,
+100,156,229,106,114, 84, 15,241,188,116,192,106,217, 41,139,118, 70,146,211,140,184,132,170, 91,198,123, 89,113, 25,101, 46, 19,
+167,165,179, 54,124,230,102,200,213, 34, 92,116,221,211,107,161, 28,150, 34, 49,185,101, 65, 0,107,181,118,199,139, 46,163,148,
+194,114,186,169,154,214, 22, 43,204, 71,160, 54,130,245,174, 87, 4,148, 98,152, 38,252,228,113,206,162,244,188,238,223,231,217,
+ 95, 10, 23,181, 80, 60, 77, 13,166, 41, 92, 30,131, 34,162, 89, 29,170,198,198, 92,198,255,149,173, 96,141, 49,248, 20,133, 68,
+211, 56,140, 53, 88,109,152,206,103,124,140,180,109, 75,211,182, 60,249,153,152, 34,218, 58,148,134,190,237, 68, 66, 31,103, 92,
+183,147,208,249,148,215,139,152,151, 67, 94, 38, 59,210,189, 87, 1,214, 60,143,140, 65,168, 68, 74,107,230, 42,152,218,237,182,
+220,236, 55,228, 16, 57,158,206,228, 58, 2,153,115,194,199,192,171,246,166, 90,128,192,182,134, 86, 89, 30,198, 19,227, 52, 51,
+132,137,219,237, 13, 78,105,162, 82,228, 70,170, 44,179,136,101, 76, 77,215,169, 10,106, 29, 18, 54, 68,218, 78, 70,158, 74,103,
+230,113, 38, 76, 1,181,177,164, 57, 99, 90,177,157, 5,239, 73, 41,243,203,223,254,134,151, 95,189,225,225,225, 19,195,233, 76,
+187,233, 57, 60, 63,131,209,188,252,234, 45,227,249,204,233,120,148, 93,178, 51,108,182, 59,142, 63,191,199,181, 14,221, 26,230,
+ 97,196, 53,150,225, 44,121,227,148,140, 50,146, 88,119,179,219, 44, 51, 29,116,227,120,120, 62, 75,133, 91,227,254,124, 74,132,
+ 34, 15,154, 45, 16, 84,230, 28, 34, 89,203,161,231,140,193, 58, 75,131, 34,121, 79,171, 21, 42,122, 62,156,102, 30, 78, 19,222,
+ 24, 48, 6,156, 64, 32,226,146, 51,140,136, 46,182,109,195,109,223,112,211, 57, 26, 5,167, 57, 48,121,177, 56,222,110, 55,220,
+246, 13, 47,110, 54,140, 83, 96,242,115,189,145,132, 88,215, 53,149, 17,157,146, 20,125,117,204,151,234, 67, 57,199, 72,163, 11,
+ 59,235, 24, 18, 76,231, 1,130,167,119,150,174,113, 40,107, 68, 24,162, 68, 25, 31,125,164,219,239,105,250,142, 16, 68,215, 96,
+140,150,104,212, 50,210,117, 45, 93,223,209,244,160, 85,170, 93,122, 32,167,130,113, 78,244, 30, 70, 58, 92, 91, 52,167,227,129,
+243,233,204,221,221, 45, 55,183,183,140,227,145, 79, 63,252,196, 92,163, 87, 99, 12, 76,163,231,197, 47,238,233,157,193, 36,121,
+ 1,126,243,235,239,248,246, 95,126,131,234, 29, 15,127,255, 27,211,112, 98,171, 27,194,164,248,227, 31,223,241,241,112,224,247,
+223,125,199,139,109,195,135, 79, 31,240,179,103, 30, 60, 31, 31,207, 60,231,194,139,237, 70,160, 20,243, 68,142,129, 80, 10,199,
+113, 98,206,137,205,182,167,107, 44,183,109,203,190,237,104,247, 27,238,191,126, 75,187,237, 41,198,226,156, 36, 39, 10, 34, 84,
+215,148, 16, 93, 97, 51,162,200, 49,230,243,160, 19, 85, 71,125, 57,151, 53, 56,178, 32, 41, 83, 75, 94,247,117,246,184, 86,234,
+202,234,163,170,173, 40,215,241,232, 98,245, 42,171,255,182,168,242, 89, 30,251,170,160,175,220,229,114,213, 17,171,171, 28,115,
+ 73,219, 42,107,145, 33, 7, 69, 89, 59,250,117,191, 89,223, 27,234, 58,172,229,139, 46,253,218, 31, 95, 86, 68,238, 10,165,254,
+175,187,249,122,167, 47,197,193,197, 32,183,120,228,213,138, 16,189,230,135, 45,236,245,148,243, 26,165,153,243,197, 18, 23, 66,
+224,124,158,106,106,163,208,131,134,115,228, 56, 77,244, 93, 67,138,134, 33, 72, 58,157,213, 14,101,138,208, 6,143, 19,211, 20,
+136,232,154,197, 32,244, 64, 87,147,240, 66,242, 76, 33, 97, 74, 38,105, 89, 59, 10,165, 81, 62,199, 24,164, 48,118,155,134, 55,
+111,247,148,226,120,126, 40,196, 57,200, 20,172,130,195, 10,137, 68,162,107, 12,109,179, 33,134, 76,137, 81,202, 23,163,234,250,
+160, 58, 18,148, 19,175,115, 78,108,155, 77,197, 46, 11,221, 50,101,177,165,181,141,193, 24, 86,245,123,206,114,109,172, 86,236,
+122,139, 82,145,121,142,196, 80, 97, 46,139, 26, 60, 37,166,178, 4,250, 20, 12,121, 61, 11, 22, 39,130,143, 82, 60,234, 42,158,
+212,255, 85,225, 22, 43, 42,213,152,170, 95,168, 69, 71, 35, 90, 25, 73,104, 52,213,106, 38,135,165,209,245,153, 72,101,157, 42,
+173, 58,146, 43,103, 4,250, 66,165,148, 60,247, 72, 99, 36,229,241,178,194, 41, 23,110,124, 45,134, 47, 19,170,178, 18, 45, 37,
+ 76, 38,201, 36,100, 33, 56,214,201,208, 48, 14,132,224,177,214,213,226, 89,227,140, 35,228, 89,214,177, 37, 87,232,151,128,191,
+242, 74,239, 83,117,165, 33,215,200, 26,197, 92,106,138, 96,141, 29, 23, 80, 87,194,106,173, 41, 41,209,239,182,184,166,197, 88,
+ 71, 46,153,243,243, 19, 93, 99,217,238,246,104, 13,126,242, 43, 4,223,185,134,166,109,241,231, 51, 41, 4, 54,206,145,189,228,
+150, 47, 0, 62,129, 98, 20,138,169, 59,219,133, 73,173, 18,211,232, 5, 63,139,169, 8,207, 72,215,119,220,237,111,217,246, 91,
+126,126,126,199,199, 15, 15, 88,215, 97,173,229, 52,141, 24,103,171,229, 32,163,234, 52, 33,169,196,225,120,100,244, 51, 57, 21,
+110,154, 45,179,247, 50,234, 82, 66, 4,114,213,218, 82,140, 97,158,102, 98,169,177,239, 94, 14,245,205,155, 29,155,205,134, 50,
+ 39,230, 65, 70, 35, 86,201, 40,223,105, 67, 10,158,225,116,230,118,219,243,251,127,251,119,198,113,226,241,211, 39, 92, 43, 99,
+ 30,159,103,190,254,197,215,216,198,240,199,255,241, 87,118, 55, 59,162,133,221,237, 14, 85,224,249,249,137, 87,111, 94, 49, 13,
+ 35, 77, 91, 39, 30,179,176,207, 69, 40,162,232,187,142,205,190,193,251,200,214, 24,158, 14, 3, 31,143,103,246,141, 65,149, 32,
+106,215,172, 8, 89, 70,183, 27,215,240, 49, 12,132,130,120, 79,251, 22, 5, 56,173, 40,115,194,212,206,229,233, 60,242, 52, 6,
+134, 92,200, 74,240,130, 1,152,150, 24, 39, 68,136,178,237, 29, 55,125,203, 77,231,232, 21,146, 1, 30, 18,202, 88, 54, 78,179,
+233, 44, 55,251, 13, 73,139,216, 67, 56, 31,242, 64,110,187,134,206, 26, 66, 85,193, 75, 46,178, 8,224, 74, 78,204,100,178,178,
+132, 92, 80, 77,102,219, 52,132, 32, 20,183, 18,165,250, 54,206,225,115,160,168, 66,215,117,204, 62, 80, 30,159, 69, 24,185,109,
+241, 99, 22,224,132,177,100, 2,126,152,136, 49,209,134, 88,211,145, 36,167,187,115, 45,109,219, 92,220, 28,192,233,240,192,227,
+227, 51,247, 47, 94,176,187,217,145,203,204,143,127,255,129,211,243, 72,240,129, 16, 61,167,243,137,205,126, 71,191,223,225, 74,
+ 68,249,153,215,223,252,130,111,126,255,207, 52, 47,111,120,124,255, 35,199,159,255, 78,223,221, 64,182,252,229,207, 63,243,151,
+127,124,228, 55,223,127,203,119,111, 94,243,241,195, 63, 24,199, 51,209, 39, 62,124, 60,242,241, 60,176,125,243,154,166,239,201,
+195, 64,154,103, 98,144,151,253, 41,120,186,109,199,118,179,225,166,113,220,117, 61,125,219,115,247,246, 53,253,171, 91,148,178,
+ 88,103,185, 62,103, 74,197, 97,195,235,232, 0, 0, 32, 0, 73, 68, 65, 84,174,170,122, 0, 21, 36,201, 76,192,127, 53, 3,125,
+ 1,195, 22,214,170,126, 25, 67, 94, 40,107,159,239,156, 21,185,230,139, 95,186,253,154,117, 71, 41,177,198,175,150,171,206, 62,
+ 85, 64,124, 29,123, 87,207,123,169,158,166,178,144,220, 86,156,235, 66,124,215,178, 54,208, 50,134, 92,186,232,203,207,205,151,
+128,165,181,203, 95,226, 68,213,103, 80,143,197, 46,180, 22, 39, 75,210, 92, 41,168,156,191,208, 26,212, 86,179,200,125,169,149,
+ 94,255,167,235, 2, 32,199, 92, 15, 19, 46,222,227, 42,112,202,215, 74,247,148, 43, 40, 43, 49,142, 51,143,199, 3,113,154,113,
+165,131, 40, 48,152,193, 11, 81,108, 78, 6, 63,201,231,105, 90,136, 54, 51, 28,207, 60, 61,141, 76,115, 33, 42, 17,141,181, 54,
+211,219, 14,149, 4,107,154,149,102,170,174, 2,170,247,221, 44, 89,221, 90,198,200, 78,103,154, 94,225,122, 67,215,111, 56, 30,
+ 38,114, 42, 56,173,192, 90,180, 83, 20, 18, 77,239,216,219, 14,157,162,232, 95,146,162, 4,153,142,105,171,209, 86, 99, 0,149,
+196, 54, 59,141, 65,120, 32,149, 21,162,180,198,234,194, 48,123,124, 12,116, 78,227,118,134,211,144,136,161, 50, 54,178, 34,230,
+130, 81,153,174,209, 24, 44, 67,213, 45, 21, 45,148,185, 92, 20, 37,235,122, 53, 23, 33, 93,169, 97, 79,134, 82,237,176,242, 29,
+101, 82, 73, 4, 42,205,114,225,247,167,116, 57,184,202,149, 83, 2, 9, 57, 9,117,181, 71, 91, 5,102,169,198,218, 86,132,194,
+114,160,155,170,177,162,210,238, 84,174,252, 2, 93,160,142,203,151, 48, 25,204,213,228,233, 11, 76,241,106,237,172,227,253, 21,
+ 91,189,214, 9,178, 74,146, 4,181, 84,157, 17,153,146, 12,227,121,230,254,190,114, 39, 50,107,116,116,136, 81, 82, 25,175, 50,
+ 43,150,160,159, 11,200,102,161, 9,203,223,149,150,176,151,133,194, 39,118,238, 74,213,177, 22,107, 44, 78, 91, 66,140, 28,159,
+ 78,180,219, 61,221,174,199, 36, 37, 25,233, 40,108,105,217,238,118, 56, 11, 67,244, 53, 39,184, 37, 12, 99,213,238,203,195,160,
+ 82, 18, 59, 3,181,211,168,244,175, 66, 38,204, 34, 70,192, 20,156,178,248, 18,216,246, 13, 47,110,247,180,214,242,233,211, 51,
+227,232,217,238,111,160, 88, 82, 76,244,157, 3, 10,222,103,116,107,209, 93,195,248,240,204,211,243,153,152, 10,173,115,184, 78,
+243,241,228, 9, 21,138, 80,249, 69,104, 35,127, 54, 68, 47,213, 86, 72,152, 84,176,253,134,126,191, 1, 35,208,129, 97, 26,112,
+110, 87,211,164,100,132,236,135, 51, 83,240,252,247,255,248, 15,186,219,150,247,255,235,175, 56, 35, 29,188, 15,129,205,203, 91,
+ 54,247,183,252,240,255,254,129,167,159, 31,184,185,191, 37,148,196,253,221, 45,211,249, 8, 5,182,187, 61,239,126,122,135,113,
+154,243,233, 44,170, 98, 50,198, 90, 26,109,120,177,237, 9, 81,170,102,111, 28,239,159, 14,180, 70, 66, 73, 82,242,132,172,200,
+218,225,125, 68, 27,203, 92, 34,199,144,177,214,177,217,238,106, 32, 68,161, 9,137,152, 50, 46, 71, 82, 12,156,198,153, 83,128,
+164, 46, 99,247, 80, 33, 18, 66, 12, 51, 52, 78,104,113,251,206,208, 59, 81,214,207, 49,161,173,193, 89, 25,171,223,110,123,246,
+109,195,207, 79,207, 43,113, 76,107,197,118,211,178,219, 84,103,132,247, 24, 91, 32,101, 98,181,253,104,163,100,165, 49, 7,156,
+177,140, 49, 98, 20,236,108,207, 20,138,196,233,150,140,201,133, 70,195,243,225,128,159, 54,108, 55, 91,162, 77,184, 67, 32,148,
+ 13, 93,219,225, 82,166,215, 13,222, 57,166, 16, 24,102, 81,233, 6, 63, 49,140,103, 92,219,242,242,229, 75,118, 86,145, 82, 64,
+ 41,205, 56,142, 28, 30, 31,217,108,183,108,239,246,224, 12,159,126,120,199,233,221,179, 32, 51, 99,224, 60, 14,100,165,216,220,
+108,105, 82, 68,197,153,155,251, 59,190,251,237,239,216,191,125,195,249,124,226,240,227,123, 54,205,142, 70, 59,254,252,215, 71,
+254,247, 95,126,224,171,111, 94,243,155,111,190,225,240,248, 19,199,113,160,132,204,207, 31,158,248,243,199,103, 94,190,124,201,
+205,118, 39, 52,192,148,152,194,204, 56,141,204,179,199,117, 29,221,110, 67,223, 53,220,111, 58,186, 78,115,243,213, 61,251,175,
+ 95,161,138,193, 52, 6,101,234, 75,161, 84,122,156,170,228,185, 82, 36, 58, 83, 93, 29,172, 44,233,108,249, 51, 75, 88,206,161,
+130, 41,212,170,120,191,238,120,129,213, 46,181, 76,214, 86,203, 91,201, 43, 91, 66,246,244,245, 80,205, 43, 75,109,197,173,126,
+ 54, 10, 95,237, 61,250, 42,225, 77,132, 81,230,202, 59,191,252,251,235,207, 84,234,219,234,203,207,184,160, 62,175, 61,234, 75,
+ 55, 95,114, 89, 85,199,169, 58, 70,168, 22, 40, 83, 87, 13, 42, 47, 65,229,212,107,180, 56, 5,170, 24,112, 41, 10,116,181,182,
+229,140, 41,170,134,204,200,138, 80,254,172, 34, 5, 79,142,129, 97, 28,249,244, 60, 48,120,143,203, 22,173, 69, 68, 60,165,132,
+193,144,189, 97,244, 19, 69, 65,219, 26,114, 9, 76,135,196,115,237,208,151,220,140,214, 90, 58, 43,156,239, 18,234, 90, 44,165,
+ 74,150, 44,168,162,105,157,163, 49, 48,123, 89, 47, 24,171,232,173,133,141,194,110, 90,166, 41, 49,123,143,115,160,235,115,219,
+119,150,182,179,116,198, 49,250,192,243,156, 80, 69, 52, 75,110, 39,221,232,138, 65, 45,224, 71,143,174,245, 80,107,165, 27, 23,
+126,137,162,168, 74, 9,180, 50, 29,138, 17, 58, 43,233,108, 7, 34,177, 10,233, 98,150, 34, 78, 91,203,198, 88,188,175,160, 50,
+196, 45,164,146, 76,132,138,210,194,195,168,241,181, 74, 41,178,161, 66,182,164, 11,182, 85,245, 96,209, 43,202, 57,231,130, 53,
+142, 82,253,233,130,202, 13, 40, 29,209,122, 67,244,161, 54, 27, 11,215, 72, 87, 81,109, 13, 57, 82,151, 80, 27,148,144, 50,173,
+173,110,137, 2, 77,114, 53, 36,166,173, 63, 91,124,241,202, 40,168, 43, 79,205, 18, 81,171,214, 17,188,224,141,101,210,100,140,
+ 20,161, 49,139, 5,207, 45, 49,170, 81,175,144, 33,171, 45,227, 56,241,226,245, 93,197, 56, 71,168,171,211, 24, 2,169, 68,172,
+234, 42,138, 93, 24, 20, 90, 11,185,243, 18, 40, 36,172,150,178,164, 48,166,130,210,117,202,150,192,230, 4, 69,107,154, 74,172,
+ 82,214, 18,207, 3,227,233,196,237,171, 87,116,109, 39,226,140, 26,142, 18,139,116,213, 18, 53, 23, 43, 1, 78, 58,115,117,245,
+ 16,134, 5, 23,155, 5, 32,144,115,161,169, 21,208, 60,207,148,172, 80, 74,224, 0, 57, 38,238, 94,190,224,246,126,207, 60,143,
+ 60, 62,200, 72,187,105, 44, 99, 24,137,177,208, 59, 71,136,129, 57,102, 54, 93,131, 10,137,199,227,145,144, 4,220,226, 76, 67,
+ 8,129,113, 26,235,107, 78, 4, 6,165, 20,180,211,248, 36,106,209, 82,164,224,208, 10,186,190,163,117, 13,164,194, 60, 77, 16,
+ 21,110,107, 9,200, 11, 76, 27,205, 56, 79,188,126,253,150,127,254,215,223,243,211, 95,126,224, 56, 13,188,126,243,150,135,247,
+159, 48,219,142, 23, 95,189,229,227,167, 79,124,252,219,143,149,210,165,192, 42,118, 55, 59,198,231, 39,186,253, 6,159, 3, 57,
+ 68,252, 60,115, 30,230,202,144,150,100,164,190,181,244,155,158, 33, 6,246, 70,196,113, 79,167,145, 23,219, 14, 75,198, 71, 72,
+218, 16,146,248, 65, 59,167,121,246, 1, 99, 20,237,166, 5,163, 40, 33,210,166, 68, 72, 9,147, 51, 42,195, 48,100,142, 51, 36,
+ 91, 83,224,172,150,145,123, 89,110, 0, 67,231, 44,183,155, 13,251,198,208, 89,199, 24, 10, 99,140, 82, 80, 56,139, 51,134,182,
+177,108,186,142,231,211,153, 16, 18, 89, 9, 34,183,107, 27,110,119,123,137, 19, 13, 9,107,245,186, 63, 43, 89, 16,156, 56,133,
+ 51, 98,221, 72, 68, 20,142,105, 72,168, 94, 0, 17, 22,137,109, 77, 9, 92,223,224,148,101, 26, 71,230, 16,176, 93,195, 93,219,
+ 17,203,192,172, 3,126,179, 37,234,204, 94, 53, 40,163, 25,231,204, 49,121, 26,219,176,233, 27,162, 74, 60, 63, 30,201, 58,242,
+242,238,158, 48, 6,158, 30, 78,184,182,229,230,118,143,177,138,211,211, 3, 31,126,248,153, 24, 18, 37, 68,230, 97,102,156, 2,
+119, 47,110,233,108, 65,249,137,253,205,150,175,126,251,107,182,223,190, 36,251,137,135,191,252, 13, 99, 21, 54, 21,254,254,241,
+129,255,252,235,123,110,111,182,252,203, 47,223,114, 58,126,228,249,249, 9, 19, 34,239,159,207,252,233,253, 39,218,221, 13,175,
+ 94,222, 19,226, 36, 69,232, 60, 49, 79,158,147, 15,148,198,176,219,245,244,206,113,219,117,116,155,158,253,235, 59,238,126,249,
+ 21,166, 40, 76,107,192, 44, 99,103,189,122,188, 65,232,112, 75, 14,117,201,106,213,163,203, 24, 93,198,124, 50, 78,189, 40,122,
+151,238,242, 90, 56,183, 88,217,114,142,245, 80, 83, 87,182,182, 10,156,201,151, 0,140,101,160,190,122,194, 21,159, 41,192,175,
+199,225, 95,114,219,115, 73, 43, 78,228,203,255,255,117, 68,229,245, 33,190, 28,248, 11,240,101,241,164, 47,118,180,146,178,136,
+162,106,192,197, 26,216,147,101,220, 76, 29,203, 94,147,229,150,117,194,186,221, 44,153,172,193,164,234,227, 55, 18,154,162,114,
+ 65,101,177, 66,230, 34, 93,115,201,137, 28, 43,120,101,158, 57,156, 70, 62, 62, 14, 36, 10, 91,235, 48,198, 49,101,152, 19,164,
+ 40, 20,185,162,103, 26,167,105, 90,225, 11,248, 33,114, 28, 6,252, 24, 48, 42, 99,141,195, 57,135,179,138,146, 98,205, 69,207,
+235,228,178,113, 14,147, 35,206,213,248,234,117,252, 34,123,219,162, 5,142, 69, 76,232, 48, 11, 18,219, 24,116,105,113,173,102,
+211,239, 48, 58, 51,134,200, 48, 7, 54,214,209,244, 13,198, 72, 82, 99,206,162,167, 17,102,129,102,152,211, 10, 42,178,110, 41,
+172,162,140,162,139,164,119,222, 52,142,251,190,225, 48,141,124, 26, 35, 99,144,107,216, 53,154,201, 7, 66,150,140,115, 82,146,
+162,197,153, 10,181, 41, 24,147,208, 90,182,207, 69, 9, 79, 34,198,171,200,239,196,186,167, 95,160, 71, 49, 70,138,190,144,220,
+ 84,109,185,173, 85,149,209, 80,149,223, 90,184, 42,167, 97,252, 66, 10, 89, 87, 80, 70, 60,225,164, 37, 69, 45, 65, 54,164, 10,
+184, 81, 8, 30, 89, 41,133,213, 22,171,228,126,201, 41, 99,108, 35, 81,223,115,141,125, 94,146,230, 22,205,104, 94,248, 43, 53,
+ 33,174, 78, 41,163, 18,177,156,179, 92,162,116, 43, 34, 29, 5,195,233,180, 82, 31, 5,212,132, 92,147,202, 30,112, 27, 39, 22,
+103, 83,115,217,131,208,231,204, 26, 75, 43,150,110,169,204,235, 53, 51,122,101, 77, 89,165, 20,141, 49,180, 93, 43, 66, 57,163,
+249,244,124, 98,156,103, 94, 54,142,182, 19,222,246,249,124, 38,214,199,211, 54, 13, 5,136, 62,160, 26,135, 6, 98,244, 43,114,
+ 49,171, 43,201,237,146,215, 43,240, 92, 84, 44, 12,243, 44,129, 0,232,122,176, 43, 94,220,236,185,185,217,242,240,238, 35,159,
+ 62, 60,136,151, 79, 43,158, 83,160,111, 45,206, 88,124, 12,160, 53,206, 9, 34,245,116, 58,203, 78,176, 10, 11, 78,167, 51, 62,
+214,248,192,172, 4, 70, 34,203, 40,230, 41,172,216, 88,157, 21, 6,104, 55, 45,198,105, 82, 12,156,171,213, 75, 91, 43,144, 29,
+ 39, 95, 66, 76,133,127,250,215,127, 38,248,153,247,127,249,129,151,223,125, 77,240,145,201, 79,124,245,253, 55, 40,171,249,240,
+215,191, 19,206,103,186,237,134,108,161,105,165,186, 30, 78, 39,250,215, 47, 24,207, 3,186,192,227,195,137, 57,200,196,195, 24,
+ 75,163, 69, 71, 16, 74, 70,151,204, 84,224,253,195, 51,206, 53, 24, 32,134,128,207,138, 98,140, 8, 99,140,101,200,145,168,197,
+ 62,166,141,102,154, 71, 92,184, 68, 8, 10, 36,164,112, 24, 61,147,220, 57, 18, 79,168, 36,229,169, 40, 69, 65,211, 91,195,205,
+182,227,182,179,180,206,212,168,218, 76,111, 45,214,181,104,163,232, 26,203,221,126,199,113, 56, 75,138,153, 18, 34, 96,219, 54,
+236,182, 27, 17,108,216,130,211, 70,190,243, 5, 40,163, 53,217, 25, 70,239, 41, 37,179,233, 90,169,212,115, 17,252,238, 52,163,
+141,199, 26,197,206, 25,134,232, 57,143, 69,190,103, 20, 37,102,230,195,192,167,198,115,179,217,160, 76, 96,154, 38,230,121, 67,
+222,111,177, 78,163, 98, 97,156, 61, 7,165,185,189,217,179,237, 55,140,243,192,227,211,137,121,136,232, 10, 24, 82, 27,199,241,
+124, 36,122,207,207,127,255,137, 48,120, 98, 40, 76,179,231,233,112,100,179,235,233,123,135, 33,177,239, 91,190,250,245, 47,185,
+251,238, 23, 52,214,240,225,135,191,131, 31,216,180,123, 62, 62, 30,249,223,127,124,135,235, 12,255,254,171, 95, 97, 98,226,227,
+227, 71, 84,142, 28, 15, 35,127,248,251, 7,138,182,188,125,125, 47,194, 41,165,137,227,200,241,120,100,152,103,138,133,254,102,
+203,166,107,184,239, 58,246, 93,195,238,118,207,139, 95,127,143,117,173, 56, 68,244,130,165, 52, 85,212,150, 46, 99,194, 74,132,
+ 19,209,210,101,159,157, 75, 94, 73,109,186,142,105,203, 21,231,125,185, 47, 46, 7,122, 90, 69, 71,168, 58, 10,173,182,152,149,
+224,182,100,150, 43,209,186, 92,236, 64,229, 50,166, 87, 95,218,204,248,172,235, 47, 69,246,232,215, 7,247,114, 8,127, 38,118,
+227,243, 61,191, 76, 16,210,103, 69,194, 37, 95,188,142,223,209, 87, 17,177,245, 64,202,233, 18, 90,179, 20, 10, 90, 14, 11, 85,
+150, 21, 77, 21, 71,229,203,212, 80,166, 21,117, 50, 66, 70, 23, 72, 37, 17,163,176, 22,102,239,193, 39,166,105,226,105,152,248,
+244, 52,161,140,102,223,117, 96, 28, 9,240,163,172, 26, 99,140,132,156,104,218, 22,215, 88,148, 42, 2, 95, 58,205,204, 62,208,
+ 88, 48,166,193, 53,182, 82, 41, 35,202, 74,136, 86,200,194,210,112,117, 29,106,179,166,132,132, 82,137,148, 53,169, 68, 40, 70,
+ 24,247, 69, 24,233,157,177,116,206,161, 82,213, 11,145, 48, 78, 65,137, 76,115, 34,149,196,102,211,209, 55,173,128, 90, 82, 21,
+183,214, 9, 75, 44, 50,205,136,126,233,104, 51,202, 84, 11, 40, 17,165, 44, 57, 73, 81,161, 44,152, 77,195,222,101,148,110, 56,
+142,158,199,243,140,247,129,146, 5,154,147, 64, 26,167, 44, 64,168,198,170, 26,103,123,161,205, 81,144,102, 75, 21,138,214, 56,
+ 93, 69,114, 57,175,187,233, 82,105,122,170, 90,225, 74, 22,123,172, 64,167, 76, 29, 10, 21,193,240,106,141,181, 2, 38,203, 69,
+ 34,118,149, 54,178,234,201,162,131, 48, 90,163, 84,148,245, 81,182,235, 94, 61, 23, 73,121,203, 85,160,166,149,184,144, 40, 50,
+ 49,201, 37,136,109,206,167,122,134, 45, 88,220,106,245,252,114, 44,191,116,210, 69,173, 63, 95,105,181, 90, 75,151,168,239, 88,
+139,125,107, 52,126, 25,153, 59, 75,136,146,216,182,144,108,180, 17,157, 66, 81, 21, 48, 87,215,108, 5, 69,209, 90, 0,102, 37,
+ 93,116, 98, 85,195, 96,181, 54,130, 50,108,220, 26,246, 62,143,103,114, 72,236,110,247,184,214, 81,162,188, 84, 23,235,131,235,
+ 28, 37, 21,166,243, 72,223,119, 43,133,109,177,169,196,156,185,138,175,149,138,105,217,127, 77, 1,159, 51,177,128,171,187, 63,
+215, 91, 94,222,223,210,184,142, 15, 31,159,152,231,129,253,221, 29,115,206,210, 41,223,190,192,106,195, 41, 78,180,219, 22, 99,
+ 20,167, 39, 73,183,201,249,178, 63, 28, 43,122, 83, 21, 41, 24, 4,242, 45, 9, 69, 41, 37,116, 46,232, 36, 15,119,179,105,104,
+183, 50,133, 8, 49, 50, 12,158,126,187,161, 44, 83, 9, 37,187,182,215,223,126,205,235, 95,252,130, 31,255,207, 31,200,186,112,
+247,250,158,191,252,159, 63,115,115,123,203,221,155, 87,188,123,120,224,253,187, 15,216, 74, 13,202, 70,177,237, 58,134,227,145,
+168, 52,251,221,142, 79,159, 62, 17,124,226,124,158,106, 60,158, 40, 43, 55,189, 99,187,113,204, 49,210, 91,197,251,135, 51,126,
+ 14,236,119, 27, 98,242, 34, 68,180, 13,161,200,168, 84, 59, 67, 36, 98,156, 67,107,141,159, 2, 49, 76, 52, 90,136, 90,130, 94,
+202, 28,166,153,195,236,209,155, 78,138, 20,228, 48,205,213, 59,218,106,195,237, 70, 14,150,109,227,240, 49, 16,124,160,113, 45,
+109,227, 36,129, 78, 43,110, 54, 61, 62,132,122, 56,151,170,188,212,236, 55, 61,187,190,147,170,115,246,104, 99, 49,117,125, 35,
+ 73, 79, 34,102,113,147,103, 58, 31,177, 74,225,218,150, 92,121, 4,195, 48,161,157, 32, 98, 91,157,112,206, 18,114,100, 28, 2,
+157,117, 40, 20,141,210, 60,159, 7,108,206,244,155,142, 84,224,195, 56,113, 62, 79,220,221,110,105,116,198, 42,131,143,145, 79,
+143, 15, 4,191,165,221,108, 8, 99,224,221,135,159,185,187,217,243,242,245, 45,218,128,159, 70, 62,254,249, 61,243,224, 81, 25,
+230,121,230,116, 62, 81, 52,244,125,139,203,153,214,105, 94,127,255, 13,111,126,245, 29,183,219,142,199,247,239, 24,158,159,232,
+157, 99, 24, 51,255,249,183, 7, 98, 8,252,235,111,190,167,183,134, 31,255,241, 19, 41,100,124, 44,252,231, 63,222, 51,250,204,
+ 47,190,125,139, 89,196, 59, 89,241,244,248,200, 56,121,130,134,102,211,209,181, 45,155,166, 97,215,181,244, 77,195,139, 95,126,
+ 69,211,183,148,162, 49, 85,220,116, 57,228,190,204, 6,191,136, 80,175, 92, 69,162, 2,174, 24, 81, 85,243, 16, 36,246,118,113,
+165, 95,186,221,203,168,187,102, 99,231, 64,138,185,238,190,175,132,108,229,194, 68,207,165,134,100,214, 72,213,107, 45, 89, 81,
+151,159,125,193,103,202,231, 48,122,157,131,126,246,226,251, 18,245,122, 61,134,191,238,224,115,206, 43, 30, 83,125, 17,246, 66,
+185, 88,213,114, 13,231,225,138,253, 94,174,146,180,202,154,225,125,201, 15, 79, 84,245,122,145, 2,120,117, 8, 84,150,253, 97,
+ 26, 25, 78, 51,243,232, 9, 57,161, 18,124, 58,159,121, 58,122,172,214,108, 58,185,151, 79,126,194,150,134, 28, 50, 62, 68,124,
+ 12,184,206,210, 54, 86,162,148,167,192,105,152,240, 33, 10,178, 86, 43,140, 51, 40,107, 24,253,140, 81,154,166,107, 68,123, 84,
+187,207,190,179, 20, 18, 42, 20,114,182, 24,212,154,194, 39, 97, 43, 1,141,194,181, 29,155,219, 45, 22,199, 52,198, 53,248,195,
+ 24,225, 68,104,173,177,141,197, 26, 67,202,153, 16, 18,147, 23, 97,168, 94,176,179, 69,166, 62, 57,200,110, 86, 87,155, 27, 42,
+203,225,165, 33,164,194, 57,204, 52, 57,243,244, 28, 69,159,144, 69,221,190,105, 4, 47,254,240, 52,130, 86,178, 2, 93,108,173,
+ 89,213,169,131,172, 79, 23,117,118,169, 8,240,152,202,122,159,164,148, 25,198,136,235,204,202,209,207,181, 57, 51, 90, 38, 0,
+ 37, 83, 15,112, 57,212, 83,229,208, 55,109,131,210,226, 40,160,104, 82,202, 85,180, 43,135,184, 90,119,221,250,162,181, 80,106,
+197,195, 46,232,229, 80,237,114,198,168,122, 77,106, 40,152,213, 92,197, 64,174, 72, 92, 85,212,138, 66,254,220,192, 89, 86,241,
+232, 34, 70, 93,138,224, 82,157, 1, 83,138, 12,231,137, 93,223,115,174, 22,209,174,109,137,209, 19,227,213,116,171, 92,160, 54,
+203, 74,189,212, 3, 79, 91, 39,106,251, 36,212, 65,140,172, 62, 74,142, 88,173, 45,182,105,113, 11, 56, 36,101,252, 52,209, 24,
+ 77,191,221,210,108,234, 95, 22,164,243,113,219, 13,219,253,158,236, 19,243, 52,177,219,111,101,223, 94, 22,164, 98,134, 44,149,
+ 99, 89, 73, 82,213, 95,153,243,255,199,214,123, 52, 89,114,165,105,122,207, 81,174,174,136,136,148, 72, 36, 74,117,245,144, 51,
+ 70,227,112,197, 37,151,252,185, 92,112,197, 29,255, 0,185,160, 53, 73,227, 76,119, 21,128, 66, 66,164, 8,117,165,139,163,184,
+248,142,251,189, 89,213,101, 6, 51, 88, 33, 51, 50,242,134,251, 57,159,120,223,231, 37,107,203,228, 3, 49, 39, 26, 99, 80, 41,
+ 81, 53, 53,175, 95,190, 68, 1, 31,239, 31,201, 74,209, 84,142,253, 48, 98,146,230,102,181,230,216,159,137, 64,237, 28, 41,193,
+208, 15,248, 24, 11,118, 48, 19,147, 39,204,187,112,145, 83, 72, 55, 98,192, 39,193,215,170, 66, 21, 66, 41, 86,171,142,170,114,
+ 24, 3,199,125, 79, 8, 30, 85, 85,101, 87, 34,150,134,238,102,197,187,223,125,199,225,233,153,143, 63,253,194,239,255,248, 7,
+166,209,147, 83,100,253,226,142, 41, 78,236,190, 60,138,170,221, 26,180, 19, 88, 72, 85, 55,140, 79,247,116,183,107,233, 78,125,
+224,233,120, 98,154,124, 97, 82, 27,172, 85,108, 86,205,114,128,142, 83,226,233,233, 68,219,200, 58,195,135, 68, 86,146,247,236,
+ 99,177, 20,105,217, 21,233,172, 56,143, 19,126, 24,233,172, 17, 14,126,241, 44,134,201,243,124, 26,136, 86,212,240,179,152, 34,
+148, 7,188,178,154,219,174, 97,219,212,116, 78, 51,250,200, 52,121,234,186,162,170,157,216, 64, 20,172,186, 6,227, 28,187,231,
+231, 43,129, 85,164,174, 43,154,166,194, 58, 35,120, 72,107,241, 62,200,223, 73,107, 54,221,134,213, 77,199,249,116,198, 57,199,
+202, 9,109, 47,165,132,177,134, 42, 59,134,113,226,112,244,108,214,154,172, 34, 58, 37, 26, 39, 25,201, 99, 16,219, 77,101, 44,
+173, 54,156,250,129,202, 26,172,213,152,144,120,252, 50,114, 56, 29,184, 91, 55,116,109,199,182,235, 56, 12, 3,187,221,142,110,
+204, 76,253,145,221,254, 64,213,173,248,118,189,101,211, 54,124,249,249, 87,206,187, 19, 74, 57, 82,142,156, 79, 7, 78,231, 51,
+155,187, 45, 78, 43, 90,157,121,247,254, 29,175,254,244, 29,245,118,205,225,241,145,253,195, 61,181, 49,196, 41,242,215, 31, 62,
+242,120,216,243, 31,127,247, 29,175,183, 91, 62,126,248,153,113, 28,200, 89,241,255,125,255, 27, 31,159, 78,188,127,255, 45, 77,
+211,146, 73,212,198,242,249,243, 47,156,134, 51, 94, 41,170,182,101,181,106, 88, 59,199, 77,219, 80,215,150,187,223,125, 67,125,
+119, 67,138,197, 66,164,175,132, 93,243,190,177,188, 59,169, 88,204,140,113,151,203,145,139,199, 59, 21,136,202,236,153,157,119,
+206,203,206,189, 28,166, 95, 7,188,164,101,172,153, 75,183,175, 10,251,122,185,224, 83,153, 2,112,201,166, 6,181,136,201,174,
+ 59,238,185,216, 80, 75, 82, 92,121, 98,202, 37,125,233,224,191,222,165,207,249,211,249,239, 8,111, 75,108,165,214, 11,157, 50,
+ 95,165,202,169, 60, 35,115,243,130,236, 92,118,249,179,181, 46,166, 5,171,171, 75,177, 35, 26, 61,249,187,133, 40,233,113, 70,
+131,159, 2, 57, 36, 14,167,158,253,241, 76, 24, 36, 1, 49, 42, 24,199,192, 62, 68,172,169, 88, 55, 21,144,232,199,128, 45, 90,
+134, 97, 28, 25,199, 17,235, 12,206, 57, 66,136,194,116,159, 38, 6, 31,202,133, 38,190,102,149,197,118,166, 77,201, 88, 79,130,
+ 45,142, 83,164,233, 42, 42, 7,201,103,136, 26,159, 60,104, 83,114,187, 41,158,110,121, 70, 92, 93, 99,156, 20, 20, 49, 75,214,
+185, 42, 93,171,171,237,114,145, 76,147,216, 79,167, 33, 9,115, 50,137,253, 80,207,113,161, 83,102, 44, 23,184,201,174,232,120,
+ 60,174, 42,148,198,148,112,206,176,110, 43, 76, 78,248, 0,202, 6,108,134, 14, 77, 93,105,180,211, 60, 61,159,217, 29,123,154,
+214, 81, 57,161,232,201,207, 75,152, 38, 24, 41,244,117, 9,223,153,188,232, 31,140,150,149,133,159,147,254,148, 94, 50,219,107,
+ 83, 56, 13, 49,160,180,132,182, 40,165, 36,252, 42, 38,166,113, 98,213,182,139,195,130,168,240, 83, 16,229,189, 45,231, 63,178,
+255,151,201,211,140, 88, 70,186,233,101,181, 20, 73,132, 34, 70,211,139,168,116,198, 74,207, 2,208,153, 83, 48,179,255, 47,118,
+210,203,234, 72, 27,153, 62,207,147, 41, 83,200,118,105,193,253, 70, 72,138,243,185,231,102,123, 35, 52,215, 50,221, 52,198,202,
+218, 33,197, 50, 93,184,132, 87,201, 70,159, 5,208,164,203,218,105, 46,190,243,236, 86,148,103,192, 66,116, 84, 85,181, 28, 40,
+253,185,103,204,194,191,173,172, 99,236, 71,137,248,204,153,166,107,168,219,154,225,216, 75,213, 85, 85,244,253,176, 84, 38,233,
+ 10,229, 56, 99, 30,208,165,155, 8, 1,175,196,187,153,146,236, 31, 80,176,217,108, 88,221,221,208,143, 35,207,207, 7, 92, 85,
+ 99, 45, 12,211,196,170, 93,163,181, 98, 56,143, 84,141,163,210,154,211,177,231, 56, 14, 37, 89,170,136, 19,114, 34, 41, 25, 95,
+173,156, 99, 26,197, 34, 17,202, 15, 71,130, 14,228,165,110, 43,197,170,173,177,214, 50,134,192,241,121, 15,181,195,214,149, 20,
+ 30, 49, 96,215, 45,111,127,247, 29, 42,103, 30, 63,221, 83, 25,205,139,215,111,120,126,254,194,234,102,131,169, 29,211,121,100,
+255,248, 76, 72, 9, 29, 13,174,170,176,181,133, 56,145,124,160, 94, 53,140,125, 79,156, 2,199,195,137,144,226,146,176,211, 85,
+ 21,235,174,198, 7,121, 65, 62, 61,157, 73,113,164,105,215, 4,239,229, 0,176, 14,147,139, 69,162, 32, 15, 51, 48,141, 3,207,
+227,196, 90,107, 26,235,176,243,161,233, 19,207,195,196,190,143,180,219, 21, 74, 91,178, 74, 76,133,176,230,140, 97,211,214,172,
+ 27,203,182,174,152,162,231, 56, 77,172,171, 74,130,116,180, 33,102, 69,231, 12,155,117,203,195,110,143, 47,212, 44,200, 84, 77,
+ 85,172, 86, 25, 31, 60, 25, 45, 47,234,204, 76,182, 90,194, 71, 90,199, 42,183, 76, 74, 86, 7,206, 57, 78,195,153,113, 24,104,
+186, 90, 84,236,249,128,159,196, 54,232,201,196, 33, 80,107, 45,187, 56, 20, 67, 8,104, 37, 9,123,199,253,200,237,182,161,182,
+ 9, 85,103,158,119, 39,166,211,196,106, 61,242, 98,237, 89,175, 59, 30,134,145,207,187,143, 52, 78, 83, 85,142,199,253,145, 31,
+254,246, 27,175,182, 27,250,135, 35,214, 56, 66,204, 12,253,192,110,183,167,238, 58, 42,107,232,116,230,205,251, 55,188,253,195,
+183,172,183,183,248,241,204,195,211, 35, 54,103,180,138,252,244,241,196,143,143,207,252,249,219,111,248,238,219,119, 60,125,252,
+141,211, 81, 50, 6,190,255,241,103,126,249,237,145,151,111,111, 89,223,172, 73, 25, 58,219,240,252,248,153,253,243, 51, 30, 5,
+181,164,189,173,234,154,187,182,161,107, 27,182,239, 94,177,122,247, 86,144,184, 51,175,126,241,147, 95,117,194, 87,157,185,190,
+ 18,165, 93,239,193, 23,180,106,137,123,204,197,215,154,230,125,223,223,239,173,243,156, 36,154,151, 28,241,188, 12,215,211,162,
+ 10, 87, 23,131,132, 92,248,139,226, 56, 45,234,241,107,140,235,117,183, 12,106, 97,207,255,123,251,246,127,176,157, 93,143,231,
+249, 26,211, 58, 7, 95,204, 17,165,186,236,186,153,109, 94,179,121, 78,125,237,211,207,170,192, 97,146, 90,210,178, 82,150, 29,
+111,136,129,113,232,197, 54,100, 50,211, 24,240, 67,226,220, 15, 28,142, 61,126,140,232, 36, 23,193,144, 18, 81, 41, 92, 46,147,
+ 37,107, 57,140,189, 36,249,101,197,190,239, 57,143,190,124, 45, 67,152, 60, 33,228,226,230, 16,113, 84, 76, 25,157,228,242,203,
+104, 92,101,208, 86,178, 49,252, 48,113, 58,120, 42,163, 89, 53,150,170,214,248, 65, 19,226, 0, 49,200,152, 53, 35, 49,196, 74,
+203,106, 69, 11, 51,156, 84, 4,130,115,178, 93,217, 33,171, 50,134, 21,160,159,136,176,236,186,192,207,138,198,201, 88,200, 90,
+113,126, 10, 76,202,147,117,198,228, 10,173,101, 61, 99, 77,189, 8, 23, 55, 93,205,221, 86,118,187, 83,128,144, 52, 78, 71,146,
+205, 76, 41, 2, 22,189,237, 48,102,100, 55, 76,120, 63, 81,215, 78,240,222,243, 90,168,208, 5,141, 49, 84, 21,140, 99, 44,208,
+ 50,201, 86,159,145,197, 90, 91, 66,202,248,152,168,139, 64,108, 10,194,169,183,214, 10,101, 70,201,243, 53,141, 3, 90,223,161,
+ 80, 24,196, 35, 62,197,132,174, 26,201,122, 72,242, 76,207, 24,243, 60,135,187,204,239, 70,150,231, 73,165, 68,158,100, 50,164,
+140, 91, 96, 50, 33,148,196,184, 57,238,248,234,157,152, 99,129, 53, 23, 10,162, 82,170,192,217,132,193, 62, 95,214,122, 86,192,
+231, 76, 12,145,166,169,232,135, 17,180,188, 47, 49, 70,180,181,232, 73, 49,157,167,242,251,230, 68,185,162,128, 23, 36, 96, 9,
+ 34,210,104,149,100,178, 82, 58,125,157,196, 25,128, 68,211, 26,154, 70,172, 99,179,234,175, 63, 30,169,140,149, 61,187,117,236,
+134,145,190,239,165, 90, 50, 22,107,106,206,254, 32,124, 91, 83,145,194,105, 25,219,229,152,200, 49,139,248, 33, 9, 2, 48, 23,
+ 15,179,210, 74, 96, 44,177,140, 62, 68, 98,192, 55,223,190,227,102,187,226,135,191,252,141,167,167, 71,238,238,182,244, 62,226,
+167,145,151, 47, 55,248,148,232,241,188,168,165, 42, 59,159,207,197,211,151, 47,227,182,242,225,214,149,165,209, 21,147,159, 68,
+184,193,101, 60, 47, 30,211, 68,229, 28,202,201, 3,213,159,206,156,134,158,237,102,139,117, 6, 63, 6,162,209,188,126,247,150,
+166,105,248,248,233, 19,211,169,231,237,119,223, 65,231, 24,127,238, 49,117, 37,126,239,144,120,126,218, 83, 17, 81,218,226,154,
+ 6,235, 52,193, 79, 36,171, 89, 55, 43,190,236,191,112, 58, 79,156,207, 35, 74, 41,156, 54,212,214,112,187,234, 72, 81, 14,154,
+126,138, 60,237, 7,154,186, 38,145, 24,189, 71,161,177,133, 85, 30,162,204,236, 99, 76,248, 24, 24,198,128,203,153,218, 25,180,
+138, 24, 35, 97, 37,189,159,120, 30, 71,108,109,113,214,146,141, 28, 74,158, 44,251,251,166, 97,221, 88,214,117, 67,140,145,195,
+105, 98,221,214,180, 77, 85, 24, 15,138,160,225,229,221, 29,207,253,153, 97,156,228,243,213,138,218, 89,214,221,170,160, 19, 51,
+253, 48,149, 42, 84,178,205,149,213, 84, 93, 67, 85, 87,132,193, 99,146,166,173, 91,146,139,184, 54,176,190,109, 57,247, 35,251,
+243,137,206, 52,160, 12,143,143, 15,197, 48,161,241, 90, 32, 28,117, 72, 84,206, 96,157, 89, 66,109, 78,126, 98,218, 79,108, 91,
+199,186,110, 80, 27,197,113,240, 60,157, 18,207,167, 51,239,134, 27,172, 81,196, 67,207,176,169,233,182,183, 4, 31,249,252,249,
+129,225,215, 39,106,163, 48,206, 17,130,231,233,225, 1,239, 44,109, 83,209,101,199,171,111,214,124,247,251,247,220,188,122,133,
+ 53,129,221,207, 95, 80,227,153, 70,175,248,219,175, 79,124,255,233,145, 63,188,121,197, 31,222,127,195,241,241,158,167,231,123,
+ 18,240,183, 15, 31,249,203,175, 95,184,189, 93,243, 98,187, 37,197, 72,221, 54,140,187,103, 30,239, 63, 49, 41, 77, 82,150,182,
+109,168, 42,197,186,118, 52,109, 75,251, 98,195,205,183,175,196, 86,100, 10,240, 66,165,197,154,165,245,191,167, 0,159,139,228,
+ 36,150,182, 43,107, 26,115, 28,170,214,101,175, 92, 64, 44, 5,210,113, 13, 98,153,169,105,115, 65, 32,231,148, 46,255,126, 69,
+166,154,247,127,243,168,113,158, 10, 44, 1, 39,151,168, 83, 22,116,108, 42,227,197,175,199,234,115,247,252,247,216,213,185,235,
+214,165, 83,201, 87,137, 95,151, 85, 64, 46, 17,148,169, 20, 40,242,253, 46, 50,231, 60,179,133,100, 28, 60,127,173, 24, 69,237,
+173,116, 81,191,147, 25,163,176,235,251,211,192,177, 31, 88, 89,133, 39,227,163, 39,250, 68,152,224, 60,156, 9, 83,198,160,105,
+219,154,195, 48,200,142, 55, 38,116,202,220,180, 53,189,143,196, 0,218, 38,206, 83, 42,169,144,242,153, 76, 41,112, 28, 70,114,
+176, 84, 86,194,147, 78, 83,160,177,150,202, 25,218, 70,118,237, 83,138,244,125,144, 48,145, 16, 73, 38,113,247,226,150, 85, 87,
+145,189,240, 62, 68,168, 39, 23,120,206,166, 52,100, 18,190,163, 84, 37,249,223, 89,244, 64,178,145, 80,139,208, 49,169, 11, 78,
+ 87, 43,139,113,115,176,136,112,250,151, 6, 33,100,217,121,151, 66,202,152,138,172,142, 40, 35, 57, 20,113, 46, 0,156,140,164,
+179, 86,104, 99,169, 48,196, 60,161,117, 4,101,136, 38, 16, 27,197, 86,137,150,168,239, 3, 49,106,114, 65, 99,104,155,137,147,
+ 34, 69,201, 49, 55, 74,212,247,166,228,136, 76,243, 20,102,153, 76,101,124, 10,132, 44, 73,105,146, 8, 44,246,223, 25,152, 19,
+ 66, 36, 5,177,179, 77,253,132, 49,150, 33,142,132,232,169, 59, 97,167,139, 53,124,238,118, 69,171,129,150,105,236,172,180,159,
+ 25,243,105, 22,156,234,242, 14,162,136, 94, 10, 88,103,236,194, 39,184,102, 42, 45,207,248, 28,220, 50,175,153,204, 37,216,101,
+ 94,165, 37, 53, 91,218, 18, 90, 89, 78,167, 51,193,103, 92,101, 56,159, 6, 44,138,160,133, 1, 47,107, 3, 3, 49,151,117,136,
+ 76, 9,172,181,178, 47,152,127, 94,101, 85, 17, 67, 17,235,169, 32, 52, 59, 25,215, 72, 55, 61,103,163,199,209,227, 54, 43,186,
+213, 26,167, 53,199,254,196, 48,122, 9,114, 89,175, 48, 86, 51,244, 3,181,177,210, 69,150, 7, 91,226, 19, 37,143, 57,229,176,
+168,241,212,108, 30,201,130, 14,141, 73, 30, 90,107,196, 82,117,123,187,197, 58,203,253,253, 35, 41, 5, 33,241, 12, 3, 14,197,
+122,213,241,124, 62,226,172,162,117, 50,158, 24,189, 84,195, 95,129, 9,148,196,173,182,206,145,209,196,226, 50,173,141,147,177,
+ 83, 1,103, 8, 44,197,149,232, 78,216,239, 14, 36, 12, 77,221,200,158,122, 10,108,223,188,224,213,235,215,220,223,223, 51, 77,
+ 35, 83,152,184,123,253, 10, 19, 51,135,253,142,187,183,111,105,234,142, 95, 62,252, 36,163, 18,159, 49,157, 65,151,128,152,233,
+124,166,219,172, 37,129,109,154,216, 31, 15,144,101,204,232,156,162,107, 45,235,174,101,156, 38, 98,204, 60, 31, 78,100, 34,181,
+107, 57, 78, 3,125,206,108,172,147, 49,123,138,248, 28,201, 65,137,128, 39, 69, 66, 78,116,198,208, 24,141, 43,100,168,105,240,
+156, 6,241,180,215,181, 3,147, 9, 42, 50,165, 88, 46,244,154,182, 49,172,170,138, 26,120, 56, 13,212,173,161,173,171, 2,104,
+ 80,120, 31,121,241,114,203,232, 35,187,211,185,120,163, 69,228,210,174, 87, 52, 78,130, 92,206,222, 19,148,146,236,225, 50, 30,
+170,106, 75, 93, 57,114, 20, 27, 23,218,130,138,184,202,113,179,121, 65,189,170, 57,237, 79,108,207, 61,135,221, 14,235, 32,231,
+141, 20, 22,206,161,131,194,235, 76,204,208, 79, 1,151, 21,117,109,168, 66,162, 15,145,211,144, 56,143, 19, 47,218,204,237,139,
+ 14,103, 44,231, 49,114,234, 71,126,249,244,153,237,186,195, 86, 86, 0, 53,250,136,117, 14, 59, 70,178,170, 72,218,161, 35,236,
+158, 15,156,198,137,102,179,162,117,138,187,215, 29,111,127,247, 59,218,151, 47,193,194,233,243,103,206,251, 71, 86,166,225,211,
+ 46,242,151, 15,143,188,184,189,227, 63,188,255, 22, 61,236,121,122,252, 68, 38,243,225,215, 7,254,237,183,143,212, 43,203,234,
+246,150,100, 12,173, 53,152, 16,248,245,225,129, 33, 64, 42,152,218,174,169,216, 84, 53, 93,221,208,108, 11, 96,166,174, 5,168,
+ 83,201, 40, 55,204, 21,253, 87,173,250,223, 95,232,151,231,188, 84,196, 95,193,100, 72,137,168, 40, 84, 56,233,218,116,254, 90,
+141,174,174,173,224, 87, 86,177, 69,229,126,197, 97, 79,165, 72, 79, 49,125, 37,204,227, 31,246,225,169,136,207, 74, 80,203, 21,
+245,237,223,181,162, 93, 89,219,230, 75,127,238, 86, 22, 8,206,149,174, 96, 9, 96, 89, 4,122, 95,235, 12,198, 81, 46, 42,231,
+ 76,129,245, 68,241,124,151, 17,105, 12, 73, 52, 35, 57,177,223, 15, 28, 15, 39,218,198,210,123, 69, 63, 37,226, 20, 10,132, 70,
+161,163,228,140, 87, 78, 98,164,149,134, 60,101,166, 33,210,213, 53, 33, 39,238, 79, 39, 66,134, 87,166, 98,240,153, 83, 47,163,
+ 91,227, 12,253, 40, 34, 67, 77,166,239, 71,252, 16,113,141,166,174,157,172,171,114,226,124,238,153,166,137,164,160,209,150,174,
+173,216,116, 13,171,186, 18,229,244,149, 7, 59,149, 81,117, 68,170,219,164, 34,185, 48,207, 93,229, 74, 55,174, 80,202, 22,186,
+ 93, 44,235, 17, 74,136,143,252,126, 66, 1, 11,165,153, 88, 38, 9,122, 41, 40, 4, 45, 82,214, 25, 46, 48, 5, 73,140,212, 74,
+225, 67, 66,107,104, 42, 53, 39,170,131, 41, 1,151, 42, 45,207,162,209, 6,167,161,173, 50, 90, 85,146, 60, 86,132, 98, 2, 32,
+ 50,133,245, 95,186, 99,160,118, 26, 83, 86,164, 49, 73, 70,251, 76, 15, 12, 41, 19,146,228,165,163, 23, 66,145,232,118,172, 37,
+167,204, 56, 9,171,205,148, 21,143, 53,134, 16, 3,125, 63,177,217, 38,108, 99,229,226, 47, 15,187,112,226,227,133,213, 94, 64,
+ 95,115, 51, 58,111,220,103,162,141, 82,138, 88, 38,171,186,232,172,174, 49,200, 82,124,148, 66,188,100,187,115,149,163,190,212,
+219,204, 83,182,120,177, 97,102,240, 57,113, 56, 29,233,218,154, 83, 62,203, 74,193, 26,114,156,240, 65,246,251,145,132, 65, 96,
+112, 30,177,233,154,162, 13, 80, 36,140,206,101, 42, 23, 72,121, 90, 2,137,172,179, 70, 58, 35, 45,156,220, 16, 38,252,232,169,
+111, 27,214, 93,135, 66, 49, 14,226, 57,116, 25,234,174,129,164, 24,250,158,218, 26, 98, 14,168, 36, 22,177, 24,139, 69, 45,203,
+ 8, 71,151, 11,189,184,150, 37,255, 53, 4, 66,148,253,135,181,150,174,109,185,189,123,137, 82,138,207,159,238,233, 86, 43,140,
+ 81, 76,103, 79,215,172,192, 40,250,113,164,173, 26,180,173,217, 31,159, 24, 3,130, 67,232, 0, 0, 32, 0, 73, 68, 65, 84, 38,
+137, 85, 37,171,114, 89, 23, 85,190,130,218,104,166, 40,187, 11, 99,100, 20, 59,156,134,101,231,136,181,116,117, 67,173, 13,195,
+148, 56, 63,236,168, 54, 55,216,166, 42,147, 5,203,251, 63,253,142,241,116,226,233,249,137,166, 18,241,216,221,187, 55,252,250,
+215,239, 57, 28,158,249,231,255,244,159, 56, 15, 3,135,221,158,228, 3, 42,131,107,106,178, 81,114, 72,132,200,230,197, 13, 83,
+239, 57, 29, 7,250,211, 89, 96, 16,174,145,145,111, 87, 45, 60,231, 62, 5,158,247,103,214, 93,195,148, 34,195, 16, 48, 86, 70,
+244,209, 39, 6, 47,200,200, 84,114,180, 67, 81,143,214, 78, 83,105,141,211, 21, 33, 36,206, 83,224, 24, 19,149,169,176,214, 18,
+181,102, 10, 30,173, 20,155, 34,204,218, 90, 75,163, 21,207,253,128,117,150,109,237,176, 38,163,180,136,245,110, 55, 29,171, 77,
+199,231, 79,247, 20,178, 9,168, 68,187, 90,139,205,198,104,129,200, 40, 69,229, 46,251, 93,109, 74, 88,206,224,113,197,175, 41,
+ 61,149,163,219,172,216,188, 88,137,133,111, 43,193, 63, 77,227, 56, 31,207, 84, 85,205, 52,254,138,113,134, 77, 83,115,236,123,
+137,197,213,138, 49, 6, 24, 35,171,182, 99,152, 60, 57,136, 16,228,254,220,179, 27, 38, 94,220,109,232, 86, 13,168,196,225,224,
+121,222,157,185,187,219, 82, 53,150,211,113, 79,231, 58,154,170, 69, 85, 22,140,102,191,219,243,240,112, 79,189,234, 88, 55, 53,
+119,183, 43,190,253,221, 27,110,223,190,198, 85, 16, 14,207,156,118, 7,156,178,236, 6,205, 95,126,250,153,182,173,249,167,239,
+222,162,178,231,211,151, 39,134, 62,240,241, 97,199, 15, 31,126,197,170,154,205,250, 6,235, 42, 42,107,168,156,227,243,111, 31,
+101,205, 98, 52, 85,109,233,186,154,206, 86,108,219, 21,171,205,138,151,239,223,177,222,174,192,136,255, 53,167, 88,124,213, 74,
+186,108, 65,173,241,143,255,187,176,172,103, 91, 12, 95,141, 1,227,178, 34, 73, 74, 70,130, 41,201, 94,254,186, 19,206,249,186,
+ 75,207, 11,241,237,186,253, 16, 77,140,116,237,233, 43,171,219,172, 64,191,198,181,166, 11,109,174,248,214,245,223,137,225,254,
+ 30, 52,115,129,227, 92, 58,164,235, 76,115, 84, 97,142, 47,191, 62, 21,192, 78,249,245,164, 5,240,113, 58,159,137, 49, 97,180,
+164,105,169,146,146, 38,152,106,137,229, 76, 37,221,108,127, 60,226, 99,164,170, 20, 97,138, 76, 41,211,143,137, 16, 3,235,202,
+ 97,148, 3, 29, 49,217,145,179,188,155, 41,206,116, 62,153, 98, 62,245, 61,126, 12,220,221,172, 57,140,158,251,221, 1,155, 20,
+218,105,188, 15, 18, 0, 5, 76,193,147,114,192,118,146,163, 17, 35, 28,207, 19,168, 68,200, 10,219,104, 94,173, 58, 42,101,208,
+ 38,211, 56,133, 85, 50, 86,205,186,104, 40,102, 22,127, 18, 97, 95, 42,221, 26, 42, 99,106, 7,149, 70, 69, 75, 78, 94, 56, 4,
+230, 18, 21, 59,135,124,200,165,162,139,179, 65, 19, 11,167, 77, 37,153,146,250, 16,202, 26,166,100,207, 91,100, 12,109, 77,153,
+174, 4,140,149,209,111,142,113, 89,210,196, 44,239,168,206,162, 57,208, 86,201, 29,144, 52,181, 83,160, 2, 49,105,114,214,196,
+ 40, 86,180,202,104, 66, 97, 33, 40, 20,201,136, 31, 93,105, 37,225, 89,229,162,180, 37,235,192,207,184, 94, 53,135, 11,105,116,
+ 73, 81, 51, 86,154, 59, 93, 62,159,148, 5, 96, 21,162,216, 14, 67,200,226,233,159, 29, 65, 69,112,103,180,250,187, 21, 22, 75,
+ 60, 47,153, 98, 43, 84, 37, 22, 86, 47,122,143, 57,211, 98,241,178,205,240,163, 84,214, 67,133,136, 56, 51, 16,102,251,155,112,
+ 19,132,191,175,205, 92,252,166,229,239,211,247, 3,111,238,110,121,140,123,201, 89,175, 44,131, 55,140,227, 68, 83,139, 24, 90,
+101, 10,136, 70, 45,250,144, 37, 73, 80,205,147, 6,105,252, 42,107,203, 74,212, 57, 92,125, 81,212,122, 47,137, 85,155,170,161,
+235, 90, 50,153,190, 31,202,127, 87,116,155, 13, 41, 69,198,113,164, 89,175, 36,212,161, 8, 99, 83, 17,214,204, 21,127, 74, 25,
+ 45,208, 28, 82, 76, 88,163, 9,197,190, 96,140, 84, 95,155,187, 91,110,238, 54, 60, 61, 60,113,255,240, 72, 93, 55, 76, 83,164,
+247, 19,111,110, 54,156,251,145, 24, 2,110,189, 33,121,207,216, 15,120, 31,150,195,160, 48, 48, 33,139, 29, 69, 91,197, 52, 70,
+ 66,246,172,235, 53,174,170,241,251, 29, 77,129, 28, 84,218,226,170, 10,165, 28,195,110,207, 56,142,172, 94, 56, 76, 85, 51,229,
+204,155,119,111,184, 91,111,249,151,255,251,255,164,189, 91,227,125,224,221,251,247, 52,235,150,191,253, 63,255,149,237,237, 29,
+155,151, 47,248,240,151,191, 18,125, 96, 12,158,181,214,184, 70,186,175,224, 71,170,186,162,105, 91, 62,126,126,226,176, 59, 48,
+ 77, 19, 74,105,170,202,208,181, 13,117, 83, 17, 38, 41,110,246,187, 51, 10,195,186,182,124, 57,156,153, 66,226,166,109,202, 88,
+126,100,138,177,112,144, 69,151,160, 82,166, 49, 98, 33,169, 10,220, 96, 26, 61, 71, 31, 72, 74, 81, 89, 81,215,250,146,131,189,
+106, 36,138,181,115,154, 85,229, 56,142, 61, 19,240,178,109,177, 90,198, 59, 62, 4,177,175,221,221,240,249,241, 81, 24,234,136,
+176,164,109, 26,186,166,198,149, 73,206,148,164,163,210, 90, 97,140, 60,120, 66,251, 83,101, 23, 87,201,169, 97, 52,237,106,205,
+122,179, 42,217,213, 80, 55, 13,202, 9, 3,218, 89, 71,219, 53,184, 90,243,241,215,123,234,198,161, 12, 12,163,103,156, 70, 80,
+154,126,244,140,254, 72, 93, 57,170,162,113,172, 93, 77,239, 71, 62,252, 38,163,239,174,174,232,234,154,227, 52,241,188, 63,115,
+107, 86,116,186,162, 74, 37,174, 80,107,152, 50,247, 15, 15, 80, 57,186,198,113,119,211,241,205,183,111,184,125,121, 71,163,128,
+ 48,114,122,122, 66,133,140,162,226,251,223,158, 8, 57,243, 31,191,251,142,117,227,120,252,242,137,195,241,196,253,243,142,239,
+127,254,149, 73, 91,182,171, 13, 85,213, 80, 57,205,170,174,216,237,118,124,121,120, 36,104,133,110, 44,109, 91,211, 57,203,186,
+171,104, 87, 13, 55,111, 95,178,218,110,139, 66, 89,198,129, 50, 86, 46,223, 99,217, 38, 95, 51,201,191,238,140,175,198,226, 74,
+ 0, 43, 51, 19,188,164, 70, 47,153, 15,249, 10,175, 25, 75,190,192, 5,117,121,221,113,231,175,149,185, 37, 28,227, 90,193,171,
+ 22,225,208, 21, 67, 59,167,175,190, 38, 57, 45, 59,125,242,165,171,249,199,193, 67, 94,206,145,203,126,127,198,109,170,197,114,
+247, 53, 17, 47,127, 69,148,155, 45,105,135,131,216, 44,115,206,180, 14, 98,200, 24, 37,126,246,144, 50,227,105, 36,199,128,202,
+138,231,195,158,113, 10, 24,107, 25, 39,143,198, 50,122, 25, 91,182,149, 76,196,172, 82,196, 98,125, 11, 81,186, 94,157, 21,163,
+151,243,237,228, 37,221,108,187,222,240,184,219,243,184, 63, 82, 87, 21, 74, 43,166, 32, 0, 17,149,242,194,208,115,198, 17,114,
+ 36, 76,137,172, 28, 70,103, 92,101,185, 93, 55,108, 87, 53, 55, 93,195,176,239,137, 57,160, 85,181, 76, 44,102,129, 86, 46, 8,
+ 80, 51, 95, 14,170, 76, 1,148,162,170, 26,114, 44,182,180, 36,147, 20,163, 53,100, 51, 51,137, 74,120,161,196,115,202, 56, 95,
+200,110, 0, 58,102,130,202,130,141,141,242,249, 91,235,164,147,215, 96,180,168,247, 65,248,229, 51, 61, 80, 44,190, 34,172, 77,
+ 73,140,150,177, 88, 0,149, 54,104,157, 10,108,200, 64, 72,164,168, 80, 70, 62, 17, 83,216,232,126, 10, 66,197, 51,102, 65,120,
+199, 28, 23,170,218,188, 78, 73, 37,115, 32,149,137,172, 54, 26, 87,187,146, 49, 32, 88,104, 59, 23,165, 73, 82,242, 98,130,126,
+242,132,226, 54, 72, 81, 23,188,175, 46, 2, 57, 81,209, 95, 85,196,151,169, 72,240,104,235,208, 70, 73, 63, 51,195,101,162,224,
+152,151, 96,151,191,155, 64,133,148,190,154, 32,169,121,170, 69,177,237,205, 68,123, 37, 44,132, 5, 87,171,224,216, 15,242,179,
+115,110, 73, 73, 53,214, 49,249, 64, 87, 53, 75,129,102,203,154, 83,128, 52, 69, 4, 90,138,188,172, 53, 49, 69,124, 74,212,149,
+196,237,106, 9,113,177, 98, 27,200, 25,159, 4,214,190, 90,175,105,234,138,156, 18,135,227,153,156, 50, 85,215,208,174,196,230,
+148, 83, 22,156,101,200,196, 44,129, 26, 66,174, 82,203,195,131, 50, 37, 12,225, 2,126, 24,163, 80,177,146, 18,254,240,234,102,
+205,221,237,134,207, 95, 30,153,178,140,115,135,105,162,106, 43,186,182, 97, 24, 71, 17,140, 85, 21,227,228, 9,147, 39,198, 36,
+227,159,172, 80, 89, 23,182,124, 34,121,207,177,151, 96, 15,109, 52, 77,215,226,167, 9, 63,150,209, 94, 9,148,209, 90,145, 53,
+ 28,158,158,165,122,111, 90,180, 54,172, 86,107,222,190,127,199,111,127,251,153,231,221,142,245,122, 67,210,153,223,255,211, 31,
+249,229,199, 15,124,248,225,123,254,240,223,252,153,167,243,153,221,110, 79, 74,153,177, 63, 81,181,173, 8, 29, 20,164, 56,208,
+109, 55,156,135,192,121,127,226,124, 62,147,178, 36,254,212, 86,179,234, 42, 84,148,131,224, 60,140, 28,142, 61,155,182,129,152,
+ 56, 14,169,136, 1, 13,227,228,233,167,177, 60, 52,151,135,169,210, 80,105, 69, 93, 82,188,166,224, 57,140, 35, 62, 23, 63,166,
+ 51,140, 5,239,217,213, 21,141,179,212,198,208, 88,195,201,143,132,148,185,105, 91,225, 26, 91, 91,236, 16,240,234,229, 29,207,
+199, 61,231,190, 95,192, 97,174,170,232,186,181,228,248, 38,228,231,190,144,191,116, 81,108, 74, 70,122,158,130,228,213,107, 5,
+198,209,118, 29,205,166,147,184,207, 40,240,133,152,165,171,106,218,142,182,235,104, 87, 29, 47, 95,191,224,247,127,124,207,106,
+211,114,123,187,230,246,166,229,238,102, 77, 99, 29,198, 58, 73,135,154, 38,249,122, 77, 77, 78,145,182,105,112, 77,203,211,254,
+204,241, 52, 98,156,101,187, 89,147, 28, 28,250,129, 90, 87,101,143, 41, 42,224,199,251,123,166, 24, 88,181, 13, 55, 55, 43,222,
+125,251,146, 87,223,188,160,105, 26, 42, 29, 25,158,118,196,126, 66,141,153,191,252,186,227,220, 15,252,249,219,247,188,218,110,
+ 56,238,158,217,237,246,220, 63, 61,241,211,175,159,240, 73,209,212, 13,166,118,212,181, 99,211, 85, 76,227,200,231, 47,247, 82,
+ 72, 57, 67,215,214, 52,149, 99,213, 84,108,182, 29,219, 55, 55,172,191,121,133, 50,151, 61, 52, 41,149,196,167, 75, 48, 68,186,
+ 26,135,171,252,117, 82,216,114,176,150, 68, 53, 81,166,199,203,174,186,116, 11,186,116, 32, 5, 11,118, 21,190,146,150,160,137,
+ 84, 38, 63,210, 53,164,194,124,207, 87,236,246,188,136, 80, 33,125,149,105,126,189, 71,151, 78, 59,205, 11,196,242,245,243, 82,
+ 76, 93,188,187,122,193, 90, 74,147, 51, 79, 12, 18, 49,196, 11, 79,123, 86,226, 23, 72,212,124,169, 95,255,147,114,228,241,105,
+207,254,249, 44, 23,180, 49,164, 20,136,229, 92,240, 83,224,227,175,247, 60, 60,237, 73, 62,242,180, 63,114, 26, 70,124,204,244,
+125, 32, 39,139,247, 9, 31, 36,240,195,100,168,140,129, 44,226,172, 41,122, 66, 76,196, 8, 79,167,129,135, 83, 79, 76, 94,210,
+ 39,179,230,243,211, 19,191, 62,237,208,214,225,202, 46,213, 88, 91,254,142,133,101,174, 4,159,154,131,240, 5,156,203,116,171,
+134,215, 47,110,120,115,183, 97,221, 88,134,243,137,148,189, 36, 83,214,245,133,157, 31, 4, 92,146,162,236,198, 75,196, 14,118,
+254, 12, 53, 24, 91, 75, 17, 84,158,133,164, 75,246,204, 18, 86,163,200,218,200,165, 24,195, 69,116, 88,158, 1, 41, 40, 21, 97,
+154, 47,185, 92,132,204, 94,216, 30,165,163,181, 70, 99, 77, 57, 95, 75, 3,149, 98,198,135,204, 52, 5,250,209, 51, 76,129,113,
+138,210,104,165, 72, 38,149,240, 22, 39,105,108,200,184, 57, 21,155,165, 49, 34,246,211, 42,203, 20, 35, 37, 66, 10, 50,129, 48,
+226,155,143,105,182, 30,170,130,162, 45, 62,108, 99,231, 25, 55,222,123, 84,101,240,209,147, 66, 32, 77,113, 17,246,133, 40, 30,
+123, 99, 77,225, 46, 80,180, 42,122,121,166,174, 65,194,177, 20,147,162,136, 87, 66,223,156, 3,139,162, 20, 84,250,250,179,205,
+151,236,129, 88, 38,154,194,141, 23, 63,249,197, 5, 82, 38, 77,186,144, 29,185, 56, 62,140,209,236,142,123, 38, 31,104,219, 10,
+ 63, 77, 40, 35, 98,102, 31, 3, 57,201, 93,152, 73, 24,171,139, 59,230, 42,130, 89,203,133,158,181, 33, 33, 19,145,140,216, 38,
+173,179, 22, 93, 22,249,202, 88,252,105, 66,107,205,122,179,198, 88,169, 32,246,251, 61, 41, 39,218,174,165,170, 42,217, 9, 33,
+137, 56,177, 72,240,231, 81,133,186,174,100,148,128, 34, 98, 18, 22, 59,200, 88, 37,165,132, 77,153,117, 87,177,217, 72,199,115,
+255,240, 68, 83, 96,248,163,159,216,214, 50,230,159, 98,160, 49, 22,188,116,112, 33, 74,215,175,179,236, 13,147, 18,190,187,206,
+130, 36,237,199,137,132,162,173, 58, 86,166,225,243,248, 72, 54, 23,193,143,177, 86, 14,130,201, 51,238,143, 2,253,175, 29,218,
+ 90,182, 47, 95,144, 43,205,175,223,127,224,197,235, 23,196, 20,121,243,246, 45,235, 23,183,252,203,255,242,191,114,243,230, 53,
+ 47,191,249,134,191,254,229, 67,177,161, 77,196, 16,176,117, 93, 70, 86,145,152,224,197,171, 23,124,122,120,100,183, 59, 51,250,
+ 32, 32,134,202,208,212, 21,181,179,244, 33,210,143,158,253,121, 32, 41, 81,164, 63,158,143,100,163,105,108,197,228, 61,195, 32,
+213,112,214,186, 84,127, 2, 70,176, 90,203,184,215, 74,166,248, 97, 26, 25,100,201, 37,158, 78,157, 73, 62,210,214, 21,117,101,
+177, 86,211,185, 34,178, 75,137,170,174,105,172, 69, 91,181, 96, 53,239,238,182,132, 52,113, 60, 12,168, 88,160,120,198,112,179,
+ 90, 75, 54,114,142,132, 20, 22,184,205,114,120,205,185,210,222,227,156, 28, 6,202, 66,189,106,233, 86,107, 80,154, 36,160,224,
+ 82, 24, 20, 48,132,177,152,198, 97,180,197, 42,135,123, 81, 49,180, 13, 49, 76,156, 78,154,243,105,192, 25,135,218, 31, 24, 12,
+244, 39,233,158,214,155, 53,102,232,241,163,103, 85, 85, 84, 70, 51, 4,143, 75,129,155,186,227,150, 10,155, 12, 86,105,140, 19,
+106,215,238,105,199,195,211, 35,237,205,150,110,219,241,238,253, 75,222,189,123, 73, 87,183, 56,147, 57,159, 79,244,199, 35, 90,
+ 53,124,120,234,249,248,116,226,159,223,189,229,155, 23, 55,132,211, 19, 79, 15,247,124,254,120,207, 79, 31,159,233, 39, 33,228,
+ 85,206,210,214,150,205,218, 98,130,225,167,207,191,240,124, 60,160,157,165,107, 27,154, 74,252,255,155, 77,199,246,246,134, 87,
+223,190,197, 42,131, 42,182,163,116,149,188,166,224,171,160,145,101, 10, 93,104,140, 95,179,218,139, 66, 56, 21,161,143, 82,139,
+ 90,253, 58,190, 52, 95, 5,162,124,117, 33,166,203, 20, 45,231, 88,216,237, 37, 95,124,158, 0, 44,232,217,162,190,205,169,140,
+ 40, 47,201,110, 74, 73, 71, 22,230,157,169, 18, 7, 68, 10, 18, 19,116,217,155,171,175,124,236, 51,238, 83, 46,254, 57,165, 77,
+236, 69,194,136, 42, 43,131,101, 92, 47,145,178,115,119, 53, 69,207,238,241,196,238, 56,210, 86,134,182,118,228, 56,113,158, 60,
+ 86, 67,127,206,252,252,235, 19, 57, 71,222,108,183,236, 14, 71,142, 99, 32, 38,137,179,212,198, 48, 69, 8, 65,161, 83, 66,153,
+ 72,109,133,123,241,116, 30,136, 41,227,148, 16,187,158, 78, 35, 63,126,121,102,181,233,232,108,141,159, 20, 95, 30,158,121, 78,
+131,192,101,148,150,239,203,202,129,157,149, 46,155, 78, 95,252,252, 26,157, 51,109, 91,113,183,105,233,218,150,198,106, 76, 41,
+162,140, 21, 87,200,186,105,208, 89,136,151, 66,243,131, 24,138,216, 56, 43,146,153, 97,245, 82,208, 81, 87, 36,173, 72, 33,202,
+ 31, 19,229,103, 40,153, 30,115,170, 88,134, 88,130,127,202,248, 62,230, 80,172,136, 26,175, 32,123, 73,152,155, 81,173,114,190,
+ 24,176,178,194,152, 51,186,181,186, 92,250, 90, 27,156,133,156, 12, 65, 75,186, 34,101, 69,145,114, 17, 40, 98, 74,208,147, 66,
+ 85,178,102, 12, 33, 45, 69,154, 82, 6,103,117, 41, 46, 50, 30,136, 73, 46, 82,171,228,231,146,203, 69,153, 17, 17, 93, 34, 96,
+107,131,211,142, 88, 46,188, 24, 50, 86, 89,129,223,100,133,247, 1,173,161,170,139, 45, 76,103,153, 4,204,238, 17,117, 29,170,
+203,146, 98, 56, 79, 5, 68,239, 97, 81,106,146,187,162, 20,159, 49, 6,106,237, 68, 92,151,178,224,117, 53, 87,107, 45,153,104,
+104,237,136, 25, 89, 53, 43,141,210, 9,149, 74,129,157,197,129, 16, 67, 40,159, 67, 64,107, 71, 26, 18,253,112,166,170, 26, 78,
+231,147,136, 1,173,140,253,167, 20,209,218,200,122,169,178, 75, 56, 89, 46,150, 78, 20, 68, 37,108,249, 24, 89,108,157, 70,105,
+172,182, 22, 53,103,118, 89, 24,199, 1,173,197,163,110,157,208,116, 66, 47,140,119,107, 45, 86, 91,134,225, 84,140,255, 53,167,
+131,236,116, 84,146,244,248,148,229,210,157,213,151,228,146,125,173,132,230, 59,197, 32, 3,137, 24,169,171,154,215,111,223, 18,
+ 66,224,243,253, 61,214,213, 76,227,132, 74,137, 77,211,208,199,145, 64,166,118,150, 20,162,136,228, 66, 20,193,134,154, 25,216,
+ 25,167, 4,163, 25, 74, 56, 67,183,234,104,109, 69, 74,129,209, 79,212,214,202, 77, 85, 42,174,218, 88,246,135, 3,211,121, 66,
+173, 29,186,118,108,222,220,209,173, 87, 60,252,244,145,112, 62,240,250,219,215, 88,231,120,243,237,183,124,252,248,137,143,127,
+253,137,255,241,127,254,159, 72, 65,241,240,249, 1, 85, 59, 78,231, 19,141,178,180,237, 10,101, 20, 41, 76,220,110,110, 64, 87,
+ 28, 31,247, 28,246, 7, 98, 76, 84,181,168, 97,219,166, 6,228, 1, 28,124,228,124, 30,105, 42, 67,204,158,115,204,180, 78,227,
+148,226, 52, 78,132, 52, 17, 74,231,155,201,184, 25, 67,168,160, 81, 22,163, 28,167,105,226, 52,137,197,199,104,161,249,132, 16,
+169, 74, 23,233, 52,180, 70, 97,146,102,202, 17,171,140, 84,222, 26, 41,138,114,102,187, 94, 83,183, 13,159,191, 60,148,177,169,
+124, 78,221,170,197, 57, 77,246,190,140,174,212,140,193,150, 81, 95, 57,120, 67, 8,212, 70,252,173,218, 40, 92,211, 80,181,173,
+ 80,142, 66, 4, 83,210,173, 74,119,143,138,242,239, 90,161,107, 39,121,233, 94,186, 16, 31,172, 68,255,218, 19,207,143, 59,214,
+155,138, 54,214, 52,110,226,120, 62, 99, 27, 75,179, 89, 99,245,137,227,254, 76,179,110,233,170,181,168,137,115, 98, 85,175, 81,
+ 94,188,205,174,117,244,231,158,199, 47,247,228,182,101,221, 84,124,247,246, 5,111,190,121, 41,144, 12, 13,105,154,232,119, 59,
+ 12, 53,191, 61,120, 62, 60, 62,243, 79,175,223,242,205,235, 45, 33, 14, 60,239,118,124,252,244,192,143,159,190,136, 45, 80,107,
+148,117, 52, 93,199,237,106, 77,173, 12,191, 62,124,226,241,241,137,108,196, 59, 92, 87,142, 90,107,186,117,203,234,102,205,246,
+205,157,140,255, 72, 69, 93, 60,163, 55,175, 18,206,150, 3,143,197, 71,107, 84,201,110, 46, 23,106,113,113,149,190,187, 80,187,
+244,215,162,179, 37,235, 27,137,170,188,236,189,175, 16,173,234, 58,105,236, 34, 66, 83,215, 98, 58, 68, 8, 37,245, 92, 1,193,
+240,119,138,223, 34,174,154, 99, 73,115, 1, 79,169,116, 69,209, 90, 4,117,243,110, 94, 20,242, 41,202,101,173, 50, 37, 30,147,
+ 5, 22, 34,133,134, 41, 65, 22, 2, 67,241, 68, 78,167,145,167,199, 29,231,115,166,109, 52,206, 73,118,244,105,127,162, 54,154,
+179,143, 28, 14, 35,167,113,224,166,107, 8,113,146,203, 59, 87, 34, 52, 83, 90, 32, 89, 41,203, 88, 54, 70,234,202,225, 42,203,
+167,135, 3,143,103,207,237, 74, 46,204,253,185,231,151,167, 29,109, 93,243,221,230,150, 56,245,252,252,124,226,204, 68,101,197,
+218,166,163,184, 22,170,218,144,173, 98, 28,203,126,213,233, 66,253, 75,220,118, 43, 94,108, 58, 81,128,171,136,210, 18,134,101,
+140,147,198, 68, 27,148, 83,228,233,107,187,212,146,252, 85,166,139,233,138, 3, 96,157,147,169, 87,146,255, 32,108,254,130,200,
+ 45,157,102,138,136,178, 94,171, 5,120,146,196,144,180, 68,232,102, 31,151, 46, 30,157,201,170,196,106,147,229, 88, 45,182,170,
+ 37, 80,101,214,101,164, 44,145,211,101,109, 99, 12, 24,139,248,198, 67, 92, 30, 96,209, 54,104, 73,245, 84,114,177,203, 90, 35,
+148,201,134,194, 36,197, 84, 34, 83, 77,241, 88, 15, 37,130, 85, 52,107,226, 48, 82, 73, 50, 40,210, 21, 32, 41, 37,137, 92,141,
+ 5, 38, 22,188, 23, 5,187, 49,140,126, 42,247, 78,153, 92, 21, 31,254, 87, 9,124, 69, 44, 74,206,139,231, 60,155, 9,249,148,
+ 68, 23, 15,154, 16, 38, 82, 42, 80,158,171,247, 68,107,117,153,118,101,241,152,167,146, 45,178,196,159, 47,171, 19, 89, 85,162,
+ 4,205,156, 82, 66, 91,209, 49,156, 78, 35,111, 94,111, 57,229, 51, 49,102,108, 37, 69,137,247, 30,231,244, 18,177,100,180,196,
+129,235, 37, 59,240,106,202,151,149,128,202,138, 80,213, 90, 35, 72,213,148, 36,218,206,123,233, 60,187,245, 10, 91,213,236,247,
+247, 75, 72,132, 91,173,208,214, 16,124,160,105, 90, 65, 19,198, 68,244,129,156, 37,126,112, 78,145,202, 41,131,206,197,175,167,
+202,200,199, 51,198,204,148,160, 85,142,182, 93,115,247,226,150,251,251, 47, 28,118, 71,148, 86,210,165, 55, 45,174,170,216,157,
+207,212, 70, 82,119, 82, 73,125, 27,189, 47, 15,186, 84, 65, 53, 34, 50,233, 81, 68,103, 89, 89,203,166, 91, 99,141, 97, 26, 39,
+166, 97,196, 52, 21, 42,205,227,119,217, 67,159, 79, 71,198, 0,171,170,166,187,189,227,237, 55,223,242,233,183,223,184,255,237,
+ 51,237,237,150,186,109,233,110, 54,108,215,107,254,143,255,237,127,103,181,222,240,135,255,246,159,121,252,248,145, 49,140,104,
+ 87,243,180, 63,240,170, 91, 19, 53, 84, 6, 66, 72,220,220,189,228,116,234,121,126,220,113, 26, 79,232,210, 85,175, 26, 71,235,
+ 12, 67,136,244,227,196,185,247,104, 35, 59,178, 83, 47, 22,182,202, 42,122, 31, 25,166,114,248,104, 13, 69,151,160, 72, 50, 42,
+ 68, 18,124,114,206, 28,250,145, 52, 63,160, 90, 51,166,140,182, 26, 87, 89,180,206,226,251, 70, 17,150,188, 93, 77,163, 77,217,
+ 99, 10, 77,109,189,105,249,242,180,103, 26, 75,204,130,214, 52,173,172, 89,210, 24,138,240, 81, 68,122, 90,201,120, 39,149,136,
+ 85, 16,187,135, 41,222,201,166,110,169,234,166,168,166,133, 34, 21, 11,232, 65, 23, 38,129, 8,185,204, 87,193, 48,166,146,104,
+ 85, 53, 57,140, 14,140,227, 68,221, 85, 84,185, 38,167, 44, 74, 89, 39, 58, 11, 51, 25, 92,213,112,247,162, 18,141, 68, 93,163,
+148,102,240,158, 70, 59,162, 19,139, 31, 33,243,248,248, 68,168, 12,119, 77,197, 55,223,190,228,155,247,175, 89,215, 21, 86, 3,
+ 42, 48, 60, 31,201,222,242,208, 71,126,125,124,224,245,205,150,215,111, 94,162,167,129,199,227, 19, 63,254,242, 27,191,125,124,
+ 98,242, 16,178, 38,106, 69,215, 58, 94,109,215,212,181,225,203,253, 35,247, 79, 79,100, 45,232,220,186,182, 56,157,217,172, 26,
+214, 55, 43, 54,175,110,105,186,182,136, 9,103,113,153,190,112,213,103, 96, 83,142,203, 1, 42,222, 90, 37, 86, 38,117,221,141,
+203,239,204,112,245,251, 47, 23,115,202, 81, 68, 51,215, 89,226, 87,137,230,178, 26,154,189,235,178,141,191, 4,187,136,132, 74,
+205,128,154, 20, 23, 63,250,162,255,201,106,225,194,171, 82, 84, 95,236,164,210,237,155, 37, 79, 61, 94, 4, 72, 92,144,156, 58,
+ 11,152,195,152, 75,160,138,116,144, 69, 52,168,248, 10, 82,163, 77, 65, 53,251,200,126,127,226,112,246,108, 90, 25, 73,134, 73,
+246,234, 24,240,231,137,195,110,160,182,142,206, 56, 42,229, 48, 56, 38, 21, 25,252,132, 46, 54, 76,133,236,204,163, 31,168,157,
+165,117, 13,159,159,142,124,248,242,200,203,219, 27, 34,137,113, 72,124, 57,140, 24, 52, 47,215, 45,135,254,204,199,221, 65, 84,
+225, 86, 97,141,197,164,146,176,214, 88,108, 85,113, 26, 7, 66,140, 18,177,170, 44,182,146, 40,210, 55,219, 77,193,103, 39, 90,
+ 87,211,182, 21,117, 85,131,130,105,244, 24,180,236,180,203, 37, 49,123,218, 23,206,190,150, 75, 90, 25, 49,147,104,147,169,170,
+110, 89, 37,198,226, 36,178,214, 22, 1,165, 46,157,103,144, 21,104,128, 52,167,246,150,192,149,164, 68,173, 29,124, 44,247,151,
+232,106,102,118, 65, 74,160,202,179,183, 20,239,115,165, 24,243,178, 91, 86, 42,151,139, 77, 52, 16, 86, 43,177, 46,103,129,252,
+160, 46, 43, 29,109, 17, 77,142,215, 34,114, 14,158,202, 86, 56,163, 73,147,128,200,172,170, 48, 90,198,233,242,154,168,114, 89,
+ 7,177,226, 25,189, 8, 42, 3, 16,149,140,249, 67,136, 56, 20,147,159,100,188, 95, 68,126, 49,134,130, 86,149,239, 75,118,209,
+186,136,182,255,158, 1, 87,222, 39,175, 46, 83,145, 44, 43, 2,161,249, 93, 4,167, 41,167, 75,234, 33, 82, 92,205,244, 67, 97,
+ 41, 40, 41, 12,148, 42,136,230, 92,252,249,138,133, 21,147, 20,217,139, 0,239,120, 56,241,221,251,247, 56,109, 9,193, 83,183,
+150, 16,144,149, 99,221, 45,231,130, 53,134, 40,217, 58, 82, 16,199, 18,212, 68,198, 42,185,135, 67,150,233,132, 68,175, 2, 42,
+107,194, 20, 24,195,136,107,107,218,174,193, 40, 56, 29,246,196,224, 49,149,165, 91,175,200,136, 72,161,105,219,133, 80, 21,188,
+151, 84, 54,173,153,151,129,105,246,182,198, 72,212, 74,148,121,101, 87, 21, 72,232, 74,179,185,221,208,117, 29, 63,252,237, 67,
+ 73, 84, 74,168, 16,104,214, 27,134,178,183,215, 70, 23, 0, 5,140,222, 23, 82,221, 69,184, 99,139, 34, 48, 22, 63, 95,215, 53,
+212,149, 20, 2,135,195, 68, 82,186,136,188, 88, 88,194, 97,154, 56, 31,207,196, 4,245,102,195,239,254,252, 7,250,190,231,241,
+211, 23,140, 74,108,238,110,169,215, 45,171,187, 91, 14,143,207,252,245, 95,254,133, 63,253,231,255,142,186,169,185,127,124,166,
+106, 26,158,143, 7,242,228,169,110,110,209, 86,170, 56,219, 85,212,235, 21,127,251,254, 71,158,159,246, 68, 5,141, 51,212,198,
+208, 54, 13,209,192,112,242, 66,121,154, 38, 89,119,164, 68, 82, 18,211,151,149,252, 48,133,227, 92, 2, 28, 0, 83,188,144, 70,
+107, 42,235,192, 24,142,163,224,118, 77, 33, 24,133,114, 65, 54,174, 42, 74,201,178, 7, 42, 23,132,202, 66,147, 51,197,215, 84,
+ 55, 21,119, 47,111,217, 29,207,156,206,231,130,249,205, 37,219,125,133,142,101,220, 87,138, 52,173,203, 3,187,120,142,197,189,
+ 96,180,140, 78,171,166,198, 54, 77, 1,160, 20,198,119,137,147, 68, 75,218, 82,212, 50,150, 76,170, 32, 76,203,212,217,105, 85,
+172, 42,226,170, 64,105,110, 95,188, 16,125,197,185,199, 90,168,234,138,253,254,196,233,116,132,174,229,213,235, 55, 56,231,152,
+ 38,225,172,215,195,136, 74, 89,196, 75, 74,115,127,255,204,254,116,162,189, 89,243,246,221, 45,191,251,253, 59, 86,181, 65,231,
+ 68, 93, 25,206,135,158, 48, 70, 14,131,226,151,143, 59,186,186,227,221,203, 59, 12, 35,167,161,231,251, 31,126,230,215, 95,238,
+241, 81,246,221, 67, 74,108,218,134, 87,183, 91, 86,171,134,135,135, 39,190,220,223,115, 60,246,184,206, 82,213, 14,155, 19, 78,
+ 43,186,182,230,230,110, 75,187,237,202, 62, 79,127,165, 24, 55,203, 72, 89, 62,215,124, 77,101,227,146,155,144, 75,136,139, 86,
+146,250,148,191, 74, 64,203, 95,141,218, 41, 2,212,235,253, 55,153,194, 10,159,119,223, 87, 80,155,196, 18,133,169,203,220,119,
+233,198, 98,185,212,245,101,140,126,233,246,175,176,207,197, 10,148,230,242, 33,203, 72, 53,166, 8,152, 11, 11,190, 76,238,138,
+158, 91, 60,195,101, 13,103,150, 4,181, 75,171,154, 10, 80, 37, 71,136, 19, 60,239, 79, 28,142, 71, 54, 51, 61, 44,123,142,135,
+129, 16, 3,149,178,124,126, 60,209, 21,173, 76,109, 53,109, 93,161,115,230, 60, 14, 4, 52, 46,230, 50,202,140,156,142, 19, 21,
+134,174,117, 60,247,158,127,251,241, 87, 94,188,186, 35, 3,231, 62,112, 28, 38,142,227, 68, 87, 57, 78,131,231, 56,246,156, 99,
+162,182,154,106,166,123,229,132,171, 20,205,202,137,224, 78, 38,225,172, 42, 67,219, 58,186,206,177,170, 21, 42,201, 90,160,106,
+106,214, 93, 71, 99, 13,104, 35,238,159, 43, 49,214,220,141,167, 12, 97, 73,212, 75,196, 92,128, 59, 37,216, 71, 89,139, 46, 76,
+ 10, 65,191,250,178, 78,153,227,114,231,207, 53,151,119,204, 80, 12, 11,164, 28, 23,231,132, 20, 54, 97,150, 81,151,156,248, 2,
+233,146,146,141,172,181,184, 40,174, 1, 67, 90, 45, 60,131,124, 77,253,155, 61,241,148,224,146, 25,101,156,230,130,178, 60, 43,
+202, 80, 87, 37,244, 38, 65,182,138,168, 10, 86,216,234,101,138,148,138, 35, 35, 41,152, 98,192,145, 5,122, 85,154,137, 60,138,
+109, 90, 24,241, 17,178,193, 79, 94, 10,140, 66,128,139, 94, 38, 2,202, 92,166, 71,185,188, 95,233,106,218, 52,239,205,101, 74,
+ 25,151,200, 18, 61, 91, 39, 67,121,238,117,233,134, 75,158,185, 49, 22, 31,166,229, 93,212, 90,186,233,156, 46,186,147,217, 34,
+ 39,184, 91,181, 64,129, 82,226,178, 87,223,159, 9, 49, 98,107, 57,203, 86, 20,107,117, 8,133,253, 46,149,128,181,182,228, 53,
+ 92, 52, 57,164,128,202, 17,146, 20,119, 33, 68,180, 51,216, 92,254, 15, 85,246,113, 97,154,112, 85,205,106,213,225,172,208,219,
+198,105, 66, 91,129,209,164,148,100,143, 92,186,197,148, 2, 97,244, 24,157,151,170,126,174,224, 85, 22, 65,218,252,205,196, 40,
+158,196, 20,161, 94, 87,108,183, 27,114,214, 60, 62, 63, 81, 57,203,185, 31,168,128,218,106, 14,193,163,141, 37, 18,137, 62,224,
+106,199,185, 63, 22,178,143,196,207,233, 98, 63,152,146,140,228, 93,210,232, 98, 33,112,214, 20,148, 39,229,215,101, 76,241,249,
+141,199,145,225, 44, 20,188,215,239,223,243,226,238,142,127,253, 47,127,161, 63,246,220,172, 58,186,205, 6,215, 53,172,214, 13,
+255,246,255,254, 95,100,224,219,127,254, 3,231,231, 3,187,211,142,186,219,114,254,244, 17,149,133,128,166, 74,102,252,118,123,
+203, 24, 39,158, 31,159, 25,135,145,202, 41, 42,235,104,107, 71,211,212, 28,135,129, 97, 26, 25, 71, 9, 86,152, 33, 19,202, 9,
+136, 97,154,130, 60,156, 57, 17,181, 28, 30,202,232, 37,109,206, 24,141,181, 21, 83,206, 28,139, 24, 16,164, 26, 71,103, 26,231,
+ 48, 18,119, 33, 93,186, 49,203, 5, 97,141,194, 21,139,161,179,142,237,166, 99, 28, 70,118,135,211, 18,228,129, 86,172,214, 29,
+206, 26,194, 56, 46, 25,218, 74,107,129,165, 92,177,190,157,181, 50,134, 52, 96,107,139,109, 42,161, 91, 5,217,233,229, 57,155,
+ 24, 93,172,142,197,106,163,108,241,163,206, 93,168,150,188,229, 28, 25,135,158,224, 71,214,171, 21,117,227,228, 97,183, 70, 4,
+129,253, 64,142,130,244, 28,153,120, 60, 60,241, 98,123,199,106,181,194,247,163,164, 36,105, 77, 83, 55, 60, 63,239,120,222,237,
+112, 85,195,155, 23, 55,252,238, 15,239,216, 52, 21, 58,122,170, 78, 8,137,211,121,226, 52, 40, 62, 62, 28,169,172,230,219,215,
+119,172,106, 71, 26, 6,254,250,227,223,248,240,203, 39, 82,148, 24,197, 62,120, 92,211,242,122,187,101,219,214, 28, 79, 61,159,
+239, 31, 56,238,247, 88, 39, 52, 70,157,229, 51,110, 42,139,107, 43,214,183, 45,102,246,158,107,201,146, 54,101,112,166,149, 46,
+ 32,151,114,192,124, 21, 10,113, 57, 4,229,226,142, 36,125, 65,194, 94,123,192,245,178, 27,140, 69,121,205,226, 25,215,186,180,
+104,113,166, 47,241, 85, 18,155,196, 34, 95,132,120,121,161,186, 93, 41,229,185,136,221,114, 76, 92,231,176,204,130,187,139,240,
+ 79, 14, 99,169, 25,213,162,114, 95,178,218, 83,241, 53,231,204, 85,232,244,210,217, 47, 95,107, 49,223, 75,222,193, 56,121,142,
+135,115, 25,149, 70,252, 20, 25,199,158, 97,156,208, 74,241,248,112, 36, 71, 77,183,169,201, 41,225,208, 52,214,240,229,249,192,
+152,229,153,117, 74, 97,181,225,126,191, 35, 37, 77, 87, 59,140,213,252,245,195, 3,198, 89,186,166,102,119, 18, 65,235, 97,148,
+236, 2, 31, 19,147,143,140, 49,225, 52, 75,244,165,192,171, 4, 78, 99, 92, 73,208, 50,134,151,235,134,109, 39,211,154,218,105,
+156, 5, 21, 21,182,178, 84,141, 4,101, 41, 35,122,138, 56, 11,138, 89,144,125, 37,101, 60, 47, 34, 72, 9,164, 81, 69,127, 81,
+ 20,228,174, 38, 23,255,180,206, 69,189, 94,188,249, 57,138, 14,134,164, 23,249,123, 42, 51,230,184,224,122,229,162, 13, 33, 44,
+ 24,127,165,149,184, 40,202,122,111, 38,239, 73,144,202, 5,202, 50,207,171, 51,241, 98, 53, 75,178,171, 78, 41, 45, 23, 59, 89,
+244, 83,185,140,224,103,160,194,204, 70,176,166, 16, 20, 67,105, 16,144, 76,117,157,212,226,181,207, 73, 82,199, 50, 48,133,128,
+211, 10,231,170,139,134, 39, 36, 76, 33,254,197,148,153,130,151, 36,200, 40, 88, 86,165,141, 16, 57, 67,201,227,200,178, 50,208,
+204,207,183, 94,242,213,211,149,247,156,175, 10,223, 75,144, 80,240, 97,153,134,164,148, 36,249, 77, 95,208,199, 41, 74, 83, 22,
+141,104, 82,102,157, 11, 75,230,137,168,243,173, 53, 76, 83, 88,222, 51, 99,133,139, 50, 76, 19,206, 57, 14,135, 61,232, 27,172,
+213, 28,207, 18,221, 59,127, 45, 83,242, 56,174,185,242, 57, 69,108, 22, 50, 96,158, 63, 59,103,176,106,222, 19, 40, 17, 95,248,
+105,228,229,237, 55,116,171, 21, 33,100,206,103, 81, 67,119,174,162, 91,117, 66,116, 59,156,184,189,221, 10,119, 57, 6,194, 56,
+161, 26,189,140,196,115,217, 13,234,226, 57,204,229, 67,237,189, 8,174, 84,138,108,186,142, 87,183,119,156,207, 39, 30,118,207,
+228,152,152, 38,207,182,105,240,185, 0, 57,140, 99, 10, 19,138,204,241,212,227, 67,190, 98,201,103,108, 18,250,107, 72, 73,186,
+124, 95, 30, 52,171,201, 58,211,159, 7,170,202, 72,197, 89, 54, 53,206, 90,206,251, 29,193,103,214,119, 45,223,252,135, 63,177,
+127,218,243,116,255,136, 53,134,205,221, 29,117, 43, 65, 40,126,240,252,248,215, 31,248,238,207,127,100,251,250, 53, 31,255,245,
+ 71,172,173,136,126,226,249,233, 25,215, 84, 88, 83, 14,106,231,184,185,185,225,211,151,207, 60,220,239,137, 25, 26, 87, 97,181,
+162,109, 27,124, 12,140,147,103,242,129,209, 71,208,154,201,123,140,146, 66, 36, 1,126,244, 75, 71,147, 75,117,110,203,225,111,
+140,161, 50, 18,201,215, 79,158,168,114, 81,254,202, 30,165,178, 26, 91, 54,162,149,206,212, 70,232, 67, 49, 39,116, 22,143,166,
+ 43,244,183,182,107,200,198,242,244,180, 35,132,184, 28,226,171,166,163, 93, 53,132,193,203, 33, 60, 79, 11,202, 59,157, 74, 17,
+ 98,172, 22, 22,187,209,184,218,226,106, 39,208,143,156, 22,234,152, 70, 75,188,161,192, 11,165, 0,210,154,140, 39,150, 52, 16,
+163, 13,168, 72, 84, 10, 63, 78,244,199, 35,117,235, 88,175, 90, 25, 49,105, 37, 83, 16,229,136, 62, 80,213,142,166,173, 73, 57,
+178, 63, 13,220, 63,124,225,229, 77,194, 37,249, 51,170,186, 97, 24, 2, 79, 79,143,104,171,120,245,122,203,119,239, 95, 83,181,
+ 13,169, 63,178,222,174,132, 34,184,239, 9, 67,226,195,211, 4, 33,240,251,111, 94,177,233,106,114, 8,252,245,199,159,248,203,
+ 15,191, 72, 53,157, 97,127,158, 48,157,227,237,237,134,151, 55,107,198,209,243,249,254,158,221,241, 64,208,138,174,169,228,115,
+205,153,186,118,100, 35,184,220,201, 71,234,166, 4,174,164, 84, 80,201,197,242, 57,219,105,210,178,160, 91,186,116, 53,199,176,
+148,201, 73, 76,178,167,252,251,248, 84,217,179,139,125,140, 37,109, 85, 45,251,190,124,213,121,115,229,109,207,197, 94,131,186,
+160, 96,175,199,245,179, 90,184,136, 96,228,123, 93,150,189,255, 24, 18,243,181,194, 62, 47, 30,223, 25,145,169, 74,231,119,233,
+210,213,162,190, 87,165,232,204,177,116,163, 37,220, 99,206,112,247, 33,209, 15, 35,253,105,164,109, 42,124, 8, 12,231,158,211,
+185, 71, 43, 17, 73,158,167,196,109, 93, 83, 41,197, 80, 44,143,187, 83,207, 97, 10,120, 52,149, 73,220,108,214,252,252,229,153,
+211, 24,105, 93, 98,221, 53,252,244,176,231, 48, 12,188,123,185, 97,127, 58,113,242,137,148, 3, 99,148, 88,211,104,102, 82,152,
+146,119,171,172, 12,140, 22,107,106,213,136,253,169,109, 21, 93,103,185, 93,213,116,141, 4,142,136,152, 74,132,116,206, 89, 89,
+159,149,206, 51, 5,105,138,116,201,107,200,145,101, 26,150,151,139, 83,236,108, 75,187, 87,198, 53, 89, 25, 2, 9,147,138,245,
+107,246,209,167, 80, 84,217, 23,139, 23,243,238,185,140,137,211, 60,210, 73,133, 64,150,202, 25,109, 21,198, 42,162, 47, 41, 96,
+186, 92,104, 89, 23,132,145, 18,187,160, 94, 64,192, 50,221, 81,154, 56,239,159,165, 58, 93,112,198, 51,155, 95, 14,178,249,236,
+239,100,191, 0, 0, 32, 0, 73, 68, 65, 84,162, 44,127,171, 44,231,157, 80, 79,101,186,228,140,172, 9,117, 9,106, 73,170,156,
+ 13,169,232,179,140, 20,206,243,202,206,135,136,109, 75,238,121, 33,105, 46, 36,193,100,168,157,147,175, 93,146,222,140,210, 24,
+ 61, 59, 52, 36,237,110,206, 16,152,125,240,243, 38,127,230,188,207, 59,247,172,228, 82,119, 11,113, 85,166,163, 66,122,203,139,
+ 26,222, 90,240, 41, 47,147,234,139,133,115,118,144,176, 56, 64,230,130,216,106, 75,136,129,227,238,192,171, 55,175, 36,126,213,
+ 75, 14,123,140,137,161, 80, 59,125,240, 56, 99,150, 21,222,188, 64, 48, 90, 84,240, 49,235, 69,171,146, 41,209,171,243,156,254,
+116, 62,227,207,145,237, 31, 54,180,109, 43, 17,163,163,196,103,174, 87,107, 76,101,152,124, 64, 91,201,196, 69,101,226,232, 9,
+ 97,164,166, 19,111,161,154, 29, 46,229,177, 84,102,169, 66, 67,136,132,152, 49, 57, 81,213, 13,221, 77,203,253,243, 19,126,136,
+120, 63,145, 38,207,234,246, 22, 31,147, 8, 11,128,105,154,112, 74,115, 30,199, 50, 74, 74,165,115,148, 93,238, 24, 70,217,121,
+196, 36, 62,205,156,168,218,154,225,124,102,244,145, 85, 55,231,193,151,136,208,152, 25,251, 51, 97,128,247,255,195,159, 88, 53,
+ 53, 31, 63,126, 38,132,137,237,246,150,213,235, 59,136, 35,245,102,197,199, 95,126,101, 56, 29,248,243,127,255,159, 73,211,196,
+254,121,143,181,150,135,167, 29,199,115,207,205,237,150,202, 25,148,142,180,171, 27,178,214, 60,254,118, 79,127,218, 99, 43,137,
+139,109, 43, 71, 87, 85,156,253,200, 52, 37,134,193, 67, 82, 4, 5, 67,138,172,173,236,186, 39, 47, 64,157,116, 97, 15,201, 65,
+ 87,104, 74, 78, 57,180,177,140, 41, 45, 63,248,160,197, 0,170,213,124, 88, 42,106,147,169, 69,153, 83, 34, 13,193,105,168,140,
+ 92,170, 77, 85, 81,173, 28, 79,135, 19, 99, 31, 74, 34, 19, 84, 85,197,186,107, 80, 83, 36,205, 23,189,154,199,189, 23, 11,147,
+209, 69,108,103, 52,166,146,157,162,228, 92, 71, 57,180,202, 72, 89,150,121, 90,236, 34,203, 62, 94,162, 65,209,151, 10, 84, 41,
+136,211,200,208, 15, 24,171,168,235,170, 68, 36,170,146, 39, 12,195,249,132, 87,137,237,237, 45,214, 26, 98,152,168,234,134,227,
+126, 36, 14, 3, 74,105,172,173, 81, 90,179,223, 63, 49,229,204,221,171, 59,126,255,221, 43,222,188, 90,147,247, 7,170,109,131,
+174,106,250,253,196,120,142,124,124,234, 25,199,137,223,191,121,201, 77, 87, 65, 12,252,245,135,159,249, 47,223,127,148, 56, 67,
+ 52,199,222,227, 26,199,139,155, 45,175,214, 43,124,246, 60, 60,239,121,122,126,226, 60,156,169, 87,107,185,248, 66,160, 94, 55,
+ 84, 77, 69, 32,115, 26,122,134, 97,160, 91,175,208,133,197,174, 98,209, 23,104, 45, 26, 19,173, 23,133,186,154,195,207,148,176,
+187,101,164, 56, 19, 16,245, 18, 60, 65, 65,159, 94, 34, 78,175,252,219, 73, 2,127,102,218,212,236,119,230,226, 70,159, 79,169,
+ 66, 27, 99, 17,237, 80,198,139,249,234,114,206, 37,171,121,206,105, 23, 56,206, 5, 37,123, 17,194,165,229,249,144,130,165,196,
+ 79,146,201, 49,148,162, 33,255, 67,135, 63,119, 74,204,130, 65,115, 25, 1,199,152, 25,166, 1, 63, 69,158,158, 79,196, 56,226,
+ 26, 39, 68,184,243, 89,166, 6,202, 16,162,197,217, 72,109, 69, 61, 94, 89,135, 15,240,176, 31, 25,178,168,166,223,108, 87,252,
+242,180,227,254,169,167,170, 20, 93,221,112, 26, 60, 63, 60, 14,108, 93, 69,244,240,124,158, 24, 75,208,211,188, 49,202, 74, 96,
+ 36, 85, 9,105,209, 58, 97,147, 60,195,117, 87, 99, 43,131, 49,154,186, 10,172, 42,209,204, 56,167,175, 34, 70, 37, 34,215,205,
+ 7, 57, 34, 58, 12, 33,145, 98,196, 25,169,116, 98,138,228, 84, 68, 96,139,240, 42, 94, 14,239,242, 14,106,125,121, 6, 18, 17,
+ 82, 34, 4,177,152,154,108,174,136,193,165,211, 87, 23, 82, 28,101, 52,159, 83,150, 8,228, 50, 41, 80, 78, 46,245, 20, 47,168,
+ 97,165,103, 21,253,124,177,205,188,131,153, 93,240,181,189,113, 25,205, 43, 37,201,119, 74,214,133,106,137,240,205, 75, 49,160,
+181, 52,129, 26,133,202,102,161,171,181, 78,196,140, 57, 9, 18, 59,229, 76, 93, 88,231, 83, 76, 40, 43, 49,211,190,232, 7, 82,
+138, 56,163, 74,193,155,240,195, 40,251,229,249, 98, 47,123,232,152, 19, 24,131, 78, 89,196,138, 6,130, 23,214, 71,249, 88, 80,
+ 81,246,243, 41,170, 37,187,125,126, 14,103,143,249, 44, 38,149,169, 99,198, 89,137,128,157,167, 29, 41,133,226,233,175,136,113,
+ 18,122, 94,153, 78,204,104,180, 28,197, 61,160, 74,218, 97, 74, 1,146,163,170,107,206,231, 1,103, 45, 86,137,134,160,109,106,
+ 98,140, 11, 63, 36,196,176, 96,195, 23, 30, 68, 17,202,104,103,209, 62,149,149, 86, 32,133,136,157,213,213, 10,196,243,167, 20,
+109, 43,149,111,140, 19,147, 15, 40,165,105,187, 22,107,173,196,102, 42,233,248, 66,152, 8,147, 47, 60,219,107, 74, 84, 68,229,
+ 9, 31, 43,188, 82,104,107, 80, 89,246,130,147, 18,197,229,237,122, 77,187,221,242,183, 15,191, 48, 5,233,246,155,186, 94,176,
+119,198,182, 2, 18,152, 60,217, 26,198,209,151,172, 92,169, 90,107, 83,227,131,151, 78, 84,214, 10, 96,101,236, 87, 57,199,110,
+ 10, 68, 34,217,232, 98,187,136, 88,235, 48, 62,114, 60, 29,121,253,110,205,235,111,222,113,122,124,166,239, 39, 50,154,219,155,
+ 91,114, 81,103,214,206,242,240,243,111,188,120,245,138,219, 23,119,236, 63, 63,144, 85,162,170, 90,246,251,125,225,222,139,125,
+195, 86,208,221,174, 56,238,142, 60,125,124,192,144, 49,117,133,213,154,182,171,240, 38,208, 31, 39,134,105,194, 79,145,172, 21,
+163, 23,161,140,100,190, 23,229,232,252, 24, 41,217,137,219, 34, 70, 49, 70,172,120, 49,195,152,162,140,228,181, 20, 85, 73, 23,
+ 0, 79, 12,104, 3,149,109,208, 70, 21,209,139,188,212,181,213, 84,218, 81,213, 14, 87, 59,134,147,167, 63,247, 68,146,136,216,
+172,162,235, 26, 65, 67, 78, 30, 37,241,220, 75,136, 72, 44, 8, 80,137,140, 21,174,124, 85, 57, 89,193,132, 40,159,179,158,173,
+ 55, 18, 3, 8,102,217, 53, 37,164,136,137, 64, 42,235, 0, 99, 44, 86,123,194, 20, 24,250, 17, 99, 20, 77,181, 18,184,111, 40,
+ 23, 97,182,132, 62,114, 62,156,232,154,138,245,237, 13,164,136, 31, 12, 74, 57,152, 20, 99,239, 81,198, 80, 89,216,221, 63,112,
+216,239, 89,175,111,248,246,221, 75, 94,189,222,226,159, 15,172, 58, 67,189, 94,227,207, 3,211,144,120,120,158,184, 63,245,252,
+254,238,142,219,205,138,152, 53, 31, 62,252,194,127,253,241,111,162,216, 79,138, 47,253,128,194,241,126,189,225,229,102,141,118,
+142,199,135,103,118,207,207, 28, 78, 3,166,174,165, 82, 14, 17, 91,201,202,199,186, 10, 99, 50,207,251, 71,110,182, 29,119,219,
+ 13,201, 88, 84, 86,151,203,107, 30,146,167,171,238,185, 20, 76, 90,107, 81,181,207,254,217, 2,118,201,197,113,112,125,137, 95,
+143,247, 68,168,163,150,157,122,158, 57,236, 89, 93,225, 97, 47, 9,112, 75,170,213,236,167, 45, 34,173,249,251,186, 88, 83, 75,
+200,203,188, 95, 47,221,221,252,107,231,233, 3,200,251, 95, 48, 55,232,164,254,125,154, 92,193, 53,207,251,125,161, 60,150,226,
+ 35,103,130,159, 24,189,231,124, 10,140,131, 71,169, 76, 63,246,180,237,138,216, 39,198,126,144,166, 64,151,203, 37,229,133, 18,
+230,176,152, 36,241,188,135, 48,145, 73, 98,139,245,138, 31,126,250,204,186, 91,179,114, 53,149,181,252,120,255, 72, 84, 17,103,
+ 90, 78,211,200, 41,137,248, 86,151,140,199,202,106,156, 19,192, 83,211,200, 42, 15, 45, 98, 51, 99, 52,117,171,112, 36, 42, 7,
+171,149,208, 26, 43,101, 22,151,135, 65,227,231,159, 39,150, 84,132, 99, 41, 38,130, 15,226, 12,201, 82, 60,139, 13, 76, 72,114,
+ 57,137, 29, 53,133,114,145,232, 84, 0, 45, 81,138,199,178,250, 20,231,138,136,196,132,124, 86,232,102, 6,130,202,203,148,100,
+ 30,129,171,156,139, 5,184,116,116,161, 8,222,156,136,200,114,138, 82,140,163,201, 89, 80,170, 42,235, 82, 3,166, 69,239,148,
+ 19, 92,100,228,105,153, 36,228, 50, 77, 80,204,170,244,249,121, 45, 15,204, 12,149, 81, 10, 99,139, 88, 66, 25,198, 36,147,129,
+218, 40,198, 4, 99,144,231, 86,145,160, 64,107,194, 20, 81, 86, 10,197, 28, 3,170, 49,196,232, 37,208, 38,103,166, 24,232,199,
+113, 89,219, 76,126, 98,149, 59, 97,169, 23,194, 41, 69, 53, 46,231, 89, 65,213, 42, 17,240, 46,150,173,235,153,211,162, 29, 17,
+ 76,223,140,223, 21,125,136,176, 14,156, 54, 50, 69, 12,115, 68,177,216,121,117,212, 87,124,150, 75,102, 1, 37,107, 93,205,235,
+166, 98, 21,173,172,229,112, 60,200, 68,211,186, 2,231,201, 84,117, 35,171,234, 82,176, 41,101, 80, 70, 23,203,235,204,245, 55,
+ 69, 80, 91,172,123, 18, 49,138, 93,212,184,104,162, 15,212, 38,211,117,107,148, 49, 76,167, 51,207,187,103,148, 53, 84, 37,213,
+ 44, 78,190,164,199, 24,114, 31,137, 33,200, 78,151,139,217, 62,102, 69,206,174,236,236,202, 67,155, 34, 99, 14,248,144,105, 26,
+195,237,203, 27, 72,153,243,113, 32,249, 64,244,129,182,174,153, 50,160,197, 34, 53,150, 36,182, 56, 5, 66,244, 69,145,105,112,
+ 86,172, 80,231,105,194,150, 68, 40, 65,226, 90, 98,217,211,134,105,162,182, 66, 60, 35,136, 26, 84,107,197,216,247, 24,101,121,
+243,135, 63, 50, 78, 35,195, 73, 50,133,155, 85,199,139,215,119, 28,158, 30,105,191,125,205,195,195, 51,167, 97,224,155,119,223,
+ 98,173,229,241,241,153,108, 45,227, 56,242,184,123, 66, 89, 67,109, 29,202, 40,154,118, 75,109,107,190,255,241, 7,142,253,128,
+171, 42,106,109,104,106,195,186,105, 57, 15, 35,227, 32, 80,156,132, 98,138,137, 24,179,240,194,173,226, 20, 50, 41, 20,149,120,
+138,114,169, 39,133,206, 51,119,187,146,159, 79,206,164, 88, 44,101, 86, 99,201,248,116, 81,103, 54,149,193,150,195, 83,172, 30,
+153,198, 86, 88,227,168,157,165,174,164,147,220,157,197, 62,145, 20,146,139, 92,215, 52,133, 73, 48,171, 62, 41, 63, 51,233,218,
+132,211,172,149,120,114,181,147,245, 71,200,178, 26,153,145,148,243,174, 52, 71, 48, 42,200, 75,142, 96, 19,147, 74, 50,174,203,
+178, 36, 72,102, 36,100,232, 79,242, 60,213, 77, 7, 57, 48, 77, 99, 17,144, 25,114,244,156,206,103,140, 82,212,174, 66, 69, 47,
+ 30, 95,103,137,251, 64,242, 18, 23,234,140,163, 63,246, 60,238,158,209, 77,205,251, 63,190,230,253,171, 27,226,211,129,182,214,
+220,221,189, 36, 76,129,195,209,179,219, 7,158,251,137,119,155, 53, 47,214, 29, 38,101, 62,252,246, 11,255,246,195, 7,194, 52,
+ 97,180,102,119, 26,201, 89,243,242,197,138,155,117,139,179,154,231,221,142,167,231, 61,135,254,136,115, 10,227, 44, 42, 6,172,
+ 46,142, 0, 45, 92,108,101, 52,142,134,251,231, 61,119, 47,239,184,109, 26,233, 74,202, 75,172,148,145,207, 87, 93,152,214, 75,
+ 71,149, 33,196, 80, 4,142,101,170,145, 47,255, 44, 22, 56, 46,144,154,203,172,176, 8,149, 10,125,172,104,232,191,222,123,207,
+ 61, 83, 86, 5, 8,146, 22,244,235, 50, 78,215,146, 5,159, 10, 25,139, 18, 38,164,174,126,221,188, 23,215,165,240,200,115,116,
+164,214,162,163, 81, 98,185, 91,166,254, 37, 53, 77,133, 11,162, 83,105, 37,214,212,162, 18,243, 62,178,223, 75,206,125, 93, 25,
+110,111, 91, 78,231,128,177, 14,136,156,199,129, 92,114,239, 99, 84,133,165,151,197,227,158, 19, 93,229,248,109, 63,240,212,159,
+ 25,166, 72,163, 12,171,141,229, 95,127,249,130,114, 14,103, 53,117, 91,241,121,119,100,119, 20,223,243, 33, 12, 34, 46,181,149,
+232,142,144, 46,175,210,134,182,210,172, 55, 21,174,178,179, 36, 0, 29,132,132, 89,219, 68, 87,215,116,109, 77, 93, 87,139,248,
+ 79,207,214,218,197,191,159,136, 57,144,162, 70,165, 32, 43, 56,239, 23,164,182, 15, 19, 57,106,140,171,209, 81,254,144,144,228,
+194,206,204,106,237,226, 84,136, 10,116, 16, 33,120,148, 93,178,159,181, 77, 81, 19, 51, 16, 77,193,254,114,165,160,151,139,124,
+182, 1,231,114,145,229,185,104, 95,210, 67,229,231, 97, 82,137,179,205, 17,147, 51, 6, 51, 79,237,201,170,128,134, 74, 65, 58,
+ 91,229,200,133, 46, 87,184, 6,255, 63, 87,111,214, 37,199,117,101,105,126,119,178,193,221, 99, 2, 72,136,162,164, 76,101,173,
+ 92,245,255,255, 75, 87,119,173, 94,213, 89,153,165,212, 64,130, 0, 98,112,119, 27,238,216, 15,231,152,121, 32, 31, 40,137,146,
+ 24,136,240, 48,187,247, 12,123,127, 91, 58,229, 45,231,222, 41, 58, 85, 10, 63,172,133, 34,171,131,210, 10,222,130, 13,158,146,
+ 97,105,234,230, 81,176, 85, 77,149, 92,192,133, 78,112,228,198,208,170,131,156, 37, 38, 27,209, 33,229,184,202,199, 3,196,165,
+145, 11, 52,132,163,110,140,161, 57,185,240,156,149,103, 50,215, 70, 64,158,241,218,138, 20, 59,214,226, 61, 16,165,219,199,216,
+ 93,132,220,138,219,115, 23, 74,149,223,136,113,117,211,185,235,159, 45, 22, 1,235, 12,134,132,221, 83,190, 55, 27,105,221, 21,
+240,219,148,173,214,140,237, 2,203, 85,162,191,189,247, 92,215,196, 49, 70,194,182, 90,123,183,150,145,162,223,127,151,139,176,
+ 69,156, 59,157,130, 86, 26, 94, 94, 48,217,199,150,152,233,130,231,254, 81,212,160,243,178, 82,114,165, 15, 1,223, 5, 17, 64,
+149,170,217,235, 70,114,128,115,194,121,127, 11,150, 80, 17, 69, 53, 86, 89,252,109, 71, 1, 10,243,189,208,159, 70, 30,238,143,
+212,156,153,166,153,203, 52, 97, 59, 65,171,230,101,165, 27,122,214, 90,149,161,140, 86,180, 26, 14,111,165,138, 94,214,168,114,
+126,243,157,237,198,232,131, 28, 83, 34,116, 97,183,177,236,180,161,152,248,241,231,159, 25,124,224,229,245,194,125,255, 72,173,
+142, 79, 63,254, 64,108,137,102, 13,143, 15, 15,252,143,255,241,255,240, 48, 30,132, 74, 87,196, 83, 30,124,207,203,231, 95, 72,
+ 49,131, 15,244,157,151, 32,147,195,200,186,172,124,254,245, 87, 42, 77, 35,107, 13,135,177, 35,149,194,186,102, 98, 42,228, 88,
+104, 77,118, 66,206, 66,215, 57,217, 9,173, 9,191,113,180, 53, 14,192,153,119, 25,213, 78,184,205,177, 36, 5,217, 4,138, 21,
+ 17,209, 6, 64,232, 67,135,195,171, 96, 66,254,187, 78,211,161,122,111,233,135,142,102, 44,151,105, 18, 26, 83,147,196,164,190,
+ 11, 74,106,147,177,160, 53,104,197,254, 46, 89,203,200, 78, 45,116, 30, 31,156, 4,130,213,188,123,255,141,118,147, 24,221,139,
+109,123, 41, 39,187, 62,153, 11, 55, 21,252, 68,181, 61, 86,226, 42,193, 60,195,177,167,228,149,165, 70, 29,255, 73,215,185,204,
+146, 64,117,186, 59, 97,109, 35,165, 85, 70,116,139, 33, 93, 87, 69, 15, 59,210,186,242,250,242, 70,181,158, 63,254,241, 19,191,
+255,233,129,120,121, 99,164,114,127,255, 35, 41, 53,150,107,230,229,121,229,249, 60,243,225,254,200,199,187, 35,126,232,248,235,
+223, 63,243,239,127,249, 43,243, 60, 1,150,111,211,202, 92, 42,159, 62, 62,241,116, 26, 57,140,158,243,101,225,249,245,149,243,
+245, 76, 42,153,110,232,247,157,165, 11,157,156, 91,220,180, 36,206, 7,210,154,184, 92,206,220,221,221,203,126,176,233, 69, 93,
+170,166, 17,219,239,112,174,230, 29,140,166,170,168,201,234, 72,214, 40, 15, 92,198,186,239, 12, 57, 91,150,248, 38,150,121,119,
+225,191,207, 45,175, 27, 87,190,202,161, 92,155, 20,218,212,239,137,116,155, 95,222,238,222,102,189,216, 43, 42,106,170,123,102,
+115,211, 64, 12,233, 70,244,189, 83, 75, 85, 41,249,166, 3,216,212,198,170,163, 48, 78, 45,122, 70, 10,254, 77,244,115, 62, 79,
+188,189,205,140,135,192,253,105,196,121, 88,150, 69, 40,102,173, 96, 76,165,235,122,210, 10,165, 37,181,117, 85, 13, 23,177, 92,
+ 19,124, 62, 79,172, 73,232,111,132,192, 95,126,249,198,151,183, 43, 79, 15, 71,142,131,227,178,204,156,215,200, 48,122,146,106,
+ 17,250,190, 23,120, 73, 78, 96, 61,193, 88,198,222, 50, 30, 60, 67,176,180,154, 72,165,225,155,132, 49,141,131,227,120,232, 25,
+134, 81,196, 75,202,112,144, 85, 87,209, 26, 75, 60,217,155,104,177, 21,233,116, 99, 78, 26, 94, 34, 68,201,156, 35,224,233,188,
+ 98, 92,179,164,190,149, 82,183,143, 86,139, 65, 75,140, 21,219, 34,212, 36,150,208,218, 84, 15, 83, 84,127,227,113,201, 82, 93,
+163,233, 36, 3, 45, 14, 69, 24,102,112, 77,210,206, 64,186,202,198,246,231,180, 29,205, 43, 95, 59, 83,116, 5,224,155, 85, 59,
+153,213,177,241,187,162,206, 88, 41,132, 84,161,109,155,209, 73,220,254,197,160,218, 61, 85,208,234,110,127,203, 37,175,165,236,
+ 65, 60,187,165, 19,110, 25,242, 85,166, 4, 88,177,115,225,197, 9,229, 76, 16,215, 68,107,196,101,165, 36,153,100, 96,192,153,
+ 70,202,133, 92,147,188, 31, 77,178, 13,173,187,217, 74,107,219,203,141, 61,120,184,238,159,215, 59, 41,131,181, 88, 44,169,233,
+ 68,197,186, 93,236,105,173, 83,253,129,124,189, 44, 14,238,119,221,248,141, 44,103,204,198,147, 71,236,182, 58, 49,201,165,210,
+ 43,175,225,219,243, 51, 79, 63,220, 19, 99,210,148,193, 70,169, 98,247, 19, 1,163,132,203, 8,218,168,170, 30,161,233,154, 72,
+ 10, 42,171, 19, 56,207, 59,244,227,245,122,225,225,233,137,190,239, 49,192, 60,137,234, 52,132,142,174,235, 72, 73,149,207, 33,
+144,115, 35, 71, 65,244,109,202,104,179,239,211, 21, 94,175,172,104, 99, 45,177, 20,193,223, 53,184,187,127, 96, 24,143, 76,115,
+100,158,103,214,117,225,241,116, 47, 35,102, 19,193, 90,150,117, 38,107,238,186, 84,183,186,171,115,150, 86, 4, 75, 24,188,135,
+ 37,237,227, 8, 99,161,247, 66, 29,138, 57, 42, 86, 80, 84,130,219,126,218, 13,158,251,199, 59, 94,158, 95,112, 15,247, 24,239,
+ 25,108,224,116,119, 39,150,130, 15,143, 44,215,153,243,203, 11, 63,127,248,128,247,142,249, 58, 97, 72, 4,231, 57,159,207,194,
+ 35,246,134,224, 45,195, 56, 50,220, 31,249,199,127,252, 39,151,183, 11, 93,232,233,130,167,239, 28,131, 15,172, 41,177,172,137,
+152,164, 64, 73, 42,150, 26,188,140,245,174, 49,147,107,193,219,186, 63,112,206, 42,217,203, 89, 81,139, 59,217,229, 52,107,232,
+ 7, 25,245,198,184,144,245,197, 27,130, 39, 56,222,193, 8, 26,157,162, 97, 59,103, 25,122, 73,165, 91, 82, 98,141, 81, 69, 88,
+162, 68, 29,251, 65,146,145,138, 40,168,173,134,134,180, 34,187, 94,177, 53, 53,124, 16, 37,175, 11,226, 37, 69, 69, 67,173,106,
+ 28,168, 41,250,138,176,147,199,196, 32,171,103,255, 6, 69, 49, 34, 11, 74, 75, 34,231,130, 11,158,180, 22, 74, 90, 68, 43,225,
+ 28, 14, 41,202,114,174,244, 99, 79,201, 11, 75, 91,101, 79, 89, 61,203, 57,146, 22,169,194, 75, 42,156,207,111, 92,115,228,211,
+239,127,224,119,191,123, 34,191,190, 97,215,133,135, 63,124,162,243,142,235,146,248,237,203,149,231,151,149,135,135, 3, 15,163,
+228, 45,255,231,223,127,229,175,191,124,230,124,153,168,181,113,157,103,158, 47,145,223,255,238, 35,143,199,145,187,174, 99, 94,
+163, 92,232,231, 55,150,180,224,130, 36, 19, 58,107,112,189, 23,177, 81,240,108, 0,184,224, 4,207,217,225, 36, 8,169,100,137,
+ 87, 45,234, 77, 51,194,109,216,242,211,183, 21,135,176, 32,138, 22, 63,238, 22,119, 90, 43, 24,101,197,151,119, 35,207,253,159,
+ 55, 55,148,236,187, 4,179, 91,135,190,203,121,119,145, 14,219,212, 64,109,138, 91, 17,216,116, 93,179,101,180,111, 62,245, 45,
+ 48,102,235, 24,170,142,203,173, 66,114,154,101,103, 23,108,106, 96,175,225, 38,117, 27, 67,155,141, 93,113, 83,203,163, 59,224,
+235,117,230,252,182,208,247,134,211, 97,192, 26,184, 92, 22, 82, 46, 98,179,180, 6,111, 3,215, 34, 93,172,113,149,156, 42, 49,
+ 37, 58, 43,151,214, 63, 94, 47, 92, 98,150,184,226, 26, 57, 79, 87,114,169,140, 67,192, 59,233, 97,174,171,164,163,209, 36,225,
+234,110, 60, 16, 58,249, 29,246,122, 32, 31,189,167, 27, 20,208, 84,155, 0,102, 58,135,109, 86,108,108,163,167,235,220,173,248,
+210, 67,189,181,219, 69, 85,114, 98,251, 85,137,134,160,208, 74, 35,166,188,139, 4, 83, 74,228, 82,232, 59, 67,215,139,238, 36,
+ 41,243, 67, 46, 51, 37,160, 89,153,236, 77, 57, 97,115, 17,254,183,177, 50, 77, 41,133,208, 11,116,203,109, 18,182,162,211, 22,
+ 35,142, 26, 48,212,102,229,114,173,101,231,195, 91, 5, 5,109, 26, 7, 57,115,204, 59, 60,111,221,139, 84, 54,189,196,123,205,
+101,187,213,130,230,221,196,200, 24,222, 17,233,164, 32,104,165,106, 49,171, 74,120, 37, 34,202,125,237,118,129,101,221, 80,182,
+ 58,105, 40,181, 98,157,252,127, 10,114, 46,138,255, 92,120, 1, 13,195,229, 50, 97, 75,222, 71,229,219,123,178,228,140,119,114,
+247,184, 77,180,230,156,104, 79, 76,123, 39, 0,229, 93,222,128,174,141,116,220,238,204, 22, 80, 84, 40,181,224, 67, 64,113, 39,
+132,205,110,134, 80,249, 54,214,190,181,117,111,198, 90, 51,239,254,179, 60, 95,118,203,144, 87, 97,155,243, 22, 99, 2,151,235,
+204, 79, 63,255,128,247,179,114, 35, 12, 37,167,253,123,145, 71,193,210, 90,150,230,160,241,238, 47, 43, 98, 72, 26,185, 85,188,
+216, 80, 68, 24,113,190, 92,248,249, 15,191, 35, 72,155,200,162,222,191,190,235, 25, 14, 7, 37, 50, 85, 66,215, 81,114, 36,197,
+168,194, 25,249,130,238,157,106, 87,252,166, 86,108, 46, 86,198, 67,219, 72,248,225,120,226,112,119,224,109,186, 50, 77, 51,166,
+ 84,130, 15,180, 90,241, 65,172, 76,171,238,234, 75, 17,171, 66,112, 65, 71,195,178,143,246, 33,208, 59,203, 53,205, 50, 30,211,
+203, 35,132,142,188, 70,214, 53, 18,252, 64,202,137, 86, 10,214, 5,156,115,220, 61,220,243,118,126,227,242,124,225,247, 63,255,
+ 68,179,142,110, 24,240,214, 83, 91,229,225,227, 7,254,227,223,254, 55,189, 90,149, 76,131,101,154,112,190, 35, 45,137,243,235,
+ 43, 77, 83,119, 14, 67,199, 56, 30,137,105,225,215,223,126,165,213, 42,150, 38,103, 25,250, 14, 99, 12,203, 42,151,122,202,137,
+ 12,196, 42,196,179,161,235, 73,185,178,172, 73,132,112,222, 19, 83, 20, 4,167, 85, 29,187, 42,227, 49, 18, 99,218, 7,217,101,
+167,156, 88,179,236, 94,130,115, 12,161,211, 96,196,130, 41,150, 96, 69,129, 27,172, 97,232,100, 93, 17, 75,230, 58,205,186,203,
+149, 46,106, 24, 37,223,185,106, 20,110, 80,235, 84,209,175, 45, 15, 53, 34, 10,234, 45,206,139,223,117,137,171,140,157,155,142,
+123,219,198, 74, 46,187, 16,174, 97,176,185,237, 47,106,209,137,130,177,142,146, 11,121, 77,242,206,183,200, 26,219, 62,150,221,
+186,144,205,198,209,136,172,235, 5,235, 28,157, 59,210,178,103,157,197,159,107,155,227, 58,173, 92,151,196,135, 31,158,248,195,
+159, 62, 96,227,140,185,156,249,240,233, 7,186,174, 35,151,194,183,223,174,124,121,153,121, 60,157,184, 31, 6,156, 55,252,242,
+249, 43,127,251,237, 43,175,175,175,228,156,153, 99,225, 53, 70, 62,125,250,192,227,233,200, 16, 28,201, 22,222, 94,206, 76,211,
+149,105, 89,192,111,240,157,204,113, 28, 9,189, 39, 21, 13, 20,178,130,119, 60,132,145, 32,146,102,188,151,113,168, 17,162,135,
+210,189,212,213,237,252,247,211, 16,187, 5,162,168,216,201,154, 93, 32,103,182, 48, 21,117, 36,200,127, 46, 91, 59,113,235,248,
+ 77,253, 78,136,246, 95,243,203,219,119,226,157,114,163,200,237,108, 90, 17, 59, 85,243, 62,250, 85,173,107, 42,194,222,212,249,
+213,220,196,118,141, 42,161, 67,141,125,154, 38, 93, 87,253, 14, 80,179,237,243,205, 22, 78, 89, 27, 37, 23,201,147,238, 12,135,
+ 99, 79,240, 66, 92,140, 73,130,140,140,173,244, 93, 71,201, 50,210,244,193, 50, 47,149,235,188, 80, 75,229,208,117, 44,235,196,
+235,180, 96,144,248,224, 37, 37,198, 62, 80,157,167,179,208,123,199, 84, 42,197, 90,241,245,150,198,105, 28, 56, 29, 28,198, 75,
+113,227,109, 32, 56,177,191, 89,167,145,176,128, 53,221, 59,219, 82, 16,191,123,107, 80,100,165, 87,236, 38, 78,107,218, 61, 87,
+ 73,244,106, 50,205, 74, 37, 75,232, 74,134,168,185,170,181, 84, 82, 78,196, 82,120,242, 3,193, 58, 98,147,152,208, 92, 42,185,
+202,202, 75, 34, 61, 27,111,243,194, 89,237,157,102,243, 61,171, 5, 45,212,134,141, 70,246,224,126,101,232,253, 30,199,140, 2,
+139,130, 15, 56,235, 40, 24,154,145,177,181,169,178,135, 47, 57,137,104,211, 26,197,125,203,206, 63,103,233,162, 77, 80,135, 92,
+ 43, 34,150,211,112, 22, 76, 83,104, 16,183,189,113,187,117,252, 24,153, 66,138, 80,206, 80,177, 50,237,107,142, 88, 12,169,100,
+217, 17, 91,139,173, 13,107,171, 92,244,102,155,230,200,243,225,130,195,122,225,161,123,188,100, 5,104, 72, 75, 74,133,243,249,
+194, 93,176, 4, 19,110, 19,130, 86,136, 41, 82,171,165,239,251, 61,213, 44,120,175, 60,121,181,124,234, 59,149,155,228,144,108,
+176, 29,121,222,111,153, 5,108,252,121, 99, 40, 70,249,244,134,189,251,150,240, 43,203, 22,110,224,252, 13,230, 3, 50,217, 20,
+247,130,248,241, 91,189, 21,191,100, 8,131,103,154,102,177,234, 41, 57,206, 91, 79, 73, 82,228, 89, 47,223,131,179, 86,133,179,
+146,120, 87,148,190,104,245,189, 46,166, 73,131,216, 84,204,212, 98,196, 97, 25,199,131,132,158, 24,195,249,124,129, 6,195,113,
+ 84, 79,102,101, 89, 22,186,113, 32,165, 68,138, 34, 72,177,246, 22,238,172,191,111,137,207,203,178,163,245,206,176, 46,178, 71,
+ 54,214,114, 24, 6,114,129,231,231,103,166,243, 69, 19,126, 36,149,192, 89,203, 18,101,236, 95,115, 35,229,164, 85,167, 37,103,
+ 9,128, 40, 20, 30,143,143,228,180,202, 40, 66, 71, 62,161,243,248,206,178, 94,102, 33, 40,245, 18,116,159, 83, 98,112, 29,227,
+225,128,247,158,191,254,237, 87, 30,239, 31, 5, 57,234, 28,135,211,145, 76,161,239, 59, 50,149,175, 95,190,242,241,225, 65, 38,
+ 7,235,202,186, 68,220, 56,240,245,183, 95, 56, 95, 23,154,147,238,254,225,116,196, 29, 58,126,251,229, 51, 47,191,189,210, 15,
+ 61,190,151, 75,189,243,142,152, 11,235,154, 88,210, 66,110,141, 36, 72,102, 14,193,225,172,225, 58,175, 20,165,192, 89,227,110,
+208, 3, 35, 83, 14,107, 28,174,243, 20,228,255, 51,142, 3,185, 21,230,188,168, 50,218, 48,120, 47, 35, 79, 29,217, 7,199,206,
+ 94,238,189,151, 11,223,192, 60,173,226, 79,213, 60,222, 97,232,232,135, 78, 42,215, 34, 9,119,198,234,133,190, 83,165,196,147,
+217,117, 14, 23, 12, 41, 69,214,152,121,121,123,227,233,233,132,247, 18,114,145, 91, 86, 81,158,100,172,167,170, 59,241,150, 49,
+ 77, 30,246,172,137,100,165,136,126, 2, 5,238,148, 77,137,186,237,234,106,166,228,170, 25,237,134,245, 18, 1,203,208,141,100,
+ 59, 83, 83, 16, 79, 52,150, 18, 35,243, 52,113,122, 58,241,195, 31, 62, 96,215, 72, 57, 95,248,248,187, 39,198, 67,143,181,129,
+223,126,123,227,243,111,145,195,216,241,113,236,112,222,240,183, 47,207,252,246,245, 27,111,111, 51,243,180, 50,199,149,115, 50,
+220,223, 63,241,225, 52, 50, 6,143, 9,129,183,215, 87,174,211,204,178, 46, 24, 47,207,104, 45,149,195, 48, 48,140, 61,135,251,
+145,101,205,196,148,176,157,219, 17,161,227,208, 81, 77,163, 27,122,237, 56, 36, 23,161, 82, 20, 17,233,110,126,241,173,154,111,
+155,119,219,106,134,116,219, 33, 62,214,105,126, 66,107, 58, 51,108, 55,235,141,230,144,183, 93,102,201,119,151,185, 28, 82,178,
+119,126, 23, 76, 37, 69,112,105,251, 24,123,239, 42,119, 49,157,218,113,106,217, 3, 94, 44, 55, 34,151,249, 47,121,239, 70, 45,
+143, 70,119,134, 77,119,143,178,103,102,135,118,136,117, 86, 4, 95,141,198,117, 94, 73,107,165, 27, 61, 33, 56, 98,150,207,179,
+ 20,105, 18,172,247, 84, 21,225, 57, 87, 73, 83,102, 90, 35,115,174, 28,156,161,180,200,229, 90,136, 89,186,201,101, 78,220, 29,
+123,140,109,184, 96,233,173,215, 20, 25, 85,248,151,198,208, 5, 14, 7,135,115, 5, 99,101,172, 57,120, 75,103, 53,247,192,216,
+237, 53,209,248, 83,135,243, 21,235, 33,215, 34, 99,108, 21,140, 39, 20,252,161, 13,207,186, 38,182,244,218, 53,102, 82,169, 82,
+ 36,213,130, 35, 96, 49,228,154,201, 72, 78, 68,201,150,181, 46,196,181,112, 61, 95, 89, 82,161, 84, 17, 19,123, 44,107, 41, 76,
+243, 66, 53,134,164, 72, 80,139, 68,110, 26, 3,217, 84, 90, 52, 92,215,134,237, 10, 79,237,192,193, 75,225,127, 89, 11, 7,215,
+120, 60, 53, 66,240, 56, 59, 72, 81,229,197,166,150,162,232,148,134, 49,236,103,118,169,137,148,171,118,157, 78,153,226,150,170,
+129, 78,125,144,203,179, 52,229,211, 35,182, 84,245,230,189,183, 91,236, 43,169,170, 23,224,142,155, 70,154,189, 16, 28, 94, 45,
+112,205,212, 61,123,220, 20, 41,254, 10,146,108,183,219,233,212,151,110,172, 33,120,129,139, 45, 75,228,228, 15,234,237,151, 51,
+197, 91, 71, 74, 66, 42,236,251, 94,207,162,138,117, 14,220,187,130, 87, 57, 17, 86,119,227,239,115, 22,182,224,155,247,193, 44,
+ 34,163, 20,225,175,125, 63,168,175, 21, 69,134,224,144, 41,130,216,221,138, 6, 26,249, 93, 59,227,172,147,142, 58,179, 79,162,
+189,119, 44,113, 37, 71,185,212, 99,203,123,114, 99,202,133,209,185,125,106, 99,173, 33, 87, 67, 46, 18, 68,179,167, 61,154,155,
+ 63,223,111,120,193, 57,174,244, 99,207,225,120,196,171, 41,254,245, 77, 46,220, 97, 24, 20, 65, 40,210,125,219,245,164,235, 68,
+201, 69,198,197,222, 81, 12,244,155,117,230,221, 8,214, 26, 67, 90,133,217, 94,171, 8, 76,196,115, 26,185, 78,146,159, 29,186,
+ 14,211,170,198,229,101,225,248,150, 74, 86, 48,206, 81,161, 55,155,154,242,120, 56,113, 60, 30,120,249,182,234,216, 67, 70, 19,
+161,235,104,205,242,182, 94,117,247, 43,208,140,148, 18,119,143,129,195,221,129,151,191,252,157,245, 45,210,255,243, 35,190,147,
+112,151, 97, 60, 82, 91,225,112,119,199,219,111, 95,193, 8,193,199,250,192,245,229,149, 70,194,219,131, 98, 41, 13,169,194,221,
+195, 29,135,135, 35, 57,101,190,252,246, 5,163,251, 57, 81,204, 6, 26, 72,210,218,146,164, 64,193,136,199,212,192,224, 3,181,
+ 54, 98, 42, 42, 34,174,116, 52, 22,203,238, 13,110, 86,198,238,168,210,189, 15, 50,130, 93, 22, 57,240,104,141,206, 7,154,145,
+232, 84,107, 13, 62,216,125, 13,210,233,120,223, 88,195,180, 70, 98,204,138, 40,149,138,117, 24,123, 93,149,202,142,108,139, 78,
+221,242,129, 65,170,104,223,137,231, 63,197, 68,105, 34,206,153,231, 74,223,101, 90, 47,227,167,156, 50,107,142, 59,192,196, 99,
+ 49,182, 72, 39, 83, 11, 62,104,167,159,181,219,108, 18,179,154, 91,149, 12,230,174,163,115,129, 82, 18,113,141, 56,163, 21,186,
+203,170, 14,246,212,218, 19, 87,139,109, 89,243,166, 45,235, 18,105, 67,207,199,159, 63,112,232, 26,235,151, 11,191,251,112,199,
+177, 31, 9,193,243,235,215, 11,127,251,229,141,187,113,224,195,253, 29, 49, 23, 94, 46,223,248,242, 58, 49, 93, 35,203,188,112,
+157, 22,206,105,225,254,225,137,167,187, 3,157,243,184,222, 50, 93, 46,204,211,196,188,206,162,147, 8,150, 86, 32,244,129,187,
+135, 35, 15, 79, 7,158,126, 56,113,189, 38,126,249,245, 27,161,115,132,206,147,114,230, 62,140, 12,135, 94,186, 4, 54,122,148,
+193,108,185,223,220,130, 30,118,132,149,234, 12,164, 60,117,223, 17,230, 90, 99,239,150,183, 29,180,105, 78,147, 10,101,215,183,
+109,176, 27,219, 14,238, 93, 76,171, 30, 68,237, 59, 56,236, 59, 34,216, 59,230,139,232, 34, 52,183, 89,199,163,117, 43, 28,222,
+ 77, 22,204,198, 82,216,184,238,108,147,130,246,142, 62,103,111, 64, 18,253,211,107, 46,123,252,100, 74,153,101,205,224,196,118,
+ 73, 45,146,137,157, 53,211,193, 89,154,177,212,146,240,206,114,157, 27,151,105, 33,208, 56, 58, 75,170,153,215,165, 80,179, 22,
+ 26,173,114, 60,202,239,161,150,202,177,115,248,160, 40,220, 6,121, 41,146,135,208, 55, 44, 73,172,144,206, 49,120,141, 44,222,
+226, 51,247, 96, 29, 39, 77, 65, 21,165,123, 67,238,175, 92, 4, 16,149,219,102,213,109,148, 84, 72,181,176,166, 66, 45,134, 84,
+211,206, 31,159, 98,226,104, 59,250,193,226,124,197, 85, 75, 91, 45,185, 85,174,203, 74,249,234,128,194, 50,205,114,209,230, 44,
+ 14,146, 44,221,181,181,142,209, 57,188, 53,100,223,232,141, 35, 87,193,199, 26, 7,215,169,176,196,140,109,141,181,171,196,184,
+242, 58, 77,178,230, 25, 3, 93,174, 12, 24,124,128,146,147, 78, 25,228, 12, 25,250, 65,160, 96,106, 37, 75, 69,242, 28,142, 99,
+175, 3, 40, 47, 2,191, 37, 82, 5,214,175,171, 38, 39, 22,181, 90,116,111,253, 29,233, 64, 86, 70,183, 71, 74, 39, 81, 26, 48,
+179, 79,226,204,247,255,140,211,157,116,171, 98, 45, 52,149,224, 59, 33,171,105,179,216,116,237,106,177,196,117,101,213,156,247,
+ 27,101,212,226,180,209,153,230,149,195,225,128,239, 2,181,200,215,246,198,104,182, 60,187, 99,107,139, 45,222, 50, 11,218, 70,
+215, 19,129,207, 78,186, 19,224,147,217,163,137,157,219,220, 65,149, 84, 26, 67,103,118,166,200,134,141,221, 39,101,212, 93, 65,
+ 47, 35,253,180,123,235,251,126,224,237,122,102,169,153,193, 57,166,154,246, 15, 76,194,208,110,214, 65,235,156, 22,218, 55,128,
+136,211,176, 26,163,129,104, 30,100, 36,144,114,166, 63, 28,232,134, 17,167,202,243,148, 42,198, 91,134,161,199, 24, 67,202,153,
+113, 56,224, 74, 37,197, 40, 62,201, 42,246, 3,107, 68,157,221,116,246,111,140,165,152,140, 49, 78, 70, 5,165,178,230,204,195,
+227, 29,119,135, 3,181, 89,174,215, 43,206, 11,101,172, 2, 46, 56,150,101,145, 29, 69,147,157,153, 83,162,216, 26, 87,141, 3,
+244,220, 29,142,170, 66,212,214, 87,100,217, 2, 8,104,133,117, 89,112, 33,136,210, 49,102,140, 13, 60,125,252,200, 60, 77,124,
+253,229, 51,227,224, 57,126,184,151, 32,154,224, 56, 28, 58, 82, 46,116,206,243,242,229,133,113, 24, 37,144,192, 54, 17,220,185,
+129,233,237,204,245,122, 21,120,191,201,124,250,240, 17,140,229,219,243, 43,223,190, 62,211,141, 3, 33,116,120, 47, 22,180, 82,
+ 42,243, 42, 35,182,106,140,170,107, 5, 27,219, 89,233, 80,114,107, 20, 99,232,155,193, 35, 99,149,166, 41, 94,206, 24, 66, 8,
+116, 62, 8,188,194,201, 58,100,205,178,150, 8, 74,108,139, 49,225,156, 21,191,188, 18,144,134,206, 48, 4, 73, 42, 91,179, 16,
+139,164,210, 52, 56, 11,227,161,195,122,171,213,118,197,233, 97,157,179,236,114, 36, 40,164,226,131,213,156,226,200,178, 38,134,
+ 62,208, 57,143, 37,113, 93, 47,196,228,105, 68, 82,148, 93,142,181,194,178,238,187, 64,167,185,214,115,204,228,107,193,123,139,
+ 71,224, 28,206,139, 61, 99, 93, 43, 37, 39,250, 33,115, 26, 14,106,241,235, 69,224, 24, 44,166, 9, 33,204,210, 81,215, 66,163,
+144,148, 20, 85,106, 33,119,142, 31,255,120,199, 93,223,168,223, 68, 0,119, 58, 29,240,125,224,249,165,240,215,191,127, 99,232,
+ 71,126,122,188,231, 50,175,188,206, 11,151,121,102, 94, 22,174,211,196,219,245,202, 20, 43,167,187, 7,158, 30,238, 9, 94,124,
+159,203,178,114,185, 94, 89,226, 76, 33, 97,189,116, 44, 99,239,185,123, 56,208, 13,142,187,187, 35,135,187, 3, 99, 87, 4,167,
+147, 34,125,231, 72,113,197,216,123,134,173, 67, 80,177,143, 87,126,255,198,133,216,174, 57,163,151,252,230, 7,222,134, 94, 69,
+ 45,103, 22,139, 41, 58,226, 68, 97, 23, 55, 56,172,118,146,102, 31,183, 54,218,187,139, 90, 85,242, 58, 26,190,217,203,244,194,
+ 53,155,181,205,238,132, 63, 11,152,114,139,252,220,190,103,222,249,225, 21, 37,182,135,133, 96, 68, 77,221,182,110,189,221,186,
+160,162, 98,188,205, 90,149, 91,145,177,170, 85, 54, 67,202,244,157,229, 16, 2, 75,202, 2,126, 41, 21,239,228,103,139, 49,138,
+184, 84, 71,245,199,131,103,154, 11, 57, 79,164,109, 68,143, 35,216, 70, 82,125,137, 51, 13, 63, 88,134,193,236, 25,240,228,204,
+ 33, 52,232, 44, 65, 45,107,125,144,204,129,224,101,255,188, 99, 91, 55, 10,167,142,207, 29,150,138,163,106,244,112,205,210,105,
+201,207,215,136, 89,198,230,198,200,185, 69, 21, 81,218, 48, 4, 98,146,228,200,190,151, 38,195, 25, 79, 63, 4, 46,243, 11,165,
+ 24,146,105,180, 20,241, 78,132,114, 20,104, 77,226, 52,109,149, 96,150, 37,103, 90,146,131,190,217, 66,118, 29,206,122,108, 39,
+171,170, 84, 18,193,194,224, 45,125,231,120, 7, 64,217,135, 0, 0, 32, 0, 73, 68, 65, 84,121,189, 50, 93, 35,227, 16, 68,159,
+ 36,113,239,164, 18,153,215, 69,186,251, 90, 25, 67,192,251,130,177,114,137,197,210,152, 98,225, 52,116,248, 32,233,157,173, 53,
+214, 37, 10, 26,252, 32,205, 93,206, 85,116, 20,154,233, 93,213,213,177, 21, 69,242,128,155, 93, 33,191,125,166,118,195,164, 22,
+ 5, 19,121,205, 29, 49, 55,205,205, 14, 97, 82, 52,246, 16,220,247,209,192,173,225,156,163,154,198,180,172,148, 4,177, 21, 58,
+156, 94,196, 90, 44, 84,153,132, 62,198, 76, 63,120,108, 19,214,186,115, 65, 88, 42, 27, 35, 65,245, 49,173,213,125,229,177, 57,
+ 85,118,110,188,234,185,132,231,112,203, 55,183,187,110,164,128, 85,109,130,179, 24,111,223, 33,150,229,146,175, 91,194,162,181,
+228, 77,160,106,148,164,216, 73,108,247,229,229,133,251,159,126,143, 95,163,236,198, 93,160,181,188,147,255,156,177, 84, 39,133,
+ 77, 86, 97,181,179, 91,116,166,217,168,191, 58,126, 71,184,200,227,225, 32,188, 92,235,136,113, 98,141,145,174,235,233,116, 63,
+ 28,115,194, 4, 79,172,133,184, 68, 25,133,176,147, 0,247, 10,204, 88,185,156, 74, 17,208,127, 97,123, 41, 51,119,195,129,227,
+233,196,245,124, 33,174, 17,235,186, 93,116,229,157,147, 75,203, 90,214, 40, 29,233,221,221, 65,144,145,181, 96,141,140,238,157,
+ 83, 31,224,142,228,147, 60,219,208,247,228,148,152,231,153,225,116, 36,165, 66, 92, 87, 30, 31,239,233, 66,207,175,127,249, 79,
+226,218,120,248,233,137,187,199, 39,150,117,229,167, 79, 31, 1, 24,199,129,183,243, 89, 70,105, 73,127,209,203, 74, 78,149,224,
+ 61,231, 95, 63,179,172, 11,169,192,253,253,129,167, 31,238, 88,230,133,111,159,191, 80,114,228, 56, 14, 74,108, 19,133,100, 92,
+ 51,139,254, 12,173, 57,225,187, 99, 9, 65, 82,120, 98, 74, 98,165,208,227,121,221, 50,172,229, 55,132, 53,150,177, 31, 24,250,
+ 64,174,194,188,143, 41,146,107,194, 27, 43,185,187, 73,160, 4, 93,208, 17, 85,169,116,214, 50, 56, 41,112, 48, 48, 45, 81,162,
+ 8, 85,177, 57,140, 3,161, 15,154,173,220,100,223, 91,223, 41,119,117,255,218, 13, 14,108,165, 85,195,154, 86,222,166,133, 82,
+ 68,245,187,182,132, 89, 18,118, 60,208,176,148,178,178,174,186,251,169,133, 24, 19,125,112,242,125,209, 88,115,100, 93, 36,134,
+215, 58,199,225, 24, 4,243,216, 12,173,102,150, 37,179, 78,242,115,141, 99,175,207,147,188,152, 67, 63, 96,232, 49,101,146,142,
+ 66, 35, 39,179,135, 31,126,124,224,233, 48, 50,125,125,225,195,120,224,195,113,196,216,192, 82, 44,127,249,251,103,168,150, 63,
+126,248,200,235,229,204,111,231, 51,185,201, 8,113,158, 22,222,222,174,196, 82, 24,143, 35,143,143,247, 4,181, 40,230, 28,185,
+ 92, 46,130,243,221,246,141,162, 79,226,116, 28, 57, 30, 6,198,211, 65, 72, 97,214, 51,158,122,254,208, 75, 28,177,117,150,101,
+141,164, 82,208,136,110, 74,201,178, 31,203, 25,188, 68,214,154,118,203,191, 54,198,233,238,121, 67,133,202,110, 12, 85,182,110,
+182, 38,209,147,168,224, 71,147,167,246,238,253,157, 23,220,236,255, 98,247, 68,171, 45, 81,107,227,115,151,186,197,106,154,189,
+186,223,136,116, 85,199,237,173,202, 72,116,115,142, 72,158, 71,221,161, 40,155,183,126, 43, 36, 55,236,241,198, 34, 71, 11,151,
+ 82,228, 18, 55,250,121,108,234,158, 70, 99, 89, 86,114,205,156,194, 72, 65, 68,102, 57,101,172, 17,138, 27,205, 48,215, 34,151,
+ 29,134,195,161, 99,158, 34,245,178,236,113,196,166, 53,188, 17,239,118,204, 21, 55, 24,198,193,208, 5,143,245,194,101, 55,166,
+209, 5,203, 97,244, 34, 14, 52, 94,188,232, 70,232,147,214,123, 54,218,202,166, 74,174, 69, 49,172,198, 80, 53, 56, 36, 21, 89,
+ 51,149, 44,113,161,117, 19, 50, 98,244,252,146,119,174, 68,209,149, 12,227,200,178, 92,241, 70, 86, 0,169, 10, 52,103,209,124,
+247,148,165,168, 11,161, 42,127, 60, 43,187,253, 6,103,138,171, 16, 40, 55,212,107,163,146, 76,196,251, 74,153, 26, 81,121,251,
+210, 29,122,190,189, 92,152,230,200,105,236, 56, 29,123,250,193,225,117, 39, 29, 83,102,138,105,159, 24,118,190,147,231,210, 66,
+ 74,141,231,215, 11,199,195,145, 99,223,237, 35,244,148, 18,111,215, 51,199, 65, 98,183,179,170,174,173,217, 98, 64,223,101,151,
+217, 27,150,124, 87,254,171,130,194,170,168, 51, 97, 41, 37, 17, 58, 81,164,163, 69,106,169, 50,122,182, 86,250,230,166,171,216,
+190,235,200, 41, 97,237, 81, 11,170,140,117, 35,181,202, 42,120, 43,178,106,183,233, 69,100, 95, 94, 20, 39, 27,215,196,161,246,
+251,206, 92,110, 35,187,171,253,204,150,184,166,171, 40,239,236,142, 84,174,220, 0, 59,219, 51,190,145, 15,179,238,229,141,145,
+ 85, 6,220,146, 15,157,115, 55,125,204,119, 22,120,205,208,216,216,248, 70,127,110, 35, 30,245,243,229,140,235,254,128, 79, 94,
+220, 36, 14,121, 6,171,234,109,244, 98,151,115,115,195, 8,139,155,198,168, 6,199, 26,131,223,132, 45,203,186,242,112,186, 39,
+132,128, 15,129,151,103, 81,252,126,252,225,163, 88,214,182, 8, 57,239,201, 81, 68,114,173,190,227, 55,191, 19,218,126, 63,254,
+147, 11, 57, 85, 73,218,185, 59,158, 40,192,116, 21,230,184,113, 14, 82,162, 15, 94,120,183, 77, 42,183, 37, 70,250,224, 57, 28,
+ 14,188,190,190,209, 74, 99,244, 29,125, 39, 12, 96, 99, 17, 43,131,254,114,156,113,248, 46,176, 68, 57,252, 69, 77,153, 49,214,
+241,240,116,207,243,215, 47,204, 47,175,184, 0,227,211,137, 84, 43,214,119,220, 63,156,112, 65, 20,229,243,117,146, 67, 12,232,
+186,158,249,114,166,235, 44, 41,102,230,235,196,188,172, 36, 11,159, 62,125, 34, 88,248,245,249,133,183,111, 47,244,253, 64, 31,
+ 28,193,201,203,213,170,140, 22, 37, 81,174, 73,214,178,177, 12, 26,202,146,146,168, 99,155,149,110,212,180,198,106,138, 86,172,
+242,178, 12,221,200,195,221, 61,185,204,180, 42,251,151, 85, 3, 28, 4, 29, 40,200, 69,233,158,229, 69,113,214, 50, 4, 37,190,
+ 25,195, 26, 35, 41, 23,181, 38, 25, 66,240, 12, 99, 39, 23, 72,149, 28,116, 95,213,123,169,135,127, 67,247, 82,125,229,252, 38,
+147,137,121,141,124,126,185,112, 26, 3,119,199,133,224, 44,211, 52, 67, 21,229, 55, 74, 92,138, 49,237, 10,107, 41, 66,178,140,
+168,154,112,196, 11,150, 53, 22,140,135, 81,249,244, 56, 88, 83,161,149, 66, 54, 13, 23,192,101,177,193,245,126,164,196, 66, 43,
+ 19, 53, 37,210,178, 98,157,167,122,203,221,211,200,227,253, 72,126,155, 56, 58,207,195,105, 80, 6,191,231,223,255,227, 27,113,
+138,252,249, 79, 63,179, 92,174,252,250,229,149, 22, 36, 28,226,229,114,225,252,118, 33,197, 66,119, 24,185,127,184,199,123, 75,
+103, 13,174, 22,206,151, 11,203, 26,153,211,162,224, 21, 75,240,134,187,135, 59,238, 78, 39,198,211,192,241,238, 32,171, 27,117,
+235, 29,198,142,113,236,105, 52,250,190,231, 50, 45, 92,175, 11,135,113, 84,175,119,149,224, 10, 13,117, 0, 45,178,156,219,134,
+189, 26,130, 98,118, 23,135, 4,101,200, 8, 18,181,171, 85,101, 2,160,158, 89,105,176,229,101,150,125,118,251, 47,202,219,255,
+ 10,157,185, 45, 59, 91,147, 68, 48,246,156,245,194,119,244, 90, 43,178, 69,107,154,136, 92,235,123,127,178,217, 15,207, 90,183,
+203,188,237,134,204,141,155,176, 97,116,154,122,209, 91,213,232, 78, 16, 90,101, 76,114,177, 90, 1, 95,229, 82,164, 48,237, 60,
+206, 27, 76, 20, 49, 95,112,134,227,161,103, 90, 35, 83,205,186, 15,239,176, 54,147,115, 38,232,188,124, 24, 2,135, 83,135,247,
+ 50,233, 42,219,212,144,138,117, 94,248,235, 86, 70,202,222, 26,130,145,203,119,179,234, 85, 69,139, 74, 56, 70,147, 53,151, 53,
+172, 37,235, 69, 95,245, 93,145, 3,200, 32, 69,154,115, 74,245,215, 76,241,152, 43,190,247,188, 93, 23,230, 53,107,194, 86,213,
+196, 47, 37,107, 38, 41, 30,134,222,210, 89,199,178, 36, 98,150,248, 89,177, 27,202, 37, 50,151, 42, 25,240, 8, 14,187, 85, 67,
+181,224,107,101,205,137,108,192, 27,131,115,141, 53, 23, 82,169, 34,168, 3, 74,140,100,215,176, 21, 82,145,166, 43,215, 66, 41,
+137,110,232,169, 77,190, 6, 21,190,189, 77,212,212,248,248,100,101,167,111,229,178, 58,159, 39,172,119, 12,125, 71,171,141,117,
+141, 66, 19,109, 98, 73,220, 64, 66,219, 54,105,227,166,111,226,180, 77, 68,107, 85, 37,159,115, 37, 81, 57, 6, 47, 43,191, 13,
+ 64, 92, 55,114,158,185, 69,191,106,128, 78,169,178, 34,206,181, 72,168,141,181,172,113, 97, 93, 87,137,174,221, 19, 15,185,129,
+110,234,109,250,152, 75,198,187, 32, 57, 18,157, 35,167, 77,196,102, 84, 76,184, 5, 41,149,155,240, 77, 71,237,246, 29, 49,111,
+163,213,109,153, 27, 27,139,221, 32,238, 16,107,205, 46,248,117, 78,114,235,119,166,220, 59,171,159,140,249,155, 38,188,201, 59,
+ 49, 14, 35,175,151,153,156,146, 90, 96,183, 16, 26,104, 53, 99, 77,175, 86,231, 45, 32, 70,226, 94, 41, 73,167,112,242,189, 90,
+ 26,222, 26, 67,170,133, 16, 2,227, 81,168,113,141,202,219,219,153,210, 32,244, 50,138,217, 40, 82,198, 24,226,186,138, 96,173,
+214, 61, 65,108, 27,235,109, 9,176,180,219, 40,101, 75,193,241,161,231,241,254,129, 90, 11,235,186,226,188, 39, 78, 19,193, 59,
+194, 56,242,252,118,161,247, 3,111,207, 95, 41, 41,114, 56, 62, 49,207, 51, 49, 37,142, 94,108,117,173, 73,178, 83,201,155,149,
+ 64,247, 27,214,115,236, 58,190,158, 95,168, 69,186,235,117, 77,220, 61,158,176,214,241,246,250, 74,137,141,211,233,192,233,225,
+ 72, 45,133, 15, 63,254,128,237, 7,108,239,153,223, 38, 74,140,156,175, 87,238,239,142, 96, 97,205, 18,227,121, 57, 63, 51, 77,
+ 51, 41, 53,142, 63,220,243,233,211, 19,215,215, 55, 94,158, 95, 88,115,228,238,116,196, 25, 35, 99, 25,164,186, 90,214,180, 23,
+ 23,214,201, 47, 57,168,231,190,230,219,206,100,235, 92, 82, 21, 50,208,198, 99,126,124,120, 36, 88, 39, 59,186, 86,153,230, 69,
+ 44, 96, 10,118,168, 88,186, 16,232,130, 7,196, 95,222, 57, 35, 99, 94,103, 72,165,176, 44,235,142,188,244,214, 51, 28,122,140,
+146,154, 82,204,180,156,100,138,176,249, 84,117, 71, 54,197,133,114, 22,191,241,117,202,196, 34, 29,229,101, 78,228,146,233,187,
+128,243, 78,128, 32,139,116,146,222,123, 74, 51,164,181, 82, 90,132, 42, 97, 60, 94,199,205, 69,237,122,213, 24,230,108,232,125,
+195, 91,131, 55,162, 63,232,148,125,176,228,196,200,128,117, 14,143,151,238, 45, 38,210,180,138, 29,196, 57,134,135,145,187,251,
+ 3,117,158, 48, 41,243,225,233, 68,111,129,112,224,239,191,188,240,246,186,240,175, 63,253, 14,215, 38,254,215, 47,103,205,191,
+206,188,157, 47,188, 93, 22, 81, 71, 31,122,142, 15,247, 4,223, 17,176,116,166,113,185, 94, 88,231,200,154, 35,185,101, 41, 22,
+ 91, 99, 60,244,156, 78, 3,195,224,233,122,139,241, 69,139,202,202, 92, 44,157,243, 24,231, 48,198,225, 44,164, 20,121, 93, 69,
+ 84,228, 52,196,195, 56, 11,197,208, 90, 22, 37,178,217, 14,150, 34,105, 90, 26, 20,209, 16,225,162,217,149,188,109,199,111,238,
+117,115,149,221,166,221, 15, 79,245,148,183,119, 49,169, 26, 98,180,141,159,111,158,245,170, 35,252,186,171,189,154,118,252, 91,
+110, 55,206, 96,170,136, 39,155,162, 66, 75,107,155, 67, 81,176, 3, 70, 47,233,247, 16,156, 77, 34,191,173, 23,182,172,118,115,
+ 83, 71,111,248,204, 90, 42,193,122, 70, 77,206,139, 57,147, 99,150,103,194, 35,180,200, 90, 9, 94,186,167,146, 11,113,138,140,
+131,103, 28, 28,111, 68,113,236,118,114, 57,224, 12,163, 15,184, 96,118, 24,140,172, 19, 28, 46,136,206, 67, 87,189,146, 96,248,
+ 46, 29,207,154,205,150,134, 2, 61,184, 77,217,140, 32,166,133,175,205, 14, 96, 50,214, 98,133,221, 69, 69,124,212, 82,111,101,
+124, 23, 8,193, 51, 77, 43,206, 27, 14, 7,199,178, 68,226, 26,105,213,144,162,174,165, 90,229, 48, 90,222,150,133,120, 21, 44,
+ 46, 10,210,106, 69,114,198,223, 98, 97, 90,181,232, 48, 77,244, 8,222,146,109, 99, 41,130, 6,110, 22,114, 54,212,148,247,105,
+206,101, 46, 44,139,195, 92, 87, 14, 67, 79, 80,123,175,105,149, 83, 23,200,173,177,196,137, 90, 3,203,146, 88,230,204,227,135,
+ 3,166,101, 46,151, 51,125,223,115, 93, 34,121,109,220, 61, 72,242,227, 52,175, 10, 0, 19,205,130,213, 9, 19,251,122,177, 41,
+165, 77, 47, 50,237,128,223, 11,232, 82, 78,194,210,247, 50, 86,223, 39,189, 91, 10,156, 81, 1,132,118,188,101, 83,166, 27, 43,
+124, 15,231,232, 66,224,249,235, 11,113,202,120, 35,107, 68,163, 41,112,205, 10, 15,131, 6,133, 74,202, 43,169, 12,216, 38,171,
+150,161, 31,185,174,171,156,195,154,232,230,182,160,152, 13, 20,209,218,222, 8, 89, 85,193,111, 46, 14,107, 52,204,101, 39, 59,
+178, 35,120,171,169,186, 90, 52, 26,103,171, 69,188, 54,107,206,221,152,243, 91, 54,252,150,252, 22, 66,199, 60, 93,152,150,153,
+ 97, 56,176, 36,137,255,117, 90, 36, 11,249, 91,109,177,136, 43, 66,254,222,131,219,156, 54, 89,166, 13,198, 8,234,178,239, 58,
+124, 8, 2,255,105,141, 56, 71,124,149, 0, 20,107,236,142,210,243,206,179, 94, 19,105,201, 80,178, 90, 99,183, 17,133,254,130,
+172, 37, 89,131,205,168,232, 65,148,223, 67, 55, 48, 30, 59,150,117,165,208,240,189,103,153,103,238, 63,253,200, 60,207,242, 71,
+120,120,121,123,198,251, 1,107, 29,203,114,193, 56,203,253,233,129,154,132,243,110,156, 28,168, 22,245,115, 3,190, 15,180,150,
+ 72,169,168, 74, 57,211, 5,139, 53, 29,111,111,111,196,101,193, 4, 75,184,147, 17,173,117,150,241,174,167, 63,141,180, 37,147,
+214,149, 53,174,228,183,153,225,199, 39,242,180, 16, 92, 71, 73, 43,215,233,141,105,186,210,156,231,211,227, 3,206, 25,190,126,
+189,242,246,118,165, 15,129, 16,228,208,246, 42,232, 88,163, 88,164,154, 49,210, 1, 90, 75,182,142, 90,100, 31,222,176,108,113,
+247,182, 73, 20, 45,213, 9,185,205,194,195,241,142,135, 59,207,146, 86, 74,131,105, 89,137, 41,237,216, 65,154, 84,157, 93, 39,
+149, 89, 45,104, 39, 34,124,227,102, 16, 85,246,134,108,108,150,225, 96, 25, 6,175,234,243, 68,138,133,160, 35, 85, 33,143, 41,
+111,220, 86,230,184, 18, 27,140, 33,176,198,149,107,149,209,113,137, 48,173, 50, 78,247, 90,172, 93,215,200, 18, 43,216, 78, 70,
+131, 85, 38, 14, 93, 43,210, 45, 57, 67, 37, 83, 16,190,114,107,134,235,210,180,155,131,222,102,156,241,196, 22, 37, 32,163,131,
+148, 13, 31,238, 31,176, 86,158,177,124, 93,105, 21,252, 49,208,157, 6, 78, 7,143,143, 11, 46,101, 30,199,142,206, 57,236,241,
+142,175,159, 35,191,125,251,194, 63,127,252,145,208, 53,254,231,127,126,198, 25,129, 38,253,118,190,112,157, 34, 37,174, 12,193,
+112,124,120,192,117, 30, 99, 10, 29,134,249,186,114,141,145, 57, 47,172, 37,105, 17, 95, 5,206,211,119, 56,219, 8, 30,172,169,
+194, 52,183, 50,134,181, 22, 82,245,152,108,101,207,105, 29,167,206,115,189, 92, 88,214, 9, 14, 35,166, 86, 33,103, 85,191, 95,
+156,182,105, 8,134,122,215, 37, 20,227, 93, 6,181,245,239,184,234, 27, 23,222,239,123,185,102,110,194,186,237, 0,220, 56,254,
+173,222,186, 2,107, 61,165,149, 77,249,117, 19, 69,226,169, 86, 24,226,155, 64,104, 99,208,111,199, 78,126,135,121,117, 13,197,
+117,108,133, 64,187, 93,234,219,170, 0,244,249,222, 4,152,130, 86,221,102,144,213,138, 55,186,180, 66,109,153,174,107, 56, 43,
+ 81,148,185,137,178,124,240,142, 90, 50,105,145,128,149,206, 9, 94,122,158, 19,214,193,221,208, 49,165,130,243,133, 59,111,240,
+ 86,212,253,197, 52,130, 51,187,239,127,163,110,109, 98,166, 45,234,215, 24,135, 87,246,189,121,231,165,175, 77, 4,124, 75, 20,
+241,222,186, 22,138, 17, 63,181,197,136,250,221, 88,156, 17, 16, 87,179, 71, 50, 17, 91, 10,142,134,247,154,139,238, 2, 54, 25,
+226,146,148,132,153,249,242, 34,161, 52,243, 90, 72,165, 17,179,164,192, 57,107, 49,225, 34, 93,101, 92, 9,177,200,231,165, 33,
+ 34,201, 24,174, 75,225,117,145,162,216,153, 29,254, 14, 6,214, 34,202,241,224,196, 25, 96, 29,244,202,235,157,149, 71, 16,156,
+ 35, 56,201,236, 40, 85, 10,213, 57, 59,156,105, 28,250,192, 37, 46,172, 41,115, 24, 6, 2,134,111,151, 21,111, 61, 95,222,222,
+184, 44, 51,127,248,120,207, 16,122,174,243, 66,170,149, 97,232,161, 72, 14, 64,210,217, 94, 83,145,100, 35, 83,240, 59,155,124,
+139, 55,173, 77,216,235, 37, 75,103,234,149,171,145,170, 80,234,114,169,106, 43, 20,114,101, 53,130,184,240,186,195,146, 76,118,
+ 7, 49,105, 40,148, 99,190,206, 56, 39,107,151,162,171, 60, 43,237,178,120,243, 85,199,213,148,117, 79,173, 52, 15, 93,103, 49,
+ 29, 42,124, 83,145,181, 19,180, 47,136, 11,197,170,104,179,105, 97,236,189,149,233,166, 70,179,118,214,110,184,184,125,109,102,
+138,122,242, 13, 56, 83, 85,177,175, 29,254,198, 60,192,226,172, 35,155, 44,238,166, 38, 69, 96, 73,149,238,216,145,170, 76,248,
+ 78,167,123, 92,202, 55, 75, 93, 45, 98,197,108, 13,131,186, 15,114,161,180, 34,236, 15,175,214, 39, 5,253,248,205,195, 58, 28,
+ 70,137,211,180, 34,132,248,237,183, 47,184, 16, 8,125, 47,149, 88,217,120,194,149,117,141, 34, 32,201,101,247,221,110,187,192,
+170, 99,175, 86,139,124,224, 24,114, 51,212,148,120,252, 36, 25,217,113,137,244,125, 96,186, 46,196,165,112, 56, 28, 57,127,123,
+ 97,116,142,223, 94, 94,201, 45, 48, 6,203,186, 94, 89,107,230, 79, 31,126,224,216,123,190, 45,147, 88,191, 16,160,193,141, 63,
+ 44,126,196,156, 11,105,190, 96,135, 14,163, 35,104,214,133,117,158, 41, 41,115,208, 3, 26,103,232, 14, 35,227,225,196, 56,140,
+ 60, 63,255, 70,137,153,235,121, 98,248,120, 32,216,142, 52, 95, 9, 99,207,203,151,223,152, 47, 19,107,202,156, 30,238,249,248,
+241,129,183,215, 51,111,231, 55, 98,105,220, 31, 58, 2, 14,175,180,161, 92,170, 8, 56, 74,145, 68,167,190,167, 96, 40, 77, 94,
+228,193, 24,178, 17, 68, 33, 26, 58,144,154, 83, 27, 77,161, 15, 29,119,119, 71, 32,144,203, 66,140,137,121, 21,112,141,175, 14,
+235,165, 90,115, 94, 84,241,173,102,188,109, 4,165, 97, 25, 44, 41,101,241,231, 87,121, 96, 67,231, 24,199, 78, 98,114, 83, 38,
+198, 4,165, 82,171, 19, 71,138,109,202,124,110,123,167,183, 76,145,228, 43,115,174,124,121,157, 57,142, 29, 14, 88, 99, 33,198,
+198,146,178,118, 61, 82,137,186,182,226, 29,140,206, 74,101,166,160,240, 53, 85, 46, 25, 82,182, 92,179,228, 32,251, 42,211,136,
+163,183,100,215, 56,231,133,105, 22,232,196, 15, 39,207,161, 7,103, 34,197, 91, 72, 11,182, 84,134,241, 68, 55,142,244, 7,131,
+107, 66,231, 59,121, 71, 8,158,251,135, 39, 62,127,155,249,247, 95,191,240,199,199,143, 12,195,129,255,247, 63,255, 70,109,134,
+206, 53,126, 61, 95,153,215, 44, 26, 4, 83, 25,239, 30,177,157,199, 55, 24,176,164,184,178,172, 11,107, 76,172, 37, 9,146,178,
+ 74,140,234,225,216, 49,140,129,208,121,172, 55,251,168,176, 10, 21, 86,158,125,205,174, 23, 0, 11, 50, 61,185, 59, 72,135, 90,
+213, 0, 83, 42,165, 37, 90,243,186,207,118, 26,188, 34,155,238,255,170, 74,151,203,169,238,118, 26, 33, 88, 73,122,214, 30,219,
+210,208,131, 70,148,200,236,112,216,219, 37,182,121,149,171,217,198,160,183, 20, 56, 74,125, 55,158, 87, 80,168,218,166,110,182,
+ 29,115, 67,143, 42, 61,112,163,233,109,151,186,179, 98, 81,170,223,121,227,217,215, 50,117, 27,143,242, 62,214, 85,188,214,109,
+143, 4,149, 52, 43,241,240, 54,114, 92,133,249,109, 28,121,205, 34,236, 58, 4,233,140,107,165,247,134,126, 24, 37,127,177, 22,
+193,184,218,219, 84, 66, 58,163, 77, 40,103,212, 41,173, 83, 4,201, 26,210,168, 79,203,154,197,113,179,196, 76, 92, 43,107,105,
+ 84, 35,157,208,232,165, 88,171,120, 92,223, 17,134,158,140,165, 45, 11,190, 37, 33,162, 21, 65,147, 98, 27,203,180,242,118,141,
+ 92,166,196,146, 10,243,154, 89,214, 74, 74, 77, 16,176,213, 16, 21,238,115, 8,149,243, 28,105,165,225,114, 38,165,138, 55,242,
+ 44, 76, 73,166, 30,223,166,198,219, 34, 23,186, 65, 28, 46, 65, 89,253, 81, 25, 9, 69, 71,235,222, 65, 10, 50,138,119,206, 96,
+ 77,101,240,134, 88, 34,173, 21,114,146, 64,173,224, 51, 93,111, 89,163,184, 21,250,206, 83, 90,227,235,229, 74,177,134,154,224,
+ 58,205,244,157,135,206,243, 50, 45,164,156,233,250, 78,163, 74, 21, 49,108,234, 78, 70,148, 11,114,139,122,190, 69,238, 54, 85,
+127, 90, 11, 49, 3, 36,250,160,130,204,106,104,205, 42, 65,205,236,171, 71,217,202,217,157,119, 96,118, 8, 76,195,118,129, 28,
+ 19,203,178, 42, 0, 73, 3, 99,222,165,163, 57,183,105, 67, 54,200,139,236,221,105, 82,252, 30,189,163, 40,198,216, 90,153,186,
+224,110, 78, 16,222,133, 77, 25, 99,240,198, 73, 83,146, 43,161, 19, 88,142, 76,173, 20,238, 83, 42, 75, 94,241, 67,184,189,191,
+ 42,176,163, 33,207, 57,183,104,100,107,236, 86, 30,239, 26,166, 96, 61,206, 4,166,203,132,249,157,116,250, 2,118, 18, 65,107,
+209,209,187, 53, 55,160, 81,169, 82,172, 59,235, 4, 20,134,193,185,128, 55, 70, 66, 25, 92, 16, 56, 75, 63,244,196,184,240,249,
+215,207,124,252,248, 59,124, 31,100, 33,175, 41, 61, 57, 23,114,142,154,225, 91,100, 47,117, 99,226,237,223,100, 69,170,175,210,
+132,133, 92, 74,228,241,254,132,109,242, 16, 62,221, 63,240,249,215,175,116, 67, 39,112, 18, 37,206, 61,191, 62, 51,116, 2, 12,
+ 88,211,204,221,227,145,223, 63, 61,113,185,206,148, 84,113,193,221, 84,189,218,144, 56,231, 8,125, 71,140,137, 84, 27,163,177,
+116,135,129,183,215, 51,203,178,236,180,180,174,147,209, 77, 55, 28, 56,222,221, 49,140, 35, 53,101, 98,148,209,216, 52, 95,249,
+240, 79, 63, 49, 93,207,244,206,227,173,101,157,102,214,121,161, 26,199,227,227, 35,193, 24, 94,207,103,166,105,166, 11, 86,249,
+242,102, 87,207,206,107,102,141, 25, 3,116,125, 47,137,113, 49,145,151,196,154, 43, 31, 58,207,115, 19,140, 46, 77,227, 1,189,
+199, 54, 8, 62,112, 26, 71,134,161, 39,214,196, 20, 87, 46,115, 36,103, 81, 86,249, 32, 57,208,198,130,183, 14,175, 71,184,177,
+ 13,111,197,218, 80, 11,172, 57,239, 34, 70,103, 28,125, 47, 86,170, 82, 26, 41,174,212,168,156,113, 18,182, 72,129,100, 29, 36,
+228, 48, 93,115,229,101, 94,161, 26, 81, 40,231,198,215,231, 69, 71,192,154, 71,172, 23,209,150,217, 94, 74, 38, 85, 33,230, 29,
+ 90,196, 91, 67,172,137,101, 21,126, 51,192,189,119,248, 62, 16, 20,175,233, 53,164,228,100,225, 24, 28,125,232,248,241,241,158,
+209,119,132,102, 96,137,148,180, 16,142,119,248,163,199,143, 70,246,167, 57,115,104, 34,166,250,240,241, 7, 94,207,134,255,248,
+199,111,124, 60, 28, 24,198, 35,255,246,215, 95,104, 13,122,231,248,118,158, 56,103, 25, 21,146, 34,135,211, 61,110, 24,119,101,
+125,205,137,101,157,152,162,236,209,179,118,162,206,123,142, 99,199,113,232, 20,143,235, 81,203,189,238,249,100,214,210,140,147,
+110, 64, 39, 86, 45, 21,172, 21,145,160, 48,190,147, 92,224, 70,151, 83, 45,239,226, 43,163, 97, 18,110, 99, 98,191,187, 17,183,
+203,239, 61,187,189,188,143, 72, 53,251,246,238,221,238,252, 93,216,134,198,223,138,144, 70,254,156,109, 92, 95, 21, 12,211,140,
+ 92,182,118, 35,193,169,158,164,153, 91,199,141,210,178,104,223,231,174,239, 49,159,187,133,105,179,185,105,118,250, 54,214,174,
+ 34, 0,219, 20,247,183,104, 75, 17,212,214,154,164, 11,169,219,129, 85,132,167,128, 60,227, 81,187,221,161,247,120,219, 36,231,
+ 60, 23, 58,111, 8, 86,189,186, 52,221,107,243, 46,161,139,221, 62,164,217,113,123,112,149,117, 91,241, 43,238,148,101,213,203,
+ 60,201,174, 27, 42,195, 32, 9, 90,214, 7,106, 11,132,254, 64,240, 3,235,252, 70, 90,223,176,166, 18,188,216,237,174,243,202,
+101, 46, 92,150,204,101,158, 89,231,204, 58, 85,146,105, 68, 77, 34,107,138, 84,118,166, 49,122,153, 57,123, 12,211, 37,202,251,
+145, 11, 93,133,222, 1, 9,178,107, 28,156,161,179,149,193, 65, 74,134,168, 99,233,217, 86,230,181, 80, 49,140,157,165,115, 77,
+ 35, 84,171, 38,184, 25,114, 81, 2,167, 53, 68,141, 69, 78, 73,108,166,177, 52, 98, 18,129, 85,231,101,223,127,190, 78,212, 10,
+107, 17, 33,106, 23, 28,247,119, 71,230,185, 16,211, 42, 76, 9, 19,169, 56, 90,174,164, 34,141, 69, 8, 50, 45,202, 89,241,199,
+174,126, 79,155,211,127,207,181,146,146, 8,167,131,194, 89,196,245,129, 94,182,155, 45,107,155, 94,189, 3,193,120, 21, 70,215,
+134,115,129,203,249, 74,156, 38,172, 17,191,254,174,174,183,110, 87,129,111,100,205,186,237,173,183, 12,130,182,137,183,101, 58,
+233,220,109,180, 94,148,183,111,116, 58,179, 77,181,154, 19, 22,127,201,117,207,105, 48,187,232, 77, 69,147,185,236, 58, 24,176,
+ 90,104,155,157,193,178,161, 95, 13,230,150,197,222,196,238,154,171, 54, 27, 67,224,114,153,196,247,174,207,179,164,210,165, 91,
+232,173, 78,234, 36, 68,169,237,169,140, 27,190,215, 59,139,111,250,169,123,235,213, 27,236, 57, 63,191,146,150,136, 27,252, 30,
+129,186,129, 1,150,121, 97,141,139,112,194,223, 29, 60,155,162,111,203,103, 54,214, 96,178,140,104,115, 1,231, 2,167,211, 29,
+ 49, 37,198, 67, 71, 8,142,183,183, 55, 14,135, 19,203,188, 96,156,231,249,245,149,214,144,189,199,245,140,115,158,255,254,231,
+127,193,205,194, 76, 54,182,233,104,177,234, 97, 36,112, 68,239,197,199,253, 54, 93,229,239, 59, 79,176,158,184, 68,125,224,242,
+174,114, 12, 67,207,225,254,142,241,120, 98, 60,158, 88,231,137,146, 18,111,175,111, 28, 78, 71,134,174,227,243, 47,191,242,233,
+ 95,254,204,219,151,103,166,215, 51,235, 28, 57,220,159,184,127, 56,114,189, 92,152,174, 87, 98, 44, 60,220,141, 18,123,106,149,
+254,212, 26,211, 26,133, 35,108, 13,227, 56, 50,116, 61,243,178,138,200,205, 88,134,222,147,207, 55,178, 87,206, 5,215, 55,172,
+ 51, 12, 93,224,120, 56,208,117, 29,175,151, 11,151,121,150,130,160,100, 14,193,139, 16,202, 54,130,147,137,138,109,183, 17,143,
+ 65, 46,154, 88, 26,106,243,149,113,220, 32, 99,220,235,101,149, 46, 40,103,217,212, 52, 13,156,168,162, 77,104,181, 50,165,149,
+ 37,174,196, 12,175,147,140,232,171,166,125, 53,221,153,121,103,190, 75, 27,139, 89,198, 71, 37,195,120,132, 79, 15, 15,184,106,
+ 48,185,241,188, 46, 88,159,232, 44,187,143,222, 25,217, 19, 5,245,187, 38, 16,181,190,179, 60,222,157, 56, 13, 3, 7,231,240,
+185, 80,215, 68,232, 7,186,113, 36,116,158, 96, 42, 54, 25,124,107, 12,165,242,244,244, 35, 75,113,252,199,223,254,193, 49,140,
+ 28,134,158,191,252,250, 89,209,181,240,237,122,229,154, 11,189, 15,196, 53,210, 31, 15,116,135, 3,173, 73,113,208,138, 56, 37,
+166, 34, 23,122, 42,194,210,118,222, 50,140,129,195,216,209,245,162,229, 48,206,238,224,158, 77, 9, 91,181,218,119,206,146,107,
+ 22,145,164, 30,104,206,236,147,106,112,134, 82,146, 36,203,105, 23,211,178,138,218,172, 38, 45, 85,143,179,254, 38, 12,218,119,
+209,183,136,214, 45,128, 69, 14, 19,171,214,209,118,179,213,180, 27,107,154,157,182,253, 62, 55,102,219,230, 25,197,190,138, 7,
+122, 31,251,111, 86,183,218,246,195,118, 99,226,168,180, 71, 35, 99,173,118,249,220,186, 49,115,131,118,136, 46, 64, 89,115,181,
+236,105,234,117, 11, 8,218,150,215,173,232, 24, 95,177,178,206, 9, 15,221, 8, 44, 37,197, 68,174,149,208, 7,172,105,228, 82,
+ 88,214, 66, 53, 2,150, 17,156,173, 20,185, 6,243, 93,112,141,127,247, 57,184,189,131, 23,210,153, 20,171,242,181,214, 84,152,
+163,120,227,155,166,176,117, 33,112, 56,157,176,225,128,237, 14,248,190,163,149,149,151, 47, 95, 41,235,132,117,178,187, 60, 47,
+137,243,117,230,237,178,114,153, 50, 75, 18, 60, 41, 73,181, 12,166,209,123, 57, 91,203, 6,119,201, 82,156,149,218,136,250,193,
+230, 36,254,247,106,128,160,217, 25, 58,205,240,222, 50, 90,195, 48,222, 72, 4, 0, 83,148, 49,190,139,133,230,128, 32, 14,131,
+ 33, 72,177,219,121,105,126,114,201,196, 69,207, 27, 21, 79, 26,197,180,110, 54,203,156,147, 52, 97, 77,166, 13,193, 59,142,227,
+128,193,240,250,114, 38,230,172, 92,139,142,101, 73,172, 75, 36, 27,203,221, 56, 48, 54,105,106, 54,197,251, 38, 44,119,234,234,
+144,137,221,141,117, 30, 58,143,243,106,151,178, 70,130, 99,140,134, 75, 25, 5, 14, 25, 9, 95, 49, 90,128, 6,239,149,232,103,
+177, 33, 48, 45,179,228, 87, 88,251,157,181,211, 26, 96, 19, 45, 22,177,221,237,230, 76, 37, 53, 82, 37,130, 59,109,239,140, 70,
+ 66,179, 77,172,204,166, 48,103, 79, 78,116,110,131,100,105, 58,125, 43, 58,238,215, 35, 65,133,125,198, 40,133, 83,139,131,166,
+207,158,209,132,191,247, 4,199, 77,132,186,113, 44,182,228,202,203,229, 66, 78, 25, 23, 60,214, 54,172, 9, 10,210,105, 59,137,
+ 81, 79, 33,153, 62, 53,153, 20,108, 44,126, 85,191,203,161,228,244, 61,235, 67,224,183,117, 33,215, 66,232,187, 61, 88,100, 59,
+ 48,226,186,146, 83, 86, 1, 92, 17, 3,124,109,178, 99,212,208,251, 82,100,196, 96,149, 77, 94, 43,140,135, 3, 93, 31,136, 41,
+241,251,223,127,226,229,242,198,229,114,229,241,241,137, 90, 5,155,120, 57, 95,185, 59,158,128,202, 60,207,252,249, 95,254,137,
+159, 62,126,224,243, 95,254, 78, 69,242,101,251,225,160,136, 61, 85,218,214,138,239,130, 4,123, 68, 65,143,134,174,103,186, 94,
+ 89, 47,145, 83,239,121, 43, 5, 87, 11,198,122,198,187, 59,250,211,129,254, 48,208,117, 3,151,183,103,214,235,196,219,249,133,
+ 63,254,203,191,112,126,126, 97,232, 2,253,208,243,246,252,204,122,153, 89, 75,230,225,241, 1, 87, 43,231,203,133,235, 26, 37,
+200, 69, 49,160,214, 58,156, 21,149,120, 76,178,143, 13, 26,148,226,141, 82,161, 82,102, 8,129,222, 41,189,200,104,229, 87,171,
+136,196,156, 97, 24,122, 14,195,129,101,141, 92,167,137,105, 94,137,185, 48,116, 98,245, 64,241,136,157,119,120,119, 11,103,176,
+186,217, 74, 53,147,139, 70, 7,218,166,220,232,149, 53,139, 32,195, 84, 69,120,154,172, 5, 17,164, 44,161, 1,115,142,188,205,
+ 43,115,202, 44, 83,217,109, 79, 77,109,204,219, 88, 55,230, 6,165,144, 11,248, 14,156,135,143, 31, 30,248,233,231, 31,248,241,
+225,196,229,245,149,223,126,123,227,245, 50,115,157,146, 18,160, 26,157,243, 84,228,129,243, 42, 34, 41, 84, 25,133, 98,185, 59,
+ 30, 69,128, 71,195,228, 66, 89, 23,156, 15,244,167, 3,190,179,130,189,173,141,208,192,149,149, 15,159,126,198, 31, 30,248,191,
+254,231,255,161,119,142,131,239,248,237,219,171, 20,152,173,242,117,186,114,193,112, 63,142,148,117,149,188,226,113, 20,146, 85,
+147,224,135,101,153,153,114,228,154, 86,230, 24,165, 67,241,224,131,163,239, 3,161,247,132, 78,208,160,219, 56,173, 41,238, 88,
+252,161, 26,101,105,203, 30,209,184,141, 12, 55,248,146,105,130, 29, 50,198, 98,138,236,126,155,194,146,204, 22,159,219,120, 23,
+150,177,133,179,188, 39, 90,189,131,162,104, 62,183, 81,181,235,166,242,221,196,104, 70,149,191, 91,120,197,118, 24,128, 21, 66,
+160,117, 26,172, 81,117, 71, 43,157,184, 53, 6,154,211,140,106,233,108,229,230,175, 55, 68,152,189,133,206,188, 75,105, 87,122,
+ 22,123, 86, 59, 42, 92, 42, 85,131, 48,204, 13, 92,179,253,123, 45,202,184,216,244,122, 45,238, 57,239,206, 26,225, 96,148, 38,
+ 88, 77,181, 60,109,130, 36,175, 56, 78,234,150, 53,129,238,116,237,187,240,140,119,224, 15, 29,179,110,202,246,152, 11,107,108,
+ 76,115,146,160,165, 42,211,140,206, 7,134,161, 99, 60,157, 8,195,145,110,124,194, 58,207,235,243, 63, 56,191,253,131,150,164,
+115,155,214,196,219, 37,113,153, 34,151, 37, 49,167, 76,206,242,113,117,198,209,186, 45,108, 71,116, 36,243, 34,124,133, 92, 32,
+151,155, 64, 79, 29, 93,180, 34, 69,112,117,134, 92, 27, 9, 81,176, 47,165,145,178,108,170,173, 7,175, 98, 88,154,163, 29, 28,
+169, 72, 14,134,181,144,173,140,153,179, 78, 3,252, 96,241,182, 81,170,116,253, 49, 85, 98, 18,187,156,197,208,212, 98,152,214,
+182, 7, 54,245,206,224,157,188,159, 41,174,212, 28, 25,135,158, 15, 79,143,196,180,242,250,118,101,154, 42,198, 9,210,183, 54,
+ 88,215, 66,206,226,211,238,123,135, 53, 1,235,111,190,116,177,202, 26,114, 18, 17,176,239,110,133,107, 67,196,184,214,202,200,
+124,187, 88,157, 49, 58, 66,151,102, 39,236, 25,234, 18,129,123, 62, 95,100,210,169,207, 97, 86, 20,181,115, 94, 58, 91,133,115,
+ 25,141,141,222,226,132, 55,100,245,150,136,104,212, 10,102,117,228,191, 57, 53, 54,117,250, 6, 90,114,214,104,156,176,234, 96,
+244, 31,150, 85,150,193,216,186, 63,159,168, 0,115,235,168,173,213, 98,108,187, 67,117, 31,111,172,195, 40, 78,184,149, 76,201,
+133,174,235,185,190,173,156,167, 11, 31,158, 62,136, 56,206, 54,205,128,103,255,190,173,109, 10,157,108,251,252, 73, 6, 20, 66,
+116,244, 70,213,140,182, 84, 58,231,233,125,224,203,151,111, 44,243,162, 94, 92,179,143,181, 74, 41,196,121,149,203,188, 65,206,
+141,234,219,158,128,214,148,145,155, 85, 64,183, 85, 72,169, 86, 78,135, 30,211, 44,131, 15,124,252,225, 35,127,251,251, 47,106,
+ 75,145,120,187,235,245, 66, 55,120, 30,143, 71,254,246,203,103,236,208,243,223,254,249,159,136,211, 85,205,250, 42,204, 65,254,
+220, 86, 11,205, 10, 63,184, 15,131,236,172,167,132, 27, 4,209, 55, 93,102,172, 19,109, 99,106,149, 80, 27,253,208,243,244,244,
+ 72,127, 28, 25, 15, 3,205, 36,230,235,196,219,243,179, 92, 42,199,145,255,243,127,254,141, 63,253,244, 19,113, 73,130,109,140,
+147,236,222,239, 14,204,215, 43,243,188, 80,107,227, 48,246,152, 42,150, 60,239,100,187, 26,215, 12, 85,138,164,174, 19, 12,235,
+148,102,174,107, 20,188,164, 9, 50, 54,219,147,138, 10,227, 97, 16,250,155,243, 28, 15, 71,178,169, 76,203,194,219,229,202,186,
+102,253,223,204,141, 95,111,189, 84,172,166,146,105, 4, 42, 14,179,251, 71, 55,177,169,117, 18,162, 49,205, 43,181,138, 88,175,
+211, 74,180,106, 69,158, 26,164, 44, 86,185,231,121,225,101, 78,180,172,163, 84,187, 29,152,134,148, 13, 37, 53, 1,101, 0, 63,
+126, 24,248,243, 79,159,248,241,135, 59,250,161,103, 28,159,192, 24,190,254,242, 11, 95,191, 94,120, 62, 95,121,157, 86, 74,210,
+ 76, 0, 93,181, 57,227, 56,141, 35, 22, 88,115,220, 59,210,187,195,129,227,112, 36, 88,232,107,131, 24, 1, 67,119, 58, 98,122,
+ 71,232, 43,189,109,184, 2,117, 89,248,233,211, 71, 30,126,247, 51,255,247,191,253, 7, 37, 21,108,240, 60, 95,223, 4,130,145,
+ 50, 95,166, 51, 87, 23,120, 56, 30, 9,165,145,179,193,157, 78, 18, 39,154,101,148,181,198,194,154, 11, 83,137,130, 37, 46, 85,
+ 88,212, 46,112, 28, 60,135,193, 19,250,110, 87,164,151,220, 36, 11,122,235,150,154, 21,225, 87,171,148,242,253,244,188,105,104,
+ 5, 52,197,100,202,103,208, 54, 81,154,118, 17,149, 6,169,226,125, 80,126,122,194, 57, 21,166,238, 57, 82,218, 41,191,203,183,
+223,217,234,218,126, 90,165, 73,237,193,166,223,145,177,202,158,158, 40,155,204,170,247,161,112,208,155, 58, 31,244,152, 96,231,
+135,152,205,250,102,246,180, 69,167,161, 25, 85,131,103,110,234,250, 34,197,219, 78,160,105,223,209,231,222, 95,232,173,150,253,
+251,218,180, 11, 77, 33, 56, 41,203,193,152,155, 16,207,140, 23,145,159,217,185,242, 22,167,235, 54, 89, 59, 84,156,105, 20, 44,
+198,148, 27, 3,119,155, 83,108,150,187,170,227,213, 92,137, 37,179,172,141,105,137,164, 36, 1, 49,206,123,198, 78,236,179,119,
+119, 63, 96,199, 19,110, 24, 41,121,230,229,243,191,179,188, 78, 52,103, 88,115,226,124, 93, 56, 47, 11,211,220, 72, 81, 46,235,
+134, 60, 27,182,200,207,186,102, 72, 89, 20,233,185,130, 78,102,223, 81,246,182,168, 86,153, 97, 88, 81, 61, 40, 55, 66, 64, 62,
+110,227,112,180,186,131, 79, 90, 85,202, 88,107, 52, 10,214, 22,130, 53,244,157,229,120,127,144, 27,163, 47, 0, 0, 32, 0, 73,
+ 68, 65, 84, 96, 28, 70,250,222,137,102,198,137,102,163,203,153,236, 50,222,103,130, 75,196,140, 34, 70,183, 9,142,190,239, 91,
+247,222,117, 88, 39, 59,240, 16, 60,125, 8,152, 44, 83,187, 57, 54,240,186, 90,114,150,235,117, 81, 69,186,229,120,240, 80, 69,
+161,110,173,209,194,244,102,217, 72, 85,222,129,224,213,166, 37,226, 8,245,248,235, 5,110,229,103,223,158,245,109, 15, 30,122,
+ 73, 69,244,193, 51,205, 43,215,183,105,215, 11,185,125,148,221, 8,246,150,183, 32,233,117,130, 66,206,187,229,114, 67,171,110,
+127, 57,217, 71,107,113, 80,179, 22,199,238,253,163,116, 43,174,155,142,184,171,185, 81,229,246, 44, 66,197, 61, 55, 77,186,115,
+206,107,209,192,119,116, 72,120, 95,116,138, 22,165,149,172,171, 0, 15,165,114,185, 94,249,244,227, 39,140,147,207, 76, 52, 29,
+ 85, 29, 43,130, 24, 15,154,196,103,180,120,114,106,133,173, 52,188,213,238,169, 26,232,134, 30, 67,229,229,249, 85,146,127, 84,
+130,191, 31, 86,198, 48, 79,147,142,241,154,198,227,177,239,200,182,189, 95, 81,251, 76,214,157, 70,169, 43,227, 16,104, 37,114,
+247,233, 35, 33, 88, 94, 94,159,233,187,158, 46, 4,206,215, 51,211, 37,241,241,135, 71,222,206, 11,215,101,225,143,127,250, 3,
+159, 62,126,224,243,223,254,138,169,149,146,149, 70,101,100, 71,183,193, 92, 48, 14,215, 7,241,206,251, 74,112,158,154,139,194,
+ 64, 4,191, 88, 52, 73,236,248,120,164,191, 63,114, 56, 30, 25, 79, 71,166,183, 43,243,229, 66,188,206,252,254,207,255,196,235,
+229, 27, 57, 37,142, 15,119, 66, 20,155, 22,214,165,242,240,243, 29, 37,103,150,229, 74,140, 81,199,197,158, 92, 86, 58,235,241,
+170, 46, 93, 83,166,169, 98, 49, 56, 47, 15,235,154,152,230,164, 7,181, 66,120, 54, 29,131,133,241,208, 99,172,163, 11, 29,222,
+ 57,230,180,242,118,157,184, 92,103,124,232, 24,130,163,213, 13,105,233,197,154,131,134,227,152,182, 83,154,182,125,219,198,242,
+ 23, 37,188, 40,101,139, 10,146,146, 17,240,136, 67, 72,103,169, 37,166,156,120,187,174,188, 94, 86,156, 7,227,133, 45,188,168,
+183,117,141, 34,128,250,233,216,241,199, 63,222,241,199,223,253,196,211,135,159, 56, 62, 28, 69,233,191,174,196,146,152,207,103,
+206,151, 51, 47,151,153,151,107, 66,194,224,228, 5, 57,157,238,232, 12,156,198, 35, 93, 48,164,154, 73, 73,190,231,167,227,129,
+187,195,136,199, 18, 74,133,156, 41, 41,114,124,122, 36,116, 1,111, 42, 7,219,227, 27,196,183,137,223,255,240,145,167,127,254,
+111,252,175,127,255, 11,231, 23,177,222, 44, 49, 97, 93, 71,155, 47,252,227,245, 25,219, 29,248,225,120, 18,107, 95, 92,113,167,
+163,218,129, 50, 62, 23,209, 13, 52, 81,241, 47, 73, 70,188,178,130,114,116,189,195,135,158,190,235, 68, 76,101,141, 98, 26,235,
+126,201, 86,221,169,153, 90,117,116, 39,147,163, 29,123,217,140,162, 97,221,158, 39, 94,213, 13,176,237, 9,221, 22,240,226, 52,
+141,202, 26,245,199, 86,197,180, 58,237,248,235, 45,112,165,105,242,221,150,224,213,218,174,144,109,123, 65, 33,158, 51,131, 72,
+136,101, 12,174, 46,137,166, 32,139, 42, 63,151,177,242, 60,236, 56, 90,115,187, 12,183,139,249,214,233,222, 46,158,162,153, 14,
+194,130, 40,123,151, 94,138, 20, 51,109,203,135,215,114,160,110, 4,173,214,116, 4,191,209,197, 12,133, 44,182,197,106,200, 37,
+ 3,134, 92,154,198,251, 22, 29, 57,106, 70,187,201,224,188,192,173,208,201,149,115,216, 42,113, 82, 27,120,103, 27,197, 87,245,
+115,214, 90, 5, 60, 84, 10,113,173, 76,211, 74, 76,130, 58,245, 93,224,112,232,185,187,191,231,254,227, 71,172, 61,224, 58, 79,
+ 94,206,156,191,252,141,101, 61,147,220,194,243, 75,228,245,178,112,142, 89,180, 4, 25,154, 43, 98,169, 74, 70,200,113, 10,165,
+ 41, 69,152,221,165, 26, 81,245,235,174,213, 25,131,211,110,202, 90, 81,230, 59, 77, 9,171, 94,148,219,197,201,231,238,205,109,
+101,165, 87,136,192, 89, 92, 21,207,121, 51,180,130,224, 98, 77,227, 49, 12,252,241, 79,127,224,254,113,224,224, 10,109, 73,188,
+ 92,103,190,189,158, 89,166, 21,151, 13, 62, 24,236, 82, 73,107, 38, 55,104, 90,132,109,246, 44, 49, 42, 20,130,131,190,239,104,
+213,240,124, 93, 88,106, 37, 24,207, 93, 63,112,127,231,232, 58,203,175, 47, 43,231,107, 18,203, 94, 39,194,179, 53, 86,186,224,
+105, 97,131, 18, 73,120, 73, 41,134,186, 90,194,193,237, 26, 28,212, 42, 88,177,120,239, 5, 13,174,197,227, 70,108, 43, 45,209,
+247, 7,165,161,138, 37,108,121,189, 48,197,153,222, 56,157, 6,200,100,203, 40,119,221,110, 4,193, 77,227, 82,183,130, 18, 45,
+ 72,111, 93, 46,237,198,105,183, 21,154, 88,145,116,231,237,148,237, 80,116, 55,174,154,144,182, 17, 27,117, 8,254, 95, 86,206,
+239,197,174, 55,180,171, 21,222,196,142,133,214,201,209,187,119,182,214, 42,214,219, 14, 94,174, 23,104, 18,160,229,172,193,120,
+177,246,229,170,103,122, 19, 97,238,182, 38,176,205,224,141, 5,181,243,249,237,210,206, 85,198, 23, 49, 73,231, 50, 30, 70,250,
+190,251, 46,102,175,164,149, 52,207, 50,246, 54, 82, 21,136,178,181,108,172,186,125,247, 16,156, 35, 89,163,213,176,101, 28, 71,
+ 44,134,159,127,250,145, 47,223,158,153,167,194,112,232,169,214,114, 57, 79, 28, 78, 61,167,227,137,127,252,237,153,174, 31,121,
+248,240, 72,174, 91,104,204,198,187,150,192,129,130,163,102,168,200,216,125,232,123,214,117,197,166, 6,189,164,128,213, 82, 4,
+148,147,179, 68,138, 90,203,253,135, 39, 14,247,119,244,227,128,115,134,207,223, 94,152, 95,223,232, 31,159, 24,239, 78,252,237,
+127,255,127,220,223, 61, 16,124,224,243,215,191, 49,159, 47, 12,135, 3,253,241,192,121,186,176,174,137, 84, 51, 15,227,157,216,
+ 12,246, 8, 62,179, 19,240,172,179,130,119,237, 58,186,224,121,190, 78,100,110,187,150,132,217, 43,189,222,139,119,178, 57,131,
+117,158,212, 36,195,254,235,203, 87,156, 15,116, 65,140, 22,169, 52,250,161, 35,120, 79,239,229,193,202, 89, 60,189, 85,199,138,
+173,170,183, 82,129, 14,169, 36, 2, 22,111,149,114,181,117,151, 5,140,173,164, 10, 75,138, 92,150, 85,148,155,189,116, 22,165,
+192, 92, 12,207,179,120,223,255,244,233,145,127,253,215,127,229,247,159, 62,113, 58,138, 34,124, 8, 29,161, 15, 2,131,112, 22,
+115, 46,188, 92, 46, 92, 46, 87, 94,166,149, 20, 43,165, 72,151,244, 79,255,252, 7,126,248,249,119, 34,217, 58, 47,148,146, 89,
+167, 11,231,203,204,195, 48,112,119, 60, 73,154, 28, 13,147, 51, 53,101,134,195,129,208,123,156,173,156,186, 1,219, 28,229,245,
+204,255,207,213,155, 53, 89,146,173,105,121,207, 26,124,218, 99, 12, 25, 57,213,169,249,112,206,161,233, 70,208, 64,155, 0,153,
+132, 33,227, 2,253, 85, 76, 50,201, 76,128, 12, 97, 38,195,116, 33, 46, 36, 33, 1, 77,183,250, 12, 53,100,101, 86,229, 28, 17,
+123,114,247, 53,233,226,251,220,119, 20,117, 89,150,153,177, 99,239,237,107,125,195,251, 62,239,197,114,193, 39,191,252,138,111,
+ 95,190,226,237,219, 91,172,183,196, 82,168,125,195,112,184,227,187,183,111,168,186, 45, 87,155, 13,174, 50, 28,135,129, 92,139,
+ 13, 44,167,140, 29, 35,185,239,137, 41,210,147, 57,165, 32,148,176, 82, 4, 27,218, 56,153,176, 84, 13, 88, 79, 54,226, 49,151,
+105,149,142,176,201,250,112, 79, 48,152,105,239,173, 80,213,156, 53, 63,228, 60,134, 47, 73,224, 72,146,117, 31,116,238, 39, 21,
+248, 4,127,193,200,196,106, 98, 6,120, 47, 23,251, 76,162,154,196,115,234,135,157,242,158,231, 49,179,142,212,167,139,216,152,
+105,132, 95,102, 65,220,196,224, 46, 58, 86, 79, 10,144, 41,249,172,130,159, 47,114,197,215, 98, 13,166,120,140, 50,190, 83,202,
+ 51,236, 99, 90,186,151, 36, 23,117, 73,211, 60, 60,107,174, 64, 58, 95,232, 26,240, 50,141, 47,167,253,250,148, 76,150,138, 19,
+ 37,116,158, 82, 35, 39, 43,147, 42,135,149,163,110,172,116,169, 20,171,208,141,168, 16, 30,171,214, 78,221, 27,171, 24, 32,150,
+ 66, 44, 72,252,241,152,233,251, 76, 31,165,235,175, 27,113,154, 92, 94, 94,179,184,124, 12,182, 17, 68,246,238, 37,251,143,111,
+ 25,246, 71, 62,238, 79,188,191, 61,112, 63, 68, 74, 16,116,180,119,144,157, 35,142,133,126, 72,132, 40,211,154, 92, 36, 34, 57,
+228,204,168,110,151, 36,110, 47, 92, 49, 4, 43,239,170, 53, 50,110,246, 70, 46, 11,231,196,222,212, 56,163, 88,102, 41,174,177,
+ 14,141, 11,144, 15, 78, 87,112,146,128,107,197, 34,166,250,133,126, 24,113,198, 81,217, 5, 85,237,184,188,172,121, 28,247,220,
+ 31,151,188,250,241, 3,175,239,247,148,193,211,216, 68,182,134,216,143, 56,180,184, 44,134,100,228, 51, 27, 66,198,157,188,172,
+ 6,189,132,133,212,214, 82,123, 79,219, 84, 28,134,196,219,221,145, 12, 60,218,212,180, 77,205,113, 20, 90,157, 49,142,202, 72,
+112,147,119,122,105, 89,201,122, 49, 21,212,149, 21, 64, 84, 57, 19,219,172,115,178, 10, 52, 73, 89,249, 70, 97, 75,133, 49,102,
+214,149, 87,175, 56,248,182,230,240,242,196, 16, 50, 77,237,230,201,148,195,146,116,108,238,157, 99, 76,154, 96,105,116,221, 85,
+202,172,253, 72, 41,202,235, 83, 58, 29,106,105,179, 22, 74, 52,122, 97, 62,184,144, 85,185, 63,143,207,231, 92, 3,133,158, 89,
+ 67, 78,250,220,155, 51,230,121,110,245,141,193, 56, 39,142,179,124, 6, 51,157, 19,224, 52,181, 45, 21,170,165,216,115,251,227,
+192, 48,244,180,203, 53,222, 90,130,115,164, 60,202,207,112, 10,134, 82,171,155,230, 32,147,212,111,111, 11,248,170,114,146,154,
+ 20, 18,117, 91,211,199,194,254,208,179, 88, 44,169,234,234, 1, 72,192, 50,156, 70,226, 24,116,119, 38, 20,171,162, 62,208,162,
+ 47, 90, 38,243,134,202, 59, 34, 34, 6, 41,198, 82,215, 45,171,205,138,139,235, 43,190,251,127,255, 28,231, 12,174,174,216,221,
+223,147, 83,230,241,211, 27,222,190,251, 72, 33,178, 94,119,172, 23, 27,198,148,136,199,147,216,113,114,146, 75, 44,229,185,211,
+165, 20,154,174,195, 90, 71, 8, 73,119,204, 82,250,196, 24, 49, 10,205, 73, 41,177, 92, 44,121,242,236, 41,213,162,163,235,150,
+ 28, 15, 61,119,175, 63, 18,134,192,163, 79,110, 56, 14, 3,239, 95,191,225, 87,127,244,199,140, 41,112,188,189, 3, 83, 88,172,
+151,140,195,137, 97,144, 46,189,246, 53, 85,213,144,227, 9,239, 37,102, 47, 38,153, 12, 72,138,142, 48,129,155, 70, 66,106,250,
+ 49,156,217,222, 5,198,156,132,179,173,185,244, 83,240,125,209,110,235,110,119, 32, 91, 71,237, 29,181, 51,196, 48,170, 16, 80,
+ 40, 91,190, 50,132, 62,144,114,192, 23,167,246, 35, 37,140,233, 78, 82,148,232,137, 94, 21,196,226,125,149, 72, 66,171,108,249,
+ 62,142, 12, 33,138, 34, 22,163,169, 65,112,123, 42,140, 41,241,235, 95,255,130, 95,125,249, 37,207,158, 63,195,185,154,166,150,
+128,146,182, 54,172, 26, 67,215, 53, 4, 10,119, 31,222,112,248,248,145,126, 12,220, 29, 36,105, 40, 43, 92,228,233,103, 55,252,
+245, 63,254, 19,234,182,225,120,123,203, 41, 64, 50,134, 99, 78, 92, 95, 95,203,120,220, 27,154, 82,176, 49, 10, 91,160,110,105,
+187, 22, 99, 51,203,182,166,174, 61,241,227,129, 69, 85,241,197,111,254, 26,239,238, 15,124,247,195, 75,170, 82,227,141,161,107,
+ 28,167,251, 61,223,253,244,134,170,170,185,218,174,112,141, 37,166, 44,156,231, 44,138, 96, 51,140,132,211,145, 20, 3,125, 26,
+ 57, 77,249,222, 70, 92, 7, 77,229,105,218,154,182,173,148, 22,231,116,175, 60,141,122,117, 23,106,156, 42, 95,103, 90,245, 89,
+234, 91,242, 76,163, 50, 86,247,119, 88,233, 12,244, 50,150,200,199,179, 18,183,104,226,214, 3,216,230,236,205,133,172, 94,106,
+ 37,254, 77, 92,108, 30,208,226, 20, 97, 57,147, 58,237, 25,253,138,209,180, 60, 52,201,169,232,247,208,168, 78, 94, 81,149, 69,
+ 61,249, 15, 71,251, 51, 27,190,156,253,232,211,158,127,250, 89,243,126,124,218,119,147, 5,195, 57,107, 10,178,198,146,170, 94,
+ 32, 39, 5,229,200,101,159, 82, 18,114, 91,182,170,197,201,115,100,171, 48,190,171, 57,174,245,140,193,117,114,185,235,122, 79,
+100, 1, 86,242, 17, 38,255,176,192,222,201,197,145,146, 80,204,198, 49,115,236, 19, 33, 25,172, 19, 2,224,229,197, 37,215, 23,
+215,152,118, 73,182, 14, 75, 79,255,241, 13,251,221, 7, 62,220,237,121,127,123,224,195,221,145,211,152, 9, 37, 81,162, 20,108,
+ 41, 35, 97, 34, 99, 38, 68,163,135,181,236,111, 67,150,117,149, 36,112,105, 7, 57,235, 13,166,115, 82, 94,119, 52,226,111, 55,
+128,119, 5,239,141,234,248, 12,109,221, 18, 53,219, 28, 99,213,153, 32,113,214, 69,163, 48,141,254,254, 57,195,253,237,158,219,
+251, 61,159,124,250, 9,181,181, 36,103, 41,214, 80,101,199,211,103, 13,221,234,192,199,143, 59,238,118,123,140,250,198,163,140,
+ 43, 20,207,106, 85, 48, 9, 67, 42, 20, 34,149,177, 84, 77,165, 10,243,204,238,120,164,144,105, 27, 9, 89, 33, 21,246,251, 19,
+190,114,248,170, 18,154,221, 56, 82, 45, 87,115, 17, 43,211,219, 36,103,151, 63,103,137,167,156,161, 36,141, 86, 45, 24,147,231,
+113,182,179,234,195, 78,130,158,182,149,193, 36,121, 31, 62,238, 14,196,172,233,106,186, 86,178,234, 70,153,206,223, 18,202,217,
+ 34, 82,204, 57,138, 88, 93, 86,162,162,119,231, 24,214, 9,121, 91,206, 25,239,147, 35, 68, 4,108, 22, 27,229,185, 47, 63,139,
+ 53, 54,231,184,190,242,128,213, 48, 75,255,181, 56,112, 22,103, 13,164, 66,137,106,105,115,142,164,169,242,165,104,196,170,179,
+ 84,109,195,238,126, 96, 8, 39,156,221, 10,180,172,106,200, 67,148,207, 71,167,131,222,123, 98, 14,148,236,164,193, 54, 50,191,
+203, 25,124,101, 45,199, 18, 48,222,210, 53, 13,247,187, 91,238,110,111,233,214,107,193,195,154,115,212,162,124,145, 35,174,146,
+144,221,140,236,112, 39, 16, 5, 69,252,115,206, 90,156, 66,103, 98,145,253,115, 83, 85, 92, 94, 93, 17,135,129,221,253, 61,190,
+246,128,225,116, 58,178,189,216,224,189,225,227,221, 61,203,213,146,174,235,232,218, 90,132, 45, 33,147,189, 32, 2,193, 16, 67,
+160,120,237, 80, 44,212, 94,133, 23, 49, 97,107, 17, 38,164,156, 9, 57, 75,165,150, 19, 37,194,213,147, 71, 92, 61,190,129,186,
+193,215, 53,111,191,255,129,215,175, 94,240,201,231,159,176, 92, 44,248,254,197, 11,170,110,193,245,245, 53,111, 95,126,199,120,
+236,105,151, 75, 82,134,225,216, 75,198,243,152, 88,111, 23,148, 28,100,215,227, 43,156, 69,146,216,146, 28,136,206, 91,154,202,
+209, 86, 2, 72, 24,194,121,215,151,115, 98,224, 44, 6,241,206,146,141, 28, 82,169,136, 56,176,143,145,218,121, 89,137, 4,201,
+ 39, 95, 52, 13,222, 90,154,202,170,239, 57,235, 56, 95, 39, 35,147,238,193,137, 85, 67,108,197, 98,117, 10,177, 72,246,178,155,
+ 4, 30, 70, 66,102,114, 98, 76,130,178, 13, 69,224, 31,187, 19, 92, 63,187,224,239,255,189,191,207, 87,191,252, 66,197, 43,103,
+168, 74,221,180,116, 93,195,118, 89,115,125,177,224,238,246, 3,111, 94,124, 79, 63, 14,236,251,145,195, 48,158,225, 98, 14,158,
+255,226,107,174,111,158,145,135, 19,198,159, 88,125,250, 57,166,242,216, 23, 47,168, 31, 93, 75,242,213,254,132, 57,238,200, 33,
+224, 42, 47,248, 74, 10,171,186, 97,181,108, 57,189,223, 81,167,200, 23,191,249,235, 28, 98,230,119,127,120, 65,127, 12,180,203,
+154,101,215,176,187, 63,242,226,135,159,168, 22, 29,143,174, 46,169,234, 74,186, 33,231, 25,211, 40, 79,216, 56,146,143, 7, 66,
+ 8, 28,211,192, 49, 14,164,105,157,225, 44, 77,237, 89, 46, 58,186,174,197, 87,150,108,213,178, 87,172, 92, 32,169, 96,167, 96,
+137, 7, 99,106,166,247,222, 78,123,236,252, 64,133,173,227,107,196,178,152, 75,209,220,227, 50, 99, 53,115,201,216, 98,117, 71,
+127, 14, 67,154, 38, 83,211,200,222, 60, 28,219,235,190,115,238,150,149,233, 63, 9,243,152,209,150,218,201, 24,167, 23,121, 82,
+ 54,180, 66, 82,180, 38, 17,187, 25,115,161, 49, 83,223, 30, 40,218,209,128,165, 89,218, 63,255,236,255, 12, 67,171,236,244, 89,
+ 73, 61, 37,179,105, 87,110, 74, 38,149,164,190,242, 50,171,192,163, 6,151, 76, 40,205,242, 96,148, 89,212, 15, 60,251,242,231,
+ 28, 72, 61,212,117,110, 60, 89,149,166, 85,109,158,178,103, 82, 97, 24, 11,253, 40, 19, 67, 95,123, 22,109,203,245,227,107, 30,
+ 95, 63, 37, 21,207,152, 10, 37,244, 28,238,127, 34,156,142,188,127,127,203,155,251, 35,251, 83,166, 31, 37, 77, 49,164, 72, 73,
+ 69,207,151, 68, 8,200, 88, 89, 47,244,152, 10, 33, 35, 59,116,161, 67,203, 65,110,152, 41, 4,198,128, 45, 5, 17,250, 91,181,
+113,137,200,202,123, 67,213,120,165,242, 89,150,222,113,200,146, 22, 9, 16,138, 20,203, 73, 63, 23, 95,201, 66,126, 90,175, 12,
+125,225,205,219,119,252,177,253, 53,237,102, 69, 86, 43,106,118, 53, 84,150,174,179,216,226,105,234,138, 91,127,207,253,254, 64,
+ 52, 78, 47, 57,212,150,235,136,250, 89, 37,132, 80,151,114, 81,218,163,116,150,222, 73,244,113,136, 61, 38, 58,154,101,131,117,
+ 86,220, 61, 22,154,182,145,252,144, 73,151,145,165,249,171,107,175,147, 37,193,119, 39, 13,249,113,182,204,193,193,121, 90, 77,
+100,203,152, 69, 92,218,181,141,132, 26, 77, 33, 99,199, 3,197, 24, 34,136,165, 87,189,219, 32,231,177,119, 78,243, 14, 38, 39,
+167,176, 64,166,224,161,156, 11, 37,102,106,197,205,162,177,176,147,221, 35, 43, 55,194,216,115,240,145,156,181,105,142, 56,146,
+ 73,137,242, 66,156, 35, 12,113, 78,153,251, 25,111, 98, 34, 71, 24,125,102,115, 38,164, 81,248, 11,206,205, 84,195,105,252, 94,
+130,208, 8, 67,217,115, 58,245, 84, 85, 37,246, 90,231, 5,179,157, 5, 57,109,141, 76,131,251, 48, 80,236,148, 29,193,172,183,
+240,198, 56,134, 52,176,233, 26, 42,111,217,221,238, 72,197,176, 94,175, 40,174,204,226,121,131, 97,236,123, 93,162,235,161, 99,
+132, 2, 69, 42,152, 44,157,137,236, 7, 45,158,164, 99, 96,216, 46, 58,218,182,226,147,103,207,185,187,127, 75, 48,137, 98, 44,
+195,105,160,169,106,182, 87, 27,222,254,248,134,170,178, 60,218, 94, 48,198, 8,181,196,191,166, 44,213,183, 68, 54, 10, 63,217,
+187, 74, 63, 82,168,155, 26, 40,132, 16,230,232,190, 52,102,156, 46,252, 75,206,116,222,241,248,179, 79,177, 77,141,175, 27,194,
+ 16,248,225,155,239,169, 26,203,246,230,138, 48, 12,188,127,243,142,103,159, 60,167, 56,184,125,249,154,108, 29,174,178,236,239,
+238, 8, 57, 49,134, 68,221, 84, 44,234,138, 97, 28,241, 86,194, 89, 74, 46,140, 33,206, 81,165,117, 85,177,108, 91,140, 85,172,
+106, 76,115,182,176,245, 50,201, 48, 69,210,210,112,142,177, 76,161, 30,133,227,208, 83, 25, 75, 82,107, 68, 76,129,182,105, 85,
+213, 41,190,214, 24, 19,198, 88,106, 87,105, 4,121, 57, 43,146,173,168, 88, 75, 84, 75,135, 57,231, 30,154, 34, 74,210, 60, 37,
+178,165,196, 41,142,226,151,142,134,144, 50,255,240, 31,253, 41,127,246,119,254, 12,223, 44, 25, 66, 15,214, 82,185,138,202,215,
+212,117,195, 98,217,209, 52, 45,109,183, 32, 19,184,123,255,150, 52,140, 20, 12,167, 97, 20,126,184,222, 88,190, 54, 92, 61,186,
+ 97,217,118,224, 10,207,158,252, 49,159,252,209,223, 32,198,158,151,127,241,151,220,190,121,197,241,246, 61,253,174, 39,164, 64,
+ 93,213,184,182, 38,155, 76,215,118, 92,109, 47, 57,222,126,196, 13, 35, 95,255,230, 87, 84, 77,199, 95,254,254, 27,222,126,120,
+207,245,122,195,227,139, 53,239,238,119,188,120,245, 22,223, 54, 92,111, 55,212, 77,165,221, 79,205, 56, 4, 66, 78,152, 16, 72,
+251, 3, 97, 24,216,143, 3,183,163, 76,126,156,149,139,163,245, 21,139,174, 85, 43, 97, 37, 46, 14, 44, 99,206, 84, 89,172, 95,
+ 78,129, 39,118, 18,187,252, 44,103,121,210,251,148,169, 89,215, 14, 69, 15, 27, 43,217,211,115, 66,149,218,198,153, 14,179,156,
+200,182, 40,201,202, 61, 24,157, 79,104, 85,221, 23, 63, 40, 20,114, 22,178,213,244,231,255,115,104,205, 20, 64, 65,177,170, 7,
+144, 20, 50,233,120, 69,253, 43, 77,136,236,230,162, 78,241,138, 18,225,114,202,224, 45, 89, 95,139,140,205,245,187,150,207,123,
+113, 51, 95,242,204, 73, 82, 37,201,119,204,232, 63, 88, 52,132, 4,237,208, 83, 74,243,101,158,139,165,144,148,188,110,230, 36,
+ 57,166,139,220,228, 25, 61, 61, 77, 37,204, 52,157, 40,231,235, 61,155, 44,118, 65,165,128, 73,209,229,197,211, 30, 50,195, 8,
+ 17,137, 17, 94, 45,150, 60,186,121,194,245,163, 27,178,105,136,125,143,207,137,221,221, 27,142,199, 15,124,188, 29,249,112,223,
+139, 61,109,156,224, 49,129, 49,200,123, 85,137, 3, 80, 10,145,217,129,163,151,122,146, 14,221,100,131,215, 61,236,156,158,101,
+164,168, 51,197,224, 42, 35, 99,212,146,149,178,102,102, 76, 42, 64,101,221,140,178,173, 42, 47, 23, 70,146, 53, 91,100, 98,140,
+ 23,133, 70,105,119,235, 19,251,187, 61, 31,119,119, 60,190,185, 97, 44,134,156, 34,198,121,108,229,112,209, 80,181,133,133,145,
+137, 81, 41,112,216, 15, 36,171,239,127, 22, 37,181,117,194,124,151,108, 1,167,191, 27, 84,149, 18,219,212,237, 83,117, 45,141,
+113, 12, 41,114,232, 7,172,245, 92,111, 26, 54,203,122, 14, 45,177, 9, 74,148, 17,127, 93, 57, 77, 45, 20, 91,178,224, 95,101,
+172, 31,146,106, 31, 38, 71, 73, 18,136,151,117,150, 69,211,232,248,189,225,112,252, 64, 28, 6,101, 15,152, 9,234,166, 93,190,
+228,119,120,107,102,133,187, 53, 70,126,215,105,210,100,117,221, 19, 18,117, 43,206, 29, 25,173,219, 7, 19,161,201, 26,166, 23,
+165,196, 80,233, 69,111,206, 65,133,101,202, 55,119,115,131,137,174, 50,230,209,253,131,201,154,119,142, 18, 71, 2, 50,253,178,
+ 86,192, 95, 2, 81,211, 60,128, 40,184,109,231, 44,167,211, 48,251,209,141, 19, 61, 91, 72, 69,243, 45,210, 92,176, 79,130,196,
+ 98,148, 50,153, 51,190, 32, 99,152,102,187,198,215,150,187,251, 3, 14, 88, 44, 58, 25,103, 79, 73, 60, 73, 72,114, 41,129,211,
+189, 27, 89,130, 42, 38, 8, 69,214, 3, 78, 70,100, 73,187,200, 76,211,136,234,124,177,106,121,245,227, 9,178, 21, 12, 98, 30,
+217,172,214,156, 14, 39,246,187, 35,151,219, 13,235,205,138,251,253,142,174,171,217,191,191, 37,151, 32,251,205, 34, 59,185, 24,
+ 19, 94, 15, 11,107, 13,117, 93, 19, 66, 32, 7,241, 64, 26, 99,136, 73,201, 88,122, 90, 93, 60,190,228,201,167,207,168,171, 10,
+ 91, 89,222,190,126,195,171,239, 95,241, 55,254,246,175,233,218,134, 31, 95,191, 37,165,200,245,147, 71, 28,239,110,249,240,246,
+ 61,155,155, 75, 14,135, 35, 67, 24,200,198, 50,142, 35,155,205, 90, 14,141, 84,168,219, 26,103,157,132,166, 4,121,141,206, 59,
+154,166,165,107, 90, 78,199,129, 49,164, 25, 2, 99, 57,239, 49, 39, 92,165,168, 31, 11,198, 36,198, 16,100,228,232,101,116, 26,
+ 83,194,120, 71, 83,215, 84,214, 74,118,122,150,223, 43,153,130,215,125,175,203,103, 96, 72, 36, 67, 18, 33, 79,198, 18,162,116,
+ 5,214, 38,108,209,145,146, 66,129,134, 92, 72,182, 80, 2, 44, 87, 45,255,228,191,250,199,124,241,213, 47, 57,244, 3, 33,159,
+112,206, 80, 57, 39,133,204,122, 67,219,173,104,155, 74,190,104,214,114,127,123, 75, 60, 12, 84, 77, 77, 8,137,253,110, 36,198,
+243,101,180,112, 11, 22, 11,135, 33,241,248,211,207,248,213,223,254,251, 92, 63,253,132,143, 63,252,129,133,179,252,240,151,240,
+187,151, 47,201,251, 61,214, 55, 84,190, 34,151, 68,211,182, 92, 63,186,230,184,187, 37, 31, 3, 95,253,242, 11,218,171, 43,254,
+227,111,191,225,135, 31,223,112,185, 88,240,197,163, 13,175, 62,238,248,246,213, 27, 86, 77,197,118,213, 81,117, 13,217, 89,124,
+ 83,233, 3,146, 48, 1,194,110, 79, 60,245,236,195,200,237,112,226, 56,142, 20, 44, 77,101,164, 59,170, 44,139, 69, 75,215,213,
+120,111,137, 57, 51,230,162,147,151,130,141, 8,193,235,103,245,183, 37, 79, 56, 73,173,178, 39,203,155,177,230,156,110,161,182,
+ 28, 99,100, 71, 58,101, 48, 91,107,149,211,174,239,215,212,241,150,105, 37, 80,230,124,240,172,170,245, 89,193, 62, 23, 19, 86,
+ 3, 47,236,207,178,211,167,231,149,137, 79,109,100, 92,103,138, 96, 36,207, 35,195,168,227, 96,167,150, 52, 77, 29, 83,253,128,
+ 36,192, 61, 68,215,102,253, 93, 39,243,186, 2,102,148,231,175, 89,165, 15,108,100,121, 86, 11,139,232, 46,253,204, 29, 32,225,
+ 41, 69, 45,111,118,126, 47, 74,201,146,222,101,206, 49,178, 81,159, 25,171, 68,189,137,106,230,212, 86, 20, 85, 59,128,208,200,
+149,128, 9, 67,204, 12, 65,196,128, 77, 37, 69,233,147,235,199, 92, 63,250,148,100, 29,113, 60, 1, 35,119,183, 47,248,240,225,
+ 39, 62,220, 38,250, 44, 13, 71, 73, 48,142,146,125, 16, 6, 73,107,195,195,152, 36,235,187,100,206, 69, 69, 41, 66, 40,211,113,
+187,247, 22,107,167,128,157,243,154,198,218, 56, 79, 58, 44,162, 9,136, 65, 86,137,214,106, 4,169,129,214, 59,138,119, 16,229,
+146, 45,197,224,181,136,138,218,157, 91, 35,200, 98, 9, 74,146,215, 19, 66,230,238,237, 30,251,149,161,106, 44,185, 88,242,232,
+201,174,224,234, 66,161,211, 81,190, 33, 6, 71,102,199,225,176, 39,231, 76,215,122, 92,150,240, 26,235,243, 44,126,148,239,134,
+ 96,172, 55, 23, 45,198, 57,114, 40,132,152, 56,140, 61, 33, 23, 54,171,142,139,205,154,182,149,203,208, 26,175, 30,243, 41,243,
+ 67, 89,239, 54,147,163, 40,239,179, 69, 45,106,246, 28, 80,164, 88,227, 49, 71,181,186,121,124,219,138,147, 39, 5,118,119, 7,
+ 98,180, 24, 19, 53,242,219,254,172,144,181,206, 96,189,192,160,208,162, 87, 26,194,252,192,118,173, 95,213, 82,104,213,222,249,
+112, 18, 86, 16,118,187, 53, 14,114, 0,155,207, 32, 25,205,177, 40,185,144,221,180, 2, 58,199,203,186,121,181,101, 30, 76,187,
+236, 60,189,155,116, 49, 37,103,172,175,176,198,170,190, 74,132,181,165, 20,218,102, 9,230, 61,187,221, 14, 99, 29,206, 24,162,
+ 13, 88,231,148, 74, 24,165,104,210, 73, 79,158, 19, 24, 53,209,209, 20,252,168,158,209,182,174,160,120,222,223, 29,192, 85, 52,
+ 77, 55, 43,182, 13,104,186, 79, 34,231, 72, 49,245,108, 17,200,234,231, 43, 70, 67, 59,208,172,100,221,173, 86, 94, 0, 30, 79,
+158, 61,226,120,218,211, 15,129,190, 31, 73, 41,211, 84, 13,149,247, 28,118,123,140,181, 92, 61,186,196,104,119,225,140, 35,141,
+145, 82, 44, 38,157,195, 40, 82,140,179, 85,206, 26,139,171,107,142,251,147,116,233, 58,122,137,106, 26, 77, 81,104,113, 95,126,
+253, 37,171,235, 71,184,182, 37,132,196,183,127,245,123,156, 49, 60,253,236, 19,198, 83,207,241,195, 29,151, 87,151, 44, 86,107,
+254,240,187,111, 48,206, 82, 85, 53,199,227, 59, 85,137, 39,172,173, 88, 44, 59,250,221, 73,130, 1,218,138,162,214,168, 82, 36,
+ 22,207,123, 79,219, 54, 88,107,232,251,147,122, 49,231,236, 45, 81,172, 34,239, 85,113,150, 56,237, 97,115, 97,232, 3,117,227,
+165, 67,215, 3,191,171, 26,108, 37,209,170,150, 76, 44,194, 85,119,197,144,116, 60, 52, 37, 6,197, 20, 25, 99, 18,170,188,142,
+ 33,125,153, 96, 47,106,189, 51, 98,140, 56, 41,141, 61,149,154,103,235,200,223,253, 71,255, 13,155,103, 95,178, 59,158,176, 78,
+128, 23,139,197,146,213,114, 41,162,194,122,129,175, 42, 42,231,177,206, 48, 30, 7,118, 31,238, 89, 95,108,249, 16,247,146, 94,
+ 55, 70, 17, 47, 97, 24, 41,108, 91, 71, 62,245, 44,154, 21, 95,254,250, 79,184,126,244,136,211,135, 59, 98, 24, 89, 47,183, 28,
+ 94,189,228,116,251, 26,219, 52, 82,105, 83,168,187, 5,219,199,151,132,251, 29,225,118,224,235,191,246, 53,151,151, 87,252,135,
+223,125,203,111,127,120,201,147,166,225, 87,143,175,120,127, 31,249,246,205,123,214,141,103,217, 53,216,182,165,120, 75,213,181,
+ 24, 99, 56, 28, 78,228,146, 8,187, 59,210,241,200, 41, 37,238,135,192,168, 20,179, 20, 51,167, 1, 42, 63, 82, 24,177, 78, 96,
+ 39,181,151, 81,117, 78,129, 18, 17,157,134,194,141, 42,237, 92,197, 17,114,134,128, 76,123,239,217,167,157,141, 28, 4,240, 0,
+252, 98, 30,116,210, 78,193, 20, 19,195,213, 10, 27, 90, 71,221, 70,173,104,198, 41, 22, 86,241,144, 78, 71,236,197,154,217,143,
+141,142,240, 11, 15, 46, 14, 85,237, 78,175,175,152,140,193,205, 68, 51, 35, 52, 28,217, 87, 23, 67,202, 81,172, 65, 89, 70,246,
+ 89, 85,231, 76, 17,172,231,212, 19, 17,124, 89, 43,206, 11,125,246,201, 89,195,100, 38, 12,102,150, 46, 93, 29,240,102,142,106,
+ 45,114,118,204,106,100, 41,252,203, 12,243,145,208, 24,180,107,116, 42,168, 50, 15,236,178, 37,139,122, 28, 29,137, 58, 29,231,
+154,108,100, 60,106, 29, 20,201,174,142, 37, 18,138, 56, 77,114,227, 88,181, 29,143, 31, 63,102,117,253,132, 96, 32,135,145, 58,
+ 13,188,125,251, 45,111, 62,188,227,246,163,116,102,235,174, 38, 69,195,253, 49,177, 63,141,244,131,140,167,157, 47,115,167, 86,
+215,150, 16, 50,161,159, 60,210,162,122, 47,136, 58,217, 57, 93, 63,100,171,238, 9,125,127, 38, 20, 42, 70, 59,110, 41,186, 42,
+231,240, 86, 68,118,190, 22,230, 5,230, 1, 46,120, 94,117, 88,197,197, 38, 64,242,128, 99, 58,211, 53, 19,150,247,239, 63, 50,
+140,145,170,118, 56, 95,227,147,228, 57,148,146,201,165,194,166, 68,211,180, 44,215, 18, 5, 27, 99, 38, 29, 14,196, 32,113,203,
+149,179,148,144,240, 78,215,130, 73, 16,196,133, 72,127,114,120, 47,162, 96, 42, 67,183,104,184, 94,212,226, 94,241,146,113,110,
+113, 84,179,118, 32, 98,172, 85,214,131, 46, 99, 38, 49,156,177, 58,113, 80,129,167, 94,134, 83,242, 91, 41,133,186,110,104,219,
+ 22, 72,132,216,115, 58,244, 50,237, 48,130,221, 46,202,155,176, 69,167, 97,122,201, 79, 20, 70,107, 11, 41,157, 61,231, 37, 26,
+140, 51, 28,227,192, 34, 86,106, 31,157,192, 93, 19,172,201,128,115,243,185, 58,185, 2,140, 50, 52,203,244,239, 63,176,169, 77,
+ 92, 69,147, 38,234, 20,179, 14,109,122,254,157, 51, 36,157,198, 36,138,198,173,234,158, 93,191,247, 41, 37, 90,131, 88,247,246,
+ 71,198,126, 96,179,109, 25,195,153,103,159,179,156, 33, 78, 29, 2,166,156,243,212,139, 62, 51,126, 28, 18,198, 58,150,157,167,
+ 31,122,142,199, 3,171,229, 2, 95,157, 71,129, 20, 24,227,200,233,212,171, 75,165, 60, 0, 74, 8,211,184, 66,136, 79,147, 5,
+ 39,100, 24, 77,193, 91,203,102,179,226,122,123, 73, 63,244, 28, 78, 61,135,253,145, 90, 69,120, 18,228,146, 89,175, 23, 60,187,
+188,226,167, 87,239, 5,252,225, 29,199,195, 81,246,138,136, 95, 62,198, 32,227,187,164, 86, 23,235,105,154,142,251,143,251,105,
+ 26, 49, 11, 25, 74, 46,132, 24,241, 77,195,205,211, 39, 92,109, 47,184, 61,220,113,251,230, 35,111, 95,191,230,249, 47,158,179,
+ 90,173,120,241,227,107,246,253,137,231,207, 63, 39,245, 3,119, 63,189,163, 93,118,156,118, 7,134, 99, 79,178,134,211,208,179,
+189,184, 32,151,204, 56, 6,182,219,133,188,158, 49, 18,163,136,207,112, 14, 95,121,218, 85,203,120, 72,244,251, 3,163,247,194,
+108, 87,216, 72,166,144,147,248,126,221,131,208,131,156, 51,197, 26,124,241, 58,173,147, 93, 90, 91, 9, 57,174,170, 61, 57, 10,
+172, 99,198, 16,170, 96,194, 90,139,171, 60,141,173, 25,119,119,132, 96,169,156, 82,199,188, 17,171,152, 49, 84,181,210,171, 50,
+140, 67,225, 56, 22,174,218,204, 63,248,111,255, 41,254,226,134,225,180,163,174, 60,109,187,161, 91, 45, 88,174, 87,116,237, 18,
+235,196,115,233,124,173, 23, 79,230,238,227, 59, 22,171,142,155,203,150,223,191,248,150,227, 73,203,132, 36,135,182,205,114,240,
+ 1, 92,125,241, 25,151,191,248,148,227,126, 79,238,143,116,235,142,127,247, 47,254,103, 94,254,197,159, 83, 85,141,118,112,133,
+170, 89,240,232,217, 35,194,110,207,112,127,228, 23,159, 63,231,209,179,199,252,197,119,223,243,251,239,126,224,105,219,240,213,
+ 47,158,243,227,110,207,139, 55,239,216, 84,158,182,173,201,222, 97,218, 90,184,240,109,203,237,221, 61, 41,102,226,110, 79, 60,
+ 29, 24,115,228, 54,244,244, 89, 4, 78, 5, 67, 85,201, 46,241,118, 31,233,150, 71, 86,139, 29,235,205, 10,154, 6, 59, 6,106,
+ 35, 9,115,227, 40,112,158, 62,128,241, 18,175, 59, 7,134,152,172, 94,126, 51,227, 79,141,170,217, 37,241, 78, 70, 98,103, 69,
+138, 82,166,244,146,155,226, 25,101,103,231,117, 7, 44, 93,186, 45,231,177,157,168,232,181,107,213,135,185, 20,243, 96,106, 48,
+225, 95,203,236,127,157,148,240,217, 90, 92,177,103, 63,242,100,121,203,103,166,204, 20, 14,147, 85,184, 36,184, 86,141,196,156,
+124,240,197,145, 74, 60,199,180,206,171,119,185,192, 77,153, 92, 48,249, 44,142,123,208,161,203,103, 60, 21, 2,146,106,150, 85,
+ 4,150,243,131,179,164,156,119,131,115,140,235,100, 85, 82,113,162, 41, 98, 3,147,196, 62,249,125, 43,235, 25,163,153, 71,167,
+ 41,195, 49, 36, 98,145,189,233,182,109,185,121,252,132,139,235, 39, 56, 91, 19,210, 64, 49, 61, 47,127,250, 61, 63,254,248,134,
+251, 99,162,110, 61, 79, 46, 27, 22,155, 39,124,247,242, 13,135,254, 3,251, 83, 34,234,170,172,148,194,230,226,138,175,190,254,
+235,146,147,126,188,231,118,119,203,221,221,158, 23,223,191,228,216,139,232,205,171,112,205, 27,163, 99,211, 60,167, 86, 22, 85,
+239, 59, 43,100, 70,239, 43,234, 42, 41, 29, 82,215, 28,206,227,155, 90, 71,213, 81, 28,140,186,214,137,243, 16,199,204, 28,115,
+ 42, 73,245,179,128,183,153,211,233,192,110,183,227,241,227, 71, 26, 21,106, 49, 89,138, 86, 40,148, 84, 83,140,161, 42,150,213,
+218, 66, 42,140, 67,207,187,187, 19, 99,137, 92,111, 26, 38, 76, 66,213, 54, 80,172, 36,101,246,137,166,206,212,173, 97,181, 94,
+176,104,107,124,229,164,248,146,185,185,116,233, 72, 17, 35,227, 98,157,166, 86,146, 84,153,210,100,142, 40,120, 43,137,134, 15,
+ 44, 25, 58,169,146,240,146,148, 18,139,101, 67,211,212,156,250, 35,227,113, 32,246, 35,198, 61,248,126, 79,250, 19,100,156, 93,
+233, 37, 42,240, 45, 48, 41,207, 35,245,105,109, 37,127,192, 17, 75,198, 91, 43,197, 20, 69, 66, 95,116, 98, 96,157, 20,141, 86,
+ 11,215,162, 49,168,211,231, 56,249, 66, 77, 65, 11, 61, 51,175,164,205, 3,132,243, 36,150,155,242,213,139,147,179, 33,199,130,
+171, 13,222,215,196, 48,234,179,160,154, 17,107,104,170,154, 48, 14, 28, 79, 71,174,174,183, 88,115,210,245,157, 76, 32,189, 53,
+ 84,200, 89,100,231,226,162, 40, 84,202,224, 67, 8, 56, 87,104,234,134, 83,223, 19, 99,166,233, 22,218, 25,156, 69, 51, 41, 68,
+ 17, 85, 24,141,201,227,188, 83,140,165, 16,162, 36,116, 89,231, 48, 41, 19, 38, 84,160,181,226, 83,174,107, 14,251, 3, 31,239,
+110,177,214,209,117, 29,119,119,119,248,202, 97,139,101,123,177, 97,179, 92,242, 50,189,161, 91, 45,177,214,176,187,187,167, 97,
+122,225,178,127,156, 4, 55,185, 20, 17,100, 24, 71, 76,233, 12,208,143,211,190,206, 48, 30,122,158,127,250,140,231, 95,124,142,
+245,142,221,219,143,188,127,243, 30,103, 12,207,191,254,148,126,119,164,223, 31,113,109,205,197,245, 53, 31, 62,126, 80,151,142,
+ 97,119,191,167, 56, 71, 72, 17,156, 99,117,177,101,127,251, 17, 79, 22, 15,103,129,144,210,236,223,247,206,177, 92, 44, 88, 52,
+ 11,126,124,253,138, 84, 10,195, 24,206,150, 64, 35,124,100, 83,116,125, 97,153, 9, 71, 41,137, 33, 33,167,172, 95,118, 71, 91,
+215,152, 74, 62,224, 10,195,152,242, 60,242,211,166, 75,196, 43,206,178, 92, 53, 60,125,126,205,179,241, 17,239,126,186,229,112,
+ 24,164, 8, 32,225,140, 48,208,171, 70,246, 84, 33, 6, 73, 97, 11,153,191,241,247,254, 22,235,235, 27,138,105,168, 87, 11,234,
+110, 65,215,117, 52,181,199, 87, 53,222,122, 17,116,104, 22,113,101, 45, 31, 94,255,132, 5,110,158, 61,199,166, 59,226, 48,114,
+ 60,157, 68,144,168,182,145, 69,227, 89,212, 21,214, 59, 46,174,174, 24, 15,247,196,195,145,245, 98,201,127,250,183,255, 27,191,
+253, 63,255, 45,190,174, 24,199, 65, 46,165,182,101,243,232,130,120, 56, 16,246, 59, 30, 63,123,194,205,227,103,252,246,197, 15,
+124,243,226, 39, 13, 65,189, 0, 0, 32, 0, 73, 68, 65, 84, 21, 87,222,241,229,243,167,220, 31, 6,126,120,251,158,174, 42, 44,
+234,134, 16, 11,213,178,165,234, 22,212,171, 37,131,238,206,227,225, 64,127,191,163,228,196,126, 12, 12, 89, 2, 58,202,148,155,
+109, 12,174,174, 49, 68, 62,236, 14, 80, 59,168, 28,215, 23, 27,156, 17,225, 15, 14, 92,229, 72, 49, 18,199, 68,240, 18, 79, 60,
+239,201,140, 10,114,172,211,139,200,106, 26,149,136,244,166, 8, 76, 25,157, 91,197,171,234,197, 51,141,242,140,147,106,126, 34,
+204,149, 51, 74,114, 86,180,155,243,136,151,146, 49,218,253, 25, 99, 21,120,161,211, 26, 35,225, 24,243,184,183, 72,215, 36,123,
+197, 52,115,220,207, 74,118, 29,185,103, 51,123,149,207,250,191, 60, 31, 84,232,101, 83,230,203,250,156,163,105, 10,243,133, 60,
+139,231, 38,237,154, 38,100, 77, 35,245,137,230,150,117, 7, 61, 97,236,165,235, 18,189,130,157,188,220,246,108,107,178, 58,218,
+151,247,110,218,106,104, 88,147, 84, 79, 10, 83,242,152, 98, 72,197, 50,132, 72, 12, 6, 99, 42,154,182,226,209,205, 35,174, 31,
+ 61,193,184,150, 56,158,240, 37,242,253,203,111,248,230,197, 43, 78,199,192,102, 81,241,236,233,154,223,252,230, 79,249,241,253,
+145,211, 31,126,164, 63, 69, 74,148, 11, 35,102,184,122,124,201,223,251,135,255, 53,207, 63,249, 10,235, 44,143,174,110,120,242,
+217, 39, 84,190,229,197,203,239,248, 95,254,213,191,228,223,255,223,255, 23,158,204,112, 28, 72, 67, 79,140, 50, 38,159,144,177,
+102,178,102,121,125,118,213, 15,237, 39, 20,176, 43, 42,190,146,189,170,215,184, 80, 3, 68,151, 49, 70,108, 83, 36, 43, 29,168,
+218,168, 48, 81,242, 7,172,116,171, 49, 69,114,201,248,202,147,146,199, 36, 97,134, 20,239, 40, 77, 75,177, 21,149, 25,201,170,
+ 67, 56, 13, 39,220,221,192,161, 79,212, 54,112,189, 94, 82, 87,158,197,162,162,115,150,221,209, 18,134,192,106,219,177, 94,119,
+ 34, 16,174,164, 75,204,185, 16,245, 78,176,186, 70, 49, 38, 19,130,248,208, 43, 47,200,162, 9,126,148,181,192,115,206,225,188,
+ 19,203,223,124, 97,218, 57, 19, 60,134,204, 98,209, 72,115, 23, 51,167,126,144, 78,213, 78,150, 62, 93,193, 86,242,124, 85,202,
+ 84, 9, 49,204,177,175, 86,215, 33, 98,173, 44,138,234,205, 88, 87,136, 89,241,222,222,137, 4,174, 8, 99, 69,114, 1,138,142,
+244,213, 29, 34,190, 55, 93, 21, 76,193, 69,101,198,178, 78,255,165,130,102,168,193, 57, 41, 65, 86, 67,178,123,151,179, 61,147,
+212,221,225,102,204,236,180,198,115, 94,148,237,227,225, 72,223,247,120,239, 84, 84,231, 41,101,156, 87, 4,214,138,149,207, 76,
+156, 8,213, 34,148, 12,190, 15,145,235,205,138,170,170,249,120,119,226, 20, 18,155,174,157,171,149,105,215,144, 98,150,113,198,
+100,190,127,240,224,101, 5, 82,164,164,209,119, 81,118,201, 88,139,113,150,155,155, 75,138,177,220,239,143,156,142, 71,182,219,
+ 45,199,227,145, 83, 63,176,109, 55,148,186,112,121,177,153,139,134,166,235, 24,250,145,177, 31,168,218, 86, 4, 0, 41,147, 52,
+ 25, 68, 24,188,146, 93, 91,140,161, 68, 84,169, 47,194,140,148, 85,120, 48, 38,158,255,226, 57,143, 62,121,202,233,253,142, 15,
+239,222,112, 58, 12, 84,203, 37, 87,143,175,185,251,241, 13,135,251, 59,174,110, 30,209, 44, 59,222,255,127,239, 48,222,114,220,
+221, 17,198,145, 76,161, 79,129,205,102, 77,202,137,227,254,196,197, 70, 70, 77, 50,218,143,202, 88,183,248,202,179, 88, 46,136,
+ 41,179,223,237,101,151, 51,171,126,172,226, 69,147,198, 11,150,153,236,150,148,162,149, 98,198, 54,114,216,215, 85, 37, 66, 60,
+239,100, 23,165,202,219,185,235, 43,210,169, 88,107,169,235,138,237,197,146,110,221,144, 15,137,213,106,129,119, 53, 41, 4,188,
+ 5, 72,212, 78, 20,167,113, 24, 24, 99,230,254,212,243,233,231, 95,243,236,243, 95, 82, 55, 29,109,183,166,106,215,184,186,166,
+210, 76,246,218, 87, 84,117,141,173, 43,124, 85,227, 72,220,127,188, 39,140, 3, 87,143, 31,209,110,215,236, 95,189, 85,203, 96,
+156, 37,225,149,179,116, 77, 77,137,194,220,127,247,195,119,212, 37,177, 93,110,248,230, 63,252, 59,254,227,255,254,111,112,198,
+ 50,132,147, 92, 82,214,178,220,108,160,239, 73,199, 3,143, 31, 61,225,250,230,134,239,222,188,230, 47, 94,188, 96,235, 28,159,
+ 92, 92,177,219, 31,248,225,118,199,178,178,172,235,154,253,144, 48,117, 75,179, 92,210, 46, 22,228, 16, 56, 30, 79,196,227,129,
+225,254, 14, 76, 98, 31, 71,134, 34, 70,171,137, 48, 85,180,251, 75, 57, 9,215,189,105,184, 63, 13,164, 55, 63, 82,217,194,229,
+246, 6, 20,163, 91,233, 62, 51,165,204, 48, 4, 97,179, 47,228,115,153, 59,246, 82,244,176,157, 46,234, 41,208, 65, 71,209, 42,
+114, 51, 69, 52, 16,226, 77,182,242,144,234,136,110, 22,163, 78, 30,100,189,244,103,183, 28,103,114, 85,121, 48,206,182, 78,251,
+121,229,177,231, 7, 94, 90,235,220,252,172,156, 33, 48,102, 86, 1, 27, 61, 77,140,146,203,152, 29, 44, 42,139, 85,200,141, 74,
+200, 53,223,253,124, 40,207,175, 3,165,196, 21,233,193,115, 74,130,251, 78,233, 65,241, 32,100,186,164,187,204, 73, 16,103,103,
+ 58,154, 18,235,172,213, 75, 80,251,250,249, 66,231, 92,196, 56,193,235, 90, 45,164,138,113, 20,103,112,222,144,163, 40,207,251,
+ 32,252,187,170,170,185,188,186,230,226,234, 26,235, 60, 41,141, 16, 3, 47, 94,125,195, 55,223,252,129, 49, 56, 86,203,134,103,
+207,175,248,155,127,250,103,184,230,154,253, 15,127, 78,223, 71,250, 33,205,211,140, 2,124,249,245,175,120,242,201,103, 84,139,
+142,171, 71, 55,124,245,229,175,169,214, 75,108, 41,252,230,250,154, 79,127,249, 43,254,249,127,255,207,248,238,155,191,162,164,
+192,225,118,199,238,110,199,253,253, 61,125,127,156,207, 76, 55,137,220,244,243,246,198,226,140,167, 32,200,208, 20, 34, 37,171,
+192, 77,215, 40,121,182, 19,138, 16, 86,138, 68, 72, 81,162,103, 5,244, 37,127,191,105, 86, 98, 71,174,188,188,207,141,138,136,
+149, 17,144,179, 76,238,173,171,112,181,161,189,184,228, 42, 69,134,126, 96,183, 63, 50,142,137,136,101, 89,123, 22,109, 77,235,
+ 44,117, 91,225, 45, 44,219, 10, 91,123, 48,150, 68,198, 70, 75, 50,146,201, 17,139, 20, 91,101,130,108,141,137, 84, 96, 89,249,
+ 57, 84,103, 54,225, 89, 41,152,179,117,228, 84, 72, 57, 82, 30, 58, 40, 74, 6,107,105, 59, 97,125,164,152, 24,251, 56, 3,183,
+166,213,111, 49, 83,226,185, 78,223, 84,251,101,149,163,194, 4,116, 82,164,121,121,176,178,202, 72,161, 63, 61,115,243,154,108,
+178,142,154,115, 7, 46,255,223,204, 82,153,172, 69,128,113, 19,182,121,178, 91, 48,143,243,205,131,130,124,246,165, 35, 5, 91,
+ 52,105, 70, 74, 91,107,132,208,138,157, 5,176, 50,141, 43, 26,108,164,182,218,169,120, 85,139,182,247,110, 78,108, 43,211, 57,
+227,100, 98,232,199,113,160,107, 47, 36,160, 96,127, 16, 52, 96, 91,159,137, 56, 72,152,135, 92, 96, 90,249,144,231,148,136,244,
+ 64,177, 42,168, 63, 7, 86, 66, 62,198, 20,216,172, 87, 92, 94, 62, 34,198,192,253,237,142,166, 91,114,113,121,193,235,159, 94,
+ 83,215, 30, 67, 97,187,221,176, 89,181,140,167, 1,140,161, 93,116,140,195, 72, 14, 25,187,144, 78, 61,166, 72, 12, 3,248, 90,
+212,185, 46,171,128, 34, 17, 75,164,182, 2, 48, 72, 73,186,223, 49, 68, 86,219, 37,159,126,245, 37,139,174,227, 47,191,253,115,
+ 62,188,253, 72, 44,142, 79, 62,251, 5, 37, 6, 14,135, 61,197, 22,214,151, 23, 28, 15, 71,142,251, 61, 54,103,246,239, 62, 98,
+ 87, 29,161, 68,114,137,108,182, 91,238,110,111,113, 64,183, 16,204,105, 63, 6, 17,173, 24,249,192,150,139, 5,139,229,130,119,
+239, 62, 8, 77,204,203,110,234, 12, 22, 53, 15,214, 25, 26,143,145,132,197,156, 53, 66,209,153,105,156, 14,149,129,182,170, 48,
+186,214,152, 8, 90, 20, 52,166, 85, 82,146, 22,235,142,237,213,134,146,161,223, 7,193,157, 90,232,218,134,101, 83, 99,140, 88,
+136, 98, 26,232,211, 72,204, 1,227, 90,158, 63,127,206,114,189,101,181,220,144,245,130, 33,203,197,103,124,141,243, 50,214,247,
+117,133,113,133,227,135, 3,251,251, 91, 22,219, 13,171,203, 11,114, 42,132, 48, 8,253,202,214,148, 34,153,198,141,151,162,101,
+215,143, 12,167, 19, 63,125,251,123,170, 24,120, 87, 12,191,253, 63,254, 13,253,225, 72, 56,157, 36,154,215, 91,124,219, 80,151,
+ 8,135,129, 39,215,143, 89,108,183,188,122,255,129,239,126,124, 73, 99, 29, 79, 86, 75, 78, 37,241,241,112,162,245,176,112, 21,
+199, 49,147,173,103,185, 89,178, 88,175, 36, 29,239,112,224,116, 56, 48,220,237, 40,121,164,207,145, 35,153, 56,193, 39,244,194,
+ 53,198,137, 24, 46,138,149,111,185,217,112,181, 94,177,191,189,231,199,159,222,179,104, 90, 22,155, 21, 69,116, 56,212,222, 49,
+ 40, 18, 57, 12, 81,214, 70,110,154,152, 8, 84,162, 32,236, 1, 1,200,232, 69, 61,165, 77, 21, 51, 31,102,197, 78,158, 85,165,
+162, 61,252, 62,168,181,198,204,151,254,195,176,138,179,133,108, 98,187, 59,103, 30, 80,228,202, 76, 98,159, 44, 62,197, 32, 15,
+121,138,234,146,208, 29,174, 77, 51,170,213,168, 85,103,214,126, 76,228, 58,109,133,102, 88,140,142,200,147, 42,174,115,154,252,
+209,121,254,217, 69,109,111,230, 63, 99,109, 23,242,249,207, 77,105,101,229,231,233,115, 83,246,185,153, 19,183,204,153,152, 55,
+ 17,226, 52,200,206, 98,117, 90, 43,107,139, 82,132,241, 96,212, 53,114, 28, 71, 82,145, 14,108,165, 96,153,182, 93,146,178,161,
+ 31,246,188,125,249, 29,191,253,253,239, 40, 24, 54,109,197,231,191,252,140, 63,250,155,255, 5,110,241,132,187,187,143,164,148,
+216, 29,143,132, 44,246, 76,147,224,250,233, 5,207, 62,253,140,182, 89, 80, 53, 21,219,139, 11,252,178,211,108,111,200, 99,100,
+ 81,119,252,173,191,243,103, 28,246, 59, 78,187, 29,222, 84, 56,191,196,249,138,195, 78,130,176, 74, 78,178,118, 83, 81,151, 55,
+ 83,146,154,172,113,138,134,137, 56, 83,176, 38,225, 73,115,211, 68,158,160, 58,121,134, 76, 21,196, 73, 99,140,160,110,139, 49,
+ 44, 22, 29,109,183,160,173,151,196, 20, 48,202,160, 15,113,210, 46, 76, 95, 43,185, 36,114,129,166, 93,242,244,230, 18, 12, 28,
+142,189,224,120,157,197,187, 90,166,161, 94,114,218, 93, 45, 34, 50,156,197,230, 40,159, 69,209, 49,116,150,162,205, 26, 17, 64,
+198,144,168,173,224,100,141,183,202, 42, 16,145,175,169,244,223,193, 81, 76,158, 69,145,101, 66,250,103,185,180, 54,219, 5,217,
+100,246,187, 3, 67, 63,204, 83, 34,171, 36,196,172,247,147,119,154,102,166,124, 12,171,211, 56,153,222, 70, 41, 28, 82,162, 88,
+ 93, 51,101, 85,145, 91, 45,140,199,201,206,121, 38, 45,254,140,164, 90,206,250,134,152,166,144, 43,121, 22,164, 70,179,202,164,
+ 96, 78,141, 59,163,153, 31,224,157,141,112,236, 71, 51,146,115,196,251, 86, 86, 40, 41,233, 52, 43,170, 83, 69, 24,247,227, 48,
+156, 71,247,198, 97,156, 35,196,129, 84, 28,222,120,209,161, 36, 41,170, 82, 22,219,114, 6,252, 56,140, 52, 77, 77,206,112, 58,
+ 30,168, 43, 79,221, 52, 58,234,146, 81,239, 57,152,225,172,194,181, 83,152, 69,154,108, 42, 50,106,180, 22,162, 26, 85, 82, 74,
+ 92, 92,172, 89,174, 26,210, 56,112, 56, 30,216,110,182,220,221,222,209, 31,143,172, 54, 43,234,202,115,117,113, 1,197, 49,198,
+129, 4, 44,186,142, 15,239,222, 18, 71,217, 9, 69, 77, 90, 43,198,170, 82, 56,171,207,211,209, 15, 3,169, 88,173, 82, 50, 49,
+ 5, 82,201,140,105,228,249,243,175,249,228,179, 79, 56,237,110,249,233,119,223,226,187, 26,154, 37,143,158, 60,230,254,246,150,
+126,127,160,219, 92,112,113,117,197,119,223,126,139,201,153,251,251,123, 78,125, 79,183, 90,144, 82, 97,217, 46,201, 99,224,184,
+ 63,112,177, 94,225, 27, 71, 10,137, 16,228, 13, 52,198,224,171,154,245,230,130,148, 50,167,227,137,170,174, 72, 36,134, 83,148,
+ 93,160, 50,123,141,245,146,189,109,161,196, 72,204,226,121,205, 37, 83,123,201,173,119,222,225,138,149,135,200,170,237,133,137,
+ 76,165, 54, 9,103,177, 46, 83,119, 13, 23, 55, 87,212,221,154,253,237, 78,144,233,200, 72,190,171,107,106, 47, 63,221,251, 37,
+203, 58,115,113,209,176, 88,182,220,254,213, 29,139,110,133,171, 60,253, 48, 96, 76,194,123,137,223, 45,117, 69,114,186,187,169,
+ 3, 37, 26,134,221,192, 97, 39,171,146,182, 91, 10,135,185, 63, 81, 6,113, 35, 56, 35, 58, 1,239, 61,141,181,140, 33,146,172,
+ 39,167,145,241,180,227,155,255,244,255,112,255,242, 37,105,119, 98,140, 59,108,150,156,121,223,212,212, 93, 11,185,231,179,231,
+159, 18, 11,188,188,253,192,171, 55,111,240,166,230,147,174, 38,164,194, 16, 7,106, 11,173,175,216, 15,145,221, 16,216,222, 60,
+ 98,125,113,129,247,142,227,233,196,225,126,199,233,227, 45,101, 28,233, 75,230,144, 84,197,236,164,138,118, 58, 38,143, 26,164,
+ 51, 38,113, 83,156,250,192,231, 79,175,185, 90,173,249,225,213, 15,188,124,243,158,175,187, 53,190, 50,194, 98,247, 53, 13,134,
+ 49, 22, 98, 22,151, 66, 85, 9,234,210,123, 59,163, 42,179,122,223,166, 74, 30, 3,222,248, 7, 62, 85,167,246, 25, 71,182,231,
+221,183,224, 63, 85,144, 58,131,162,101, 34,230,212, 98, 84,172,225, 1, 70,123,182,148, 19,147, 36, 93, 25, 67, 33,226,245,114,
+ 19, 64,142,193, 36,189, 68,153,176,171,101,182,220, 88, 47, 20,149,152,148, 78,101, 69, 29, 95,116, 68, 41, 23,177,118,223, 6,
+ 61,148,133, 81, 45,250, 1,241,239,103,237,200,245,101,171,170, 61,205,252,237,156,167, 36, 54,189, 72, 20, 68, 99, 21,252, 33,
+ 35,118,217, 23, 26, 61,100,157, 90, 60, 37, 63, 62,233,154, 65,166, 27,214, 66,214,181,133,196,203,122,237,168, 44, 67,148, 29,
+184, 49,142,101,183,224,230,209, 99, 22,203, 13, 56, 67,191,191,231,221,171,151,124,243,205,239, 24,146, 97,187,176,124,250,213,
+103,252,201,223,253, 39,100,239,136,241, 36,197,178,210, 23,163,113, 20, 43,182,220,213,122,195, 98,185,166, 54, 30, 31, 19,155,
+213, 22, 95,213,212,170, 61,200,206, 17,134,129, 69,187, 96,187,217, 98, 82,102,236,143, 88, 27, 5,178,229,188,232, 71, 98,196,
+216, 60, 11, 38,173, 62,227, 69,109,102, 83, 58, 89,237, 29,149, 5,156, 37,154,162,127, 7, 92, 50, 12,197,206,239,227,204,196,
+159,248, 6, 85,141,117, 78,222,223,202,225,172,128,125, 38, 2,153,172,138,146, 88, 52,157,161,202,158, 33,141, 20,103,168,154,
+154,174,109,177, 41,178,110, 91,174, 46, 30,209,117, 45, 57, 38,246,253,158,125, 78,108,173,103,233, 42, 81,226, 59, 65,247,154,
+172, 30,191,156,102,232,209,132, 4,174,188,195,249,138, 76,198,154,138,148, 5, 5, 91,123, 89,231,141,105, 90, 63, 27,240, 83,
+248,137, 37,101, 67,215,121, 22,139, 53, 99, 63,178,219,157,196, 13,100,132,239, 33,133,164,218,218,244,249, 50, 78,220, 4, 38,
+107,103,108,206, 90, 12,225,167, 48, 71, 11, 11,170, 87, 26, 25,203, 89, 60, 42,228,159, 51,122,217, 24,133,189,232, 56,223, 56,
+ 9, 17,154, 50, 13, 44, 50,205,246, 42,246, 76, 26,158,148,116,221, 98, 85,252,103, 30,176, 94,156,149,162, 62, 38,249, 30,120,
+235, 20,167,174, 41,114, 49,206, 34,184, 48, 40,184,204, 88,153,220, 88, 59, 7,169,233, 99,174,103,129, 52,222, 73, 97, 81,214,
+ 85,150, 85,183, 32,164,200,221,253,129, 69,215, 80, 85,142,130,197, 89, 39, 2, 13, 77,247,153,162, 33,167, 74, 92,215,116,228,
+ 82, 8, 42,114,113, 86, 40,104,165, 88, 78,177,112,177,189, 96,179, 88,203, 20,192,121,154,186, 99,119,183,151, 29,144, 49,108,
+183,107,150, 77, 77,193, 18,198,136, 87,242,208,112, 26,196,146,166,149, 89,140,105,102,231,230, 82,112,166,194,122, 75,136,145,
+ 90, 89,235, 25, 25, 89,140, 41,209,117, 29,159,126,253, 25, 77,215,241,234,219,111,197,204, 95,215, 92, 95, 93, 96,125,197,113,
+119,160,202,112,121,117,137, 45,133,143,183,183,140,253,192,254,195, 29,174,178, 4,205,117,222,110, 46, 56, 28, 78, 20, 42, 22,
+ 77,131,209,170, 47,167,172,202,199,194, 98,177, 96,187, 93,179,223,237,133,100,231, 28,118,170,162,244,176,155,178,172,205,204,
+ 61,142,164,146, 8, 41, 97,138,144,223, 80,241, 84, 61,141,221, 39,239,164,254, 25, 97, 93,203, 30, 21,235,217, 94,110,216,108,
+183,140, 67,224,120,236,165, 90,180,150,186,246, 84,109, 69,182, 5,215,212, 44, 54, 27,110,158, 60,229,201,211,207,120,244,201,
+103,100, 19,168, 52,153,207, 56,176, 85,133,169, 26,140,247, 24, 47, 42,126,163,144,141,211,254,142,251,247,111, 8,121,160, 91,
+ 45,169,235,165,164, 32,185, 12,190, 48,234,207,180,165,176,168, 44, 37, 39, 78, 41,113,185, 94,144, 99,224,238,221,107,110,191,
+123,193,120,123, 71,223,239, 48, 89,166, 29,166,173,113, 93,141, 39,243,229,245,103,244, 22,126,218,239,248,241,253,158,214,183,
+ 60,106, 61,161, 20,250, 60,226, 76,166,245,150,211, 24, 57,197, 68,187,232, 88, 93, 46, 49, 11,207, 16, 35,253,253,158,211,251,
+ 91, 74, 63,112,202,129,147, 98, 71,201, 2,251,240,206, 82, 87, 22,231,197,106, 21, 21, 78, 84, 82,162, 15,137,211, 24,184, 92,
+119,252,234,243, 47,200,169,240,226,237, 75, 98,208, 28,244, 18, 37,163,216,171,112, 38, 37,153,176, 76, 56,138, 34,252,106, 99,
+ 42,137,180, 53, 10,174,180,210, 57, 25,123, 14,141, 72, 8,219, 65, 62, 39,163,214, 25,171,133,154,154,102,237,132,167, 84, 91,
+151,181,243,148,193,254,172,123,200,154, 48,101, 69,220, 86,236, 89, 84, 55,137,214,166,139, 82,119,183,214,122, 29, 87,158,167,
+ 0, 50,180,140, 98, 5,155,197,113, 9, 74,156,125,223,147,202,191,168,166,201,150, 66,137, 73,119,139, 58,142,156, 71,253, 15,
+246,236,115, 3,244, 96,143,175, 73, 34,211, 1, 59,189, 26,103,228,188,177,147,167,219, 62,132,182,152,115,216,135, 78, 71,230,
+ 16,202,169, 75, 79, 16, 71,201, 1,244, 77,203,197,229, 21,203, 77,135,241,112,220, 29,249,240,246, 37,223,126,255, 59, 78,169,
+176, 88, 20, 62,249,250, 75,126,253,183,254, 41, 39,179, 96,204, 14, 76, 35, 50,103,223,210, 45,150, 66, 98,196, 66,132, 56,142,
+ 34, 2,243, 5,227, 60, 33,139,242, 60, 27,221,129,251,154,102,187,224,213,235, 87,252,248,250, 53, 63,253,244,154,251,187,123,
+226,208, 43,197,209, 96,157,236,114,165, 11, 23,122,156,175, 12,174, 42,218,109, 11,123,163,118, 78, 2, 90, 26,199,182, 53,108,
+234,194,210, 21, 86, 54, 83, 21,233, 58,115,144,238,221, 59, 55, 3, 86, 50, 69,254, 61,107, 48, 41, 17,197,223,194,148,136,154,
+141,161, 88,175,225, 31,250,153, 57,143,241, 53,149,245, 84, 10, 84,177, 85, 67,219, 46,185,121,254,140,102,217, 10,242,218,201,
+ 40, 62, 83, 24, 82,146, 38,203,228, 7, 77,158, 52, 44, 6, 9, 73, 9, 81, 5,129, 85,193,218, 44, 80,160, 36,197,157,197, 11,
+ 90, 27, 29,157,155,105,165,108,165,115, 47,134, 83,202,172, 54, 11,150,139,142,221,110,207, 48,158,244,187,166, 35,236, 9,224,
+ 56,137, 42,141, 38, 85,230, 60,143,175,153, 73,141, 70,249, 41,210,168, 72, 33, 41, 17,227,146,123, 2,102, 78,206,123, 0, 9,
+154, 47,246, 7,140,132,137, 43,143, 28,127, 70,127,110, 46, 60, 64, 34, 21, 29,251,171,200,212, 73,182,122, 70, 82,159,188,173,
+245,245,201, 93,101, 85, 23,101,244,217,152, 34,156,141, 22, 9,121,130,154, 1, 54,159,161, 78, 24,131,119,149,138, 13,229,142,
+ 44, 37,147, 67,194,183, 77, 67, 91, 85,244,125,207,113,232,105,170, 70,126, 25,175,202,190,146,137, 65, 82,198, 80,241,192,164,
+ 46, 87, 47,135,252,210, 73,210,122,156,117,130,241, 35, 97,189,231,226, 98,139, 51,133,144, 34,190,109, 8, 41,112,220,237, 9,
+ 41,225,234,138,155,199, 55,132,211,128, 45,133,208, 7,154,118,129,111, 44,227, 16, 40,206, 74, 80,134,194, 82, 50, 89,246,209,
+ 37,227,189,236, 39, 79, 49,227,106, 71,177,153, 52, 6, 9, 82, 72,137,175,255,218, 87,124,254,197,231,236,222,223,242,242,247,
+223,210, 93, 45,169,219, 5,203, 85,199,105,220, 17,199,128,243,150,237,245, 35, 62,220,223, 51, 30, 78, 12,135,147,196,220,181,
+ 13, 99, 78,248,214,209,117,158, 15, 31, 6,214, 11, 47,197, 78, 46,132, 24,200, 54, 97,138, 32,118,215,235, 21,228,129,208,247,
+122,249, 22,142, 9,241,207,234,101,156,109,158, 15,112,155,197, 47,153,212,153, 98, 27,167,187, 53,168,141,149, 88, 85,171, 23,
+ 70, 16,197, 60,160,106,105, 3,206,179,218, 46,184,124,114,137,181, 81,198,206, 67,160,100,139,179,133, 85,219, 80,215, 53, 57,
+123,201,143, 95, 46,185,120,118, 65,191,219,177,201,208,168,141,106,125,113, 65, 74, 69,148,237, 94,124,246,179, 48,195, 24,198,
+ 83, 79, 56,245, 20,107,168,155,150,166, 93,146,137,146,107,110, 11,214, 87,120, 44,206, 59,218,198, 49, 14,134, 83,136,172, 86,
+ 75,150,139,150,116, 58,113, 60, 30, 48,227, 8, 33,224,173, 97,213, 45,193,123,234,166,162,178,142,175,174,158,112, 42,133, 31,
+111,239,216,245, 71, 26,147, 88,251, 74,232, 99,100, 42,181,241,140, 41,176, 15,129, 80, 12,151, 79,174,104,186, 37, 37, 64,191,
+ 59,112,247,246, 45,227,112,162,143,129, 99,142, 18, 67,105,244,178, 45, 14,231, 20,136,100, 68,220,149,148,116,101, 74,193,230,
+ 2,197, 17, 83,205,114,185,224,230, 89,199,183,175,127,160,173,118,252,226,106, 67, 48, 80, 16,108,111,158,180, 16,105,234, 54,
+101,143, 53,225, 41,157,130,169,166,125,176, 81, 22,107, 81, 63,172, 53,146,153, 60, 57, 10,228, 80,115,115,226,211,228, 53,101,
+134,220, 60, 24,229,149,159, 67,111, 38,161, 93, 86,232,144,157,108,110,229,204,150, 72, 69,156, 8,182,252,188,160, 68,139,204,
+172,106, 89, 91, 12, 46,103,197,192,228,185, 19,182, 69, 10,207,249,135, 23,241,127,155, 34,162, 32,197,237, 97, 74,126,144,147,
+158,231,100,171,162,160,165, 9, 54, 50, 95,236,115,254,211,164, 42, 46,179,110,192,200, 19,142,211,200, 40,107,220,172, 31, 41,
+ 86, 14,126,235,188, 50,194,101, 31, 29, 51,156,162,132,148, 84,117,205,122,179,225,226,234,146,218,116,244,135,158,143,239,127,
+224,155,239,191,227, 48, 10, 60,230,211,231,159,240,199,127,246,223,145,243,138, 68,196,216, 6, 76,141,175,193,119, 29,205, 98,
+137,115,158, 66, 32, 21, 24, 14, 61,253,113,135, 49,133, 97, 56,241,250,251,223, 1,112,253,228, 9,235, 85,135,173, 44,255,250,
+ 95,252,115,254,245,191,252,159,216,125,188,163, 12, 65, 87,148,137,146, 50, 30, 79,180,158,104, 4, 27,210, 88,139, 87, 78, 57,
+169,144,140,168,178,157,129,202, 25, 92,129, 14,129, 18, 85, 30,106,107,233,115, 38,104,230,120,118,153,133, 45,212,198, 16,176,
+130,122, 86,162, 97, 85, 85,212,203,134, 50, 6, 98, 12,132, 97, 16,221, 78, 82,154,154,241, 58,134,238,137,163, 0, 78, 2, 26,
+220, 52, 4,182, 23, 13,219,203, 13,181,171,136,249, 72,140, 1,103, 10,117, 37,186, 33, 25,231, 39,188,222,172,242, 61,212, 85,
+147,177,148, 36,159,247,116, 89,201, 10,199, 18,179, 92, 58, 77, 93, 9, 4,203, 22,108, 74,210, 60,106,161,131, 78,147, 92,132,
+205,102, 77,211, 52,236,118, 71,114,200, 74, 55,143,242,239, 21,171,205,146, 94,110, 88, 42,189,194, 99,137,218, 92,186,185,195,
+ 46,211,164,119, 14, 99, 41, 84, 86,214,101,177, 56, 48,131, 54,171,144,173, 96,205,209,252,131, 9,192, 98,189,166, 33,230, 9,
+ 85, 49, 21,221,101,166, 69, 23,205,169, 54, 57,163,142, 99,209, 80,153, 44, 43, 33, 29,165,187,202, 67, 18,209, 91,173,220, 10,
+153, 36, 24,134,168,171,120,103,200, 57, 18,211, 48, 99,101,113,134, 50, 78,220, 0, 21, 85, 59,171, 54,112,230,156, 5,223, 84,
+ 53,109, 93,243,246,227, 71, 98, 72, 44, 90, 59, 27,229,167,212,181, 49,140, 18,180, 32,179,162,121,127,134,226, 77, 99, 76, 24,
+155, 36, 8, 67,105, 63, 49, 69,186,182,225,233,147, 71,242,230,233,184, 51,165,204,199,219,119,152,186,230,114,187,101,209, 45,
+184, 61,156, 48,214, 49,158,122,234,171, 21,214, 56, 98,136,178,187,177, 16, 66, 16,187, 92, 17, 76, 94, 81,161, 64, 8, 50,226,
+175,234, 10,227, 34, 97,140, 12,167, 19,139,205,154, 47,127,249, 21,109, 87,243,221,239,126,207,253,251, 91, 30, 63,255,132,118,
+181,196,213, 21,241,112,162,228, 64,115,177,165, 93,116,252,225,219, 63, 48,246, 39,142,187, 61,217, 23,172,243, 12, 41,113,179,
+217,176,223, 29, 8, 97,228,209,213, 37,214,201,196, 32,166,132,181,142, 24,133,254,116,117,117,197,225,254, 3, 99, 56,206,108,
+231,227, 48, 50, 38,232,244,189,204, 10,140,210,103,111, 14,179,200,165,204, 20, 33,239,140,102,232,234,104, 50, 11,221,107, 18,
+ 17, 77,103,190,243,142,139,235, 11,218,166,161, 63, 30,233, 79, 3, 20,249, 57,117,101,105,171, 90,179,136, 61, 85,211,226,106,
+ 79,200,153,229, 98, 77, 10,137,167,215, 27,222,188,187, 37,197, 61, 57, 53, 98, 27, 42,153, 66,163,123, 97,229,114,247, 3, 6,
+163, 60,246,165,116,147, 37,225,138,116, 46,198, 26, 76,202, 84,214, 81, 85,142,253,110,192,118, 21,151,235, 37,141, 53,248,211,
+ 81,132, 29, 69,108, 24,155,229, 6,227, 45,166,242, 44, 93,205,243,235, 27,134,148,121,249,254, 61,125,138,120,138,112,171,131,
+ 50,159,173, 28, 24, 67,202, 28,134, 72, 31, 34, 87, 79,159,176,218, 94, 98, 10, 12, 97,148, 11,253,112, 96, 8,129, 67,140, 36,
+ 47,203,215,169,203,179,149,161, 88,171,130, 44,233,246,228,225,147, 39, 52,145, 53,135,160, 33, 85, 29,205,202,114, 57, 70, 94,
+126,248,128,115,158,103,215, 43,122, 21, 29,214,190,214,125,174,136, 49,171, 34, 97, 13,147,240,108,230,178,107,138,161,213,131,
+198,170,242,125, 10,134,152,212,234, 25, 59,219, 82,138,213,110, 99, 82,232, 99,207, 94,247, 82,102,197,252,249, 66,183, 26,227,
+200, 89, 96,167,249,206,115, 76,169,159,226, 94,221,236,133, 53, 70, 66,128, 12,210,221, 39,245,204, 79,206, 34, 55,193,104, 20,
+203,204,220,245,163,133,144, 90,134, 84,144,151, 39,149, 77,153, 48,177,121,182, 15, 77,228,185,179,117, 51,205,248,217,121, 26,
+161,189,190,179,110,222,189,203,148, 66, 94,171,195, 99,189,211, 8, 92,177, 79, 25, 35, 35, 76,169,154, 28, 41,103,250, 24, 49,
+ 38,179, 90,172,121,116,253,148,110,217, 18,250,145,221,221, 59,126,252,233, 5,251,253, 30,111, 13, 55,143,159,240, 39,127,246,
+ 79,201,118,161,231, 72, 5, 94, 81,200, 43,168,155,134,218,123,114, 24,133,145,110, 33,198,145,219,247,239, 8,159, 30, 25,199,
+200, 79,187, 59,110,223,127, 96,113,121,197,229,102,205,191,249, 95,255, 21,255,195, 63,251, 31, 57,142,224,107,216,118, 45,139,
+ 69, 71,237,207,177,162,228, 52,243,246,141, 22,129,185,136,176,112,154,114, 24,131,116,104, 99, 96, 31, 35,158,160,106,112,249,
+206, 88, 15,141,102, 18,212, 36,170, 82, 24,114, 81,255,186,167,169, 27,186, 69,195,178, 91,144, 82,160,196,172,152, 84,253, 94,
+102, 57,155,114, 49, 56, 87, 83, 74, 34, 12,145, 52, 70, 66, 26,232,186,150,245,122,197,118,211, 17, 78, 71,105, 82,108, 18,123,
+106,201, 88, 50,222, 91,189, 52,237,204, 80,207, 70, 58, 97,144,115, 94,120,242,254,156, 77, 80, 68, 96,105,141,165,241,226,193,
+207,185, 96,205, 4, 48,210,239,190,145, 70,200,215,150,205,122, 77, 24, 35,187,195, 78,214, 19, 73,223, 31, 13,196, 50,138,117,
+ 45, 89, 72,157,174,114, 82,128, 22,177, 81,207,115, 32, 77, 89, 76, 58,237, 20,150,126,150,137,134,213, 80, 32,101,225, 27, 59,
+ 89, 56,117,108,254, 32, 99, 0,181, 26, 27, 21,146, 78,207,233, 89, 28,251, 32, 86,181,228,185,224,113,138,113, 45,217,227,157,
+208, 1,171,202, 99, 70,177, 19, 26,221,181,103, 77,222, 44,169,224, 91,139,177,158, 28, 35, 33, 4,172,117, 50, 61,117,126, 14,
+141,154,131,155,116,186, 43, 60, 40, 89, 29,248,229, 66, 50,163, 15,167,158,148,243,188,152,183,122, 25,165,148, 36, 41, 77, 63,
+ 40,227,236,172,222, 68,129, 51, 49, 37, 76, 78, 52,211,142,137,194, 16, 70,218,205,154,139,213,154,140,228,122, 87, 85,197,241,
+112, 71,223, 7, 46, 87,107,174, 31, 93,139,237, 37, 75, 46,242, 88, 18,173, 98, 17, 83,146,125, 52, 70,252,233, 50,238, 62, 75,
+ 21, 27,239, 9, 58, 10,237,218,154,144, 18,161, 31,201, 9, 62,251,236, 83,110, 30, 63,225,237,143,111,120,253,234, 71,201,251,
+ 93,173,241,171,142, 52,142,164, 49, 96, 19, 44,183, 27,226, 56,240,225,195,123, 14,187,131,224, 95, 43, 71, 48,133,214, 57,214,
+139, 21, 63,253,244,142,229,178,165,169,171,179, 34,177,200,155, 30,203,200,205,229, 21,222, 89,250, 99,175,226,147, 68, 63,142,
+244, 99,144, 49,161, 97,182, 63, 24,107, 68, 72,164,191, 70, 42,178, 84,170,156, 87,203,216,121,151, 72,200, 42,164,139, 10,217,
+152, 60,143,134,139,203, 21,171,203, 45, 37, 37,142,135,158, 24,180,210, 87,229, 57, 69, 68,120, 33,100, 92,151, 24,226, 72,126,
+ 27,113, 23, 29, 93,219,240,203, 47,158,242, 23,223,223,113,220,221,210, 45,111, 40, 36,217, 49, 21, 25,249,216,148,137,113,196,
+ 23, 1, 33,136, 82,182,145, 7,187, 68,156,141, 56,235,168,106, 47,187,119, 21,119, 21,103,184,220,174,233, 42, 67,147, 51, 53,
+ 98,107,114,206,176,236, 90,176,134,232, 13,219,166,225,147, 71, 79,137, 41,243,219,215, 63, 74,247,101,229, 64, 43, 33, 81, 85,
+ 53,222, 89, 74, 30, 25, 82,226, 16, 37, 24,104,125,113,193,230,226, 82,232,104, 38,115,255,230, 13,167,251, 29, 49, 37,246, 49,
+144,172, 0, 48, 28, 82, 16,120, 11,117, 39, 58,134,126, 24,232, 67, 38,167,168,106,109,169,178,173, 85,125, 70, 85,145,235, 37,
+222, 27,110,174,158,113, 28, 10,223,253,244,142,170,242,220,108, 22,244, 81,178,206,189, 85, 91,219, 84,245,103,169,170,203,204,
+ 37,215, 56, 71, 43,133,216, 20, 81,106, 52, 26,177, 24,237,142,173,147,232, 96,103,113, 88, 5, 92, 76,182, 31, 85,172, 63, 16,
+207,149,153,179,126, 22,237, 8,128,105, 58, 84,220,172,148,159, 46, 78,107, 36,212, 67,161,242,234,154,144,244,135,252, 16,140,
+ 99, 30, 16,243,114,198, 42, 2,122, 58,152, 72,231,226,162,168, 80,203, 42, 62, 50,150,179,221,109, 82,231,139, 87, 93,197,157,
+211,152,127, 10,157,112, 66,235, 51,156,153,221, 57, 75, 17, 97,205,236,206,215,103,197,104,160,141,104, 67,140,181, 50,233,152,
+186, 66, 28,185, 88,134, 24, 9,217,176,168, 22, 44,151, 75,186,229, 2,138,225,120, 58,240,211,235, 87,252,244,250, 22, 67,224,
+ 98,179,225,239,252,131,127, 66, 89, 62, 37,231,145,186,174,112,222, 99, 43, 47,151,144, 47,248, 74, 8,142,214, 77,172,118,121,
+ 78,239,223,189,227,213,183,191,103,121,113,193,199, 55,239, 25, 78, 39,162, 41,124,247,187, 63,240, 23,255,254, 59, 22, 53,248,
+ 22, 66,129,227, 73,226,163, 59,111,169,189,197,213, 30,167,156, 0,175, 48,154,160,128,120,107, 50, 57,169,141,202,129, 43, 9,
+ 66,224,200,136, 43,153, 90, 25, 8,113,130, 15, 41,240, 39, 26,195, 48, 36, 14, 99,162, 88, 25,105,215,117,195,118,187,210, 21,
+168, 94,152,214, 97,156, 96,102,101, 95, 29, 25,135,145, 98, 61,206, 87, 12,125, 15,113,164,173,107, 98, 85,184,216,108,168,109,
+ 35, 49,197,222,233, 5,165, 22, 75, 43, 29,179, 53,114, 25,186, 41,196,100,154,190,100, 72, 65, 4,176, 57,161,187, 97, 71, 76,
+ 82,208, 85,181,195, 87, 50, 14,119,106, 81,180, 37, 61, 32, 15, 74,178, 93,187,104, 88,111,214,244,167, 61,225, 52,170, 14,163,
+ 8,122,119, 38, 43,170,181,221, 24, 76, 37, 22,212, 18,197,111,110,245,156,204, 73,206,221,201, 54,108,203,121, 69,228,172,192,
+157,130,102, 31, 76,169,234, 51, 88,106, 14, 80,146, 98,213,205,223,215,172, 75,163, 50, 47,177,220,244,189,157,115,210,203,153,
+ 46, 57,137,250, 74,166,210,144, 27,105,224,228,210, 78, 57,227,172,157,249, 14,194,118,119,120,231, 68,132,174,137,125,206,123,
+ 45,100,141, 22, 81, 89,115, 17, 20, 79,141,147, 66,199, 88,252,170,235, 8, 41,112, 26, 71, 76,229,228, 48,197,232,220, 31, 73,
+ 32, 27, 6, 13,165,151,177, 92, 74, 81, 13,255,118, 86,224,121, 13,185,143, 57, 17, 74, 38,149,204,103,143, 31,115,117,181,228,
+208, 15, 28,142, 61, 79, 30, 93,243,253,183, 63,112, 60, 14,124,190, 93,115,121,117,201,112,220,225,180, 51, 56,141, 35, 55, 77,
+ 67, 28, 19, 49,140, 56, 10,174,174, 8,251,157,128, 3,204,132,135, 5,223, 52, 28,143,131,142,226, 29,227, 8,135,211, 64,187,
+104,248,226,151, 95,115,218,237,248,240,250, 53,135,211,192,227,101,199,245,205, 35,118,125,224,120, 60,226,141,193,183, 13,219,
+171, 11, 62,188,121,207,225,254,196,225,246, 40, 95, 84,239, 72, 68,182,203, 37,199,113,224, 20,123, 30, 95, 92,203,206, 34,103,
+ 85, 69, 87, 12, 57, 17, 75,226,242,242,146,227,105,207, 56,140,122, 32, 75, 71, 41, 97, 29,154,224, 99,101,239, 36, 81,157,102,
+154,128, 18, 82,166,107,106, 42, 39, 62, 75,171, 95, 34, 76,209,145,179, 42,129,139,170,125, 29,116,139,138,139,155, 43,218,166,
+230,112,183,163, 63,141,218,221, 64,215, 84,212,222, 51,244, 35,161, 31,169, 46,215, 52,235, 78,224, 65,167,158,123, 59,114,177,
+ 93,240,139,167,143,249,120,124,201,233, 56,176,190,114,154,210, 36,150,153,172, 25,233,198, 20,108, 93,145,200, 52,109,163,108,
+136, 44, 68, 47, 9,114,166,241, 53, 37,201, 72,205, 55,158,171,203, 45, 93, 85,211,216, 72, 87,162,140,130,156, 99,213, 9,157,
+ 48,123,195,114,181,228,243,171, 27,118,167, 35,191,251,233, 53,197, 73, 8, 67, 78, 35, 62, 68,218,170,166,173, 61, 57, 5, 78,
+ 41,113, 24, 3,167, 4,198, 59, 54, 87, 87, 84, 77, 77,177,137,251,119, 31,216,191,121, 71,140,137,251, 16, 72, 78,253,223, 42,
+146,241, 22,170,166,162,109, 32,230, 34,217,206, 37,113,232,179,250,178,101,151,219,212, 13,222,215,212,117,203,224, 68,116, 85,
+213, 13, 55, 23, 23,124,119,236,249,253, 79,183, 44,141,193, 46, 59, 37, 73, 89,156, 36,210, 75,249,170, 81,162,178, 22,129,226,
+156, 16,169,140,198, 63, 40, 10, 83, 70,198,211,254,171,194, 25,175, 85,186,213, 16,151,243, 8, 94, 2,119, 39,213,172,253,217,
+216,218, 60,136,138,152, 32, 23,118,218,107,154,115, 16, 11,230, 44,232,153, 47,109,237,176,207, 55,248, 68, 65,179,148,226,229,
+ 64,182, 83,120, 18, 51,107,158,105,106, 52,167, 93,137,195, 68,104,114,162,166, 87, 90,205,207, 10,143, 41,191,122,250, 79,196,
+181, 73, 39, 22, 15,119,239, 70,117, 39, 50,133,178,206,232,101,226,180, 27, 23,107,161,177,178,187,181, 70,131, 55,172, 35,140,
+133, 33,102,106,215,208, 46,182,172,214, 29, 38, 15,140,125,226,237,171, 23,252,240,234, 7, 98,200,108, 54, 21,127,250, 95,254,
+ 67,170,237,167,196, 50, 80,215, 45,222,181,114,192,122,121,255,199,210,208,212, 29,237,162,102,123,185,165, 31,110, 41, 46, 51,
+246,153,251,219,119,124,247, 87, 3, 77,219, 17, 67, 96,127,251,145, 49, 5,222,190,248,192,118, 35,151,185, 92,156,234,121, 54,
+178, 58, 76, 38, 83, 98, 0,235,240,126,226,131,203,133,235,179,118,189,122,150,214, 38,179,105, 12,235,166,112, 26,197,154, 23,
+180,104, 74, 22, 18,181,224, 65,139,236, 90, 79, 73,198,239,214, 25,124,237,233,150, 21,143,110, 46,231,164,187, 92,178,172, 41,
+212,169,148,139, 34, 75,157, 97, 28, 70, 98,138, 56, 18,206, 39, 76, 49,108,218, 5,235,205,134,144,131, 8, 6,245,146, 40, 70,
+248,237,174,114, 20,194, 60,102,150, 85,212,228,164, 48,103, 49,181,147, 73,150,177, 78, 34, 98, 83,164,128,192,155,116,126,237,
+138,149, 21,142,142,195,141, 81,219,217,152,216,220,108, 89, 44, 59, 62,188,126, 75, 12,249, 28, 52, 52, 23,162,103,134, 67, 54,
+114,102,123,157, 6,151, 34, 86,231, 41, 6,213,148, 41,181, 51, 49,161,160,172,245,218,188,138, 93,213, 24,101,170,100,137,196,
+157,196,174,147, 1,165,228,179,166,165, 76, 81,227,115, 62,129,196,201, 78, 84,167, 57,196,101,190,216, 57, 23,223,222,168, 63,
+ 93,114, 67,250, 81, 86, 2,190,114, 36,157,126,167,156,240, 26, 1, 28, 83, 34,101,131,215,220,123,231,172,102, 6,200,251,110,
+ 85, 35,113,254,124, 53,189,110,211,181,244, 99, 96, 63,142, 85,107, 76, 10, 0, 0, 32, 0, 73, 68, 65, 84,184, 74,193, 27, 15,
+248,207, 49, 36,250,211, 48, 91,117,140, 30, 56, 69, 43, 12, 73,158, 41,243,120,166,228, 44,225, 6, 17,158, 60,185, 97,177,232,
+216,239,118,116,109, 67,211,181,124,120,247, 1,239, 29,151,151, 91,188, 49,164, 32, 40,193, 16, 2, 37, 69,186, 69,199, 56,202,
+ 46,203, 56,169,159, 66, 28,103,133, 39,165, 80,233, 39, 22,198, 36, 73,109, 77, 69, 74, 34,120,250,228,171, 47,216,108, 54,188,
+122,241, 3,195,241,200,241,184,103,125,125, 67,221, 53,140,195, 48,197, 62,177, 88,175,241,149,227,237,187,247,244, 31,142,132,
+126,192, 85,158,104, 33,217,204,122,181,165,223,247,180,190,165,109,234, 7,214, 50, 17,203,196, 92, 88,175,214,172, 23, 29,199,
+251, 61, 49, 4, 65,233, 22, 25,111, 61,196, 14, 78,170,102, 17, 23,165,169, 33,194,148, 76, 83,137,239,185,113, 78,178,161, 53,
+ 23,119, 82, 14,219, 89, 41, 45,235,143,213,197, 5,203,205,146, 16, 3,253,105, 32, 37,169,150,189,119,116,181,116,219,197,192,
+226,114,203,205,211,167,132,148,249,240,241,150,219,253,158,254,212, 51, 14,153,237,229, 37,191,121,182, 37, 29,118, 48, 36,108,
+182, 42,242, 74,228,241,132,203, 89,125,159, 25, 87,181,242,250,115,196,148,128,181,105,134,152,156,246, 71,150,117, 67,211, 46,
+184,186,184,166, 91, 84,180,166,176, 46, 6,155, 36,231,122,213, 45,196, 70, 86, 85, 92,110,183,252,209,205, 51,222,222,237,248,
+203, 31, 94,224,189,165,173, 28, 97,236, 33,102, 22, 77,195,186,246,164, 24, 24, 67,162,143,137, 49, 10,241,112,189,189,160,233,
+ 90,172,129,211,105,207,237,171, 31, 25, 66,224, 20, 2,105,178,223,185, 66, 99, 13,181, 47,116,157,161,171,193,229,145, 18, 6,
+136, 81,225, 45, 89,186, 76,202,255, 79,214,155, 53, 73,118,157,231,122,207, 26,246,152, 83, 77, 61, 84,163, 49,131, 4, 65,234,
+ 72, 71, 17, 39,194, 23,246, 95,246,185,240,133,195,215,118,156, 8, 71, 88, 33, 74,166, 56,128, 36, 64,128, 0,122,172,185, 50,
+115, 15,107,242,197,183,246,206,132, 44, 42, 66, 34,217,168,170,174,220,123,173,111,120,223,231, 37, 26, 65, 88,154,162, 38,234,
+ 58,119,138, 50, 41,105,218,150,179,245,146,199, 7,199,215,111,175,132, 2,150,164, 3,245, 42,225,242,168, 57, 18, 50,133, 74,
+212,179,198,216,121,188, 58,237,127,229, 50, 50, 88, 91, 96,140,240,243,149,150, 46, 93, 27,241,235,206, 66,182,220,213,139,143,
+ 93, 31,249,225, 39,251,146,172,164, 98,146,206, 75,103,175, 46, 71, 42, 96,178,186,122,246,200, 31,173,211, 38, 64,208, 4,232,
+ 80,200,215, 74, 74, 99, 39, 44,180, 58, 36, 47, 38,132, 7, 63,167, 88,164, 52,195, 68,194,236,153,151,110, 54, 34, 7,124, 10,
+113, 78,154, 75,153,221, 30,179, 21, 74, 41,131,205, 66,169,152,233,123, 38,255, 30,166, 61,168,102,226,135, 27,217,174,107,115,
+208,123,104, 77, 72, 26, 91,212, 36, 36, 29, 44, 34, 9,103,139,117,205, 98,177,132,164,120,247,254, 21, 63,252,248, 29,219,125,
+160, 42,123,254,219, 63,255,207,156, 60,251, 39,156, 31,101,146, 98, 42,116,105, 41,108,153, 85,245, 26,163, 60,235,205, 41,235,
+245, 25,109,189,144, 46, 91,139,158,227,234,253, 13,219,155,247,220,252,240, 29,253,221,123, 42,171, 40, 98,160, 94,202,161,110,
+148,165,178,138,214, 42, 22,133, 8,220,234, 74, 80,165, 58,131,122, 82, 84,135, 29,109, 38,171,133, 24, 41,171,200,162, 76,156,
+ 87,134,147, 34,209, 88,207, 73,101,216,212, 5, 78,107, 6,101,137,169,192, 37, 89,157, 20, 70, 16,175, 46,251,154,171,108,147,
+124,118,113,206,217,250, 68,214, 28, 51,146, 84,226,128,157, 23, 77, 82,204, 5,160, 54,194,218,168, 76,162, 50, 9, 91, 88,214,
+235, 37,134, 32,190,107, 37, 90, 10,109,229,243,154,116, 13,211,243, 57, 59, 48,230,164,188,124,121,153, 66, 62,183,236,153,150,
+240,158, 64, 81, 42, 10,171,102,139,162, 38,119,222,121, 98,165,178,109,185,172, 74,201,216, 8,145,221,118, 7, 76,137,126,105,
+190, 28,205,108,183, 22, 91, 99, 81,228, 73, 95,144, 70, 74, 35,196, 62,163, 52, 86,139,222, 43,132, 32, 83,165,148, 48,133,144,
+ 25, 21,138,209,141,217, 6,151, 72, 42,204, 46,147,137,188, 28,129,144,227,112, 39, 11,170,158,209,175, 34, 63, 15, 62,205, 13,
+ 39,185, 49, 66,137,171,229,240,156,171,153, 52, 41,132, 78, 43,127, 54,138, 39, 95, 68,188, 30,231,189, 76,201,181, 17, 77,202,
+148,163,144,215,180, 42, 43,227, 82,230,228, 78, 43, 59,113,166, 72, 57, 97, 23,117,205,126,116,220, 63, 60, 82,218, 41, 34, 78,
+ 44, 56, 36,217,103, 15,195,136,213, 69,238, 70, 52,202, 79,106,110,209, 81,250,124,200,219, 68, 78, 7,146,113,201,147,167, 23,
+ 40,109,185,123,124,160, 93, 45,233, 7,207,251,183, 87, 44,215, 37,155,205,138,104,132, 48,165,149,161,239,247, 36,171,176, 85,
+197,176,235,192, 71,172, 45,164,235, 15,225,208,105,120, 80, 86,131, 14,184,193,209, 44, 42,172, 53,244,227, 64, 83,149,124,250,
+171,207,121,253,230, 29,111,223,190,229,242,236,132,208, 13,188,120,249,130,221,126, 96,187,123,144,151,222,192,250,236,148,253,
+221,150,187,119,239,233,250, 7,198, 56, 82,218, 22,231, 29,235,166,197, 19,121,236,122, 78,214, 11, 25,139, 39,249,165,169, 12,
+205,143, 41,178, 94,182,108, 31,110, 25,199,158,193, 13, 82,173,231,129,141,112,186,243,238,113,226, 98,231,170,113, 82, 78,163,
+ 18,133,177, 20, 57, 43,125,142,185,156,131, 46, 50,169, 72, 9, 89,107,217,212,172, 79, 79,176,201,240,176,221, 51,244,226,165,
+213,218,208, 22,149, 4,204, 12, 3,139, 69,195,230,233, 11,174, 31,239,121,243,230, 45, 74, 69,234,186,100,112,154,110,191,229,
+242,114,197,120,126, 65,119,255,158,208, 63, 96,171, 66,166, 95, 99, 32,142,158,186, 93, 74, 87,106,202,140,114, 37,239,127, 68,
+ 23,129, 85, 60,110,183, 60,220,223,177,185, 56, 99, 55, 74, 52,165,223, 62, 82, 39, 47,187, 72,101, 89, 84,149,188,216, 42,241,
+236,244,148, 95, 62,127,201,119,111,222,240,247,235, 43,218,182, 97,185, 88,114,117,115, 79, 76,158, 77,221, 80,104,232,221, 40,
+ 98, 74, 31,233, 93, 32,168,130,182, 93,176, 88, 52, 40, 13,163, 27,121,124,123,203,190, 27,216,187,158,104,200, 52, 41,178,207,
+ 53, 82, 86,150,101, 99,177, 42, 16,124, 96,112, 18,243,232,147,104, 34, 66,238, 56, 27, 83,209, 84, 13,182,110, 73,186,201,204,
+105, 39,200,222,162,100,181, 88,115,114,186,227,237,205, 43, 46,111,111,121,249,244, 5, 62, 70,108, 76, 40, 43,159,161,154,119,
+224,146, 94, 21, 18,148, 20, 57,135, 57,231, 19, 24,141, 50,197, 60,206, 62, 28,142, 19, 3,123, 26, 0, 30,254,117, 8, 52,205,
+ 47,120,238,238, 4, 94,162,231, 78,125,246,131, 39, 57,148, 72, 54,163, 43, 83,142,150,212,115,247,108,116,206, 34,207,187, 76,
+102,107, 89, 30,129,135, 41, 31,253, 40, 23, 58,105, 82,116, 89,105,204, 17, 42, 54,205,187,114,149, 82, 70,106,102, 44,231, 28,
+120,158,102,239,174,159,199,158,106,126,102, 69, 80, 39,190,226,137,142, 55,141, 16,201,192, 30, 81,151,219, 76,143,180,153,194,
+ 39,235,132, 24, 18, 33, 9,110,115,209, 46,216,156,174,136, 6,186,219, 91,110,222,253,196,174, 27, 73, 41,242,229,111,254, 27,
+159,254,234, 31,184,247,210,184, 24, 99, 41,172,165, 48, 50,126, 79,196, 57, 36,165,110, 45,139, 69, 77, 83, 74, 14,195,232, 20,
+ 38,106,246,119,145,123,189,227,180, 13,196, 94, 19, 84,201, 48, 4, 76, 72, 44,140, 66,153,136,213, 25,178,163, 33, 24,249,189,
+142, 3,121,242, 25,196, 59,157,242, 36, 38, 5,162,138, 24,165,168,140,225,100,169,217, 24, 69,163, 34, 85, 2,167,193,212,138,
+100, 53,119,206,210, 69,157,225, 65,122,206,225, 32, 59, 59,140, 49, 20, 11,203,243,231, 23,180,117,193,224, 70,193,142,134, 60,
+ 45, 8, 50,170,245, 19, 20, 12, 80, 33, 80,167,129, 90, 13,184, 20,104, 22, 13,101, 85, 65,144,248,108,239, 2, 46, 56,138, 90,
+ 46, 76, 73,222,156,206, 50, 53,119,206, 74,169,156,237, 29,230,139,204,199, 3, 25,113,202, 9,168,202, 2, 99, 52, 99, 12,164,
+ 44,136, 11, 57,185, 79, 16, 25, 9,149, 60,171,101,195,186,109, 25,221,200, 48, 12,179,246,104,122, 22,101,247, 62,165,243, 37,
+172, 21,177, 88, 76,126,142, 92, 85, 10,138,188,245, 22, 61,201, 72,242, 65,174,171,172,108, 87, 70, 8,144,206,123, 76, 33,197,
+241,132, 92,153, 48, 56, 33, 51,234, 39, 13,203,156,183, 48,169,207,109,230, 20,228,212,180,148, 57,241,147,224,100, 42,200, 99,
+ 76, 18,183,154, 65, 81, 33, 73,116,170,209, 90,236,105, 10,172, 41,112, 78,206,125,128,170, 42,133, 41,162, 14,249,236,115, 22,
+ 64, 20,139,179, 6, 41, 80, 9, 4,207, 28, 10,163,133,168,213, 73,250,154,177,243,250, 77,132, 28, 73, 58,208,190,159,191,153,
+205,203,166, 56,239,227, 76,222,119,139,119, 53,132,128,143, 80,183, 45, 31, 92, 62, 99,140, 9, 93, 88,234,182,229,245,219,247,
+236,251,129,211,229, 41,237,178, 33,142, 99,166,200,137,125,170,202, 96,151, 16, 34, 49,195, 85,124,146,189,249, 49, 91, 87, 43,
+ 69,242, 17, 31,226, 92,241, 12, 67,207,167, 95,124, 65,221, 52,252,245, 79,127,164, 46, 74,246,253,200,197,243,231,180,155, 21,
+119,215,215,146,210,102, 12,139,102,193,114,177,228,253, 79,175,121,220,109,217, 14,189,196,110,102,197,240,102,189, 98,191,221,
+ 97, 20,212,101, 57,143, 33,133,226,101, 72, 33,176,104, 91,170,178,226,246,238, 94, 58,198,113,196, 7,217,129, 4,100,202, 0,
+ 9,157, 38,149,129, 58,138,217,144, 42, 93,105, 77, 93, 21,148, 70, 17,146,207,190, 92,201,210,136, 49,239,243,114,111, 85,214,
+ 37,235,211, 53, 77,219, 48,116, 35,253,126, 16, 65,153,146,120,198,178,172, 36, 60,161, 42, 41,234,138,110,220,211, 13, 35, 23,
+ 79, 46, 88,175, 79,196,186,213, 71,246,187, 7, 30, 30,110, 57, 57,127, 74, 81,150,244,251,247,152, 48,226,134,142,110,191,207,
+ 80,136, 68,138,142,210,230, 4,165,232, 69,225, 28,131,100, 71, 59,199,245,245, 21,101,101,120,114,121,193, 98,221, 82,120, 71,
+227,189, 84,202, 90,211,214, 21, 81, 41,122, 21,121,250,244,130, 47, 63,252,144,111, 94,191,226,111,111, 95,177,106, 26, 86,235,
+ 19,222,222, 63, 18, 18, 60,105,106,137,149, 29, 61,163,119,236, 67,164,247,146, 52, 87,181, 53,237,170,165,170, 43,162,247,108,
+175,110,216,221,221,227,162, 67, 91,137,132, 44, 45,148,133,146, 78,169, 81,172, 74, 40,180,167,176, 50,138, 43, 10, 77, 89,202,
+229, 52,250,136,207, 21,110, 89, 21, 84,205, 10, 83,182, 40, 35,251,205,188,202, 70,107, 77,213, 54, 44,215, 27,160,224,219, 31,
+223,224,134,140,160, 76, 10,155,185,211, 42, 48,149,104,121, 9, 43,149,188,214, 98, 83,211,166, 0,149,187,119, 43, 21,185,158,
+212,242,121, 4,104, 16, 17,141, 54, 22,157,247,102,147, 56,102,250,179,186,176, 25, 77,123,184,164,143, 35, 87,149, 34,119, 51,
+241,103,105,206, 10,141, 81, 19,192, 34,255, 92, 71,227,241,121,140, 56,137, 94,115,167, 61,165,177,165, 44,124, 58,114,252,228,
+112,149, 52,131, 81, 98,156, 18, 71,242,239, 79,103,219,222, 52,165, 74, 18, 66, 52,161, 94, 69,244,199, 33,148, 98, 46,116,152,
+ 29, 52, 90, 23,210,149, 24, 45,154, 14,101,231,169,131, 49,134,132,197,121,114,184, 82,201, 98,217,210,216,130,232,246,188,187,
+126,205,221,195, 45,123, 23,185,124,118,194,127,249,231,127, 98,155, 12, 65, 23,160, 43,108, 81, 75, 30,185,150,139, 65,116, 22,
+ 35, 42,121,177,111,181, 53,101, 41, 62,229,152, 37, 87, 65, 71,186,209, 19,163, 22,251,215,208, 83, 69,199,170, 84,156, 53,240,
+124,165,120,182,128,211,101,226,100,161,216,212,134, 69,169, 89, 54,138,186,148, 29,111,169, 13,133, 73,148, 69,164, 40,160,208,
+ 2, 4, 58,173, 20, 31,156,148,172, 27,104, 74,141, 73, 10,157, 45,151,149, 54,172,106, 77, 85,107,148, 45, 32, 40,186, 81, 34,
+101, 5,102, 82,160,108,201,197,217, 41, 31,126,248, 92, 88, 31, 41, 16,125, 32,184,152,179, 57,178, 61, 42, 71, 88, 7,231, 80,
+126, 79,163, 59, 84, 24, 48, 73,211, 54, 11, 57,123,124, 98, 24, 35,251,193, 49,122,207, 48, 58,134,233,156,158, 86, 54,233, 40,
+232, 36,147,206, 98,214, 60, 40,157,178,153,236,144, 89, 96,173, 21,100,109,126, 94, 84,210, 57,208, 84,190, 72,210,194, 66, 49,
+166,162, 89, 52, 36,171,217,119,251, 28,105, 61,137, 8,115,185, 59, 79, 46,165,177,180, 69,238,220, 67,154,163,128,181,146,247,
+211,106, 53, 23,214,199,214, 74,107,237,124, 65,143, 97,122, 78,197,101,101,213,127,130,133,205,254,114,105,225,227,145,205, 82,
+ 41,147,181, 36,249,156, 60,178,196,153,233,159,153,156, 97, 28,121,242,181, 48, 61,138,162, 56,172,213,140,136, 67,197, 14, 46,
+103,168,243,126, 22,195,114,204,130, 72, 51, 17, 71, 4,164, 71, 41,135, 82,239, 42,197,190,235, 69,129,154, 99, 63,167,131, 36,
+132, 64, 63, 12,140, 99,152,130,130,230,151, 16, 14, 52,172, 24,226,188,131,243, 41,226,130, 99,189, 89,241,252,233, 19, 98, 2,
+163, 43,140,182,188,123,243, 6,173, 96,117,186,166,109, 22, 12,189, 35,102, 43,156,119,129,118,185,148,191,164,119, 18,108, 97,
+ 52,177, 31, 5, 63,203, 33, 45, 74,107,131, 31,122,185, 42,141, 17,165,125,179,224,163, 47, 62,227,219, 63,125,195, 15,223,255,
+200,122,189,166,235,247,188,252,244, 99, 30,239,119, 92,189,125, 79,219,180,104,171,105, 87, 75,198,110,228,246,221, 21, 99, 63,
+ 50, 14, 3,182, 44,137, 49,176,106, 91,172, 46,216,117, 61,109, 91, 81, 85,217,198, 33,179,159,124,208, 24,154,229,146,221,253,
+ 61,251,237, 30, 23, 28, 67, 6,240,196, 68,182,136,153,249,193, 51, 89,140,228, 51,208, 79,118,136,145, 69, 97,169, 74, 59,245,
+ 93,100,209,239,225,247,153, 21,199,133,209, 44, 87, 45,203,211, 21, 33, 5,186,161,151, 85, 66,142,242,172,109,129,177, 82,109,
+214, 77,131,173, 75,170,186,224,191,252,230, 43,190,250,205,111, 48,218, 50,236,123,186, 33,161,203, 21,247, 55, 55, 24,157, 88,
+159, 93, 16,187, 61,187,155,215,184,110, 39, 30,249,178,150, 93,155, 86,104, 29,137,161,135, 56, 66,116,196, 24, 8, 1,238,110,
+183, 12,251,145,213,114,197,211, 23,231,132,253,142,221,155,119,232, 40,162,179,166,174,137, 57, 10,246,242,217,115, 62,251,232,
+ 51,190,254,230, 59,190,249,225, 39,206, 78, 78, 56, 57, 57,225,213,251,107,134,190,227,114,217, 82, 98,240,126,196,249,145,206,
+ 5,186, 49,138, 29,171,180, 84, 77, 77,211, 52, 0,116,219, 45,251,187,123,198,161, 67,107, 68,120, 99, 5,224, 81,152,200,166,
+210, 92, 44, 12,155, 26,138, 52,226,125,151,173, 44, 2,199, 8,206,147,115, 27, 48,218, 80, 45, 22,148, 77,139, 45, 75,180,150,
+249,201,108, 67, 67, 52, 34, 39,235, 53,235,213,130,171,219,142,191,189,250, 65,186,130,120,232, 38,231,139, 53,101,145, 78, 66,
+ 0, 42, 57,101, 45,233, 60,221,202,187,111,149,116, 22, 77, 78,194, 47,233, 22,229,196,200,239,148, 62, 18,199,161, 15, 74,218,
+ 60, 73,155,146,168, 82,156, 56,212, 42, 23, 2, 50, 97, 51,218,204, 9,102,178,115,159, 2, 42,212,156, 30, 37,227, 84, 3,218,
+228,131,118, 86,234,205,236,246,152,113,204, 7, 12,236,145,245, 46,197,153,110,150,242,236, 85,197,137,160, 23,103, 85,190,202,
+ 5,142,206,207,252, 68, 56,155,246,255, 7,139, 91,246, 33,107,131,194,202,197,144,199,226, 83,220,175,202, 59,118,109, 44, 33,
+179,186,141,177,180, 77,205,162,149,103,228,225,230,134,251,251,107,156, 19,234,222, 87,191,254, 7, 84,125,198, 16,141,192, 52,
+139, 18,109, 11,208, 10, 23, 70,198,126, 71,112, 29, 33, 12,248,224, 41,148,161,170, 75,150,171, 5,171, 85, 69, 89,200, 8, 29,
+147,112, 1, 30, 59,217,225, 55,149,229, 98,109,120,121,162,249,224, 68,113,214, 40,218, 18, 22,117, 98, 83,195,202, 38, 26, 29,
+ 89,214,138, 77,171, 88, 84, 80,217, 72, 83,200,122,168, 54,145,179, 86,115,185,178,156,104,197, 34, 5, 22,149,198, 22, 74, 86,
+ 57, 49,137, 13,205,139,245,171, 52,242, 92, 72, 6,135, 92, 68, 86,201, 24,185,108, 13,191,248,236, 35,214, 77,133, 15, 30, 23,
+ 2,126, 34,184,197,136,119, 14,231, 28, 97,116,248,253, 14,183,191, 67,251, 71, 72, 1, 31,229,220, 45, 76,129, 74,242,252,135,
+152, 8, 26,170,182,202, 5, 20,153, 74, 41,193, 35, 19, 97,141,124, 85,197, 36, 83, 19,171,133,148, 55,145, 1, 99,110,104,202,
+210,206, 83, 35, 97,152,103,161,102,204,204,114, 18,163,247, 88, 91, 80, 20, 5, 16,113,195,152,247,233, 16,162,151,231, 44,103,
+156,107,166,232, 89,193,195,170, 76,161,211, 83, 4,111,190,236,180,201,107,167,196, 76,180, 35, 35,148,117, 70,177, 78,132,185,
+ 73,204,105,142, 50, 15,212, 20, 24,147,196,194, 55,173,242,143,147, 11, 99, 22,150,166,252, 61,166,112, 36,125, 20,181, 42, 19,
+177,220,144,102, 27,154, 49,178,142, 35, 19, 47, 77, 78,192,140,179,155, 76, 49,120,143, 15, 62, 23, 37, 7, 13,155, 62,178,186,
+106,171,231, 66, 65,219,188,166, 10, 49,112,251,176,149,145,133, 53,196,148, 40,244,129,249,238,188,159, 69, 98,154, 76,114, 74,
+ 57, 25, 40,255, 57,159,145,147, 9, 24,125, 96,183,223,241,203, 95,125,201,233,217, 9,223,253,253, 71, 0,246,187, 29,119,183,
+183,164, 16,104, 23, 45,186, 44, 24,119, 59, 84,146, 75,107,123,191,101,249,244, 68, 8,106, 49, 80, 90,131,235, 93, 14,133,136,
+ 71,105,214, 50, 18,233,135, 1,149, 18,165,181,132, 0, 79, 47,159,162,130,231,235, 63,124,205,217,102,131, 2, 86,203, 21, 31,
+188,120,193,247,127,249, 43, 74, 43,234,178, 32, 86, 5,235,179, 83,126,252,250, 27,118,251,123,134,161,151, 93,158,209,132, 20,
+ 57,105, 27, 30,119,123,130,139, 52,203, 70,176,152,121, 7, 46, 35, 64, 40, 42,169,178,222,190,191,162, 82, 6,179,172,216,123,
+ 71,171, 37,118,181, 40, 12,106,144, 71, 94, 79, 29,122, 98,138,182, 23, 1,160, 82, 52, 85, 37,201, 66, 74,108, 29,226,205, 14,
+178,123,139,228, 17, 75,162,170, 75,214,155, 21,117, 93,179,223,119,116, 67, 47, 7, 99,142,123,173, 10,155,239, 24, 67,209, 52,
+172, 78, 87,212,109,205,201,186,229, 15,127,254,150,237,110,143, 86,138, 93, 55,114,187,109, 89, 24,205,155, 31,191,229,179, 95,
+254,138, 48,140,188,127,251,138,205, 83, 69,187,217, 16,163, 35,122,176,117, 41, 47,137, 22, 49, 77,138, 26,141,165,219, 63,242,
+120,251,200,106,177,100,185, 58,231, 63,126,251,175,124,255, 31, 95, 99, 98, 66,151,149,184, 4, 66, 98, 36,240,242,197, 71,252,
+226,227, 79,249,243, 95,254,202,143,111,223,243,225,243, 75, 86,155, 5, 63,188,191,194, 13, 3, 47,207, 78,168, 83, 96,219,143,
+184, 56,226, 98,100, 8, 18,171,168, 10,139,173,173,240,217,139,130,253,110, 75,191,221,210,119, 91,146, 22,168, 10, 25,188,145,
+188,167, 45, 12,167, 11, 75, 91, 73,183,216,185, 68, 24, 18,110, 12,140, 33,178,239, 34,187,157, 35,120, 57,144,170, 69, 69,189,
+ 88, 82, 54, 13, 69,105,102, 43, 85,244, 28,141,252,100,184,182, 92,174,185,189,126,207,143,111, 94,241,236,233, 5,155,245, 69,
+198, 68,154,195, 11,158,163,128, 39,104,137,168,221, 5, 87,106,166,212,167,163, 49,158,202,254,107,149, 97,231, 25,101,158, 85,
+222,233,144,201,156, 14,162, 50,109,204,156,246,165, 39, 33,221, 28,104,114,176, 75, 77, 2, 29,226, 1, 40, 51, 29, 40, 41,127,
+ 47, 31,227, 33, 48, 38,239,237,116,166,205,197, 12,145,138,105, 10, 12,145,232,229,148,221, 12,196, 41,253, 42,102, 54,249,188,
+ 91,202,255,171,126,150,157, 62,217,130, 52,135,213, 60, 7, 65,254, 1,174,163, 77,222,215, 26,146,206, 29,121,126, 63, 82,238,
+236,101, 90, 33,107,193,132,162,172, 42, 86,171, 37,117, 85,227,195,192,246,254,134,177, 31,113,131,231,195,203,103,124,240,233,
+ 47,217,247,158,168,138, 76,119,147,210, 38,120,207, 56, 12,232, 20, 48, 38, 9, 48, 34,255,253,207, 54, 27,206, 46, 78,217,188,
+221,208,237, 28,187,224,230, 61,114, 31, 32, 89, 69, 93, 43, 26,147,104,117, 78,164,204,135,174,213,217,221,128,192, 97, 82,182,
+ 48,250,164,112, 73,209,148,133,232,143,130,167, 45, 52,196, 17,187,139,196, 62, 98,150,150, 62, 5,130, 50, 68,107,193, 39,124,
+136,248,100, 8, 33,226, 71,151, 9,126, 81,198,238, 57,239,226,139, 79, 62,224,243,207, 62,198, 59, 71,204,185,234,206, 79,129,
+ 61, 33,135,239, 68,140, 10,152, 52,160, 66,135,214, 14, 31, 18, 85,189,164,110,235, 89, 47,225,189,140,124, 79,215, 45,117, 99,
+137, 41,209,247, 29,228, 75, 93,171, 36,207, 70, 86,132,139,184, 43, 29, 0, 65, 41,207, 36,167,253,145, 6, 83, 76,204,245, 28,
+ 96,154, 11,186, 41, 63, 62,230, 32,162,162, 52, 20,133,232,130,156,115,248, 33, 28,173,121,226,209,247,144,119,195, 90,249,243,
+ 49,115, 39, 38,175,120,204,159,133, 74,230, 40, 71,225,200, 14,154, 29, 92, 49, 68,146,243,196, 58, 91, 80,211, 97, 34, 53,107,
+ 7,242,187, 19,124, 78, 36,140, 7,157,233,132, 74,206,117,247, 60,189,226, 40,211, 33, 4,129, 87,233,252,110,168,201,237,146,
+ 2, 69,145, 9,137, 83, 84,172,202, 26, 53, 39,249,233,102, 18, 31,230, 6,219, 26,133, 53,217, 30,158,223, 63,153,140, 9,252,
+107,130,216,216,237, 48,242,248,240, 40, 9, 84, 90, 19,188,159,171,241, 16, 34,209, 7,140,178, 4,239, 49,149,208,112,210, 28,
+141, 56, 37,177,202, 47,197, 7,177, 8,248, 24,248,244,227,143,169, 74,195,221,237, 3, 40,184,191,191,103, 28, 6,106, 99, 89,
+ 46,219,153, 63,173,167,128,120, 20,101, 89,202,222,199, 71,210, 40,191, 28,239,125,222, 59,200, 3, 84,104,139, 46, 12,110,116,
+ 98,236,215,138,122,217, 98,171,138,191,252,254, 79,188,121,223,241, 79,255,240,156, 24, 35,103, 23, 23,196, 24,120,253,231,191,
+241,193,175, 62, 67, 21,150,229,106,129, 87,145,119,127,255, 17,239, 19,247,187, 71,154, 69, 67,140,158,182,106, 40,155,146,119,
+143, 91,225,170, 23, 37,147,169, 97, 74,218,210, 90, 81, 85, 21,215, 87,239,185,189,185,225, 98,115, 50,119,232,211, 65,173,149,
+ 28,128, 54, 43, 40, 3,135, 28,101,121, 8, 4, 60, 81,149,229, 36,238, 61, 58, 19, 83, 22,208,136, 93,163,180, 90, 98, 80, 55,
+ 75,198,113, 96,232, 7,220,232, 36,111,184, 40,168, 10,139,205, 97, 1,182,170,104,215,242,146, 42, 29,249,237,239,254,157,111,
+255,250,119, 84,217,112,113,114,130, 79,137,119, 87,215,156, 46,107,140,129, 31,190,255,142,211,147, 19, 46, 98, 36,184,123,134,
+187, 18, 93, 45,176,182, 21,251, 71, 8,146,197,158,162, 64, 62,220,192,238,254, 1, 99,224,236,217, 83,254,253,183,255,193,255,
+249,223,255, 15,210, 0,245,249,154, 69, 85, 49,236,246, 12,201,243,252,242, 37, 47, 47, 63,230, 15,191,255, 43,239,238,222,241,
+225, 7,151,156,174,214,252,245,205, 27,118,125,199,167,231, 39, 44, 19,220,237, 59, 70,231,240, 36,250, 16,101,143,165, 21,186,
+176,216,162, 96, 81, 54,116, 93,135,235, 58,186,221, 3, 46, 13, 96,100,204, 60,165,222,149, 70,209,218, 72, 85,122, 10,163,240,
+ 4,201, 72, 87,146, 67, 63,140,129,219,199,192,118, 47,150, 50, 91, 88,218,213,130,245,114,195,162,109, 48,214,228, 49,178,140,
+ 61, 3, 62,163, 79,100, 60,183,168, 55,212,117,193,224,224,167,183,111, 57, 57, 61,203, 97, 28,135, 80, 5,201,215,205, 23,245,
+212, 93,107,131, 81,242,114, 78,206, 17,117,228, 93,151, 14,148,249,101, 63,120, 98,243,238, 48,175,181,230, 22, 58, 77,246,176,
+140,141, 85, 83, 22,181,166,208,246,160, 89, 74, 18,223, 74, 46, 10,153, 85,187,115,190,218,145,175,246, 48,190,159,116, 43, 83,
+ 78,122,200,239,232, 36,176,139, 49, 19,147,178, 5, 41, 78,105,129, 42, 43,114, 99,144, 3, 55,254,252, 98,143,217,183,107,148,
+ 21,161,162,154,240,166,113,206,212,158, 8,114, 41,171,179,147, 66,186, 16,109,229,250,208, 18, 50,163,148,194,251, 68,138, 50,
+122,110,154,134,166,169, 81, 26,246,119,247,236,247,183, 56, 55, 16,129, 15, 94,126, 76, 80, 37,206, 71,162, 14,104, 29, 72, 65,
+138, 1, 23,250,156,185, 32,124,124,141,252,140, 65, 7,234,147,150,243,243,115, 78, 79,222,179,223,118, 16,182,120, 15, 58,123,
+171,165,128, 22,197,120,231, 18, 33, 69,108,161,168,173,194, 69, 69,239,101,164, 92, 34,151, 80, 85, 22,244, 99, 32, 89,205,162,
+209,242,140,117,129, 34, 69,146, 5,175, 32,246, 1, 83, 21,140,201,176,203, 0,171,100, 21, 46,105,186,160,217,186, 72,112, 50,
+142,181, 25,156, 18, 53,156,158,174,249,229,175, 62,199,232,132, 31,115, 90,166,207,137,100, 81,206,111, 29, 35, 58, 57, 66,220,
+ 81,208,129,242,140, 17,154,178, 98,185,108, 72, 90, 46,184,174, 31, 25,199,145,178, 42,230,149, 99,211, 88,172,173, 25,186,129,
+ 97, 24, 51, 33, 77, 26, 20,157, 68, 68, 25,143,227, 63, 53,140,209,231, 24, 92,133, 45, 51,247, 32,201,249, 41,226, 75, 45, 1,
+ 54, 89,131,224, 92,182,149,150, 50,121, 8, 65,118,221, 73,197,217, 61, 49,173,114,114, 79,153, 11, 27,177,143, 78, 93,178,154,
+160, 82,211, 20,217,232, 28,127,203,204, 92,152, 26, 33,165,148, 16, 75,115,115, 20,147, 8, 97, 81, 49, 91, 44, 15, 5,167,184,
+216,210, 12,163,153, 93, 27, 62, 30, 84,249, 57, 65, 48, 56,127, 40, 28, 82, 34, 58, 15,133,216,106, 83,146, 66, 8, 99, 48, 81,
+252,244,106, 34,193,229,212,182, 16,164, 83,175,235, 58,255,251, 48,191, 91,182,202,126,254,201,221, 64,144, 6, 66, 43, 12, 5,
+ 74,245,178,242,125,220, 63,112,215,247,160, 69,168, 19, 67, 20,222,180,130,224,131,168, 38, 13, 68,231,115, 60, 96,174,246, 19,
+ 7, 69,107,204,194,130, 40,213,159, 46, 10, 94, 92,110, 24, 92,160,247, 18,153,183,223,142,244,206,209,158,214,180,171, 13, 97,
+148,221,142, 54,134,110,240, 96,229, 1,240, 65, 30, 92,151,188, 80,226,130,164,253, 8,146, 49, 97,106,177,218,133, 33, 82,150,
+ 21,186, 42, 88, 63, 57,231,225,241,129,239,254,252, 45,109, 13,205,166,198, 84, 37,155,243, 51, 94,191,126,203,208,117, 44, 22,
+ 21,182, 46, 56,217, 60,229,234,251,119, 60, 62,220, 51, 14,142, 24, 20, 69, 33,251,223,186,173, 25,187, 68,232, 29,149, 85, 80,
+232,121,156,147,140,168,137,173, 45, 80,186,226,230,221,181, 48,158,113,244, 97,164,212, 5,218, 34,188,232, 20,165,219, 78, 83,
+ 56,146,140, 71,136, 94, 24,215,152,156,134,166, 1, 43, 68, 47,149, 19,136,146,202,251,175,128,209,137,186, 41, 89,173, 87,148,
+218,224,134, 81,246,186,254,176,167,154, 30, 80,163, 20,117,107,169,154, 2,173, 12,110,208,236,110,119, 20, 90,115,249,236, 41,
+205,234, 36, 71,168,214,220,238, 7,174,183,129,175,191,251,129,191,126,243, 3,151, 47, 63,229,226,249, 7,236,238,126,192,221,
+190, 66,235,142,228,123,162,235, 9,190,207,182,149,196,184,189, 34,117, 55, 60,121,122,206,215,191,255, 51,255,227,191,255,239,
+164, 16,121,241,241,115,158,158, 93,224,199,129, 33, 14,156, 95, 94,242,241,243, 15,249,246,251,239,121,127,127,197,203,203,103,
+172,219,154,191,190,150, 11,253,229,217, 25,141,210,220,239,247,140,222,225, 85,100,140, 98,185, 65, 37,129, 73,104, 77, 93, 86,
+184, 48,224,135, 14, 55,108, 25,198, 93,142, 19,146,253,153,241, 50, 69, 88, 86,176, 44, 34, 6, 71,212,121,154, 51, 38,194, 40,
+107,165,144,224,193, 69, 92, 78,136,170, 74,205,242,244,148,245,201,146,229,170, 62,224, 31,213,148,233,157, 71,194,122,110,193,
+105, 23, 43, 42, 91,113,247,254,158,174,223,131, 61,160, 96,101, 75, 18,142, 98, 26,179, 15, 61,243,182,133,197, 43, 1, 48, 42,
+143,143,149,192,169,243,197, 60,145,212, 52, 74,217,188, 63, 22,213,119, 58,206,105,203,186, 18, 17, 0, 73, 14,244, 20,219,170,
+209, 63,183,171,165, 56, 43, 56,226, 76,167,203,182,180, 16,143,252,237,185, 50,215, 18,153,153,166,113,165,210,114,176, 37,249,
+185,117,208,232,120, 68,218, 74, 19, 53,107, 58,216,210, 76,180,179, 73,108, 87, 38,119,252, 19,109, 79, 46,241,172,217,201, 62,
+240, 52,145,233, 98, 78,129, 35,146,116,156,221, 3,147,167, 87,231, 66, 41,230, 48, 23,193, 33,151,212,117, 67, 81, 55, 36, 70,
+134,221, 35,195, 56,208,185,158,166, 94,242,236,217,135,116,163, 98,116,145, 56, 58,201, 91,240, 35,253,184,155,215, 50, 17,159,
+139,110, 43, 30,225,148,168, 76,197,201,201, 41,231, 79, 78, 88,158,212,172, 55, 75,138, 82,163,203,132, 50,137,209,107,246,163,
+162,143,137, 49, 91,244,202,178,152, 33, 68,173, 85,172, 42, 77, 89, 64, 91,193,210, 70,172, 78,180,214, 81,155, 64,165, 34, 21,
+ 17,155, 34,109,173, 41, 26,133, 79,176,237, 61,166, 54, 4,163,233,168,217,235, 10,103, 11,250, 0,227,152, 50,116, 39,229,231,
+170, 64, 27,203,175,127,253, 75, 46,206,206,100,247, 29, 2, 99,144,112, 15, 97,240,123, 98, 28,137,174,135, 97,135, 25, 30,193,
+119,236,131,103,213,174, 56,217,108,196,251, 28,196,198,218, 15, 29,166, 48, 20,101,201,118,219,241,246,234,145,251,251,157, 52,
+ 25, 89,208, 53, 61, 67, 58,229,241,117,102, 14, 24,173,100,252,158, 67,190, 36, 81, 13, 9,132, 82, 58,163,132, 35, 70,167, 12,
+225, 17,245,122,140,145,161, 15,210,160,100, 97,109,242, 14,239,132, 37, 49,113,228, 15,233,105, 6,193,217, 43, 42,107, 49, 69,
+ 86,130, 79, 98,142, 60,206,159, 98, 85,117, 22, 96,166, 44, 98, 54, 90, 4,110, 42, 41,188, 23,145,166,184, 64,242, 59,169, 18,
+ 49, 57, 98,242,217,186, 41,147,135, 20,133,209, 63,241, 17, 84, 22, 48,203,166, 84, 62,119, 17, 39,202,148,194, 34,162,212, 33,
+134, 89,169, 63, 77,227,196,109, 97, 48, 70,198,238,211, 93,161,181, 76,202, 67,246,206,147, 18,125,215, 83, 21, 5, 41,121,146,
+151,130, 32,232,233,123, 79,250, 4,121,167,172, 82,224, 19,250,238,161, 99,215,239,196, 38,150,196, 84, 53,205,236,199,113,196,
+ 57, 55,163, 97,103,144,125, 78, 39, 82,113, 2, 92, 64, 10,242, 97,246,163,231,201,249, 41, 31,126,252, 17,239,175,174, 1,157,
+137,112, 30, 23, 28,203,118,193,106,181,196, 57, 79,239, 70,105, 84,130,240,110, 77, 33,149, 10, 49, 9, 18, 50, 7, 70, 72, 52,
+157,144,137,140,177, 2, 71, 25, 7, 74, 83,112,246,228, 2,157, 18,127,255,219,223, 8,125,164, 93, 90,154,170,102,177,104, 41,
+ 11,203,213,155,183, 20,139,134,182, 21, 40,133,210,154,235, 55,111, 64, 41,118,251, 29, 77, 93,144, 98,160, 45, 44,139,186, 97,
+219,109, 9, 33, 82,218, 34,119, 49,210, 45, 80, 24,148, 53,148, 69,201,237,245, 53,251,206, 19,147,193,171,130, 24,193, 27, 47,
+145,144, 73, 31,218,238,140,240, 84,217,155, 41,107,201, 9, 23, 58, 5, 24,164, 35, 42,216, 17,130, 52, 11, 5,155,101, 75,179,
+168, 25,198, 30, 55, 58,169,220,180, 84,117, 86, 27,108,182, 90, 20, 85, 77,221, 46,100, 79,147,247, 64, 23, 79,207,248,205, 63,
+124,197,175,127,253, 37,218, 68,206,207, 55,252,227,127,253,138,179,213,146, 55, 63,189,227,253,219, 61,223,252,237, 13,191,251,
+195, 31,177,166,226,139,143,127, 69, 91, 21,216,221, 29, 12, 15,164,216,203, 78, 61, 12,244,221, 29,219,221, 35,139, 85,203,119,
+255,239,239,248, 31,255,235,255,134, 75,158,143,126,249,146,143, 46,159,178,125,120,160, 31, 61, 23, 79,158,241,236,228, 9,223,
+189,254,137,155,171, 43, 62,124,246,148, 77,219,242,183,183,215, 60,244, 3, 47, 79, 55,108,180,149, 24,222,220,161, 15, 49,239,
+205, 20,164,108,159,105, 10, 81, 31,251,113, 32, 12, 59,186,253, 29, 41, 57,192, 65,116, 36, 37,221,209,178,136,180,214,163,141,
+ 60, 71,126, 24, 25,198, 40, 30,247, 0,187,124, 0, 19,101,223, 87,104,195,233,217, 51,206,207,207, 89, 45, 23,148,109, 67,154,
+187,212, 41, 38, 74, 97,162,116, 56,178, 47,143,121,245,226,112, 81,209,245, 41, 99, 95, 45,202,148, 88, 93,102, 4,228,129,254,
+165,212,180, 19,206,211, 27,164, 11,153, 58, 29,149, 35, 55,141,178,135, 93,153,214,135, 30,122,242,172, 27,147,133,101,217, 14,
+102,237,188, 15, 36,102, 26,246,180,103, 87,228,228, 40, 53, 91, 79, 81,243,255, 39,147, 4, 37, 95, 47, 28, 37,187, 77, 54, 72,
+ 49,218,167,153,244, 54,173, 10, 4, 47, 26,103,107,141, 80, 37,167,196,171, 28, 29, 28, 68, 4,149, 0, 63,161, 54,243, 84, 33,
+231,222,204,140,188,105,109, 55,163,101,213, 65,249,174,181,130,100, 15,121,214, 34,213, 22,161, 33, 70, 10,139,236, 89, 47, 42,
+ 75, 85, 21,168, 24, 8,221,200,176,123,192, 59,197,227,189,227,201,211,103,232,178,193,143,157, 88, 49,141,224,140, 85, 86,232,
+135,232, 72,209, 67,244,232, 24, 72,209,231,221,185, 70,155,138,243,179, 11, 46,159, 63,231,124,115,206,233, 74, 56,228, 70,107,
+ 80, 5, 99,176,236, 28, 92,247,176, 77, 5,161, 52, 56, 21,241,153, 7,110, 10,209, 17,212, 38,177, 40, 53, 9, 71,173, 34,181,
+214, 84, 42,177,182,138, 90, 75, 7,104, 61, 84,141,193, 27, 97,158,135, 17,218, 66, 72,127, 67,180,244,170, 36,232,130, 34,239,
+165, 3,228,233, 5,124,242,201, 75, 62,251,252, 51,220, 40,193, 60,206,231, 40,103,239, 72,126,132,113, 68,187,129,208,221,227,
+246,247,236,246, 91,124, 80,188,120,122,193,233,233, 42,127, 14,242,185,185, 49, 18, 93,158, 44,198,145,178,210, 52,165,198,251,
+152,173,179, 57, 68, 68, 77,122,137, 35,247,195,204, 77,152,224, 67,228,247,211,204,224, 44,149, 18, 42,179,203, 85, 10, 76,129,
+195,201,123,172, 73,148, 69,153,239, 21,113, 95,132, 33,200,229, 26,227, 84, 93,139,238, 43,143,246,181, 86,242, 59,201, 59,108,
+ 97,171,231, 56,235, 52, 15,181,228,125,153,176,101, 73, 97,203, 98,126,223, 98, 8,153,146,153, 61, 44, 90, 46,251,116,228,184,
+ 58, 36,107, 30,224,103,226,181,207,147,144,144,215, 27, 58,205,171,169,169,128, 77, 41, 64, 72,226,206, 57,182,166, 78, 73,142,
+218, 80,150,101,110,230,226,156,176,232,189, 76,122, 37,156, 39,161, 11,195,118, 24,132,143, 97,167, 70, 66,101,180,236,132,112,
+ 14,243,132,194,110,135, 14,155, 98,198, 25, 70, 10,155,241,139, 89, 96, 17,198, 49,255,178, 15,160, 8,163, 77,206,239, 77,179,
+ 81, 63,166,200, 56, 42,186,161,227,159,191,250, 7, 86,203, 13,175, 94,189,197,141, 62,143,230, 71,134,199,158,213,211, 11,172,
+129,174,243,164,164,177, 90,211,123,143,243, 65,100,253,131, 39, 69, 61,135,198,167,105,252, 29, 51,213,199, 24,241, 48,187,158,
+ 39,155,150, 39, 79,158,242,219,127,251, 55, 94,191,122, 75,107, 52,203,245,130,213,102, 67,213, 44, 24,182, 91,238,175,174, 56,
+189, 56,161,106, 90, 54, 39,103,188,127,251,150,187,247,239,137, 46,224, 66,164, 40, 75,194,224, 88, 52, 11,250,113,160, 27, 7,
+ 20, 80, 22,249, 96, 49, 38, 67, 20,164, 58,141,201,115,125,125,133,214, 50,214, 93,228, 72, 10,107, 91,177, 73,120,241, 85,186,
+ 24, 41, 72,255, 63,174,119,204,132, 38,107,237,156, 31, 93,104, 77,244, 14, 63,137, 36,178, 63,185,174, 75,154, 69,131, 82,145,
+177, 23, 12,110,202, 99, 26,107,173,144,175,180, 92, 34,197, 98,129,173,170,121,228,233,189,167,105, 26,150,203,134,253,221, 29,
+191,248,197,231,212, 77,203,187, 55,111,105,154, 5, 85,217,242,184,187,167, 94,175,249,238,239,111,176, 58,241, 63,253,211,127,
+229,201,147,167,184,161,103,219,245, 98, 63, 73, 10, 55,236,121,120,124, 32,122,199, 95,254,253, 71,254,244, 47,127, 36, 70,207,
+231,191,120,201,243,203,231,252,233,223,254,204,126, 28,120,250,244, 9,235,213, 41,239,238,239,216,222, 63,114,249,252,130,213,
+114,197,143,111,222,209,143,158,203,147, 37, 39, 77,193,238,238,145,209,117, 36, 5,163,151, 41,150,202, 23,141,202,222, 87, 99,
+140,132,167,196,145,125,119, 79, 63,246,132,164,230,244,176,186,208,180, 13, 84, 36, 44,129, 28,112,132,115, 35,125,212,244, 90,
+227,181, 97,235,224,161,147,189, 84, 81,192,114,185,228,197,139,167,156,158,174,133,217, 31,180, 32, 46,149,160, 90, 99,144,206,
+ 62,197,116,160, 29, 22, 37,214, 24,188, 41, 32, 26,118, 59,185, 36,116, 33,177,179, 33,248,121, 5, 50,125, 29,142,226, 83,231,
+148,182,217,223, 59, 33, 30,205, 76, 9,156, 51,154,149,236, 29, 21, 19,145,110,122,134,204,140, 23,158, 20, 74,149, 80,184, 0,
+ 0, 32, 0, 73, 68, 65, 84,104, 74,139,224, 71,118,123, 33,239,216,165,155, 57, 28, 68, 71, 42,121,178, 48, 41, 28,237,188, 73,
+ 24,165, 15,182,184, 44, 98,207, 3,119,201,161, 79, 34, 84,154,178, 58,231,208,152,188,219, 3,125, 68,188,203,187,164,121,212,
+ 42, 63,175, 78,228,228,170,124,249, 31,165,139,233, 35,127,188,202,207,243,148, 42,150,146, 48, 20,180,177,104,107, 9, 41,163,
+137,203,130,178, 20, 97, 85,138, 17, 55,246,116, 67,199,253, 99,199,222, 39,214,103, 39,236,186, 71,162,106,168, 86, 75,138,170,
+ 22,221, 76,240, 71, 70,228,236,197, 87,121,234,145, 66,158,164,104,138,186,226,242,131, 75, 30,239,111,240,187, 71,250, 80, 17,
+137,140,227,200, 24, 65, 5,141, 14,129, 46,231, 76,173, 75, 41, 94,140,100,192,224, 93,164,182, 80, 25,197,110, 68, 56, 7, 90,
+ 46,195,205, 66,161,125, 98, 28, 19,133, 74, 96, 44, 93, 9,189, 83,208, 65,172, 12, 62, 41,198,136,164,121,105,139,182,138,174,
+235,136, 89,251,116,182, 94,243,155,223,124,137,182,154,222,201,229,225,163, 39,120, 65,106, 7, 55,128,119, 68,191,167,239,110,
+136,125,199,249,249, 83,158, 93,190, 36, 25,112,251,142,209, 75,160, 84, 76, 17, 99, 21,237, 90,108,163,125,239,105, 26,203,114,
+217,224,221,192, 56,142, 7,164,175, 54,243, 68,102, 38,124,206, 2,106,105,252, 66,136, 89,200, 90,204, 98, 95,157, 71,237, 19,
+236, 72,101,225,101,112,145,170,144,149,152, 83,138,232, 61, 36,161,133,198, 48, 57, 43,164,136,212,218,200, 84, 37, 42, 48, 10,
+ 83,228, 49, 58, 50,121, 74, 49, 17,149,202,218, 37,249, 30, 58, 79,139, 84,190,120,173,181,114,249,207, 74,245,227,100,197, 44,
+104,246,126, 74,118, 63, 76,187,194,225,153,157, 57,241,145,124,118,164, 60, 13,144,228, 60,173, 12, 26, 47,227,253, 20,228,188,
+206,205,215,164,134, 22,209,172,154,243, 60, 98, 12, 66, 55,212, 26,239,189, 4,152, 41, 89,103, 23,182, 32,134,136, 87, 30, 61,
+ 41,247,243,164, 78, 79,228,200,148, 48, 58, 18, 12,216,135,174, 3, 34, 22, 69,136, 17, 91,216,249, 37,116, 62,144,140,201,120,
+189,195, 97,100,140,100, 59, 77,168, 73,114,214,178,139, 30,188,227,197,139, 75,162,247,236,187,125,222, 51, 59,198,113, 36, 97,
+ 56, 57, 59,203,254, 64, 55,139, 10, 98,138, 20, 85, 41,124,247,236,252,157,213,189,147,106,113,134, 8,105, 70,239,208, 6,206,
+ 94, 60,161,219, 15,252,240,253, 15, 88, 83,144,212,200,217,230,130,213,250, 4,239,229, 5,247, 46,112,241,244,156,230,116,137,
+181, 37, 63,253,244, 19, 41, 37,250,221, 14, 99, 12, 99,244, 88,165, 89,182, 11,110,238,239,136, 17, 74, 51,217,137, 52,166,170,
+ 69, 29,236, 29,104,120,184,219, 18,252, 40, 23,115, 37, 21, 87, 84, 34, 90,201,142, 75,130,207, 2,143,144,178, 69,140, 3,153,
+ 43,211,223,172, 17, 61, 64, 97,101,167, 23,163,160,255, 56, 2, 27,180,109, 67,213,150,244,131,168, 87,125,182, 56,216,194,230,
+ 14, 40,219, 24, 10, 75,185, 40,179, 0, 68,138, 33, 99, 52,117,181,100, 28,123,250,125,135, 42, 11,190,249,250, 91,246,221, 35,
+203,229,138,203,151,207,169, 31, 26,134, 97,164,235, 59,126,124,117,197,233,233,223,249,252,147,151, 60, 61,191,100,147, 28, 63,
+189,122, 69,240, 35, 49,141, 12, 15,143,188,254,254, 53,127,255,227, 15, 64,226,195, 79, 62,226,163,103, 23,252,241,119,127, 97,
+ 28, 29,207,159, 63,195, 22, 53,187,253,192,216, 15, 60, 63, 63,193,212,154,239,223,188,229,110,191,227,217,233,154,167,109,203,
+110,187, 99,215,117, 36, 45, 73,120, 33,143,196, 92, 46,220, 84,242,104, 76,198, 79, 70,226, 56,208,119,143, 18, 81,171,178,111,
+ 91, 65, 99, 35,109, 49, 97, 60, 35,201, 43,156,210, 12, 14,246, 33, 49, 90,195, 62, 40,238,247, 3, 62,202,216,170, 44,225,227,
+207, 94,242,228,217, 5,203,213, 6,109, 11,252,212, 45,198,152, 51,173, 5,162, 18,197,137,130,158,210, 10,129,186, 44,208,186,
+228,126,187,229,254, 97,199,197,115, 1,151, 40, 61, 79,176,229,240, 82,135, 92,102,217,157, 79,234,223,195,190, 79, 34, 82,243,
+122, 39,139,236, 56,164,162,231, 23, 87,116, 13, 34,210, 82, 36, 51,209,225,210, 28,169, 42, 24,215, 36, 1, 74, 9, 20, 86,194,
+128,242,133,169,146,140,212,229,208,203, 59,202, 28,120,145, 38, 22,123,158, 34, 77, 65, 17,199, 35,245,233, 61,156,186,144,233,
+178, 87, 42,205,150,159,105,159,153,102,193, 92,204, 59, 84,117,184,212,141,202,124,128, 56,119,119,106,218, 87,170, 28,125,137,
+158,247,251, 83, 74,157, 82, 71, 41,117, 90,172, 83,218,136,104,181,170, 43,233, 92,156, 35,134,129,126,232,185,190,125,196,154,
+ 18,239, 29,227,174,163, 92, 52, 24, 91,206,233,146,232,172, 85,200, 82,102,149,228, 51, 79, 49, 39, 15, 6, 72, 58, 98, 10, 75,
+187, 60,225,163,143, 63, 96,247,112,195,240, 83, 36,120,241,133,187,190,199, 39, 77,145, 85,253,131, 11, 12, 58, 15, 58,180,252,
+ 46,125,136,212,133,248,243, 15, 43, 20, 89, 30,185, 8,182, 52, 88, 27,136,217, 90,153, 98,100, 63, 36,134, 78, 38, 48, 81, 75,
+ 98,153, 66,198,172,251,190,207, 73,108, 5, 69, 89,240,201, 23,159,114,246,228, 66,206, 6, 31, 4,176,226,123,146, 31,137,206,
+145, 70,113,200,132,184,231,244,116,205,249,242, 35,206, 46, 46, 24, 66,162,239,123, 12, 26,239, 3,187,174,167,235,246,172, 55,
+ 39,212,109, 69, 12,129,166, 77,140,195,192,126,183, 23, 71,200, 28, 36,148,102,163,100,204,225, 72,115, 33,151, 69,151, 33,243,
+229,139,210,100,186, 94,156, 2, 80, 51,222, 45,219,121, 21,248,144,178, 54, 72,163,172,194,121,121, 23,130, 15, 66,161,147, 21,
+119, 14,110,153,135, 1,114, 95,101,180,182, 8,236,179, 72, 78, 2,231,231, 41,178,153,166, 61,249,159, 87,230, 48, 37,138,153,
+122, 58,163,102, 51, 12,138, 36, 22,199,144,146, 20, 16,211,183,206,211,169,249,231,200,220,248, 73, 47, 50,219, 67,167, 77,107,
+204,249,232,147,219,101,178,130,168,201,194, 41, 83, 7,155,161, 74,226, 58, 19, 91,121,140, 94, 92, 15, 70, 46,120, 91, 72, 2,
+158,143, 2,106, 19, 46,128,207,129, 77,241, 0, 40, 51, 34,118,176, 55, 15,247,152, 66,198, 3, 46,120, 10, 85,160,146,128,245,
+ 99,138,120, 68,240,193, 20,149,168, 39, 24,198,129, 42, 87, 90, 43, 33, 46, 49, 80, 85, 21, 31,188,120, 70, 63,116, 60,236, 59,
+170, 98,201,190,219, 51, 12, 3,198,192,230,100, 35,157,172,115, 82,213,104, 77, 12,145,182,173,137, 78,232, 97,137, 72, 24, 70,
+217, 91, 28,161, 41, 39, 27,144,235,123, 54,231,167, 92, 92, 92,240,237,159,191,231,254,238, 62,219, 41,224,244,249, 19, 52,224,
+122, 73, 77, 43,154,138,213,201,154,229,242,132,251,219, 59,238,175,111,196,154, 21, 3,186, 42, 24,251,142,245,106, 67, 82,138,
+113,112,194,149,111, 11,201, 53,183, 37, 69, 85,227, 6, 9, 48,113, 99, 79,247,176, 35, 5, 81, 23,171, 66,146,163,146,149,180,
+165,164, 4, 65,148, 66,200, 44,107,142, 88,197,242,127, 93, 18,229,187, 53,130, 42, 76, 41, 18,131,216,246,166,189,143,210, 80,
+ 88, 75,221,212,114, 64,120,151,119,128,153,197,174, 20, 70, 31, 10,172,122, 89, 99,202, 67, 42,145, 86, 98, 43,211, 74, 49,142,
+176, 88,181,236,118,143, 88,163,248,226,147,143, 48, 85,197, 98,181,193,197,145,127,251,151,223,243,112, 29, 48,213,146,215,215,
+247, 92,223, 93,243,252,226, 61,231,207, 55,104, 28, 42,122,134,199, 29,175,190,249,129, 31,191,125, 69,101, 10, 78,158,159,114,
+254,236,148, 63,254,199, 95,233,187,192,243, 23,207, 81,101, 1, 73, 83, 90, 88,174,150,248, 20,120,245,230, 61,119,221,200,102,
+189,224,108, 81, 19,250,129,237,118,151, 69, 60,224, 50, 7, 95,216,207,106, 14,188,169,202, 66, 96, 49,161,167,219,239, 24, 93,
+ 20,144, 79,182,153, 85, 22,154, 74,214, 24, 81,201, 1,232,130,236,183, 70, 10, 6,109, 24, 99,193, 93,231,232,131, 76,119,146,
+210,124,250,233, 7,124,241,197,199,216,162, 70,233, 74,128, 40,147,130, 62,136,117,139, 36,228,185,152,196, 14,164,149,198,249,
+129,148, 20,117, 14,153,217,109,183, 92, 93,223,115,126,186,198,110, 26,162,239,164, 2,152, 62,107,115,112,188,169, 76,251, 59,
+120, 92,165, 58,159, 82,220,166,168,214, 52,163,215, 99,246,206,100, 18,149, 86, 63,131,195,198,201,251,154, 69,162, 42,201,115,
+167,178,208,107,166, 33,164, 44, 78, 50,217, 14,150,223,159,249, 66,197,204, 30,114,249,158,122,246,172,199,201,194,118,228, 97,
+151,169, 92,250, 25,113,110,158, 0,232, 9,247,121, 56,228,213, 17,124, 99,198,205,230,169,133, 49, 89,179,144,149,243, 19,227,
+ 34,205,135,247, 17, 59,123, 42,114,109, 94,198, 7,133, 54, 86,242,204,139,114, 70,125, 18,246,184, 33,224, 93,162, 90,148,220,
+190,189,101, 81,172,169,219, 92,112, 68,233,152, 72, 42,243, 22,188, 4,125,100,139,211,196,233, 15, 25, 66,163,180,166,170, 42,
+ 46, 46,158,243,201, 39, 91,118,143, 35,209, 39, 58, 2, 70, 85, 36, 31,208,121, 71, 28, 82,192, 69,121,103, 99, 72, 4,159,121,
+233, 70, 51, 6,185, 60, 68,209, 31, 73,201,176,247,114,217,140, 10,250, 81,138,160, 46,105,246, 41, 49,160,176,201,160,162, 33,
+ 5, 97,113, 72, 46, 71,162,170, 45,166,176,124,246,217,199,124,242,249,167,116,251, 78,124,231,209, 19,189,131, 32,171, 42,183,
+223, 66,244, 44,155, 5, 47, 63,253, 21, 39,235, 13, 69,128,135,253,150,177,235,112,105,228,254,113,203,227,227, 35,163,247,104,
+ 99,217,247, 29,219,221,158,182, 45, 89, 46, 74,202,194,210,237,247, 89,251,160,230,110, 92,214, 35,249,179, 73,242, 12,235,121,
+194, 36, 66, 61,165, 20,101, 97,133,247,159,117, 44,211,221, 39, 31,177,160,138,156,207,224,149,194,204, 83, 50,113, 83,121, 98,
+244, 25,203,157,159, 43, 37,151,158, 60,230, 41, 43,202,115, 33,153,197,181, 41, 23,163, 58, 23, 16,146, 93,158, 43,238,172, 46,
+215, 71,141, 79,140, 81, 38,110,185, 8,159,104,127, 49,175,148, 98,254,123,169,233, 92,158, 72,118,217,218,236,189,207,113,178,
+ 71,202,250,124,193, 74, 60,183,199,230,245,152,168,253, 21, 26,157, 69,132, 96,173,198, 68, 89,207,133, 28, 73,172, 77, 30,171,
+103,236,186,115, 78, 68,208,218,100, 43, 99,110, 24,146,154, 17,237, 89, 14,148, 35,137,193,110,187,158,211,182,193, 69, 79,100,
+162,115,201, 30, 77,229, 0,248,169, 10,251,249,232, 79,208,161, 86,105,162,146, 29,223,232, 28, 47, 95, 60,231,242,242, 9,111,
+223, 93, 17,141, 69, 25, 1,138,140, 62, 96,173,166, 93,174,114,186,218,100, 85, 19, 57,126, 89,149,196, 32, 21, 88, 8, 14, 63,
+142, 20, 86,207,163,253,196, 20,237,170,233,198,192,233,197, 83, 98,183,231,246,250, 74, 20,143, 6, 46, 78, 54, 92, 60,127,202,
+238,254,158, 20, 2,157,243,156,159,158,178, 57,219,160, 76,193,187, 55,223,163,162, 40, 43,149,181,114,104, 39,205,170, 93,242,
+184,221, 50, 6, 9, 39, 89, 52, 37,182, 48,216,166, 70, 23, 22, 29, 3,193,141,244,219, 45,227,232, 51,209, 72,147,130, 1, 43,
+118, 56,157, 51, 55,157,203, 35,189, 20,133,240, 53,195, 26,196, 59,169,130,236, 74,108,102,189,203,136, 57, 30,166, 30, 25, 90,
+ 80, 87, 5,182,180, 2,243,241,249,176,153, 38, 8,249, 67, 70, 43,108, 93, 82, 54,117, 46, 28, 76, 70, 60,202,159, 35, 73,145,
+165,180, 4, 57,180,207,214, 40, 21,217,108, 78,248,226, 87, 95,113,183,187,231,246,237, 3, 87,101,195,144, 28, 15,157,167,119,
+142,239,127,248, 29,231, 27,205,197,201, 9,227,222,241,246,213, 45, 55,127,191,134, 2,218,179,154,197,186,230,251, 63,127,199,
+208, 7,206, 47,159, 16,180, 37, 41,205,105,219,210, 2,239,110,238,120,253,112, 79, 63,194,249,233, 9,235, 69, 65, 28, 29,183,
+143, 59,153,198, 40,133,243,158,168,103,123, 54, 6, 77, 32, 96,155, 10, 83, 90, 98,242,184,177, 99,219,239,228, 96, 72,134, 66,
+ 37, 10, 27,105, 43,185, 24, 5,124,169,112, 70,225, 80, 12, 78,147,148,197, 41,203,118, 76, 12, 65, 99,138,138,228, 29,159,125,
+242,146, 95,127,245, 25,109, 83,226,130,102,140, 62,139, 24,167,113,176, 39, 5,135,138,129,232,243, 75,159,156,116, 31, 33,176,
+125,220,179, 89,149, 44,235, 6,255,224,184,127,220,225, 93,194,212, 5, 12,129,148,198, 57,129,205,102,136,140,132,143,232,185,
+ 79,179,202, 30,172, 53,250,224, 32,137, 58, 91,143,244,113, 8,105,154, 15,148, 56, 41,226, 39,254, 52,122,238,222,167,229,161,
+158,125,233,204,118,159,140,181,226, 8, 0, 54,223,194, 9,255,179,112,152,233,176, 56,116, 68,217,171,159, 14,193, 47, 41, 31,
+134, 51, 48, 35, 31,148,115, 17,192,241, 5,192, 60,222,156,186,247,137,156, 23,227,225,123,147, 51,201,103, 83,123, 58,116, 99,
+218, 28, 14,211,164,213, 65,127,128,116, 43,166,176,164,232, 73,126, 96,247,248, 72,215, 57,234,186, 96,217,212,140,143, 35,238,
+177, 67,157,122,148,150, 16, 18, 66,144, 56,210,113,144,131,177,174, 50,188, 35,231,201,198, 72,178, 66,255, 75, 49, 10, 44,168,
+169,249,240,163, 15,233,251, 1,247,167,191, 16,211, 32,156,124, 20, 10, 79, 80,137, 24, 13,189, 79,104,157, 50,196, 72, 81, 89,
+249, 57,199,201,215, 13,248,172, 61, 24, 66,196,197,196, 46, 88,122, 39, 11,224,104, 4,203,156,180, 98, 12,129, 48,200,222,223,
+ 37,249,207,154,178,164,174, 43, 94,126,244,156,175,190,252,130,228,246,140,206, 65, 4,239, 70, 8, 14, 63,220,209, 22, 37, 95,
+124,246,169,172, 39,218, 10, 84,129, 27, 2, 59,215,113,255,240,192,227,195,142,253,184,103, 28, 3,251,126, 96,177,168,217,156,
+110,184,190,189, 99,191,223,163, 84,192,141,157, 40,203,173, 17, 61,195, 17,248,103,122,238, 98, 18,245,191,228, 6,228,115, 44,
+ 72,222,187,201, 57, 12,211,240,122, 70, 27, 76,207,173, 22,129, 93,138,136,235,202, 88, 66,210,196, 40,132, 76,151,209,227, 33,
+201, 68, 32,101,214,130,140, 66, 50, 12, 38,239,150,195,116, 49,107, 69,200, 73,112,147, 56, 84,234,217,124,209, 78,185, 16, 57,
+177, 48,205, 84,196,148, 19,227,242,127,231, 36, 60,108,178,141,198, 12, 4,155, 92, 32, 50,186,159,144, 68, 63,207, 47,152, 44,
+165,193, 74,131,155,156, 71, 87, 85, 78,138, 75,226,112, 81, 25,184,228,115,145,100,165,208, 8, 94,231, 59, 87,190, 86,136, 14,
+165, 42,249,157,166,148,243, 49, 2,170,208,179,202, 63,197,120, 72, 92,204, 62,123,171, 20,214,143, 35,122,185,204, 54, 24, 40,
+140,158,211,152, 80,154,160, 36,223,247,120, 57, 55, 85, 43,179,202,208, 72,212,221,190,235,248,229,139, 47, 88, 47, 23,252,233,
+155,239, 41,180, 97, 28, 3,253, 16,216,246, 29, 23,231,167, 84,149,165,235, 70,188, 27,209,209, 79,184, 30,148, 81,184, 16, 37,
+125,205, 59,156,119, 88, 83,230,209,168,140,160,108, 33,202,247,213,102, 67, 89,215,220, 92,189,101,232, 59, 72,134,209,119, 60,
+249,242,115,108, 81,240,250,250,154,211,205,154, 48,142,156,189,120,193,230,226, 41,221,190,231,245,143, 63,101,124,171, 88,166,
+186, 97, 96,185, 88,128, 81,244,253,136, 11,145,101,145,177,173,198,228,240, 16,169,138,134,174,103,124,120, 20,183,109,238, 24,
+198,201,158,128, 70,233,192, 56,142, 50, 54, 74,210, 53, 42,201,178,156,109, 70,211,174,184, 40,138,217,142, 20, 67,200, 59,206,
+ 12,251,183, 96, 10, 77,189,172,179,125,199,207,230,222,233,130, 48,211, 65,172, 53,101, 83,203, 37,146,212, 1, 10,148,101, 40,
+198,104,154,166,198,249,128, 31, 53,109,219,178,222,172, 88, 45,107,182, 15,119,116,219,158,243, 39,167, 44, 86, 13,125,223,243,
+238,237, 21,187,221, 14, 23, 91, 82,125,194,237,245,150,239,255,240,103,252, 24, 41,219,154, 85,219, 80,151,150,119,223,189,198,
+123,205,229,139,103, 12, 57,175,232,188, 89,176, 46, 74, 94,189,123,203,235,187, 45, 33, 40, 46, 54, 45,203,170, 68,135,196, 67,
+ 55, 16,189, 39, 42,133,143, 89, 28,149, 4,198,163,180,149, 42, 84,107,170,186,145,228,228, 48,242,176,223,210,123,153,120, 24,
+ 20,133,137, 44,171,136,181, 98,232,112, 33, 17,117,201,232, 13, 99,132, 81, 27, 34, 5,189,215,184,232, 40,139,136, 1, 46, 63,
+121,201, 87, 95,253,130, 77, 93, 51, 56,135,142, 35, 38, 6, 98,180, 36,111,179, 45, 44, 71, 75, 6,143,139, 41, 59,183,164,232,
+236,134,158,166,136,124,245,233, 39, 92, 61,222, 97,135, 17,147, 12, 78, 91, 74, 83,225,138,152,201,136,114, 56,160,204,220, 97,
+155, 44,252, 19,160,108,200, 86, 27, 17,204,201,100, 64, 32, 8,138, 44, 0, 59,222,128, 79, 99,232, 35, 94,187, 60, 39,241, 72,
+113, 35,239, 45, 70, 68, 62, 81, 29, 70,225,105,162,219,229, 88,203, 73,140, 71, 18,100,110,242,135,175, 55, 5,145,164,163, 65,
+177, 62, 90,133,169,204,130,159,167, 9,179, 15, 93,253, 39,194,157,250,121, 80,203, 20, 58,147, 59,149,185, 49,152, 44,114,147,
+ 94, 96,130,115,166,233,107,134, 60,118, 21, 81,233,212, 29, 42,209,178, 97,173, 20,210, 41, 69,252,184,167,239, 71,182, 59,207,
+201,162,161,110, 74,134, 49,178,221, 62,114,190,123, 68,117, 11,148, 45,241,195, 32,150, 93, 65,105, 98, 39, 85,117, 2, 51,113,
+238,195,132,253,140,121, 60,175, 41,202,154, 47,191,248, 8, 21, 3,127,250,250,123,222,187,187,153,112, 89,228,108,237,164, 19,
+ 46, 65, 67,162, 44, 21,198, 70,124,210,185, 40, 74,160, 45, 46,106, 92, 2, 31,149,248,214,141,172, 56,189, 87,217,161, 96, 72,
+ 14,185,212, 93, 0, 35, 12,143,166, 17, 24,206, 7,207,159,241,233, 39, 47, 40,213, 3,219,253, 72, 26, 19, 62, 70, 58,183,231,
+163, 39, 23,172, 87, 95,176,222, 44, 89, 44,214,140,126,100,191,219,178,219, 63,208,237,132, 22, 57,142, 3,247, 15,123,246, 99,
+143, 81, 5,103,231,167,156,157,175,121,124,216, 73,160,203,178,149,252,238,164, 41,109, 1, 70, 84,225, 40,127,152,188,228,137,
+147,156, 89, 49, 11, 38,229,179,142, 49,227,182, 76, 94,115, 28, 34, 88,230,180, 74,201, 25, 80,132,228, 80, 70, 75,212,178, 58,
+224,100, 33,101, 93, 82,132, 56,138,109,142, 60, 25, 80,162,141,209, 40, 74, 35,118, 82,151, 3,190, 38,191,246,196,227, 78,121,
+165,147,142, 88, 12,218,154, 89, 4, 62,137, 58, 85, 46,150,205,244,243,133,108,160, 79, 30, 21,195, 28,152, 18, 73,164, 41, 49,
+ 48,133,153,253,160,142,154, 49,157,215,105,222,201,132, 5,157,115, 31, 38, 93, 88,126, 27,101, 76, 21, 68,148, 25,181, 36,178,
+153, 56,103, 52, 4, 37,171,158,178, 20, 66,171,115, 35,133, 45,232,195, 40,244,188,200, 92,148,164,152, 40,172,205, 3, 46,153,
+ 10, 88,131, 68,126, 74, 98,143,166,208, 38,227,252,228, 31, 42,181, 33, 6, 47, 23,119, 74,194,255,213, 54,199, 46,200, 97,162,
+149,100, 26,147,224,195,203,151,116,221, 72,183, 27, 40, 23, 53,251,174,199, 57,199,126,191,227,147,179,167,121,212, 16,242, 14,
+193,230, 49, 97, 14,150,200,135,125,244, 97,174,248, 39,248,140,112,110, 69,124,100,219,138,126,251,136, 95, 84,244,227,128, 15,
+142,122,209,242,201,231,159,240,246,213,155,156,157, 43,162,180,243, 39,103,148,117,205,143,223,126,203,254,110, 75, 81,201, 46,
+102,159,211,143,218,186,166,239,122,188,115, 84,218,208,212, 21,218, 26,202,178,194,218, 66, 46, 24,239,185,185,121,100,169,242,
+ 33,119, 4, 29,208,153, 75, 29,134, 72,223,117,164, 32, 52,180,114,126,144,197,242,167,243,248,184,177, 6, 83, 8, 73, 40, 56,
+151, 17,178, 41,235, 21,132, 19, 94, 55, 5,109, 91, 17,242,195, 45,227, 60,241,182,171, 24, 37,147, 28, 69, 81, 85,148, 77, 35,
+227, 67, 83, 28,216,192, 28, 42, 84,171, 13,195, 56, 82,150,137,245,102,193, 98,181, 0,173,216,109,111,185,190,186, 33, 4,205,
+122,179,225,139, 95,252, 2,245,155,200,191,252,219,111,121,255,211, 59,118,175,223,179,125,253, 30,109,107,150,139,146,170, 44,
+168,140, 97,123,223, 19, 82,193,234,233,154, 46, 70,124,128,203,167,167,108,154,138,239,126,248,137,159,174,239,105,235,146,197,
+162,102, 81, 22,104,149,232,247,123,252, 32, 60,106,175,100,210,145,178,218,127, 74,107,138, 49,202,186, 65, 37, 66, 72,236,187,
+145,253,110,148, 75, 71,201, 88,138,162, 36, 88,131, 43, 34, 41,106,198, 24,197,226,145, 44,126,178,146, 97,177, 10,150,133,161,
+ 52,112,118,126,202, 39,159,127,132, 49, 37, 93,223,227,189,203, 69, 82, 68,199, 81,210,219,178,162, 58,196, 4, 73, 46,252, 20,
+109, 6,204, 68,174,223,188,229,127,249,205,103,252,227, 63,255, 51,255,242,219,127,101, 55, 36,138,197, 90, 46,156, 2, 18,150,
+ 20, 68,133,157,166, 61,122,202, 32,149, 25, 46,147, 57,239, 71,104,212,164,244, 1,190,146, 59,134, 57,128,229,200, 64,145,226,
+164, 94,211,115, 71, 57, 29, 96, 83, 23,160,163,196,183,106,100,135, 23, 0, 21,163,104, 98,142,157,110,211, 33,169, 14, 89,236,
+ 90,107,252, 44, 12, 58, 62,140,227,156,107,158,244, 97,213, 62, 9,165,226, 84,252,115,240,193, 79, 1, 20, 90, 31, 37,195, 41,
+241,176,169, 16,231, 29,251, 20, 70, 49,255, 61, 84, 58,242,204,171,156, 65, 33,246,198, 9, 30,162,146, 76, 18, 81,134, 34, 23,
+ 49, 41, 4, 66, 24, 51,120,197,177, 44, 91, 78, 78,106,126,120,235,184,126,120,224,242,254,129,234,116,201,144,223, 52,109, 11,
+ 57, 4, 13,196, 40,207,151, 10,204,207, 79,210,154,232, 21, 16,112,120, 76, 84, 88, 6,138, 74,243,171, 47, 63,161,108, 42,254,
+248,199,191,241,238,237, 13, 67, 47, 74,111, 10,131, 85, 30, 98,164,211,154, 24, 53,102,128,136,155,113,184, 54, 70, 98, 42,136,
+ 81,227,147, 20, 56,202, 38, 10, 52, 4, 77,159, 20, 67,148,210,175,200, 34, 48,171, 21,109, 93,115,182,174,249,224,242,132,139,
+139,150, 56,220,176,115, 29, 97, 52,212, 85,129,169, 12,159,125,252, 57,159,125,244, 57,202,104,182,187, 29,125, 63, 16,188,227,
+238,250,129,219,237, 13,209, 39,220,232,112,126,164, 31, 7, 30,119, 3,171,214,210,214, 5,103, 39,107,252, 56,242,112, 51, 96,
+ 10,176,149,166,169,234, 28,156, 19, 51,235, 64,203,153, 51, 13,114,210, 65, 79,145,147, 76,242,228, 53,205, 36, 82,165,213,236,
+232,153,131,132,146,153,247,242, 49, 32,211, 74,131, 88,193, 98,152, 47,169,148,197,123,113, 26,213,207, 1, 46,242, 3,152,162,
+ 64,217, 66,246,222, 33, 96,109,145,185, 13, 65, 58, 98,125,224, 56, 76, 43,131,105, 85, 57,243,219, 99,204, 96, 30,147,197,123,
+ 54,163,109,165,137, 20, 20,192, 52,133,146,172,120,109, 68, 27, 18,189,188,191, 62,132,185, 89, 83, 74, 76, 82, 74, 11,183, 96,
+ 42, 82,230,125,183,210, 96,210,236,144, 73, 72,242,164,137,226,138, 49, 38, 39,123,106, 59, 91,232, 66, 56,250,189, 26,177,204,
+153,217, 20,159,230, 9,220,180, 38,156,104,115,214,230,212, 40,239, 2,166, 48,217,167,151,178,173, 74,186,140,120,228,155,139,
+121,158,162, 76, 86,238,102,200,134, 15,158,170, 50,124,252,225, 75,174,238,110,228,161,213,134,113, 16, 59,155, 78,134,205,233,
+138, 16, 68,244, 69,148, 93, 74,231, 28,198,218,124, 81, 6,116, 82,120,231,242, 88, 62, 7, 8,228, 78,160, 40, 10,154,118,193,
+118,216,211, 56,135, 29, 43,134,126,192,167,192,211,103, 23,216,178,225,250,234, 91, 78, 87, 75,250,113,100,181, 58,225,233,203,
+231,140,187,129,119, 63,190,206,162,126, 57,153,134,113,164,104, 27,116,165,233,110,247,164, 8,117, 85, 9,122,212, 24,138,170,
+202, 12,106,216,110,119,220, 60,222,178, 90, 84, 68, 47,151, 78, 80,138, 98,217, 10, 96,196,192, 56, 12, 56, 47, 86,141,144,226,
+ 33, 70,149, 56,199,103, 74, 30,119, 62,224,144, 10,204, 26,157, 71,163,242,240, 77, 44,235,144, 28, 33,168,220,181,136, 90, 62,
+ 17,177, 90, 81, 24,177, 53,149,117, 41, 88,198, 73,233,156,209,141, 38,123, 53,147,210,162, 19,240,176, 94,159,208, 52,181, 28,
+210, 58,161, 2, 20, 70,176,165,133,213,148,149,230,244,244, 25,191, 30, 28,255,250,238,255,226,111,175,223, 16, 98,164, 89,174,
+178, 19,192,176, 31, 6, 60,176, 56, 93,227,131, 38,244,158, 15, 94, 62,227, 98,189,226, 47,127,251,142,119,119,247,156,175, 22,
+226, 69, 54, 26, 83, 64,232, 71,134,177, 99, 12,145,152, 71, 99,122, 82,168, 30,197,217, 90,107, 49, 85,133, 87, 10, 23, 2,219,
+110, 36, 96, 81, 58,100, 79,183, 33, 40,232,148, 21,151,168, 86,164, 34, 99,131,149,161, 52,134, 66,103,146,154, 82, 20,170,100,
+189,106,185, 56, 59, 65,141, 29,125,144,209,191,247, 97,238, 56, 85,146, 16,162, 24, 10, 92, 84, 4, 36,183, 32,132, 36, 43,160,
+ 20,184,122,119,203,105,163,216, 84,240,205, 31,127,143, 86,154,151, 31,188,164,108,151, 88,228, 80, 47,138,146, 20, 28,209, 79,
+221, 93,230, 63,103, 26,154, 50,114, 48, 38, 45,217, 9,178,203,254,185, 8,135, 28, 23, 59,121,106,167,253,180, 34,231,204, 39,
+153, 78,160,192, 28, 17,139, 38,188,107,154, 5,150, 86, 46, 67, 45, 69,226, 36,218,137,185, 35,229,120, 28,170,212, 12, 84,210,
+121, 71, 31,242, 69, 31,166,206, 53,239,210,211,244,187,157, 68,240,147,128, 46, 15, 34,211, 17, 90, 79,229,110,251, 0,150,209,
+217,239, 46,127, 23,163, 52, 97,222,159,103,172,108, 74,243,104, 82, 58, 41, 57, 68,201, 22, 52,163,138,217, 21, 50, 57, 11, 20,
+ 9,162,199,187,142,126, 24,197,206,105, 19,155,133, 69, 61,171,249,238,213, 13, 63,222, 93,115,242, 86, 83, 84, 53,182, 44, 49,
+101,160, 40, 53, 38,149,224,178, 97, 62,201,187, 32,251, 99, 13,222, 19, 85,144,149, 95, 10,164,216, 99, 16, 95,251, 71,207,150,
+ 44,171,143,121,243,246,148,199,237, 35,143,119, 91,246,189, 35, 69,199,162,170,242,239, 90, 81,151, 50,141, 49, 74,158, 79,107,
+ 45,125, 26, 24, 59, 71, 72, 1,178,243, 39, 26,197,216,141,168,221,158, 82, 71,170,210,230,241, 53,180,139,130,243,197,154,245,
+186,101,185,168,208,193,131,174,120,126,121,201,201,233, 57,171,118, 65, 76, 35, 94, 9,168,201, 19, 73,222,115,115,115,195,221,
+195, 61,183,239,239,121,244, 59,116,210, 24,165,217, 15,123,170,166,230,163,243, 13, 42,137, 96,238,167, 31,127,162,208,145,243,
+211,154, 16, 34,166, 44, 81, 70,225,131,156, 17, 42,133,108,191, 61, 60,115, 17, 17, 47,155, 92,192, 29, 70,243,211,144, 61,127,
+180,241,103,149, 41,200, 50, 87,158,173, 40,103,217,212,237, 79,117,164,120,235,167, 21, 38, 57, 86,152, 44,176,148,207,199, 22,
+242,204,198, 16, 15, 12,116, 45, 9,118,122,202, 22,208, 83,156,175,153, 39,203,198,216,159, 17, 22, 83,222, 81,147,139, 86, 50,
+162, 59, 77,209,204,153,155, 16,145,203,178, 44, 44,123,142, 62,207, 49, 39,188, 25,157,195,150, 14, 86, 77,113,110, 29,176,230,
+ 19,195, 64,233, 52,167,218,153,194,162,181, 63,128,168,194,228,199,215, 68, 21,113, 97, 42,170,196,209, 50,120,143,177,249,157,
+ 82, 38,179, 49,244,156,124, 39, 57,159, 9, 91,148,242, 34,185,209,209,214,181,252,210,179,135,207,228,110,111,154,189, 31,198,
+242,147, 17, 63,205, 54,157,209,121,190,248,226, 83, 86,155, 53,223,189,250, 81, 42,136, 28, 4,224,189,151,104,196,182,193, 57,
+ 63,255,165,165, 96, 8,114,200,207,162, 57, 25, 99,171,169,155,139, 83, 82, 89,164,106, 26,130, 15,220,223, 92,115,118,113,202,
+216, 15,184,193,211,212, 37, 79,158, 62,225,230,234,138,190,235, 89, 94, 62,231,246,234,154, 95,252,250, 75, 86,103, 27,190,254,
+215, 63,112,251,254, 26,211, 88,130,146,170, 85, 43, 77,221,212,196, 81, 56,195, 66,120,147, 0, 13, 91, 20,152,194, 80,150, 5,
+119,143, 91,174,239,174, 81, 90, 30,228,193, 7,124, 72,148, 77, 77, 52,242,178,196,152, 24, 71, 71,138, 9, 63, 29,110, 70, 75,
+167, 52, 65, 76,148, 84,166, 70,201, 72, 94,133,233,179,205, 89,209, 57, 4,160,176, 2,213,144, 10, 77,207,221,155, 54, 26, 21,
+ 19,182, 20,180,160,173, 43,138,186, 58, 88, 77, 72,243,131, 51, 29,164,193,123, 92, 63, 80,149, 53,205, 98,113,192,145, 34, 99,
+157,213,114, 67, 83,181, 56, 21,121,184,189,103,119,183,227, 79,255,207,111,249,238,119, 95, 83,149, 21,205,122, 37, 98,173, 16,
+ 24,250, 1,128,118,181, 17, 43, 90, 55,240,201, 7, 47,249,224,197,115,126,255,135, 63,240,234,221, 21, 79, 78,207,114,146, 91,
+160, 41, 42,188,247, 12, 67,207, 56,122,249,123,170,248,179,172,112, 9,130,144,209,111,217, 54,232,194,128, 22,145,163,104, 23,
+100, 15,169,162, 71,197,188, 83,114, 96,130, 40,255,163, 18,175,120,102, 32, 97,173, 66,171, 64, 85, 89, 42,107,105, 74,120,184,
+189,193, 35,185,196, 49, 39,224,201, 69, 22, 80, 99,196, 17,217,251,146, 65,149, 36, 83,160,146,240, 9,220,208,115,117,117,205,
+221,253, 61, 31,126,120,193,221,195, 3,129,123, 76,115,194, 87,255,248, 37,206, 5,222,191,251, 9, 21, 35,182,172, 9,182, 64,
+ 17,231,144, 18,109,242,193, 50,237,185, 85, 58,140,234,166, 53,114, 86,242, 79,148, 55,149,195,100, 36,194, 81, 29,226,134,173,
+154,169,138,233,200,250, 53,189,151, 90, 9, 78,117, 66, 54,235,255,228, 9, 15,242,139, 62,194, 22, 30, 18,212, 38, 17,220,196,
+166,159, 70,253,234, 64,173,153,149,227,233,168,192, 62,138, 29, 20, 17, 84,174,102,212,145,130,127,154, 44,204,255,137, 81,243,
+ 97,125, 88, 37,168, 67,241,144, 69, 74,202, 48, 63, 27,154, 41,161, 46, 78, 63,108,238,192,164,120,141, 74, 96, 37, 49,229,113,
+181, 53,244,221,192,197,122,141,243,240,246,250,150,119,251,123, 22,203, 53, 79,159,191, 96,185, 81, 24,151, 72,110,151,255, 62,
+ 10, 31, 35,133,130,132,100,110,235,232,112,201, 17,149, 65, 25, 48,110, 47, 59,102,101,169,234,146,139,243, 11,158, 63,253, 0,
+ 91,150,120, 23,233,186,142,110,223,163,109, 73, 83, 20, 50,233, 43, 12, 36, 73, 73,139, 41, 81, 20, 6, 23,101, 95,235,163, 80,
+ 50,227,152,232,198, 14,231, 70,130,243,121,138, 33, 66, 77,107, 12,117,101,105,139, 34,211, 21, 45,182, 90,176,168, 87,172,214,
+ 27,108, 81, 18, 99,228,254,238,142,183, 55, 55,196,116,205,190, 31,184,126,255,158,237,246,145,136,160,116,123,231,233,251,129,
+213, 98,193,229, 7, 47, 88, 45, 10, 22,117,201,237,205, 21, 87,215, 29, 87, 87, 59,158,158,213, 60, 57,223, 16,177,184, 0, 46,
+ 56,148,242,121,146, 98,114, 72,203,225,252, 63,214, 88, 28,132,233,234,103,132,194, 89,124,150,142, 69,148,210,241, 78,121, 31,
+114, 89,203, 94, 92,101,168,145,192, 87, 4, 15, 78, 58,218,250,170, 52,135,141, 21, 86, 58,126,161,173, 77,137,161, 82, 94,154,
+156,106, 56, 9,214, 38,239,153,209, 42, 55, 80,105,102, 45,168,120, 8, 8, 51,121,106,230, 50,148, 72, 27,137, 34,158, 56,245,
+ 74, 39,138,170,248, 89,247,157, 66,152,223, 95,149,223,249,152, 18,209,167, 76, 43, 84, 98, 65,155, 35,203,213,220, 76,144,153,
+ 12, 58,163,143,149,150,160,176, 73,127,147, 68,193,203, 56, 12,244,222, 97,138, 2,239, 60,177,178,135,201, 64, 18, 90,105,140,
+ 50, 73, 33, 6,137,155,181, 90,146,142, 30,199,142,147,213,114, 62, 14,130, 23,143,170, 54,134, 99, 63,129, 66, 97,242,129, 16,
+115, 85,164,163,198,185,200,229,139, 75, 76,105,185,186,190,163, 40, 75,124,240,132,232, 25,134,129,186,174,104,154, 5, 49,202,
+ 72,121, 63,116,108,218, 86, 42, 19,157, 73, 56, 90, 60,195,222, 11,165, 41, 29, 37, 64,151,182,162,105, 27,110,174,111,164,195,
+ 42, 45,247,183, 91,162,242,156, 92,156,178,104, 27,110,174,175, 41,219,101, 78,200, 9, 92, 92, 62, 33, 58,205,171,191,127,143,
+ 11, 1,107, 42,188,119, 12, 93,207,162, 89, 98, 75,131,219, 14, 16, 99, 22,108,200,136,198, 86,245, 28,200,113,123,123,207,246,
+ 97, 71,133, 37,196,196, 16, 60, 74,105,138,178,146, 60, 99,196,215,153,178,234, 53,102,117,187, 28, 64,121, 52,121, 44, 30,202,
+ 59, 40,149, 61,141,113, 62, 84, 19, 90, 89,202, 82,192, 18,126,148,209, 47,128,177,226, 72, 48, 40, 10,107,133,178, 85, 23,115,
+133, 56,127, 54,250, 32,154, 34, 38,198,125,159,197,137, 13,153,136, 32, 59,165, 32,149,114, 81,214, 4, 21, 24,135,145, 34,105,
+126,255,219,127,231,223,255,199,255, 77,219,174, 56,185,188, 32,185,128, 27, 71,156, 15, 84,198, 82,175, 86,244, 67,164,223,237,
+248,244,229, 7,124,244,209, 11,126,247,187, 63,241,221,171,183,124,244,252, 57,126, 28, 25,156, 99,125,182,128, 49,225,123,199,
+190, 31,101, 68,153, 69, 28,147,232, 73, 42,244,172, 6,175, 45,245,106,129,109, 42,130,115, 24, 20,139, 69,133,215, 80,214, 37,
+139, 69, 67, 89, 21, 50,233, 40, 52,198,138, 24,205, 88,129, 55, 20,214, 82, 22, 22,107, 36,141,173, 46, 75,202,186,162,212,137,
+ 48, 70, 58, 63,144,188, 32, 51,135,190,163,239,247, 4, 63, 48, 14, 29, 93,215,177, 27, 70, 30,247,123, 30,134, 68, 28, 35,117,
+ 93, 80,150,134,167,167,167,188, 88, 47,241,225,142,183, 15, 59,234,122,205,217,121,195,203,143, 63,230,187,111,191, 97,177, 89,
+ 96, 75,139,177,133,124, 70,136,123, 67, 46,117,185,104,167,209, 91, 2, 73, 75,155,195, 27,117,238,228,142, 20,239, 90,147,162,
+154,237, 98,211,255, 24,155,119,240, 41, 29,221,167, 33,119,239, 89,129,156,157, 4,106,138,134,140, 82, 8, 6, 4,228,164, 98,
+ 62,129,245,148, 3,159, 59,247, 24,228,157, 12, 65,216,159, 81,212,218, 58,102,187,215,228, 73,143,146, 73,144,142, 45, 62, 42,
+230,110,233,144,220,165, 81,115,129, 49,195,155,142, 89,239,217, 54,164,227,193,199,126, 60, 98,213,202, 28, 77, 5,227,193,154,
+167,243,126, 61,127, 33,147,117, 56, 17, 73, 16, 36,122,180, 74,212,182, 64, 37,195,245,237, 3,203,114,193,233, 47, 63,231,233,
+229, 37,167,151, 47,105,154,138,251,135,183,236,238,110, 24,186, 45,168, 64, 85, 84,252,127,108,189,235,179, 37,201,117,221,183,
+246,206,204,170, 58,207,251,236,238,153,233,121, 96, 64,144, 32, 33,145,180, 76, 6, 25, 10, 57,172,112,248,147, 62,234,111, 85,
+132, 45,217,162, 40,134,105, 26, 10,210, 0, 72, 10, 32, 8, 2,152,193, 60,187,167, 31,247,117, 94, 85,149,153,219, 31,246,206,
+172,186, 67, 51, 98,130,131,158,190,221,247,158,115, 42,115, 63,214,250,173,166, 91,160,233, 58,132,118,161, 65, 28,206, 68, 76,
+174, 85, 56,201,204,107,175,204,152,128, 96,243,214,148,129, 52, 14, 24,198, 81, 39,154,146, 38, 84,105,214,192, 13, 10,108, 19,
+ 21,213,145,164,156, 85, 52,149,116, 84,220,114, 0, 40, 33, 83, 66, 28, 70, 36,137,112,228,192, 96, 68, 17,117,226, 56,135, 40,
+192,254,254, 22, 55, 95,126,137,126, 24,209, 44, 91,220,188,189,195, 63,252,252, 19,128, 51,156,107,144,179, 78, 65,137, 3, 22,
+139, 6,219,139,181,242, 4, 82, 66,219, 16, 48, 30,112, 28,239,177,110, 5,249,188, 5,179, 67,211,181,112,109,167,188,140,195,
+160, 62,115,209, 76,118, 29, 13,107,102,248,124, 61, 52, 97,133, 81,247,214,147,143,155,173,248,178,124, 6,211, 23, 57, 70, 37,
+176, 5,207, 24, 37, 35, 15,170, 99, 80, 32,144, 50, 34, 84,103, 36, 53,122, 23,134,230, 5, 43,105, 50,120,133, 36,197,148,224,
+157,183,213, 85,170,155,235,199,207,156, 93,194, 54,105,170,141,169,216,216, 29,170, 35,115, 68, 24,205, 99,159, 37,215,221,125,
+153, 68, 21,178, 97, 74,130, 16,172, 35,143,169,214,201,197,178,154,114, 70,206, 92,167, 10, 4, 85,223,107,148,185,190,167,132,
+108, 9,119, 70,100, 45,188,137,172,213,172, 99, 54, 81,101,198,221,126,143, 62,141,104,187, 78,117, 22,147,157, 30,196, 48,254,
+190, 78, 4,117,151, 33,240,141, 11,136, 41, 98, 72,163,101,225, 90,166, 50,212, 70,196,102,227, 41,115,253,242, 80,123,103, 34,
+ 0, 19, 29,132,224,112,253,244, 9,250,126, 64,127, 26,177,108,181, 83, 27,163,230,177, 95, 95, 92,162, 9, 14,251,211, 9, 49,
+ 70, 80, 18, 52, 78,179,129, 57,120,181,136, 56,143,190, 79, 40, 81, 90, 98,124,233,156, 52, 49, 40,197,136,227, 97,135,245,122,
+141,148,128,225, 52,160,107,150, 88,175, 86,232, 79, 39, 28, 31, 30,112,246,236, 41,134, 97,192,229,147,103,120,239,249, 7,120,
+243,197,215,184,125,245, 10,205,226, 12, 0,208, 31, 78, 96, 31,208, 45, 23, 24,226,128,126,236,181, 59,183,139,208,123,143,208,
+ 54,112,222,227,176,219, 99,255,112, 15, 98,143, 60, 70,236,135, 17, 99, 4,124,171,150,183, 20, 5,227,216, 27, 50, 49,171,168,
+205, 96, 34,190, 12,223, 75, 46, 98, 90,249, 0, 0, 32, 0, 73, 68, 65, 84, 7,194, 89, 1, 4, 57, 34,103,135,204, 94,119,110,
+ 5, 70,195,250,240,251,224,181,138, 23, 13, 80,209,209,151, 83,132,165, 49,132, 93,104, 13, 75, 57,133, 38,148, 61,108,217,105,
+ 14,125, 15, 34, 77, 34, 35,239,117,180,196,198,108,206, 4, 70, 80,118,192,144, 17,156,195,127,255,241, 79,240,211,255,246, 99,
+ 60,125,231, 57,174,222,185,198,253,221,141,238,193, 79,163, 38, 87,181, 43,236, 78, 39,156, 14, 7,252,238,243, 15,240,252,249,
+115,252,232,167,191,192,139,151, 95,224,227,231, 79,208,159, 70, 28,251, 19, 46, 46, 54, 64, 76, 56,246, 25,195,177, 87, 0,131,
+163,170,148,134, 5,133, 72, 9, 61, 32, 66,123,118,134,197,102,139, 76,140,227,105, 4, 66,135, 69,187, 64,179,110,112,117,113,
+ 6, 31, 58,112,201,189, 22, 61, 44,154,166, 65,211, 54,104,219,128, 54,232,255,111,218,128,118,217, 96,201, 11,120, 86, 91,102,
+202, 26, 9,155,179, 64, 28, 97, 56, 28,180, 43,146,136,152, 6,228,116,194,119,143, 39,156,246, 35, 94,237, 78,184,217,157,240,
+229,171, 29,190,121,245, 22,183, 56,226,157,115,143,101,179, 64, 20,194,237, 97,135, 77,138,248,199,159,255,147,162,102,207, 47,
+208,180, 11,136,141,207, 20, 3,171,227,118,112, 65, 67,186,234,241,213, 93,187, 14, 40,139, 40, 77,102,201,105, 68,106,231,212,
+ 93, 94,174, 22,153,185, 26, 93,178, 93,228, 66, 53,115,129,172, 19,170,187, 71, 19,220,144, 1, 63, 52, 40,104,250, 61,112,140,
+156,168,254,253,146,181,252, 76,150, 88,165,241,142, 83,148,100, 1,205,148,219, 89, 5,110,169, 70,184, 78,235, 2, 45, 96,203,
+222,176,192,169,138, 39, 93, 80,198,166, 26, 40,172,190,218,100, 99,214, 50,165, 85,209,160,198,103, 90, 90,153,203,181,104,157,
+102, 0, 25, 36,138,178, 37,187,128,251,126,167, 5, 73,183,194,119, 62,248, 61,124,252,193,119,176,106,214,232,253,136,219,155,
+175,113,255,246, 5, 98,218,225,108,123,141,230,157,239, 97,185, 88,195,119, 43,184,110,133,166,237,128, 16,244,243, 90,196,176,
+ 16, 72, 26, 85, 20,137, 1,201, 18, 43,239,222,188,198,235, 87,223, 32,132,128,245,114,137,182,245, 72, 57, 34, 14, 35,118,187,
+ 3, 78,195,128,224, 24, 77,112,112,206,226, 81,225,116,237, 40,130,197,178,209, 20,177,164,211,139, 33,247,106,161, 34, 53,102,
+171,216, 86, 87,150,167,211, 9,199,227, 9, 34, 25,139,110,133,187,211, 3, 62,251,236, 51,228,156,177, 92,175,113,117,113,133,
+203,235, 13, 30,238,143,104, 26,194,229,217, 19, 4, 31, 48,230,136,205,118, 1,113, 71,112,140,184,121,123,131,227,237, 11,172,
+175,182,104, 90, 15,207, 1,205,194,225,252,124,186,184,227, 48, 42,172,216,200,111,236, 4,228,179,173, 69,230,185, 1, 12, 34,
+ 93, 33, 84,180,112,161,254, 49, 43,169, 15,147, 69, 77, 3,142, 48,107, 96, 74,158, 70,129, 19,161,238,144, 85, 0, 54, 57, 68,
+136,203, 36, 83,159,163, 80, 0, 45,182,254, 33,159, 43,204, 69, 87,238, 82, 57, 7,201,216,254,222,121,184,144, 43,103, 29, 89,
+116,189, 98,207, 3, 59, 21, 58,202,144, 49,142, 10,178, 10,164,244,201,193, 38,138,193,121,211,125,141, 96, 94, 64, 68, 35,109,
+139,126,201, 59, 54,202,155, 64,144,234, 68,172,236,243,129, 12,162, 96,118,211, 92,159, 9, 85,238,139,121,212, 53, 0, 70,197,
+182,130,156, 35,250,254,160,246,104,231,244,153, 51, 95,126,121, 10,116,114, 18,145,147, 5,173, 41, 3,133, 49,166, 4,134, 50,
+127,139,218, 53, 91, 5, 29, 88, 45, 67, 41, 26, 28,197, 14,103,103,169, 83,176, 3, 96,115,177,193,243,119,223,197,155,215,223,
+168,119, 91,128, 97, 24, 17,163, 98, 82, 23,171,133,142, 54, 82,172,123,143, 12,179,233,176, 67, 76, 64, 96, 66,223, 31,180,215,
+200, 35, 64, 58, 98,106,130, 71,240, 13,142,135, 30,121, 20,141, 73, 61,233,104,127,115,190, 6, 64,232, 15, 61, 60,171,200, 44,
+157, 70,124,240,241,247,225, 26,143, 79,127,253,107,156, 14, 35,206, 55, 1,227, 48,226,112, 56, 97,179, 92,162,109, 29, 78,247,
+218,161, 44,156,175, 59,233,166,109,209,182, 45,152, 8,119,183, 55, 72, 49, 34, 48,225,148, 19,142, 49, 2,206,171, 53, 13, 90,
+117,199, 24,225, 89, 33, 19, 81, 84,153,174,162,142, 60, 19,254,184,122, 56,178,125,216,203,104,182, 30,104,204,104, 2,219, 27,
+155, 43, 38,147,152, 33, 73, 65, 5,206, 51,200,121, 52, 93,176, 75, 3, 54,204,214,157,103, 34, 32,136,238,247,179, 8, 22,171,
+ 21,124, 27, 42, 52,200, 59, 45, 56,250,227,128,225,176, 67,211,117,112,142,240,163,191,252, 27,252,226,239,255, 17, 31,253,246,
+199,120,246,221,143,240,250, 55,159,163,223,157,144,135,136, 16, 60,224, 61,222,158,142, 64,138,248,253, 15, 63,194,213,243,231,
+248,209, 47,127,129,155, 23, 95,227,253,235,119, 49,244, 61,134,211, 9, 23,103, 91,181,164,156, 18,198,126,192,105,140,176,173,
+150,117, 91, 52,241,202,157, 71, 20, 65,179,104,113,126,177,133,115, 30,199,195, 17,251,253, 30,137,128,213, 98,129,203,205, 18,
+109, 19,208,180, 94,133, 34, 78,199,234, 33,120, 44,151, 11, 52,173, 89, 15,201,193, 7,143,198, 82,244, 64, 25,177,216,168,224,
+144, 89, 57,229,146, 19,218,182, 65,116, 12, 68, 7,162, 0,225, 6, 66, 11,248, 69,198,242, 60,225, 3, 73,248,237, 15,119,232,
+111,215,120,115,119,131, 23,175, 31,240,112, 56, 96,177,244, 88, 54, 30,119,111,191,196,195,245, 37,186,119,159,163, 91,109,224,
+ 67,135,156, 71, 12, 54,129, 44, 66, 56,221, 83, 23, 75,155,242, 28, 28, 89,180,177,141, 10,171,165,147,117,199, 76,165, 35,209,
+132, 12, 77,177,178, 3,160,130,154,104,134, 87,173, 34, 29, 61, 76,115, 13, 88, 82,208, 6,205,152, 88, 92,104,114,170, 10, 82,
+223, 43, 39,100,155, 38, 56,210,117,134,204,243,133,138, 63, 93, 52, 8,199,153,133,168,170,243, 31,197,186, 91, 17,145, 39,166,
+132, 84,208,136,106, 39,136,241, 40, 5,171,184, 1,168,136,155,114,210, 17, 42, 57,139,106,181,159, 39, 9, 18, 39, 16,143, 16,
+239,167,196,171,226,215,111, 2,158, 60, 89,225,213,238, 1,199,225, 14,191,117,253,125,124,252,241,119, 16,105,135,111,238, 95,
+224,254,205, 27,180,155, 45,182,207,127, 7,221,250, 2, 46,180,138,248,101, 6, 56,215, 46, 17,167,193, 58,174, 17, 50, 66,133,
+ 80, 57, 33, 90, 33, 73, 25,104, 88,211, 21,151,205, 2,247,187, 7,228, 56, 98,179, 93, 35,248, 18,206, 33,150,176, 24, 17, 73,
+212, 9,145, 35, 36, 70, 28, 78, 7,220,221,238, 33, 36,232,218,128,237,102,141,245,178,173, 66, 66, 45,192, 20,194,162,208, 17,
+194, 55,183,183,248,230,229, 43,220,221,223,227,236,226, 2, 31, 62,191,192,114,177,193,205,237, 3,238,110,238, 16,188,195, 7,
+ 31,190,131,111,190,126,141,251,253, 1,187,195, 30,155, 21, 99,211, 17,104, 56, 1,164,129, 92, 87,103,103, 24,211,104,169,132,
+ 45, 28, 7,237,204,179, 0,113,196,216, 31, 33,105, 0,104, 4,187,140,192, 25, 66, 1,217,208,193, 37,249,175, 64, 87,170, 37,
+204,128, 80,152,141,225, 85, 77, 94, 56,233, 52, 67, 11,139,225, 79,201, 8,109, 98, 5,101,137,105,133,121,175,213,206,198,213,
+ 77, 77,112,172,171, 81,133,121, 41,183, 61,231,137,192,168,225, 96, 5, 76,164,206, 8,181,221,205, 4,107,236,234,247,109,198,
+ 11,213,146, 56, 69,125,167,113,180,255,158, 77,148,233,177,175,244,104,163, 67,230, 4, 71,186,230, 74,197,250, 70, 74, 89, 77,
+201, 64,105, 41,155,114, 62, 34, 4,182, 16, 52,125,129,216,214, 16, 98,103, 54,163, 60,127,122,182, 11, 39, 43,132, 13,153,219,
+ 39,200,152, 16,154, 0, 39, 90, 4, 83,178, 21, 27, 79, 46, 29, 17, 45, 44,114,202,240,193,121, 28,227,160,135, 34,171, 47, 60,
+ 37,181,103, 72,214,221,142, 50,135,211, 36, 2, 40, 70,122,219,133,199, 28,241,193,179, 15,176,217,108,240,197,139,175,181, 42,
+203,186, 87, 24, 83, 6,177,195,186,107, 17,109, 87,146, 99, 66, 19, 26,139,118, 52,152,189,229, 84,167,104,220, 69,152,159,144,
+213,138,144,213, 4, 14,202, 9, 77,211,224,212, 31,245, 0, 13, 1, 67, 28,144, 70, 29, 35, 5,246,240, 43,135, 15,191,251, 49,
+ 94,125,243, 10,159,254,211, 63,162,235, 58, 52,161,197,253,253, 61,188, 48, 66, 8,182, 7, 31, 42,224, 35,165, 17, 77,104,177,
+216,174,177, 88, 44,240,246,213, 27, 28, 31,246,117,159,152,114,134, 48,192, 77, 3,118, 30,128,211, 68, 35,110, 64,226, 52,248,
+ 70, 4,206, 62, 48,206,252,156, 41,103, 36, 35,124, 65,212,158, 35, 16,100,199, 70,183,210,172,102,176,128, 60, 89,135,132,170,
+ 65, 38, 83, 21,115, 80,143,190,111, 26,176,129,102,116,228,101, 29,161,117,233,253,169, 71,150,132,213,122,133,182, 13,112,152,
+132, 80,148, 29,142, 55, 59, 60,220,223, 99,123,125, 6,231, 90,252,228,191,254, 21,126,249,211, 95,224,119,254,213, 15,240,209,
+247, 62,198, 63,253,237, 63,224,246,245,141,198,218,182, 45, 50, 19,110, 15, 7,156,115,135,239,255,214,199,136, 97,129,159,254,
+242, 87,216,189,126,131,139,139, 51,100,137,200, 99,196,118,179,134, 16,208, 15, 3, 82, 28,209, 15, 39,100,202, 8,142, 53,205,
+140, 9,189, 36,149,209,216,196, 71, 88,112,126,125,137,205,102,141,211,208,131, 60,225,236, 98,131,243,179, 53, 46, 46,214, 88,
+110,214,240, 77, 64, 19, 2, 22, 75, 77, 8,116,236, 33,142,209, 82,163,157, 77, 81,227,218,133, 34,134, 22, 46,146, 30,201,166,
+210,173, 18,112, 19,213, 80,134, 39,197, 74,102, 86, 90,140, 56,134, 75, 30, 43,231,176,104, 22, 88, 95, 61,195,243,223, 18, 12,
+247,123,156,134, 35,226, 16, 49, 14,162, 94,246, 20,225,216, 35,201, 80, 63,199,108,185,246,112, 14, 32, 21, 60,105,241,102, 76,
+130,210,151, 23,229,185,154, 33,103,226,178,153,223,213, 14, 19, 73, 82,173,109, 37,250,148, 30,177, 95,167, 11,191, 76,105,138,
+213,172,106, 44, 36,215,156,211,250,247,204,246,227,115,202,214, 92, 59,163,214, 29, 76,108,120,115,184,148,169, 1,230,235,117,
+251,223,142, 38,184, 71,141,129,165, 41,126,184, 94,226,164,217,220,204,143,139,222, 18,124,161, 43, 42,253, 7, 98,153,238,185,
+ 68,218,153,120,136, 9, 77,187, 64, 94,157, 33,241,136, 63,249,131,167, 64, 22,172, 55,107,220, 63,188, 68,118,132,118,115,142,
+119,223,125, 15,139,102,133,108,252,128, 42,236,163, 92, 63, 51, 41, 39, 27, 27, 7,133, 95, 85,224, 83, 86,187,147,125,223,224,
+140,229,170,133,123,231, 10,235,195, 66,245, 66,134,181,229,192,216,172,151,112,238,168,142, 33, 82,128, 77,211, 4, 45,212, 45,
+168,232,112, 58,162,239, 7,236,238, 15, 32,142,104,221, 99, 76,239, 56, 70,244, 49,162, 99,143,165, 79,184,216,122,180, 97,131,
+183,111,223,224,126, 73, 88, 45, 28,134,211,136,251,251, 30, 55,183,111,224,112,194, 34, 48, 86,103, 1,199, 49, 99, 56,141, 8,
+235, 13, 66,227, 16,211,104, 73, 94,140,101,179,134,227, 0,242, 37, 75, 60, 1,121,196, 24, 79,136,185, 7, 56,171, 88, 51,120,
+211,160,104,161,151, 69, 84,243,100, 66,220,152,203, 25,205, 54,170,206,198,101, 39,100, 74,150,248,107,122, 14, 27, 79,171,200,
+ 83,187, 82,216,251,170,155, 2,182,248,209, 88,133,106, 57, 71,251,108,230,234,139, 39,227, 48, 4,203, 15, 47,159,175, 98,209,
+148, 89,234, 32,147,230,192, 37, 73, 64, 78, 96,202,138,113, 22,169,133,107,209,148,232,133, 76,144, 20,145, 6, 29,189, 39,232,
+157, 16,230,185,229, 68, 24, 44,193,212, 57,135, 56, 12,245, 89, 83, 85,189, 38,178,229, 49,218, 30, 63,129,217,171, 99,201, 10,
+238,106, 89, 43, 83, 74,179, 75,147,226, 0,148, 86, 24,245, 57,117, 2, 36, 8,118,251, 7, 28, 79, 39, 92, 44, 22,104,125, 48,
+ 59,106,210,233, 0, 49,162, 36,139, 62,182,194, 48, 37,120,207, 30,105, 60, 34, 56,133,101,196,156,149, 38, 71, 58, 42,172,195,
+123,152,159,214,249, 41,255,149, 21, 23,155, 18,240,252,253,119, 49,198, 1, 55,183,247,106, 61,138, 17, 73, 50,198,148,224,188,
+ 67,215,118,200,199, 35,164,208,228,202, 11,235,116,227,207, 76,232,251,193, 70,216,147,169,127, 62,118, 76, 49, 33,132, 0,239,
+213, 99,222,118, 11,236,236,207,146, 20,209, 45,215, 0,128,119, 63,122, 31,139,213, 2,127,255,147,159,224,180,223,227,234,201,
+123, 56,157,122, 28,142, 7, 44,187, 5,154,198, 3, 24,113, 60,246, 10,184,177, 12,219,139, 69,135,237,249, 22,146,129,151, 95,
+124, 1, 14,161, 82,237,114, 22,197,245,153, 63, 50,165, 30,167,195, 9,190,211, 7,182,218, 44, 81, 24,245,172,187,107,153,239,
+ 33,115, 61,120,201, 18,176, 8, 25,206,172,108,206,132, 22, 21, 57,104,231,177, 67,134,247, 1,236, 25,190, 41,194, 11, 76, 31,
+102,251,176,196, 97,192, 56, 70,197,203,182,109,253,208, 50, 17,226,168,171,139,241,120,194,229,147, 75,120,120,252,217,127,248,
+ 79,248,234,147,207,241,199,255,246, 95,227, 95,254,171, 63,196, 95,252,239,127,134,215, 47, 95,161,243, 1, 77,215, 33, 9,225,
+254,126,143,103,231, 91,124,239,221, 15,240,230,116,192,205,219, 23, 56,221,239,176,106, 90, 85, 86,167,136,182,107, 1,118, 56,
+245, 3, 36,103,156, 78, 39,164,156, 16,156, 67,112,202, 60, 31, 68,145,152,101,183, 47,142,112,113,121,137,235,235, 43,196,172,
+ 84,171,229,170,195, 71, 79,158,227,234,250, 28,155,205, 10,226,236, 62,178,244,167, 41, 77, 77, 69, 77,179, 44, 81, 72,177, 22,
+187, 9,135, 58,189,238, 82,177,167,197, 74, 37,236, 64, 28, 97, 81,105,152,160,231,217,184, 9,173,218,144,114,196,226,162,195,
+134, 50, 88, 60,136, 27,132,166, 69,227, 67,181, 83,145, 8, 28, 75,229, 83, 51,121, 93, 79, 85,219, 24, 87,107, 26,179,199,236,
+ 8,154,186,134,242,128, 51, 67, 72,197, 68, 36, 83,112, 6,160,190,118, 46,193, 64,150,151, 94,140, 69, 74,199,114,143,129, 24,
+ 37,235,185, 10, 93,245,162,214, 72,213, 89,119,100, 76,234, 42,234,195, 52,218,151, 25, 14,150,100, 26,145, 79, 47,189,212,177,
+108,241, 0,147, 76,151, 62,131,235, 72,126, 98,223,232,196,162,176,237, 39, 5,181,233, 78, 72, 71,152, 57,171, 87,157,131, 37,
+208,101, 65,138, 17,236,116, 82, 5,231, 16,184, 5,209, 57,252, 98, 1,102, 93, 19, 53, 97,169,106,247,174, 3, 53, 29,156,107,
+145,169,172, 55,108,154, 96, 69,138,148,159,223, 82, 38, 73,236,115, 37, 9, 36,198,136,160, 73,187,128,156, 77, 32, 37, 88,173,
+ 22,102, 57,158, 62,139,141,103,132,192, 56,245,131,198,101,122, 7,231, 60, 72, 70,160, 97, 16,117,104, 90,143, 20, 19, 28, 57,
+116,157,142,190,115, 82, 17,103, 74, 9,226, 84, 91,145,242, 9, 77, 23,112,213,158, 99,185, 55,241, 24, 0,166,140,247,222,187,
+ 70,219, 29,113,138,163, 78,229, 22, 45, 90,231,113,177, 88, 0, 57,105,136, 14, 1, 44, 65,237,175,161,177,117,169,250,240, 83,
+210, 64,155, 20, 7,165, 40, 50, 43,143,196,137,254,190,236,149,132, 87, 4, 49,133,184,151, 19, 28, 89, 60,175, 21, 87,229,209,
+161,250,156, 77, 66, 58, 50, 75,106,237,227,201,219,202,197,242,235,165, 92, 47, 50,197,251,206, 52, 37,229,211,165,111,183, 78,
+181,162,165, 70,242,183,246,228,142, 38,226, 41,164,140,243,109,237, 53, 35, 54, 22, 77,190, 90,136,117,172, 47, 81, 44, 17, 84,
+ 38,197, 58, 19,144,116,189,160, 2,184, 2,226, 97,133,103,217, 61,168,162, 63,169,206, 42,158,221, 91, 69,155,149, 45,252, 12,
+162, 14, 16,242, 83,193,235,216, 33,115,180, 66,200,153,213, 78,215,148, 81, 70,140,227,160, 69, 99,201, 92, 47,247,140, 20,113,
+ 43, 76, 96,152,144, 82,134,215, 17,114,198,186, 9, 90, 69,164,132,152,213, 35,200,165,186,112, 54,106,207, 70,126, 48,128,190,
+243, 14,195, 64,224,214,225,201,211, 39,184,191,127,192,195,238,136,245,101,107, 62,195,140, 97,140, 88,175, 87, 54, 98, 87,187,
+ 71, 74, 73,153,231,182,103, 20, 59, 40, 78,199, 83, 85,233, 22, 47,172,166,233, 88,142,114,206, 8,109,139,100, 2, 52,231, 29,
+ 78, 15, 59,172,214, 11,128, 24, 93,215, 65,152,240,238,251, 31,224,246,238, 14, 95,126,250, 25,186,229, 6,237, 98,129,183, 55,
+119, 85, 92, 69, 36, 56, 29,149,114, 23,156,138,243, 56,120,108,182, 91,172, 86, 43,124,246,171, 79,241,230,171,151,120,254,221,
+239, 96,159, 6,196,172,251, 34, 31, 26,243,243, 38,140, 99,182,174, 39,219, 1, 9,251, 96,153,109, 77, 80,147,176, 96,161, 25,
+150, 51,169,224,134, 60,117,109,206, 58,120,103,135,162,227, 41, 89, 75,170,165,132,192,141, 55,229,167,190,225,174,120,128,161,
+235,145,113, 24,208, 52, 29,150,171, 85,245,168, 3,130,195,225,136,227, 97, 68,240,140, 39,207,158,226,238,237, 13,254,252, 63,
+254,103, 28,223,220,225, 95,255,219,255, 9,127,240,167,127,132, 63,255,207,255, 21,175,191,250, 6,221,106,129, 54, 52, 24, 82,
+194,105,183,199,187,215,215,120,247,226, 12, 95,190,126,131, 35, 9, 98,223,195, 81, 70,219,182,186, 70,112,122,145, 30, 71,165,
+ 65,197,126,172, 1, 39,141, 17,213,134,156,148,237,238,188,178,177, 9, 88,110,214,120,242,244,210,246,235,130,166,245,184, 60,
+ 59,199,245,211, 11,248,182, 5,123, 19, 40,185,169, 35,204, 37, 68, 66, 74, 70,247,140, 37,109,187, 59,169,124,241, 34, 24, 52,
+235,150,125, 29,151,172, 99,253,198, 45, 40, 8, 85, 71, 66, 38,222,202, 73, 38,238,116,200,200, 36, 38,226,114,154, 62,229,117,
+101,147,199, 17,132,108,107,164, 0,231,117,146,163, 86, 67,179, 22, 22,210,149,133, 71, 64, 38,108, 38, 89,230,182,198, 27,228,
+234, 65,103,231, 38, 68,102,201, 63,128,211,161,156, 0, 9,201, 28, 4,122,144, 58,114,181,184, 43,157, 76,217,183, 51, 5, 67,
+241, 90,114,148, 5,189,168, 27, 59,219,104,208, 0, 29,228, 64, 52,106,151,157,105,242,153, 63, 26,177,206,144,159, 50, 27, 27,
+200, 99, 74,149, 42,226,139, 47,247,113, 32,134, 6, 93,231,218,237, 76, 14, 27,125,187, 93, 89, 79, 88,184, 20,217,174,191, 88,
+166,114,241,228, 6,229, 73,180, 2, 36, 38,120,223, 32, 52,107, 69,194,218,251,108, 19,113,157,122, 21,197,115,213, 7, 36,227,
+129,232,235,147,211,104,211, 13,189, 72,178,177,249, 69,178, 98,172,169,236,253, 81, 67, 65, 80,146, 22,205,123,188,112, 29,124,
+ 19,144,204,217,163,154, 58,103,224, 28, 70,107,122, 24,125,217,117, 14,236,216, 67,252,180, 90, 17, 17,237,178,237, 61, 93, 47,
+ 84, 41, 61,142,131,237, 96, 61,222,127,255, 28, 55, 55,183,240, 65,237,194,177, 87,180,106,211,248,186, 67,113,174,177,233,137,
+ 10,203, 36, 13, 72, 57,234,170, 35,235, 4,132, 89,201,161,146,117,228,159, 51, 35, 13, 38,248,179,215, 1, 54, 61, 97, 43,227,
+138,171,130,185,104, 39,168,114, 85,178, 9, 56,213, 25,100,193,228, 36,181,182, 22, 33, 64, 20,226, 82, 34, 89, 43, 6, 78,228,
+159, 3,141,108,244, 95,156, 62,185,186, 55, 38, 62, 2,234, 46,157,109,173, 73, 54, 45,214,179,215,142,130,122,161, 11,108, 69,
+ 85,200,158,177,196,124,103,107,112,117,151,238,192, 16, 86,164,108,140, 17, 77, 19,180,153, 29,244,188,115,206,193,121,195, 15,
+155, 0,185,124,208,185, 94,248,172, 44, 9, 43, 46,196, 0,104,115,129, 51, 89,208,141,247, 30,125, 63, 89,162, 53,111,190,215,
+240, 47,207, 22,141, 92,102,185,100,118, 55, 45,182, 0, 45,100, 60,114, 2,198,132, 46, 52, 70,233,210,219, 94,102,105, 82,206,
+ 43,220,131,102,182, 22,178,170,226,212,143,120,242,244, 2,103,103, 27,124,253,226, 27,196,164,144,252, 24,163, 6,155,228,140,
+245,114,137, 56,246,246,231, 1,167, 99,143,230,108, 1,246,202,228, 46, 74,215,195,126,143,205,114,107,129,243, 82,173,111,154,
+126,170, 34,130,197, 98,105, 22, 6,198, 97,191, 7,204,199, 28,154, 6, 33, 4, 92,190,243, 12, 87,151,215,248,219, 31,253, 24,
+187,251, 7,156,175, 55,216, 31, 15, 56, 30,143, 88, 44, 23,245, 33, 60,158,142, 24,145, 0, 4, 64, 8,235,243, 51, 92, 63,121,
+130,148, 18,190,252,228, 55, 56, 30, 79,240,193, 33, 15,132, 8,232,104,220,118,102, 57,101,165,163,177,122, 46,217, 78, 34,111,
+202, 76,102, 77,105,170,228,180, 98,255,155, 71,251,149,125,168,144, 90, 70,156,121,142, 77, 9, 95,246,144, 44, 2, 23, 26,181,
+181,248, 96, 36, 63, 83, 83, 22,182,113,204, 24, 98,130,243, 1,203,197,162,210,156, 98, 76, 56, 29, 15, 56,245, 61,182,155, 51,
+156, 95,108,240,203,159,254, 19,126,244,151,127,141,241,216,227,223,252,187,255, 21, 63,248,195, 63,192, 95,252, 31,127,142,175,
+127,241,107, 44,215,107,132,101,139,177, 79, 24,134,132,239,188,247, 62, 2,128,159,253,250, 19, 44,207, 46, 17,114, 2,245, 39,
+ 44, 87, 75,171,170,245,251, 56,142,131, 98, 31,147,160, 31,122, 16, 17, 58, 23, 64,142,209,167,132,209, 44, 34, 37, 29,169, 91,
+ 46,113,126,121,166, 16, 9, 34, 52, 33, 96,181, 94,224,242,226, 76,245, 12,193,215, 84,167, 66, 54, 19,210, 17, 96,113,255,151,
+113,118,165,171,105,244,133, 30, 6,181, 50,183, 80, 21,130,142,225,133,205, 68, 8, 93,147,176, 98,117, 21,218, 96, 33, 37,118,
+240,176,183,127,183,218, 33, 75,170,197, 45, 25,187, 93,178,238,236,168,248,155, 73, 31, 58,118,197,250,105,170, 7,201,186,223,
+179, 42, 92, 89,214, 60,203,128,146, 90,164, 20, 42,149, 53, 9, 54,221, 41,248, 85, 59, 36,145, 39,174, 58,161, 6, 70, 20, 72,
+139,204, 14,149,218,161, 87,113,141, 97, 47, 43,242,179, 58,134,234,129,147,203,115,111, 34, 33,177, 9, 71,166, 60, 27,239,219,
+ 8, 59,211,244,231,155,202,120,186,184,167,145,190,218,245,120,154,192, 25, 19,219,144,146, 54,154,215,191, 55, 39,139, 94, 38,
+179, 60, 90, 23,196, 41, 65,188,114,193,179,117,107, 42,184, 12,112, 76,112, 78,167,120,236, 9,217,236,110, 78, 20, 72,194,194,
+ 64,154, 49,186,197, 86, 82,146,144,163,137,166,114,210, 51,142, 38, 80,185,102, 51,160,174, 62,138,170,155,140,183,175,202,242,
+146, 93, 47,181, 16,159, 82,246,202,238, 89,195,117, 8,186,118, 42,175,121, 6,192,117, 85,130,234, 0,162, 76, 8,190, 65, 17,
+ 68,144, 23,156,157,175,113,127,247, 0, 31, 24,195, 16, 65, 0, 54,235,101, 45,208, 66,231,129,168, 32,146,108, 17,188, 98,249,
+220,202,145, 31, 33,105,176,240, 31, 45, 38, 83, 65,173, 18,131,189, 87,216, 74, 78, 0,162, 1,128,148,169, 1,163,135, 74,241,
+144,231,162,211, 45,247,129,174, 39,179,237,138,203,231,104, 18, 94, 16, 38, 67,237,172,128, 51,145, 93,177, 23,166,148, 12,219,
+ 44,243, 48, 61, 45, 60,130,155,241,206, 21,241, 45,217, 62,243, 51,161, 40, 27,248,166, 68,147,186, 58,246,214,175,205, 81,145,
+173, 5, 20,149, 18, 16,199,168, 1, 44,150, 4, 26,188, 71, 28,181, 40, 43, 35,126, 2,204,235, 94,130,185, 72,177,234,230, 22,
+243,164,119, 67,209,181, 56,175, 19, 59, 29, 39,152, 93,205,238,130,154,164,152,103, 22, 64, 67,125,139, 49,234,109, 13,143,253,
+254,168,161, 55,182,186, 21,232,106,132,188, 22,249,222,138,107,253,250, 12, 63, 36,245,182, 53, 77,131, 49, 38,140, 57, 34,105,
+232, 15, 4,122, 81, 57,195,221, 73,212, 16,150,202,203,240, 42,116,123,250,244, 41,152, 25, 47, 95,188,134, 11, 1, 41,234,216,
+ 70,204, 66,211,116, 30,177, 31,148,182,211, 27, 77,206, 70,133, 69, 96, 48, 14, 9,187,135, 29,182,171,245,116,212, 89, 20,167,
+ 99, 7, 68, 37,176,249,179,160,187,135,254,136, 49, 69, 44,150, 11, 16, 4,109,215, 98,177,238,240,222, 71, 31,224,225,225, 1,
+159,127,242, 41,218, 38, 96,217,117,248,242,171, 47,209,134,133,141,101, 50,242, 41,227,112, 56, 32,153, 31, 52,112,198,245,229,
+ 57, 22,171, 5, 94,126,254, 5,190,254,252,107,192,105,232,138,228,172, 29, 52, 57,253,144, 64,128,152, 77,253,168, 74,201,148,
+ 50,136, 50,218, 16,208,178, 3,160, 85, 93, 76, 89,211,138,140, 30, 70, 54,170,203,164,162,182, 18, 82,146,189, 86,146, 17, 89,
+187,107,167, 34, 41, 78,198,159,102,237, 12,181, 34,212,157,209,196,217, 86,109,128,103,143,197,114, 1, 14, 1, 57,103,244,125,
+ 15, 57, 70, 56, 71,120,250,236, 29, 44,207,151,248,217,255,253, 35,252,228, 47,255, 27,124,187,196,255,242,239,255, 29,190,243,
+253,143,240,195,255,243,255,194,151,255,248, 25, 22,155, 45,156,103, 12,199, 17, 89, 24, 31, 93, 93, 97, 60, 28,241,171,111, 94,
+ 99,253,236, 2, 93, 43,192,205,128,197,217, 6, 16, 85,202, 18, 51,250,113,176,208, 29,194,233,116, 4, 73, 70, 23, 26,120, 31,
+112, 76, 35, 70, 73,128,115, 16,219,191, 53,203, 22,219,139, 53,150,203,133,170, 89,187,128,229,178,195,249,170, 67,183,106,193,
+193,178, 7, 36, 85,154, 98,230,108, 11,102,182,100,165, 12,103,163,212,210,177,149, 80,131, 98,187,172,214, 40, 11, 81,200, 60,
+157, 16, 92,128, 42,102,139,209,131, 12, 85,252,152,202,129, 12,221,131, 82,114,112,112,122,169, 17,215,203, 80, 82, 6,156,190,
+183, 40,130, 51, 71,179,195, 61,219, 94,176,168,182,243,148, 83,110,121,132,101, 52,174,124, 10, 55, 11, 65,209, 28,241,226, 79,
+ 39, 43, 14,234,218,189, 94,226, 58,226, 6, 25,201,171, 32,132,169, 64, 42,180,107, 41, 93, 20, 9, 43,197, 15,165, 27,176,206,
+211, 46, 72, 49,125, 64,150,233, 96,205,214, 5,100, 34,123,221,102,238,148,146,186, 70,154, 59, 15,139,215,156, 25,240, 39, 56,
+ 14,230,150,167,105,199,154,171,122,223,222, 47,161, 26, 76, 36,246,170,145, 9,147,168, 36,205,229,136, 52,142,230, 3,214, 78,
+145, 68,131, 4, 84,224,156, 53,151,193,246,249, 72,246,117,165,219, 35,130,211,216, 63, 43,192, 12,110, 98, 17,212, 19,239, 91,
+119,207, 98, 22, 85,201,169, 22, 35, 69,204, 68, 36,134,252, 45,226, 48, 6,160, 35,122, 97,139, 91, 46, 99,101,139,113,214,194,
+140,234,103,118, 10,189,177,206,152,201, 38, 12,211,175,251,224,208, 45, 3, 32,122, 22,165, 56, 34,120,143,148, 6,164, 60,194,
+243,204, 19,157, 1,145, 1,217, 86, 8,217,214, 6, 4,213,165, 32,103,100,137, 10,216, 2, 79, 1, 37,163, 24,148, 69,166,180,
+ 30,113,112,108,219, 28,130,238,208, 83, 50,129,154, 22,243,106, 75,204,147,133,177, 20,101,132, 73, 27, 65,197,150,105, 59,249,
+ 92,138, 63,174,182, 72, 49, 15,183, 88, 24, 12, 25, 90, 49, 4,181,245,229,168,107, 10,204, 86, 60,100, 6,246, 74, 30,164,169,
+232, 76,197, 47, 14,101,187, 80,137,112, 51,190, 3,123,135, 36,202, 14,136,214, 64, 58,187,212,199,126,152,128, 75, 41, 41, 27,
+193,196,104,121,140,202,199, 48,125,144,166,178,165,234, 98, 16,251,111,222,123, 20, 58, 59,151, 34,207,238, 85, 88, 10,159,103,
+ 66,118, 19,221, 81, 89, 23,133,109,145,113, 60,236, 65,206,169,171, 33,234,185, 43,172,162,220, 44, 2,182,156, 22, 16,193,123,
+ 15,159,146, 86,109, 93, 23,144, 33, 10, 66, 72, 94,119, 97,166,182,117,166,248, 78,105, 52,251, 12, 85,235,137,247, 14, 79,175,
+174,241,112,255,128,251,221, 3,218,237,185,190, 0,162, 7,125, 23,130, 42,215,247, 39, 52,112,136,233,104,241,116,100,149,143,
+218,218, 78,135, 3, 36, 41, 76,164,116, 48,185, 8, 33,236,197,104,152,209, 52, 45, 6, 33,156,246, 71,184,214,163,105, 90, 36,
+ 34,116, 93,131,139,171, 39,184,188,186,194,175,254,251, 63,224,254, 97,135,179,245, 22,251,227, 1,253, 97,143,139,247,175,241,
+112, 24,208, 6,135,135,253, 14,187,211,160,251, 79,239,176,234,214,184,186,190, 68, 63,236,241,245,151, 95,232,161, 47,202, 40,
+143,217,216,212,214, 93, 71, 73, 54,246,102,229,103,155,152,207,123,167,234, 68, 18,196, 18,147,202,122,108,123, 82, 90, 87, 78,
+105, 74,217, 18, 1,231, 34,212,176,221,183,148, 7, 32,154, 93, 68,149,153,228, 53,218,181,116,113, 37,151, 24, 4,244,199, 30,
+200, 64, 56, 91,128, 91,173, 46,199,211, 17,121, 28,208,110,215,216, 62, 61,199,106,125,142,191,250,143,127,142, 95,254,240,111,
+241,244,253, 39,248,253,255,249, 79,113,113,241, 20,127,243, 95,254, 6,191,249,245,103,104,183, 29, 32,132,227,160,235,136,103,
+155, 37,222, 60,220,227,171,151,183, 56,187, 58,199,197,114, 3,218,239,225, 55, 45, 32,192,113, 28, 16, 33,136,163, 96,200,218,
+ 5,197,190, 7,167,136,165,111,176,244, 1,247, 57, 98, 72, 89,109, 94, 32, 68,100,132,174,193,102,179,197, 98,209,129, 3,161,
+233, 90,172, 87, 75,108, 58,143,110,185, 4,135,160,151,143, 36,245,174, 98, 62,118,151,202, 6, 47,251, 55,237,226,109,223, 10,
+211, 41,240, 84,236, 8, 9,200,252,168,229,178,155, 58, 39, 11, 62, 97,134,136,183,113, 36,108,111, 93,246,131, 86,253, 54, 70,
+234, 35,171,158, 39,216,115, 13,137, 96,114,149,128, 86, 44, 44,165,227, 21, 33, 83,230,250, 71,121,234,117,119,205,100,227,243,
+217,101, 81,224, 48, 76,179, 17,181,118,140,100, 12,109,204,119,150, 53,214,151, 31, 5,171, 80, 86,205,138, 24, 15, 66,139,117,
+182,174,219,242,209, 83,198, 24,245,146,148,148, 43,248, 99, 10,110,153,141,220,203,190,148, 38,138,220, 4,187,153,101, 67,148,
+168, 78,154, 0, 37, 52,223,173,203, 44,125,174,238, 80,243, 52,137,127,196,147,183,241, 73, 78, 24, 71,192,187, 17, 57, 36, 80,
+ 78, 64,142,112, 28,204,119,156,145, 69, 53, 14, 30, 77, 85, 49,151, 49, 38,137,165,218,217,254,223,154, 60, 32,169,254, 5,208,
+ 53, 11,114,170, 1, 30,117,192,158,202,248,159, 43, 44,138, 74,135, 90,215, 35,250,222,144,173,135,244,231,182, 40, 91,219,185,
+184,194,225, 7,207, 86, 27, 19,126, 55, 75,174, 84, 65, 41,203,106,209,181, 37,103,101, 48, 72, 4, 92,104, 32,146, 16,130, 71,
+244,108,185,244,185,108,166,237,103, 16,251,123,116,105, 72,222,217,133,109,136,107, 14,246,210,106, 96,149,140,163, 78,195,156,
+254, 93,250,167, 69, 91,177,184,153,122,162,116,175,147, 32,213, 98,134,192,149,115, 36, 19,236,202,177,129, 98,148,189, 81, 38,
+ 44,229, 22,208,137,117, 89, 97,146,113,219, 81,177,197,100, 92, 2,102, 69, 57,235, 58, 22, 85,220,153, 69,115,203,153,189, 94,
+150,164,151,158, 8, 16,205,247, 77, 70, 95, 76, 89,157, 94, 36, 19,112, 38,165,132,113,136, 72,163,128, 2, 35, 4,143,100,252,
+ 8,130, 66, 94, 74, 14,132,186,147,146,225,105, 85, 12,171, 57,246, 26,139,155, 75,113,104,251,239,224, 59,100,214,113, 11,113,
+145, 47, 40,208,167,100,167,232,148, 73, 39,223, 99,180, 61,188, 53,190, 34, 58,149,145,172,188,130, 49,142, 54,117,200, 26,104,
+ 85, 86,103,133,190,199, 14,126, 76, 3, 60, 1, 45,121, 28, 83, 68,180, 81,147,238,218, 20,236,231,170, 15, 80, 15, 8, 2, 65,
+116, 21,133,213,114,137,213,102,131,251,187, 61,250, 97, 64,107,149, 55, 19,161, 31,123, 52,173,238,234, 41, 9, 90, 7, 60,156,
+ 78,136, 67,170,241,137, 98, 33,247,135,251,131,249, 26,181,147,114, 2,133, 51,192,130,237, 99, 66,100,135,110,187,193,235,215,
+111,112,255,240,128,235,213, 19,197,180, 18, 97,189,221,224,252,189,119,112,220, 31,240,205, 87, 47,176,104, 28,154,206,225,230,
+229, 30,171,245, 6, 12, 70,159, 34,154, 16,112,123,119, 15, 25, 35,194,162, 69,235, 28,206,174,207,208,173, 87,248,252,147, 79,
+113,251,118,143,197,114,129, 97, 60,232,216,202,242, 64, 83,130,118,232, 57, 43,249, 12,164,192, 11, 71, 8,206, 40,110,150,110,
+151,146, 32,138, 34, 65,217,222,176,100, 10, 82, 85,163,207,196, 65,146,224,201,195, 81,182,177,156,178,163, 11,145,201, 57, 6,
+123,243, 82, 90,212,104,129,184,164,190, 71,206, 64,183, 90,193,183,140,113,223, 99,216,159,224,156, 96,115,125,137,237,245, 21,
+228, 48,226, 47,254,183,255,128,159,253,221,207,241,225,111,127,136,255,225, 79,255, 4,205,170,195,207,126,252,119,248,234,215,
+159,193,115, 64, 76,154, 57,181, 12, 45,214,139, 6,111,110, 14,120,241,246, 45,206,175, 46,241,252,201, 19,184,177,215,108, 95,
+100, 28,198, 94, 47,116, 17,156,178, 82,167, 82, 76,200,227,136,101, 8, 8,141,199, 46, 38, 12, 54,210, 36, 83,192, 54, 93,131,
+237,249, 26, 93,167, 69,222, 98,177,194,102,179,194,178,107,208,173, 2, 66, 23, 42, 90, 82,100, 26, 1,147, 41,185,179, 9, 16,
+ 43,172,100, 30, 62, 34,246,186, 33, 91,151,150,170, 22,196, 82, 75, 0,176,145,171, 80, 71,208, 76,140,236, 44,168,132, 25, 26,
+187, 18,166,157,189, 93,236,176,216,111,230,105, 55, 95,188,136,250, 30,185,233, 82,202,118, 89,155,202, 87,108, 84, 91, 46, 94,
+154,221,146, 57, 43, 35, 32, 89,207,238,170,213, 75,106,112, 15,156, 67,182,101,130,142,246,196, 70,138,206, 46, 45,177, 3, 2,
+117,189,193,179,215, 37, 33, 91, 26,157, 77,126, 68,217,212, 40, 43, 54,152,187, 67,140, 99,109,218,132,100, 90,125, 93,185,233,
+133,161,104, 68,155, 88, 64,117, 32,197,194,163, 87,137,138,119,136, 38,167, 65, 25,113, 18,125,203, 2,199, 58, 13, 96,199,168,
+113, 46, 50,229,175,235, 91,108, 59,105,168,128,215, 89,104, 69,204, 17, 46, 69,112,147,145,210,104, 90,128, 22, 44, 97,114, 72,
+ 8, 64, 22, 18, 84,240,208, 19,213, 75, 47,189,178,112, 40, 26,140,156, 99, 37,155,205, 87, 96, 37, 80,137, 10,218,216,214,109,
+206, 20,199,206, 3,100, 32,170,148, 70, 11, 35, 73, 6,232,178, 72, 95,187,164,146, 76, 5, 38,204, 61, 4,179, 16,139, 8, 88,
+236,215,202, 56,159,236,188,173,112, 33, 7,118,162,226, 58,209,213, 94, 51, 71,147,230,100,187,102,211,150, 88,247, 92, 87,169,
+206,235, 25, 94, 18, 34,211, 48,197,156, 82, 57,155,138,214, 41,195, 37, 70, 98,155, 74, 85,164,235,148,147, 94,175,121,187, 30,
+196, 70,254, 92,134, 53, 76, 21, 90, 35, 85,120, 13,100,196,250,123, 37, 51,178,165, 52, 10,105, 88, 12,201, 36,206,244,196,104,
+131,234,115,250,148,202, 18,169,234, 24,146, 8,156,176,225,169,237,114,203,122,129, 43,178,219,193,177, 83,184, 76, 76, 32, 35,
+210, 21,221, 65,140,154,222, 39,144, 42,238, 45, 86,109,101, 58,140,160, 68,112, 65, 59,245,190, 31, 12,251, 93, 38, 38, 9,174,
+209,213, 0,103, 88,177, 67,136, 36,136, 24,225,114,107, 75, 38,157,237, 36,182,245,155,136, 62,105, 78, 87, 45,142, 8,209,103,
+196,172,211,151,178, 2,139, 99,196, 48,232, 36, 70, 25,244,206, 62, 99,214,218,204,162,189, 29, 59,237,212, 23,139,133,250,156,
+ 71,221,169,179, 85,225,169,164, 24,241,212, 1, 84,184, 60,233, 55,120,245,228, 2,236, 24,247, 15, 59,196, 24,213,115,152, 84,
+ 65,156, 36, 97,213,174,116, 76, 13, 65,204,168, 86, 39,231,125,245,244,142,113,196,195,253, 61,156,111,244, 65,175, 27, 24,181,
+ 27,144, 9,195,154,229, 2,222, 51,246,247, 59, 36, 35,109, 65, 50, 22,203, 21,206,207,207,112,117,117,137, 95,127,250, 75,220,
+188,126,139,213,122,141,225,212, 99,127,216,227,250,217, 37, 78,125, 15,199, 30,199,227, 9,187,187, 29,168,213, 75,120,177, 92,
+224,233,179, 39,184,187,187,193,215,159,125,169, 25,201,150, 78, 52,230, 92,247,254, 89, 20,119,235,204, 67,152, 36,195, 5,160,
+241, 30,142, 53,250, 83, 5,115, 50,137,180,136, 39, 92, 33, 96,157, 58,235, 20, 36,151, 69,166,121,116,161,249,224, 58,247, 99,
+131,149,144, 69,243, 89,202, 87,201,204,101, 69, 64, 82, 74, 88,174,214, 8, 77,131,211,221, 30,253,152,177, 92,182, 56,187, 56,
+195,229,179,107,220,188,188,195, 95,254,167, 63,195,203, 95,126,138,223,253,195,223,199,255,248,111,254, 24,199,113,192,175,126,
+246, 9,190,250,244, 11, 72, 18,140,113,128, 11, 30,155,229, 2,173,235,240,226,245, 43,220,189,121,192,249,229, 6,191,245,252,
+ 41,154,152, 48,200,168, 56,213, 97,192,152,117, 28, 58,196, 97,218,113,143, 35,150,222, 97, 17, 2, 14, 49,227,148, 98,181,109,
+ 36,100,248, 38, 96,115,182,193,162,109,192,193, 97,185, 89,226,236,108,141,229,178, 67,215, 41, 6, 83,234,184,218,210,236,152,
+106, 55, 83,226, 20,245,140,144, 9, 82, 82,186,156, 34, 54,201, 84,174, 41, 45, 76, 83,174, 14, 3,178,196,166, 98, 27, 99, 7,
+ 35, 86,193, 58,248,105,244, 43, 76,240,152, 89,159, 68,102,182, 38, 27,243,218, 30, 92,227, 20,233, 81,119,170,123, 65, 21, 69,
+ 41,127,157,107,150,121,205, 64, 43, 48, 39,251,239, 66,201, 14,204,137,229,159,231, 88, 86,102, 21,121,102, 91, 13, 23,209, 32,
+151,126, 82,149,185, 83, 7,108,127, 86, 77,246, 83,155, 10, 21,211,122,214, 91,142,164, 62, 0, 0, 32, 0, 73, 68, 65, 84,103,
+184,180,198,204,110,250, 89,166, 20,244,170, 18, 46, 93,125,185,153,245,123,180, 75, 0,122,128,210, 44, 52,166, 98, 99,105,222,
+145, 79,142,150,114,166,150,195,185, 42, 8, 75,228,108,129, 42,193, 68,127,166, 67, 8, 84, 10,132, 4,146,132,148, 24, 76, 9,
+217,141,234, 7, 22,117,129,144, 43,241,195,217,220, 54,108,171, 62,153,255,100,147, 94,129, 12, 32,146,139,218,153, 12,244,161,
+ 69,189, 47, 93,161,173, 21,185, 88, 15,137, 43, 51,190, 64, 79, 50, 37,164,104,122,136, 44, 51,119, 5,166,247,212,188,252, 21,
+ 26,196,182,115,207, 0,139,105, 39,236,117, 41, 5, 19,213, 45, 54,102,156,252, 92, 85,215,165,120,205, 57,153,248, 76, 38,159,
+183,115,211,138, 37,103,229,175,155, 22,162,228,140, 18, 57,205, 18, 52, 93, 20,139, 3,216,116, 77, 51, 77, 80,174,207,158,250,
+164,245,188, 83, 47,182, 32, 78,128, 21,155,210,177, 21,112,122,142,203,228, 52, 17,227, 35, 72,177, 64, 71, 43,124,169,212,233,
+250,236,177,118,207, 37,150, 85, 83, 21,109, 85,130, 92,167, 68, 69, 67,162,161, 43,165,145, 42,232, 88, 86, 71, 69,202,128,215,
+203,223, 57, 87, 39, 8, 57,217,107,236, 84, 67, 70,245,177,155, 64, 80,141,115, 0, 13,166,139, 49, 54,132,173, 89,185,132, 68,
+ 21, 98, 40, 38,160, 88, 41,176, 29,151,245,158,173,113, 69, 5,161,206,177, 22, 13,228,224, 29, 16,188, 22,210,100,141, 68,202,
+209,114,213, 89,167, 80,206, 97,140,131, 78, 84,108, 18, 88, 86, 37, 25, 25,126,140, 81, 59,102, 8,198, 52,170,141,193, 94,212,
+156,181,210,119,204,245,129,159,103,170, 3,140,245,102,139, 44, 25, 15,187, 93,221,167,232, 14,138,208,184, 6,109,211, 34,246,
+ 90, 77,159, 70, 37, 35,109, 54, 27,132,208,212,209,250,233,225,136,135,135,123,156, 95, 62,209,195, 12, 19,212,160,140,190, 37,
+103,156,109, 54, 56, 62, 28,112,216, 29,180, 42, 49,229,225,246,108,141,235,119,158, 98, 28, 70,124,241,155, 47, 52,176, 33, 52,
+120,251,246, 6,221,162, 67,235, 2,246,251, 30,228, 61,250,211, 9, 12,197,103, 66, 50, 54,231, 91, 52,139, 14,159,254,234, 19,
+244,199, 19, 90,207,232, 29, 0,110,192, 93, 7,138, 59,173,130,163,230, 5,151, 11, 8, 32,116,126,129,224,212,162,148, 45,181,
+ 42,212, 1, 42,213, 81,229,132,220, 46, 54, 34,158,204, 64, 70, 51,202, 66,112,117, 84, 41,213, 42, 65, 76,134,170,164, 58,102,
+209, 56,190,136, 69,171,123,233,253,221, 45, 56, 9,186,179, 51,172,207,207,113,126,126,134, 87,191,121,129,191,250, 47,127,133,
+135,183,175,241,131, 63,249, 35,124,239, 15,126, 15,247,247, 59,124,249,217, 87,120,241,229, 75, 85,169, 15, 39, 52,139, 14,103,
+231, 91,200,144,240,217, 23, 95,227,225,180,199,179,167, 87,248,157, 15,223, 71, 43, 35,118,135, 61, 98,142,216, 13, 73,217, 5,
+ 96,140,105,192, 24,245,131,158,199, 1, 11, 8,150,161,193, 49, 39,156, 82, 66, 20,173,250, 51, 52, 70,118,125,182, 68,183, 80,
+ 75,205,250,236, 12,103, 23, 91,108, 54, 75,116, 93, 3, 23,252,164,102,101, 87, 71,175,213,219,140,178,143,179,149, 67,137, 53,
+ 46,213,234,196, 35,157, 68, 90,245, 43,139,237, 75,102,118, 45,121,244,143, 72,217, 35, 23,225, 26, 61,242,188,146, 35, 27,197,
+ 27,207, 31, 19, 48,136,236,115,174, 46, 14, 87,189,181, 82, 46,158, 18,202,194,100,232, 96,170,154, 20,229, 61,179, 45, 29, 11,
+191,186,136,200,164,186, 71, 42,203,191, 76, 45,236,123,203, 37, 29,205,138, 67,157, 34,100,211,141,147,121, 87, 5,148,179,117,
+ 20,217,148,219,229,179,154, 38,245,109, 1, 74,177,131, 56, 13,112, 42, 83, 61,229,216, 98, 86,176,150,139,128, 30,231,168,179,
+ 42,147,132, 4, 16, 55,179,226,209, 76, 28,255,136, 86, 99,228, 56, 54, 48, 77, 17,206,101,123,175, 11, 98, 89,249,235, 76, 51,
+124,174,237,135,211, 56,192,147,211, 78, 56, 18, 50, 41, 3, 94,179,250, 2,178, 35,179,253,160, 58, 79,216,214, 87,230,226,171,
+ 17,156, 50, 23,168, 86, 31, 63,166, 2,163,172, 42,114, 70, 50,209,227,148, 54, 87,132,219,246,238,176, 3,185, 12, 73, 58,122,
+134, 21, 2,169, 70,205, 78, 94,233, 41, 92,104,150,128, 7,211,102,216,197, 86, 52, 11,170,169, 96,136, 43,142, 10,178, 53,140,
+152,178, 31,255,204, 73, 80,126,158,138,250,197,164,137,208,154,129, 45, 10,164,136, 3,173, 16,204, 82, 39, 18, 84,215,254, 78,
+199,220, 85,110, 58,211,169,152,112,181, 60, 87, 92, 62,235, 82,127,136,106, 97, 43,255,206,117,164,163, 65, 52, 72, 2,158,175,
+ 92,236,153,240, 65, 49,170, 73, 18, 82, 42,185, 33,108,133,130,213,154, 52, 17, 42, 75,209, 86, 72,137,117,205,145,129, 52, 10,
+208, 77,175,145,106, 13,236,247,214,204,243, 41,167, 93,162,177, 34, 60, 27, 63, 98, 10,216, 34, 34,196,146, 44, 39,101, 33,152,
+ 81,118, 16,204,140,224, 28,178,176,162, 43, 72, 35,133,231,175,159, 6,177,136, 33,112,181, 51,247,172,244,203, 84,249,248, 10,
+ 99,115, 94, 39,191,136,166,123,104,169, 36, 4,215,187, 65,114,134, 31,199, 81,169, 97, 6, 61,200, 53,210, 77,106,133, 24, 44,
+228,132, 76, 64,163,211, 43, 65,227, 9,235,229, 18,135,225,128,195,126, 15,242, 77,133,169,100,209, 88,210,198, 57,236, 78, 71,
+237,218, 98, 6,250,136,102, 17,208,118, 45,124,227,117,244,190,219, 79,208,255, 60,137,111,170, 45, 70, 20,168,191,232,150,184,
+187,123, 64, 28, 5,237,218,188,170, 44,120,250,238, 51, 92, 61,185,198, 23, 95,124,133,187,155, 59,108, 67,139,177,239,241,246,
+238, 14,207, 55,231, 56, 60, 28,145,179,171, 74, 80,110, 24,167,220,227, 34, 44,112,245,236, 18,187,187, 61, 94,127,254, 18, 45,
+123, 56,214, 52, 53, 23, 24,228,189, 89, 86, 21,152, 67, 85,242, 41,104,156,195, 88,169, 72,230,223,116,172, 22,136,113,138, 27,
+164,121,149, 94, 71,128,250,193,116, 94, 67, 41,200, 16,129, 40, 32, 25, 18,120,167,191,198,158,173, 27,211, 93, 88, 22, 32, 31,
+ 19, 92,240,144, 4,236, 31,246,240,158,176,186,186,192,242,252, 18,235,110,131,127,248,241,207,241,163,255,231,135,144,156,240,
+187,191,255,251,120,242,189, 15,112,127,119,143, 55, 95,191,194,203, 47,223, 96,216,159,192, 46, 98,177, 94, 98,185, 90, 99,247,
+112,196,203,111,222,128,136,240,241,187,239,224,163,247,222, 65, 32, 96,127,123,192, 24, 19, 30,134, 1, 67,102,253,160,201,136,
+ 49, 41,175, 45, 36,129,203,192,170,241, 56,165,140, 67,138,213,186,150, 33,224,224,176, 61, 95, 97,189, 94,130,136,176,218,110,
+112,117,125,133,179,179, 37,218,174,133, 11,174,250,200, 11, 89,169,122,159,139, 0,206,172,148,147,215,213,136,116,117, 71, 94,
+253,110,143, 56,248,101,214,163,214, 50,247,248, 82,169, 72, 73,174, 99,195,146, 62,102, 31, 66,219,143,107,202,142, 43,227,204,
+146,142, 38,147, 77, 78, 15, 70, 5,153,168,103, 87,133,142,101,252,204,108,212,196,146, 1, 96,112, 11, 38,167,130, 48,210, 92,
+248,154, 58,134,140,104, 49,148,229, 16, 41, 86, 21, 61,188, 83, 5, 64,213,112, 24,227,194,144, 37,240,229, 10,137,153, 21, 27,
+132, 26, 19, 89, 46,146, 34,121,247,129,181,115,103,227, 8,152,103,158, 69,113,178,100,162, 78, 37,137, 80, 77,113,148,146,254,
+ 86,109, 54, 83,129, 84, 1, 53,179,226,137,137, 31,117, 62,165,216, 40,152, 99, 56,170, 83,153,100,175,111,205,188, 46, 19, 47,
+ 46,123,113,157,136,184, 52, 24, 83,131, 16, 49,128, 93, 48,229,115, 6,167,172,249,242,165,139,177,236,237,108,186, 9, 97,182,
+125,120, 73,198,162,186,238, 23,115, 29,168,184,144,108,127,174, 5,163,131,106, 47,146,249,232,105,166,232,214, 66,199,174, 21,
+ 11, 28,202, 50,206, 46,253,233,242,172, 97, 77,179,247,164,184, 5,166,104, 91,169,138,111, 46, 90,141, 28,205,130, 39,102,206,
+ 83,213,126,233,158, 65, 50, 41, 19,203, 89,158,103,188, 1,154,130, 77, 72,166,201, 4, 42,116,104,114,233, 20,174,195,220,120,
+ 88, 0, 70, 69, 0,234,170,126, 34, 87, 81, 88, 9,112, 41,171,178, 18, 98, 34,217,236,151, 86, 88,242,172,232,128, 69,173, 22,
+213,188,192, 38, 93,222,129, 26,130,156,160, 93,113,209,213, 8, 12, 96, 36, 90,152, 56, 15,120, 87, 9,117,243,162,159,202,164,
+201,149, 21,193,100,211,131, 5,176, 80,176,137,134, 5, 35,193,123,228,129,144,199, 12,242, 14,222, 51, 88,212,202,231,157, 62,
+ 87, 99,140,200, 85,252, 51, 1,162, 10, 41,149,185,209,169,157,133,127, 37,158,196,162,213,107,111, 19, 30,176,158, 87, 62,171,
+110,195,121, 61,167,142,199, 35, 78,167, 1, 93,219,226,225, 97, 6,116, 44,148, 73, 17,179, 81,235,101,239, 97,170, 66,136,238,
+ 6,196, 58,132,156, 19,146, 17,209, 20, 20,161, 63,112,138, 99, 61, 60,155,197, 18, 97,189,196,238,230, 30,135,195, 1,232, 86,
+ 72, 2,180,172,170,241,198,121,131,211, 36, 52, 96,156,134,193, 46,111, 61,240,195, 98,137,254, 97,135,251,219, 91,196, 58, 34,
+153, 10,138, 84, 44, 59,106, 8, 68,138, 3,250,227, 9,146, 21,225,199, 12,172,183, 27,188,247,254,251,136,125,196,203,207, 62,
+ 71,104, 90,120,241,120,117,251, 90,195, 63,156,195,235, 87, 39,116, 87,107,244,227,104,234,195,132, 99, 31,113,121,181,197, 98,
+177,196, 39,159,253, 74, 17,138,190, 3, 56,131,155, 22, 77,219, 66,156, 51, 30, 73,180,135,220,129,235,174,156,235,152, 44, 89,
+ 71, 30, 74,112,134,221, 13, 33,132,194, 53,179,169,104,174,184, 65,253,192,185, 41,107,151,160,251, 24, 78,234,159, 54,159,173,
+142,109,163,118,118, 57, 35,245, 17, 36, 14,144,136,129, 18,218,229, 2,235,243, 51,108,214, 27, 56,110,240,179,191,249, 49,254,
+254,175,254, 26,203,197, 10,191,251, 39,127,140,179,235,115,220,191,185,193,237,203,123,220,190,185,193,241,225, 14,193, 51,214,
+155, 37, 34, 49,110,111,247,184,185,185,195, 50,180,120,239,250, 18, 31,189,255, 12, 52, 70,236,238,238,112,236, 7,220,143, 61,
+142, 41,106,108, 98,178,238, 44,101, 4, 38, 52, 41, 98, 77, 14, 71, 33,236,210,128,129, 0, 98,143, 40, 25, 46,120,172,182, 43,
+108, 87, 91,176, 35, 52,171, 22,151,215,151,216,110, 55, 88,174,151,150,120,105,187,227, 74,196,195, 52,218,155,141,186,197, 14,
+ 3,182,200, 95,153,141,223, 43,124,225, 17,100,134,230, 13,252, 36, 26,155,141,130,241, 40,252, 38, 87,106,155,254,154,183,135,
+ 94, 69, 77,122,217, 43,188, 36,231,217,136,216, 43,160, 73,155,109,243,126,179,155,105,192,202, 69,196, 19,167,217, 58,211,148,
+ 70, 8, 49,188,225, 47,205,124, 61, 41,246,105,194,106,126,155,246,198,162,135,152,230,150, 3,158,130,177,221,169,118, 48, 98,
+186, 2,189,164,242,163, 20, 45, 56,182, 93, 60, 85, 92, 51, 28,215, 11,157,153, 17,163, 84, 65, 91, 81,215,235,138,192,176,170,
+ 41, 67, 17,223,249, 81,236,102, 33,198,233,247,102, 2, 52,214, 14,104,130,207,208,180, 79, 38,182,117,151,197,233, 90,117, 85,
+ 46,114,169,191, 39,104,177,203, 14,222, 59,139,156, 44, 49,173,154,232,231,146,218, 8,136, 11, 12, 68, 32, 6,167,162,128,170,
+ 5, 34, 17, 12, 57,129, 18, 87, 94, 56,219, 94,221,251,160,248, 90,131, 9,169,168, 77,170,224,203,113, 48, 22,190, 84,109,133,
+ 94,126, 73, 11,167, 52,106,240, 13,166,156,121,125,221,203,164,179, 48, 4,237,189, 21, 87,209,187,121,190, 56,249, 22,176,199,
+217,168, 94,109,164,222, 20,251,182,255,166, 80,120,186,230, 35, 47, 1, 4, 54,145, 17, 69,242,138,228, 73,237, 95, 69,168, 5,
+128, 50, 99,252,215,212,204, 50, 46,215, 86, 36, 74,130, 80,170, 64, 37, 27,104, 87, 48, 84, 89, 15, 86,203,158, 33, 99,133,116,
+133,155,162,212, 36, 54, 49,255,187, 72,137,240, 85,189, 80,130, 89, 57,205,167,173,163,247, 0,207,192, 33, 90, 65,155,149, 32,
+ 89,198,246,129,108,149, 21,184, 58, 30, 18, 13,230,177,159,204,134, 57, 79,235, 19,216,196, 45,199,168,127,169, 69,173,234, 10,
+199,108,175,198,138, 40,250, 39,207, 92,223, 43, 50,166, 75,202, 81,145,195, 73,215,209, 26,200,100,209,195, 94, 39,220, 16, 82,
+221,133,137, 91,156,215,181,164,190,246,108, 10,250,100, 10,119, 19, 54,138, 10,111, 27,102, 28,119,123, 12,227,128,101,187,177,
+103, 70,215, 72, 49, 70, 45, 68,139, 96, 55,101, 68, 16,124,203, 30, 45,123,228,113,180,132, 26,181,244,212,132,180,156, 13,121,
+232,181, 98, 74, 26, 74,192,142,176, 92,180, 8, 66,216,237,118, 56,141, 3,150,139,141, 85,100,154, 41, 30,218,160,222, 63,243,
+157,247,125, 95,197, 50,190, 13,104,155,128,215,183,247,120,216, 29,224,120, 30,239, 58,193, 44,138, 34, 20,208,162, 99, 28, 7,
+192,105,252, 30, 81,192, 59,239,189,139,245,197, 26,223,124,245, 53, 14,251, 19,218,224,209, 63, 28,176,123,184,199,170,233,176,
+123, 56, 96,116, 17,231,237, 10,247,135,111, 64, 89,144,251,140,166,243,120,242,236, 9, 30,238,238,113,220, 31,208,117,173,222,
+170,204,160,166,129,111, 61,162,168,138, 61, 21, 52,167,100, 48, 5,123, 19, 52, 14, 50,137,178,134,157,119,118, 57, 69,181,145,
+ 56,135, 16, 2, 36,142, 22,194, 97, 7, 94, 1,214, 84,181,179, 90,129, 88,156, 78, 55, 10, 75,216, 41, 62, 80,204,111, 74, 36,
+ 24, 71, 85, 89,106, 93, 48,224,252,252, 12,155,179, 45,186,213, 18, 49, 71,252,236,135,127,141,127,252,209,223,225,250,217, 51,
+124,255,143,254, 16,221, 34,224,230,245, 13,110,110,246,216,221,190,193,112,127,135,166,113, 88, 44, 91,236, 79, 42,122, 27,246,
+ 7, 60, 59, 95,227,233,249, 5,174, 47, 46, 0, 12,216,221,239,113,127, 56, 96, 31, 51,142,227,168,159, 7,167, 29, 73,204,234,
+199, 92,101,193,202, 49, 14, 16,220,143, 73, 5, 64,236,116,123,237, 24,139,213, 2,103,219, 13,216, 49,154,229, 2, 23,215,103,
+184,184,222, 98,179, 89,193, 7,175,161, 62,179,138, 25, 44, 83,200, 11, 38,229,121, 46, 77, 7,127,139,106, 54, 59, 0,101, 54,
+214,214, 61,110, 25,194,203,163, 49,228, 28,154,242, 72, 89, 93, 68, 38,166,134, 21, 42,157,134,117,223,149, 10,199,240, 30,143,
+208,170,101,252,154,146,204,168,104,222, 4,102, 42,156,203, 68,160, 18, 74, 66,164,238, 10,187, 36,132, 38, 63,113, 73,186, 42,
+211,154,106,139,179, 78, 54,143,170, 17, 16,102,163,103, 57,187, 12,148,113, 15,113, 64,214, 3, 58,195, 79,241,197, 5,254, 2,
+227, 99, 27,116, 70, 89, 55, 82,137,141,229,239,203,121,196,180, 53,178,174,220,148,201,154, 9,173,182, 38, 98,121, 20,163,172,
+181,247,108,128, 90,224, 49,179,203, 73,102, 17,193, 37,197,170, 72,211, 40,149, 41,162, 77,188,108,146,193,108, 89, 11,229, 36,
+ 47,235, 15,155, 62,176, 68, 43,166, 29,132,163,137,217, 52,246,180, 20, 17, 46, 82, 73,146,213,247, 41,105,103, 89,201,141,179,
+ 8,227,218,213,229, 66,188,228, 10,174,201, 53, 4, 4, 96,105,144,144,144,211,160,159, 52,235, 34,203,154, 98, 82, 59,200,163,
+139,154,121,194,109,215,169,137, 93, 36,197, 62,248,248, 51, 43,117,186,151,109,226,129, 71, 29,183,174,244,200, 2,117, 74, 98,
+217,124,149, 48, 69,165,202,255,175, 75, 1, 96, 60,170,121,217, 46,224,252,173,175,169,203,134,164,151,146,169,180,245,108, 51,
+171,102, 33, 51, 22,215,129,117,235,108,186, 83,153, 9, 65,237,211,103, 56, 89,170, 23,124,125, 52,189, 58,172, 2, 57, 12, 67,
+ 63,235,138, 11,153, 80, 11, 16, 85,143, 91,195, 36,140, 28,205,194,102,249, 26, 98, 65, 40, 37,158,181, 0,154,212,234,104, 9,
+112, 65, 95,131, 18, 5,235,137,244,226, 44,148, 57,231,173,193,117, 32, 97,164,216, 87, 11,167,152, 68, 53,139, 1,205, 82,174,
+217, 15,204, 89,157, 6, 57, 90,129,227, 76, 13,159,173,131,119,102,225,101,125,145,144,225, 3, 35,140, 94, 35, 87, 83,194,233,
+212,163,235,214,186, 30,176, 7,160, 48, 97,200,120, 14,176,169,177,111, 66,128, 11, 30,135, 97, 68,140, 73,213,138, 36,149,154,
+148,102, 17,171,206,130, 76,146,100,120,239,208, 44, 90,140,121,196,113,127,128,119,172,163, 13,171, 78, 29, 49, 26, 31,176, 63,
+ 30, 53, 41, 71,128,227,225,128, 5, 51,188,211, 81, 70,235, 28, 30,238, 30,176,223, 29,141,212,131,105,244,110,112, 4,136,142,
+ 92,136,245, 27, 31,143,163, 17,154, 24,203, 85,131,247, 62,120, 31,227, 16,241,246,155, 87,104,154, 6, 71,137,184,187,187,135,
+ 3, 35,199,132, 97,119,192,234,242, 82,199,158,113, 4, 11,112,236,123,188,243,225, 7, 0, 1,111, 95,189, 85, 56,129,131,142,
+208,185, 1,107,118, 43, 78,125,143,126,136, 85,248,166,170, 80,253,247, 97, 76,232, 7, 65,183,230,154,189,235, 68, 52, 61,136,
+161,162, 8, 27, 31,167,148,144,104,250, 51,164, 90, 36,162,217, 58, 88, 69, 94, 37,192,195, 83, 1,158,233,123, 44,132, 52,100,
+244,253, 8,246, 14,139, 38, 96,181, 89,163, 91,175,208,116, 14,195, 97,192, 79,126,248,255,226,197,167,159,227,249,199, 31,224,
+119,254,229,247,193,174,197,203,175, 95,227,238,237, 45, 78,135, 35,134,135, 29,216,121,116, 77,139, 55,187, 61,210,224,177,242,
+ 1,239, 92, 93,227,217,102,141,118,217, 32,187,136,227,253, 1,187,227, 1,187, 97,196, 67, 44,232, 83,237,138,198,164,169,114,
+107, 98,172, 25, 24, 50,176, 31, 6, 36, 18,136,115,245,192,111,151, 29,206,206, 54,154,160,182, 92, 98,115,190,197,229,213, 5,
+206, 47, 46,192, 77,128,140, 99,141,214,165,226, 69,181, 54, 69,136,204, 51,110, 34,160, 50,246, 44,151, 12, 21,130, 28,207,148,
+236, 83,176, 9,196,122, 21,158, 96, 23,147,173,138,106,138,158, 38,165,105, 23,227,204,239, 41,179, 0, 30, 41, 24, 70, 0,177,
+132, 23, 97,178,170, 60, 26,129,137,141,185,107, 81, 50, 21, 29, 25, 2,166,201, 71, 42,223,218, 7, 82,161,191, 73, 13, 6,155,
+ 96, 29, 84,240,176, 58, 57, 83,151, 2,235, 1, 1, 45, 14, 10,140, 72, 4,179,141, 59, 61,122,109,234, 58,195,124,213,243,144,
+152,156,100,186,216,139,189,204, 94, 27,157, 10,152,136, 41,219,120,213,138, 22,199, 2,112,130,136,171, 62,106, 50,148,180, 88,
+160, 77,165,103,208,236,253, 43,151,146,129,122, 38,149, 67,249,253, 92,159,155,137, 60,103, 76,255, 12, 80, 96, 35,155,161, 90,
+214, 80,124,217,121, 84, 93, 91,101,142,179,173, 23, 60, 82, 28,244,235,184,176,195,167,113, 53, 91,232,144, 32, 35,142,217, 10,
+ 27,189,232,216, 32, 51, 41, 25, 51,128,185,178,190,245, 32,143, 53,105,140,156, 25,179,237,236,172,182, 46,153, 96, 68, 85, 84,
+ 89,252,239,181, 22,157,112,125,115,150,127,233, 46,235,106, 3, 4,145,104, 13,151,212, 75,176, 8,245, 10,184,165, 20, 1,211,
+159, 39, 83,164, 35, 27,248,198,190,207,170, 85, 33, 45,247, 64, 74,198,147,108,162,181, 84, 38,101,186,119, 46,118,203,233, 51,
+103, 30,124,179,243,149,119,149,121,178,171, 17,102, 19,143,162, 1,180, 60, 17,178,176,165,210,225, 22,171, 92, 1,206,120,207,
+232,143, 61,134,168,121, 1,133, 29,207,153, 17, 9, 22, 77,171,133, 46,153,242, 60, 21, 65,163, 87,231, 73,182,137,115, 48,113,
+118,206, 25, 57,233, 93,151,181, 35, 65, 91, 65, 50, 9, 77,219, 98,164,132, 56,166,234,129, 47,248,217, 82,124,165, 52,183, 95,
+210,252,147,172, 34, 54,199,245, 51,236, 24, 85,167, 64,150, 84,201, 16, 93, 29,148,194,199,156, 81,236, 8,142, 2,124,136,122,
+ 54,165,140,254,208, 35,111, 71, 52, 22, 62, 22,156, 67, 38, 65,202,202,126, 39,115,157,193,123,248, 54, 52,112, 62,160, 63, 28,
+ 48,166, 8,112,152,198,125, 37,146, 81, 84,112,195,134,188,203,146,208,180, 11,116,203,165, 90,217, 78, 3, 4,218,165,213,113,
+150,189, 64, 57,101,120,231,113,218, 31, 48,244, 3, 22,157,230, 95,251,208,192, 49,240,112,123, 91, 13,249,211,126,169, 18,168,
+ 43, 83,183, 13, 65,189,180, 57, 33,180,122, 57, 62,125,254, 46,206, 47, 47,240,250,197, 75, 28, 79, 39,116,237, 2, 47, 95,124,
+137,227,195, 30,174,105,176,219, 29,176, 8, 1,103,103, 75,220,223, 29,213,194,145, 19,154,229, 2,151, 87, 23,184,125,243, 6,
+ 78,128, 16,116, 10, 17,135, 1,206,121, 27, 73, 10,134,195,136, 56,142, 86,193,114, 5,234, 40, 43, 62, 33, 24,182, 53,155,151,
+ 84, 82, 6,137,114,218, 51,165, 58, 70,142, 57, 65,216,169, 26,114, 38,116, 74,153,107,103, 57, 39,106,217,180,182,144, 18,148,
+219,126, 26,129,156,177, 58,223, 98,181, 93, 97,209,117,104, 67,139, 55, 47,111,241, 15, 63,249, 41,110, 95,223,225,187,223,255,
+ 29,124,244,189,143,112, 24, 6, 60,220,188,192,254,110,135,120, 58, 34,237, 85,179, 16,217,225,245,161, 71,235, 58, 92,110, 22,
+216,120,143,167,155, 53, 92,208, 11,105,220,159,176,219, 29,112,127, 60, 97, 31, 35, 6,139,162,117,222, 91, 87,145,113,206, 1,
+ 75, 8,134, 28,113, 31, 19,198,146, 36,199,122, 72,119,139, 22,155,179, 53,218,182,197, 98,187,194,230,108,139,237,118,131,243,
+203, 11, 52,134,248, 85, 97, 89,177, 48, 21, 1, 24, 89,122, 81,217,169,231,106, 59,209,195,103,234,152, 80, 3, 17, 38,123, 26,
+ 74, 33,106, 94,254, 2,161, 33,139, 49, 68,185,212,205,134,166, 65, 10,206,200, 78, 60, 89,134,216,212,170,164, 42,228,210,137,
+ 43,121,202,246,172,197, 71, 92,186, 70, 46, 86,160, 89,150, 52, 19, 28,154, 89,110, 60,106, 55, 94,134,159,201, 8, 79, 98, 29,
+141, 24,151, 26,246, 61,168,170, 53, 77,187, 75,235,136,116, 77,192, 54, 9,152,196,152,196,217,158,207, 9,201, 73,179,132,169,
+226,247,174, 86, 56, 27,113,167,210, 85, 39, 19,113,150, 28,104, 76, 19, 4, 98,170, 81,155, 21,238,227,100,138, 22, 22,133,169,
+ 76,168,207, 89,212, 43, 77, 74,113, 18,174,252,234, 89,253, 82, 44,250,134, 3,157, 44,112,108,213,159,173,161,181,192,113, 38,
+194,172,151, 75, 70,202, 17, 9,118,176, 59, 45, 95,136, 66,101, 7,192, 4,126, 49,151,244, 60,163,137, 25,157, 78,171,129, 92,
+247,187,204,133, 59, 96, 93,187, 36,253, 92,137,174,159,100,102, 35,171, 41,102,196, 22, 87, 45,186,190, 48,219,215, 36,189, 20,
+235, 78,231, 98,193, 57,160, 71, 30, 49, 6, 38,199, 0, 77, 19,168, 34,218, 52, 73, 39, 83,225, 56,228, 89, 4,174, 60,250, 11,
+106, 64, 14, 85,180,159,253,217, 22, 71, 90,216, 78,182, 17,151, 42, 14, 52, 70, 72,156,126,222,199,168, 95,123, 78, 92, 9, 14,
+178, 9, 65,237,232,105, 34,206, 49,234,164, 18, 50,137,255, 42,234,181,124,127,245,181,210, 92,164,224,180,161,236,179,146,230,
+ 98, 54, 30,125, 89,203, 25, 92,202, 57,167,208, 54,150, 42, 46, 20,201,186, 66,181,159, 95,201,121,152,180, 97,128, 21,181, 9,
+ 46, 56, 91,151,194,244, 78,132,225,168,164,206, 18, 28,147,108, 58, 75,100, 9,126,146,109,238, 85, 86,101, 9,206,117,213,159,
+207,198,170,119,166,169,132,185, 8, 96,228,202,224, 85, 15, 80,162,198,137, 13,180,214,170, 48,218,143, 94,181, 83,136, 24,210,
+160,185, 7,182, 50, 11, 94,215,124, 49,235,207,226,172, 80,105,152,181, 83,143,105,196,105, 28, 17, 37,163, 41,236,104, 76,187,
+151,152, 45, 74, 15, 58,130,200,105, 64,219, 53,104,156,195,155,253, 30, 17, 90,193,162, 74,235,245, 98, 19, 17,140,167, 30,203,
+243, 45,246, 55, 55, 64,210, 29, 79, 19, 2,154, 38, 96,191,219,227,230,237,107, 69, 59, 22,208, 70,158,196, 82, 92,156, 46, 73,
+171,190, 56, 40, 80,193, 59,143,197,114,137,119, 63,250, 16,177, 31,113,247,250, 45, 22,139, 14,135, 67,143, 23,223,188,196,134,
+ 8,227, 56,226,230,126,135,237, 59,207,224,201,226, 72,163,210,133,174,223,125,138, 56,246,216,191,186,199,197,245, 37,214,231,
+ 75,132,125,208,137,128,247,182,243, 20, 12, 67, 95, 43,215,218,121,101, 96, 28,149,151,204,222, 16,128,105, 4,210,168, 30, 82,
+ 98,195, 36,114,149,141,150,139,203, 21,161, 21, 21,129, 67, 81, 65, 90,130,151,192,180, 11, 58,254, 98,114, 24,135, 17,253,169,
+ 7,224,112,118,190,193,122,179,212,113, 84,240,120,241,245, 43,252,252,239,127,142,124, 58,226,251, 63,248, 62,158,126,240, 62,
+110,111,239,177,219,157,208,159,142, 72,125,143,120, 60,169,207, 17, 17,201, 5,108, 87,107,108,125,139,165,103,108,218, 86, 47,
+ 67, 38,196,152,176,127,216,227,126,127,196,110,136,232,101, 84,150,128, 87, 28,109,234, 7,108,157,195, 57, 49,250,152,176, 79,
+130, 30, 2,177, 66, 15, 4, 52, 93,192,122,187,193,106,181,196,106,179,198,246, 98,131,245,102,133,139,203, 75,116,139,165,226,
+ 32,147,142, 48, 41,207,196, 42, 66, 53, 7,128,106, 92,167,177,166,133, 38,165,173,217, 93,166,238,207, 14,210,156,235,133, 90,
+236, 62,168, 59,102,175, 59,101,153,101, 19, 81, 41, 14,184,122,137,115, 25,250, 90, 60,170,100,212,100,170,210,245,122, 31,234,
+ 58, 72,236,114, 43,157, 37, 74,212,174,161, 36,139,251,139, 81,248,239, 51,107, 19, 77, 76,244, 82,210,136, 36, 85, 23,176, 22,
+ 13, 57, 97,234, 14,202,142,206,172,165,165,195,202, 86, 8,176, 83,129, 13,102,152,216,122,249,215, 88, 72,219,169,210,132,216,
+173,222,226, 2,120,171,188,118, 54,191,180,117,102,245,194,225, 42,158, 42,238, 19,201,102, 19, 42,119, 13,219, 97,139,210,221,
+ 41, 9, 47,101,245, 0,195,138, 34,194,183,244, 16, 52,141,238,139,149,167, 80,198,156, 21, 21,194,147,246,162,124,120,116,212,
+156,193,190,211,169, 65, 25, 73, 67, 71,183,165,216,171,211, 49, 34, 16, 41,155,223, 89,113, 52,142,163,138,244, 48,137, 47,137,
+169,126,134, 74,151, 87,132, 85,197,178,148, 69, 25, 13, 58, 57,164, 42,134,205, 54, 26,198, 44,121,143,202,122, 71,242,196, 64,
+175,106,120, 59, 39,242,183,147,246,102,197, 81,249, 94,172, 8, 36,153,194,113,184,232, 63,100, 22,180, 83, 87,151, 82,147,245,
+170,242,190, 28, 65, 37,225,172,194,113, 74,117, 33,149,214, 88, 10,111, 33,117,232, 20, 15,187, 78,119,242, 44,184, 69, 42,145,
+ 15, 89,191,207, 34,242, 36, 46,249,233,168, 54, 51, 45,124, 85,232,134,186, 86,147,199,151,186, 21, 86, 34, 58, 18,159,172,125,
+152, 37, 4, 42,190, 89,239,142, 60,179, 31,143,182,227,119,136, 98,147,150,156,109,117, 42,255,140,136,232,131, 3,121, 45,220,
+149, 4, 71,218,208,141,154, 81, 78, 78,159, 9,211,234, 99,180,207, 60, 21, 16,216, 28,192, 67,229, 31,189,120, 61,123,221,147,
+155, 70,146,237,217,212,115, 30, 53, 30,186,132,115, 81, 8,198,112,112,104, 44, 58,187, 31, 6,139,171, 45,107,105,109, 30,188,
+105,120, 60, 57,155,123, 0,222,219,146,112, 28, 7,228,152,192,237,132,136, 76,146,235,222,174,140, 67,200,148,140,231,171, 53,
+250,253, 9,135,195, 81,143, 70, 27, 97,146, 61, 28,142, 29,134,113,212,240,150,174,197,105, 24,208,199, 1,107,241,232, 22, 29,
+188, 99,188,190,125,131,120, 26, 42,181,199,209,196,142, 86, 31,175,175, 31, 14,199, 14,199, 81, 69,114, 78, 4, 31,124,231, 35,
+ 92, 94, 61,193,219,215,111,144,199,136,174,243,120,115,243, 6,167,161,199,101,187,194,253,195, 1, 99, 26, 17, 28,227,180,239,
+213,235,151, 18,206,215, 91,156,159, 47,240,229,215, 95, 66,118, 25, 87, 79, 46,225, 60, 41,130,207, 84,251, 41,101, 28,135, 1,
+ 68,101, 87,147,145, 51,219, 67,156,209,180, 14,206, 25,200,193, 84,172,117, 60,235,120, 74, 99,179, 41, 71, 17, 0, 85,217,147,
+ 37,143, 21,138, 89,204, 78,173,112,229,112,182,195,181,239, 7,244,199, 17,204,140,171, 43,219, 71, 27,185,238, 55,191,250, 13,
+ 62,251,197, 87, 8,157,195,187,255,226, 7, 56, 63, 59,195,219,215,111,113, 58,244, 24,135, 17, 24, 71,196,211, 17,183,135, 3,
+ 70, 52,184,188,188,196,166, 91,160, 5,161, 21, 96,211,118, 32, 50, 16,130, 36,236,143, 59,220,236,118,184, 31, 34,142, 49,194,
+123,134,247, 65,147,251,226,136, 5, 57,156, 59, 70, 63,246,216,165,132, 99,249,185,216, 65,136, 16, 26,135,245,122,133,237,102,
+137,245,249, 25, 86,231, 91,108, 55, 11,156,157,159,163, 91,173,107,228, 92, 33, 51,101,171,121,156,104,249,166,217,218, 54, 13,
+ 33,122,228, 28, 96,158,118,195, 92, 99, 60,231, 49,165,198, 78, 22,216,159,107,183, 62,151,174,191, 4,157, 20, 66,149, 55,241,
+ 35,163, 12, 6,153,184,238,223,234,232,155,184,218, 83,136, 93, 77,189, 19,243, 60,147,117,235, 69,148, 86,138, 55, 24,133, 80,
+ 72,213, 41,108,129, 20,165,162,159, 18,231,116,124,230,106, 48,131,169,203,205, 95,207,165, 99,158,197,157,214, 11,187,238,213,
+ 80,187,121, 38,135,114, 98,207, 96,181, 38,252,145, 71,228,185,108, 35,102,178,139,141,216,131,105,180, 46,195,200,100,179, 52,
+ 54, 24,172, 36,219, 36, 1, 41, 87, 1, 81,249,154,154, 72, 87, 86, 36,140,218,225, 57,123, 47,179, 21, 67,158,125, 53, 69,121,
+210,172,107,178, 75, 79, 95, 3,153, 46, 60,195,159, 78,174,133,137,201,174,127, 44,195, 7, 15, 14, 30, 57, 43, 3, 94,167, 11,
+206,208,174,185,186,107,156,247,112,206, 4,100,153,181,192,116,133,138,230,235,165,154,163,129,111,188,142,255,227, 56,117,228,
+197, 58, 20, 69,119,232, 4,169,122, 36,178,184,223, 82,128,178, 20,234,217, 52, 22,175, 9,121,101, 66, 41, 48,103, 5,215, 93,
+120, 52,228,111, 85,153, 23, 71, 7,205, 19,254,102,119, 49,232, 81, 23, 93,247,233,229, 51,199, 84,127,207,100,142, 84, 77, 7,
+177,126, 94,116,251, 58, 77, 18, 10,143,125,162, 0, 74,117,138, 40,187,223, 24,242,179,194, 23, 25, 51,209, 99,182,247,222,205,
+ 85, 90,117, 93,192, 12,196,146, 76, 87,132,127, 52, 21,232,206, 68,111, 69, 60, 91, 45,193, 38, 90,206, 89,249,244,222,115,117,
+117,148, 2, 72,191, 70,139,116,228,172,128,153,148,208, 54,139,234, 38,240,222, 91,116, 44, 27,180, 72, 65, 47,222,235,123,209,
+247, 39,227,173,163, 38, 99, 82, 86, 76,108, 52, 50, 29,170, 2,205, 89, 81, 72,117, 74,168,159,109,125,111,235,218,160,204,109,
+108, 13,168, 28,156, 92, 39, 42,204, 2,223, 54, 24, 82, 70, 8, 81,241,237,195,136,135,251, 61,226, 59,217,214,139,250,155,199,
+164, 13,167, 7, 91,116,185,218, 87,185,241, 94,199, 82,253, 48, 75, 66,130,133, 99,212, 1, 10, 50,153,202,209, 1, 77,215,162,
+235, 90,220,159, 14, 24,134, 17, 76, 14,153,156,209,139,180,123, 10, 46,224, 56,140,240, 93,139, 28, 51,134,227, 73,211,129,136,
+224,183, 75,100,114,120,120,232, 53, 71,151,138,253, 88, 67, 57,146, 5, 86, 40,126,147,225, 26, 66,112, 64,142, 9,153,129,197,
+102,131,247,191,251, 33,100, 28,112,124,184, 3,123,193,144, 78,248,230,171, 87,202,120, 23, 65,127,218, 99,209,182, 16, 73,216,
+237,119,200,172,202,214,203,139, 11, 60, 60, 12,120,249,242, 45, 64,132, 32, 9, 44, 12,215, 53,200,158, 16, 37,227, 56, 68,196,
+227,193, 94,116,167, 68,171,152,140,173, 45, 26,254, 84, 58,182,186, 71,210,113, 46,152,171,226,154,146, 85,165,182,147,173, 99,
+ 45, 27,217,164,242,208,102, 76, 35, 54,167,194,187, 52, 8,142,111, 78,200,228,113,113,113,142,229,178, 3, 59, 66, 66,194, 39,
+191,252, 28,159,254,221, 39, 8, 13,225,189,143,222, 71, 27, 58,188,121,115,143,195, 65,187,114, 22, 85,101,222,222,222,163,239,
+123,188,255,252, 25,222,187,126, 7, 43,231,208, 49, 97,219,117, 5,173, 2, 48,176, 59,237,241,246,254, 1,247, 67,194,113, 28,
+ 65,153,224, 66, 11, 14, 65,215, 21, 89,240, 52,120,112,202,216,103,193,193, 48,147,196, 30,228, 60,124, 19,176, 92,173,112,182,
+221,224,252,108,139,237,229, 26,155,229, 18,219,203,115, 44, 86, 75,213, 91,176,250,123,181, 89,178,177, 55,216, 12, 66,100, 96,
+133,169, 59, 83, 36, 99, 48,223,168,138, 73,138,151,251,145,226,205, 46, 38,246, 14,217,171, 48,133, 88,234,126,110, 30, 12,161,
+ 29, 7, 27,204,196,213, 14,180,130,174, 72, 44, 60, 68,153, 4, 98,246, 35,118,190, 90, 71, 98,142,234,133, 22,227,181, 27, 96,
+166,134,163,144,194,107, 64,113,194, 57,148,147,215, 46,255,249,120,181,136,228, 74, 26, 24,108, 95,204,152,128, 79,108, 93, 61,
+207, 68,103,201,108, 59, 42,100, 19, 83,231,146,197,150,170,195,163, 28,164, 21,248, 97,187,121, 49, 49,167,136,122,116, 29, 49,
+224,237,130,203,211,225,203,204,186, 50,114, 37, 52, 99,154, 42,148, 46, 50,231, 34, 52, 51,156,119, 78, 58,206,154,217,118,244,
+ 33,208,127,119,200,240, 98,187,119, 43, 86, 28, 79,214,194,250,220,243, 84, 96,241,108,237,224, 28, 35, 91, 52,237, 56,142, 24,
+ 99,210, 76,170,211, 17, 57, 14, 16,210,248,204, 44, 4,137, 58, 42,207,182,243, 85,251,144,126,102,114, 26, 17,211,128, 52, 70,
+ 19,115, 89,167, 39,105, 34,184,213, 76,121, 85,216,151,228, 59, 97,205,229,166, 44,200,200,136,172,218,163,226,159, 71, 30,167,
+ 88,100, 46,121, 3,102,241,146,137, 91,225,138,126,128,109,140, 77,186,190,211,215,137, 30, 11, 14,205,186,248, 88,228,134,202,
+140,151,194, 29,192,227,164, 55, 88, 28,112,229, 38, 88,232,145,174,154,196,186, 96,195, 35,147,118,165, 37,199,174,124, 29,187,
+242, 99,204, 18,212,184, 48,204, 93, 93, 48, 8,105,232, 21, 16,225, 73,159,108,253, 8,167, 73,168, 55,155, 34, 24,153,215,112,
+ 53, 4, 18,135,156, 11, 62,156,234,164,197, 27, 38, 91,170, 80,114, 38, 26,116, 30,173, 83,141, 51,149,137, 14, 17, 82,172,139,
+ 78,203,120, 48,162,167,155, 4,174, 90, 48,235,251,216,182, 65, 63,115, 86, 64,164,148, 17, 79, 81,159, 67,115,176,104,172, 77,
+ 68, 76,209, 52, 8,177,114,228,173,163, 67, 91, 74, 34,139, 50,206,220,128, 60, 44, 71, 62, 2,228, 53,233,209, 9,188,211,245,
+ 9,121,103,184,105,129, 39,160, 9, 30,141,243,154,249, 65, 4,146,136,195,241,136,113, 28,173,220, 38, 36, 33,140, 73, 16,147,
+ 77, 84,114, 66,150,164,151,186, 11, 29,198, 97,192,105, 24, 76,212, 51,141,160,146,237, 56, 11,239, 24, 0,130,247, 88,117, 11,
+ 28, 78, 35,142,167, 83,149,213, 23, 11, 7,179,131,243,250,245,135,227, 17,141, 37,255,220,237, 31, 16, 92, 64,183, 94, 99,213,
+117,200,167, 30,167,253,193,170,250, 60, 27,241,145, 9,244, 74, 94, 47,170,229, 46,198, 17, 41, 3,239,126,248, 46,174,158, 92,
+225,254,246, 6, 99,138, 8,190,193,171,175, 94, 99,216, 31,176,104, 29,198,126, 64, 28, 18,218,166,193,195,238,132,253,254, 0,
+ 98,194,246,108,141,166, 9,216, 61,220, 33,166,140, 54, 56,245, 35,146,192,135, 6, 96,143,148, 18,246,251,123,176,115,240,228,
+108,199,111,194, 11,166,234,247, 77, 41,214, 3,204,147,109,144, 44, 93,139,205, 82, 19,105,186,244,189,243, 54,114, 86,234, 79,
+ 54, 27,140, 62, 36, 84, 99, 25, 29, 24,195, 41,225,176, 63,130, 59,224, 98,179,210,168, 70, 7,140,125,194,175,127,254, 37,190,
+250,252, 43,108,222, 57,199,251,223,253, 16, 20, 24,251,195, 14,227,208, 35, 13, 3, 88, 18, 40, 70,220,188,121,139,200, 30,223,
+251,237,223,198,251,239, 61,133, 79, 35,188, 0,231,109, 7, 72, 68,162, 8,120,198,233,212,227,213,219, 59,220, 31, 6,244,227,
+136,152, 19,124,235,208,249, 22, 30, 4,196,136,179,166, 1,242,136,187,216, 99,200,122,160,137, 35, 32,120,184,198, 99,217, 53,
+ 56, 63,219,226,236,234, 2,203,139, 45, 86,203, 21,206, 46,207,209, 53,157, 90, 37,115, 68,202, 17, 49,153,160, 71, 50,216, 94,
+ 59, 85, 1,231,106,195, 18,202,179,232, 93, 86, 74, 90,233, 48, 72, 11,128,146, 93, 95, 9, 82,204,154, 97,206,108, 43,144, 0,
+204, 59, 92,171,158,185, 86,219, 50, 3,133, 88, 6, 58,123,176, 97, 24,137, 92,245,171, 26, 26,162,230, 48,215, 40, 81, 83,182,
+151, 29,221,156,187, 62,183,204, 20,213,188,126, 63, 86,200, 76,180, 12, 59,221, 77, 93,173, 57, 82, 10,168, 96, 45,112,105,230,
+ 99,101,204,243,213,245,226,102,158, 4,152, 42,152,225,218,225, 83, 85, 73, 59, 99, 68, 23,238, 3, 63, 42, 46,166,200, 74,154,
+ 14,116,155,108,100, 76, 66, 39,170,139,109,122,236,251,215,145, 84, 77, 49,195,183, 56,240,250,186,228, 41,152,102,150,242, 86,
+ 84,224,117, 47, 41,147, 53, 79,217,218,190,118,200,206,196,152,138,115,197, 35,206,125, 74, 17,195,233, 8,244,154,123,144,178,
+ 22,182,131,141, 45, 75, 33,137,172, 9,146,202,158, 24, 32, 24,225, 45,196,163, 78, 8, 76, 24,108,117,152, 42,158, 77,107, 67,
+ 4, 56, 86,138, 36,121,167, 60,127, 98, 19,219,250,106,149, 20,179,238,234, 42,147,173,196, 42,151,134,152,237, 79,166,215,103,
+ 63,247,152, 0, 0, 32, 0, 73, 68, 65, 84,133,170,228,108,154,250,101,209,127,236,210,203,179, 46, 60,127, 75,197,254,109,129,
+ 29,190,101,141,171,220,246, 89, 65,153, 19,234, 46, 55,211, 68,167, 19, 82,209,112, 9,169,145, 92,194,129,138, 8,211,220, 3,
+182,174,210,226, 13,245, 89, 96,226, 10, 48, 19,203, 96,208,104,227,153,215,125, 50,209, 63,242,208,107,226, 93,130,119, 4,179,
+105,163, 13, 94,117, 79, 52, 5, 21, 77,220,116, 32, 56,182, 98,212, 94, 27,131, 35, 57, 98,243,223,107, 10, 91,127, 74,255,108,
+146, 81, 86, 45, 28,252,244,181, 16,244,253, 9, 41,198,170, 59,112,182,170, 72, 41,218,175, 79,239, 83,209,205, 8, 4,217, 52,
+ 59,176, 16, 46,170,231,147,113, 18,156,238,216, 27,118,117, 76,239,157, 83, 75, 30, 3, 28,212,194,167,233,111,197, 58,219, 32,
+165, 3,250, 99,175,247,146, 37,129,150,105,102,153,173,193, 49, 56, 4,120,199,130, 67,212,234,195,151, 81,187, 76,244,155, 36,
+ 9,153,188,125, 36, 53,205,205,123,143,195,225,136, 49,233,174,204,147, 84, 79, 46,219, 14,161, 31, 7,244,199, 35,158, 92, 92,
+ 96,232, 7,196, 40,144,152,177, 88, 45,176,104, 90,236,246, 71, 60,220,189, 5,177, 87,166,181, 76,234,217,170, 29, 97, 85,125,
+251, 16, 32, 73, 48,244, 17,221, 38,224,131,223,250, 46,144,129,211,241, 0, 2,208,247, 3,190,249,236, 43,172,182, 43, 12, 41,
+227,176, 59, 34,120,173,188,246,251, 3, 98,140,184,222,158, 97,117,185,198,152, 70, 28,118,123,120, 7,120, 38, 19,223, 49, 68,
+185,129, 24, 15, 71,245,216,123,101,214, 67,102,123, 41, 51,248,171, 96,193, 33,152,181,136, 72,115,134, 73, 13,165, 90,149, 71,
+235, 68,202, 14,140, 38,238,119, 5, 76,176,155,198,170,230, 9, 30,134, 81,247,143, 62, 96,185,106, 17, 26,253,251,247,247, 9,
+111,190,122,129,135,221, 78,237, 97, 79,158, 96,136,130,241,216, 27,241, 46,194, 19, 33,193,225,213,235, 27,196,156,241,123,255,
+226,247,112,177,221,226,120,183, 3,197,136,149, 87, 21,240,152, 19,194,162, 67,148, 17,175,222,220,224,254,112, 66,159, 51,134,
+ 49,162,235, 26, 52,161,209,202,114, 28,113, 21, 60, 58,137,216,141, 35, 78, 57, 99,176, 85, 11, 57, 7,223, 4,248,198, 97,187,
+217,226,242,233, 21,214,219, 53,186, 69,135,213,118,141,102,209,214, 24,197,108,123,212,156, 35, 28, 38,209, 86, 21,245, 84,162,
+154,237,194, 11,253,156,228, 81,247, 65,252, 24, 47, 42, 82,172, 41, 38,169,149,199, 59,229,122,192, 49,215,195,113, 30, 24,162,
+ 34, 44,174,226, 60,153, 99, 89,193,143, 0, 15, 52, 75,127, 42, 22,174,249,255, 85,198, 2, 48, 3,177,148, 17, 50,215, 85,129,
+ 88,110,122, 21,216,160,100,152,103,164, 24,171,221, 75, 71,246, 30,160, 18, 23, 25,109, 15, 57, 11,214,168,187,118,174,137,115,
+142,189, 10, 90,193, 85,177, 94,186, 18, 33,101,220, 23,161, 23, 88,197, 60, 73, 24,136,246,250,242,164,109,147,122,129,207,114,
+172, 31,153, 1,181, 32,171, 71,155, 1,149,138, 87,189, 94, 34, 52,189,246, 5, 23, 90,130,106, 98, 38, 43,220, 39,202, 26,113,
+174,224,158,218, 97,146,252,127,108,157,231,150, 28,199,177,173,119, 68,102, 86, 85,247, 24, 0, 4, 9,208,136,114,199,220,251,
+254,143,115,238, 49,148, 68, 11,146,112, 51,211,221, 85,105,226,254,136,136,204,106,232, 44, 45,173, 37,137, 16, 48,232,174,202,
+ 12,179,247,183,119, 66, 45,238, 9,143,158,142,167,228,216,138, 44,130, 20, 53,171, 32, 29, 38,180, 77, 70, 8, 13,108, 55,171,
+ 12, 87,111, 67,208,168,106, 24,147,129, 87, 42,213,209, 1, 99, 28,234,205, 39, 59, 82,119, 94,111,195, 90,123,129,198, 73, 39,
+ 50,198, 97, 7,243, 46,129,205,196,104, 93, 27, 66,160, 79, 20,239,238,128,129, 77, 2, 28,162, 36,187, 96, 35,159, 8,145,251,
+ 43,246,207, 40,174,215, 52,253, 98, 71,232, 19,169, 81, 76,181, 46,128,148,182,139,147,237,151,173,173, 18,250, 38,155, 59, 13,
+141, 72, 49,186,134,136, 65, 96, 70,174, 35,102,214,149,244,206, 83, 16, 83,172,251,229, 39,220,186, 46,166, 63,203, 52,172,124,
+188,211, 87, 44,135, 4, 42, 98,196, 53,133,203,104,138, 31, 97,138, 22, 62,230,194, 59, 82, 86,123,107, 21, 49, 4,108,246,217,
+148, 82, 80, 90, 65,138,140, 92,122, 89,131,214, 4, 49, 76, 72,115, 28,146, 2, 8, 46,167,179,137,103,117,205, 26, 2,163,229,
+ 13,165,180,190, 14,208,134,163,245,194, 56,144,114,227,139,105,117,200, 38,205,126, 54, 52,187, 16, 34, 9,230, 41,130, 80, 13,
+192, 52,120,251, 33,234,185, 90, 43, 33, 68, 86, 22, 70,136, 40,165,225,178,173, 56,208, 1,156, 34,194, 22,118,200,102,155, 24,
+214,106,193, 55, 32,172,121,179, 8, 74,203,125,222,245, 2, 78,161,242,240,128,121, 74, 16,129,117,246, 52,108, 51,246, 67,249,
+101,183,174, 23,172,231, 85, 5,108,235, 10,169,170, 80,189,185,187, 69,101,198,249,241, 17,235,227,201,170,193,235,177, 82, 87,
+148,154,226, 55,132,128, 92, 10,214, 13,248,226,155,215,120,249,213, 43, 60, 61, 60,160,150,140,152, 34,222,252,252, 11, 74,206,
+184,189, 61,226,227,195, 25, 79, 79, 39,112,140,168,173,225,178, 93,144,107,198,146,148, 53,127, 58, 61, 33,136, 89, 88,164,162,
+ 85,193, 42,181,199, 74,230,220, 48, 77, 19,152, 85,213,158,237,139,237,252,118,219,163,106,245, 69, 61, 93,141, 73, 5, 61,129,
+245, 75,232,168, 80, 30,226, 8,119, 66, 57,114,211, 81,239, 94, 68,213, 90,177,174, 27,136, 9,135,219, 3,210,164,170,243,135,
+247, 39,252,227,191,255,129,199,199, 19, 94,126,254, 25, 94,188,124,137,117, 45, 88,183,162, 81,132,185,216,222,153,240,238,237,
+ 59, 4,102,252,223,255,243,239,184,191, 63,226,252,240,128, 73,128,133, 8,168, 5,107,217, 16,166, 4, 4,198, 47, 63,191,197,
+251,167, 39,108,181,225,178,109,122, 16,198,136, 24, 35,164, 21,220,166,136, 91,102,156,214, 21, 79, 34,216,152,209, 2,129, 99,
+ 68,154,103,164, 41,225,230,230,136,151,175, 63,199,253,243,103, 88, 14, 11,238,159, 61,195,180,204,200, 37,163, 88,117, 62,196,
+108,210,225, 17,227,229,165,157,144,135, 16, 40,130, 57,153, 64,108, 16,184,254, 89, 17,140,222, 57, 55,251, 61,189, 82,223, 95,
+232,126, 49,244,209,154, 29, 32,220, 59,101,253,181,193,172, 46,163,179,236,179,194,110, 79,210,164, 46,234,148, 54,231, 70,251,
+175,119,202,218,232, 0,180,235, 7,237, 2, 54, 90,221, 21, 53, 59, 72, 7, 39, 93, 55, 24, 60,197,149,245,165, 22,228,188,161,
+228,172,233,135,110,225, 19, 50,107, 25,239,226, 90,197,246,199,232,251,127, 30,222, 65,219,197,177,230, 9,216,255,167,162, 89,
+ 87,214, 6,238,210,144,163, 54,245, 29,228, 45,167, 77,118,104,223,167,208,153,189,168, 9,144,157,205,167,131,210, 48, 46, 51,
+218, 5,219, 52,207,122,166, 65,172,243, 3, 86, 33, 35,246, 73,177, 70, 34,251,238,158, 76, 8,216,119,149, 86,120, 83, 45,144,
+156, 53, 29,177, 21, 13,236,104, 5,144,218, 17,187,170,139,208,247, 46,151,140, 92,183,190,154,168, 45,235,229,109,159, 77,109,
+122, 81, 52, 91, 97, 40,248,165, 42,140,171, 86, 13, 3,242,125,179, 33,128,133,131,229,103,200, 46,120, 72,139,165,218, 77,243,
+ 97, 28,127,246,107,107,107,253, 98,247, 34,213,125,243, 99,116,108, 34, 81, 43,186,252,217,237,161, 60, 93, 31,178, 75, 51, 23,
+190, 66, 86, 19,211, 85,110,129,119,191, 14, 75,246,130,108, 12, 94,248,106, 14,195,221,173,212, 12, 78, 72, 87, 99,246, 93,216,
+174, 21,113,210,187,119, 29,102, 82,199,107,143,160, 28,251,187, 48,247,169, 69, 8,172, 84, 83, 75, 52, 75, 81,157, 68,209, 48,
+172,125,122, 0,103, 91,212, 78,244,243, 44,134, 82,117,199, 30,246, 23,172,137,243,226, 20,251,116, 89,131,110, 26,242, 37,155,
+155, 65,119,246, 68,172,231, 89,105, 87,241,174,216,227, 94, 13,167,110,227, 51, 85,191, 7,111, 14,135,101,150,153, 16,131, 65,
+157,172,176, 36,227,147,164, 52, 33,197, 9, 8,220,127,253, 52,165, 30, 9,220,233,155,253, 50,186,246, 82, 68, 78,136, 13,122,
+112, 52,235, 32, 53, 57, 42,154,208,193, 67, 72, 4,141,204, 95, 30, 2,182,124, 65, 46,181,127, 89,181, 42,156, 36,134,104, 51,
+253,136,203,229,130,229,176, 32,197,132,211,195, 3, 68, 52,216,227,254,249, 51, 52,138,248,248,225, 35,202,186,234,126,196, 33,
+ 30,123,129,135,147,156,152,192, 8,184,228,130,121, 6,254,242,111,255,138, 86, 86,172,151, 19,152, 9,143,151, 13, 63,252,240,
+ 51,158,221,223, 65, 74,195,187,167, 39,220,163, 97,158, 3,214, 75, 70, 45, 21,135,227, 4, 74, 9,235,163,118,246,105,137,104,
+ 15,130, 82, 11, 40, 48,114,110,104,172, 35,167,178,163, 59,137,104, 39,227, 15, 92,237,254,211, 49, 71, 10,187,209, 43, 7, 70,
+ 76, 9,107, 51,192,128,141, 81, 7, 90,116, 39, 62, 49,129, 16,139, 62, 68, 13,130,198,130, 41, 69, 28, 14, 51,226,164, 7,194,
+195,175,143,248,240,246, 17, 83, 32, 60,123,249, 28,105, 89,240,244,152,251,161,202,205, 5, 38,140,211,233,130, 16, 18, 94,191,
+122,137,105, 78,168,151,130,155,116, 64, 61, 63,162,230, 13,185, 21,132, 41, 33, 78, 51,126,252,249,103,252,254,238, 17, 43, 53,
+108,155,170,249, 15,243,132,101,158,192, 16, 76,194,184,143,140,135,211, 9,143, 85,176, 50, 41,142, 51, 6,164,121, 65,136, 1,
+ 83,100,188,122,253, 10,175,190,250, 28, 28, 19, 14,199, 35,226,148,176,149,162, 47,124, 72,102,143, 26,246, 47,208, 24, 39, 59,
+ 26,146,119, 40,153,230, 30,117,232,225,171, 42, 88,119, 36,212, 49,134, 53,193,150,244,233,206,117,128, 72,223,111,187,229,202,
+187, 15, 25,220,125,177, 81,219, 30, 55,203,124,141, 50, 29,133,136,134,194, 48,239,178,175, 59, 60, 71,174,198,157,234, 51,114,
+187,154,217, 91,204,106,198, 24, 94,236, 97,133,178, 75, 56, 68,219,233,235,218,166,182, 60,126, 95,179, 13, 9,105,151, 47, 46,
+112,219,121,147,119, 40,109, 8,181,126,112, 57, 31,190,203, 17, 76, 91, 80,225, 59, 74, 45,230,157,164,133, 46,230,145,190, 34,
+217,181,145, 32,110, 61, 81,177,203, 5,236, 29, 32, 26, 2, 69, 47,112, 84,197, 28, 70,150,188,107, 78,204,162,216,108,255,204,
+ 52, 46, 35, 21,146,202,136,163,221, 21,107,158,212, 71,228,254, 92,173, 62,244,236, 9,136, 28, 64, 4,108,167,179, 29,174, 26,
+ 85, 73,136,230, 93,142, 72, 33,162,150,166, 4, 56, 79,186,226, 6, 80, 49,149,177,232, 97,106,170,116,215, 31,244,213,154,141,
+166,245,178, 54, 72,139,127,100,165,152, 98, 58,216,202,197,211, 5,205,253,225,184,105,119,122,200,181, 40,209,159,127,125,119,
+ 58, 98, 73, 69, 87,206,186,104,205, 44, 82,218, 49,170, 88,211, 71,193,216,173,130,134, 88,114, 55,246,234,246, 73, 31,225, 50,
+233,196,194,227,135, 71,135, 95, 45, 30,221, 26, 59,177, 29,121,115, 74,224, 96, 68,116, 3, 6,174, 17,206,190,195,183, 97,136,
+ 77, 54,148,210, 81,188, 0,198,112, 25,176,105,147,154,193,139, 8, 64, 49, 38, 1,251,101,104,227,245, 24, 8,129,109, 90, 96,
+232,214, 90,202,184, 67,100, 88, 15, 99, 12, 35,223,221,133,155, 0,162, 93,154, 34, 26,224,149,115, 69,222,114,183,190,134,228,
+147,176,102,202,125,250,167, 41,157, 17, 0, 80,125,245, 96, 93, 55, 39, 65,172, 22,130, 37, 5, 19, 77, 72, 97,175,177, 82,119,
+ 15, 27,219, 97,158,103,117,142,225,220,239,142, 24, 35,114, 46, 56,157,158,240, 74, 94, 90, 14,132, 54, 41,106,195,212,194, 52,
+196,136,196, 51, 98,110,197,212,182,187, 42,208, 21,192,208,170,180, 65, 5, 20,190,219,238,176, 10, 75,140,145, 90, 32,134,187,
+ 99, 27,233,125,252,248,132,187,103,154,208,182,173, 27,164, 54,188,248,252, 37,110,110,239,144,215, 51,158,158, 30,177,109,219,
+ 0, 47,248,180,117,208, 23,123, 39, 71, 32, 60,157,158,240,197, 55,175,240,249,235, 87, 88, 79, 43,106,222,192,203,132, 55, 63,
+126,143,211,233,140, 63,124,126,143, 31,127,121,135,237,124, 1, 79, 51, 90, 21,108,219, 6, 2,227,112,184,193,122, 94, 81,106,
+193,237,205, 1,113, 74, 26,103, 26, 25, 18, 2,182, 92, 17,142, 73, 69,123, 80, 85,107,148,134, 41,204, 32,206, 38,182, 40,246,
+130, 74,183, 3,105,181,101,221,132, 87,148, 83, 64, 43,140,104,159,105,147, 48, 60,157, 96,128, 90,183,130,232,136, 20,168, 77,
+192,161, 97, 10, 1,243,156,112, 88, 18,100, 43,120,247,118,195,246,177, 98, 90, 24,183,207,238, 16,166,132,188,105, 21, 29, 2,
+148, 94, 71, 0,167,132, 45, 23, 4, 8,158,223, 29, 48,217,131,113,115, 56,162,254,246, 59,242,233,140,181,173, 72,203,130,229,
+120,131, 95,222,188,193,207,111, 62, 32,115, 69,206,250,217,207,115,194, 60,205,106, 59,202, 5,207,227,132,135,243,138, 83, 41,
+216,162, 9,182, 34, 99,158, 15,152,150, 25,204,130,175,190,124,133, 47,255,244, 45,230,192, 72,135, 25, 33, 37,228,214, 6,179,
+217,129, 24,210,186, 64,112,207,133,110,125,151,214,118, 59, 85, 54,134, 57,131, 17,199,248,154,116,199,214,175, 23, 27,135,246,
+ 87,108,135,121, 21, 25, 21, 44,217, 14, 28,206,164,111, 35, 10,245,211,131,103,223,165,127,250,207,250,225,212, 6,253, 11,181,
+129, 2,153, 90,223,247,217,218,185,168,213, 73,250,248,216,119, 94, 20,120, 12, 51,201,255,191,142,152,229,161,122, 39,205, 74,
+102,183, 61, 18, 35,164,104, 22, 38, 86, 3,205,206, 50,197,108,138,124,219,221,161,175,125,120,228,115,219, 13,223,204,231, 75,
+163,125, 86,190, 55,121,183,133, 29,119,222, 60,248, 14,158,177, 96, 13, 37,189,169,222,164,143, 87,125,202, 6,165,105,137,137,
+158,132, 91, 31,199,235,247, 25,186,199, 30,187,142,189,214,134,148,162,117, 92, 99,133, 98,141,143,174, 61, 40, 2,148,205,215,
+ 31,245, 98,161, 10, 10,113, 20, 21,118,233, 11, 11,216, 18, 35,137, 53,145,144, 17, 16,172, 91,175,101, 32, 71,165,173,170,134,
+ 15, 24, 60,123, 23,180,118, 79,178,141,198,113,141, 88,239, 26,164, 90,213, 98,215,244, 66, 31, 23, 53,235,102,201,166,131, 42,
+156,211, 11, 59, 24, 36,167,118, 46,127,181,159, 95,221, 19,216, 55, 58, 67,105, 54,158,183, 62, 73, 25,186, 5,236,146,224,135,
+ 88,115,156,171,157,179,190,203, 60,111,150, 51, 47,109,248,116,154,122,110,205,206,182, 43,136,253,207,223, 21,179,174, 8, 25,
+213, 10,250,180, 83,113,193,138,176,245,224,154, 43,251, 92,247,172,155,198, 5, 10,242,146,214,208,136,112,105, 21, 91, 46,170,
+ 49,161, 1,166,209,204, 12, 49,154, 13,247,162,190,245, 0,157, 1,250, 42,165, 96, 57, 44,154,210,215,154,197,100, 87,112, 99,
+164,152,250, 4, 46,176,224,124,190,216,100, 10, 96,210,105, 88, 21, 85,207, 95,119,198,246, 14,120,113,196,232,132,185,200, 46,
+ 52, 68, 15,104, 18,229,137, 35, 69,182,232, 92,189, 51,107, 19,132,164,246, 53,159, 18, 71, 63, 63,217,186,239,156,241,248,225,
+ 1,248, 51,174,154,138,214, 44, 85,175, 5,101,173,112, 5, 55, 3,186,244,135,195,126,113,112,209,129,113,156,149,137,172, 66,
+129,209,101, 8, 66, 74,125,247, 73, 76, 72, 41,161, 86,193,251,247,239, 16, 99,196, 90, 86, 52,105, 40,107,198,243,103,247, 8,
+199,128,167,243, 5,151,135, 71,148, 42, 35,113,113,183,183,236,187, 32, 64,171,171,214, 16,166,132, 47,191,249, 70,131, 20,182,
+ 13, 32,194,118, 94,241,195, 15,191,224,238,217, 13, 46,219,134,199,119, 79,106, 45,136, 1, 37, 87, 60,157, 51, 98,140,152, 98,
+196,229,124, 65, 94, 11,136, 3, 82, 10, 56, 78, 9,105,153,148,193, 91, 27,242,249,210,199, 64,217, 94, 74, 88,148,163, 38,180,
+237,119, 87,170,162, 84,117,226,158,245, 62, 97, 58, 44,136, 41,233,168, 40, 70, 85, 47,146,199, 28,180,157,152, 68, 44,160, 69,
+109, 66, 33, 48,166, 41, 32, 6,194,249,105,197,239,191, 61,224,233,221,134,120,100,220,220,223,128,195,164, 49,135,202,213, 67,
+ 46,103, 84,169,136,179, 98,107, 67,173, 72,196, 8,243,132,195, 97,198,171,207, 94,160,126,120,196,211,227, 25,235,118, 70, 72,
+ 1, 55, 47,110,240,203,111,191,225,135,159,223,160, 82,197,165,168, 24,114,142, 17,199,105,198,148, 2, 40,103,220,134,132, 83,
+221,240,176, 93,112,178,106,154, 66,196, 97, 57,224,120,179, 96,158, 19,190,120,245, 10, 95,124,251,149,170,125,205, 78,148, 91,
+233,201, 98,212, 19,134,220,246,101, 69, 33,235,133, 84,219, 14, 68,209, 2, 74,110,168,185, 2, 98,226, 20, 11, 35,113, 90,152,
+187, 11, 66, 24, 10,112,135,140, 18, 15,225,151, 39,114, 9,174,209,176,218,205,140, 29,158,194,100,106,255, 55,246,153,212, 87,
+123,244, 33,198, 75, 41,234,100, 10,130,236,161, 43,125,140,183, 11,206,216, 17, 8,117, 92,187,239, 88,124, 36,238, 30, 89, 64,
+ 26,117,252,104,103,163,179, 9,254, 68,121, 5,228, 83, 9,242, 76, 0, 71,115,169, 37, 9,187, 80,145,145,247, 29,186, 66, 93,
+122,176,138, 71,128,214, 49,209,112,190,184,103,194,211, 14, 10,202,123, 65,209, 78,231,224, 93,243,238,239,231, 69,145, 19,239,
+252, 14,148, 54, 62,215, 43, 56,138,217,240,124,239,152,156, 12,230,216, 81,242,245, 91,236, 7,164, 22, 64,220,219, 98, 45,142,
+212,121, 35,168,144, 92, 84,195, 83, 11, 2, 8, 85, 10, 90, 46, 64,105,144, 82, 45,126, 84, 47, 96,130,170,224, 69, 42,196,119,
+230,173, 1, 85,167, 11,254,125,130, 90,207,247,214,207,143,175, 68,122,176,213,215,240,221, 27, 90, 91,148, 41, 15,169,186, 2,
+ 48, 15, 30, 25,168,169,138,185, 24,140,247,176, 31, 89,107, 1, 22,122, 78,132,238,192, 45,105,205, 59,205,158, 43,128, 46,242,
+218,219,223,246,251,214,235, 21,214,126, 45,228,218,136,218, 87, 55, 87, 65,105,192,213,238,219,167, 38,154,176, 73, 87,191, 54,
+ 18,129, 59,216,232,138, 14,172, 66, 65,249, 84,172, 39,182, 81, 24,108,148,125,151,175,123,228,134,199, 39, 93, 15,187, 69,140,
+ 13,208,165,241, 24,193, 70,166, 98, 25, 2,106,117,132,243, 33, 0,108, 89, 27, 8, 7,180, 52,115, 23, 72, 19,112, 98, 68,203,
+ 66, 15, 70,137, 41, 57,107, 49, 64, 58,213, 9,129, 81,106, 69, 17, 30, 25, 19, 87, 89, 18,131, 1,224,246,229,106, 77, 48, 59,
+ 36,167,170,198, 63, 26,223, 61,250,218,204,222,239,101, 57, 96, 89, 22, 76,211,108,171, 64,237,208,153, 96, 46, 44, 70, 46, 21,
+101, 83,210,165, 59, 39,116,176,204, 86, 92,234, 52, 44, 94, 74, 67, 41, 67, 84,209, 59, 22,210,142,160, 52, 69,180,198, 16,176,
+149,140, 32,109,160, 41,161,190,207,188,106, 37, 28, 2, 97, 94,102,156, 63,126,192,186, 22,220,222, 29,177,174, 5,185, 84,112,
+138,184,123,118, 7,146,128,243,199,143, 56, 63,124,212,234,213, 70,133, 46,220,184, 74,218, 34,177,240, 2,193,139,151,159,225,
+197,231,159,161,228, 77,125,174, 68,248,229,231, 55, 88, 79, 23,188,248,242, 11,188,123,251, 59,182,173, 96, 54, 59, 76,206, 5,
+ 28,128,101,153,212,184,143,134,105, 94,208,214, 13,145, 9,203,205,130,105,153, 77, 77, 93, 81,214,162,149,157,219, 52, 88,103,
+ 69,185, 84,148, 98, 7, 82,147,142,254, 99,214,159, 33,128, 81,108, 39, 59, 77, 19,166,101,193,214, 46, 8,107, 64, 16, 61,130,
+ 26,177,117, 65,214,225, 51, 89,228, 36,161,133, 6, 4, 45, 90, 2, 69, 92,206, 25,231, 83,133, 84,194,124,191, 96, 94,110, 85,
+ 61, 91, 20, 6,195,108,241,122, 33, 96,185, 81,178,220,227,187,247,184,156, 47,184,191,187,195,221,237, 45,190,122,249, 18,143,
+191,189,195,249,227, 71, 60,124,252,136,229,176,224,238,249, 11,252,250,235, 91,252,240,211, 27, 84,142,216,138, 10,134,230, 41,
+225, 48, 77, 56,164, 4, 42, 77,115, 0,164,225,105,203, 88, 3,219, 4, 34, 98, 58, 28, 48, 31, 14, 88,150, 25,135,155, 3,158,
+127,254, 2,204,193,132,147,214,161, 75,195, 68, 17,125, 21,103, 47,113,171,202,212,223,143,180,225,209,172,230,229,111, 61,205,
+194,210,187, 58,132,134, 92,154,211, 21,237, 3,187, 46,125, 71, 62,238, 87,238,251, 45,103, 33,137,119,235, 14, 93,129,238, 89,
+251, 52,200, 46,120,247,218,250, 24,111,191,111,220,115,234,251, 10,128, 53, 15,221,185,244,251,168, 93,146,157,145,206,119,250,
+172,199, 12,219,222, 85,107, 72,157,242,216,232, 0, 66,101,248, 89,201, 98, 92, 45,122,180,185,253, 13,176,139,162,117,103,128,
+126,102,230, 79,234, 93, 63,174,216,225,100,120, 90, 31,181, 75, 87,149, 19, 80, 9, 69,246,159,177,194,110,244, 48,149,221, 37,
+189, 23, 47,238,162,177,165,237, 16,168,131,176, 5, 98,115, 21,168, 8, 13,182,210,114,117,184,143,235, 67, 48, 45,135,211,199,
+236,189,103,123, 23,251,232,189, 40, 35, 91,189,197,220, 85,227,181, 86, 52,163,163, 81, 19, 48,151,221, 34, 65,212,166,217,209,
+192,100,107,142, 33,200, 10,190, 31, 30,161,200,250,231, 85,181,169,181,214, 52,208, 37, 4, 27,213, 82,255,140,155, 99,119,253,
+ 96,165,206, 51,238, 41,112, 62, 98,214,144, 75,233, 5, 83, 19,117,213,120,226, 29, 59,234,212,139, 41,227,243, 59,105,111,223,
+ 25, 19, 26,164,238, 34, 68,119, 95, 12, 15,181,163,173, 39,228,234, 98,239,153, 26, 93, 16,167,214, 90, 71, 8,107,182,184,173,
+ 2,140,161, 31, 2,117,206, 60, 80, 13,166,229,151,179,185,181, 67,210,252,250,254,222,232,223, 59,133,128,205,178, 11,104,247,
+ 57,215, 42, 87, 49,168, 28,149, 58, 88,106, 70, 35,193,150, 11,242, 38,125, 42,234,107,181, 64,132,200, 90,208, 69,230, 62,146,
+111, 6, 67,106,187,223,179, 20,125, 39, 98, 8,104, 85,159, 21,207, 82,143, 41, 98, 58,204, 42,172,139, 17,235, 89, 59, 95,101,
+172, 19,226, 20, 33, 80, 56,151, 59, 3, 6, 3, 64, 58,127,159, 92, 51,149, 24,220,180, 64,136, 33,234, 68,134,199,119,144, 66,
+ 64, 12,186, 18, 82, 62,129,174, 18,167, 20, 49,207, 19, 82,138, 40, 77,179, 8, 66, 8, 54,106,215, 38,164,228,205, 62,163,169,
+187, 63,138, 61, 63,129, 2,230,105, 82,167, 85, 46,234,191,228, 30,250, 80,205, 39, 25,117,196, 71,106,199,106,214,209,112,112,
+ 64,130, 62,112, 20,116,151, 92,136, 84, 13,205,140,199,199, 51,150,105,194,113, 62,224,231,223,222, 33, 23,193,237,253, 29, 62,
+255,252, 57,106,206, 56,157,206, 88, 79,167, 94,193,195,189,160, 46, 74,234, 98, 28, 5,160, 76,211,132,249,120, 64,156,103,151,
+ 8,224,252,120,198,207,223,255,138,219,227, 1,185, 20, 92, 78, 39, 80, 36, 36, 11,204,216,242,134,105, 82,230,238,227,211, 3,
+ 14,135,103,186,234, 44,250, 34, 56,206,180,214,128,243,233,140,162, 89,107,136, 83, 66, 89, 51,152, 68,125,176,107, 81,207,178,
+200, 63, 97, 28,117,220,107, 49,146, 28, 49,207, 9,233,152, 16,114, 70,156,162, 21, 68,150, 71,189,123,200,163, 52, 4, 12,136,
+ 3,235, 41,143,245, 92,112, 57,101,240, 20, 49,223,207,152,166,131,237, 75,204, 95,217, 42,164, 2,105, 90,112,115,119,196,225,
+102,193,251, 55,239,241,254,237, 7, 28, 14, 11, 94,190,184,199, 31,190,248, 18,167,119,239,112,122,255, 30,143, 31,222, 67, 2,
+240,226,139,207,240,254,225, 35,190,251,219,143,144, 56, 97,171, 21, 91,221, 48, 69,214, 11,253,112, 0, 89,218, 81, 34,193,135,
+203,138, 26, 84,125, 61,165,132, 52, 77,224, 20,112, 56,204, 26,215,122,123,131,105,158, 16, 99, 64, 92,230,190, 58, 9, 28,187,
+104,133,105,196,210,178,231, 9, 88,194, 24,172,128, 3, 44,169, 11,142,145, 52,145,161,235,122,237,162, 96, 3,191,184,192, 78,
+200,226, 80,157, 58,231, 74,117, 47, 70, 3,237, 56,251,130, 98,240, 15, 14, 42, 64,171,173,129,164,218,158,219,121,228,225, 42,
+ 3, 29,144,238,151,118,241,146,170,178,119, 54, 45, 26, 86,185,209,137,154,138,159, 26, 40, 72, 23,210, 41,116, 38, 14,114,152,
+ 91,177,236,231, 80, 10,155,245,109,210,192, 98,162,182,160,201, 98, 38,167,233, 41, 81,221, 74,135,189, 61,167, 89,241,178,219,
+149, 90,245,238,118, 57,111,238,106,109,200,101,211, 73,139, 11,171,124,207, 23, 24, 84, 70, 71,214,204,134, 37,159,240,201,135,
+ 63, 95,139,146,218,196,176,151,250,157, 48, 19, 40,144, 17,225,176,179,204,237, 83,203,164,255,103,191, 28,187, 0, 46,132, 94,
+ 80,140,131, 51, 24,122, 51,118, 68, 45, 51, 35, 82,236,212, 48,183, 3,138,184, 50,157, 76, 0,172,197, 28, 74,213,100, 45, 10,
+218,233, 89,162, 91, 67,237, 65, 33, 26,229,107, 97, 84,117, 36,162,233,223,189,238,166,139, 90,180,214,106,118,224, 96,226, 53,
+ 49,218,157, 23, 57,181, 1, 84, 13, 75,218, 76,243, 64, 29,117,204, 96, 29,217,119,238,188,244, 38,107, 8, 33,185,115, 20, 70,
+130,159,186, 28,212, 10, 70,125, 4,220,187,125, 23,195,237, 73,115, 54,154,222, 51,106,123, 29,226, 43, 38,167,100,217, 14,188,
+250,127,183,189,186,230, 60, 40,132,136, 58,201,157,118,110,133,193,103,208,232, 90,163,251,245, 2, 72,208,106,209,188, 17,225,
+126, 7, 4,203, 50, 47, 77,167, 37,193,130,130,106,177,207, 41,114,127,119, 82,136,136,193,138,187,160,103, 78,173,122, 94,182,
+218, 52, 42,218, 46,117,157, 0, 41,135,164,212,138, 20,212,194, 54,207, 19, 16, 4, 40, 64,152,168,251,223,131, 17, 9,167, 20,
+209, 74, 67,169,178, 19,215, 93,163, 50,216, 69,137, 52,226,144, 21,133,158,172,197,176,103,135,217, 70,239,218,189,115, 8, 61,
+150,149, 99, 80,134, 61, 49, 10,106, 23, 5, 42, 1,207,178, 68, 90, 5, 73, 49,174, 3, 95, 77, 35, 57, 38, 76,211, 13,138, 84,
+196,146,115, 23,180, 88,205,165,169, 79,174, 70,214,229, 45,182,156,193,104, 8, 8, 40,100,202, 73,123, 48,244,160, 72,152,162,
+142,130, 63,190,127,192,225,230, 8, 68, 29, 25, 68, 0, 55, 47,110, 17,150, 5,173, 49, 78, 15, 15, 56,157,205,118,230, 35,160,
+110,221, 29,190,187, 24, 35,230, 41, 64,234,132,229,230,160,104,199,192,216,106,197,111,191,252,138,199,143,239,113,243,249, 87,
+184, 60, 61, 0,141,145, 44,209,108, 45,218, 93,164, 20,177,230,140,181,100,220, 48,237,118,174, 4, 9, 19,150,227, 17,231,167,
+ 13,231,167, 51,106, 4,210,178, 32, 36,128,182,172,214, 5, 85, 83,217,129, 61,230,236,100,163, 19,167, 7,185,215, 48, 78,201,
+ 40,108,161,251,139,137, 73, 35, 85, 93, 32,230, 98, 44, 31, 69, 66,119,106,235, 57,163, 93, 42,226, 50, 99, 62, 44,136,105,234,
+ 41, 72, 33,250,193, 10, 44,243,130,227,241,128,155,219, 5, 31,127,255,128,223,126,250, 5,203,225,128,175,191,124,133,175,191,
+122,141,199,223,222,226,241,221,123,156, 30,158, 80,208,240,252,139,215,120,220,206,248,219,247,191,160,133,136, 34,130, 82, 50,
+ 34, 51,150, 52,225,176,204,122,248, 74,195, 18, 3, 30,214, 11,178,123, 30, 57,128, 99,212,240,156,195,130,195,237, 65,125,144,
+243,140, 56, 39,164,121,214,184, 78,216,126,182, 41,114,214, 15, 35,183,238,121,186, 90,171,130,198,181, 35, 45, 71, 90,151, 88,
+113,227, 45, 55, 15, 30,154, 83,202,100,140,155,121, 96,204,251,190, 61,152,160, 17, 77,254, 73,224, 54, 14, 87,238, 48, 15,146,
+161, 24, 38,251,254,250,116,128,105,135,243, 20, 99,177,219, 72,221,252,245, 94,112, 80,208, 24,196, 79,149,176, 20,163,193, 72,
+ 6,191, 97,156,163,158,208, 85,245,229,102,199,138, 74,223,211,142,221, 5, 13,150,180,197,196,182,166,194, 72,230, 79, 24,226,
+230, 79, 23, 23,197,181,253,248,212, 63, 76,139,135, 69, 86,152, 83, 43,230, 94, 25,214,249,190, 17,187, 26,227,234,142, 79, 47,
+ 3,234,217,216,110, 63,234,251, 84,247,188,251,247,105, 42, 20, 29,177,143, 14,180,251,178, 69, 16,253,123,180,194,153,254, 23,
+207, 53, 58,120, 75, 11, 5, 87,250, 91,236, 74, 47, 44,200,254, 28,229, 72,232,247, 25,231, 25,221,129,232, 16, 30, 1, 66,180,
+255,119,136,182,247, 28, 65, 86,204, 4, 50,174, 54,122, 34,158,190, 59,212,253,210, 86,104,214,214, 15,176,189, 99,192,131,116,
+ 52, 94, 19, 54, 2,166, 1,193, 38, 21, 34, 59, 90,251, 90,233,104,252,244,125,103, 93,180, 80,188, 10,104, 17, 15, 56,218,143,
+204,109,172,221,157, 9, 3,141,170, 29,125, 27, 55, 80,195, 88, 17, 57,233, 91, 6,147,189,135,202,216,185,233, 5,184,152,224,
+ 76, 76, 47, 34, 68,125,133,235,133, 16,197,221, 37,239,230, 6,222,191, 39,227, 17,171, 93, 52, 75, 88,119, 83,135, 20, 76, 55,
+208,100,204,139, 76, 63,147, 98,180, 2, 78,250,119, 15,201,182,127, 55,111,127,147, 46,176,109,187,176, 1,105, 90, 56,207,203,
+108,132, 79,203, 59,175,213,102, 32,212,241,196,181, 89, 33,213,234,245, 20,103,183,137, 34,179,139,162,234,179,155,194,220, 65,
+ 88,108, 43, 20,134,130,197,180, 33,208,252,245, 42,202,153,143, 41,128, 67,210, 60, 10, 17, 3,111,185,107, 71,159,155, 42, 5,
+181, 65,241,228, 24, 32,158,177,122, 84,216, 89,220,182, 13,213,237, 19,221,114,160,202,214,196, 1, 8,176,177,123,196,226,217,
+211,236,222, 91,181,118,132, 24, 32,102,152, 71,171,120,255,240,132,151, 47,158, 35, 48, 33,215,140, 16, 25, 95,188,252, 66,199,
+200,149,240,241,221, 71,148,186, 97, 50, 81,140,179,133,189,102, 12, 32,160, 54, 68, 98, 76,105, 66,109, 13,203,205, 81,171,150,
+200,120,250,240, 30,111,190,251, 30,211, 28, 64,129,240,112,186,224, 64,132,196,186,151,201,185,130, 99,128, 24,106, 53,236, 52,
+189,243, 20,177,214,128,138, 11,106, 46, 40,181, 98,173, 21,136, 42,206, 8, 28, 80, 75, 65, 14,140, 24,210,136, 60,172,186,183,
+209,195,138,181, 90,178, 42, 45, 48, 35,164,128,120, 51,129, 26, 33,146,239,126,165, 91, 61, 60,199,184,143,123, 91,211,207, 29,
+130,237, 2, 32, 50,230,195,130,180, 36, 16, 71,212, 18, 52,178, 47,160,251,143,231,229,128,233,118,193,243, 23,183,120,120,251,
+ 27,126,248,251, 79, 72, 49,224,207,127,252, 26,223,124,249, 21, 30,223, 62,224,225,237, 91,156,222, 63, 96, 45, 43, 94,125,253,
+ 53, 54,102,252,191,255,247, 29,114,141, 40, 66,200, 69,215, 15, 83, 76,184,155, 14,136,129,209,164,224, 48, 77,120,186,104,144,
+ 11,197,164, 20,167, 73,215, 19,105, 74,184,187,187, 3,197,128,152, 18,142,119,183,152,142, 71,240, 52,171, 47, 25,128, 20, 25,
+ 7, 17,128, 98, 66, 28,233,202,102, 27,111, 82, 83, 18,157,240, 96, 19,128, 59,158, 51,198, 48, 64, 13,204,182, 63,166, 78, 38,
+243,180, 40,120, 55,181,139,168,148, 42, 59, 70,247,232,156, 73, 70, 62, 14, 3, 16, 14,138,102, 13,193,239, 57, 85,252, 6,197,
+141,106,103, 80, 77, 53,223,174,176,153,173,234,190,212,119,154, 21, 98,107,145,216, 71,237,193, 19,219,200,125,232,102,213,106,
+ 74,162, 11, 59,250, 92,136, 1, 20, 20, 82,209, 74, 53,229,179, 97, 67, 91,129, 52,237,136,200,172,127, 12,178,201, 17, 84, 56,
+103, 72, 86,118, 76, 40, 73, 15, 76,161,238,151,180,203,167,169, 0,203, 53,249, 76, 30, 12, 99, 73, 79,212,239,107,140,220,182,
+182,235, 74, 76,217, 47, 29, 1,105,214, 51, 61,188, 32, 21, 26, 71,104,205,129, 24, 74, 25,187,108,120, 25,121,211,186, 87, 24,
+ 81,165,159,162,112, 7,230,180, 89,126, 55,117,244,108,237, 9,101, 26, 60,235,218, 31,142,161,219, 23,115,182,238, 47, 37,245,
+232,187,248, 77,188, 32,242,184, 76, 79, 53,211,140,234,152, 8, 44,220,147,190,200,166, 21,128,244,233,129,127,158, 99,165, 42,
+221,186, 8,195,198,238, 3, 80, 68,154,178,223,131,185,189, 13, 53,123,173,163, 30,235, 34, 31,167,147, 71,185, 82,235,207,163,
+ 79, 9,125,167,203, 38,100, 35,218, 87,120, 24, 10,239, 98,127, 14,201, 21, 24,199,181, 46,253,215,182, 81,220,117, 61,160, 12,
+ 40, 88,179, 85,131,199, 65, 51,116,239, 92,199, 28, 65,233,115,196, 29, 28, 83, 76, 20, 75, 8,157,219,175, 59,102,203, 87,104,
+ 13, 66,213,126,126,117, 12, 85,115,142, 56, 65, 48,144,234, 9,246, 86,205, 72,218,241,250,109, 21, 72,113,213,167,156,113, 94,
+ 21, 72, 70,162,231, 70,173, 43, 82,154,193, 70,138,243, 4, 72, 10,192,178,204,104,210, 84, 44, 7, 66, 46,254,198,219,100,143,
+ 8,155,197,103,251,251, 48,156, 30,220, 19,247,186,109,185, 53, 48, 53, 4,182, 46,221, 4,166, 45,171,120, 52, 37,107, 64, 44,
+183,161, 65,144,162,250,219,131,185,133,132, 24,136, 9, 21,132,104,250, 48, 45,136,245,210,102, 14,154, 24, 72,140, 64,186, 78,
+ 10,162, 77,108,190, 92, 16,115, 45, 35,105,137, 20,165,231, 22,156, 37,205,200,109,195,150, 51, 38,195, 51, 22,114, 8, 22, 43,
+199,153, 0, 14, 19,230, 24, 48, 45, 51,206,219,134, 42, 27, 14,135, 25, 37,107, 69, 28,231, 5,183,183, 71, 44,145,241,225,225,
+ 9, 31, 30, 63,104,142,237,126, 66,208,170,118, 14, 58,107, 64, 36,210,139,229,144,144, 46, 23, 28, 22, 29,191,183,188,225,237,
+ 63,126,193,195,233, 9,247,175, 62,199,227,227, 3,182,203, 25, 55, 83, 66,108,140, 86, 11, 96,118,130, 92, 50,168, 22, 28, 38,
+237, 6, 99, 12, 72,203,132,144,207,192,198,248,240,254, 1,155, 48,230,227,140, 44,222,181, 0,144, 12,105, 12,132,180,131, 53,
+216,120,151,199, 67, 69, 54, 94, 39, 14,136, 49, 34,197,197, 98, 98,181,203,149,102,178, 93,177,174,159,204, 30,199, 77, 69,111,
+ 34, 96,139,187, 13,199, 5,113, 94, 64, 20,141,105,157, 77,180, 97,202,200,101,198,225, 56,227,197,109,196,249,227, 71,252,253,
+ 63,126,134, 72,195, 95,254,245, 47,248,230,171, 87, 56, 63, 62,226,225,247,183, 56, 61, 60,226,148, 47,248,236,243,151,168, 9,
+248,143,255,248, 79,172,155, 34, 77, 75,217, 16,152, 48,133,136,155,121,194,178, 36,180, 90, 49,135,136,117,219,240, 80, 50,132,
+ 24,115, 74,224,121, 70, 12, 1, 83, 0,158, 63,127,129,120, 88,176,173, 27, 62,123,118,139,195,113, 54,139,149,236,124,247,205,
+ 2,146,162,190, 20,141,108,119, 43,125, 87,217, 88, 16,144,140, 76,101,157,233,174,221,100,142, 29, 61, 67,246, 12, 32,232, 14,
+182,149, 58, 2, 47, 48,160, 40,204,174, 6, 85, 6,248, 62,161,170, 83,210,122,248,135,118, 84,145, 89,153,222,158,105,224, 54,
+ 20,139,127,116,200,135,239, 81,181,219,110, 64,136, 26, 43, 26,147,161, 79,205,147,108, 99, 93, 54,144,135, 66, 88,184, 11,227,
+252,103, 8,213, 56,112,100,104, 86,231,166, 27, 30, 54,216,206, 91,209,149,163,209,238, 23,137,104, 33, 72, 49,244, 67,197,247,
+217,166, 13, 82,139,101,231,231,123,206,188,237,114,253,239,101, 42,246,144,162, 42,155, 75,247, 91,218,129,183, 11,103,114, 63,
+ 52, 90, 39,203, 57,255,190,106, 48,243, 46,212, 6,215,188,114,208, 46,123,222,186, 21, 17, 8, 34,216,104, 91, 93,128,183,235,
+111,187,239,191,162,251,249, 41, 66,245, 29, 32, 35, 2,234,251, 8,138, 74,226, 34, 77,237,227,104, 63, 75, 8, 6,172,105, 38,
+162,227,193,154,183,239, 94,215, 58,134,216, 4,208,178,146,230, 16,175, 65, 68,210,174, 11, 59,189, 44, 91,207, 62,191,102,173,
+239,130, 88,108,212,222,120,156,175,161,237,112,169,181,234,119, 97,158, 58,247,222, 55, 43, 90,221,226,213, 90,181, 70,106,124,
+ 76,173,209,206, 81,128, 46, 46,116,134,122,221,197,174, 58,147, 30, 77,140, 55,194,134, 35,214,113,180, 23,109, 30,216,130, 62,
+117, 98,195,146,198,225, 82, 18,178, 75,244,122, 82,235, 54, 68,246, 81, 15, 25, 76, 69,160, 65, 59,141,174,163,129, 77, 44, 40,
+238,182,106,210, 67,148, 80, 27,216,132,178, 49,250,132, 40, 43, 0,166, 89, 31,205,102,243,100, 70,224,136,104,211,181,203,150,
+ 81, 1,204, 4, 84,169,200,165,129, 36,140,253,191, 21, 82, 69,128,155,121,193, 60,235,165, 30, 66, 80,152, 90,173, 61, 53,146,
+195,100,234,242,114,101, 47,220, 79,143,156,110, 39,213, 96,105, 36,224,160, 80, 46, 45, 88, 9,145, 68,215, 9,139,169,226, 27,
+ 84, 95, 99, 43,161, 24, 35, 98, 76, 72, 41,129, 98, 64, 48,189, 75, 45,205, 50, 17, 10, 2, 17,110,166, 3,164,149,254,156, 69,
+102, 43, 75,109,250, 11, 70,205, 5, 92, 74,233,208, 1,199,178,122, 0, 64,138, 17, 37, 23, 85, 53,183,106, 99, 18,116,143,160,
+ 86,196, 6, 35,153, 34, 82,140, 56, 61,157, 64,204, 72, 41,160,214,134, 72,192,237,253, 17,105,158, 65, 33,225,227,199,247, 40,
+231, 51,144,102,179, 88,140, 17, 82,109, 21, 82,138,170,184, 67, 64,156, 34, 32,192,124,115,139,180,204, 0, 51,126,255,233, 55,
+188,249,251,247,152,142, 11, 98, 10,120, 56, 61,170,240,128, 24,213, 90,177,101, 89, 64, 68,216,114,214,131, 78,244,241,156,231,
+ 4, 78,218,193, 83, 21,252,250,235, 91, 92,107,129,196,165, 0, 0, 32, 0, 73, 68, 65, 84,114, 70,156,102, 68,138, 40,155, 6,
+208, 48, 71,165, 44,237,132, 64, 61, 23,152, 25, 81, 29,175,195, 43,206,100,118, 35,233, 80, 6, 31, 59,145,120,174,207,128,168,
+ 52,239,160,154,118,173,233,184, 96,138, 11, 4, 19, 74, 83, 33, 19,219,232, 55,196,136,101,154,112,115,156,113,115, 51,227,116,
+190,224,239,255,253, 3,206,219, 5,127,253,243,183,248,211, 31,191,197,211,186,225,227,219,247,120,122,120, 68,121, 58,225,217,
+171,207, 48,221, 31,240,223,255,245, 29,158, 30, 10, 16, 2,214,124,177,151, 36,225,144, 34,150,121,209,203,135,117,116,250,148,
+ 87,173, 26,231, 9,241,176, 32, 26, 68,232,249,203, 47,240,252,213,103,200,151,134,251,231,247,120,241,217, 75,101,113,123,242,
+ 81, 41, 40,101,179, 46, 66,201,253,110,229,169,230,247,173, 54, 46, 14, 28,109,245,224,163,197,112,229, 13,223,251,105, 83, 74,
+152,166, 5,137,146,205,110,248,147,151,201, 21,242,123,208, 12, 13,178, 23,112,181, 87,239, 35,108,178, 9,139,237, 22, 9,154,
+ 93,172, 40, 85, 40,167,128, 9, 48,197, 53, 55,221,175,161,169, 75,130,153, 16, 98, 2,219,154, 37,116,255,181,141,126,237,191,
+215, 90, 59,192,165, 86, 69,202,170,154,149,255, 41, 30,179,153,101,202,250,131,254,119,245,203,251,106,242,208, 87, 63,122,209,
+ 42, 36, 69,174,126, 63,241, 21, 3, 73, 63,232,101, 23, 89,171,158,120,189,212,187, 77,206, 62, 31, 88, 40,147,240, 46, 27,222,
+236, 78, 16,182,253, 40, 58,130,214,187,226,253,159,239,227, 87, 49,172,166,119,175,123, 93,138,167,145, 48,209,142,245, 46, 87,
+164, 62,218,229,219,247,252,119,203, 85,247,160, 31,117,161,112,239, 92,155, 21,218, 28,212,137, 51,207, 75, 15, 1,106,194, 22,
+ 20,227,209,183,165,131,111,164,212,142,166, 29, 33, 56, 59,177,191, 23, 39, 50,252,247,212, 4, 82, 85, 81,143,118,253, 29,184,
+ 0, 16, 70,155,140, 59, 45,130,243, 64, 58, 68,201,178, 26, 26, 10, 64, 5, 44,138,176,133,113,250,149, 88,233,194,185,177,184,
+237,159, 7, 93, 91,172,252, 95,253,153,105, 58,234, 21,155,176, 40,247, 95,245, 27,254,185,245, 24,217, 54,240,181, 3,174, 72,
+125, 71, 46,173, 90, 97, 38,154, 93, 1, 66, 4, 43,145,207,181, 18,254,188,209,238, 59,228,157, 6,131,232,170, 64,218,255,187,
+213, 97,215, 59, 76, 19,102, 11, 28, 99, 18,204,129, 53, 79,220, 86, 44,238, 44, 82, 29,136, 42,193, 47,167,162,239,170,213,253,
+181, 20,163, 2, 74, 71,146,131, 26, 90,174, 72,243,100, 26, 8, 29,129,151,173,154, 93,123,172,187,244, 82,199,152, 98,203, 39,
+148, 73, 47,182, 2,141,100,198, 24,245,130,118,246, 97, 21, 16, 85,204,209,245, 62,176, 50, 73,211, 79,167,168,174, 26, 29,183,
+ 19, 82,156, 65, 8,102, 85,211,213, 72, 21, 1, 79,170, 35,209,252,119, 35, 8,152, 43, 38,132,128,117, 91, 81, 75, 65,244,238,
+199,247,195,186,207, 84,165, 99, 49,229, 38,193,194,228,125, 7, 70,116, 5,133, 16, 2,166,105, 66, 8,132,117,205, 54,202,208,
+ 95,114,123,123,211,173,111, 2,193,229,227, 3, 74,190,104,248, 68,219, 1, 39,197, 59, 62, 19, 65,196,128,144, 18,106,107,184,
+189,191,193,124, 60,226,114, 57,227,135,239,254,129, 82, 11,142,135, 91, 92,158,206,104,185, 42,108, 34,168,104, 35,133,128, 52,
+ 69,108,143,151,238,163,159,162, 96, 94, 52,238,181, 20, 5,204,172, 91,214, 10, 44, 55,196,201, 70, 94, 86,245,164, 20,116,143,
+ 66, 35, 29, 12,205,198, 76,212,224,110, 14, 5, 46, 40, 57, 42,164,212, 65, 30,100, 85,115, 16,173, 60,187,208,129,236,129,169,
+118, 48, 6,198,180, 28, 16,211,162, 15, 97, 94,117,231, 22,128, 22, 26, 98, 92, 48,165,128,233, 38,225,112, 32,212,203, 3,126,
+254,241, 3, 30, 62,158,241,199, 63,126,137,191,252,245, 79,216, 78, 23, 60,254,250, 59,206,239, 31, 81, 78,103, 28, 63,127,137,
+105, 57,226, 63,255,235, 7,252,252,246, 35, 14,135, 35,182, 90, 84,157,159,162, 6, 6, 76,179,117,184,170,168, 62,175, 43, 26,
+128, 52,205,136,135, 5,147,193, 57,158,191,122,137, 87, 95,191,198,135,143, 31, 48, 79, 1,207,190,120, 6, 49,216,129, 91,126,
+202,150,141,120, 59,118,119, 14,234,113,221, 0,153,152,133,193,230,130, 9,112,134,238,232,159,198,174, 41,118, 37,180,142,234,
+208, 47,180, 8,219,124,247, 68,175,110,149, 3,122,183,172,158,221, 93,215, 4,181,176,120,238, 58,153, 31,184, 7,188,176,177,
+248,199,162, 87,161, 40,173,161, 72, 85,101, 52,252,249, 24,239,138,212,177, 94, 24, 29, 90,187,198,218, 98,100, 69,139,141,174,
+155,231, 58, 91, 23,136,221,132, 97,196, 89, 50, 58,199,198,236, 80, 74,219,163,110,107,242,203, 62, 70,127,111,201,124,238,212,
+199,180,109, 79,184,219,141,117,221,186,170, 53,186, 25,222, 56, 24,220,164,117, 58,217, 80,180,155, 73,200,104,104,109,191,199,
+ 37,135,234,132,127, 86, 17,185, 72,172,235, 6,184,235, 5,250, 69, 73,181, 59,112,174,166, 43, 50, 98, 90, 73,118,196, 48,163,
+227,249,206,179,245, 16, 93,143,205,181,253,108, 12,187,212, 61, 70,206, 85, 39, 34,193,139,136,170, 66,173,238, 32, 80,120,150,
+ 96,104, 33,122, 42, 27, 13, 95,119,159, 48, 50, 1,141, 81, 90,237,235,150,161,211,208, 98, 86, 53, 66,154,246, 23,154, 99,117,
+ 13, 55, 45, 13,108,168, 86,245,112,107,241, 55,118,241, 54, 86, 22, 93, 45,233,175,106, 87,123,246,174, 31,161,107, 6, 60,253,
+ 47,207,228,192,203,114, 47, 38, 58,209,111, 15,191, 33,111, 98,168,103,213,139,140,231, 97,143,221,237, 2, 59, 18,115, 9, 40,
+156, 72,237,190,186,174,213, 2,119,231, 71,103, 61, 3, 53,176,145, 17,132,123,234, 96, 35,157, 2,207,147, 10,199,136, 3, 18,
+105, 65,124,146,172, 48, 24,182,245, 38,239, 4,174, 28,208,202,134,167,167, 83,127, 14,155,241, 34, 92, 88,182,143,194,109, 44,
+ 88,142, 11, 4,218,165, 83, 32,163, 14,142, 52,200, 0,160,116,132, 57, 15,188,119,191,144,141,195, 97,239,108,181,220,249, 24,
+ 39, 76, 83,236,162, 64,231,110,133,168,247, 69,240, 9, 72,107,192,164,231,114,163, 8, 72, 64,224,104,226,190, 77, 27, 76, 91,
+181, 20, 17,204,199,163,230,162,180,210,249, 27,100, 68,211,128, 17,163, 27, 1, 21, 9, 85,170,157,172,228,202, 94, 87,125,163,
+ 35, 82, 27,164, 51,132, 25,204, 13,197, 44, 10,243, 60, 89,214,120,193, 97,158, 59,136,225,217,221, 45,242,182,169,229, 70, 8,
+ 31,223,189, 67,109,176,253, 55,153, 44, 15, 26, 61,186, 19,103,204,203,226,217,176, 88,142, 71, 16, 19,222,124,255, 51, 62,188,
+125,135,105, 86,197,245,118,186, 32, 65, 61,209,218,185, 20, 37,158, 25, 58,144,109,239,178,204, 11, 14,203, 2, 98, 21,250,108,
+165,216, 56, 60, 98, 91, 87,101,222,179,118, 40, 33, 48,184, 5,180,213, 81, 92, 46,128,145,222, 29,120, 80,131,238,211, 53,164,
+ 37, 37,173,162,136,117,188,167,163, 84,181, 14, 49, 93, 7, 86, 40, 43, 57, 98,154, 39,164, 52,155, 39,211, 66, 2, 96, 29, 98,
+136,136, 41, 96,185, 73, 72,145,240,116, 90,241,248,246, 1,239,126,125,139, 87, 95,188,198,191,252,235,191,160, 20,205,146,127,
+122,255,128,211,211, 19,158,189,252, 12,135,251, 59,252,215,119,127,195,143,191,188,197,124, 60, 32,183,134, 64, 74, 42, 98,105,
+152, 56, 24,103, 91,223,224, 53,103,108,230, 53, 15,135, 5,243, 52, 97, 9, 1,207, 95,191,196,231,175, 95, 99,221, 52, 9,235,
+254,229, 51,196, 56,161,212,166,137, 73, 61, 7,188,117,241,161, 95,244, 74,116,210, 10,159, 41, 96, 74,169,139, 83,164,139, 6,
+197, 42,109, 87,102, 13,187, 81, 35, 61, 72, 72, 44,255, 73, 44,229, 74, 21, 50,104, 82, 70,204,103,183,174,216,222,137,130, 93,
+236, 21,165, 20,228,172,209,181, 77,170,146,205, 44, 42, 86,204, 18, 70,113, 40,141, 53,206,177,245,223, 75,160,246, 22,112, 0,
+ 71, 30,126,208, 62,230,212,149, 74,224, 17, 87,220,233,115,174, 74,237,248,202,113,209,178,141, 50,105,119, 0,235,120,123,192,
+111,196, 10,200,214,134, 24,211, 89,213,186, 91,108,187, 40,203,225,233,211, 64, 28,250, 39,223,125,207, 32,223,231, 72,187,149,
+137,172, 27, 99,218,145,245, 8, 18, 24,181,177,237, 5, 13,148,179, 11,148,241,201, 19,219,138,105, 72,115,124,117,161,239,193,
+158, 60, 87, 91, 83,112,146,237,131,155, 40,136,197, 47, 29, 63,200, 58,207,221,243,217,141, 44,201,104, 40,238, 85, 14,161,219,
+ 16,253,210,232,121,217, 80,129, 19, 44,201,203, 83,209, 26,154, 77,227, 70, 68,236,222,115, 60, 44,121, 54, 97,177, 61,186, 39,
+183,193, 32, 56,123,254,125,109,173,255,111, 26, 66, 51,120,231,188,139, 48, 17,195,204,142,194,183,130,105,232,227,164,239,236,
+113,141, 42, 38,116,247,136,174, 2,168,255,186,125,183,235, 20,191, 94,116, 16,118,251,119,190, 78,112,235, 89, 7,237, 74,109,
+ 73,178,191,228,229,147,243, 15, 59,107,222,128,219,200,222,206,105,247,200, 8, 15,218, 97,102,101,151, 5, 64, 99, 29,230,191,
+175,152, 78, 34,197,128,105, 74,136,172,116,192, 24, 20,210, 21, 91, 67, 22, 1,170,174,228, 70,192,142,138,201, 30,159, 54, 92,
+ 46, 21,203,141,102,144,139,173, 63, 60,229, 15, 59,203,105,136, 17, 55,183,183,168,173, 97,154, 39,136,136,157, 21,106,137, 12,
+150, 48,168, 12,139,113,255, 93, 5,230, 88, 51,220,106,219, 77,203,168,231,142, 56, 60,205, 5,165, 49,170, 37,217, 69,171, 2,
+ 82,138,231,113,198,211,217,237,126,250, 61,229,178,170,174, 45, 90,113, 16, 24,243, 50, 67, 88,144,107, 53,136, 14, 16,146,106,
+147, 66, 76, 90,137,213, 58,158, 57, 87,108,251, 3, 85,237,133,231,192, 93,230,167,114,255, 17,226,187,135,123,184, 65,191,214,
+138,227,114, 80, 4, 99,107,120,118,123,139,217,254,146,121,219,240,241,247,223, 48,197,212,169, 94,210, 81,160,182, 79,106,181,
+115,213,107,171, 56, 28,143, 56, 62,187,197,122, 58,225,111,255,253, 29, 2,116,127, 93,214, 77, 67, 76,250, 75,172,163,161, 20,
+244, 48, 98,179, 4,196,168,157,123,154, 82,215,247,104, 16, 73, 68, 41,122, 1, 93,206, 39,172,235, 10,105,192,180, 36,132, 52,
+245,189,217,158, 63, 29,108,204, 68,226,156,105,182, 0,155,176,131, 81, 48, 82, 4,106,222,128, 43,225, 78,233, 57,192, 33, 6,
+ 76,203,130,148,102,212, 38, 40, 89,163, 26, 21,167,169,214,150, 20, 35, 14,139,122,133,215,211, 25,143,239, 30,240,219, 47,239,
+240,252,238, 6,255,231,223,254, 12, 22,224,221,111,239,240,248,241, 17, 15, 15, 31,113,251,226, 25,142, 47,158,227,127,254,254,
+ 15,252,240,230, 55,164,121,210,238, 3,140, 37, 37,213, 40, 16, 89,146,153, 86,148,185, 86,172,185, 0, 28, 48, 31, 14,152,230,
+ 9,135,121,194,203, 47, 95,225,197,235,151, 16, 18,172,219,138,229,120,196,205,243, 27,179,111,208,110, 44,165,233,107,128, 34,
+130,153,117,140, 45, 54,177,240, 49,241,136,137,108,150,112,103, 65, 47,130, 14, 2,169, 37,119,219,100, 41, 5,173, 20, 29, 75,
+219,139, 94,107, 53,219, 14, 16, 67,234, 42,103,223,169, 67,254, 25, 26, 83,204,174,217,109, 82, 59,190, 66,175,215,196,226, 50,
+101,247, 76, 59, 1,206,199,135, 49, 34,164, 89, 3, 86,236,197, 11, 20,236,178,208,124,101,241,151,201,126,159, 49,206, 70,223,
+135,251,228, 40, 96, 40,167,199,103, 52, 78,112, 7,173,180,162,157,100,171,109, 88,146,154,244, 34, 70,236, 51, 38, 26, 32, 11,
+197,137,211,232, 40, 33, 3,151,251,201,129,180,183,198,233,120, 82,122,148, 44,119,196,215, 40, 16, 92, 5,236, 28, 11,124,146,
+187, 61,216,243,215,187,229,225,113,167, 46,222,114, 49,224,222, 79, 63,138, 23, 26,112, 21,241,188,119, 82, 53,117, 96, 21, 83,
+ 6,135,209,140,105,137,195, 67,252,103,247,169, 31, 89,138,156,255,239, 98,187,106, 17,218, 37,249, 82,183,237, 57,133,204, 59,
+ 89,231, 33,136, 40,153,108,255,239, 1, 32, 26,122, 3,218, 41,245,101,119, 97, 85,119, 67, 52,253,253, 34, 13,251, 27,174,146,
+242,208,163, 76,193, 52,242, 81, 72,119,201,159, 66,146,122,238,252, 46,152,200,173,153,190,190,216, 55, 21,170, 5,104, 86, 72,
+238, 32,105,114, 29,215,227,133,179, 10,216,118,176, 29,215,130,208,152,186,104,238,133, 95,242,228,146, 50, 43,130,121,104, 58,
+118,246, 75,223,167, 19, 84, 5, 94,204,181, 20, 2,171, 93,141,157, 46, 57, 28, 71,190,202,113, 13, 1, 58, 76, 10,120,124, 92,
+ 85,115,210,179, 25,180, 8,230,206,106, 31, 60,150,195,113,193,188, 76,246,190, 48,242,154, 33, 69, 69,166, 97,231,239, 31, 24,
+232,235, 48, 35,159,122, 48, 15, 80, 26, 12, 96, 19, 99, 26,249,235,164,240,162, 24,212, 30,215,133,130, 2, 20, 91,201,133, 48,
+219, 59, 28, 16,130,122,208, 91, 85,235, 26,199,136,144,130,226,189,163, 70, 97,251,153,230,132,187,158,213, 82,205,101, 50,126,
+ 94,245, 18, 70, 26, 7, 54, 44, 21,167,211,177,170, 86,137, 34,232,163, 47,152, 76, 63, 68,214,139,209,170,213,117,213, 7,254,
+217,221,173,238, 32,167,132,203,233, 9,235,227,166, 81,127, 78, 82,130,138, 34, 98, 84, 28,159, 56, 16, 65,212,199, 55, 31, 22,
+ 76, 41,225,251,191,125,143,247,191,189, 71,152, 21, 74,145,207,151,238,113,101, 81,235, 66, 43, 13, 83, 74,224,121, 2, 88, 20,
+242,194, 1,211,113, 6, 72, 69, 70,211,116,192,241,112, 68,136, 9,231, 83,197,249,124, 65,173, 13,219,186,226,114,217, 80, 10,
+ 97, 57, 46,230,105,214,159, 37, 55,115,132,146, 81,147,172, 42,246,249,104,140, 81,199, 31, 85, 31,210,117,205,104,181, 32,197,
+164,106,122, 35, 53,165, 16,144,230,164,160,153,192, 26, 23,185,173,246,224,113, 7,112, 76, 49, 98, 78, 0, 33, 35,159, 46,168,
+107,193,195,239, 15,184,153,102,252,235,255,253, 55,196, 57,226,227,187,247, 88, 63, 92,240,240,254, 17, 55,207,159,225,230,197,
+ 11,252,207,223,254,129,191,255,248, 11, 66,156, 77,213, 45, 56, 76,179,122,113, 91,211,221, 87,208, 19,162,244, 11,157, 49,223,
+ 28, 48, 77, 9,199,153,241,242,243,207,240,217, 87,175,145,226,132, 92, 10,114,201, 56,222, 29,109, 12, 56,118,211,210,170,138,
+ 18, 69, 61,160, 26, 7,232,246,151, 29, 16,163, 9,106,206,200,219,182,139,153, 36,248,217, 95,107,189,122,201,217, 20, 82,253,
+224,204, 14,216,216, 17,173, 68,237, 39,106,147,211,159, 67, 15,222, 48, 78, 39,123,193,166, 52,245,241,121,255,206,196, 70,194,
+150,185,173, 54, 22,244,192, 29,213, 10, 84, 11, 20,210,125, 23, 40, 88,144, 72,208,189,159, 42,117,244,239,144, 11,234, 86,144,
+ 87,205,231,238, 99,185,214,180,139, 51, 63,150, 42,231, 91, 31,123, 19,211, 21, 61, 77,174, 40, 85,134,131,149,138, 86,178,117,
+ 3,238,200,170,253,100,225,224,234,122,116, 48,146,236,188,222, 96,238,145,165, 87,185, 10,178, 11, 58,150,129,106, 22, 59,172,
+ 59,176,196,221, 5, 59,118,188,142,100,135, 8,203,209,209,251,232,120,182,248,218,190,171,197,160,140, 57,119,191,181,138,108,
+ 23,227,126,175, 26,236,103,246,184,211,224, 35,112, 11, 21,231, 29, 9,175,115,231, 3,239, 46, 12,253, 53, 1,187,159, 61,120,
+146,159,185, 26,140,168,135,125,208,146, 11,148,170,137,102,247, 65, 78,173,162, 90,250,215, 16, 98,106,209, 29, 3, 15,186, 97,
+ 19, 21,117,214,214, 35,118,247, 99,113,105,227,146,135,157,163,254,161,244, 14, 25,163,203,237,191,206,104,138,154, 24, 55,182,
+ 27,221,145, 46,109, 23,244,226, 46,130,182,235,186,219,149, 16,209, 47, 6,222, 37,197,117, 7, 5, 62, 33,211,185, 37,194,241,
+198,221,182,122,205, 65, 39,187, 92, 53,194,182,237, 98, 87,101,100,209, 96, 76, 63,221,166, 75, 76,200,181,162, 88,152, 88, 52,
+232, 10,184,107,139,117,253,213, 87, 87,114,149, 29, 65,204,120, 58,101,156, 62,174,218, 92,216,243, 93, 60,217,144,168, 67,111,
+244,223, 13,199,155, 69,167,129,172, 13,105,222,242,136,106,118, 99, 97, 27,161, 47,236, 98, 62,217,135, 48,233,154, 78,255, 74,
+212,133,179,105, 74,131, 21, 97,159, 65, 10, 64, 12,232, 69, 68, 35, 93,153,196, 20,205, 94,171, 33, 86,243,188,160,201,134,243,
+249,178,211,102,145, 21, 11,154,104,234, 9, 71,101,219, 64, 34,253,125,240,115, 44, 54,214,160, 1,183,106, 97,247, 15,197,226,
+227, 92,197, 89,131, 50,138,197,230, 52,110,213,137, 81, 71,197,143,143, 23, 83,225, 1,151,245,132,210, 26,238,110,110,240,225,
+240,128, 16, 34,222,124,124,196, 41, 63, 97, 90, 22,235, 21,117,215, 22, 83, 64,136,138, 84,172,173, 34,215, 2,212,134,187,251,
+123, 28,110,110,112,121, 56,225,151,255,250, 59,146,237, 81, 90,222, 80,242,138,184, 44,250,187, 16,144,107, 65,171, 43,142,203,
+140,144, 98,255,181, 20, 2,230,152,208, 74,213, 25,127, 10,192, 69, 15,149,199,243, 25, 11, 8,199,229, 0, 1,225,116, 94,113,
+179,108,184,155,143,152,150, 3,206,151, 51, 24,132,137, 25, 23, 84,125,152, 72,173,217, 1,132,100,182, 40, 50,251, 28, 53, 96,
+219, 86,148, 90, 77,209,216,144,115, 54,203, 91, 66,140, 90,169, 5, 48,114, 85, 60,111, 98, 69, 0, 34, 68, 80, 72, 8,161, 98,
+ 78, 5, 4,198,118, 41, 64, 3,182, 83, 65, 20,198,159,255,229,175, 56,222, 29,240,240,251, 3,206, 15, 23, 60,188,125,135,155,
+231,119,120,254,234, 37,190,255,199, 79,248,238,167,159,144,210,100,188,124, 96, 49,198,125, 43, 21,144,166, 83,136, 16,176, 1,
+216,234, 6, 33,198,116, 92,144,150, 9,203, 28,241,234,243,215,248,242, 15,223, 96, 45, 5, 13,130, 75,222, 48, 29,149, 34,215,
+170, 90, 23,153,213, 97, 80,179, 10,180, 82, 74, 8, 97,178,228, 50, 43, 6, 45, 62,195,247,210,125, 92,109,212, 51,118, 13,135,
+143, 57,115, 70,176,233, 68, 12, 81,187,127, 27,223,249,197,184,199,174, 86,169,187, 28, 65,205, 60,231, 96,164, 56,139, 21,117,
+ 56,133,143, 69,155, 19, 1,221, 79,106,151, 41, 39,237,186, 9,164, 98,165,210, 76,200,103, 2,163, 24, 76, 48, 38,190,104, 68,
+105,162,214, 21,102,144,249,188, 61, 89,172, 51,202,173,187,132, 77, 19, 36, 23,181, 0,217,244, 39,196, 56, 98, 84, 5,136, 20,
+213,227,223,109, 81, 13,149, 70,128,205,245, 94,220,160, 50,221, 89,224,137, 91,108, 97, 65, 78, 59, 83,101,186,163,116, 75,173,
+118,161,183,190, 26,104,187,224,143, 61,124,167, 23, 92,142, 37,197, 0, 46,245,233,179, 17,226,250, 72,217, 92, 9,194,116,181,
+207,143,209,254, 78, 82, 32,136,166,252,109,198, 50, 81,106,161, 7,189, 0,172,160, 19,210,189, 44,177, 22,191,132,134, 16, 38,
+ 85,100, 75, 53,198, 61, 13,254, 57,211,224,250,203,216,103,179, 99, 80,141, 45,224, 42,237,102,214, 35,236, 24,243, 29, 56, 67,
+212,197, 88,213,220, 44,112, 65, 86, 15,165,177,239,181,212,206,176,104,173,161,126,146,213,125, 45,116, 84,113,218,136,182,182,
+207,181,217,106, 83,212, 46,204,230, 85, 38,132, 49, 45, 49,104,144, 72,222, 53,142,195, 94,133,189, 90,127, 47,234,130,158, 37,
+108,105,147, 34, 46,168, 99, 27,119,203,248,236,233,186, 35,173,197,117, 39,166,241, 86,179,129,197,133,182,254,255, 23,155,240,
+184, 48,144, 96,171,156, 29,217, 80,164, 42,118,181, 23, 48, 50,210,219, 10,161,212, 81,220, 5,243,161, 7, 75, 98, 19,115, 15,
+120, 66, 33, 27, 35,133,125,162, 4,224,178, 21, 60,158, 54, 76, 11, 27,126, 91,163,158, 99, 48, 72, 26, 41,114, 58, 52,128,227,
+140,101, 57, 66,154,190,135,144,136, 82, 76,226,197,131,182, 87, 81, 71,250, 51,253,111,227,119,179,118, 51,245,169, 16,135, 73,
+155, 54,118, 95, 32, 33,116,112,143, 10,254,244, 41, 3, 8, 21, 28,180, 83,143, 97,181, 38, 36, 65, 74,195,182,109,136, 86,140,
+232,107, 28, 17, 34, 97,107,130, 92,172, 40,170, 38,208, 76, 10,241, 42,230,226,136,213, 70, 32,201,242,137,201,170,161,224, 59,
+157, 93,149,217, 28,245,111, 59, 1, 45, 4,128, 57, 38, 72, 17,212, 86, 16, 19,163,173, 5,151,156,149, 52, 87, 10,150,227, 1,
+ 89, 26, 78, 79,143, 64, 80, 1,133,127,217, 41, 36,179, 89, 40, 93, 43,214,134,124, 89,241,236,217, 51,220,221,220, 35, 36,198,
+ 63,254,243,123,188,253,240, 14,183,119,247,144, 42,200,235,170,135, 16, 15,197,110, 35, 29,253,205,243, 2,134, 50,212, 11, 59,
+163, 88,191,144, 24, 2, 74,187, 96, 93, 47,144, 74,216, 46, 1,113,206,126, 5,129, 74,197,211,195, 35,166,103, 71,164, 20, 33,
+152,112,190, 60,234, 5,212, 60, 88,130,187,151,158, 64, 72,156, 16,131,238,112,214,147,142,127,162, 93,158,109, 83,148, 98, 58,
+ 76, 6, 48,209, 47,161, 20,181,206, 48, 3,113, 78,160,121,177, 46,102, 67, 96, 5,255,215,220, 32, 20,176,157,129,146, 43,254,
+248,215, 63,226,249,139, 59,156,222, 62,225,242,112,198,195,239,111,176,220, 63,195,179, 47, 62,199,247, 63,190,193,119, 63,252,
+ 12,142, 19, 2, 43,111,126, 73, 1, 83, 12, 40, 37,163,150,162,127,159, 24, 80,108, 44, 45,194, 72,135, 5,135,148,176,196,132,
+151,175, 94,225,213,215,223,224,148, 87, 76, 41,225, 92, 42,206, 91,198,171, 47,238,251,184,213,187,202, 90, 93,160,150, 44,196,
+135, 81,107, 67, 41,217,198,194, 35,123,222,255,101,154, 25, 21, 16,153,232, 40,144,147,182, 20, 24, 75, 78,150,115,248,140, 37,
+ 67,229,210,204,179,207, 54,194, 87, 50, 23, 76,133, 29,236, 32,241,157,181,119, 91,215,157,150,170,156,201,214, 73, 41, 37, 69,
+112,216,225,214, 90, 49,116,172,168, 67,162,233,193, 46,174, 5, 48, 10, 32,211,142,215,221,148, 85,175, 1, 39,164,250, 10,120,
+151, 80, 17,130,250,208, 21,109, 10, 5,250, 32, 40,144,130,117, 77, 65, 85,252, 36,209,113, 62, 0, 41,185, 11,191, 18,235,200,
+121,143,216, 85,161,215, 96,120, 59, 63,187,217, 26, 34,248,101,219,187,115,116, 31,115,179, 21,138, 90,166,168, 23, 61, 42,224,
+132, 22,240,134,146, 65, 51, 33, 95,199,167,181, 14,252,113,235, 95,143, 68, 53, 40,147,127, 7,176,127,214, 83, 10,187, 7,219,
+212,199, 2,163,206,177,117,148, 74, 8,239, 4, 28, 14, 22,162,196, 16,112,119, 45, 64,236, 79,104,122,233, 43,211, 64, 32, 89,
+186, 86, 68,196, 85,206, 3, 53,236,222,103,180,134,138, 2,174, 1, 20,141, 11,208, 4, 34,185,175, 7, 66,138, 87,133, 78,105,
+150, 83,189,203,254,246,226,161,249,159,245,137,229,141,250,120,186,117,160,140,135,230,120,135, 92,247,129, 65,162,250,147,158,
+158, 78, 52,198,255, 77,118,194, 79,187, 80, 6, 37,230,218,126,231,100, 65, 23,101, 90,145,231,173,245,248,231,158,168,103,107,
+ 86, 48, 26,170,145, 27,251, 82,252, 42,129, 15,210,108,146, 99, 54, 67,182,164,184,206,200,177, 80, 25, 91,137,105,145,101, 39,
+ 64,211,137,146,159, 3,165, 86,181,238, 34, 32,151, 13,185,232,228,140, 3,107,163, 64,132,100, 68, 57, 50,241,227,126, 53,235,
+ 84, 57, 69, 39, 52,156, 30,207,200,173, 98, 54,246,132,199,213,178, 21,141,250,243, 20,211, 23, 45, 88,150, 4,145,134,148,102,
+148,186,106, 87,239,228, 75,140,104, 91, 66,179, 16,174,208, 89, 80,104,210,243, 38,184, 91, 55,165, 99,110,217, 50, 67,152, 26,
+ 18, 3,133, 9,161, 53, 4,179,249, 53, 5, 45, 96, 74,140,148, 38,136,173,190,117, 20, 31,177,174, 89, 21,252, 65,147, 58,153,
+ 8,145, 35, 2, 7, 76, 32, 72,205,250,249,132,164,157,185, 77,120,115,205,104,104,136,173,217, 95,196,104, 1,185, 84, 80,140,
+ 61,112, 68,177,155,122, 57,171, 80, 78, 80, 45, 12,128,155,165,179, 89,220,104,105,130, 41, 36,156,202,218,191,156,188, 21, 28,
+231, 25,191,127, 60, 97,189,100,204, 81,195,225, 17, 72,247,227, 18,145,183,130, 82, 5, 37, 55, 48, 21, 84,105,184,125,113,135,
+116, 55, 99,125,218,240,235,247, 63, 96,154, 34, 98, 36,180,173,162,172, 89,125,226, 48,188, 32, 68, 67, 71,152, 16,231,201,212,
+178,163, 43,139,196,104,182,183,220,158, 50, 46,231, 21,156,108, 44,212, 76,133,106,194,136,167,211, 9,199,199, 39, 28, 38, 29,
+251, 79,243,140,202, 5,113,215, 77,184,248,173,239,124, 2, 97, 91, 85, 80,182,220,206,104, 84,177,157, 78,224,152,112,156, 15,
+ 10, 99, 41, 69, 5,100, 89,187,224, 48,105,240, 12,113, 4,183, 10, 9, 85, 15,141, 38,200,181, 25,246, 18,200, 69,240,245, 55,
+223,226,254,238, 25, 78,143,103,172, 79,103,156,126,123,135,112,127,143, 23,175,190,192, 15, 63,255,132,191,127,255, 70,153, 31,
+236, 69, 86,192, 97,154, 80, 74, 85,241, 7, 65,255, 30,126, 82,147,210,243, 98,138,136, 83,196,171,175,191,196,235,111,191, 65,
+169, 85, 15,230, 24,241,240,238, 29,238,110,143,184, 57, 44,168, 16, 5,199,193, 95,126,189,192,180,225, 77,125,127,181,247,135,
+ 7,203,135, 87, 53,177,189, 8,164,197, 87,107,202, 64,110, 36,157, 95,238,121,195, 77,218,128,173,128, 64,246,123,244,171,161,
+ 41,231,152, 24,170, 69,160, 10, 97, 65,181, 54,162, 39, 78,121, 86,114,140,163,243, 48,133,111,112,218,159, 5, 45,120, 60,105,
+173, 2, 4, 45,217, 66, 52, 93,137,253,157,185, 85, 84,179,126,138,193, 69, 24,214, 85,217,120, 22, 34, 64, 86, 95, 50, 60,110,
+181,209, 64, 5,155,240, 74, 58, 38,149,117, 71,237,151,166, 69, 32,239,173,126,238,131,213, 93,106,219,137,203, 67, 23,213, 4,
+251,220,244, 82,178,142,130,209, 89,222, 93, 40, 7, 87,241, 15,203,229,126, 31,220, 76,245,175, 59,125, 66, 11, 12,106, 1,212,
+170,121,196, 25, 21, 64, 69, 5, 7,160, 86,128,155, 0,145,187, 16,178, 59, 89,200, 63,103,101,252,235,251,136, 62,157,241,245,
+ 4,147, 11,153,164,179,249,153,154,217,231, 70, 23,184,167,255,145, 17, 47,135,168,208,108,123,126, 65,146, 42,223,175,146,245,
+140,192,213, 68,193, 86, 96, 2, 87,234,157,101,109, 58, 95,210, 56,100,235, 64, 81,212, 18,107, 49,151,174, 92,103,211, 32, 48,
+ 70,196,185, 79,170, 28, 6, 84,107, 54,239, 60, 13,134, 60, 12, 12,212,154,185, 98,164,167,243,169, 24,145,187, 88, 76, 45,120,
+117,160,180, 93,188, 72, 98,209,158, 24, 88,224, 61, 31,192,200,130,108,164, 70,116,135, 6,117,135,136,235,133,220,154,167,231,
+186, 79, 10,212, 94, 32,238,193,247, 76, 65,183, 48,210, 8,120, 9,196,168,253, 66, 39,203,250,142, 8,216, 84,108, 22, 77, 68,
+104, 22,185, 96,217,241,206,175,112, 29, 67,206, 10,247, 18, 8,166,164, 13, 25, 71, 86,202,154, 73, 69,138,219,138,137, 16, 34,
+ 27, 67, 72, 16, 34,112,202, 21,167,211, 69,149,236, 70,240,116,222,138,239,199,217,190, 23, 97,194,116,152, 16,226, 12,176, 58,
+ 15,202,118, 65, 41, 69,159,123,183, 41,154,109,215,249, 12, 74,146,172, 86, 44,235,148,150,186,102, 67, 17,207,149, 13, 93,171,
+177,127,128,199, 27, 83, 0,102, 86,232, 22, 37,251,254, 11,120, 14, 72,105,238,113,229,243,164,187,245,143, 79,239, 81,132, 48,
+ 91,164,157, 64,227, 95, 83, 72,168, 85,215,146,193,237,177,240,169,159, 78,244, 74,205, 70,220,180,179,162, 74, 27,170,102,135,
+ 4,224,154, 82, 36,162, 84,155,102, 2,135, 67,140, 8, 81, 61,117,190,236,223,242,134,231,247,207,208, 90, 67,174, 27,110,110,
+ 15, 40,235, 5,151,243,134,152, 84,192,149, 98,232,227,104,183,152,229, 77, 47,190,249, 56,227,249,103, 47,192,129,241,230,251,
+159,240,241,189,178,205,217,172, 31, 66,158, 61, 77, 61,125, 42, 26, 13, 44,165,136, 41,164,158,154,196,236, 66, 13, 29,109,157,
+ 79, 23,148,220, 16,130, 94, 84, 53,107, 7,199,182,159, 20, 8,214,203,138,156, 55, 16,128,155,227,130,155,195, 17,174,125, 38,
+168,239,157, 44, 27, 92, 64, 40,173, 32,111, 43, 98,210,151,225,241,253, 35, 66,152,112,115,127,131,249,176,152,221,193,132, 53,
+ 4,164, 73, 17,171, 26, 90,209, 32,117, 3, 33, 43, 77,169,232,131, 83,138, 96,203,130, 47,191,124,141,219,219,123,108,107,198,
+250,116,194,187,223,127, 3, 29, 23,188,124,253, 26,191,252,246, 59,254,246,247,159,144, 91,213,208, 21, 38,204,204, 56, 46, 51,
+154, 8,182, 53,163,150,134, 52, 45,106,249,176,240, 20, 78, 81,139, 46, 6, 94,127,245, 37,254,240,167, 63,232,184,169, 53, 28,
+110,110,112, 62,157,208, 32,184,127,118,175, 98, 64,182, 0, 13, 67, 50,122,110,181,171,122,115,206, 93, 44, 21, 66, 68,224,104,
+126, 83, 26, 76, 50, 10, 90, 64,149, 2, 49, 65,220,232, 46,198, 97,143, 30,253,233,236,243,128,148,146, 2, 67, 60,102, 52, 68,
+176,217,146,216,114, 57,197,146,199,196,158, 15,223, 37,182, 58,160, 53, 74,171,211, 98, 96,219, 76,136,231, 98, 58,150, 65, 10,
+ 52,113,144,231,222,179,137,127,170,135,110, 48,247, 93,158,170,237,131,146,201,124,231,198,132,152,162,226,125,197, 2, 34, 12,
+ 79, 90,107, 70,117,241, 27,196, 68, 61,109,164,197, 25, 97, 75, 80,250,229, 40,166, 44,215,240, 11,227,171, 95, 51,200, 52,235,
+ 27, 67,153,236,110, 13,217, 41,179, 97,221,181,123,200,175, 98, 36, 29, 41, 7, 23,103,113, 15,193,129,219,222,104, 40,243,197,
+ 4, 77,158, 40,181,211, 79,233,250,199,220, 3,221, 35,239,254, 60,222, 89,232,164,141, 24, 77,178,181, 68, 96,211,215,208,117,
+ 94,232, 85,218, 87,235, 36,183,102, 59, 98, 2, 20,214, 97, 19, 37, 95, 21,185, 38,136, 49, 96, 63,250,191, 97,215,209, 27,202,
+ 53,197, 62, 90,246,231,211,177,170,123, 43, 89, 23,132, 88, 71,172, 59,102,233, 64,154,214,106, 95, 57,117, 15,191,115, 12,118,
+172, 5,234,217, 1, 67,205, 14,115,143,212, 82,122,197,224, 9,108,181,238,246,227,123,239,255,149, 64,116,183, 18,105,215, 22,
+172,253,175,107,117,136, 79, 33, 59,177,157,214,181,157, 31, 64, 68, 93, 96,250,105, 60,182,211, 10, 5, 35,224,196, 57, 12,100,
+ 29,102, 8,187,160,176, 93,113,224, 44, 20,152, 96,215, 45,160,202, 28, 1, 98, 36,196, 96,220,244,214, 80,170,139, 94, 71,126,
+185,223, 93,167,199, 21,231,203, 10, 13,129, 12,157, 80,184,143,138,243,226,133,154,224,112, 60, 2, 50, 28, 16,121,205,166,229,
+209,127,174,231, 70,177,243, 93,174,132,159,180, 15,117,114, 90,164,115, 49,160,147, 6,213,251,120, 96, 81,208,233, 89, 36,187,
+239, 20, 48, 37, 44,218,212,197,164, 35,123,160, 91,174,223,127,124, 64, 16, 75,160, 51,140, 47,243, 72,163,108,162, 17,197, 49,
+106,199,239, 98,118, 47,148, 35, 72,247, 31, 77,164,123, 5,129, 6,166, 73,213,151, 40, 86,241,232, 31, 32,108, 12, 97, 59, 0,
+ 92,125, 94,107,237, 35,123,102,198,221,237, 13,206,219,134, 45, 23, 5,157,136,114,174, 67, 72,160, 86,213, 70, 87, 43,170, 52,
+172,219,138, 38,108, 22,186, 9, 47, 63,255, 28, 55,247,183, 56,191,127,194,175, 63,255,140, 48,205, 16, 41,144,102, 59,220, 24,
+108, 52,106,246, 40, 49,161, 89,138, 56, 76, 9,231,181, 98,221, 54, 76,193, 84,247,181,168,109,171, 10,182,146,193, 49, 98,138,
+ 13, 69, 51,230,187, 7,214, 61,197,101, 43,168,169, 90,210, 19,227,238,120,192, 41,158, 20, 56,227, 1, 52,212, 44, 29, 74, 64,
+ 80, 64, 68,173, 5,107,222, 84,240,112,183, 64, 64,216, 12, 8,224,214, 10,133, 98,204,134,146, 92, 65,161,170,205,193,216,211,
+ 1, 4, 41,250,136,124,241,234, 21,158,223,221, 64,114,193,229,233,140,247,191,191,199,114,115,139,207,190,248, 2,239,222,190,
+197,247, 63,252,130, 75, 1,166, 37, 98,142, 17, 83, 36,220,164, 25, 16,224,124, 89, 53,212,102,158, 16,167,164,251, 44,142, 61,
+ 96,100, 78, 9,223,124,243, 26,127,248,246, 15,221,226,183, 44, 11,178, 8, 30, 31, 30,112,255,217,103,152,230, 5,210,170,170,
+ 57,141,165,225,138,117,181,103,196, 43,175,236,222,166,164, 35,248,193, 59,111,246, 82, 87, 25, 52, 53,191, 56, 52,117, 75,127,
+237,182, 21, 29, 45, 55,128,194, 2,226, 4, 70, 67,222, 86,253,124, 12, 62, 65, 36, 8,211,212, 5, 34,181, 22, 45, 52, 88,172,
+ 35,147,206, 70,102, 87,132, 91,196,173,142,217, 27,234,166, 7,100, 76, 9, 49, 78, 96, 54,203,145,237,166,216,237, 50,180,231,
+177,235,127,153,166, 73, 47, 76, 19, 71, 6, 98, 72,212,207, 55,196,136, 52, 77,250, 93, 86,197, 94,170, 51,142, 17, 16,140, 73,
+174,233, 74, 32,179,101,217,243, 44, 50,226, 65,245,244,100,219, 35,203,200, 31,232, 72, 88,236,118,169,122,248, 50,135,157, 48,
+234, 26,136, 2,139, 46,149, 93, 4,235,216,167,162,123,192,155,140,172,238,108, 23,168,238, 14,197, 0,114, 4,169, 1, 64, 53,
+177,172, 82,247, 26,118,184, 82,227,154, 11, 25,215, 2,102,207,227,253,126,126,136, 4,181,160,182,124, 4,111, 7,197,115,189,
+ 7, 49,173,217,168,222,105,106, 3, 37,107,232, 86, 41, 72, 83,236, 41,121, 30, 61,218,176,179,206, 25,125, 12, 77, 64,209, 4,
+ 89,189,203, 55,215, 0, 25,207,156, 2, 36, 24,147,191,201,192,153,186,197, 87,118,123,104,207,176,223,215, 34,210, 84,213,156,
+162, 21,236,114,181, 18,242, 46, 94, 61,206,158, 55,110,211, 21,183,198,238, 10, 51,234, 10,247, 1,185,146,174,231, 48,241,168,
+140,213,147, 84,233,225, 62, 61, 45,112,167,240,215,241, 57,119, 75,160, 51, 33, 58,132,133,130,185,227, 77, 69, 46, 35,240,136,
+ 12,236,229,147, 0, 29,181, 59, 61,147,250,207, 19, 48,162, 98,217,124,242,205,118,252,173, 86,219,167,171, 0, 46,217, 51,225,
+151, 59, 1,200, 46, 48,181, 54,193,133,175, 44,132,146, 27,158,206, 43,114, 89, 17,120, 66, 79,229, 53, 96,117,182,238, 92, 0,
+117, 75,221,104, 56, 24, 8, 38, 60, 19,180, 92,237,251,245, 34, 71,250,218,161,235, 69, 26,140,138,103,128,182,174,197,224,142,
+243,101, 27,155,117,184,148, 0, 83, 32,108,246, 14,116,190,133, 77,103,210,180, 96, 74, 11, 66, 32, 76,203,130,121, 89,240,244,
+116,214,233,247, 60, 33,196,128,182,109, 96, 27,177,239,115, 19,216, 24, 24,213,127,246,170,158,252, 82, 43,162,152,250,181, 54,
+233, 73, 74,189, 63,183, 67,131, 13,106,209,122, 38,180, 83, 58, 9,193, 80, 73,213,186, 69,110,130,195,225,160,150,177,156,177,
+149,130,105,158,193,212,208,138,104, 53, 34, 10, 9,217,114,193,121,203, 40,165,130, 24,168, 53, 35,166,136,207, 62,127, 9, 10,
+ 1,111,126,248, 9,151,167, 51,194, 52, 97,187, 20, 61, 20, 57,106,154, 17,233,139, 26,205,239, 14, 2,164, 20, 28,167,132,211,
+166,184,207,121,154,209,154,224,241,114, 65,110, 64, 44, 21, 91, 43, 88,150, 9, 85, 54,108,173, 34,182, 97,201,209,135, 45,163,
+228, 13,210, 52,253, 77, 59,235,128,251,231, 17, 92,139,206, 28,169,161, 73, 70,105, 27, 66, 22,112,156, 0,106, 40,185, 34,205,
+139, 66,115, 8, 40,219,134,154, 55,144, 84, 76, 49,154, 64, 75,201, 86,212, 54,212,118, 70, 99, 2,144, 76,217,169, 47,218,156,
+102,188,248,226, 91,204,199, 4,217, 8,235,229,132,223,127,250, 25,247, 47, 95,225,254,245, 43,188,127,243, 43,254,254,195,175,
+248,253, 82,112,115,156,112, 8, 1, 19, 1, 55,243, 1, 68,140,199,147, 90,244,152, 24,211,172,187,163,192, 73, 41, 97,196,152,
+ 67,196, 31,191,253, 6,175,191,125,133,181,102, 77, 15,154, 38,132, 41,226,237,175,191, 33,196,136,187,187, 91,163,167, 77,125,
+132, 45,102,133,169,149,250,193,230,201, 88,251, 3,163, 39,147,241,200, 14, 47, 85, 95, 88,207, 41,142,182,115,231, 64, 0,162,
+238,218,172, 56,148,162,227, 93,237,156,146,249, 89,175, 41,217,138,148,213,142,133,236, 34,108, 77, 71,190,129, 8, 85,198, 37,
+161,103,107,177, 46, 38,216, 62,180,234,142, 29,238, 25,133, 37, 94,149, 1, 84, 33, 29,197, 27,222, 28,137,167,209,245,218,120,
+ 13, 70,190, 14, 49, 64,160, 89,194, 41,165, 93, 2,211, 80, 35,131, 77,152, 83, 75, 31,139, 18,196,160, 52,178, 11, 96,113, 17,
+ 97,238,177,155,174,226,245,125,103, 8,100,145,152,118, 41,197, 1,220,161,171, 60,244, 29,137,207,199,236,192,149,197,205, 47,
+213, 62,146,247, 34, 44, 4,112,141,168, 53, 91,151,101,217,237,214, 85, 73, 53,129, 90,105, 59,177,156, 77, 9,120, 31,196, 34,
+198, 66,101,180,170,209,195,112,159, 50,138,117, 32,209, 20,236,220, 87, 39, 62,245, 8, 59, 50,224,222, 58, 58,242, 89,170,217,
+ 31, 27, 2, 8,173,242, 53,152,197,216,241, 46, 92,172,214, 73, 15,177,166, 78, 76,122,168,139,104,206, 54,211,208,217, 55, 75,
+106, 33,143, 90,165,214,213,229,189,168,178,157, 48, 35, 64, 32,216,154, 54, 34, 82, 42,216,215, 3,245, 90,244,233,211,164,234,
+239, 80,207, 69,119,106, 98,216,177, 3,116,189,214,139, 76, 43, 90,219, 46,239, 0,198,115,124, 90,168,120, 0, 0, 32, 0, 73,
+ 68, 65, 84,240,137,192,222, 86, 41,246,129,249,164,134, 45,144,200,191,239, 79,145,184,251,247,186,237, 46,147, 38,205, 70,209,
+ 38, 34,244,247,236, 19,250,158, 91,250, 96, 43, 5,101,149, 72,119,114, 48,128,205, 92, 2,228,157, 46, 11, 66,212,149,169, 71,
+186, 42, 7,192, 44,160, 65,197,102,170,250,102,156,183,140,243,233,130,214, 8,211, 18, 58,130, 90,164, 94,217, 68,165, 86,148,
+ 92, 48, 47,179,210,222,164, 32,198,128,203,101,181,181, 47,239,212,238, 86, 96,187,125, 76,194, 40,168,125, 93,197,205, 2,246,
+168,243, 37, 56, 4, 36, 11, 98,209, 34, 41,244,207, 47,134, 69,181, 49,246,125,177,217,173,167,195, 12,106,132,148, 38,164,152,
+112,185,188, 87, 82, 31,239, 86, 8,166,124, 15,113, 66,163, 19,106, 43,152,211,132, 64,140,203,122,129,228,138, 45, 16,182, 82,
+176,149,130, 8,199, 98, 90,178, 69,163, 6, 65,188,242, 22,187, 13, 98, 63,146, 42, 68, 72,204, 72, 33, 40,121, 78, 4,201,148,
+170,203,178,128, 4,200,173,161,136, 32,113, 66,226,128,210, 52,146,180,102,253, 75,231, 92,181,122, 7,247,151,239,112,123,192,
+221,243,123,188,255,253, 29,222,252,240, 6, 20,185, 31,138, 4, 32,204, 51,152,253,162, 2,230,200,216, 74, 83,168,204, 86, 44,
+ 75, 59,129,161, 35,184,146, 11, 78,167, 21, 33, 45,200, 77, 21,183,199,227,130,119, 31, 46,104, 40, 22,109, 90, 1, 25, 54,161,
+142,206, 21,133,233, 48, 19,150, 99, 68, 91, 5, 21, 69,177,144,165,161,110, 25, 56,120,231, 24,176, 44, 19,210,113, 65, 94, 43,
+182,109, 69,206,185,115,153,117, 20, 11,100, 52,112, 61, 1,200, 93,100,209, 32,224,214, 80,203,134,103,247,247,248,226,229,159,
+ 16,166, 3,176,109, 56,157,206,120,255,227, 47,184,249,236, 57,238,191,122,129,223,127,251, 29, 63,252,227, 71,252,190, 94,112,
+179, 44,184, 73, 17,145, 4,199,229, 6, 32,194,211,233,130,203,101, 85,181,251,205, 2,137,198, 57,247, 93, 36, 11,190,250,227,
+215,248,246, 79,223,224, 82,139, 30, 68, 49, 65,152,241,248,248,132,243,233, 9, 95,126,249, 21,110,150,131,118,177, 83,234,135,
+141,234, 55,164,163, 80, 91,175,234,155,141,150,232,250, 0,138, 81,201,132,165, 88,232,129,141,211,106, 67, 51,246,179, 18,161,
+236,197, 35, 2,199,128,154, 27,106,174, 8, 38,216,114,254, 65, 12, 97,215, 37, 21, 20, 27,251,235, 88, 61,246,223,191, 89, 30,
+117, 12,220,119,188,222,142,149, 90, 45,100, 68,192,209, 43,231,134,146,183,171,238,201,119,203,149,138,229, 21, 39,163,132, 21,
+ 48,212,218,214,227, 77, 99, 48,226,148, 41,137,141,152, 71, 96,227, 83, 3,141,117,180,231, 45,246,176,129,251, 40,163,117,145,
+152, 31,216,222, 49,177, 71,151, 54,183, 91, 1, 34, 81,119,255, 33,118, 59,119,181,145,176,239,250,154, 40, 46, 51,154,114, 91,
+ 33, 62, 90, 84, 42,120,193,196, 79,112,139, 97,235,172,117, 64,181, 38,187,112,194, 29, 96,103,196,116,170,111, 86, 6, 20,167,
+211,215, 84, 4, 37,162,254,217,128, 65, 89, 28,220,126,233,171, 7,238,236,242,235, 14,156, 93,128,103,234,222, 64,123,116,174,
+ 34, 51, 69, 4,185, 20,179, 49, 38,237,164,106,179, 4, 65,116, 40,142,114,201,119, 24, 84,244, 96, 63,197,125,218,178,168,167,
+134,210, 80,244,171,189,176,237, 28, 0,229, 19, 62,188,147, 11,249, 58,119,187,255,179, 81,179, 57, 82,185, 88,222, 5, 72,145,
+190, 16, 71,185, 10,132, 89,241,164, 84, 59,242,215,133,186, 98,205, 86,103, 62,224,147, 17, 60,239,211,245,104, 71,229,181, 78,
+116, 23, 28, 67,123, 40, 12,212, 45, 84,119, 30,248, 94,196, 54, 45,198,201,236,102,246,116,219,190,221,178, 9,106,233,207,179,
+236,224, 74, 2, 91,211, 4,213,108, 53, 79, 82,132,116, 94,132,199,198, 6,235,210,125,253,162, 43, 2,119, 79, 84, 93,163, 88,
+177, 90, 81,241,116,186, 96, 91, 11, 74, 83, 43,156, 23,202,100, 43,148, 42,162,211,132, 38, 64, 99, 28,110,143,186,166, 50, 18,
+ 91,217,178, 82,227, 24,150,105, 95, 59,167,190, 51, 6, 44, 45,115,159,220,200,118, 97, 11, 60,134, 55,128,211,132,227,172,153,
+230, 5,130,164,121, 84, 88,169,161, 81, 3, 7,199,188, 86, 76,139, 42,251,181, 17, 6, 98,156,193, 28,112,217, 46, 96, 36, 84,
+108,216,234,134, 4,193, 20, 2, 98,152, 17,252,157, 43,213, 98,103, 35,114, 22, 19, 25,234,133, 94,155, 32, 2,154, 55, 77, 18,
+145, 20,150, 11,225,216,197, 44, 61,232,158, 24,220, 61,197, 6, 21,176, 93,107,174,101,120, 71, 9,152,230,164, 99, 1,214, 23,
+ 47,111, 25, 47,238,159,225,230,230,128,173,102, 59, 12, 74, 71, 85,170,210,167, 33, 53,193,243,103, 47, 0, 38,252,250,211, 27,
+156, 79, 79, 56,222, 31, 65, 85, 16,236,197, 92,230,132,167, 57,161,229,130, 41,178,237,216,212,231,120, 90, 5,147, 37,225,104,
+102,182,160,148, 21, 92, 50, 40,205, 16,106,152,231, 73,119,147, 44,125, 39, 83,107, 65,147,145,227,221, 21,162,148, 84, 4,209,
+ 26, 82,100,136, 4,195,241, 1, 82, 26, 48, 1,136,201, 2,237, 19, 66, 82, 40,206,122, 94,145,171,230,100, 83, 72, 32,182,116,
+165, 82, 65,181,233,102, 48, 50,168, 9,168, 85,112, 3, 90,201,248,226,245, 55,248,195, 55,127, 65,206, 27,234,182,162,109, 27,
+126,253,241,103,220,188,120,134,207,190,124,141,143,239, 79,248,219,119, 63,224,253,229, 9, 55,135, 35,110,151, 25,129, 5,203,
+ 60, 65, 2,225,233,227, 25,219,229,130,210, 50,150,227,172, 98,138, 24, 65, 41,162, 72,195, 77,136,248,230,219,175,240,215,127,
+255, 23,228, 77,191,203,233,112, 64, 54,209,201,195,195, 3,238,110,158,225,249,139, 23,246,146,169,165,136, 53, 55,242,106, 23,
+200, 59,184,139,218,247, 70,158,181, 56, 2,182,169,128,132, 45, 59,120,223,109,169,162, 89,161, 19, 84, 13,161,234,110, 6, 83,
+103,215, 86,209,182,210, 33,160, 54,211,213, 67,188, 53,228, 53,155,213,204,124,200, 66,144, 74,125,223, 75,126,169, 59, 72,137,
+ 99, 7,215,232,233,220, 12,114,100, 23,139,199,192,154, 96, 81,199,185, 10, 16, 18,174, 67,249,109, 84, 65, 61,202,130, 61,231,
+213,118,138,225, 19, 82,234, 0,128, 52, 42,154,204, 69, 42, 4,146,125,194, 42, 70,134,184, 64, 80, 90, 1,113,210,231, 14,213,
+ 78, 62, 2,144,117,164, 15,210, 49, 51,219, 24,211,187,114,208, 63,125, 79,126,176,249,231, 26, 68,195,117, 90,169,253, 61,177,
+ 23, 90,191,167,178,237,246,198,122,184,215,221,238,212,119,178,159, 50,231,255, 57,114,140,204,187,204, 59,126,128, 5,153,104,
+137,222,125,245,210,212,206,202,157,187, 29, 64, 20, 7, 46,118, 71,234, 83, 5,116,184,226, 27, 4, 99,225,147, 46,132,205,194,
+104,169,112,102,203,106,187, 4, 56,180,253,133,111,241,200,172, 34,180,198,186,146,147,170, 77,206, 72,208,115,123,155, 89, 51,
+177, 11, 63,225, 29, 77, 80, 60, 57, 15,150,200, 53,244, 3,253,123, 49,241,233, 72,143,195,136,110,237,163,114,186, 74, 81,219,
+ 79,195,252,153,197,142, 14,183,247,195,151, 82,123,148,177, 51,248,177,115,135,184, 90,219, 61,248, 93,240,183,163,249,249,228,
+167,161, 90, 81, 3, 75, 89, 68,119, 59,136, 97,128,135,101, 80,140, 31, 97, 98, 64, 26,218,138, 38, 52,242, 50,155,139,130, 11,
+ 54,195,236, 6,211, 28,152,100, 5,176,220,132, 38,117,116,209,221,214, 47,184,172, 13,151,139, 34,134,131, 77,213,136, 2,130,
+ 23, 47, 13, 8, 8, 64, 83, 4,236,180, 48,110,239,111,181, 17, 72, 9,141, 24,219,186,105,145, 97,207,159,236,168,139,226, 57,
+186,132, 14,112,242,117,142,176,241, 38,154, 65,211, 80,145, 82, 2,130, 6,157,181, 86, 17, 16, 17,109,181,170,157,181,254, 57,
+ 81, 4, 73, 4,137, 18, 34,235, 59,156,210,140,173, 20,228,109, 3,115, 67,176,194, 56, 64,155,101, 45, 0, 18, 88,204, 21, 17,
+244,254,221,182, 21,185, 22, 4,142,253, 25,136,212, 69, 95,254,161,135, 97, 11,145, 1, 32,144, 43, 86,180,141,229, 77,249, 91,
+106,235, 2,147, 20, 84, 16,176, 94, 54,164,168,177,139, 79,235, 19, 94, 60,191,195,237,225,136,183, 15, 79, 40,214,129,144, 9,
+ 76, 2, 7,108,185, 97,126,113,143,251,151,207,241,225,253, 3,222,254,242, 70, 85,144, 76,168, 91, 54, 70, 55,105,222,248,241,
+136,252,116,178,234, 86,189,209,165, 10,132,129,121, 14,152,141,154, 84,115, 70,185,172,106,254, 23, 1, 85,181, 28, 88, 49,140,
+ 41, 6, 84,113,159,233,200, 91,175,165,161, 86,193, 60, 3, 83, 74,216,182, 85, 71, 44, 32, 76,209,104, 95,100,209,164, 14, 6,
+ 8,140, 86, 43,182,203,134,156, 11, 66, 12, 72,105, 82,220,174, 84,228,154,209,195,178, 57,116,120, 66,171,186, 6,248,230,155,
+111,241,167, 63,254, 21,219,186,161,174, 25,229,178,225,183,159,127,198,241,217, 17,159,127,253, 26, 31, 62, 60,225,127,190,251,
+ 9,239,206, 79, 56, 46, 7,220, 45, 11, 18, 19,166, 89, 69, 22, 31,222, 63, 98, 93, 47, 64,107,152,166,164,126,245,148,204,158,
+211,112, 31, 24, 95,255,241, 27,252,229,223,254,172, 20, 59, 1,166,155,131,122,132, 1, 92, 78,103,228, 92,240,234,203,103,186,
+203,241, 24, 81,163,116,229, 98,161, 62,190,243,219, 41,146, 99, 84,225,154,131, 17,220, 23, 92, 90, 54,238,191, 90, 53,106, 46,
+150, 3,110,214, 56,235,168,168,169, 13, 75,153,236,210,139, 33, 87,139,187,184, 68,147,167, 24, 49, 24,244, 1,181, 51,227,221,
+ 10,215,119,111, 86,112, 58,136,194, 78, 43, 93,221,184,199,119, 15,254, 40,106,117,114,106,109,143, 47,117,174, 35, 25,177,201,
+193, 24,162, 87,173,147,223,106, 43,224, 20, 70,198,171,171,188,237,214,110, 85, 70, 6,187, 9,125, 90,109,195, 47, 79,193, 68,
+ 72,250,249,121,192, 77,140,170, 53,104,181,218,255,174,184,101,238, 83, 8,125, 47, 3,177,217,197,168,231,178, 19,212, 97,224,
+ 21,134, 42,117,185, 91,165, 64,215, 0, 23, 31, 59,162, 82,199,252,246,194,190,226,154, 98, 38,100,182,188,106, 17,194,214,157,
+ 83, 64,145, 98,244, 60, 30, 48, 20,242, 94,149,186, 45, 81,106, 67, 74, 19,136, 45, 2,181, 54,213,206,136, 32, 82, 68,228,235,
+196, 61,247, 16,195, 71,192, 6,186,210, 3,184, 2,102,129,130,175, 16,101, 68,135,178, 77, 81,196, 11, 11, 75, 18, 20,232,184,
+ 87,159, 61,234, 5, 68, 45, 58,190,173,172, 10,114, 29,185,122,202, 90, 53, 94, 59, 91,108,245,128,204,136,180,222, 13,147,199,
+168, 26, 3,220,109,187, 20,198, 72,218,199,228,173, 99,100,140, 98, 38, 99,111,142, 29,144, 72,118, 56, 98,215, 5,224, 42,212,
+ 72,159,139, 82, 11,106, 29,217, 10,213,242, 6,116, 63, 92, 60,111,204,222,171, 61,145, 86,174,152, 8,125, 37, 19,212,247, 2,
+ 25, 76,147,126,137,219,191, 60,115,158,168, 14, 30,125, 95,217,170, 27,137, 88, 11,249, 42, 21,165, 85,228, 54,194,109,174,216,
+255, 54,254, 22, 66, 87, 41,184,109, 84,109,134,130,243,121,195, 86, 84,236,170,227,111,181,183,114,159, 34, 14,139, 99,149,134,
+251,155,123, 76,211,162, 92,136, 24,177, 94, 46,216,182, 12, 56,139,160,138,190, 31, 84,122, 6,188,214,210, 14, 13,218,191, 47,
+ 35,122, 86,108,228,207,204,168, 92, 59,168, 43, 25, 38, 89, 45,105, 38, 44,110,110,205, 53, 84, 56, 39,180,168,172,150,211,229,
+132,188,109,144,186, 33,248,125,195,140, 32,202,159,159,162,130,117, 20,181, 28, 33, 0, 46,235, 69,167,201,118,255, 2,132,216,
+ 97, 1, 98, 36, 48,225, 62,102,195,142, 48,228, 37,146,216,173,238, 94,100, 85,127, 3,243, 20, 1, 84, 21, 16,217, 88,110, 14,
+202,128,127,248,248,255,201,122,179,102, 73,146,227, 74,243,168,154,153,123,108,119,205,165, 54, 20, 64,128,196, 16, 32,184,205,
+ 80,186,101,100,254,255,235, 60,140,180, 72,147,221, 32,216, 93,168,172, 37, 43, 43,151,187, 69,132,187,153,169,205,131,170,154,
+251, 5, 31, 64,128, 64, 85,229,189, 17,238,102,186,156,243,157, 7,124,249,242, 18,219,221, 6, 8, 65,173, 85,228,184, 82,149,
+ 91, 10, 51, 46, 94,220, 66, 32,184,127,247, 51, 78,119,143,216,109, 55, 8, 20,244,139, 3,169, 92, 63, 37, 28, 14,123,220,159,
+206,104, 82, 48,231,140,156, 5,149, 9,227, 54, 96,187,219, 32,206, 39, 77, 62, 42, 69, 85,198,137,187,103,148, 12,172, 79,149,
+144, 6,224, 60, 47,228, 32, 10, 90, 85, 74, 33,148, 92,250, 75,151, 66, 64, 57,235, 67, 18, 99,194, 56,110, 85,192,101, 17,175,
+129, 25,173, 86, 76,167, 19,242, 84, 45,253, 42, 32,196, 37, 38, 84,164,161, 5, 66,131,238,149,168, 9, 88, 26, 30, 30,158,240,
+119,127,247,123,252,230,215,191,197,227,253, 3,166,167, 35,144, 43,222,191,125,135,253,213, 21,190,248,242,115,188,127, 60,225,
+127,127,243, 29,126,190,191,195,110,191,195,197,110,139, 0,193,184, 25, 65, 0, 62,222, 29,173, 67,159, 49, 12, 3,226, 38,130,
+147,138,115,216,162, 29, 63,255, 74, 85,238,197,192, 28,227,102, 3, 68,234,216,202,233,120,196,213,213, 21, 46,175,174, 58, 77,
+ 79, 33, 42, 70,255, 19, 49, 13, 90,123,150,235,172,240,153,128, 90,170, 41,118,213, 38,226,251, 61,102, 19,180, 84,253,223,155,
+189, 44,181,137,121,189,139,170,168,193, 10,252,242,152,208,106, 59,111, 2,168,233, 58, 36,164, 96, 64,144,130,106, 12,250,192,
+ 1, 49, 69, 29,171, 86,243,193,122,243,211,154, 70,225,118,128, 11,245, 9,138,239, 9,181,227,145, 5,159,233, 2, 36, 45,177,
+ 59, 86,178,102, 59,188, 29,181,233,123, 80,165,205,244, 14,165,182, 2,145,166,169, 85, 45,168, 99,160, 19,204, 22, 5,113, 53,
+ 63,127,128,137,254,172,163,171,181,160,216,254, 81,247,254,250, 55,180,158, 29, 31,244,247, 78, 30,204, 97,241,170, 30,142,227,
+151,186,103,135, 27, 64,163,209,130, 48,237, 69, 64, 15,230,104,207, 46,148,214, 11,121,233,214, 38,120,126,184,229, 64,115, 35,
+212,182, 92, 4, 30, 22,243,204,147,142, 53, 87,221,132, 96,214,101,177,199,246, 66,215, 10,141,218,106, 50,208,250, 42,192, 27,
+ 9, 94, 5, 72, 57,112,167,173,163,105,215,233,119,182, 58,105,150, 29,176,136,204,200,124,203,214, 69,138,141,203, 13, 63,236,
+ 33, 65, 82,171,109, 73,130,229,215,103,171,235, 28,139,170,147,186,117,115,178, 2, 30, 46,133, 4,150,204,108,157, 88, 80,183,
+196,214, 90,140, 46,136,190,187,175,134,254, 93,227,210,251, 78,219, 86, 47, 94, 40,118,155, 91,159,210,144, 5,230,180,174,124,
+239, 9,125,213, 18, 33,163,254, 57,197, 5,122, 94, 32,186,214,101, 21, 20,244,159, 57,239, 90,212, 52,209,130,167,249, 5,108,
+184,108,215, 72,196,224, 86,204,106, 23,144,241,252,217,214, 22, 85,223,185, 82,235,194, 57, 88, 11,213,121,137, 51,213,150,127,
+149,104, 72,206,244, 7,230,156,113,158,179, 90,133,107, 70,140, 74, 13,101, 10,104, 34, 10,247,114,225, 99, 19,156,115,197,197,
+229, 65,149,232, 28,144, 6,194,195,221,132, 50,103,157,210,132,230, 96,130,254, 46,123,184,139,131,146,158,197, 32, 18, 48,176,
+ 38,131,174,117, 5,204,209, 96, 84,202, 69,233,130,224,192, 61,211, 94, 57, 17, 13, 20, 34,184, 41, 22,188,161, 33,231, 25, 77,
+ 42,130,217,195, 9,238, 0, 80,251,116, 12, 17, 33, 64, 81,178,172, 63, 82,169, 64,205, 21, 37,102, 20,209,230, 86,157, 30,236,
+209,132,125, 19,179, 10,130, 88, 88,204, 74, 33, 90,249, 5, 57,116, 28, 32,179, 75,250,195, 82,169,198,136,218, 4, 15,143,143,
+136,156,240,242,246, 6,176, 75,192,237, 74, 62,230,189,190,189,197,205,237, 13,238,238,239,241,112,119,143,121,154, 12, 46,209,
+129,144, 24,135,141, 98, 63, 83, 68, 35, 85, 30, 79,115, 69,129, 32,163,226,230,229, 13,198,113,131,156, 51,114, 54, 46, 57,169,
+ 48,131,216, 43,153,138,196, 9,104, 13,227,192,144, 2,148,162, 10,101,143, 12, 21, 49,171, 83,213, 15,118,136, 17,193, 58,250,
+ 33, 13, 24, 54, 91,181,170,249, 30,166, 84, 76,211,140, 92, 84, 41,158,226,208, 3, 56,134, 65, 15,246, 24, 20, 31,200,209, 85,
+139, 51,202,249,140, 63,252,225, 15,248,253,223,253, 1,167,227, 17,167,251, 39,212, 83,198, 79, 63,253,132,237,213, 37, 94,127,
+245, 5,238,239,158,240,167,111,222,224,221,253, 29,246,251, 45, 46,118, 91, 36,104, 72, 77, 26, 6,124,124,120,194,241,116, 66,
+ 41, 89,131,100,134, 8, 30,146,218,251,108, 18,242,171, 95,124,133,191,254,237,223, 32, 12,154, 62,151,134, 17,108,227,114,110,
+132,233,116,198, 44, 5, 87,215,151,166, 14, 23, 80, 19, 85,169,155, 71,211, 49,193,213, 98, 66,229, 47,128, 27,176, 40, 83,191,
+ 48,186,104,206,192, 33,206,117,247, 60,129,102,240,150,104, 10,217, 82,149,174, 20, 77,161, 95, 74,182, 75, 51,246,177,162,147,
+ 11, 61, 57, 47,196, 4,138,209, 46, 33,191, 60,218, 51, 11,145, 62,203,250, 47,248, 72,214, 86,216, 29,185,104, 7, 8, 71, 70,
+138, 81,197,108,180,172, 30,154,233,188, 84,196, 84, 49,231, 25, 37, 27,159, 62, 23, 11, 14,105,246,223,233, 63,211, 63,167, 82,
+139, 70,233, 6, 94, 44, 75,213,146,238, 98,236, 85,123,195, 66, 14,235,163, 79,235,198, 74, 46, 29,181, 10,219, 79,106, 60, 43,
+ 47,201,107, 82, 61, 54,164, 95, 44,112,136,198, 74, 13,188,116,107,203, 5,188,134,103,136,163, 88,153, 58, 54,116, 73, 1,227,
+110, 99,244,203,215, 65, 41,226, 84, 61,183,152,217,162,191, 86,183, 35, 45,138,123,145,102, 9,119,102, 41, 19, 60,179,221,249,
+116,164, 54, 99, 59, 88,218,214,162, 68, 94,199,184,182,149, 58,121, 57,115, 5, 42,194,228,160, 7,170,143,129, 61,106,244,153,
+138,204,159,109,167,231, 17,155,149, 83,119,233, 76,218,149,247,226, 92,164, 23,189,253,178, 93, 57, 14,220,179,239,236, 6,238,
+104, 93,179,115, 22,181, 89,130,245,188, 12, 81, 53, 55, 49, 42,198,153,136,251, 89,180,184, 29,218, 51,145,166,195, 85, 28,171,
+187, 96,102, 91,207, 74, 55,236,120,255,238,125, 18,180,160, 80,165,239,233, 29,199,235, 4, 51,223,115, 43,237,174,233, 62,222,
+104,142,206, 75,144,214,250,103,237,207, 30,153,136,147,152,150, 41, 89,171,230,139,175, 70, 56,109,221, 48,144,139,103,127,168,
+ 53,212,215, 87,173,227,124,177, 68,221, 90,215,158,139,224, 52,205, 40, 85, 80,170,194,195,152,117,157,193, 68,200,115, 69,246,
+130, 9,126, 14, 3, 23, 23, 7, 37,160,166,136,210, 42,242, 52,169, 46,170, 23,100,212, 85,229,221,191,223,211, 19,219,179,100,
+ 82, 47,100,217,227, 83,140, 19,146, 40,217,119, 94, 17,195,178,166, 48, 76,165, 22,161,222,189, 15, 35, 40, 70,133,162,149,130,
+243,121, 70,173,130, 60,103, 45,129,205, 21, 67,204,202,126, 55,203,101, 12,177, 39, 60,138, 80,119,145, 21,107, 78, 98,127,232,
+124,159, 99, 66,163,214,253,138,139,194,215, 57,202, 26,234, 16,123,104, 70, 50, 32, 71, 10, 10, 29,153, 69,208, 2, 35,218, 69,
+250,243,135, 79,200,191,252, 13,110, 95,222,234, 23,158,140,244,196,212, 71, 42, 95,124,254, 2,148, 5,143,159,238, 48,157,206,
+154, 26,213,204,182,196,172, 62,116, 19, 91,128, 26,166, 50, 67,114, 85, 40, 1,233,152,252,226,226, 2,113,136,104,164, 21, 76,
+ 48,116,100, 48,202, 80,109,130, 16, 18, 34,180,154,243, 42, 40,215,162,150, 40, 11,236, 0,150, 23,156, 89,201, 70,155,180, 55,
+170, 92, 4,199, 4, 10, 22,137, 89, 21,157, 43, 32, 80, 26,187,160, 48,128, 48,110,212, 95, 93, 74, 70,218,140, 32, 84,148, 50,
+227, 92, 51,104,158,241,187,191,251, 61,126,245, 55,127,141,143,111,223,227,225,195, 29,100, 46,120,252,120,135,195,197, 21, 94,
+124,245, 37,238, 30, 30,240,199, 63,189,193,199,199, 71, 28, 46,246, 56,236, 54, 96, 17, 12,155, 13,246,155, 61,222,126,248,128,
+167,199, 35,164, 22,140, 73, 51,124,213, 34,145, 16, 83, 66, 2,240,250,243, 87,248,235,223,252, 10, 45,169, 37, 99, 24, 6, 72,
+ 36,204, 70,101,147,154,113,127,255,128,171,235, 43, 92, 94, 93,118, 13,133, 86,240,150,204, 85,107, 95,184,113,207, 76,182, 3,
+115,181, 47, 93,231,125, 55, 52,180, 96,253, 95,173,139,226,214, 64, 13,205,108,141, 49, 4, 29,123, 5, 54,250,154,244, 0,151,
+ 20, 55, 58,134,111,179,249,129, 93, 61, 10,112, 10, 42,234,177, 66,131, 81,122,170, 82,140, 73,189,162, 65, 87, 45,117, 22, 75,
+115, 10,102, 67,203,230, 9,175,171, 52, 37, 19,114,217,152, 94, 86, 30,109,205,126,175, 32, 10,168, 69,119,218,218, 89, 51,164,
+ 49, 66,212,203,222, 21,190,190,163, 86,139,170, 44,151,182, 65,145,148,198, 21,150,110,184,182, 30,119,218,218, 10, 41,105,127,
+ 77,224, 69,169,222,172,184,164,198,139, 53,203, 96, 52, 76,246, 44,250, 8,223,246,197,205,216,228,142,173,212, 24,225,229,208,
+106,118,145, 50,145, 9,199,100, 1,138,128,209,200,146,211,160, 25,206,122,169, 82, 15,146, 17,169,221,237,231,235, 3, 8,245,
+ 9, 15,170, 32, 14, 97,249, 44,205,233, 65,253,240,244,100, 41, 83,123,147,118,238, 61,137, 10, 4, 97, 2, 75,235, 17,161,228,
+ 43, 22,155, 64, 52, 91,205,168,144,108, 73,144,243,209,189,208, 51, 41,184, 53, 22, 46, 14, 52,119,143,217,114, 67, 76,224,158,
+ 65, 33,207,226, 96,155,136,217,121,237, 50, 91,137,194,244, 35,174, 54,138,102,163,217,201,138, 23, 79, 43,237,134,254, 53,110,
+213, 11,206, 78,183,233,144,102,189, 87, 52, 9, 86, 80,173,156, 20,210,250, 30,219,139,233, 82,107,207,234,240,203,102, 41,198,
+128,166, 51,127,123,135,168,123,238, 26,150,144,149,238,139,239,207,154, 21,134,125,218, 54,233,228, 38,196,103,177,219,212,156,
+ 51, 95,245,247,133,172,244, 36,246,103, 98,161,188, 73,169,198,109,104, 54, 41, 4,152, 23,203, 28,181, 10, 84,237,234, 69,138,
+173, 90, 90,231,125, 72,107,152,179, 78, 91,114, 46,104, 80, 70,137,138,223, 84, 79, 80, 61,130, 88,116,181,118,185,223, 97,216,
+140, 90,116, 12, 17,243,116,194,249,116, 70,205, 69,173,109,129,140, 90, 88,141, 79,207,171, 66,211,198,157, 78,176,107, 58,225,
+233, 90, 35,131, 66, 50, 49, 34, 17,230,218, 64,164, 25, 30, 42, 68, 71, 31, 69,136, 84, 12, 33,129, 56, 96, 59,238, 16, 6,181,
+ 48,207,179, 21,190,128,106,220, 72, 87,121, 58,222, 23, 32,170,216,150, 89,233,114, 98,100, 82,145,138,220,170,134,117,197,128,
+ 90, 21,196,108, 42,200,214, 71,115,141,178,141,148, 24,196,110,223,208,131,161, 4,173, 14,124,124, 87,107, 69,226, 1,145,116,
+ 52,208,247, 49,208, 10,163, 22,193, 79,223,255,140,243,223, 31,113,117,117,192,144, 6,196,176, 69,149,251,142,158,188,188,188,
+193,197,229, 21, 62,222,125,196,124,212,174, 51,164,136, 44, 21,151, 33, 33,142, 35,164,101, 32,207,104, 85, 16,226,136, 83, 86,
+245, 98,173, 25, 28, 45, 43, 60, 4,164,210, 16, 88, 1, 57, 76,172, 73, 80, 73, 61,241,177, 54,196, 97,196,169,156, 80, 90, 85,
+243,190, 77, 40,216, 40,105,141, 27,144,109, 7, 42, 38,192, 72, 17,117,183,211, 76,227, 24,144,203,132,132, 8, 48, 33,139,118,
+ 4, 67, 72, 61, 97,172, 73, 69,136, 9,195,102,192, 60, 77, 32, 2, 82, 26,193, 53, 35,207,132, 13, 2,254,143,127,254, 23,124,
+253,235,175,240,225,187,159,112,247,238, 14,181,204,120,184,187,195,225,234, 10,175,191,252, 12, 79, 15, 19,254,215, 31,191,197,
+251,167, 79,184,188, 60,224,176, 25, 16, 74,197,118,183,197,184, 25,241,227,167, 15,184,123,184, 71, 41, 51,134, 20,109, 36, 59,
+ 34, 36,133,119, 48, 69,220,188,186,194, 87,191,254, 5, 36,217, 14,103, 28, 45,248,198, 58, 11, 52,156, 78,103,180, 6, 92, 93,
+ 93,216,101, 94,148,202,228, 24, 84,160,231,191,195, 8,106,108,128,139,126, 33,182,165,162,100, 86,201,103, 0, 65,168,118,209,
+140, 11,228,136,245, 82, 11,108,123, 38,219, 9,166,148,144, 98,196, 44, 25,181, 1, 69, 52,109, 40,250,120,210,166, 73,220,160,
+126,212,160, 99,107, 38,128, 68,105,106,186, 43,244,180, 35, 85,241,214, 60,235,239, 90,147, 97, 84, 27, 90,105, 75,190,183,249,
+ 93,157,218,214,201, 89, 80,222,178, 90, 93,178,249, 95, 85,119, 18,120,232, 22, 60,110,174, 76, 39, 83, 80,215,101,172,234,197,
+142,167, 93, 33, 24,223,160,185,187,213,186,151, 37,140, 67, 12, 38,209, 21,222,198,172, 15, 65,119,145,170, 28, 46, 32,108, 80,
+101, 57,148,181,147, 50,145,145,119,147,180, 96, 73, 65,210, 15,107, 4, 6,213,188,220,113, 43,123, 27,155, 63,155,104,137,221,
+100,168,255,191, 90,126, 56, 81, 53, 21,185,123,211,101, 57,164,155,114,173,123,146,163,131, 79, 5,224,224,237,116,120, 22, 16,
+ 3,142, 64,208,105, 13, 9, 33, 57,216, 39, 6, 16, 59, 26,212,118,184, 85,121,205,228,163,108, 52,212, 86, 44,250,215,124,226,
+164, 5, 34,153, 85,183,231,173, 87, 81, 29, 71,183, 92, 54,160,114, 39, 2, 46,254,114,195,139, 54,107,117,219, 34,120,132, 21,
+237, 96,127, 39, 76,207, 97, 50,250, 90,141,217, 23, 22,213,185,207,180,152, 86, 17,168, 48, 50,156,169,244,117,236,110,246,200,
+160,197,180, 78, 5,170, 77,189,244,217, 16, 46, 43, 30,185,255,117,178,112,251,149,123,104,103,159, 78, 15,148,127, 47, 43,155,
+ 28,140,172,215,122,138,152,238,135, 45,216,162, 53,112,117, 94,131, 77, 85,136,141,159, 17, 12, 63, 12, 72, 49,139,163,211, 10,
+ 77,172,197,196, 43,176,148,246,241,145,128,218, 2,114,213, 14, 91, 12,118,166,253,194, 26,242, 36,144,202, 11, 18,183, 49,164,
+101,157, 42,136,190, 3, 89, 8,181, 52,139, 87,206, 8,148, 16,195,128,104,223, 77,245, 98,135,212,134,157,155, 96,123,117, 1,
+180,138, 24, 7,132, 68,200,247,130, 60,149, 30, 72,212, 26, 64, 49,232,164,205, 87, 44,221, 73,235,107,172,102,244, 56, 61, 27,
+100,212, 28, 17,182,226,154, 34,117,102, 75, 10, 25, 28, 2,170,110,184,251,212,130,155,122,214, 41, 13, 72,195, 14, 73, 70,228,
+118, 70,206,103, 61,207,188,252, 55, 30,130,152,123,128, 72,239,151, 16, 7, 48, 39,213, 35, 84, 5,164,229,105,198,102,127,129,
+192,128,148, 89, 59,245, 96, 64, 6,141,195,109,160,208, 22,186, 23,120,201, 79,134,199,221,137, 90,149,154, 32,163, 97,140,108,
+184,102,238, 85,169, 19,130,114, 46,248,240,241, 61,158,142, 71,188,188,185,196,213,237, 13, 30,222,255,140,153,124,103, 25,112,
+184,216,163,214,138,211,241,136, 86, 42,242,108,116,125, 17,140, 67,194,118,136, 40, 19,161, 49, 35, 79, 74,226,137,126, 96, 17,
+236, 66, 72,170, 42,103,125, 8,209,128,163,141,221, 67, 28,112,154, 39,112,217, 98, 23, 66, 15, 15, 24,198, 17, 1, 51, 90, 1,
+106, 85,161, 76, 64,192,169,204, 58,250, 13, 58, 34, 77, 12,205, 97,158,102, 96,206,152,114,134,108,183,216,238,246,224, 52,116,
+ 10, 81,149,108,150, 39,198, 97,183, 5,170,102,244,166,113, 64, 74,140, 57, 87,108,247, 35,254,225,111,255,128, 23, 47, 95,224,
+167,239,222,226,227,251, 79, 40,243,132,233,241, 9, 23,215, 55,120,249,250, 37,238, 30,158,240,199,255,120,131,251,135, 71,220,
+222, 92, 99, 28, 6,180,121,194,102,183,193, 48,142,120,255,254, 14,159, 30,239, 81,207, 51,198, 20,144, 98, 0, 15, 17, 60, 4,
+196,148,176, 29, 18,110, 95,238,241,139, 95,125,137, 33,141,104,212, 48, 14, 90, 36,149,234, 85,181, 86,180, 79,143, 79,184,190,
+185,194,246,176,183, 39, 91, 64,164,190,251,138, 98, 7,149,139, 89, 66, 63,164,105,213, 21,192,208,143, 70, 73,208,120, 76, 14,
+154,197,109, 20, 57,199,122,135, 16, 48, 12,163, 85,216,250,226,249,133,238, 99,252, 72,140,228,201, 72, 16, 85,240, 7, 2,135,
+ 6,110,209,190,123, 21, 71,185, 13, 41,164,128,136,173, 30,105, 33, 64,152, 80,167,138,124,158,236,130, 72,157, 40,133,160,175,
+ 78,128, 94, 20, 20, 22,111,109,235,154,109,223,129, 54,179, 21,233,116,194,245, 19,205, 46, 11,117, 67, 24,207, 29, 74,164,171,
+157,174,165, 29,127, 99,152,123,130, 32,205,118,229, 16, 48,196, 14, 66, 35,200,193, 40, 83,214,209,169,109,202,138,252,186,182,
+ 11, 6, 52,148, 21,119, 61, 44, 59, 72,159, 48,240,146,108,198, 85, 39,103,194, 4, 10,234, 19, 47,246,115,181, 21,210, 4,180,
+164, 26,172,199,242,205,166, 16, 66,250, 89,113, 85,251, 92,183,184,214,218,137,100, 85,124, 98,179,100,201,123,247,217,132,236,
+176, 81,129, 99,224, 65, 57,255, 85, 44,245, 78,213,224,165, 20,180, 0,108, 2, 1, 33, 24, 18,117, 21,219, 89,107, 15,175, 89,
+198,239,166,138, 71,232, 19,142, 37,187, 92, 22, 26,222, 74,104, 70, 43, 47, 61,179,138,222,168, 71, 76, 47,153,237, 30,119, 25,
+140,205,175, 62,109,107,108,170,129,106,108,157, 80, 45,121, 76, 45,124, 75,119, 74, 28,236,112,247, 48, 25,238, 73, 98, 44, 97,
+ 89,123, 54, 49,235, 41,247, 34,233, 89,212,170,131,157,104,161,208,173, 59, 74,145, 98,107, 19, 47,170, 90,143, 26,110,180, 6,
+ 26,201, 18,161,203,230,109,183,112, 44, 2,161,144,102,120, 83, 89,206,115,215, 65, 41,171, 66,189,255,246, 55, 88, 97,195, 6,
+ 78,178,237,140, 16, 66, 51,116,141,159, 19, 85,122,168,145, 23,251, 20,104, 73, 72,107, 48,155,179, 18, 46,179, 40, 77, 17,162,
+129, 75, 25,192, 92,117, 74,146,179,118,183,195,160, 54,184, 8,194, 44, 21,165, 11, 16, 9, 82, 51, 2,116,244,206, 70, 43, 36,
+ 0,211, 52,161,204,165, 71, 1,147, 52,133,228,180,250, 76, 27,225,223,181,167,174,249,187,194, 12, 12,196,200,164,103,144,144,
+ 38, 19,138, 71, 81,179, 6,107, 33,104, 1, 64,118,119,114,100, 32, 0,149,129,113,216, 33,141, 3,142,119,143, 56,205,211, 34,
+238,101, 91,195, 64,167, 17, 3, 15, 29,244,149, 44,182,188,148,217,178, 31, 8,211, 52, 97, 87,206, 8, 67,244,226,113, 25, 81,
+249, 78,178,227,103, 72, 3, 1,252,152, 35,163, 1, 49, 41,126,209,115,177, 99, 82,201,189, 10,125,150,209,117, 12, 9,185, 84,
+ 76,117,198,135,187, 71,140,105,131, 23,215, 87,234, 38, 49, 21,244,213,213, 21, 54,187, 45, 30,238,239, 81,138,210,133,148, 95,
+171, 85, 75, 26, 24,227,160, 23, 39,106,133,200,132, 20, 9, 67,136, 22,110, 17, 49,152, 32,140,154,133,100, 72, 65, 19,160, 20,
+ 65, 26, 6, 8, 8,231,227, 25,173, 9, 54,187, 17,197, 42,219, 52, 68,112,100, 21, 27,152, 34, 87, 95,100, 32, 13,170,216,230,
+ 24, 49, 12, 91,203,184,173, 93,224,196,156, 16,134, 1,129,128, 58,159, 49, 79, 39,148, 50,161,200, 9,135,195, 14,227,102,196,
+233,241,168,225, 33, 49, 64, 74,198, 97, 51,226, 31,254,225,239,113,115,115,137, 31,191,251, 1,159, 62,222, 35, 31,103,156,238,
+143,216, 95, 95,227,229,235,207,112,255,120,198, 31,255,227, 27,220, 63, 30,113,113,115,129,253,120, 64,206, 39,236,183, 91,236,
+182, 7,252,244,254, 35, 62,126,250,132,233, 52, 35, 4,253, 29, 98, 84,177, 24,167,132,113, 72,184,190,217,225,243,215,159, 35,
+166, 4, 48, 97,220,237,128, 16, 80, 12, 18,226, 28,255,243,249,132,214, 4,215,215,151,136,198,233, 14, 97,232, 97, 6,209,172,
+141,117,181, 91, 10,172,223, 27,135,160, 98, 60,115, 64,232,132,172, 41, 25,222,188,210,145, 21, 78,228,163,243, 30, 44, 1, 45,
+ 8, 66, 72, 58,234, 76,209, 2, 60,168, 35, 91, 99, 12,138,125, 52,197, 58,135,216,213,201, 68, 2, 72, 65, 43, 5, 82,116, 79,
+199, 33, 34, 36,213, 50, 72,209, 20,185, 90,178, 9, 85, 84,117, 26,250, 51,109, 94, 86,166,158,119,207,166,241,224, 24,208,108,
+ 23,171,192,138,185, 59, 28, 52,135,161,160, 74,214, 81, 59,209,210,117,245,125, 28, 43,157, 46, 4, 32, 16, 56, 69,196,152, 0,
+ 35, 38,162, 7,225, 12,221, 78,196, 38, 80,117, 7, 77,111,161, 69,150, 60,233,181,110,128,160, 73,117,181,116, 74,154,183,133,
+ 30,100,226,185,232,145, 98,247,121,187, 55,217,223,113,119, 42, 52,114,127, 61,245, 3,121,109, 81, 18,243,146,147,237, 55, 23,
+158,247,130,112,117, 7,156,171,160,201,112,179,108, 81,191,190,239,246,136, 86,114, 5, 59, 41,200,132,155,227, 86,165, 79, 60,
+171, 95, 72,109,241,179, 47, 28,251, 69,207, 33, 6,183,233,228,181,102,204,115,247,105,117,127,127, 93,148,255, 29,222,130,103,
+151,189,200,243, 75,116,253, 47, 71,249, 58,255, 93, 76, 0,217,173,154,208, 49, 50,153,206, 70, 86,232,108, 45,128,249, 25, 1,
+174,154, 24,212, 98,233,208,215,207, 6,194,106, 43, 22,132,167,168,177,141,246, 59, 16,106,229,147,119,158, 72, 7, 62,149,188,
+138, 94,109, 30,210,222,125,226,138, 73,181, 12,140, 90, 59,124, 70,177,219,161,175, 9,168,139,189, 20, 82, 20, 35,233,187, 29,
+ 66,207, 39,112,245,119, 23,207,185,126,162, 25,168,202,224, 46,253,207, 49,100,117,255,156,123, 14,187, 90, 48,171,185,108,164,
+ 22, 99, 20, 8,166, 90, 85, 43,149,171,253,126,122,206,107, 99,163,233,110,205,154, 16,152, 93,182,206, 21,135,203, 3,182,219,
+ 61,216,206,154,233, 84,113, 62,158,213, 54,234, 56,116, 11,251,241, 24,231,231,190,255, 21, 12,105, 37,254,140, 38,138,107, 22,
+ 7, 77,224,142,221,140,129,177,137, 65, 75,100,171,170,154,148, 69, 84, 41,132, 97,183, 5,199,128,167,211, 19,166, 41, 35,196,
+212, 1, 85,108,180, 77,103,187,243,160,206, 2, 61,239,217,200,155, 74,226,244,152,106,215, 30,196, 53,130, 74,217,177,171,112,
+142,213, 94,170,167, 19, 53, 50,204,167, 69, 80,218, 72,149, 89, 21,206,158, 8,229, 94,228, 92, 50, 38,169,248,244,225, 35,134,
+113,192,213,197, 14,155, 52, 98,134,118,193,187,253, 14,200, 5, 79,143,143, 72,166,206, 45,185, 96,147, 34, 60,198, 35,198,136,
+ 54, 23, 80, 10,104,181, 42,247,118, 8,160, 73, 69, 15, 49, 38,148, 90,145,204,206,114,124,120,232,192,145,237,144,240,233,116,
+198,124,174,136, 28, 16,168, 33, 79, 51,208,128,237,168,255,156,167,163,160,148, 10, 12, 98, 80,253,102,216,213,136,200,106,209,
+113,106, 39,197,132,237,110,143, 48, 12,200,101,214,243,163,100, 75,134, 23, 28,246, 7,220,220,220,224,211,199, 15,152,167, 25,
+105, 19, 80,206, 25, 23, 87, 7,252,250,215,191, 70, 24, 34,222,190,121,139,251,143,119, 56, 61,205,200,167, 51,174, 94,188,192,
+213,171,107,220, 63, 62,225,143,127,122,131,135,167, 51,174, 47, 15, 24,134,132,167,199, 59, 92, 92,238,177,187,216,225,135,183,
+ 31,241,241,225, 30, 50,207, 8,129,145,198, 0, 78, 12, 74, 17, 41, 4,108,134,136,171,235, 61,174, 95, 92, 35,109,212,102, 54,
+238,182,224, 20,113,158,206, 93, 72, 35,198,151,126,124, 60,226,246,246, 6,251,253,190, 67, 27,188,242,119,164, 33, 89,206,187,
+ 64,197, 94,227,184, 89,241,167, 93,212, 84,109,103,205, 93,160,227,175,168, 24, 91, 59,196, 0,110,202,220,246, 17,164,103, 15,
+ 83,212, 46,206, 43, 85, 52, 6, 5,243,214,214,128, 8, 94,242,162, 3,173, 0, 23,150, 22,104, 93,169, 52, 49,198,254,108,127,
+134, 30,168,176,112, 34,106,161,219,189,217,118,236,128, 42,113,201,207,120, 15, 37, 33,182, 20, 54,237,200,137,158,195, 56, 90,
+107,104,165,104, 21,238, 23, 2,233,103, 17,131,210, 3, 91, 63,154,213,227, 91, 91, 67,228,214,233, 91,126, 25, 5,142, 8,156,
+ 58,190,214,119,218,204,186, 95, 94, 20,200, 54,163, 36, 70,171,197,108,125, 98,107, 2,234,137, 78,100,186, 16, 80, 67,160,136,
+ 74,134, 68,245, 75,144,208,179,177,225,116,178,117,202, 23, 96,122, 11,233,106,127, 98,130,148,134,103,210,236, 85,160,137,191,
+111,100,140,120,255,220, 59,135, 30, 43,223,115,211,134,221, 45,164,224,168, 22,212, 89, 16, 82,234,231,144,255, 44, 88, 65,111,
+ 58,216, 40, 40, 31, 94, 44,166, 86, 25, 7,140, 34, 21,200,232,124,126,113,231,128, 39,223,184,168,203,172,140,193,214, 40,232,
+250, 33,159,182,232,136,184,149,188, 92, 68,171, 67,189, 85,233,110, 50,103,111,115, 47,151,184, 79, 30, 92, 88,216, 65, 77,173,
+ 62,243,157,183,254,190,105,210, 97,205, 85, 51, 36, 44,117, 82,207,156, 69,248,232, 23,178,172, 60,233,206,230,167,182,232, 70,
+150, 34,198, 66,117, 68,186,152,235, 57, 15,126,161,134,246,239,212,136,118,180, 10,200,161, 16, 16,124,133, 99, 86, 81,113, 7,
+197,234,217, 9, 86,112,156,203,180,216,162, 65, 61,244,169, 72,235,127, 70, 46,139,120,178, 59, 48, 68, 25, 10,173,169, 22, 3,
+162,207,162, 54,124, 42, 6,211, 21,128, 21,154, 20, 48,166,132,193,190,131,156,139,217, 49,173, 16, 19,224,226, 98,143,180, 13,
+ 32,214, 28,137,211,227, 9,231,167,147,126,175,150, 93,208, 45,198,242,151,164, 5,211, 56,180,149,120,208, 50,224,153,164, 59,
+100, 60, 44,225,245, 74,109, 0, 0, 32, 0, 73, 68, 65, 84,169,182, 10,230,134,113, 80,160,151,254, 94,138, 75, 86,125, 70, 68,
+107,140,221,238, 2,219,205,128, 10,193,253,227,157,158,139, 62, 57,139,201, 32, 77,122,174, 14,105, 68,108,128,216,103, 43, 21,
+ 40,249,108,162,191, 96, 2, 76, 1,137,174,153,162,135,146, 52,172,171, 86, 90,198, 45, 14, 95,176,100, 50,183,120,249,248,109,
+136,131,146,187, 8,253,176,175,162, 88, 82, 33, 65, 46, 21,224,136,159,127,254,132,214, 42, 94,220, 94,227,234,230, 6,143,247,
+ 15, 72,131, 50,178,207,211,132,167,199, 19,110,175, 14, 8, 32,141,164,227, 1,176,136,190,148,162,141, 55, 84, 60,193,134, 53,
+165, 16, 16,147,118, 60,109,214, 3, 61,162,106, 7, 39, 64, 26, 19, 8,132,211, 52, 33, 50,212, 75, 46,217,210,189, 28,237, 71,
+154,109,219, 8, 41,105, 24, 73, 76,140,221,102,163,163, 36,209,145, 62, 51, 97,220,108, 85,108,193, 1,243, 60, 99,122,154, 16,
+134,100,113,120,130, 52, 50,110,110,111,113, 60,157,241,244,240, 0, 6, 97,206, 21,183,175, 95,225,247,191,253, 45,136,128,239,
+191,127,139,251, 79, 15, 56, 61,158,113, 62,157,112,251,226, 37, 46,175,175,241,225,238, 19,254,247, 55, 63, 96, 42, 13, 55,183,
+215, 24, 2, 35,159,102, 92, 94,238,177, 63, 92,224,205,219,119,184,187,187, 71,206, 5, 3, 3,105, 36, 85,210, 39,205,115, 79,
+ 67,194,203,171, 61, 46,111, 15,250, 51,198,128,221, 97, 11, 30, 35,230,236,116, 59,235, 22, 65, 56,159,180, 48,184,186,186,234,
+ 22, 14,221, 19, 87, 27,255,234, 33, 64,129, 17, 73,109,136,222, 49,198, 16, 76,117, 89,186,215,155, 2, 33,134,193, 84,217, 11,
+120,165,154, 29,145, 45,186,146,221,227,233,234, 98, 19, 57,181, 10, 77,251, 98,173,122, 35, 51,106, 54,208, 70, 41,154, 49,128,
+134, 92,102,237, 16, 98,210, 61,111, 41, 64, 17,195, 71,234,164, 70,170, 96, 72,186,118, 81, 49,147, 35, 98,205,254,101,108,119,
+105, 90, 57,251,158,204,164,185, 70, 99, 91,246,198, 10, 40,209, 56,226,186,212,246,230,253,181, 72, 87, 50, 12,112,211,177, 57,
+194,194,236,102,110,160, 48,152,213,175,174, 44,162, 6,178,160, 37, 1, 79,197, 47, 89, 85,192, 43,177,146,180,214,119,237, 4,
+157,148,137,253, 89,221, 10,200, 4, 18,219,239, 89, 84,109,179,247,151, 93,247,103, 22, 63, 93, 95,160, 79, 50,106,191, 8,100,
+229,239, 94, 14, 91,244, 52,175,101, 54,233, 10,109,239, 18,189,144, 82,208,139,249,214,155,115,234,101, 25,243, 27,170, 84,130,
+253,125, 65, 45,158,234, 21,182, 44,109,114,193,151,203,182,161,147, 51, 91,145,176, 93,154, 98,191, 15,160, 5,208,218, 2,213,
+125,212,180,248,156, 29, 14, 94,139,237,170, 85,232, 14, 49,208,137, 78,158,150,200,208, 37,242,180,245,184, 91, 21,187,181,191,
+200,159,247,245,133, 62,195, 13,170, 38,247, 20, 50,143, 2, 86,212,238,114,169,119,166,189, 77, 63, 40,120, 56, 76, 83,161,113,
+ 47,104,106,183,122, 18,209,127, 10,106,241, 48, 22,136,244,226,220,223, 49,167, 5,118, 7,194,127,250,123,109,162, 98,223,165,
+159,237, 78, 38,212, 98,162,106, 70,134, 61,175, 62,121,227, 85,118,124,103,223, 91,199, 46, 54, 5,242,128, 27,233,207,151,190,
+ 7,181,182,190, 66,241, 41,129, 88, 81,170,234,119, 69, 82,151,172,211, 69,189,212,171,186,120,138, 97,185, 99,194,144, 18,152,
+129,156,181,147, 87,241, 32, 67, 74, 1, 18,176,191, 56,104,193, 19,245, 12, 57, 31, 79,152,143,249,217,196, 34, 4, 70, 37,177,
+ 34, 8,221, 10, 7,211, 8,244,231,201, 7,105, 6,131, 1,205,203,253,201, 13,173, 40,156,103, 59,170,192, 27,129,122,210, 91,
+176,149,101, 41,130, 97,123,129,113, 24,241,240,248,132,227,227, 17,187,195, 14,212,106,119,109, 5,203, 83,108,173, 42,116,134,
+ 53, 55,130, 18, 48,213, 25,179,135,104,145, 62,183, 37,103,240,118,163,234,120,235, 3,122,166,121,199, 47,154,144,170, 11,160,
+224, 15, 33,235,135, 35, 13, 82,129, 52, 90,232, 64,245,204,219,102, 35,198, 0, 20, 65, 43, 21, 3, 15, 56, 30, 79,120,120, 56,
+225,230,230, 26, 87, 55, 23,120,255,243, 78, 5,120, 4,243, 47,235,113,185, 25,148,129,171, 34, 14,160,205, 25,105,171,192,153,
+211,121, 54,153,127, 64, 28,146,122,255, 88,247,143,173, 78, 11,172,164, 1, 45, 2,105,187,197,241,233, 17, 85,148,168,165,176,
+155,128,211,121,234, 60,203, 33, 2, 3, 1, 97,208, 24,210, 20, 71, 29,177, 86,245,238,213, 82, 16,199,136,205, 97, 15,204,106,
+173,153,142, 71, 76,179,126,176,220, 0, 30, 18,168, 2,183,215, 47, 49,132,136, 31,254,252, 6,231,249, 17,151,219, 3,126,241,
+245, 47,241,219,223,253, 14, 53, 87,252,244,237,247,120,248,112,143,251,199,123,148,169,225,197,235,215, 56, 92,238,241,254,227,
+ 71,252,249,219,239, 81,114,195,245,213, 78,147,235, 78, 5,135,139, 29, 54,135, 29,126,124,251, 14,159, 62,221, 97,158, 51, 66,
+ 96, 12, 67, 48,251, 75, 66,160,136, 49, 68,220,222, 92,225,240,226, 18,137, 3, 98, 72, 24, 47, 15,192,102,128,212,102,202, 74,
+233, 86,160, 90, 43,206,211,132,155,235, 43,108,183,155,222,101, 19, 5, 27,119, 85,139,246,212, 17,120,150,220, 49,155, 77,234,
+ 42,192,197, 14, 27,144,118,139,150,138, 21,250,136,177, 64, 12,180, 17,109,164,100,139, 87,243, 26,235,136, 21,181,234, 75, 56,
+207, 93,141,204,164,197,138,160,244, 46,210,253,186,205,246,149, 33, 16,132, 27,202, 92, 81,114, 0,178, 70, 81,166, 56,244,248,
+ 86, 14, 58, 2,115,111, 59, 27, 13,173,148,138, 22, 53, 32,168,239,143,221,219, 75,253, 30,177,139, 65,137,139,139,185,133,160,
+193,171, 58,226,140, 65,215, 56, 68,203,232,185,138,160,213,162,251,115, 22, 4, 19,177,233,164,196, 70,103,196,136,148, 44, 9,
+190, 90, 52,174,121,194,185,233, 56,206,161, 59,180, 74,180,107,210, 35, 73, 93,140, 68,100,133,142, 84, 13,168,208, 96, 88, 85,
+ 84, 55,210,145, 48,121, 0,146,237, 47,217, 52, 52, 62, 89, 91,217,197, 56, 4, 43, 28, 74,239, 89, 66,224,174,175,168,221, 94,
+165, 32, 22,178,213,163,184, 2, 94, 13,246,104, 20,122, 82, 87, 15,142,113,222,190,214,251,253,130,139, 49,246,223,137, 61,100,
+ 69, 76,201,110,105,107,154, 32,103, 19,135,178, 34,164,137,238,128,121, 21,150,210,224,144,157,208, 47,115,216,212,167, 91,130,
+220,161,111,234,249,102, 97, 85,109,237,111,127,182,162,228, 78,198,211,226,175, 24,187,220,152, 1,188, 34,182,209,130,251,245,
+ 74,215,217,248,210,178,138, 34, 77, 1, 95,171,165, 69,134,160, 66, 69,169,253,179,172,121,233,244,188,171,127,206,131,215, 41,
+141,148, 2,167, 39, 5,203, 84,112, 5,122, 88, 97,120,171, 77, 30,124,122, 16, 83,210,169, 68,173,152,165, 90, 97,160,154,165,
+102,130, 64,223,249,215,226,106,110,233,223,149, 22,226,234, 78, 80,183,140,116, 45, 69,105,213,166, 55, 43,196,176, 77,249, 22,
+ 42,161, 95,244, 10,181,162,158, 46, 8,187,208, 53,214, 58, 23, 45,150, 19,219,159, 81,128, 97,163,151,186, 2,119, 42,138,152,
+176, 76,244,159,119,113,177,197,197,205,101, 95, 5, 73, 41,120,186,127, 82,113,165,235, 72,236, 92, 18,172, 10, 20, 24,147,129,
+232, 57,116,201,197,163, 94,212, 88, 17, 87, 87, 20,201,253, 38, 97, 72,193,166, 29, 65,117, 23, 82,193, 80, 16, 88, 17,224,176,
+189,196, 16, 70, 60, 61,126,111, 89, 4,140, 86, 26, 74,206, 72,141, 53, 37,174, 85,196, 72,125,106,199, 20, 77,108, 63,163,228,
+108, 58, 32, 88,179,163, 34, 80,142,188,116,234,125, 28,103,146,184, 10, 32,218, 88,171,153,128,134, 65,214, 29, 39,101, 22, 55,
+221,167,147,117,192, 98,156,110,183,200,204,181, 64, 0,140,227,136,135,167, 35, 30, 31,143,120,245,250, 18,215,215, 87,216,239,
+119,152,207,103,173, 0,165, 98, 11,237, 46,121, 63,130,238, 25,114,202, 16,243,231,198, 52, 34,114,192, 24, 25, 40, 5,219, 65,
+191,200, 96,208, 4,106, 13, 45,207,118, 25,233,139,125,216,141, 40, 85,211,218, 2, 17, 90,110, 72, 38,150, 58, 29,159,176,217,
+110, 32, 41, 97,183, 9, 56, 14, 64, 76, 73, 59, 1, 16, 74,107,152, 37, 99,164, 45,198, 52, 96,179,217,162, 72,197,233,241, 1,
+249,244,136,105,154,186,141,165,206, 51,102,110,248,236,197, 75,220,222, 92,227,155,111,191,197,221,199,119,120,241,234, 37,126,
+253,183,191,197,175,126,243, 43, 76,211,132, 15,223,255,132,135,187, 71, 60, 61,158, 48, 72,192,205, 87,215,216,110,246,248,249,
+253, 7,252,249,199, 31,145,198, 13, 46,175, 19,242,148, 81,167, 25,151, 55,215, 8,105,192, 15, 63,218,133, 62,205, 72, 32,140,
+145,109,223, 60, 32,134,136, 49, 6,220, 92,239,113,251,106,167, 66,159, 20,177,185,220, 34, 13,106,183,152,107, 69,157, 51,170,
+ 85,199, 42,172, 56, 35, 72,195,213,229, 5, 82,138, 11,198, 84, 68,149,222,194,160, 32,207,144,167,250,238, 90,193,100, 85,105,
+196,168,251,221, 58,247,248,200,192, 97,217, 93, 11, 41, 9,176, 45,116,186, 16,244,162,174, 34,125,215, 94,171, 94, 58, 14,236,
+168, 77,144,155,218, 2, 57, 14, 74, 22,236, 47,151,216, 75,111,135, 40, 5,196,164, 93,113, 32, 65,133,146,252, 20,220,162, 59,
+231, 92,171, 5,186, 4,125,177,109,181,227, 59,193, 92,178, 93, 98,218,178,201, 74, 68,197,196,150, 98, 88,128, 74,214, 85, 85,
+ 3,198,232,193,169,187,124, 19, 31,177, 98, 41, 81,103,181, 2,154,239, 88, 90, 1,153,178, 83,139,209,160,202, 94,143,233, 92,
+ 93, 20,196, 42, 14,115,171, 23, 89, 23,204, 28, 12, 46,146,123, 60,170, 62,255,171,203,134, 44,210,178, 17, 80, 21,255, 43, 54,
+ 38,100, 27,235, 11, 90, 47, 32,136,150,112, 17, 16,158,229, 44,244, 34,204,139, 0, 49,101,189,177,200,251, 57, 71, 58,230,182,
+127,184, 2,115, 96,187,116,203,254,238,187, 68,248,122,174,153, 58, 91,139,188, 16,212, 9,224,211,133,234, 98, 52,211,108,192,
+ 38,128,108,118, 74,129, 90, 1,187,192,183,255,172, 86,152,144,152, 15,219, 4,185,160,103, 43, 0, 47,220,156, 29,239, 35, 91,
+162,246,108,199,238,163, 99,142, 1,129,130,103,168,152,187, 64,139, 90,166,184,140,144,215,204,116, 43,110,200, 52, 36, 34, 22,
+247,187, 14, 61,106, 42,166, 37,120,168,142,254, 12, 69, 68,237,157, 88,144,220, 94, 96, 20, 35,168, 45,145,162,134, 41, 22, 65,
+181,159, 63, 37,127,159,107,239,208,215,212, 54,119,234,232, 63, 47,235,196,173, 74,183, 85, 49, 27,100,136, 85, 58, 89,173, 75,
+173,173,233,229, 16,220,134,183,202,238,142,122,129, 17,251,248,158,204,158,173, 86,200,236, 0, 35, 16,106,109, 40, 69,250,200,
+155,104,133, 3,110, 13, 69,128,154, 27,230,217,187, 87,237,236, 55, 73,217, 37,165, 86, 72, 34,108, 54, 90, 52,234, 56, 95, 51,
+ 64,124,237, 81, 50,112,113,125,109, 56, 94, 32,166, 1,143,247, 15, 56,157,207,125,116,175,247,133, 22, 47, 30, 54,165,208,162,
+ 21, 51,194,243,209,237,241,225, 14,253, 41,171, 16,155,214, 39,214,227, 56,232,251,109,159,119,149,220, 33,107,126,243,143,251,
+107, 72, 35,156,143, 39,212,156,123,146, 96,100, 32, 17, 33, 55,221, 62, 12, 60, 32, 38, 61,235,213, 82,171,174,137,156, 51,164,
+ 85,132,160, 99,255, 82, 20,196, 51,112, 66, 92,231,251, 98,153,132,244,135,183,239,246,196, 84,198, 54, 2,204, 70, 89, 74, 49,
+ 42,163,183, 0,173, 54, 11, 40, 80,223,177, 87,132, 67,136,120,124,122,196,135,187,143,120,245,250, 5,110,111,110,176,223,111,
+209,106,198,249,120, 70, 8, 1,227, 62,161, 65, 52,156,131, 3, 38,201, 8,194, 40,181,234,206, 36, 38,148,167, 25, 44,218, 85,
+234,206,194,118, 46, 57,163,205,106,151, 17, 38,164, 33, 97,224, 1,211,211, 81, 31, 50, 34,108,134,134, 33, 6, 76,231, 51,206,
+231, 51, 54,219, 17, 0,176,217, 14,216,111,107, 63,208, 17,180, 7, 11, 41, 97,123,216, 99,179,221,161, 53, 32,159, 39, 76,167,
+ 19,230,243,209, 19, 32, 64, 13,152,159,142,120,245,242,107,188,254,234, 51,252,240,211, 91,188,249,246,207,248,252,245,231,248,
+135,127,254, 7,124,246,197,151,120, 58, 62,225,231, 31,222,225,252,120,196,221,195, 3,194, 56,224,234,250, 21,136, 4,111,223,
+253,132, 31, 63,124,194, 16, 7,108,198,164,190,201, 82,113,117,121,137,237,110,135,111,223,252,128,159, 63,126, 64,157,179,229,
+237, 6,251,252, 35, 82,100,164, 24,112,121,177,195,235,215, 47, 49,151,134,152, 26,246, 23, 23, 24,134, 81, 87, 7, 45, 67,102,
+125, 65,164,101,181,125, 53,224,124, 44,184,186,190,192,102,187,241, 57,141,197,129, 54,176, 56,168,195, 33, 23,244, 44,171, 89,
+109,111,122,249, 70,183,112,128, 13,242, 97,128,159, 30, 84, 99,251,183,213,200,207,119,186,170, 52, 94,196,153,250, 60,105, 86,
+ 58,168, 65,114, 54, 86,251,208,115,192,245, 98,179,161,176,100, 61, 48,141,234,167,153,226,165,119,157,186, 31, 87,150,114,206,
+ 89, 83,214, 34,161, 22,245, 61, 83, 82, 26,221,114, 57,182,197,243, 29, 66,159,248,196, 97, 48, 96, 76, 65,233,151,185,142,192,
+ 21,132, 99, 59, 84,179,166, 53,169, 32, 81, 20, 43,219,162,108, 73, 11,211, 29,174, 78, 64,146,129,139,102, 52,243,253,170,154,
+127,161,212, 73,155,221, 4,162,186,146,186, 82,110,203,178,131,243, 11,147,171,217,242, 66,208,206,167,233, 33,199, 22,148,193,
+254,185,147,142,242,106, 43,166,128,239,217,178,230,243, 14,157,234,197,157,104, 86, 93, 8, 0, 39, 87, 40,116,141,225,130, 97,
+169,205,178, 20, 44,133,139,171, 90, 74,201, 71,187, 70,209,163, 96, 34, 57, 2,139, 98,127,189,251, 21,139,202, 36, 59,216, 27,
+137, 9, 52, 3,194, 10, 27,235,241,162, 30, 57, 75, 29,127,210, 12, 90, 68, 93, 5,239,208,156,103,153,224,180, 44,149,123, 39,
+110, 8, 96,219,166, 47,152, 84,135,243, 52,233,153,246,254,191,245,145, 54,173,172, 80,134, 98,237, 90, 5, 82,166,133,172,216,
+226,207,199,223,122, 25,164, 24,123,106,155,228,210,225, 52,235,119,177,245,204,118,253, 69,168, 46, 96, 35,159, 2, 40, 58,119,
+129,209,168,200, 80, 86, 24, 89,244,117,137, 67,165, 56,104,134,133,246,171, 75,160, 73, 41, 21,193, 82, 8, 59, 65,177, 71,183,
+182,133,240, 71,100,223,181, 91,218,202, 51,162,160, 71,230,138, 16, 74, 89, 44,195, 61,243,189, 25,121, 81,164, 71,179,206,179,
+ 70, 89,207,181,232,207,193, 1, 97, 72, 42, 86,174,130,145, 53, 68,203,220,121,125, 34,201,204, 40,181,128, 34,112,251,226, 70,
+ 45,216, 49, 32,113,195,211,227, 17,199,199,220,247,219, 93, 16,222,117, 28,207,133,147,125,101, 34,205,173,234,234,254,114,240,
+ 19, 47,235, 41, 10,122, 38,111,134,132, 72,107,219,119, 65,106,164,193, 74, 85, 48,110,174,113,113,121, 1, 42, 25,231,211, 89,
+161, 50, 28,186, 0, 29, 22,233,173,236, 31,234,107, 39,237,214,243, 2, 73,130,122,211,137, 44, 41,177, 86, 72,101,196,117, 16,
+ 0,185,232,200, 14, 18, 90, 5, 11, 84, 90,108, 62,160,134,138,138, 49, 42, 33, 77,154,147,149, 84,208, 16,147, 30, 52,165, 20,
+139,103, 85,200,200,221,195, 19, 66, 32,236,183, 7, 92, 93, 30, 80,230, 51, 78, 31, 63, 32, 13, 35,104,183,197,148,207,168,121,
+ 82,191,178,161, 47,107,206,136, 49,170,160,202,169, 92,165, 96,191, 25, 65,118,104, 73, 46,186,147,173, 21,141, 25, 67,138,200,
+245,140, 90,213,103,238, 31,142,176, 18,140,220,154, 18, 67, 80, 40, 76,204, 64,109,166,128,142,216,111,183, 24, 55,131,114,183,
+107, 69,153, 39,204, 79,143,168,229,140,106,201,102,166,121,196,213,229, 37,190,252,226, 11, 60, 62,156,241,253,247,111,241,234,
+243,207,240,143,255,252, 79,184,253,236, 21,238, 62,221,225,227,219,159,241,120,255,132,249, 84, 48,238,119,216,238, 15, 56,157,
+207,184,127,124,192,221,253, 61, 54,105, 64,160,128,243,227, 3, 98, 72,184,121,121, 3, 10, 1,223,124,251, 6,239,127,190,135,
+148, 25, 32,141,172,229,196,106, 91, 11,140, 52, 4, 28, 46, 6, 92, 93,239, 52,177,172, 17, 46, 15,215, 24,134,168,227, 92,129,
+ 37,215,233, 88, 87, 59,217, 1,167,211, 17,141, 10, 14, 87, 7,196,196,168,173,120,131,101,232, 95, 21, 91,248,197,174,145,186,
+154, 3,239, 21, 49,172,131,108,166, 6, 94,118, 98,170,168,230,168,251,222,214,227, 63,105,133,106,125,174, 44, 21,169, 75,246,
+183,237,242, 69, 4, 82, 50,178, 93,140,105, 72,102,117, 50,171, 74, 19,228,170,192,147,148,210,106, 28,153,156,164,164,212,174,
+166, 43,157, 20, 19,116,229, 29, 86,249,210,161,235, 64, 22,241,155, 32, 26,102,146, 44,165, 43,215, 2, 22, 77,162, 10,145, 33,
+ 85,225, 51, 28, 3,196,178,208,165, 42, 76, 7, 6, 13,137, 72,170,170,247,231,132,116, 31, 12,182,181,194,226,136,214,253,179,
+ 79, 32,176, 62,236,165, 11,180,180, 75, 46,186,187, 51,109,128, 64,128,106, 5,136,225,194,200, 46,150,230, 42,167, 85,148,164,
+111, 3, 21, 82,163, 57, 9, 36,220,199,214, 20, 8, 92,245,112,227,192, 96, 97, 21,156,145,114, 28, 32,238,138,113, 74, 31, 86,
+227, 84, 88,154,158, 24, 74,150, 1,214,171,145,164,106, 88,143, 81, 40,153,150,241, 43, 75, 48,161,163,199,137, 54,176,212, 30,
+164,228, 86, 0,189,168, 43, 24, 10,246,145, 90,117, 84, 31,162,241,189,139,118,135, 70,180, 91,160, 86, 97,149,216, 75,125, 74,
+225, 66, 39, 18, 64,109,201,203,234,177,216,216, 94,253,214,209,132,139,205, 2, 90, 44,155,192,156, 34,122, 65, 7, 43, 48,100,
+185,160, 97, 97, 43,182,178,232, 98,179, 21,145,108, 61,210,245,255,159,109, 74, 84,139, 22,167,244, 23,172,119, 15, 90, 97,219,
+203,250, 51,211,224,248,100, 89,229,175, 47,216,215, 62,170,183,159,217,167, 46, 46,238, 18, 17, 20,152,243,103,149,180,232,110,
+ 0, 11, 71,214,115,192, 33, 48, 85, 59, 70, 83,206,117,173, 7, 69, 2, 23,245, 45, 40,233,172,162, 33,160, 9,247,139, 92, 28,
+205, 44,189, 78, 84,251,150,216,237,140,134, 60, 23, 13,123, 41,217, 60,217,138, 32,143, 28,112,156,102,212, 90,177,219,142,136,
+ 49, 88,178,102, 69,206,181,235, 28,230, 82,112,253,234, 26, 87, 23, 7,156, 75, 70, 74, 3,206,231, 9,167,227, 9, 13,185, 23,
+177,158, 81,222, 68,108, 26,161,146,231,158, 94,231,216,106,105,166, 61,117, 77, 4,119,219, 34,208, 84, 3,194,132, 97,136, 24,
+134,193, 62,203, 96, 19,148, 12,178,189,120,147,130,221,230,128,237,120,129,227,253, 3,206,211, 73,221, 50,204, 26, 73, 12,255,
+124, 10,134,141,166, 48, 6,142,157,192,106,190, 64,117,140, 16, 35,133, 1,129, 38, 72, 41,200, 83, 70, 8, 81,213,239,110,199,
+112,165,109,143, 18,116,118, 55, 7,133,191,144, 82,218,208,128, 92, 10, 46,118, 59,221,155, 20,179, 16,152,159, 19, 28, 33, 77,
+237, 95,196,250, 96,115, 76,248,112,127, 7, 17,193,126,183,199,126,183,199,253,112, 7, 74, 73,119,233,155, 29, 30, 30, 31, 48,
+165,140, 97,136,120,178, 79,189, 24,224, 98,216,140,136,251, 4, 97,194,156,103,240, 48, 42, 20,102,158, 81,179, 10,159,226, 56,
+ 32,133,128,185,100, 28,143, 25, 97,163,158,105,176, 70,229, 5,138, 40,243, 19, 24, 98,118,181,164,105, 57,131,166, 97,165, 49,
+ 97,123,184, 64, 12,140,154, 51,242,121, 66,105, 19,202, 52,105,178, 84,205,168,243,172,146, 38, 14, 24, 54, 91,252,213,175,126,
+ 9,105,130,239,223,124,135,219, 23, 47,240, 15,255,248,247,120,245,226, 22,159,238, 62,225,227, 15, 63,227,254,195, 7,204, 21,
+216, 94, 94, 96,220,111,113,124, 60,226,254,241, 17,199,115,198,126,127, 1,112,195,241,225, 9,227,102,131, 23, 55, 47,144, 91,
+197,155,239,191,199,251,143,122,161,115, 83,143,121, 76,212, 81,146, 99, 34,221, 21, 93,108, 16, 55, 17, 21, 5, 99,218, 96,220,
+ 12,166,250,213,209,228,156,149,129, 76,102,123,170,181, 98,154, 38,236, 47, 54,184,184,216,154, 66,122, 65,186,118, 1,142,117,
+191, 61, 66,210,170,250,238,141, 13,193, 44, 26,158,117,108, 35, 55,240,179,132, 50,106,106, 31,139,113,201, 94, 15,134,197,132,
+ 37, 88,209, 74,193,235, 76,235, 82, 50,230,233,100,254,111,141, 97,140, 67, 68, 83,169,114,199,248,114,228,190,143,107, 22, 88,
+ 65,172,163,208, 24, 24,115,182, 44,226, 16, 86,104, 91, 21,148,181, 78, 39,147,158,125, 80,107,134,241,152,116,100,106, 7, 70,
+ 21, 7,194, 4, 37, 86, 81,233,151,181, 34, 79, 75, 71, 31, 71, 94,246,108, 94, 29,251,174, 93, 25, 10, 90,233, 55,243,235,138,
+ 84, 19, 96, 89,153,200, 12,110, 98,136,226, 85,114,150,143,116,151, 69,154,238, 96,221, 91,236,145,175,118,105,120,196, 43,175,
+252,234, 30, 7,170,157,182, 44, 35,127, 31,195,175,194, 55,124,111,216,136, 87,255, 60, 59,132,171,239, 60,235,146,161,110, 86,
+ 44,159,126,178, 37,163,245, 81, 52, 55,227,220,163,139,247, 52,177,173,233,158, 54,134, 69,204,135, 37,107, 94,133, 74,232, 17,
+166, 20, 76,183,192,139, 32, 83,245,239, 11,185,175,209,115,118,186, 11,205, 52,175,221,119,192, 98,159,183,254,195, 57, 68,237,
+166,209, 86,161, 29,210,119,235, 58,145,169,221, 75,189,228,180,219, 84,170, 9, 98,228,110,237, 99, 14, 29, 7,172, 25,235, 64,
+ 53, 74,153, 98,101, 77,161,173,153,166, 86,184,152,248,212, 38, 32,157,184,103, 73,136,181, 86, 76,115,214,103,131, 96, 54, 98,
+233,241,182,110,129,114,235, 31, 76, 15,194, 33, 44,182,198,230,146,125, 23, 63, 58, 65, 81,122,225,133, 78,231,163, 62,173, 45,
+213,146,212, 34,119,209,160, 54, 55, 11, 89,176,139,241, 22, 71,155,141,147,236, 44,175,102, 59, 52,193, 91, 17, 89, 70,230,173,
+ 26, 35,222,214, 60,173, 97, 46, 85, 47,107,131,253,196, 20,245,204,153, 84,143, 48, 12, 73,139, 38, 81,145,156, 79,134,171,193,
+159, 94,221,222, 64,168,118,130,224,233,116,194,249, 52,233, 57,196,100, 58, 34, 90, 83,143, 45,213,111,113,132,201,138, 91,209,
+224,144, 31, 66, 76,140, 38,193,156, 19,190, 95, 39,108,183,169, 63,147,221,209, 80, 69,239, 34, 34,212,198,184,185,125,137, 20,
+ 8,111,159,238, 48,231,169,139,182,165, 53, 67, 42, 91, 54, 1, 8, 28,163, 10,184, 61,240,201,194,181, 60,164, 42,218, 10,177,
+172, 34,109,227,146,136,216,250,190, 11, 96,192,186,176,100, 96, 25,205,191, 54,202, 26, 19, 54,105,163, 2,133,162, 34,187, 44,
+ 25,185,248,174, 47,232,206,195, 64, 8, 49, 6,108,134,128,199,187, 71,204,231, 9,219,109,194,126,191,195,184,217, 96,191,223,
+ 99,122, 58, 97, 28, 19, 68,128,243,148,113,123,117,129,187,159, 63, 1,150, 75, 91, 1, 12,227,160, 47, 59, 19, 42,130,133, 19,
+ 4, 76,211,140, 96, 15,118, 28, 20,143,122,124,120,130,204, 0, 13,186,251, 97, 34,236, 46, 14, 32, 52,228,121, 66,140,205,188,
+214, 9, 3, 1, 23,219,132,195,229, 65,255,154, 24, 81,202,132,233,116, 68,144,134,104, 84, 31, 33, 91, 45, 84, 61,244, 98, 98,
+124,249,213,231,184,184,218,227,251,159,222,225,197,235, 91,252,254,239,126,135,203,171, 3, 62,125,122,192,207, 63,190,199,167,
+119,239,208,152,113,243,249, 43,180, 16,113,255,233, 30, 79,119,247,168,129,113,216, 31, 80,203,140, 79, 31, 62, 96,127, 56,224,
+246,234, 26, 79,211,132, 55,111,126,192,195,195, 35,100,206, 0, 10,226,144,144,172, 75,102,110,216, 15, 1,183,215, 59, 12,219,
+104,140,121,221, 57, 14, 99, 66,138,193,212,218,106,237,153,103, 67, 54,138, 22, 86,231,124, 2,152,112,121,113,109,202, 74, 27,
+ 65, 59,174,212,108, 95,174, 48,214, 70,143, 86,135, 75,179,144, 24, 66,201,179, 42, 85, 99, 64, 16, 19,133,144,118,192, 58,210,
+213,151, 60, 4, 54,237,131,197,237,250,168,147,212,211,238,209,151,181, 1, 77,114,223, 69,198,180, 49,165, 61,119,143,178,103,
+ 69, 55, 65,231,201,103, 0,148,180,123,175, 22,214,192,182,195, 76,113,128, 67,235, 20,173,234, 25, 97, 58,190,173,197, 64, 33,
+ 68,221, 50,231, 25, 0, 10,169,208,145,152, 4,187,124,197, 40, 27, 29,169,106,192, 21,118, 11,215, 66, 17,243, 8, 19,144,143,
+ 41, 61, 6, 84,158, 1, 91,208,196, 72,115, 22,233,217, 68,119,241, 38, 86, 83, 95,184, 66,110,216, 44, 77,160, 98,158,125,253,
+206, 96,151,122,179, 11,219,173, 82,238, 59,103,167,131, 88,129, 80,154, 49,184,237,210, 98, 1,178, 84,237,198,155,217,172, 12,
+232,210, 21,131,204,186, 99,195,194,124,247,253, 39,154,239,219,101, 21, 57,251, 60,255,194, 51, 51, 16, 21, 37, 93, 69,223, 41,
+178,177, 61, 32, 64,100,187,100,213,130,231, 44,242,148,210,114,234, 82,195, 82, 59,154, 77, 8,122, 54, 53, 75, 40, 35, 67, 80,
+ 11,214, 86, 45, 49,165,252,178,239,239,103,119,179, 5, 38,245,204, 30, 99,189,235,247, 68,172,138,162, 30, 52,227,151,104, 80,
+138, 32,170,142,238,245, 99,214, 6,162, 86, 91,123,152, 86,163,211, 25,225, 77,146,122,243, 37,120,124, 44,117,145,177, 10,198,
+236,231, 55,173, 68,173,165, 43,192,165,106, 26,166, 67,104, 22, 72, 0,117, 39,130,143,180,189, 32,171, 77,150, 40, 94,219,235,
+ 55,114,155, 31, 33, 64,159, 51, 69, 58, 55,117,147,128,108, 55,175,214, 48,181,113,218, 59, 19, 66, 23,191,137, 52, 8,170, 53,
+ 79,188,216,252, 96,246, 84,210,247,170,218, 26, 64,154,238,191,115, 41,154,175,110, 20,184, 30,109,218, 8, 21, 21,121,178,188,
+ 8, 0,227, 48, 0, 12,204,150,127, 62, 14,140,113,140, 32,210,139,179,204,179,105, 93,244,243,186,185,185,198,139, 23,215,152,
+138, 32, 68, 45, 80,142,199, 19,242, 52,171,125, 54,232, 61,230, 33, 43, 77, 17,119, 86, 80,152, 2,159, 91,199,194,146, 51, 29,
+ 52, 29, 94, 11,113,210, 39, 76,171,200,128,200,132,171,237,166,231,237, 17, 3, 98,206,135, 49, 24,167, 32, 4,220,190,120,173,
+172,247,233,132, 34, 25, 33, 12,189, 24,213,220, 18, 99,191, 67, 35,134, 21,210,105, 66,230, 38,152,114, 70, 33,247,227,235,174,
+190, 22,160, 88,129, 17, 93, 24, 35,230,113,237,123, 69,132, 46, 6, 91, 12,248,100, 99,182,138, 33, 37,164,144, 80,244,179, 64,
+ 45,210, 47,252,214, 20,190,160,127,168, 2, 61,134,113, 84,193,216,221, 35,190,124,249, 26,187,221, 14,145, 3,118,219, 29,242,
+211, 73,163,228, 8, 56,207, 51,134, 52, 34, 13, 9,179, 20,204, 77,209,133,155,253,168,191,120,174,200,243, 25,227,238,128, 34,
+ 5,243, 92,176, 97, 31,225,232, 56,183,228, 9, 28,151,125, 25, 19, 99, 28, 71,228,170, 8,210, 97,187, 55,136,130,122, 23, 95,
+190, 30,251,203,221,166,140,243,116,194,249,116, 66,106, 64,177,248,216,148,116,151, 93,160,221,230, 23,191,248, 18,175, 94,189,
+196,249, 60,227,246,250, 22,191,252,237, 95,225,226,242,128, 79, 31, 62,226,135,111,222,224,167,183,111,113,177,191,196,213,237,
+ 75, 84,169,248,240,254, 45, 30,158, 78, 24,182, 7,140, 67,196,244,244,132,199,199, 71, 92, 94, 94,225,197,205, 13, 30, 78, 79,
+248,246,207,111,241,248,240,132,156,103, 13,176, 73, 17, 27, 82,207, 54, 24,216, 15, 35, 94,223,236, 17,198,164,177,124, 99, 52,
+ 81,138,254,126, 61, 27,185,122,214,185, 94,150,100, 54,170,114, 46, 56, 28,148,132,231, 47,156,136, 44, 9, 92,176,156,224, 90,
+128,106,236,109,195,231, 50, 27,162,180, 86, 43,238,138,138,196,130,174, 5,164,102, 11,167,214, 75,162,245,100, 34,221, 9,181,
+ 90, 84, 40, 99,128, 31, 77, 38, 50, 96, 69,211,177, 97,169, 74,131, 35,106,136, 33, 34,142,201, 88,234, 54, 46,101, 27,215, 70,
+197, 23,207,243, 73, 89,208,172, 65, 7,205,240,145,106,141, 3, 34,121,199,236,161, 49,170, 70,247,216, 75, 72, 85, 64,143,237,
+240,188,203, 36,243,198,242,192,207,130, 52,218, 42, 34, 82,204,150,197, 54,205, 82,181,181, 21,145,214, 1,232, 42,161,118, 15,
+172,123,124,125,196,166, 29,124,180,103,111, 85, 60,253,101,240, 70,207, 18, 55, 14,180,229,119,251, 14, 48, 52,233, 75,238, 6,
+ 1, 69, 67,136,154,216, 73,140,106, 22,162,173, 63, 86, 92,251, 14,107,241,212, 69, 6,168,160,127,230, 61, 60,165, 73,151,210,
+ 50, 43,139,157, 68,255,247, 92,129,108, 1, 54,108,118, 46,207, 77, 96, 90, 58,240,102,207, 89, 99,151,230, 90, 14, 0,121, 28,
+107, 1, 26, 33, 84, 70,115,116, 42,177, 18,194, 88,245, 53, 84,163,126, 14,188,208,245,224, 25,211,180,234,170,100,161,152,209,
+ 18, 60,102, 93,244,202,103, 95,237,239, 32,253,156, 84, 56,103, 12,120, 27,223,123,130, 95,223,205,183,234, 53,129,193,116,244,
+ 98,119,104, 12,200,134, 41,141, 87,193, 39,102, 15, 38,127,142,188,218,161, 30, 27,234,202,123,125, 39,165, 39,101,198,152,180,
+238,168,106,115,107,196,154,183,109,188,113,125,215,237,217, 52,235, 99,239, 64,109, 82,193, 29, 43,107, 5, 98, 19, 20,180,197,
+146,102,107,173,181, 82, 95,247,211, 75, 76, 52,122,206,189, 62, 19,186,187, 95,233,113, 86,222,201, 14,175,115,225, 91,177, 14,
+ 93, 4,197,166, 51,181, 8,178, 59,115, 86,240, 31, 23,223,214, 98,162,189, 20,144, 70, 21,244,206,101,134, 52,193, 48,166, 30,
+187,155,171,142,234,155,176, 18, 15,153,112,123,123,133, 16, 19,166,233,140,113,136,168,101,194,244,116, 66,201,181, 11, 68, 3,
+185, 53,180, 45, 98,207, 30,216, 66, 29,215,234,137,132, 88,227,126, 27,208,130, 94,254, 68,170,165,217,140, 3,134,237, 6,229,
+116,182,169,101,132,200, 25,209,214,214, 2, 32,140, 91,140,155,173, 10,219,114,209, 84,207,173, 77, 85, 68,212, 85, 53, 21, 5,
+ 57,216, 59, 20, 99, 2, 7,234, 22,205,211,164,171,229, 38,246,252, 26,240,199, 67,133,162,131, 27, 86,203, 39, 29, 77, 53, 70,
+245,234,157, 86, 21,159, 9, 41,246,195,160,187, 57, 11, 66, 40,181, 44,185,199, 22,205, 41, 22, 80, 16, 66, 0, 82,194,241,238,
+ 9, 63,189,255, 25,191,252,197,103,216, 29,246, 40,173, 33,109, 70,212,144,192, 81,189,125, 31, 63,222,161,197,128,184, 25,144,
+103, 69,149,206,210, 48, 12, 7,147,243,219, 88,159, 4,210,253,201,232,182,172, 92, 4,121,158, 87,227, 55, 29, 1,141,195,136,
+214, 84, 57, 62, 12, 3, 98, 8, 24,237,193,200, 83,198,116, 62,219, 94, 98, 70,145,130, 86,102,228, 34, 64, 27,177,217,108,109,
+172,205,144, 66,248,234,235,207,240,197, 47,190,132,128,144,152,240,249, 47,191,198,118,179,193,221,167, 7,124,247,205,119,248,
+225,155, 31,112,245,226, 26,175,191,248, 28, 15,199, 19,190,255,254, 7, 72,107,184,184,185, 70, 26, 6,220,127,252,128,251,251,
+ 35,110,174, 47,241,226,246, 18, 31, 62, 62,225, 63,190,249, 30,231,211, 17,179,253,236,155, 20,144,152, 32, 9,136,145,177, 79,
+140, 23,183, 91,132, 77, 66,174, 13,135, 67, 2, 15, 17,115, 46,216,108,162, 10, 89,172,171,200,165,218,184, 76,119,159,145, 24,
+243,156, 65, 17,216,237, 54, 8,161,117,145, 90,107,170, 44,133, 65, 34,200, 32, 17, 29,149, 26,168, 7, 94,144, 67, 55,208,204,
+107, 78, 22,190, 96, 74, 98, 19, 83, 54,243,188,194, 32, 33, 13, 13,165,233,202, 67, 68,122, 50,145, 7,198,232, 14,136, 1, 40,
+ 61,138, 44, 95,216, 81,143, 28,151,157,103,179,132,138, 24, 2, 36, 4,197, 72,250,222,144,213,174, 70, 85, 39, 1,238, 33,134,
+117, 60, 49, 68, 72, 35, 20, 20, 11,145,176,181, 3, 91, 50, 89, 13,198,206,214,238,185,228, 98, 34, 66,141,121, 93,239, 66,201,
+212,194, 10,153,145, 69,144,213,180, 91,235,176, 38, 90,226, 66,181, 11,172,125,199,218,204,110, 85, 69, 59, 35,107, 23,236,130,
+ 82,127, 88,179, 60,103, 14,158,238,166, 63, 27, 57,194,214,231,156,158, 21,201,218, 5, 19, 25,139,221, 40,100,158,201, 78,171,
+240,157, 30,224,226,212, 48, 98,104,244,193,210,149, 88,184,157,118, 46,198,173,119, 44, 43,108,244,175,133,198, 82, 64,243, 42,
+134,149,108, 63,160, 17,165, 30,160,194,253, 66,100, 19, 27, 25,133, 95, 59,165, 64, 29, 83,189, 6,219,104, 19, 79,203, 10,128,
+ 26,162,217, 31,245,249,177,155,210, 16,190,110,222,232, 19, 5,255,188, 40,244, 92, 49, 10,181, 7,212,232,202,161,217,158,222,
+ 20,211, 33, 24, 69,112, 1,244,192, 14, 81,247, 93,187,194,222,191,215,190,175,181,103,182,227,116, 69, 52, 40,198, 27, 37,104,
+ 10,156,239,202,125,116,204, 6, 46,106,166, 70,215,130,194, 20,226, 6,225,107,108,233,147, 97, 13,141,145,110, 95, 10,129,148,
+146,105,133,128,102, 39, 24,178,208, 46, 62,154, 91, 95, 71, 8, 22,223, 61, 7,178,252, 2,101,179,119, 56,116, 87,220, 99, 5,
+108, 49,188,179,198,185, 65, 88,186, 79,188, 86,233,116, 56,177,139,188,152, 74,125, 46,106, 15,174,181,234,243,215,153, 0, 22,
+239, 42,170,152, 7,128, 20, 20, 26,211,154,160,204, 90, 92, 13,195, 96,185,234,154, 98,168, 28, 14, 13,220,218, 94,108,176, 63,
+236,213, 37, 96,113,197,167, 83,198,124,158, 0,169, 32, 54,228, 57,187,230,129,208, 26,171, 91,199, 87, 42, 13,214,156,232, 89,
+162, 1, 72,254,174, 24, 18,221,116, 32,206,141,191,190,186,232, 12, 7, 37, 74, 2, 85, 50,136,131,138,106, 91,195,245,205, 23,
+ 72,227, 14,231,211, 17,249, 60,117,157, 90, 8, 17, 37,207, 56,158,158, 80, 73, 16,173, 81, 25,135,193,146, 35, 53,222, 58,215,
+ 25,167,227, 9,185, 89, 46,123, 92, 92, 60,173, 86,148, 57, 35,202, 42,227,149, 86, 15,110, 67, 67, 45, 6,167,143,254, 5,146,
+ 97, 45, 89, 71, 98,134,226,147,102, 68, 54, 83, 69,147,117,243, 32, 71, 80,186,157, 9,184,127,124,192,156, 51,174, 47, 47,145,
+ 56, 34, 83,198,197,197, 14, 82, 42,182,155, 45,222,151,247,170, 58, 30, 7,100, 57,226, 16, 7, 20, 99,166,199,144, 32,176, 61,
+ 75,113,138,153,193, 42,130, 61, 12, 13, 56, 77,115,127,201, 68,101, 36,216, 95, 28,108,191,200,216,142, 91,164,113,236,168,197,
+ 34,130,199,135, 7,205,246,230,136,102, 84,178, 64,172,137, 95, 28,144, 75, 6, 69,198,175,126,243, 43,124,249,245,151,216,236,
+118,104, 76,184,186,190,198,225,176,199,211,211, 19,190,253,230, 13,126,248,238, 7,188,250,242, 21, 62,251,234,115,124,120,251,
+ 9,127,252,243,159,177,221,140,248,252,243,207,145, 69,240,225,253,207,168,185,224,179,207, 94, 97,191, 31,240,227,187,143,248,
+246,155,119, 56,231, 35,230, 89,129, 2, 67, 2, 66, 84,169, 52, 19,227,144, 2, 94,190, 60, 96,115, 72,152,231,130,152, 6,164,
+253, 96,133, 84, 67, 74,177, 7, 79, 72,107,168, 53, 63,131, 8, 85, 19,223,108,182, 27, 12, 67,242,225,144, 94,222,188,100,132,
+ 51,175,125,193, 62,174, 54,168, 9, 49, 22,221,172,134,182, 16, 12, 34, 66,189,109,240, 27,192,246, 76,122, 81,137, 84, 85,166,
+ 19,247, 63, 79, 29, 72,173,115,148,217, 90,143,129, 2,192,193, 42, 85,128,173, 19,114,202, 21, 72,109,119,154,121,253, 60, 74,
+147,154,244,223,187,174, 34, 47, 93,221, 31,109,117, 64,213, 85,192,109, 97, 47, 4, 70,105,106, 11,241,182,174,212,210, 45, 73,
+136,232, 32,144,142,226,236,221, 94, 91, 66,100,218,130,164, 90, 72, 99, 90,228, 58, 33, 12,182, 51,117,209,156,239,165,215,250,
+ 2, 49,177, 30,153, 58,189, 54,251,174,196,194, 47,236, 18,204,181, 88,118,117, 70, 13, 80, 44, 44,173,148,213,236,254,236,250,
+172,235, 95, 34,115,177,228,198, 27,108,136,152,122, 59,203, 68,200, 88,137,180, 2,161,102, 43, 18,236,249, 32, 35, 6, 90,248,
+ 50,152,108,247,104,227, 77,215, 51, 48,169,119, 94,180, 22, 90,108, 90,109,253,220,160,103,117, 47, 14, 52,123, 30, 93, 31, 80,
+107, 39,182, 85,131, 21, 33, 24, 49,176, 39,131,152,240,149, 88, 89, 7,230, 82, 32, 7,214, 4,215, 33,176,253, 30,188, 16,189,
+ 76,240,215, 72,208, 56,118,198, 62,218,115,107,216,250,226,238,223,217, 10, 42,179, 94, 69,232,206, 55, 35,152,144, 49,198, 96,
+ 99,241, 6,170, 98,188,115, 60,107,172,146,113,239,251,207,236,133, 20,180,113,209, 73, 8,247, 70,170,174, 38, 64,176,253, 53,
+155, 8,146,176, 40,187,169,145,173, 60,168,235,102,214, 98, 24, 49,108, 45,131,193, 38, 80, 80,216, 15,117,202,159, 58, 11, 22,
+ 82,157, 7, 0, 50, 2,140, 12,108,153,233,130, 70, 1,185,106, 28,106, 45,130, 57, 23,228,108,163,119,127,191,157,123, 1,233,
+221,186,190, 67,192,102, 76, 96, 98,204,121,134, 52, 96, 72, 17, 99, 74,102, 23, 19, 83,211,235,148, 44,109, 18,118,251, 45,246,
+187, 13,178,173,236, 34, 3,247, 79, 39,204,115, 89, 86, 32,182, 70,107, 30, 34,179,230,235, 99, 85,228,216,123, 82,237,221,245,
+192,181, 68, 1,213,211,231, 42,112,216,141,184,184,220, 40, 8,127,246,151, 0, 0, 32, 0, 73, 68, 65, 84,190, 89,128, 96,216,
+218, 42,162, 69, 21, 41,179,254,242,242, 6, 32,224,124, 62,227, 52,205, 58,149,140, 9, 12, 21,101, 79,118, 7,168,246, 72, 69,
+194, 10,159, 9, 0, 42,206, 83,214,132, 77, 79, 64,102,181,148,195,180,109,211,148, 17,213,186,195, 11, 24,194,255, 67,179, 15,
+ 76, 4,161, 41,121,173, 9, 33,215,210,119, 20,126, 40,228, 92,123,186, 20,200,129, 29,235, 7, 94, 71,135,105, 51,226,225,225,
+ 1,249, 84,144, 54, 35,118,155, 13, 62,157,142,184,184,188,192,241,241, 9,227,198,194, 81,102, 85, 43, 82, 10, 8,196, 40,121,
+ 66,107, 35,198,221,136,233, 60, 65,178, 96, 46, 19,134, 33,225,220, 57,194,170,212, 46,249,212,149,166, 14,207, 57, 92,236, 49,
+110,182,104,173, 98,179,221, 88,165,174, 35,186, 82, 42,142,143,143,120,124,248, 4, 2, 43,161,136, 8, 67, 28,108, 63, 93,117,
+100, 19,128,175,255,234, 43,124,246,249, 43,108,182,123,132, 24,177,189,220, 99,136, 3,238,239, 62,225,135, 55,111,241,246,135,
+ 31,241,197, 87, 95,226,197,203, 27,124,255,253, 79,248,211,191,255, 47,188,252,252, 53,190,248,252, 75, 60, 60, 62,224,167,239,
+191, 7, 98,192,203,155, 91,108,182, 35,222,190,251,132,111,190,121,171,220,248, 58,161, 9, 99, 72, 1, 67, 20,139,242, 35,108,
+108,135,190, 25, 19,202, 92,209, 56, 96,187, 79,170,220, 45, 98,169,108, 70,101, 11,213, 44, 35,234,157,117,242,150,100, 49,255,
+164, 22, 50,205,198,244,234, 69,108, 38,128,140, 86,197,115,207, 93,102, 59,145,164, 54,180, 8,203, 96,111, 88,154, 30, 49,127,
+167, 94,106,212,237, 51, 74, 68,106,230,183, 85, 5,142, 44, 60,132, 38,157, 75, 29,120,217,163, 58,254,147,204,214,209, 44,133,
+ 77,164,116,108,165, 90,171,150,196,177, 24, 83,191,160,157,218, 36, 22, 79, 26, 44, 11, 93,106,177,113,102,181,136, 97,177,196,
+ 57, 61,168,156, 24,229,188,116, 31,173,186,178, 63,172,186,109,216,231,247, 28,159, 28,116, 20, 38,203,116,192,255,108,162,214,
+139,159, 42,139,104,135,157, 92,101,211, 44,169,210, 47,134, 42,158, 6,165,232, 71,177,203, 45,153,216, 78,164,162, 54,197,153,
+ 58,249,106,158, 38, 12,219,208, 5,114, 32,181,227,105,185,176,124,126,180,128, 35,187,224,203,105,102,158, 40,230,132, 49,197,
+212, 82, 87,212, 19, 45, 94,240,110,107,178, 78,168,251,214,205,242, 8, 75, 33, 19, 11, 57, 17, 17,196, 96,124,255, 38,230, 52,
+ 97,251, 30, 93, 20, 39, 61,197,207,139,181, 46,182, 51,142,186,139,231,154, 41,209,117,101, 80, 77,155, 81,123,185,211,227, 67,
+237,251, 97, 44,100,180,214,180,129,209,174, 28, 61,189,172,193, 9,120,254, 59, 18,106, 46,182,202,167, 46,156,243,189,247, 95,
+ 94,230,254,239,193,172,157, 11,231,221,153,243,170, 84,175, 69,208, 44, 13,113, 61, 77,210,117,140,231, 40,152,203,161, 35,106,
+165, 43,159,157, 74,232,248,215,214,154,137,230,216, 34, 91,181,248,114,167,129, 72,179, 75, 1, 75,182,135, 61,207,197,246,235,
+196,203,239, 77,157,170,230,212, 56, 45, 14,181,176,244,247,101,217,233, 47, 41,113,246,185, 26,208, 69,178,189, 15, 85, 48,103,
+ 35,200, 85,195,197, 22, 93, 99,166, 4,228, 92,250,119,222,204,150, 73,117,137,200, 77,195, 96, 43,221, 2,166,134, 20,162,118,
+216,166,147,200, 70, 87, 27,198, 17,227,118,196,118,183, 5, 18,163, 76, 19,198,113, 68, 43, 13,199,167,163,190,207,254, 30,183,
+149,179,203, 69,150,174, 75,240,113,188,137, 52, 23, 82,159, 57, 6,130,190,123, 41, 13,234,185,151,130,139,195, 14,155,205, 8,
+ 75, 33, 54,167,150, 66,100, 40, 41, 89,115, 24,119,184,184,190, 65,205, 5,243,108, 26,180,160,211, 32,128, 49,151,242, 12,209,
+158, 82,194,208,161, 93, 58,197,154,115,198, 92, 50, 40, 69, 8, 83,207, 96,112,145,113, 19, 65, 36, 86,225,138,143, 91,201,118,
+ 64,193, 30,182, 92,139, 74,238, 45,254, 50, 24, 78,213,129, 8,173, 20,148,172,194,155,216, 61,185, 75,167, 16,201,196, 6,129,
+ 49,140, 1, 31, 62,125,194,211,233,136,235,235, 43, 92, 92, 93,224,135,239,222,224,197,203,151, 56, 31, 79,216,237,182, 72, 33,
+224,241,233,136,253,197, 14,219,180, 81, 17,207,121, 66,184, 14, 24, 54, 35,166, 73,115,212,143,143,103, 23,112, 46,220,122, 52,
+ 60, 62, 30,193, 4,196, 0, 72, 84,145,202,102,187,197, 48,110, 80,234,140, 84,245,165,158,230, 9,231,227, 17,243, 84, 81,166,
+ 9,119, 15,103, 12, 41,224,229,229,128, 20,212, 51, 95, 74,198, 76, 51, 82,216,226,215,191,254, 37,126,241,171, 47,123, 64,197,
+184,209, 29,255,251,119,239,241,238,167,143,120,255,225,103,252,226,235,175,113,243,242, 5,254,227, 79,127,194,255,252,227,127,
+224,215,127,243,215,248,236,139,207,240,225,221,123,252,252,211, 59,108,182, 91, 92, 95, 41, 12,225,187, 31,222,225,205,247, 63,
+163,230, 51,114,157, 33,181, 34,197,136, 20,122,191,131,205,144,112,125, 57, 32, 14,234, 44,104, 8, 72, 99, 64, 76,208,248,212,
+202, 8,227,138, 20,213, 42, 90, 70,247,205,234, 75, 95,145,231,140,221,126,131,113, 76, 75, 56, 72,179, 21,137,120,231,217,122,
+158,117,183,115, 48, 47,182, 25,207,201,118,110,121,173,118, 24, 91, 16,136,191, 48,108, 7,121,201,154, 59,111, 59,109, 30,130,
+ 41,164, 21,244, 83,114,177,164, 51,243, 91,114, 68,215,156, 64, 71,139, 94, 48,120,247,227,170, 97, 2, 27,168,163,154, 61,145,
+108,199,191, 88,226,152, 25, 45, 24,154,178,138,141,110,205, 74,211,225, 17,170,166, 86,144,137, 93,244, 49,169, 0,198, 58, 16,
+194,130,242, 92,198,166,139, 21, 46,152,167,125,157, 76,184,144, 25,171, 98,121,109,212,238, 66, 63,178, 29,170,194,244,108, 31,
+106, 1, 40, 85, 76, 28, 21, 96,222,119,152,135,213, 47,236,218, 73,119,220,150,160, 25, 47, 10,180,160, 48,246,169,113,207,217,
+ 99,148,125,206,210,184,143,140,129,245,168,152, 58, 34,214,215, 49,202,115,231, 30, 59,219, 76,213,222,150,132,120, 19,157,249,
+174,210, 47,245,197,155,223, 44, 72,166,153, 56,206,247,152, 36, 98, 83,166, 5,244, 65,190,139,247, 12,115,239,210,125, 39,207,
+254,204, 88,134,128,225,107,201,127, 46,169,182,133, 88, 46, 27, 70,176,207, 73,201,125,205,247,145,102,167, 84,226, 93,232, 59,
+ 73,159,112,244,117,135, 5,112,244, 2, 96,197,203, 95,252,234,203,231,239, 42,108, 37,228,121, 80, 77,235,190,246, 42,106,201,
+ 76,131,254, 92, 93,211, 96,154, 38,130, 32,196, 4,145,134,105,242,132, 56,234, 69,138,171,176,253,207, 98, 7,251,180,149,218,
+127,165,224,246,120,233, 78,222, 91,113,231,125,173,225,249,244,158, 59,224,226, 89,112, 48,228,239,226,167,127,238,119, 95, 10,
+ 92,113,154,103, 91, 68,111,205, 87, 63,102,177, 45,173,161,106, 22,145,242, 26, 98,131,136,185, 88, 58,241,208, 49,185,140, 97,
+ 72,134,165,214,234, 54, 48, 43,244,201,178,210, 75,209, 75,157,154, 96,179, 25, 49,164,132,205,102,131,105,154, 49,207, 51,118,
+187, 45, 30,158,142, 56,157,166,133,243, 0,111,100, 44,210,185,162, 19, 55,217,133,180,238,224,233,185, 11,173,127, 46,222,229,
+115,136, 54, 69,201,184,188, 86,215, 84,105, 98,177,205,182, 62,168, 5, 12, 65, 45,192,213,171, 91, 37,150, 86,189, 91,106, 46,
+ 86,108,234, 51,126, 62,159, 53,182,155,213, 33,228,140, 8, 13,119,209,231,113,206, 30,139, 78,189, 64,238,161, 85,166,142,143,
+190,219,241,128, 3, 2, 20,242, 96, 68,167, 82,181, 26, 8, 65, 21,168, 9,140, 33,170,168, 77, 15,161,106, 80,142, 5,212,160,
+140,111, 11, 60,176, 64, 12, 61, 68, 2, 30,166,130,143,143,119,120,113,251, 66,185,227,172,251, 81, 21,166, 48,246, 87, 23,120,
+ 58, 62,225,213,103, 47,177, 25, 20, 53, 59, 63, 60, 1,159, 85,140,219, 13, 30, 30, 30,113,158, 38,176,112,231, 63,187, 18,166,
+150,138,199,187, 71,112, 8,184,188,220, 98,106,140, 22, 3,182,219, 45,234,192,168, 71,221, 41,230, 60,227,241,254,147,229,246,
+ 50,114, 41, 96, 38,108, 66,192,134,163,198, 14,182,134,105,154, 16, 66,196,111,127,247, 27,252,242,215,191, 0, 71,173, 86, 67,
+140,104,212,240,227,119, 63,226,254,195, 29,106, 5,126,243, 55,191, 65,220,238,240,111,255,227,223,241,205, 55,127,198,223,254,
+254,247,120,253,249, 75,124,247,237,247,248,240,254, 61, 46, 14, 23,184,188,220, 35,112,192,219,183,239,240,230,205,123,204,249,
+132,106,193, 7, 49, 70,196,160, 68, 50,226,128, 97, 76, 56, 92, 36, 12,227,114, 40, 18, 11,134,164,136,222,146, 51,152, 71, 12,
+ 49, 46, 25,205,246,223,135,160,249,215, 28,128,124,206,104, 85, 83,231,124, 87, 36,165,168, 45,141, 93, 49,171,120,198,110,127,
+178, 78,211, 45, 25, 30, 58, 33,198,113,151, 38,221,171,217, 71,130,173,244,113,144,139,165,216, 8,114,232,195,159, 6,105, 12,
+ 10, 17,145, 24, 82, 22,228,172,192,195, 72,150, 49,152, 72, 67,206,179,174, 89,204, 6,199,150,118,165,194,161,185, 7,206,232,
+190,190,245, 20,174, 70, 13,115,205,234, 96, 48,127,188,179,205,251, 65, 12,141,241,108,181,117,218, 30,140, 57, 46,118, 40,123,
+234, 20,173, 4, 76, 14, 41,105,107,112,147, 11, 73,215, 9, 92,150, 74,213, 89,217, 49, 44, 36, 48,251,191, 85,150,125,244, 34,
+ 86,109, 11, 89,206, 86, 90, 42, 36,204,102, 31, 12,230,248,104,203,229,215, 76,136,179, 66,248,250,239,228, 5,185, 43,238,189,
+ 32,161,238, 61, 90,208,112,220, 24,226, 86, 31, 87,251,175, 46,113,169,102,115, 52, 52, 40, 86,162, 62, 45, 98,176,136,233, 60,
+167,220,139,178,142,161, 21,164, 72, 38,160,170, 8, 1,160, 24,187, 45,136, 77,100,232,107,138,208, 86,228, 56,178, 16, 25,167,
+207,225,121,225,231,142, 3,240, 10, 23,107,133, 5,155, 19, 3, 34,157,199,173, 19,158, 37,105,172, 81, 89, 68,179,109, 9, 82,
+113, 46,133, 67,116, 28, 10, 67,171, 48, 44,230, 53,239,159, 87,218,127, 39, 37,218, 86,131,170,101,161,154,207,190, 40, 24, 42,
+197,212,247,255,204,206,202,119,157,133, 62,151, 20, 8,145,147,166,114,173, 87, 1,100, 59,115,159,246,212,176,128, 73, 68, 32,
+ 40, 54,194,111,102,191,139, 70,100,244, 66,188, 90, 52, 44,247,239,218, 3,119,200, 18, 49, 57, 44,231,131, 22, 19,188,224,155,
+155,116, 27, 99,183, 2, 58,103,160,138,174, 31,204,194,150,179,141,221,237,203,100,183, 83,194,115, 23,244,239,139,204, 24, 98,
+210,159, 47,183, 30,160, 3,131, 13,105,176, 73,209, 46,120,191, 69, 26, 19,134, 33, 97,140, 17,167, 73,249, 38, 49, 6, 60, 61,
+ 61,233,180,181, 65,201,149,212,116,250,128,214,125,242, 74,106,179, 41, 69, 87,175,219,239,215, 90, 15,166,129, 43,251,109,125,
+ 38, 82, 48, 14, 9, 23,251,173, 29, 3,173,199,208, 54,136, 82, 49,195,136, 92, 4,135,171, 27, 3,210,100,189,192,169, 89, 76,
+ 51, 44,182, 59, 91, 51,161,107,143,142,108,166,128, 0, 77, 99,203,211,140,196,154,197,209, 22,241,134, 90,144, 45, 23, 37,114,
+199, 27,186,245, 69,255, 93,153,221, 38,236,108, 64,178, 74, 48,245,113,231,243,253, 92,239, 98,154, 30,162,226,177, 54, 30,219,
+202,202, 42,130, 0,247,247, 71, 16, 11,174,247, 23, 24, 56, 32,180,134, 77, 76, 56,149, 25, 23,251, 3, 62,124,248, 8,196,136,
+205, 56, 98,154, 79,168, 25,152,243,140,180, 29, 64,196, 56,231, 35,130,169,243,245, 2, 81,152, 70, 17,224,156, 43,120,127,192,
+ 54,204,224, 34, 56,151,170,121,221, 28,112,154, 51, 78,247, 15,152,230, 9,159, 62,190, 71,138,123, 12,155, 17, 41, 69, 92, 93,
+238, 64,185, 32,215,108,230, 33, 96,179,137,248,199,127,250, 3,254,234,183,127,133,113,147,192,182,131,191,187,191,195,183,127,
+254, 22, 79, 79, 79, 56, 12, 59,188,254,226, 11,112, 26,241,223,254,191,255,134, 31,223,190,197, 63,253,159,255,132,195,229, 30,
+223,253,233, 27, 60, 30,143,120,249,226, 37,246,135, 61,230,154,241,195,119, 63,224,219, 55, 31, 81,235, 17,165,232,142, 40,133,
+132,200,203,225, 62,164,136,195, 62, 34,140,128, 52, 45, 94, 74, 19,164, 16,117, 92, 84, 4,181, 50, 66, 92,198,148,210,148,194,
+214, 68, 15,112,134,142,173,171, 20,164,113, 64, 76,193,206,103,187,200,130,138,162,214,213,189,250, 97,217,178,127,249,153, 45,
+137,123,178,149,177,194,221,123, 77,128,216,248, 12,190, 91,135, 66, 98, 2, 67,211,214,138, 10,241,244,141,172, 40,197,198,245,
+182, 87,132, 89,104,186,122,223,186,191,102,163,127,230,160,162, 72, 86, 33, 12, 92,188,102,137, 84, 26,184, 99,174,171, 44,125,
+252, 87, 75,209,228,178,166, 99,108, 90,173,132,196,217,225, 70,192,114, 2,155, 43, 73,121,133,212, 68, 87,150, 90,156,137,180,
+101, 85,229, 73,105, 70,209,210,231,158, 23, 40,133,219,210,154,174,177,154,169,228,253, 66,142, 41, 46, 35,112, 83,184,195,168,
+111, 32,245,197,235,234,162,244, 14,200,242,208,144,115, 70,180, 66, 4,171, 43,160,181,134, 4,244,232, 93,189,231,170,137, 32,
+107, 47, 78,168, 45, 23,149,216,122, 66, 12, 5,236,108,120,231, 99,123, 50, 89, 51, 12,108, 15, 2,177, 17,160, 59, 3,106,191,
+224,165, 3,140,250, 88,179,135,159, 16, 74,109,198, 10,215, 61,108, 99,251,107, 25, 43, 95, 56,245, 85, 81, 8,106,233,233, 26,
+157,200,171,180, 63,111, 74,184, 11, 36,105, 21, 52,226, 34,172, 30, 82, 2, 15, 31,209,103,181, 79,182,160, 7,104,235,206,130,
+106,216, 83, 99,202,219,106, 17,127,225,131,119,208, 12,173,254, 92,101,100,149,110,255, 83, 24,142,142,196, 83, 12, 16, 49, 81,
+226,124,238,164,178, 92,178,229, 39,104,204,112,206,217, 68,118,110,159,163,206,159, 95, 43,198,151,139,188, 46,207,145,173, 36,
+ 37,232, 72, 27,118,153, 3, 64,168,193, 40,108,158, 44,103,115, 22,115,182,132, 96, 68, 70,147,141, 70,103,204,219,133,191,214,
+149,212,213, 78, 94,159,109, 35, 79,186, 91,132, 85,112, 93,138,210,248, 28, 80,134, 70,171, 8, 93, 89,212,133,254,252, 70, 70,
+ 26, 34,134,209,119,231,246, 93, 68,157, 42,250,116, 42,215,140, 22, 26,118,187,157,133,110,141, 90, 6,157, 39,108, 46, 47, 48,
+231,134,227,241,132, 42, 25,209,102,160,106, 99,229,149, 70, 67,150, 72, 94,183,250,249,212,203, 27, 94, 47,236,204, 62, 26, 98,
+128, 88, 4,234,237,229, 30,251,221, 70,175,240,214,148, 38,199,202,153,231,192, 72,148, 16,199, 3,118,151, 55, 16, 91, 87,151,
+ 50,235,247,100, 22, 63,133,241,216,249,138,166,133, 68, 85, 65, 42,135,132, 22, 52, 35, 37,159,158,148,110,167,143,187, 54, 44,
+ 34,168,204, 8,134,174,142, 13,188,202,121,213, 81,188,170,127,217,108, 14,158, 94,165, 74,216, 20,130,217, 53,124,148,217,172,
+ 58,182,142,223,114, 21, 21,117, 89,125, 78,229, 91,125, 16, 70,188,255,244, 17,196, 13,195, 97,135,221,245, 21,206, 85,253,216,
+ 81, 10,246, 23, 7,252,244,254, 29,202, 52, 97, 59, 38,204,159, 78,104,161, 97,154,102,108,247, 59, 20,139,134,205,168, 40, 77,
+ 76, 41,219,192,219, 8, 26, 85, 49, 63, 12,163, 70,103,206,130,153, 11, 34, 7,228,227,132,167,143, 15, 56, 61, 61, 98,154, 39,
+204,167,130,225,146, 48, 14, 91,197,211,134,136,105,154, 48,231,140,141, 0,195,230, 10,255,248, 47,255,130, 47,190,126,133, 49,
+ 37,140,135, 3, 8,192,207,239,126,194,191,255,247,255,129,243, 57,227,139,175,190,194,245,139, 43,220, 63, 62,225,223,254,223,
+127,197,195,116,135,255,250,127,255, 95, 72,156,240,237, 55,223, 2, 32, 92, 95,223, 96,140, 1,243,121,198,159,191,251, 17,111,
+223,190,211, 80, 24,139,107,221,132,128,192, 62, 80,100,140, 67,192,238,192, 74,229, 3,129, 18,161,216, 33,226, 93,111, 46, 58,
+218,217, 70, 85, 23,251,161, 82,109,148,222,164,161,133,170, 66,199,214,112,177, 25, 84, 76,200, 75, 21,222,114, 69, 13,154,237,
+189,222,139,245,212, 43,170,125, 79, 19, 8, 22, 88,178,116,117,212,189,237,234,249,110,165, 32,166,100,129, 20,234,251, 37, 17,
+ 96, 86, 58, 28,113, 0,183,212,189,191,205, 67, 38,152, 65, 49,129, 97, 94,218, 20, 16,237,153,203,173, 34,196, 96, 93,167,128,
+161, 98,145, 34,234,215,101, 39, 57, 53,152,247, 86, 15,209, 16, 7, 43, 46, 8,146,103,163,189,169, 94, 32, 82, 68,131,160,150,
+220, 63, 15,173, 67,184,163, 97, 65, 14,210, 89,196, 65,125,131, 46,210,173,111, 48,194,161, 64, 21,247, 54, 63,126,150,220, 21,
+ 67, 80,133,187,237,213, 27,105,134,187,219,197, 52, 68,196, 26,102, 59, 84,249, 47, 46, 43, 50,122, 95, 91,237,110,117, 92,233,
+161, 45, 38, 70,196,176, 26, 93,187, 62, 97, 65,140, 74, 83, 98, 28,181, 53,219,220,117, 1,139,122,189, 17, 67,124,231,109,184,
+ 75,177,110,208, 39, 3,108,211, 12, 72,235,104,224,190,155, 53, 10, 25,236, 80,119,202, 25,236, 2,232,151,187,193,143,148,162,
+150,129, 20, 84,139, 81, 13, 70, 99, 19,159, 46,122,181, 46,134,140,167,207,171,113,240, 50,109,166,103,208,153,165,227,108, 43,
+236,177,211,224, 74,247,184, 73,243,194,236, 47, 68,132,139,143,201,245,134,157, 38,183, 52, 53,173, 91, 68,219, 95,228,177,147,
+ 77, 79,132,150,166, 71,127, 54,115, 12,181,102, 88,222, 69, 81, 30, 12,170,228, 86, 51,226, 0,177,221, 84,240,206, 91,164,139,
+ 58, 67, 72,102, 21, 43,150,107, 30, 81,237, 29,105,133,150,117,154,141,105, 75,171, 8, 89,145,218,213, 87, 83,174,172, 39,179,
+132, 90,215, 78, 38,134, 14,246, 76,186, 0,176,139, 69,187, 32, 89, 59,216,106, 35,110,106, 90, 76, 40,149, 81,215, 80,218,140,
+ 20, 93, 19,146,125,102,144,191, 8, 58, 53, 36,112,208,169, 92,140, 58,129, 43, 89, 58,176, 42, 70,133,208,148, 90, 81, 91,195,
+126,191, 71, 72, 1, 28, 52,247, 33,231, 2, 64,149,227,247,247,247, 56,159,231,190, 67,119, 13, 7,155,242,221, 94,100,139, 79,
+174,157, 27,175,117, 94,131,106, 47,185, 63,135,254, 78,166, 16, 64,173, 64, 80,112,121,245, 66,113,181,181,129,147,139,197,105,
+113,165,196,128,139,155, 23,216,111, 47,208, 80, 32,181,160,230, 98,250,167,217,178, 32, 24,211,116, 66, 41,130,221, 86,159,125,
+161,140, 97, 28, 13,140, 36,152,231, 25,243,164,120,108, 48,131, 90, 64, 2, 67,162,125, 78, 14,233, 81,228, 28,150, 4, 33,167,
+ 83, 17,235, 11,102, 53,138,194,230,109,247, 9,182,177, 1,117, 21, 42,217,178,213, 71,188, 17,170, 64,246,153,191, 10, 12,128,
+ 24, 26, 78, 57, 99, 58, 11,198, 49,225,242,234, 18, 15, 31, 62,153,103,156,113,216,239, 49,139,224,233,116,198,205, 56,224, 33,
+106,133, 47,165, 96,140, 1, 3, 1, 79, 82,144,115,197,241,116, 2, 71, 85,226,115,220,128, 57, 32,143, 13, 97, 24, 48,132,128,
+ 22,128,199,243, 7,204,121,194,252,105,194,241,238, 3,178,104, 38,111,218,232,200, 54,134,132,218, 38,176, 20,200, 84,240,148,
+ 5,175,191,254, 26,255,242,255,252, 87,236,118, 35, 54,187, 13, 46,111,175, 49,213,140,239,223,252,136,127,255,215,127, 69,158,
+102,252,205,239,126,139,195,213, 45,254,252,230, 71,252,143,127,251,239,184,184,186,193,127,249,199,255,130,121, 62,227,199,183,
+ 63, 32, 16, 99,216, 38, 4, 0,143,199, 19,190,125,251, 51,126,122,247,222,198,255,202, 30, 30, 82,180, 23, 74,125,213, 67, 10,
+ 24, 55, 1, 49, 89,204,125,208,233, 70, 17,193, 72,172,159,105, 46,200,133, 17, 6,117, 31,148, 82, 0,102,181,220,216, 75, 66,
+ 38, 34, 42, 69,176, 29, 6,108,118, 35, 34, 47,187,209, 78,112, 19,194,255, 79,215,155, 62, 75,118, 28, 87,158,199, 35,226,222,
+204,124, 75,237, 85,168,194, 66, 16, 34,137, 2, 9, 2, 92,164,166,212,173,150,205,223, 59, 54, 54, 95,100, 54,102,211,221,195,
+ 97,183, 90, 77, 35,197, 85, 36, 69,144, 4,137,133, 4, 10, 64, 1,133,170,122, 75,102,222, 27, 17,238,243,193,221, 35,110, 22,
+ 52, 50,147,145, 0, 11, 15, 47, 51,111, 70,248,114,206,239,196, 88, 0, 26, 76,137,109, 9, 98,164, 7,177,212,170,150,161, 16,
+204,251,108,209,162,182, 47,139, 22, 77, 75, 54,162,247, 47,142, 82,170,130,249,194,181,235,209, 61,147,104, 44,151,152, 21, 72,
+130,237,238,205, 58, 85, 4,129,169,209,180, 6, 35,159,113,213, 67,197,199,116,206,160, 23,155,199, 21, 46,134, 73,141,205,163,
+205, 92, 27,241, 76,199,229,122, 48,199, 24,144,179, 19,179, 82,179,236, 33, 18,132, 6, 19,225,117,209,152, 83,217,196, 0,231,
+ 33, 82, 19, 31, 81, 53, 0, 59,245, 61,176, 88,250,159,219,113,170,139,136, 22,234,226,254,133, 95,162, 60, 23, 29, 97,211,138,
+ 24, 88, 69,218,160,205, 68, 82,154,167,221, 8,105,128,186, 57,156, 15,109, 73, 95, 98, 99,123, 52,210, 91,191,196, 93, 4,233,
+251, 99,226, 0,144,249,193,219, 53,165,152, 74,150, 2,202, 45, 26,188, 89,159,122, 90,179,151,164,250,231, 43,101,227,224,227,
+ 64, 49, 46, 14, 53, 50,181, 49,193, 48,181,165,232,212,166, 70, 4,182, 29, 52, 51, 88, 2, 16, 59,130,115,217,129, 55,246,121,
+ 88,200,191, 22,246, 91,113, 21, 31,235, 20, 15,109,207,236, 31,108,109, 17,154,228, 65, 57,246,221,105,219,230, 24,108, 50,160,
+ 19,128, 22, 84,211, 58,100,203,233, 50,194, 98,205,165,229,165, 87,214, 81,183,254, 12,133,211,136, 88,196,176,193,122, 92, 75,
+224,124,144,234, 41,147, 45, 63, 68, 52,140,196, 87, 94, 66, 22, 17, 91,155, 77, 78,147, 2,185,105, 52,128, 62, 49,171,181, 64,
+ 92,216,230, 19, 54,139,198,205,108,118, 56,113, 11,159,192,201,239, 62,157,104,227,253, 5, 11, 29, 22,211,236,186, 1, 7, 21,
+ 41,252,200,114, 1,108,202,163,186,143,128,156, 5,185,104, 81,202,213,104,137, 22,134,163, 73,104, 61,204, 5, 13,152, 24, 48,
+ 12, 9, 41, 16,166,146, 81,185, 88,234,162, 77,108,132,181, 56, 73, 9,235,245, 26, 36, 58,225, 12, 1,152,230,140,184, 73,224,
+ 40,120,122,113,129,186, 47,182, 50,165,150, 43,160, 5,139,103, 28, 48, 36, 2,168,177,217, 30, 73,196, 50, 32,216, 72,131,108,
+ 32, 26, 96, 8,150, 81, 17, 18, 18, 8,199, 39, 27,164, 33, 45,210, 76, 67,211,135,104, 80,207,128,227,211,107,246,122,147,226,
+187, 75, 54, 97,167, 21,210,194,200,211,132,200,190,138,141, 72, 65, 51, 79,198, 20, 49, 23,198,110,191,213,247,181,154,134,198,
+ 86,160, 3,169, 91,104,178,226, 58,233,152, 70, 85,208,186,175,116, 79,173, 81,133,173,155, 82,206,108,104, 99,201,106, 97,245,
+ 68,182, 39,100, 86, 72,101,240,110,197,108, 19,228,193,240,182,119, 90, 43, 62,113,151, 39,172,211,128,171, 87,174,226,236,179,
+199, 24, 78,142, 16,230, 25, 49, 17,198,148, 80,166,130,116,237, 68, 31,234, 16, 81,166, 2,204, 5,171, 33, 90, 36,161, 86,146,
+105, 92, 35,165,136, 52,174, 52,197,198,216,227,196,140, 60, 93,162, 78, 51,166,105,111,163,216,130, 16, 6, 68,138, 24, 19, 16,
+136, 33, 60,131,114, 69,148,128,167,231,192,215, 94,187,133,255,252,191,253, 3,226, 42, 96,125,188,193,173,231,110, 99,218,205,
+248,243,123, 31,224,237,183,254,136,205,152,240,218, 95,191,142,163,163, 35,252,246,247,111,227, 55,191,121, 11, 95,126,229,101,
+188,252,202, 43,184, 56, 63,195,118,123,137,148, 18, 74,209, 29,210, 84, 5,239,127,252, 16,159, 63, 58, 3,184, 98, 46,234,227,
+ 28, 82, 68,244,179, 61, 0,113, 80,110, 48,155,224, 36, 69,103, 26,107,114, 15, 37, 83,247, 87,221, 45, 13, 11,255, 45, 87,237,
+244,245, 99,208, 67, 81,147,141, 24,235, 43,167,230, 81, 53,123, 89,101,179, 64,104,231,171,221,132,137, 68,162, 94, 8, 94,212,
+153,199,177,241,157,171,165, 83, 49, 23, 35, 9,162,229, 96, 7, 68,235,184, 84,213, 74,209,186,255, 64, 72,145, 12, 18, 86, 65,
+208, 36,183,234, 65, 18, 86, 25,179, 37,151, 84,210,203, 32, 44,148,197, 77, 85, 13, 35, 1,138,134,201, 52,112,150,219, 41,163,
+142,162,217,208,140, 61, 58, 51,244, 44,114, 34,196, 32,160,100,208, 6,163, 52, 85, 19, 35,105, 87, 71,186, 50,128, 40, 68,205,
+198, 90,132, 62,154,131,189,247, 20,160,209,171,182,255, 38,179,246, 5,161, 86,241,195,120,250, 36, 93, 84, 69,141,137,170,135,
+155, 78, 68, 66,251,185, 22, 8,170,244, 43,244, 49,184, 78,127,237, 34,182, 98, 35,164,100,107,137, 30, 84, 18, 2,117, 8, 73,
+ 8,234,169,247,113,182, 65,114, 98, 26, 44, 34,118, 65, 31,107,216, 76,123,239,130, 42,214,225,214, 25,137, 45,151,156,200,186,
+ 60,235,222,196, 70,250,174,125, 16, 99,160, 47,247,175, 45,194,210, 44,131,176,179, 37, 88, 96,134, 91, 23,169,169,202, 23, 8,
+227, 3,152,140, 62,127, 41, 46, 60,239, 1, 7,118, 62,109,194,251,200, 88,220,182,193, 93, 22,236,169,142, 42, 18, 43, 45, 14,
+212,199,233,136, 29, 3,219,214, 1,134, 38,118,159,126,180,179, 78, 67,124,168,217,223,220,209, 17,205,163, 92,133,148,204,102,
+ 7, 55,129, 80,165,168, 94,194,236,195, 58, 55,135,125, 38,106,135, 42,238,248, 16,106,127,174,229, 29, 56, 27,126, 17, 29, 27,
+ 66, 23,120, 22,174, 45, 46,217,129, 50,210, 52, 34, 70, 85, 19,183,183,234,141,170, 5,145,178,197, 53, 99, 94,249, 30,226, 8,
+ 86, 39,222,177,114, 17, 90,209,106,196, 68,253,172,169,141,200,231, 92,148, 32,200, 58, 78,214,193,153,173,178,204,142,231,163,
+237, 94,147,144,217,111,201,114, 28,148, 73,162,232,102,106,137,125,171,205,216, 38, 6,142,182,230,170, 46,167, 50, 21, 92, 92,
+238,155,139,166, 41,244,161, 36,204,182,190,177,166,181,138,163,210, 23,140,137,224, 13,130,126,230, 94,188,199,213,136, 92,129,
+205,209,145, 98, 92, 99, 68, 24, 8,168,228,150, 16,212, 50,155,150, 99,192,213,171, 55, 26,192,169, 84, 70,206,147, 69, 94, 57,
+242, 57,163, 74, 69, 92, 13, 88,173, 87,160,168, 88,243, 20,245,130,223,207, 10, 69, 43,149,205, 81,162,223,228,144, 92, 51, 19,
+ 44,123,130,145, 20,170, 82, 23,177, 69,253, 63,165,169,145, 85, 65,170,209,171,118,216,216, 67,230, 60,120, 33,105,164, 38,155,
+ 42,218,101, 66,182, 91, 81, 74,204, 24,181,130,156,230,140, 49, 38,156, 30,159,180,189, 83, 76, 9, 41, 68, 4, 36,112,169, 24,
+ 87, 27, 12,195, 10, 85, 8,243,126,194, 60,103,140,171, 17,235, 20, 81, 66, 66,145,162, 12,246, 33, 33,141, 43,189, 56,246, 5,
+121,206,184,188,184,192,197,249, 25,202, 60,163, 72, 69, 45, 21, 20, 71,140,227, 26,177, 86,228, 42,144, 58, 67,242, 12,201, 26,
+244,242,173,239,188,130,255,248,159,254, 3,194,138,112,122,245, 20,119, 94,184,139, 39,143,206,240,187,127,251, 61,222,126,231,
+ 93, 60,119,243, 54,238,127,227,107,160, 49,225,173,127,123, 11,127,122,251, 93,124,253, 27,223,192,205, 59, 55,112,241,244, 12,
+219,221, 22, 57, 23, 8,107,162,218,246,178,224,143, 31,124,136,179,179,115,128,171, 90, 24, 68, 89,228, 1,162,168,200, 24, 17,
+ 7,141, 74, 12, 65, 48, 87,193,224, 97, 54, 76,150,136,109, 73,154,204,224, 26, 16, 19,108, 63,215, 57,253, 61, 25, 90, 16, 69,
+ 65, 52, 33, 18,198, 77, 50,245,246, 98,172, 44,189,250,174, 76,198,109,167, 22,239,217,178,164,101, 17,102,197,104,150, 32,216,
+184,191,165, 80,153,121, 51,134,104,108, 2, 52,241,101, 23, 48,233,232, 13,194, 11,101, 50,244,242, 51, 11, 23,200,184,209,190,
+ 83,165, 67,239,238,179, 9, 87, 46, 96, 67,140, 45, 47,125, 97,216,106, 9, 85,205, 75,235,120,146, 5,117,139,165, 46, 14, 62,
+135,229,216,185,204, 2, 34,141,104,196, 34,192,132, 93,161,141, 96,171,166,216,130, 60,228, 32,226,211,196,135,182, 51, 12, 54,
+106,182,255,197,118,209, 21, 98, 80,152, 64, 29,250, 2, 83, 17,107, 26, 91, 56, 80,220, 67, 20, 72,212,255,156, 49, 9, 66,104,
+ 34,190,208,116, 1,104,204,111, 46, 11,129, 82,211, 12, 68,123,141,193, 70,225,181,199,115,134,106, 73,109, 81,223, 23, 81,120,
+ 10,217,197,165,214, 55, 37,157, 57,220,165,112,110,239, 51,215,250, 5, 79,119, 88, 20, 53,209, 38,126,123, 91,143, 16, 23, 68,
+ 36, 8, 23, 48,169,109, 41, 24,171,161,209,242, 14,236,135,221,134, 20,140, 5, 47, 45,205,204, 24,246, 68, 7,251,239, 46,128,
+146,198,176, 23, 40,160,197, 30, 72, 21, 41, 73, 51, 48,153,151,218, 38, 61, 68, 16,163,103,122,185, 85,109, 53,226,190,111, 90,
+140,255,185, 86,203, 40, 0,184,216,243, 99,242,146, 24, 2, 34, 6,101,125,248, 39,111,251, 85,174,140,100, 54, 51,242,120,105,
+ 43, 44, 26,189, 16, 93,165,174,224,148,174,162, 79, 33,160,136,189, 46,235, 58,217,153,240,254,121,216, 69,236,252, 5,134, 78,
+223,220,151,190, 12, 51, 97,247, 85,114,251,226,245, 96, 79,199, 12,144,230,108,184, 3, 65,229, 50,172,238,168, 42, 10,158,241,
+239,232,130, 9, 79,141, 60,199, 77,176,157, 6,245,104,231, 82, 80,102, 85,137, 47,145,211, 44,130,113, 53, 42,121,176,126,209,
+ 74,184, 94,173,241,228,243, 39,152, 47,102,196,193,166,127, 30,121, 27,151,192, 31,179,183, 9, 25,235, 67, 14,210,229, 26, 75,
+136,186, 27,128, 98, 64, 28, 6,204,115,198,201,201, 6,171,213, 74,159, 63, 46,141, 93,223,136,126, 53,227,228,244, 30,142, 55,
+167,200,134,154, 46,121,182,231, 71,140,167,175,231,181,178, 80, 20,188, 37, 8,216,108, 54, 88,175, 55, 32, 82,101,252,110,183,
+213,233,164, 9, 38, 17,201, 24, 22,186,102, 21, 17,148, 82,244, 82, 87, 36, 44,233, 47,108, 15,190, 82,109, 67,251,130, 16, 69,
+164,164, 21,152, 86,216,158,238,160,153,185, 66,202, 49,134,197,235,197,164,111, 36,172,139,130, 5,107, 8, 39,108,119, 23,216,
+ 93,158,225,234,241, 17,214,167, 71, 45, 93, 39,132,128, 20, 35,174, 28,173,177,207, 25, 97, 28, 48, 30,173,176,223,238, 81,230,
+130,203,139, 11, 28, 29, 29, 41, 29, 46, 87,172,198, 21, 66, 84,177, 17, 69,165,166,213,221, 37, 46,167, 29, 46,119,151,152,231,
+ 61,198,213,136, 50,101, 72, 97,196,144,176, 30, 6,204, 16,228,108,214,146,185,160,112,193, 27,223,126, 3,247,191,254, 42, 32,
+ 5, 87,110, 92,195,189,123,119,240,241,195,199,248,245,143,126,142,247,223,127, 31, 95,122,237, 53,124,253,254,125, 84, 76,248,
+245, 47,127,131, 7, 15, 62,193, 55,222,248, 6, 54, 87, 78,177, 61,187, 64,222, 77,152,182,123,221,117, 31, 31,225,236,209,231,
+248,211, 95, 62,194,110,159, 33,149, 13, 79, 24,116,116, 99,230, 26, 10, 1, 33, 69, 12, 67, 68, 10, 64, 37, 29, 67,207,181, 98,
+101,116,129,102,187, 18, 49, 52,160,190, 14, 49, 97, 29,132, 13, 66, 19,155,183,188, 84,229,154, 31,175, 55,122, 25, 5,235,202,
+ 89, 15,180, 16, 18,188,133, 20, 81, 95,123, 34,160,230,106,136,203,254,133,246, 17,143,198,251, 77,198, 37, 71,171,100,245,243,
+ 54,226, 90,240,221, 35, 45, 98, 37, 15, 47,119,129,237,149, 27,213, 78, 43,245, 16,196,226, 82, 77,192,213,192, 36,190,191,235,
+ 64, 20,177, 17,224,179,255,231,194, 73,191,196, 99,164,174, 26, 14, 74,115,227, 69, 78,182,119,101,114,224,110,238, 95,230,106,
+217,237,234, 43,235, 23, 71,127,253, 58,193,112,141, 64,179,150, 64, 26,101,107,105,119,242, 92,105,223, 71,114,209,196, 55,103,
+119,179, 88,236,232, 82, 54,100,157, 19, 75, 23, 66,121, 39, 4,210,148,182, 56,168,134, 32, 46, 60,251, 8,142, 42, 21,179,206,
+ 85,117, 76,176, 78,190,170, 93,102, 61, 70, 52, 44,118,142,212, 44, 99, 4,122,230, 77,182,208, 15, 39,228, 25, 15, 93, 42,218,
+161, 90,204, 47, 27, 44,206, 20, 33, 52,191,117,138, 17,213,188,245,195,144, 48, 91,176, 71, 29,208, 92, 22, 65, 98,123, 31,225,
+201,107,194, 54, 13, 65,135,149, 64,218, 30,218, 22,194,109, 90, 34, 44, 7,147, 1, 17, 75, 32, 51, 28,176,152,114, 82, 68, 32,
+149,144,171, 24, 98,180,135, 12,249,115,228,225, 54,100,163,247,102, 61, 51, 95,185,126,198, 90, 84, 69, 77, 0, 82,253,132,139,
+208, 44,187, 91,160, 25, 14, 82,116,199, 28,137, 16,134, 4,120,151, 46,130,146, 53,227,156, 82, 68, 37,211, 82, 64, 67,145, 68,
+ 76,165,109,142, 21, 15, 20, 42,165,182, 98, 39, 25,249, 16,139, 12,118,239, 94,155,199,193,191, 91,166,123,240,252,244,106, 46,
+152, 24,226,194,202,133,182,206, 91,134,159,232,223,115, 43,149,180,189,125,191,170,180,128,201, 2,228,162, 54,182, 82,245,172,
+ 82,203,116,104,254,123, 90, 76,111,252,105, 27, 71,125,150,107, 41, 42, 32,164,168,254,116,155, 30, 12,227,168,133,138, 77,217,
+146,173,174, 74,209, 81,123,150,130,243,139, 45, 74, 53,173,143, 49, 14, 66,208, 66,167,185, 19, 92,252,200,114,248,189,243, 73,
+141,161,141,221,222,230,157,190, 14,230, 43,142,143, 55, 24,134,161, 89, 19,237,196,110,120,222, 90, 24, 71, 39,215,108, 90, 86,
+ 17,169, 98,222,239, 44,201,175, 96, 24, 87,136, 20, 48,205, 5,101,158,176, 30,244,175,171, 64,237,121,155, 35, 32, 16,246,251,
+ 75,181,229, 89, 88, 16, 69, 61, 15, 85,185,239, 34, 90,157,164, 36, 55,227,115, 59,144,244,232, 81, 69,173,126, 57,106, 97, 96,
+ 85,193,136, 54,214,244,180,158,170, 66, 12,210, 12,108, 50,146,151, 4,168, 2, 80,244,130, 18,219,213,184,157,178,102,198,229,
+110,210, 75, 60, 37,172, 78,213, 14, 16,135,132,121, 55,225,234,181,107, 56,187,184,208,157, 70,178,189, 7, 87,228, 60,227,100,
+115,138, 56,142, 8, 92,176,138,118,128,146,218,207,230,178,215, 12,109, 46, 22,185,169, 49, 24,181,152, 2, 54, 69, 67, 37, 22,
+ 68, 10,184,188,216, 34, 31, 39,252,195,127,250, 30,222,124,253,235,248,244,211,143,113,245,246,109, 60,127,239, 30,222,255,224,
+207,248,233, 63,255, 28, 31,127,244, 0,223,120,227, 27,248,234, 27,175, 98,222,237,241,167,223,189,135,203,203, 61,238,191,254,
+ 85, 12,227, 10,187,167,231,184, 60, 59,199,167,159,125,134,227,147, 19, 92,187,118, 21,159,125,250, 25,222,251,240, 99,236, 38,
+181, 91,228, 57,131, 65, 88,145, 42, 13, 42,122,182,113, 24,140,171, 30,180, 67,156,107, 5,101,224,104, 24,193, 4, 36, 27,147,
+ 87,219,117,105, 96,137,163,124, 21,226, 32, 54,242, 34,170, 0, 37,212,146,149, 7,239, 40, 95,239, 92,165,194, 49, 28, 28,244,
+ 48,142, 20,218, 23,131, 8,144, 74, 61,156, 66,200,198,233, 2,146,238,185,118,245,109, 74, 73, 41, 78, 20,109,109, 64,246,101,
+ 21, 48,172,235, 51,197,117,143,153,244,137,142, 10, 61,204,216,213,172,113,126,225,186, 61,134, 12,101,250,239,220, 45,166, 18,
+ 39,243, 26,199,118,121,122,196,235, 65,167,239, 24, 92,243,227,251, 88,184, 93,146, 62, 66,110,130,162,128,136,100, 73,104,110,
+125,169, 45, 29, 76, 19,195,130, 9, 74, 53,223,218, 59,192, 46, 14, 13, 61,111, 27,106,101,242,137, 85, 49,255,188,152, 85,208,
+215, 4, 62,186,243,105, 66,207,197,230, 5, 11, 58, 54,107, 31,217, 1,229,151, 50,130,219,194, 98,235,174, 74,158,144,231,217,
+ 18,180,164,141, 18, 29,141, 74, 22, 68, 66,210,150,230, 86,230,244, 78,155,164, 1,102, 53,140,199,118,246,193, 87, 37,164, 22,
+ 31, 4, 83,181, 27, 24, 6,207,164,165,177, 95,244, 76,160,152, 48,132, 81, 39,133,164, 35,197, 80, 11,162, 4,144,145,241,154,
+ 82,223, 8,135,190,127, 20, 19,221,181, 56, 74, 67,251, 54,192, 81,176,152, 18,135,205,184, 53,143,208,186,115,247, 72,249,165,
+ 37, 69, 87, 83, 75,167,159,142, 76, 67, 27,249,187,168, 48,196, 37, 31, 93, 87, 19,206, 88, 39, 16,138, 99,214,200,175, 0,168,
+ 77,141, 5, 37,207,218, 97,145, 0,177, 64,106, 86,181, 51,116,229,229,227,244, 20, 34, 42,233,133,174, 43,189,210, 84,211,174,
+ 64, 87,204,105,159, 90, 44, 53, 5, 68,164, 7,190, 21,202,250,123,198,131, 63,195,237,123, 66, 72,166, 89,233,252, 5, 28, 76,
+ 90,150,186,144, 46,178,164,133,166,202, 6,119, 66,112, 40, 69,206,140,108,184,219,154, 25, 37,203,129,175,221, 53, 55,254, 25,
+ 5, 67,214,166, 65, 27,143, 60, 23, 85,107,196,208,176,191, 14,164,201,181,152, 93, 46, 99,125,116,210,162,148, 55,195,128,186,
+221, 97,123,118,105, 43, 34,187,203, 96, 26,131, 24, 13, 94, 35, 7, 97,102,186,255,145,102,203,142,160,102,205,107,240, 69,187,
+ 39, 39, 48,130, 8,214, 43,205, 13, 73,209, 34,141, 73, 64,131, 61,135, 34, 72, 99,194,149,107,215, 80, 75,209, 59, 85,180,235,
+ 86, 10,107, 65, 28,162,225,247,148, 59,225,248,219,128,138,148, 70, 21,125, 11, 99,154,247,216,239,118, 96,115,148,196,168,130,
+ 86,177, 38,161,154,117, 86, 4, 72,226,220,119,203,139,149, 0,112,136, 72, 80,203,131,144, 10,150,216, 8,104, 89, 11, 74, 0,
+ 0, 32, 0, 73, 68, 65, 84,115, 83,169, 54,122,212, 61, 82,149, 10,162, 1,140,164,112, 50, 34, 68,203,157, 21, 10,230, 57,212,
+ 47, 38, 83,176,204,218,128,189,101,226,130, 8,183,111,220,196,147, 71,159, 35,164,128, 9,140,147,227, 99, 92, 94,110,245,194,
+ 24, 6,236,109,220, 95,107, 69, 74, 3,198,213, 10,179, 0, 50, 85,228,105,198, 84, 38,236,231, 89,199,160,145,154,231,121, 29,
+ 18,136,146,117, 37, 58,142, 46,172, 99,218,139, 41, 35,142, 9,255,241,239,190,131,111,190,241, 26, 42, 87,220,251,210, 75,184,
+121,247, 22,222,125,235, 93,252,175, 31,254, 24,243,126,198, 27,223,253, 54, 94,122,249, 37, 92,158,157,225,193, 7,159, 67, 6,
+194,151,238,127, 25, 17,132,179, 71, 79,240,248,209,103,248,244,209,103,184,113,243, 22,174, 94, 59,197, 7, 15, 62,194, 71, 31,
+127,134,125, 17, 72,206,168, 89,157, 4,131, 81,171,178, 70,110, 33,217, 23, 50, 82, 64,133, 17,196,172, 84, 44, 69,144,171, 32,
+ 66, 71, 49, 58,214,179, 29, 97, 20, 8, 21, 11, 99,233,120, 81,162, 2, 96, 4,177, 6, 95,172,215, 99,179, 75, 5, 97, 19, 41,
+185,197,200, 68, 66,214,197,195, 62,235, 64,130,212,146,183, 13,167, 29,213, 78, 82, 97, 52, 54,240, 2, 42, 38, 42,112,162,216,
+180, 22,206,222,246, 72,201, 34, 85,119, 84,246,250, 28, 47, 73, 77, 41,206,221, 82,133, 62, 94,103,143, 5, 53,140,163,238,114,
+ 23,170,109, 75,144, 99, 62,156, 6, 28,238,111,209, 44,127, 75, 53, 52,183,253, 42, 29,142,246,201,247,128,213,114,185, 85,111,
+175, 89,217,150, 72,105,150,166, 32,139,208, 19,163,141,185,239,219, 71,145,170, 72,239, 35, 81,182,226,148,141,136, 39, 38,146,
+107, 72,213,160,163,108,221, 83,106,229, 47,220, 11, 64, 9,157,208,197, 40, 10,247,177,207, 42, 88, 32,146,176,114,168,165,101,
+197, 23,204, 83, 70,201,181,145,180,164, 90,222,183,229,216,123, 80, 4,216, 70,207,236,254,115, 79,122,245,130,188,219,252, 98,
+ 36,148, 98,129,162,100, 41,105,182, 26,136, 20, 80,169, 30,216, 92,197,112,195, 7,202,105,120,204, 39, 76,208,167,105, 96,154,
+112,166,221,173, 43,131,189, 64,162,160, 23,170,111,197,181, 64, 9,150, 54,102, 29,118,117,188,110, 62,176,159, 57, 79,222,105,
+152,220,162, 65,169, 21, 48,194, 69, 47, 24,183,108, 25,128,166,154, 1,174,131, 89, 60, 8, 92,249,230,228, 78, 0, 66, 19,200,
+ 37, 43, 42,170,129,145, 52, 81, 76,189,200,106,209,243, 61, 51, 90,199, 27,136,218,179,230,197,170, 79, 15,194,194, 54, 23, 77,
+ 35,226,164, 56, 37, 52,126, 81,121, 47, 11,180, 49,154, 7, 62, 52,113,230,178, 90, 94,218, 0,253,115, 90,254,245,114,237, 37,
+ 7, 23, 62, 31,176, 23,156,158, 87, 5,138,132,157, 51,114, 41,152,106,177, 92, 2, 28,252, 76, 9,138, 36, 15,164,233,146,227,
+ 56, 98,220,140,168,147,199, 58,195,226,107,213,250,184,218,172,192,246,217,207,147, 22, 57,171,113,108,247,137,164,136,179, 39,
+231,152, 38,181, 11, 38, 11,111,169, 28, 52,130, 59,134, 5,124,199,139, 91, 89,240, 40,170, 81, 18,169, 57, 54, 28,153, 28, 76,
+216, 54, 82, 4,134,132,245,106,108, 49,205, 18, 8, 67, 8, 80,121,177,226,163, 55,227, 9,174, 92,189,142,105,187, 69, 72, 35,
+132, 42, 74, 85, 28,245,110,154,176, 73, 71, 42,158,166,130,176, 25,128, 90, 81,130, 96,218, 51,134,213,218, 28, 5, 26,153, 93,
+252, 51,234,114, 34,123, 38, 52,161,176,146,238,235, 19, 28, 36, 81, 61,188,195, 21,141, 93, 5,234,251,171,185,168,157,104,140,
+169, 51,114,205, 18, 82,237, 0,107, 30, 87,235,182,220,195,218, 98,245,236,167,238,237,195, 32, 17,108,142, 54,248,236,227,140,
+ 20, 70,112,101, 92,189,114, 5,159, 61,252, 20, 82, 9,227,166,179,202, 75,169, 40,165, 96, 28, 7,240,197, 5,166,253, 30,251,
+237, 37,230,146, 81,131,238,145,200, 70, 31, 33, 16, 70, 74, 64, 8,152,230,172, 1,244, 85,197, 57,251,221, 14, 55,111,220,196,
+119,255,250, 91,184,247,252, 93,148, 90,113,227,230, 77,156, 94, 57,197,191,254,252,151,248,201,143,126,138,147,211, 83,220,255,
+230,107, 56,189,118, 29, 79,207,206,113,113,126,142,213,209,128,107,199, 87, 80,106,197,227, 71,143,240,240,195,135,120,248,232,
+ 33, 94,250,210, 75, 88, 29,109,240,167,119,255,140,143, 63,249, 28, 66,132,154,171,217, 48, 68,213,136, 16, 20, 41, 16,131,154,
+251,131, 93, 45, 5, 40,152,246,128,139,160, 4,197, 42,174, 67, 68,145,170, 22,175, 34,154, 58,102,239, 35,123,114, 22, 83,195,
+170,122, 32, 4, 17,176,222, 12, 58,129,177, 3,210, 57,117, 32,141,222, 12,238,120,176, 3,197,125,213,204,140,100,163, 77,241,
+189,161,123, 38,133,218,248, 83, 21,168,166,122, 54,208,130,239,195,244,231, 20, 83,152,122,218, 22,236, 50,136,237,240,105,112,
+ 11, 4, 48,117,146, 23, 45,128, 34, 45,157,123,121, 1,183,184, 68,179,186,133, 5,182,213, 19,228,218, 62,217, 89,207,189,179,
+234,140,103, 28,208,226,150, 23,189, 19,160,245, 31,179,247,151,186, 71, 89, 51,170,227, 98,196,235, 88, 87,135,152, 72,155,118,
+160,125,214, 93,113,205,108, 17,171,140,131, 48, 15,233,184, 50, 93,241, 82, 80,189,132, 21, 19, 98,187,113, 15,211, 33, 12,154,
+244, 22,146, 9, 33, 5, 53,168,207, 87,225, 55,154,224, 17,130,253, 12, 27,211,249,235, 57,216,203,179,153,249,193,141,181,238,
+ 34, 89,161, 0, 48, 33,194, 45,122,101,145,104,101,229, 30,231,246,190,166,164,164,184, 96, 99, 73, 93, 45,248,248,151, 90,100,
+102,132,118,232,194,130, 48,216, 62,125,193,224, 14,209, 4,152, 13, 51, 43, 29, 8, 99, 59,206,222,113,121, 88,140, 44,246,154,
+212, 38, 75, 7, 44,121, 7,250,112,143, 83,213,243,169, 11,235, 28, 15,171,212, 48,235,194, 66,104, 32,146,234,121,229, 14,235,
+177,167,198, 87, 40, 20,131, 42,167,165, 34, 81,180, 14, 43, 34,141,105,145,210,166,171,129,104, 4, 64,253, 53,217,112,177,166,
+ 51, 49, 1,148,127, 39,116, 13,138, 14,157, 90, 36,156,197,168,254,248, 42,207,100, 9,160,211,218,184,173, 16,208, 18,215, 26,
+131,130, 66, 75, 63, 59, 20, 29, 30, 78,190,218,119,166,217,149, 45,182,180,193,141,244, 63,167, 92, 80,170, 40,124,166,112, 43,
+ 36,220, 65, 2, 15, 7,114, 77,141, 8, 86,171, 1, 49, 4, 76, 57, 55,155,110,176,115, 38,141, 3, 40, 6,212,156, 81,230,140,
+203,243,115,220,184,125, 83, 93, 45,165, 98,181, 26, 65, 53, 99,123,161,250,166, 97, 76, 8, 73,221, 32, 62,233, 81,241,119,215,
+ 35,201,129, 46,128,122, 22, 10,186,222, 0,158,115, 96, 64,140,213,230, 8,137, 9, 73, 98, 43,172,180, 8,202, 6,128,210,181,
+203,205,155, 55, 90, 39,157, 70, 66,206, 85,163, 85, 89,191,167, 78, 87,172,181,106,209, 66,192,156, 43,114, 41, 88,173,109, 20,
+207, 5,251,121,198,106,189,194, 92,170,194,195,156, 43, 99,191,243,152, 34,192,131,210, 57, 85,253,137,102,251,160,208, 47,101,
+ 18,198, 96,162, 11, 0, 58,238,112,118,176, 1, 11,216,208, 5,108, 2, 3, 29, 91, 24, 55,152,170, 14,241, 22, 57,203,100, 59,
+182,167,103, 79,154,221, 71,131, 85,130,141, 48, 72, 5, 94,235, 99, 76,219, 9,113, 28, 52,106,179, 0,211,118,194,249,249, 25,
+ 88, 24, 57,207,200,101, 70, 46, 69,225, 20,105,180, 15, 66,139,246, 24, 18, 98, 32,204, 37,155, 31, 52, 66, 80, 48,149, 61, 94,
+122,233, 5,252,245,223,126, 15,171,113, 0, 98,192,205, 91, 55,177, 57, 90,227,167, 63,249, 25,254,249, 7,255, 19,119,238, 61,
+135, 87, 95,187,143, 97,179,198,229,249, 57,246,251, 29,142, 78, 79,176, 62, 62, 70,222, 79,248,244,225, 39,248,183, 95,253, 22,
+105, 72,248,202, 87,191,134,253,180,199,111,127,251, 54, 46, 46, 46, 80,197,178,147,205,238, 20,130,142,105,114,101,100, 75,207,
+138,198,195,214,138,156, 48,112, 84, 91,151,113,190,185, 42,121, 41, 37, 83,180, 87,237, 82, 57, 42,156,196, 71,129,181,170,250,
+180,237,122,161,123,241,180,138,182,131,171, 0, 52,146,148,153,145, 72,195, 69, 74,163,101, 57,197, 77,215, 20,202, 32,175,202,
+ 17, 31, 82,183,168,185,168,195, 84,191,100, 59,110,239, 32, 28,152, 32, 82,109, 76,235,151, 92,181,195, 51, 54,166,186, 67, 50,
+244, 31,139,189,139,162,133, 56,197,231,237, 44, 93, 81,238,225, 44,210, 65, 48,144,195, 67, 71,217,239,177,117,158, 98,149,181,
+ 78,121,164,237,186, 27, 62,116,177, 67,110,224,137,198,135, 70,247, 9, 91,106,151,170,108,141, 91, 30,108,166, 81,171,141,229,
+173, 98,102, 71,154, 86, 5,153, 16, 14, 10, 9,135, 69,112,219,165,183,197, 94, 99,171,187, 48,174,181,202,134,127,100,115, 47,
+ 56,112,201,110, 72, 29, 60, 75, 23,243,148,204,136,232,234, 94, 63,120,197,254, 29, 93,223,208,197,114, 92,106, 43, 20,157, 71,
+239, 66, 89, 49,117,185, 88,250,150,143,237, 93, 51, 16, 35,117, 44,168,117, 58,122,225,171,149,176,185, 4, 82,210,160,167, 69,
+208, 78,180,110, 88,127,190,254,206,170,117, 88,248,207, 65, 95,216,237,251,180,131, 77, 49, 78,180, 80,251,219, 91,234,151, 45,
+115, 87,179,115, 83,140,115,195,228, 43, 88, 37,218,243, 27,108,253, 89, 14, 14,115,103, 7,244,103,215, 5,141,116,176,127,238,
+112, 65,157,108,214, 69,167,171,218, 3,105, 60, 3, 54,236,113, 8, 61,117,175, 88,232,137,178, 20,236,124, 12,212,158,149, 70,
+ 7, 92, 60, 83,203,201,217,146,154,216,132,122,102, 37, 36,187,232, 43,128,100, 69,135,239,229,197, 46,172, 20,163, 21, 35,220,
+221, 3,114,232,251, 63, 12,179, 89,218, 53,165,133, 74,177, 0,165, 0,243,172,142,159, 82,209, 46,241, 16, 2,178,235, 89,120,
+209, 60,120, 88,202, 48, 32,100, 65,158,125,170, 65, 13,212,148,198,161,129,163,118,151, 59, 80, 32,172, 55,155,182, 46,137,105,
+192,110, 63, 97,191,219,163, 10, 99, 52,151, 72, 80,249, 79,155,112, 44,139,119,215,104,248,154, 78,163,217,186,205,219,109,135,
+176,201, 95, 76, 17,113,136, 24,176,130, 76,165,179, 27, 66,128, 20, 43,200, 69,233,158,167, 87,111,160,204, 25,243, 52,227,202,
+245, 27,120,242,232,115,212, 50, 25, 71, 67,139, 20,182, 0,180, 57, 79,160,144, 80, 75, 69, 26, 70, 28, 31, 29,131, 44,200,102,
+183,219, 57,122,195,141, 21,102,193,212,223, 45,249,250,144,128, 4, 33,219,217,114, 67, 82,122,133, 8, 19,161, 36,131,205,176,
+ 84,164, 56, 42,234, 78,148, 54, 36, 20, 64, 40, 38, 80,114,139, 86, 31,211, 37,123,160,156, 37, 30,162,126,185,159, 94,238, 80,
+172,154,139,195,160, 62, 75, 27, 99, 48, 1,167,167,199,138,144, 28,116, 95, 47,129, 80,168, 98, 63,237,193, 49, 26,108,165, 26,
+ 61, 45,154,234, 55, 88,215,160,251, 16,120,152, 66,101,236, 38,198,122, 3,220,255,218,171,120,253,245,111,180, 7,228,246,221,
+187, 24,199, 1, 63,249,241,207,241,235, 95,191,133, 87,191,254,117, 60,247,194,115, 96, 22,236,119,123,196,148,112,237,218, 85,
+196, 97,196,249,217, 22, 31,254,229, 3, 60,120,247,207,184,126,253, 6,238,220,189,131,207, 30, 61,198,159,255,252, 0, 83, 41,
+200, 18, 80, 75,214,142,154, 8, 20, 42, 2, 1, 69, 88,227, 44, 77,253, 76,149, 81, 98, 64, 96, 66, 52,106,154, 6, 97,116, 75,
+ 79,206, 5, 41,105,136, 7, 23, 21,203,149, 80, 59,125,137,129, 2,103,244,107, 7,166,187,107, 32,165,149,121,101, 11,162, 36,
+136,164, 86,117,162,218,232,215,137, 93,139,139,177, 29, 6, 96, 59,124,251,158, 11,178,240,149,122,236, 42,145, 9,130,106, 19,
+149,212,214,129, 47,190,240,214, 45,185,117,107,217, 25,136,117, 88,190,163, 20, 55,136, 91,117,206,198,165,214,233,176,237,174,
+ 23, 89, 5, 58,198,229, 5,123, 91,143,213,152,186, 21,163, 86,110,135,183,209, 67, 90,214,123, 63,112,251,216, 50, 70, 45,114,
+ 36, 44, 85,246,110,126,233,211, 7, 95, 72,116, 8, 7,154,120,145, 60,132,195,125,200,139, 80, 24,102,134,148,218,197, 71,134,
+149,164, 16, 77, 33,223,169,115,190, 91,119,213,186,239,251, 93,173, 30, 60,243,220,168,122, 98, 65, 24,149, 68,227,137,165, 11,
+156, 40, 68,212,156, 59, 69,205, 73, 48,212,167, 53,125,151,140,230,183,109, 5,185, 1,103,132,130,189,158, 62,190,212,213, 80,
+236, 49,156, 65,245, 11,108,202,238, 96, 16,150, 10,159, 8, 0, 82, 11, 10, 69, 12, 99, 50,125, 72, 81,139,154,237, 30,253, 23,
+105, 66,201,182,102,241,207, 66,250,103, 73, 11,239, 78, 56, 76, 78, 99, 94,166,242, 73, 19,209,185, 95, 63, 4,195,149,134, 96,
+207, 51,181,207,129, 2,125,129,156,217,104,110,134,254,121,118, 36, 29,218,197,102, 74,120, 4,163,169,169,214, 39, 14,250,204,
+102, 35, 16, 18, 89, 1,111, 97, 74,193,207, 87,179,162, 69, 14,109, 95, 44,162,148, 89,182, 78, 87,120, 57,250, 94, 90, 6, 61,
+214, 54, 52,251, 10,133,216,197,113,132,238,130,136,166, 0, 55, 75, 43,219, 68,169, 97, 82,151,218, 8,159,162,185,230, 5,210,
+ 38, 98,173,168,176,201,138,166,177, 85, 69,195, 86,165,202, 69, 91,165,136,165,153,105,242,167,145, 65,185, 34,141, 9,195, 48,
+ 96, 42,213, 4,114,104,147,159,113,189,106, 43,140,105, 63, 97,123,185,197,141,219, 55,144,134,136, 90,197,148,241, 1,219,237,
+ 30,211,222,211,206, 6,179,179,105,234, 94, 67, 87, 47, 96, 82,250,149,149, 22,163, 26, 60,101,207,166, 7,238,169,137, 38,222,
+140, 49, 96,189, 94, 1, 5,216,239, 21, 99,221,232,141,204,160,164,123,176,148, 86, 56,189,114, 29,217,146, 53, 67,136,216, 79,
+123,148,170,247,101, 33, 54,252, 53, 91,241, 50,216,122,154,112,229,248, 4,171,149, 42,223,119,251,189, 70,103,147,173,121,104,
+ 33, 96, 15,172,130,203,144,144,134, 1, 25,130, 4,143,218,108,248, 76,179,109, 24, 97,138,134,193, 40,101,179,138, 45,146,126,
+ 8,108,145,154, 48, 65, 74, 84,207, 13, 22,107, 81, 29,248, 54,142, 52,187, 43, 4, 18, 35, 98, 74,152, 12, 96, 63,164,136,241,
+232, 72,233, 95, 80,139,210,122,189,198,118,187,195, 56,110,244,225,138, 10,183,152,107, 69, 37, 65,136, 73,199, 68, 85, 59, 39,
+ 56, 51,215, 90, 12, 21,146,233, 8,124,119,185,195,106, 88,227,245,215,238,227,205, 55, 94, 71, 26, 35,134,205, 10,183,238,220,
+ 70,201, 25,255,252,223,255, 23, 62,254,232, 9, 94,125,237, 62, 78,111, 28, 99,127,190, 67, 26, 86, 56, 57, 61,198,241,209, 6,
+133, 11,222,249,227,251,120,255,157, 7,216, 79, 59,220,251,210,139, 88,173, 7,188,251,231,191,224,193,131, 79,149,210, 84, 52,
+211, 55,152,224, 45,134,128, 65, 10, 50, 11, 50,107,158, 56,196, 14,244, 40, 72,172, 43,143,154, 43, 48,144, 90,203,132, 26,133,
+ 43,207, 21, 41, 18,114,228,150, 38,150, 76,225,238,170,107, 53, 44, 86,136, 65, 36, 42,107, 58,155,118,233, 5, 92, 3, 10, 85,
+ 16,169, 88, 72,186, 53, 90,247,198,198,156,103,235, 96, 34,162,169,103,101,209, 1,151,198, 34, 8, 38, 16,243, 56,213,118,177,
+ 11, 55, 65, 87, 52,193,144,223,114,236, 24,174, 32,135,149,190, 91,182, 60,228,196,158, 65,165,100,121,135,109,138, 1,234,138,
+114,237, 36, 85,157,187,228,158, 3,181, 33, 75, 59, 93, 76,108, 15,205,173,135,106,221, 71,232,162, 52,127, 62,201,240,142,190,
+110,106,126,237,208, 15, 90, 2,181, 85, 19, 75,191,100,156, 25, 45,182,127,247,215,215,223, 35,233,135, 9, 75, 19,201,249,120,
+219,247,231,140,170, 43,151,216, 59,237, 6, 27,169,188, 0,159, 44,108, 69, 22, 73,235, 89,243,132, 67, 14,189, 47, 5,107,205,
+141, 31,239,194, 59,239,240,196,130, 86, 84,120, 90,109,181,163, 16,144, 16, 8, 41,234,123,198,205,126, 71, 22,189, 44,118,132,
+132,198, 62,111, 62,229, 69,126,188, 88, 56, 80, 36, 21,200,177, 84,148, 6, 60,177,125,165, 17, 13,131,233, 17,148, 39, 46,118,
+ 17, 44, 50, 42, 32, 45,239,193, 47,123, 11, 98,183,215,223, 35,101,123, 65,178, 12,127, 18, 21, 6,123,126,132,117,139,174,218,
+ 86,237, 4, 29, 76,128,150,227,231,131,201,142, 77,204,124, 74, 25,156,110,104,221,159,254,124,101, 76,132,230, 24, 18,151, 51,
+ 24,158,118, 97, 15, 21,103, 4,246,198,168,250, 78, 60, 6, 72,174, 40,149, 91,178,157,143,185,131,229, 10, 52,129,156,117,232,
+209, 80,174,238, 22, 16,119,178,112,255,142, 52,165,188, 44,172,172,109,202,193,135, 74,122, 28, 58, 79, 58, 12,200,138, 98,110,
+ 47, 17, 83,201,152,102, 77,185,116,219,158, 63, 35,125,178, 33,205,246, 44, 16,172, 86,107,172, 40,224, 73,157, 80,185,154,166,
+133, 48,174, 87,136,195,168, 80,173, 41,227,236,233, 25, 98,138,216,108,214, 32, 66,219,197, 87, 46,216, 93,110, 45,249,141,154,
+238, 64,167,196,116,160,231,240,223,169, 26, 37, 18,232, 43,191,102,197,205,135, 33, 63,193, 38,215,171,213,160,223,167,105, 66,
+186,118, 69,147, 75,163,226,204,199,116,140, 90, 5,171,163, 13,142,142, 79,112,118,118,142,113,189, 2, 23, 65,206,154,162,167,
+105,147,250,204,212,146,181,235,142, 58,165,202, 16,172,143,142,176, 74, 9, 85,148,166, 90, 61,186,154,148,126,234, 41,163,174,
+111, 65, 48,221, 21, 17, 82,225,174,248,236,116, 47,243, 10,198,128,113,225,233,108, 35, 90,178, 47, 42,187, 23,157, 13,215,201,
+118, 40,140,128, 36, 16,113, 19, 36, 8, 52,227, 55, 80,192, 17, 69, 12, 81, 48,213, 10,206, 5, 76,192,250,120,141,243,179,217,
+186, 20,198,112,180,130,156,111,205,231, 57, 34, 76, 51, 42, 8,251, 60, 35, 32,169,233, 62, 69,208, 20, 80,181,254,199, 16, 21,
+115,203, 34, 40, 85, 48,205, 25,251,203, 61,174, 93, 61,198, 27,223,125, 19,247,191,126, 31, 18, 8, 71,167, 39,184,121,253, 22,
+158, 94, 94,224,167,255,244, 63,241,232,201, 25,254,234,181,175, 99,179,217,224,226,236, 41,134, 33,226,250,245,171, 88, 31,159,
+ 96,187,223,227, 87,191,248, 21,126,254,195,159,224,165, 87, 94,193,253,251, 95,195,110,123,137, 63,252,238,109, 60,124,242, 57,
+ 36,110,192,181,162,102, 6, 56,160, 2, 24,135,128, 49, 6, 76,146,108, 4,110, 44,102,175,240, 45,177,136,106, 85,248, 67,173,
+234, 39,117,241,116, 21,100, 48, 48, 19,134,177, 34,177,114,219, 71, 16, 88,130, 22, 0, 92, 17,109, 79,201, 2, 84, 53,178, 35,
+174, 3,134, 16, 32, 69, 80, 9, 8, 52,107, 68, 31, 19,136, 45,132, 68,116,231,143, 0,141,240,228,160, 5, 69,128, 10,133,202,
+ 10, 28,109,172,167, 86,135,131, 64, 3,102, 6,170,242,206,210, 66, 76, 19, 40,104, 56,138, 45, 11, 93, 72,134,158, 0,160,158,
+236,229,225, 40, 48,214,124,223,183, 70, 99, 71, 23, 84, 37,219, 29, 0, 77,236, 8,180,144, 17,143, 6,213, 93,104,109,254,215,
+134, 82,197, 97,208, 70,231,185,123,226,149,142,202, 91,215,102,126,126,105, 92,252,216, 56,244, 22, 1, 3, 87, 50,105,114,154,
+ 41,199,155,152, 38,116,225, 25,250,200,209,247,186,234, 6,152, 81, 57, 55, 14,181,158,240,193, 28, 36,162, 14, 5,234,138,102,
+221,189, 75,123, 93, 21,130,181, 40, 96,201, 59,119,160,135, 53,144, 31, 20,185,170,200,200,118,199,149, 21, 0, 45,246,122, 96,
+ 1, 40,108,251, 89, 9,164,218, 6, 19,191, 87,150,110, 1,164,190, 86, 16,174,141,128, 73, 20, 65, 82,155, 80,146, 2,129,197,
+ 99,120,165,141,247, 97,160, 31, 34, 54,208,137,118,195,209, 87, 21,105, 64,138, 65,129, 29, 53,219, 68,196,116, 57,165, 26, 13,
+ 80,223,107,182,184,232,232,133,196, 34, 37,175, 46, 2,100, 22,253, 58, 68,194, 65, 81, 25, 3,181, 41, 81,229,218,233,118,246,
+ 94,232,132, 65,157, 39,238, 14,240, 49,116,187, 11,217,214, 0,162, 81,161, 75,124,172,152,173,143,201,237,149,104,112, 24, 95,
+ 65,117, 93,137,116, 88,139,173, 88,150, 66, 53, 84,165, 96,198,102,151, 44, 54,213,178,201, 64, 10,139,110,218,172,105,232,150,
+242,104,197, 70, 48,170, 96, 8,182,226,176,125, 50,217,106,199,139,100,178,201, 19, 91, 81,220,190, 11, 38, 78,117,219,106,240,
+191,110, 69,172,115, 23, 84,233,190,223, 87, 76, 89,176, 47,150,137,224,133,107, 53,165,127, 91,233,233, 9, 30,130, 82,228, 56,
+138,194,198,108,156, 60,172, 6,164,163,193, 86, 26, 5,219,139, 45,234, 92,113,245,218, 21,140,227,170,101,209,135, 0, 76,151,
+151,152,118,154,122, 73, 81, 57,250, 13,251, 42, 17, 33,169,251, 4,149, 16, 88,133,121, 30, 75,193,188,116,223, 44,113,209, 22,
+212,162,251, 15,164,113, 64, 12, 9,133, 8,185,102,140, 99,194, 16,148,248, 57, 23,253,254, 48, 49,142,174, 92, 7,210, 26,103,
+151,239,227,185,163, 47,161,138,186, 23,132, 77, 23,179,200,116,119,205,166, 83,115,215,171, 35,164, 20, 17,165, 98,218,111, 33,
+ 92,144, 82, 68,141, 21, 41,104,243, 45, 76,136, 20, 91,190,132, 67,114, 82, 21, 65,240,177, 14, 4,194, 10, 16, 8, 33,169, 66,
+219, 70, 43, 25,138,120,213,207, 52,182,139, 84, 88, 61,135, 49, 4, 20, 82,181,167, 11,140,220,180,175, 95,160, 2,193, 96,163,
+ 13,125,136, 74,158, 33,181,154,103,117,208, 63, 31, 35,114,173, 88,111,142, 32,128, 38,165,217,120,140, 88, 16,170,160, 74, 70,
+245,221,191,141,138,210, 48,104,215, 41,140,146, 11,118,243,140,203,105,194,245,219,215,240,173,239,124, 7, 47,189,248, 2, 82,
+140, 56, 62, 57,197,213,107, 87,241,254,123,239,225,119,191,254, 45, 74, 0,238,191,254, 58, 40, 37,156,157, 61,197,181,235, 87,
+113,243,246, 45,172,143,142,240,241, 7, 31,225,135, 63,248, 33,126,243,187,183,112,255,235,247,241,181,175,124, 5,159,125,246,
+ 49,222,251,224, 33,118, 83,134,196, 21,106,158,180, 48, 49,208, 66, 68,194,144,214, 22, 98, 95, 16,163, 94,156,117, 46,139,131,
+148, 77, 41,219, 89,209, 62,181,212, 42, 91,127, 30, 19, 99,158, 19,134,196, 22,105, 25, 81,161,149,183,106,223,244, 42, 11, 34,
+ 58,206, 21, 23,209, 72,123, 72,156, 58,214,152,214, 46, 2, 10,190,218,211,113, 24, 5, 79, 60,137,250, 5, 51,177, 17, 64,136,
+ 30,199,104,227,159, 24,146,205, 27, 11,138,232, 26,129, 16, 64,137, 26,136, 67,161, 48,161,193, 41,220,216,232,211, 2,223,243,
+169, 10,185,218,239,193, 45, 56,129,109,167,217,128, 51,118,211, 68, 90, 10,162,200, 44,103,108, 5,137, 9,112,218,155,137, 47,
+ 10,123, 22,107, 6,181, 64,113,243, 49,123,100,104,104,249,213,225, 64,113,239,172,123,147,185,171,163, 34, 28, 94, 22,203,160,
+141,246,191,153,197,222,115,203, 75,177,112, 10,227, 18, 40,199, 89, 90, 81,147,108, 76, 90, 23,179,112,106, 36, 51, 6, 73, 68,
+ 21,182,130,202, 14,106,234,173, 41, 91,113,157,153,181,240,243,221,170,225, 67, 75, 45,136,118,248,147, 33, 49,153,245,160,240,
+ 14, 19,118, 9, 56,153,143,184,175,179,154, 16,202, 58,113, 23, 56,149,162,150,191,224, 98, 44,116,172, 44, 89,192, 80, 41,188,
+ 88,185, 69, 87,112, 53,176, 17, 47, 20,224, 75,191,175,218,229, 98,123, 63,189, 56, 35, 75, 4, 0,213, 3,111,250,191, 23, 13,
+ 10, 28,238,222,121, 81, 4, 64,122,215, 8,219,241,186,255, 93,187,221,224, 88,255,150,181, 45,237, 81,176, 20, 57,136, 1,150,
+180, 49,146, 69, 96, 72, 76, 97,145, 62,200,237, 59,239,165,199, 82, 28,136,198, 78,176, 34,156, 0,174, 5, 8, 81,233,140,162,
+228, 76, 49, 81, 44, 98, 88, 76,198,148, 19,224, 64,151, 37,120,135,168,191,159,178,200, 85,239, 81,193,124, 56,105,225,110,135,
+ 21,146,150, 74,216,162,117,131, 42,253,109,176,209, 92, 44,181, 86, 92,238, 38,236,231,138, 57,231, 30,135,108, 98,221,217,166,
+ 69,178,208, 91,105, 36,115,194, 56, 36,204, 83,237,225, 59, 33, 96,189, 57,194, 16, 71, 84, 97,108,183, 91, 92, 92, 92, 32,141,
+ 9,155,163,141, 38,103,154,157, 11, 85,176,221,238, 91,190,250, 16,186,115,128, 28,109,237,233,147, 54, 61,245,162,182, 37, 13,
+250,116, 46, 26, 28,138,122, 33,147,108, 90, 57, 40,142,212, 18,219,146, 89, 76, 3,172,127,179, 2, 30,184,118,122, 13,251,221,
+ 22,101,206, 24,199, 85,179, 55,171, 62,173, 54,199,136, 62,183,246,121, 8,176, 25, 7, 28,111,214, 24, 98,196, 52, 77,216,110,
+ 47,144, 72,215, 35, 43, 12, 90,124, 48, 25,127, 68,154,123, 73,106, 65, 20, 65,114, 26,148, 62,156,150,132,181, 24, 53,106,190,
+147,205,138, 66, 58,236, 32, 22, 2, 16,166, 5, 75,152,186,245,103, 89, 53,123,160, 20, 33,160,148,140,139,253, 5,214,113,133,
+ 82,171, 86, 80, 70,215,209,120,199,128, 44, 25,168,212, 50,187, 93,145, 56,205,147,165, 58, 49,194,144, 48, 24,195,155,136,144,
+ 75,197,110,155, 81,184,226,175, 94,126, 25,247, 95,127, 13, 55,175,221, 64, 28, 19,110,220,186,137, 43,167,167,120,251,247,127,
+196, 31,126,255, 71, 92,185,122, 13, 39,215,175, 98,158, 39, 76, 23,103,120,254,133,231,113,243,238, 29, 16, 34,126,254, 47, 63,
+199, 15,255,249,135, 64, 5,254,238,123,223,195,245,219,215,241,254,159,255,130, 79, 62,253, 4, 69, 70,148, 10,204,251,130, 58,
+207,198, 3,215,195, 32, 14,212,119, 51,193,118, 61, 49,128,130, 42, 57,105,209,193, 73, 96,165,119, 50, 12, 42,163,135, 64, 45,
+ 78,136, 11,216,239, 11, 86,134, 33,156, 11, 99,101, 15, 65, 38,198, 64,118,161, 55,171,138, 6, 33,136, 35, 85, 23,133,149,123,
+113,153,184,211,192, 66,176,207,187,179,197,171, 0, 81, 42,184, 64, 21,213,100, 24, 97,104,234,154, 20,106,169,100,202, 49,176,
+177,166,117, 96, 42,252,233,135,166,129,156,219, 8, 43, 52, 95, 53,117,194,149,203,139,204,174,149,107, 81,235, 82, 24,122, 33,
+194,118, 41, 89, 71, 67,240,125,117,247, 19,183,157,186,127, 65,133, 23, 83,129,176,136,218,108,175,182, 33,112, 27, 15, 29, 61,
+ 32, 39, 70, 93, 67, 53,145, 24,168, 79, 30,154,216,198, 17,151, 6,106, 33, 62,216,211,123,103,175,217, 70,166, 12, 46, 89, 15,
+105,138,109,164,215, 38, 20,250,129,104, 97,228, 19, 46, 31, 41, 91,103,227,177,140, 42,182, 43, 0,180,152,245,223,223,185,221,
+195, 56, 64,184, 44,244, 17,177, 91, 8,237,242,246,157, 34, 68, 64, 92,213, 99,110, 97, 43,205,102,104,158,106, 38,209, 11,164,
+ 54,112,173,234, 36,220, 90,102, 23, 98,192, 50,194,211,249,230, 98, 83, 11,110,130, 68,207,137,208,149, 25, 43, 14,149,141,185,
+109,196, 53,207, 83,111, 20, 48,116,145,224, 18,117,206, 86,116, 44, 71,208, 75, 75, 86,247,118, 47,210,219, 92,147, 32,198, 27,
+144, 5, 96,135,173,144,140,139,188,120,234,197, 10, 55,192, 14,181,253,114, 85, 37, 85,115, 17,232,132,168,182, 14,118,201, 76,
+199, 51,144,147, 92,139,217,147,108,148, 90,253,103,196,182,186, 33,203, 25,136, 33,130, 57, 55,217, 74, 48,234, 31, 91, 49, 12,
+ 49,190,164,116,226, 94, 12, 65, 79,241,197,232,123,105,253,244,177, 51,115,247,226,251, 89, 37, 30, 2, 68, 93, 56,185,228, 38,
+182, 73, 3,235,115, 57,229,138,139,221,140, 57,171,104, 83, 63, 86,101,248, 87, 43, 60, 96, 43, 31, 89,228, 7,140,163, 34, 95,
+ 39,119, 70,133,128, 97, 53, 98, 92,143, 16, 0,121,206, 56, 59,187, 0,170, 96, 92, 15, 24,236,239,251,107,220,238,103, 76,211,
+108,177,180,122,129,199, 72, 77,228,150, 12,128, 22, 99, 52,255,190, 79, 10,228, 64,151,208,214, 10,182, 82, 32,246,156, 19,178,
+ 46,122,133,213, 64,216, 85,205, 54, 79,105,176,230,137,129,149,189, 55,105,192,233,213, 43,184,188, 60, 71, 72, 9,227,176,194,
+211,243, 71,200,251,157,105,131,170, 70, 79, 87, 65, 72,125,253, 38, 44, 24,134, 1, 39, 71, 27, 8,128,221,188,199,249,229, 57,
+104, 72,109,234,229,206, 8,169,100,216,221,170,147,137, 42, 32, 6,146, 35,251,136, 4,158, 62, 7,179, 58, 4, 10, 42,161, 71,
+209,240,139, 16,237, 33,235,234, 99,223,197,136,232,165, 84, 28, 89,215,134,174,232,108,218,208, 33, 55,194, 1, 50, 87,212, 81,
+171, 57,105,136,197, 70,136, 64,140, 9, 37,207,122,114,143, 9,156,117,159, 94, 76, 16, 22, 98,192,230,104, 3,174, 10, 86,169,
+181, 98,119,185,197,190, 8,190,249,205,215,240,230,155,223,212,156,221, 52,224,218,157, 27, 0, 37,252,203,143,127,138,207, 63,
+123,132,219,207, 61,135,213,184,194,197,197, 57,136, 4, 47,191,242,101,220,125,225, 30, 46, 47, 46,241,253,239,255, 15,252,224,
+251, 63,196,189,187,215,241,237,191,249, 54, 34, 5,252,254,173,183,240,249,227, 51,132,241, 8, 83,174,216,237,182,200,121, 66,
+ 2, 53,145,136, 48,163,150, 10, 30,187,231, 25, 7, 35,175,106, 8, 74, 15, 52, 8, 40, 85, 87, 30,136, 21, 41, 12,166, 52,214,
+195,188, 66,253,234, 83, 46,136, 73,121,231,213,247, 94, 33, 34, 45,118,162, 92, 5,113,229,226, 36, 63, 88,251,214,170, 50, 43,
+197,141,150, 34,182,165,162,125, 17, 45,105,214, 20,103,124, 59, 26, 85,161, 32,106,177, 32, 46, 8, 52,152, 8, 76, 26, 74,214,
+ 3, 69,204,240,173, 59, 82,145, 70, 3,115,123,155, 22, 4,108, 29, 17,218, 67,221,172, 97,206,165, 35,105,145,164,122,185,251,
+ 10,129, 45, 38,210, 82,218, 24,135, 8, 89, 19,218,181,142,185,154,109,202,133,101, 88, 80,162,250, 98,186, 1, 67, 84,197,219,
+ 11, 32,135, 52,185, 42,170, 93,220,150, 7,221,224, 27,230,111,247,127,183,120,167,107,241,195,149, 25,181,102,112, 41,144, 8,
+ 36, 12,112,212, 11, 22,187,120,247,119,251,175,231,151,136, 52, 21,181,226,101, 69, 42,184, 22,144,216, 37, 6, 82,150, 11,161,
+ 3, 62, 22, 62,109,191, 36,109,227, 96,135,113,143,158, 36,210, 53, 78,173, 5,204,165, 77,210,252,114,114, 93, 76,181, 61, 56,
+ 63, 11, 38,105,222,116,187,228,160,142,139, 54,218, 37, 82,172, 44,115, 3, 25, 53, 39,135,169,120, 91, 7,107,157, 64, 48, 13,
+ 14, 5,139, 17,165,222,129,250,127,209, 49,171,180, 11,208, 97, 68,135,177,182,214,164, 88, 65,209,117, 27,253,217,241, 98, 16,
+129,192, 69,163, 49,101, 17,177,235, 34, 80, 23, 5,118,209,221, 66,169,103,141, 17,200, 68,142,139,226,169,133,219, 44,138,141,
+ 24,163, 5,101,233,243, 82,165,239,232,189,187,132,116,171,157, 78, 58,131, 50, 32,236,117,248,132,198, 59,252, 98,140, 2, 23,
+ 16, 75,179,145,213,131,198,204,199,246, 34,135, 66,201, 38,174,180,233,145,227,238,185,195,105, 21, 40,102,226, 76,145,254,123,
+239,167,138,237,110,198, 60, 23,179,177,249,153, 36,246,123,201, 65,190,128,190,166,128,113, 72,144, 8,100,203,138, 79, 67,194,
+184, 89, 33,164,136,185, 20,156,159, 95,168, 96,108, 8, 88, 29,173, 21,191,219,162,102, 35,246,251, 9,243, 60,155,158,192,154,
+ 22,155,184, 84,102, 12, 70,219,115,241,163, 88,176,144,167, 39, 46, 39, 58, 45,133, 16,142,232, 61,100,210,143,137,144,203,140,
+152, 84,148,235,186, 51, 71, 5,159,158,158, 96, 53,142,120,252,248,115,196,113,176,187, 44,219,186, 84,223,143, 77, 26,145, 2,
+ 33,130,145,231,217,246,237,130,213, 48,226,120,115, 12, 1,176,221,109,177,221,109, 65,105, 88,224,107,237, 51,169, 86,156, 27,
+ 86,152,196,149,240, 97,161,202, 93,140,251,130, 24, 61, 78,248, 25,213,169,125, 24,204,166, 48,199,194,162, 98,150, 8,219,213,
+145,235, 89,130, 70, 57,218,134,202, 38,169, 58, 2,201,165,106,172,234, 48,192, 27,252, 90,106, 67,150, 22,168, 66, 80,134,136,
+202,164,113,171,182,231, 93,175, 6, 80, 21,236,171,126,144,187,237, 14,227,102,141, 55,255,230,155,248,171,175,188,162,135,230,
+ 56,226,214,237,219, 56,223, 94,224, 95,126,242, 19,148,153,241,220,115,119, 17, 67,192,147, 39,159,227,198,173,155,120,225,165,
+123,184,126,253, 26, 62,252,240, 33,254,175,127,252,191,241,203, 95,188,141,215,223,248, 50,190,254,250,125, 92, 62,189,192, 31,
+222,254, 19,206,183, 19, 40,141,216,207, 21,251,253,164,135, 85, 52, 68,168, 93, 80,213,216,190, 34, 74, 27, 67, 69,235,140,135,
+148, 48,155,191,208,119, 60,213, 30,110,205,213, 37, 37,189, 26,162,151,171,216,158,135,177,155, 51,198, 33,130,107,192,156, 25,
+107, 18,196,216,237, 71, 42,160, 10, 45,228, 68,204,243,192,181,244,124,232,202,144,100,135,172, 37,119,201, 98,220,189,136, 1,
+131, 68, 21, 75,218,237, 14,146, 96,248, 79, 69,175,194, 51,184,205,178, 70, 38,176, 12, 20, 90, 32, 8, 16, 52, 48,199, 10, 14,
+114,237, 82,116,181,250, 66, 40, 83, 25,157,184,172, 23,184, 90, 79, 8, 76,162,104,211,118,216, 24,138, 86,249, 59,168, 82, 21,
+174, 99,118, 43, 39,143,117,209,139, 85, 73, 30, 37,106,251,248,166, 48, 95,136,180,156, 82, 39,237,178, 89,180, 37,193,189,201,
+181, 89, 86,220,233,177, 84, 29, 7,219,145, 73,229,131, 78,189,218, 8,155,130, 78, 67,164,148,198, 0,240,253,104, 59, 68,253,
+144,182, 3,197,199,170, 98,175,133,109, 36, 88,185, 34,207, 5,145, 9, 49, 9, 36, 38, 48,133,158, 80, 45, 11, 79,190,147,187,
+170,118,248,186, 38,209, 10,191,178,210, 2,197, 70,227, 92, 43,164, 84,179,185, 85, 8, 23,152, 39, 73,199,173,174,186,150,165,
+246, 96,137,216,181,231,223, 95, 63,107, 76,178,139, 26,219,129, 73,134, 75,102,239,228,168,229,184,235, 36,196,194, 94,200,247,
+175,132,158, 0,222, 43, 21,223, 1,203,179, 41,109,207,172, 91,188, 56,194, 66,162,229,133,156, 79, 97, 28,232,212,212,208,204,
+ 8, 84, 45, 99,188,143,200,189, 88,108,153, 11,203, 20, 51, 90, 76,118,252,226, 95,236,175,151, 34, 49,103,197,187, 88,178,216,
+244,138, 22,246, 60, 23, 53,250,149, 90,185,106,192, 16, 37, 35, 74, 82, 35, 76, 58,209, 48, 88,123,237, 19, 20,159, 82, 45,157,
+ 12, 75,148,140, 44, 10, 88, 79,193, 59,184,240,151,202,122, 43,114,155,136,213,249, 15,162, 34,190,237, 46, 99,154,248, 96,244,
+ 46, 85,192,193, 80,215,130, 69, 60, 49,218, 84, 41, 13, 17,101,206,168, 69, 87, 0, 33, 69, 12,171, 1, 34,192,126,183,195,110,
+187,183,105,104,210,208,147, 5, 57, 79,170, 96,158,250,197,152, 82, 68,138, 73,121, 26,134,137, 78, 67,108,205,150,174,233,220,
+ 74,105, 69, 56,209, 98,202,183,176,192,186, 77,154, 84, 67,228, 78,157, 60,103,164,245,160,244,187, 32,168,147,186,115, 16, 2,
+142,143,149,112,119,126,246, 4,247,238,189, 0, 0, 6,202, 41, 45, 59,133,125, 72, 72,179, 21, 35,250, 76, 29,173, 53,245,141,
+ 33,216,237,119,176, 52,115,125,206,165,219,195, 25,102,189, 92,148, 90,234, 56, 35, 29,171,146, 85,134,109, 91,105, 57,186, 61,
+ 17,104,145,241,196,254,176,163,117, 93, 78, 92, 82,126,123,128, 68,243,236,154,232,135, 77,209,233,191, 92, 36,189,228,220, 35,
+ 75, 73, 85,227, 76,234,217,219,239,247, 8, 41,160,100,139,106,116, 24, 3,107,181, 60,166,216,194, 10,106, 46,184,124,250, 20,
+ 87,111,221,194, 27,223,251, 46, 94,122,254, 69,236,230, 9,235,163, 53,238,220,189,131, 79, 62,250, 4, 63,249,201, 79,113,237,
+244, 26,110,126,249, 30, 46,182, 23,216,109,119,184,247,226, 11,120,254, 75,207, 99,189, 57,194, 47,126,241, 75,252,159,255,251,
+ 63, 66, 42,227, 31,254,254, 59,120,241,229, 23,240,224,147, 15,240,231,119, 62, 70,221, 11,194, 56, 98,151,103, 76,251, 98, 85,
+ 53,217,238,138, 17,152,145,107,231, 60, 87,102,165, 73, 45,115,181, 83,194, 16, 34, 38,239,136, 88, 26,107, 57, 48, 33,154,250,
+189,218,250,130,109,167,203,149,145,103,193, 60, 86,172,198,128, 90, 3, 50, 11, 98,101,136, 77, 77,170, 84, 12, 97,176, 48,174,
+170, 49,178,236, 84, 56,221,193, 58,189, 74,191,172,172,187,243,172,227,248,228, 89,233, 46,206, 53, 37,102, 16, 32, 68, 29,173,
+ 71, 19, 12,233,216,216,246,219, 22, 11, 73,228, 81,146,118, 41,137,219, 28, 14, 35, 71,123, 55,100,221,153,232,184,213,163, 81,
+219,161, 12, 27,167,250,195, 74,221, 19,237,251,204, 64, 62, 62,238,177,165,212,236, 59, 29,213,218,120,206,142,201, 12, 80, 61,
+ 72,197, 23,188,170,210,194, 86, 93,111,103,190,236,133, 93,200, 99, 31, 5, 93,217,190,172,137,136,122,142, 56,219,190,182,129,
+ 63, 76,164, 72,172,140,239, 72, 1,165,102,132,170,211,141,228, 49,150,210,213,254, 13,207, 99,209,150, 85,204, 10,199,172, 40,
+ 82, 95, 69,232,242, 86, 39, 32,139,221, 41,241, 66,180,229,221,126,101,112, 46, 16,174, 42,168,227,130, 82,138,234, 85,114, 70,
+181,189,121,181,105, 64, 45, 89,249,236,158,139, 93,139,237,227,181, 56, 0,139,101, 83,251,184, 55,244,194,200, 52, 14,213, 82,
+191, 28, 36,180, 64,212, 91,102,187, 77,245,220,146, 26, 18,130,116, 23,130,166, 11,194, 24,234,206, 31,239,151, 19,187,151, 24,
+135,236,130,127, 47, 31,224, 39,116,102, 80, 0, 0, 32, 0, 73, 68, 65, 84,192,107,189, 24, 35,187,190,197,189,233,202,224, 46,
+168, 32, 36,219,149,138,199,229,114,181,192, 30,179,159,121,209,227,197,161, 79,159,170, 78, 85, 14, 84,228, 11,157,132,255,203,
+171, 77, 66, 90, 78,128,239,179,195,226,183, 92,172,153,200,167, 26,213,158, 91, 9, 58, 38,246, 11, 19,246,189, 95,128,113,164,
+ 37, 7, 30,142,223, 29, 6,211,194,113, 14,254,188, 23,250,193,211,144,244,247, 12, 42,148, 35, 94,118,220,140,121, 46,184,216,
+237,176,205, 25,115,182,212,187,218, 39,183,122,169, 57,142,181, 83, 31,199, 65,241,168,197, 88,247, 49, 4,196, 33, 33,144,238,
+149, 47, 47,183, 40, 89,243, 4,214,171,149,229,172,119,158,193, 52, 79,200, 57,183,140,249, 96, 25, 23,209,119,234,193, 70,215,
+ 20, 64, 76, 77,168,232,130, 90,242,208,160,229,116,204, 86, 42,108, 41,111, 33, 0, 99, 12, 6,158, 34,236,166, 9, 39,225, 8,
+ 41, 37,132,148, 48,109, 11,216,240,174,155,147, 19,236, 46,119, 40, 57, 99,189, 62, 69, 46, 21,149, 51, 74,169,205,109, 17,163,
+ 22, 19,115,102,204, 69,199,107, 21,181,173, 33,106, 21, 92,238,118,234,134,193,176, 72, 26,180,145,187,240,194,121,208,207,185,
+228, 93, 74,128, 41, 95,185,119, 56,185, 58,204, 94,175,228,104,163,186,234, 93,131, 1, 40,252, 0,129,232,238, 43, 88, 92, 43,
+139, 10, 24, 98, 74, 13, 94,194,172,130,187, 8, 96,206, 25,171,205,136,202,140,146,243, 1,165,104,174, 25,146, 2,144, 2,242,
+ 92, 90, 71, 53, 36,205,227,142,164, 93,255,148,103, 92, 60,126,130,151, 94,253, 10,222,252,235,111, 35,132,136,179,139, 11,220,
+124,238, 54,238,222,187,139, 63,188,245,123,252,226, 23,191,192, 11, 47,188,128,171,215,111,224,225,167,159, 96,189, 90,227,213,
+ 87, 95,197,115,183,175, 99, 47,192,255,251, 95,126,128,127,252, 63,254, 27, 94,120,233, 6,190,243,183,223,194,102,181,198,219,
+127,252, 35, 62,252,203, 39,136,195, 10, 60, 16,166,121,143,188,159, 52,119,156,180,226, 28, 66, 2,163,162, 86,233,151, 25, 52,
+ 70,143, 89,199,152,222, 24, 68,102, 12, 41, 32,215, 78,123, 34, 91, 82, 85,147,150,214, 92, 91, 36, 40, 27, 15, 93, 64,200,133,
+177,203, 51,214,117, 64, 42,130, 41, 40,143, 93, 71,149, 1, 92, 42, 52,211,163, 67, 39,252, 98,107, 99, 62, 1,136, 43,106, 37,
+ 68, 75,220, 66,203,252,206,118, 80, 68, 32, 37,144,196, 86, 65,163,197,157, 0, 44,165,139,136,210, 8, 80,178, 3,128, 17,136,
+ 45, 67, 91,144,194,128,160,225,211,173,115,117,127,235,179,255,223,187,230,238, 57, 7,179,101, 87,203,161,200,135,251,238,171,
+177,195, 68, 76, 61,111,240, 23, 33,227,112,115,219,125, 30,248,120,177,236,230,184,141,221,217,192, 64,120,166, 8, 96, 43, 34,
+221, 53,224, 41, 95, 84, 77, 82, 39,202,174,247,247,200,127,166, 28,172, 2,168,115,100,108,164, 92,230,140, 48,132,118,200,234,
+103, 84,141,197, 79, 45,211, 25,240, 61, 48,181,139, 89,105,125,154, 7,224,171,175, 96,130, 85,125,118,212,243, 78,198, 22, 8,
+ 14,236,177,127,190,214,170, 81,143, 37,219, 42,160,130,184,162,148,172,234,220, 92, 44, 73, 74,179, 11,230,202, 64,205, 16, 35,
+ 58,114, 45, 8,168,138, 60, 21,106,171, 53, 24,165,237,240, 66, 85, 49,104, 52,239, 0, 72, 93, 31,212, 24,180, 45,139,197, 4,
+148,212,210,213, 42,161, 83, 45, 13, 34, 19,236,127,147,176, 96,118, 47, 58,242,103,215, 0, 95,200, 0,176,241,244,179,255,156,
+119,215, 29,106,228,103,156,190,158, 12,181,218, 73,135,113,180,231,241, 32,205,203, 11,135,138, 3, 74,163,239,136,123,172,107,
+119,140, 44,127,239, 3, 70, 62,250,120,159, 22,228,194,160,182, 21, 80, 20,155, 32, 72, 75, 65, 67, 35,167, 37, 24,145, 25, 77,
+ 21,107,207,248,146, 68,183, 20,122,178,105, 87, 84,207,208,105,137, 77,184, 72,238,227,161, 14,187,177,140,119, 54,114,214, 52,
+ 85,108,119,122,161, 23, 22, 20, 16, 10,215,166, 47, 96, 67, 72,171, 37,207,130,125, 82, 64, 26,186,203,138, 40,128,146,198,189,
+ 18, 8,151, 23, 91,148, 89,129, 94, 41, 5,108,142,143,148, 42, 87,251,121,151,115,214, 60,251, 90,219,115,212, 80,196,128,138,
+217,168, 83,248, 24,130,108,172, 9, 6,192,129, 14,151,234,162, 89, 0, 64, 64,244,200, 85, 83,188,166, 97,208, 21, 23, 51, 86,
+235, 17, 33, 37,245,234,148,140,146, 9,171,213, 26,167, 71, 39,248,236,209, 67, 84, 0,155,205, 26,101,222, 89,132,108,231, 8,
+164, 16, 33,145, 48,237, 51,230,201,227,105,171, 38,137, 82,196, 52,103,156,159,109,181,249, 74,108,119, 75,135,228,168, 77, 57,
+ 88, 51, 57,163,120,112, 26, 57,101,170,237,188,170,165, 59,105, 69,191, 8,139,178, 39, 36,128, 81,116, 55,110,218, 83, 23, 46,
+ 85,158, 17,195,216,199, 56, 4,203,173,213,180, 33,191, 32,124,148,159,133,193, 89, 83,223, 56, 18,198,152, 80,102,139, 23,108,
+105, 96,210, 14,125,103,193, 11, 23,203,238, 46,216, 77,123,188,246,221,111,225, 27,223,126, 19, 53, 23,100, 20,220,187,125, 7,
+ 39,167, 87,240,139, 31,253, 12,239,124,240, 46, 94,249,234, 87,112,229,248, 10, 30,124,252, 17,174,221,184,134,151,191,252, 50,
+174, 28, 95,193,227,243,115,252,211,247,255, 9, 63,248,254,143,241,218,235, 47,225,245, 55,190,137,221, 52,227, 87,191,250, 45,
+158,156,157, 35,174, 70,212,202,216,207, 51,114,222,105, 20, 51,148, 15, 29, 98, 68, 68,210,104, 64,206, 86,237,233,168,170, 66,
+144,170,117,132,141,177, 46,198, 47,134,145,229,244, 50, 83,209,121,176,203,157, 33, 69, 15,192,198, 43,150, 10, 98, 96,222, 87,
+236, 87, 25,227,160,184,220, 90, 67, 3,171, 8, 5,132,200,109, 84, 23, 99,178,182,217,134,249,226,153,221, 0, 87, 66, 45,177,
+145,164, 66,176, 44,117,187, 20,117, 51, 98, 99, 81,183,232, 20, 6,211,220,114,217,131, 7, 92,112, 65,136, 38,174, 17, 55,130,
+176,118,127,110,101,106,244,178, 69, 87, 98,241,139,158,117, 93, 77, 25, 27, 14,242,210, 28,111,234, 27, 60, 2, 69,219, 9, 90,
+ 84,176, 8,186,241, 30,135,116, 43, 63, 0,251,193, 46,205,173,209, 99, 26,235, 34,168,161, 95,230, 68, 94,132,218,133,106, 35,
+207,212, 8,122,150, 98, 98,121,243,100, 27, 70,200, 33, 63,187,143, 43,123,130,149,171,251,170, 20, 72, 29,116,220,175,173,104,
+ 79, 64,131,125, 95,108,149,192, 22,228, 81,107,134,148,172, 99,115, 98,173,254,115, 70,172, 35, 66, 42,136,148,140,105,208,125,
+221, 66,220,167, 66,110,167, 42,217,194, 65, 50,184,100,192,246,242,117, 46,200,101, 15,206, 69,247,127, 38,192,129,173,183,242,
+156, 53,152,194,226, 65, 91,182,187,241,211,137,250, 45, 45,203, 61,164,253,253,208,236,173,125, 4, 75, 85,154, 80, 49,165,100,
+135,191, 9, 42, 23, 35,104,178, 78,156,160,176, 20, 35,187,162,154,112, 16, 78,217, 19,252,255, 94,236,203, 76,247,150, 46,183,
+176, 31,246,209,184,244, 93, 59,197,246,122,120, 65,107, 11,162, 44,254,182,222,240,194,171, 86,240, 34,163,251, 32,169,176, 29,
+166,125, 26,176,188, 88, 93, 68, 71,238,187,231, 67,124,177,155, 48, 43,116,141, 66, 69, 39, 65, 69,150,197,133,173, 47,200, 86,
+ 32,173,240, 21, 19,222,165,230,213,111,207,170,131,212,154,127, 94,243, 42,162,135,214,160, 71,218,182,213,131,105, 91, 92, 68,
+107, 95, 18,156, 93,236,177,221,103, 76,185,218, 37,165, 3,164, 16,163,117,199, 61,152,168,218,135, 56,164,161,165, 43,194,146,
+212, 52,184,138,112,113,113,129, 60,101, 93,255,144, 32,174, 70, 12, 67, 50,157,143,218, 74,107, 41, 40,185,104,214, 56, 91, 99,
+ 73,131,190, 31, 81, 15,224,113, 88, 31,146,223,216, 39,206, 38, 89,103, 19,168,182, 72,218, 62,117,108,124, 71,115, 92,109, 78,
+142,117,204, 47,192,122,189,105, 34,208,178,103,112, 74, 88, 31, 29, 3,129,113,190, 59,195,106, 28,177, 90,109,112,113,246, 24,
+185,204,250,177,178, 96,202,123, 12,195, 0,150,128, 41, 23,108,247, 58, 49,163, 32,216,172, 79, 81, 1, 92, 94,158,227,241,231,
+159,169,189,119,214,102,208,137,146,221,237, 64, 40, 96,212, 64,168,166,133, 74,108, 20,130,198,211,142, 98, 7, 67,247,236, 57,
+232, 67,200, 17,139,164,214, 42,169,208, 43, 92, 49,175,186,127, 15,125,237, 98, 28,228,176, 36,105, 57,169, 42,104,220,225, 46,
+ 79, 96, 34,236,171, 89,153,172,171,228, 82,205,190,163,223, 1,120,104, 69, 85, 27,194,249,229, 37,110,222,185,137,191,253,246,
+183,112,227,206, 45,156, 95, 92, 98,115,180,198,139, 47,126, 5, 82, 50,254,199,255,243, 3, 60, 58,123,140,215,190,249, 6, 2,
+ 17,158,158,157,225,149,175,188,130, 59,119,239,128, 64,248,232,193,135,248,111,255,245,191,227, 79,111,255, 30,127,255,159,191,
+133,231, 95,124, 1, 31, 63,248, 4,239,188,247, 23, 48, 24,235,205, 49,230,185, 96, 63, 93,162,148,140, 24, 34, 10,103, 48,128,
+ 68, 17, 49,196, 70,255,137, 8,150,122,102, 25,206, 6,231,113, 32, 73,117,149, 9, 17,214,195,128,204,147, 86,226,230, 65, 85,
+ 31, 56, 48, 75, 65, 52, 24,137, 51,201,217, 86, 14, 44,140,221, 62,227,104,149, 80, 66, 64, 46,140, 58, 48,184, 18,226, 16,204,
+ 71,171,170, 89,142, 21, 44, 65,127, 47, 27,165,106,215,239,159, 33,155, 88, 38,116, 84,172,137,189,116, 87,108,163, 41,104,247,
+199, 92, 77,196,148, 20,174,195, 26,114,162,158, 88,235, 28, 22, 74,244,234, 74,117, 34, 4,161,206,127, 55,151, 69,136, 29, 81,
+202, 22, 90, 65, 70,140, 35,177, 75, 41,120,151,207, 7,227,199, 54,201,247,108,231,190,136,182,103, 36,244, 0, 21,102, 83, 80,
+119,209, 88,104,151, 46, 26,145,172, 31,226,157,168,168,121, 42,125, 48, 31,220, 62,103,227, 83, 47, 72, 14,160, 36, 7,202,234,
+ 78,235,107,218,117, 19, 48,166, 64,144, 90, 80,115, 70,178,176, 33,177,130, 17,166, 95, 0,107,193, 87, 89, 3, 32,184, 22,176,
+117,201,234, 49,158,155,195, 34,212, 25, 41,141,168, 33, 32,134, 81, 59,194, 5,194,211,187,116, 95, 85,148,154, 85,183, 82, 51,
+196,126,118, 41, 25,156, 51,114,221, 67, 50, 35, 23,237,204,165, 48, 10,171,119,220,247,163, 92,139,193, 51, 12, 82,101,154, 5,
+ 50,149,187,176,134,121,224, 96,143, 75,205,145,161,193, 53,174,177,208,196,193, 24,163, 89, 82, 5,148, 52,215, 30, 30,116,211,
+ 18,195, 58, 50, 55,132, 94,212,233,122,207,180, 64, 20,190, 48,106, 95,146,224,218,193, 78, 70,143, 35,117,220,144,137, 65,221,
+246, 5,207,253,118,109,134,209, 19,169,237,143,185,165,121,185,175,220,185, 9,169,229, 26,117,159,127, 83,226,179, 40,237,176,
+ 93,236, 11, 59, 27,245,216,210, 94, 32, 46,212,234, 49,180,110, 78, 22,194, 80,161,142,241,101,211,126,192,215, 71,132, 5, 21,
+144, 90, 49,237, 84, 62,135,208, 4, 19, 40, 54, 12, 67,101, 84,191, 0,205,138,218,252,212, 30, 48, 42,210,132,191,204,130,237,
+ 60,227, 98, 59, 97,158,212,151,238,144, 21,231, 40,176,148,150,197,224,255,238, 20, 35, 98, 10, 11,129,116, 47,128,106,214, 32,
+147, 46,116, 20,172,215,107,211, 50, 25,250,153,124,119, 95,144,109,132, 29,141,140, 23, 99,196,144,162,174,125, 83,106,211,142,
+234, 9,137, 45,134, 89,139,126,198,225,251, 36,206,152, 8,218,112, 68,211,140,109, 54,107,228, 82,145,167, 9,227, 48,128,146,
+133, 11,149,138,184,222,224,232,234, 85,148, 90,112,249,244, 2,183,239,220,209,201,243, 60,105, 35, 42,250,251, 78,211, 14, 39,
+199, 87,192,149,177,219, 79,152, 38, 45,174,143,214, 9, 71, 71, 27, 48, 11,206,206,207,112,126,118,142,213,122,141, 42,192,148,
+171, 77, 52,105,145,241, 14,157,136, 44, 34,145,147,238,117,177,176, 57,105, 54, 57, 72,227, 83,201, 48,149,193,131, 19, 26,113,
+ 9,173,187,140,182, 28, 83, 28, 98, 69, 74,209, 46, 14,244,238,196, 49,147,150, 86, 69, 33, 98,102,198,118,158,213, 84, 95, 5,
+ 89, 96,234, 72, 63, 56, 92,144,103,233, 94, 84, 49,213,138,237,110,143,219,119,239,226, 59,223,251, 14,214,227, 26,143, 30, 63,
+193,213,235,215,241,226,203,207,227,193, 95, 62,194, 79,126,252, 83,172,143,143,240,250,155,111,162, 50, 16, 36,224,171,175,126,
+ 21,155,147, 99, 92,156,159,225,227, 15, 63,196,207,126,250,175,184,120,250, 20,127,255, 15,127,135,163,213, 9,222,250,205, 91,
+120,240,241,167, 88, 31, 29, 35, 14, 27,228, 92,176,223,239, 81,242,132, 33,106,218,156, 24,199, 60,217,120,151,217, 56,224,232,
+ 94, 70, 54,219, 74, 72, 85, 47, 59,152, 45,202,163,248, 98, 68, 10, 1,243,194,159,233,190,198,226,151,109,176,139,207,118, 81,
+108, 20,178,105, 82,228,226,152,180, 83, 42, 85, 9,110,163,231,133,179, 64, 11,241, 30,240,224,136, 85, 49,124,169,226, 56, 51,
+210,160, 39,170, 22,108,177,117,170,234,231,236,112,144,118,105, 45, 58, 98,211,244,216, 69, 22,205, 50,194, 11,242,181,250,141,
+137,185,217,104,136, 14,115,150, 27,131,156, 61,184, 2,205, 11, 30, 22,158,242, 62, 46,151, 3,219, 90,112,181, 62, 63, 67,168,
+ 91,140, 6, 97, 62,216,176, 16,179,181,145,157,141,209, 27,123,125,153, 31,190, 60,224,101, 49,254, 95,224, 98,141, 39,217,105,
+ 96,212, 47,238,229,104,211,119,119, 98,234, 95, 61, 84,117,109, 81,114,198, 80, 51,106, 77,182,175, 45,224, 98,107, 19,174, 77,
+ 8, 83,235,172,107,175,172,157, 50,215, 10, 46,179,237,153, 35, 66,141,168, 49,131, 34, 33,210, 96, 23, 98,112,199,125, 23,192,
+178,152,230,163,152, 64,174, 64,138, 42,241,115,153, 81,203,140, 82, 38,189,212,171, 42,223, 81, 24, 69,170, 2, 66, 74,109, 73,
+103, 66,253,125,110, 86, 44, 80, 23,102, 45, 48,156, 68, 93, 33,206, 96,187,216,169,173, 91, 82, 74, 22,178, 97,153,211, 49, 54,
+160, 74, 31,157, 7,123,126,197,198,200,177,107, 34,252,223,177,120,110,104, 81,172, 45, 25, 5,203,188,117, 89,172, 90,184,101,
+102,163, 79,128,252,192,119,148,174, 55, 46,222,185, 22,209,209,171, 77,129, 98,208, 29,124, 11,146, 97, 58,200,168,175,139,125,
+237,129,135,223,225, 13,100, 93, 33,117, 39,133, 79, 87, 60, 32,199,115, 20,132,236,179,172, 11,148,173, 56, 91,194,236,153,132,
+230, 71,119,228,115, 79, 81,139,157,206,215,244, 39, 90,108,136,137, 33,253,103,247, 88,213,158,203,208,127, 55,216,154, 81,112,
+185,157, 85,245,158,171, 62,199,237,187, 29, 26,163,161, 77,207,236,210, 76,163,101,155,147, 11, 33,209, 96, 79,243, 62,107,193,
+100, 69,248, 48, 68,172,199,149,193,197, 52,103,130,171,198, 79,151,202,106, 27, 52,183, 68,136,201, 8,142,214, 84,198,208,178,
+ 36,220,170,233,201,151, 30, 55,236, 98,222, 30, 7,219,223,155,104, 24,229, 52, 12, 24, 82,196, 60, 11,230,221, 78,215, 93, 5,
+200, 53, 99,174, 25, 55,143, 79,176, 89,173,177,191,188,196,126,119,137,245,122,173,223, 89, 19,160,238,246,123,181,236, 22,195,
+ 38, 23,193,126, 55,129,115,134,144, 96,117,124,213,114, 55, 4,151,151,187,214, 8,151,170,147,115,137,132,234,150,212,150, 31,
+ 34,141,202, 72, 32, 36,207,103, 37,219,201,133, 20, 65, 49, 53,166,125,242,232,187, 16,123,149, 90,179, 94, 88,162,233, 77, 74,
+ 94, 58,140,102,116,224,134, 84,119,219,246,106,175, 2, 45,128, 98, 95, 25,163,125,241, 74, 72, 90,117, 20,221,243,129, 11,168,
+ 84, 68, 83,201, 78,147, 2,252,191,249,173,111,225,229, 87,191,134,105,127,137,207,159, 60,193,205, 91,183,112,237,230, 77,252,
+242,103,191,198,175,127,245, 43,124,249,197, 87,112,227,185,155,224, 64,184,126,253, 42,238,220,185,141,185, 8, 62,250,224, 1,
+ 62,249,232, 99,252,250, 87,191, 1, 64,248, 15,127,251, 55,216,110,247,248,205,175,127,139, 71, 15, 31, 97,115,229, 20, 68, 1,
+251, 73,243,167, 75, 41, 10,206, 97, 15, 4, 81,130, 15, 91, 92,101,176, 7,189,239,101,245,205, 46,208,248, 89,161,174, 44,119,
+ 98, 83,133, 96,136,177,241,200, 17,186,197,136,133,192, 81,143,226, 24, 52, 66,149,205,148,196, 85, 69, 40,211,196, 88,143,140,
+ 42, 64, 46, 9, 20, 24, 97,237,193, 8, 21,196, 10,244,168, 22,185, 26, 61, 89, 77,250, 40,222,194,166,245,159,197, 96, 5, 65,
+135,173,196,152,140, 50,214, 57,219, 62, 22,141, 22, 81,233, 17,138,137, 72,145,171,208, 10, 89, 47,205, 78, 55, 67, 3,182, 4,
+ 43,240,212,155, 31,162,166,140,193, 18, 2,123,160,201, 51, 97, 28,149, 1,100, 11, 52, 89,248,139, 97, 15,168,215,215,236,194,
+172,158,174, 85, 93,220,121,224, 85,246,248, 87,149,109,146,237,205,201, 10, 35,183,120,181,244,172,216,165, 84,203,176, 16,113,
+219,219, 51, 93, 97, 12,125, 71,234, 65, 34,109,125, 37,198,159, 30, 54,136,171, 35,204, 23, 79, 80,242, 30, 20, 34, 50,235,159,
+ 9, 49,234,136,174, 86,237,224, 43, 91, 55,157,145,115, 6,138, 50, 24,234, 60,169, 31, 23, 2, 10, 17,113, 88,235,148, 39, 6,
+237, 74,104,112,216,174, 77,103,208, 58, 20, 24, 36,165,150,220, 10, 5, 31,239,115, 45,138,245,204,213, 85, 80,173,144,111, 73,
+112, 6, 84, 41,190,191, 76,212,223, 19, 67,148,182,189, 52, 45,158, 35, 43,140,171,104, 49, 26,131, 78,147, 66,140,136,163,226,
+168, 75, 41, 24,135, 1,227,122,236, 35, 84,187,200,106, 53,193,164,232, 42,142,188,160,230,106, 54,159,120, 16,242, 3,170,118,
+ 38,135,131, 80,150,150,209, 78,221, 41, 33, 22, 58, 3, 91, 3, 85, 94,152,183, 4, 45,228, 70, 89, 10,116,112, 41,123, 92,175,
+ 61,149, 13, 76,115, 56,161,232,227,119,197, 1,179, 21,149,210, 16,169, 97,161,190, 6,122,131,227,185,233, 32,139, 81, 94, 88,
+227,150,211, 33,181, 38, 42,244,105,145,148,180,200, 94,192, 51, 65, 44,135,110,115, 10,125, 95,219, 24, 5, 65,237,130, 14, 70,
+241, 78, 58, 8, 58, 86,182, 22,228,185,224,236, 98,194,118,158, 49, 23,177, 81, 56,183,180,188,106, 93,186,152,136,182,218,244,
+143,156,189,111,227,109, 69,198, 2, 57,103, 21,143, 53,171, 43, 99,181, 58,194, 24, 35,118, 69,159,189, 33, 13,106,189, 44,106,
+ 37,246,177,190,127,174,254,220,141,126, 17, 79,185, 33,116, 61,175, 64,216,195,146,208,168,141, 62, 73,246,191, 69, 16, 5,177,
+ 37,125, 78, 83, 74,184,188,216,107, 90,155,169,240, 11, 51, 46, 37,227,249,213, 26,235,180,198,231,103, 31, 65,132, 48,174,142,
+ 80,171,106, 81,106, 45, 38,230, 99, 93,175, 66, 47,235, 50,101, 20,154, 81, 10,227,244,232, 42,198, 24, 80,230,138,179,203, 45,
+ 36,168, 32,144, 91,113,168,153, 20,238, 44,107, 25, 3, 66,205, 6,156, 60, 64,195,177,160,128,168, 34,215,246,115, 33, 36,253,
+ 2,166,100, 95,136,210,198,182,122,217, 39, 83,184, 75,171,192,225,157,172, 8, 40,233,114, 63,196,164, 95, 70,219, 33, 83,112,
+208,140,250,176,105, 8, 38, 36, 1,138, 3,113,170, 38,211,138,117, 13,119,158,127, 1,183, 94,122, 30,171,205, 10, 79, 31, 62,
+196, 56,174,240,210,151, 95, 65, 92, 39,252,235,143,126,134, 15, 63,248, 11,190,246,218,125, 28, 31,159, 98,220,172,113,227,230,
+117,220,188,121, 19,143, 31,125,142,143, 63,254, 12,159, 61,122,136,119,223,123, 7,155, 43, 27,124,249,185, 23,241,233, 7,143,
+240,254,159,223,198,118, 59,225,248,202, 53, 84, 82, 11, 65,174, 5, 9, 1, 3, 17,102, 6,178, 17,216,162,161, 52, 53,245,204,
+ 84,190,161, 90, 40, 65,135, 97,212, 82, 80, 13,116, 32,139, 17,156,143,174, 98,138, 8,181, 52, 11,131, 64, 43, 79, 4,173,190,
+ 99, 12, 6,224, 80,193,152, 24,108,164, 50, 99, 55,205, 88,175, 35,134, 4, 76,161, 32, 14,250,224, 6, 97,131, 99, 84, 13,128,
+168, 21, 28, 66,139,196,172,108,136, 68,219,179,115, 37, 21,128,164,103,124,216,206,212, 94,120,119, 21, 25,201, 86, 25,219,151,
+ 49,116,181,191, 78, 44,156,185,205, 45,108,132, 22, 93, 19, 91,209,208,216,245,162, 2, 75,103, 24,104, 49,208, 71,154,109,191,
+ 73,138, 9,165, 64, 7,249,231,135, 2,186, 30, 92, 18,162, 9,183,152, 16,216, 72,115, 11,197,240, 33,236,198, 46,220, 72,109,
+130,224, 2, 66,255, 98, 7, 75, 32, 19,246, 21,135, 52,133, 57,168,186,242,173,205, 45,157, 43, 47, 54,169,128,116,181,191, 90,
+143, 8, 33, 38, 12,235, 21, 30, 63, 58, 67,216,174, 17,106, 4, 86, 5, 41,142, 96,202, 10,123,178, 14,165,214,172,148,176,121,
+ 70,173, 51,192, 5,211, 60,163,238, 39,245,186,219, 52, 35,198, 29, 98, 36,196,113,196, 48,172,244, 2,118,213,188, 79, 72,170,
+ 93,198,134,230,204,101, 70,157, 38,148,156,173,131,207,237,243,236, 58, 11,173,206, 61,224,162,100,183,197, 73, 75,235, 19,223,
+ 69,138,119, 91, 38, 88, 36, 90,128,136, 24,136,100,251, 71,183,166,217,254,115, 84,235,145,242, 23,200, 18, 23, 53, 50, 19, 66,
+ 77,220,180, 12,114, 9, 44,232,226,109, 27,199, 51, 14, 57,229,194, 29, 85, 99,103,147, 82,235,106,179,105,130,124, 68, 29,192,
+149, 90, 56, 18, 14,132,149, 11, 53,180,141,109,131, 61,223,234,191, 14,170,195, 16,110,251,109, 89,140,198, 5,212,210,233,218,
+118,128, 23, 99,119, 54, 96,151, 61, 67, 36,157, 76, 24, 40, 44, 4,196,102, 99, 98, 67,201, 46, 44,111,213,247,238, 33, 54,244,
+236, 65,164,176, 79,217, 40, 52, 81, 40, 57, 14, 25,174,150, 39, 91,163, 4, 91, 9, 85,112, 85, 64, 85, 11,147, 55,124,108,251,
+110,219,244,100,191,207,184,216,238, 49,207,122,225, 22, 86,162, 97, 3,194, 26,128,201,167,182, 44,130, 24,147, 93,194,221,225,
+ 1, 97,219,145,103,237,236, 61,208, 37, 70,164,205, 26, 57, 0, 50, 91,135, 10, 19,110, 26, 31,164,159, 9,250,217, 68,155, 12,
+197, 97, 84,113, 48,102,157, 46, 87, 89,100,207, 75, 11,244, 17,255, 61,154, 77,215,108,126, 54,181, 36, 0,171,205, 6, 20, 19,
+230,124,137, 52, 36, 12,163,226,208,107,158, 65, 66,184,114,114, 21,165,206,216,238,118, 24,215, 35, 86, 70,146, 19,209,233,151,
+ 58, 75, 50,144, 2, 10, 9,234,180, 67,101,193, 64, 35, 66, 96,156,158, 94, 1, 34,176,219,205,120,252,228, 49,210,144, 32,201,
+ 52, 76,208,169, 6,147, 59, 68, 84,223,229,150,198, 38, 10,108,163, 16,247,178, 22,125, 64,146, 0, 17, 35,106, 48,248, 65, 76,
+122,185,126,193, 36,178, 80, 92, 55,111,175,237, 6,171, 65, 55, 22, 98, 23, 87,202, 6,139,196,131,117, 79,181,234, 8,161, 64,
+169, 85, 82,245,225, 42,121,198,201,102,133,219, 95,121, 5, 55,111,222,196,147,179,167,120,240,224, 67,220,185,241, 28,238,190,
+252, 37, 92, 62,126,130,127,249,254,143, 80,171,224,165,175,125, 13,155,245,136, 43,215,175,224,185,231,239,130,136,240,238,187,
+239,226,179,135,143, 49, 77, 91,124,244,224, 1, 78,142,175,224,202,213,171,248,211,187,239,225,179,135,143,148, 14,116, 50,224,
+114,159, 49,229, 12, 46,186, 14, 24, 34,161,148, 46,104, 73, 4, 80, 76,168,182, 51,215,185, 44, 31, 84,214,203,202, 92,121,210,
+116,240,126,113, 27,141, 41,147,152, 57,183,164,179, 2, 81, 11, 15,227,128, 49,221,113,165,218, 25,238,231,130,237, 92,176, 94,
+173, 80, 43,154,205,136, 49, 32, 46, 60,179,176, 75,133,176,164,162, 85,245,147, 47,212,241, 46,107,141, 65, 45,108,126, 82, 30,
+168,112, 77, 57,235,118,171,224,169, 78,118,153,213, 90,129,216, 71,213, 8,130,128,212,161, 52,210,179,193, 53,147,154, 90, 32,
+141, 4, 45, 68, 92,228,131,166,164,230, 3, 58,156, 77,187, 13, 24,130, 62, 6, 53,193, 19, 25, 64,137,117, 33,216, 14, 80,157,
+ 48, 80, 15,117, 33, 90,172, 19,208,126,182,180, 32, 34, 19,151,145,251,249, 35, 32, 21, 18,120,225,147,118, 34,116,106, 16, 13,
+255,153,181, 17,252, 96,151,123,109,124,108,106, 10,219,136,213,233, 41, 4, 1,187,203,115, 16, 2, 2, 18, 48,112,239,106, 44,
+ 82,152,185, 90,165, 63,131,231,108, 21,127,197,148,247,168, 69, 5, 68, 42,254,219,183,226, 59,173,214, 88,173,214, 10, 80,109,
+171, 3,123, 63, 89,201,109, 82, 43,114,157, 81,231,185,249,214, 75,241, 93,185,135,225, 4, 32, 36, 4, 4,229,117, 27, 91, 65,
+172,211, 38, 16,106, 0,170,179, 25,192,166, 57,162, 70, 35, 43,214,153, 17, 41,226, 52, 26, 70, 86,195, 40, 34,194, 16,221,232,
+170,182,186, 24, 17,211,168, 81,201, 76, 29, 81,122, 48, 45,137,205,130,212,186,229, 86, 60, 30, 94,170, 90,224, 45, 49,193,104,
+249,221, 93,212,216, 49,181,125,205,114,216, 89,131,186, 24, 83, 37, 31,138, 20,173,165,168, 69, 55, 4, 77, 83,124,118,212, 15,
+ 91, 49,121, 23,233,212, 72,135,134, 52,223, 4,154,179,228,176,112,133,229, 5,112,139,203,149,182, 71,231, 3,114, 94, 79,240,
+242,149, 83,104,231,243, 82, 9,142,254,181, 55,129,167,137, 56,237,125, 8,212,169,132,174, 31, 8,182,170, 35,113,119,130, 94,
+252, 62,166,191,220,237,177,155, 74,179,103,233,217,196,230,229, 95,190, 31,208, 72, 89, 44,162,155, 93,179, 5,160,212,162,240,
+ 25, 4,197,111,217, 26, 98, 24, 19,210,152,236,251,192,118, 68,216, 10,162, 20, 43,114, 66, 43,106, 34,117,142,125, 26,146, 58,
+178, 16, 26,162,219,159, 41, 57,240, 80, 44, 26, 25, 31,191,163, 54, 60,112,144,128,113, 84, 21, 89,201, 5,227,106,196, 48,174,
+ 80, 45,174, 58, 33,226,232,228, 20,121,154,177,155,119, 88,175,214, 24, 82, 66,206,123, 0,162,187,255, 82,144,231,220, 28, 45,
+ 58,154,215,162,114,179, 89,225,228,228, 84,133,116,187, 29,114,174, 10,183,137,161,217,155,153,196,220, 49,189,128,237,137,151,
+122,254, 37, 10,207,122, 59,185, 1, 17, 42, 50,104,136, 96,137,134,164, 52,242, 19,168, 39,252,144,134, 37, 52, 17, 6, 45, 70,
+ 80,118,248, 38, 19, 26,136,197, 76,122,220, 97,130,118,191, 51, 50,180,208,138, 46,176,215,220,234,129,112,231,206, 11,184,117,
+231, 22, 88, 24,127,121,240, 17,106,174,120,225,249,151,112,251,206,109,252,229,157,247,240,135,223,255, 14,155,147, 19, 92,187,
+121, 11, 49, 69,220,120,238, 54,238,221,123, 14, 79, 31,159,225,157, 63,190,139,203,237,165,237, 39,182,184,126,227, 42,246,151,
+ 5, 63,251,209, 47, 49,205,151,184,121,227, 22, 16, 34,246,151, 59,108,119, 91, 84,102,140, 16, 11,171, 39, 20, 18,112, 0, 70,
+178,189,177,173, 21,230, 58,183,170, 86, 72, 59,247, 32,253,203,230,225, 45, 68,220, 17,138, 11,166, 37,155,216,193, 63,144,106,
+ 21,173, 3, 9, 14,184,215,172,221,115,176,112,149,156, 11,166,125,198,180, 30, 49, 88,254,114,182,252,117, 10, 85,213,236,177,
+ 23,105, 1,140, 96,137, 78,168,140, 0, 6, 69,238, 89,230,210, 59,113,229, 27,119,235, 24,232,153, 35,198, 3,100, 64,138, 19,
+ 37, 23,204,113, 35,207,181, 11, 13,213, 68,114,100,202, 90,106,129, 53, 96, 77, 51,163,102,127, 82,213,106, 76, 22,168,210, 80,
+174,157, 83, 29,150,201,105,188,240,112, 83, 19,204, 31,192, 44,220,190,226,158,104, 22,229, 54,135,228,163, 83, 58,200,163,238,
+ 11,181,208,197, 86,206, 54, 15, 48, 42,213,194, 91,188,252,111,212, 53, 41,178, 16, 57, 53,178,157, 31, 20, 6,224, 0, 10,210,
+234, 8, 39, 87,174,227,241, 39, 31,106,193,147, 19,234, 48, 33,166,164,233, 81,165, 66, 68, 43,251,106, 81,173,243, 52,169, 64,
+ 39, 23,228,170, 22, 30,170, 21,194, 74,100,244, 4,170, 52, 77,200,163, 38, 19, 82, 74,240, 64,186,101,225,206, 98, 22,156,105,
+ 6,115,213, 85, 79,173, 38,130,178,231,145, 18,168, 22,204,101, 97, 8, 20,219, 19, 88,193,199,140, 22,236, 33,164, 59, 89,130,
+142, 11,117,186,164,107,132, 33, 18, 34, 6,200, 72, 8,182, 51, 76, 33, 42, 88,202, 98,157, 5,140, 33,173,144,210,208,246,170,
+126,236, 7,231,228,187,181,138,208, 87, 60, 8,234, 34, 49,117,178, 35, 86,251,132,153, 26,107,163, 9,230, 14, 98,119,121, 81,
+152,123, 49,135,198, 34, 0, 69,117, 43,176,244, 53,130,116,152, 12,140, 72,230, 5, 69,117,103,135,197,144, 74,224, 3,125,128,
+123,210,149, 6,167, 59,105, 95,225, 45,247,185,173,121,111,191, 99,104,221,246,129,128,206,212,220,213,231,197,238, 46, 88,136,
+226, 14, 83,234,168,217,145,237, 79,193, 99,227, 72,146, 21,130, 54, 97, 50, 29,148,123,189,157, 95, 87,196,160, 80,196,200,165,
+224,236, 98,135,221, 92, 49, 89,212,106,101,143, 84,213,187,160,143,188,245,251,156,146,242,211, 37,244,130,172,150, 10,201,230,
+227,134, 58, 12,128,170, 2,185,205, 90,155,188, 89, 97, 43,129,130, 62,199, 85,192,153, 15,186,116, 44,116, 48, 49, 70, 12,131,
+198,133,235,179, 95,251,180,205,109,189,180, 8, 85, 33,210,130,245, 32, 63,190,139, 9,211, 16, 21, 25, 92, 11, 54, 71, 27,144,
+169,239,115,158,177, 26,181,152,190,184,124,138, 58, 79,184,114,235, 10,134, 97,192,110,183,211,134, 85, 4,147,129,120, 98, 28,
+ 0, 9,200, 60,183,215,179, 62,222, 96,179, 94, 65,152,240,228,252, 41,170,148, 78,171, 51,187, 56,215,126,238, 53,168,146, 61,
+ 71,108,103,105,114,177, 10,185, 26,219, 95,128, 89, 56, 10,164, 85, 57,176,208, 7,207,136, 38, 35,242, 68,234, 66,161, 96, 35,
+174, 96,149,220,210, 27, 28,130,238, 65, 83, 12,154, 46, 3, 66,102,133, 93,192, 15, 76,102, 4, 41, 56,190,118,138,187,215,174,
+227,228,248, 20,143,159, 60,198,167,159,127,142,211,147, 99,220,123,254, 69,164, 20,240,251,223,252, 14, 15, 31,126,130, 91,207,
+221,193,234,232, 8,235,163, 99, 60,255,226, 93,156,158, 94,197,123,127,122, 31,127,248,183,183, 48,172,142, 48,174, 3,118,251,
+ 61, 82,140,120,248,241, 67,252,225, 15,239,160,214,138,211, 43,167,168, 34,216,239,247,216,237,182, 10,195,167, 69,202, 17,235,
+ 3,146,162,134,109, 80, 8,150,102,103,227,107,144, 81,155, 22, 34,148,202, 13, 58, 81,165, 26,193, 44, 44, 6,121,178,168, 6,
+ 73,163, 99,161,176, 29,177, 48,129,118,180, 84,105,158,102,230,210, 34, 77,107,101, 76, 83,193, 52,101,172, 99, 64,169, 81,171,
+101,174, 96,142, 42, 12, 99,181,133,176,180, 65,153,190, 6,239,118, 32,202, 4,151,128, 72, 5,137,135,142,137,173,104, 7, 16,
+183,160,138, 37,137,171,127,225, 15,249,255,232,164, 53,223,247, 45, 67, 33,108,124,174, 13,118,213,236, 99, 44, 98, 45,163,114,
+228,149, 23,223,128,242, 7,150, 32,219,238,182, 17,189,152, 40, 75, 69,148,220, 35,127, 67,119, 34,183, 0, 16,135,126,176,167,
+146,117, 69, 50,123, 50, 19,185, 13,208, 20,190,190,171,149,104,133, 43, 31, 76, 14,104, 81, 21,245,110, 49, 52,203,214,146,220,
+229,151, 64, 52, 18, 84,140, 1,215,175,223,197,167, 15,222,197,229,197, 99,172,214,107,240,156, 53,207, 58,160, 1, 42,106,173,
+200,165,162,228, 25, 37,235, 62,125,218,103,221,103,107,130,134,253, 30,154, 71,174,211,173,162,227,250, 33, 35,173, 87, 72, 49,
+ 88,122,156, 52,116,109,169,186, 79, 47,165, 52,170, 28, 22,155, 9,102, 65,174,185,233, 72,180,248,172, 29,235,215,232,146, 42,
+124,117, 18, 91, 35,113,241, 34,243,187,193, 86, 2, 40,169,115, 36,165,164,133,126,213,213, 22,151,172, 16,155, 52, 24,178,211,
+124,204,212, 51, 12, 90,126, 58, 5,171,193,156,186,104,130, 82,207, 68, 55,171,148,174, 15, 67,235,106, 61,120, 37,132, 8,225,
+ 98, 26,160,208,255,153, 5, 37,184, 33,108,201, 82,197, 26, 20, 72, 47,101,152,236,145, 66,128,112,105,118,180,229,168,219,243,
+184, 9,157, 46, 87,159, 1,191,148,131,212, 66, 28,236,203,253, 61, 13, 33,124, 33,253,239, 89,160, 14,183,128, 24,215,140, 72,
+ 3,200,248,250, 98,105,233, 11, 33,180,241,118, 27,139,247, 32, 84,125,159, 90,234,147,235, 97, 44, 21,175,150,182,170, 98, 17,
+ 92,236, 39,108,183,123,236,247, 51,114, 86, 54,135,107, 18,200, 38,114,174, 47,105,153,243, 49, 26,100,203, 10, 15,155,212, 72,
+ 99,120, 88, 19,200,192, 56, 36, 12,227, 96,142, 13,105,175, 77,117, 33,181,143,222, 45, 35,192, 87,124,148,200, 68,152, 73,247,
+207,182, 90, 98,111,158,128, 5,129,179, 51,238,151,107, 72,167,173, 42, 18,153,145,134, 81,163,128,165,224,120,125,212, 86, 37,
+243,156,241,220,221,231, 17, 82,194,118,187, 5, 40, 96,189, 62, 2, 48,160,148,138,148, 6, 92,238,247,170,137, 32, 49,223,188,
+106,118,226, 64,255, 31, 95,111, 30,117,107, 86,149,247, 62,171,121,155,189,247,215,157,166,234,208, 22, 32,189,160,130, 10, 10,
+210, 27, 41,108,144,144,136,193, 6, 52,168,177,185, 70, 99, 98, 12,247,218, 16, 53, 68,140, 13,234,189,106,140, 87, 4,177,215,
+ 32, 10,230,194,141, 32,222, 82, 1, 27, 16,132, 18, 4, 10,170, 63,253,249,250,189,223,247, 93,107,205,252, 49,231, 92,107,237,
+239, 28, 46, 99,156,193,168, 26,167,206,217,223,222,239, 94,107, 54,207,243,123,128, 22,216,217, 57, 13,223,118, 88,133,136,253,
+195,125,105,202, 92, 73,240, 83,251, 40,104, 13, 55, 12,249,252,147, 8, 35,189,149,145,142,149,131,198, 26,142,241, 84, 15,101,
+146,246, 51,171,239,212,146, 36, 36, 57, 35, 42,119, 67, 6,222,153,146,230,101, 84, 41,169,226, 39, 39,193, 38, 38, 83,183,162,
+ 1,166, 20, 49,197, 4,159, 8,173, 55,232, 23, 27,216, 56,179,131,157,237, 45,132,113,137,139, 23, 47, 98,181, 26,112,106,231,
+ 20, 54,119,182,113,245,218, 21,156,191,231, 94, 32, 2,103, 31,240, 0,116,243, 30,139,173, 77,156,189,249, 38, 56,235,240,145,
+ 15,221,142, 79,126,226,110,108,237,108,161,109, 27, 44,143, 15, 1, 2,238,190,243, 30,220,121,215,221,112,206,163,237, 58, 16,
+ 1, 71,199, 43, 76, 97,132, 1,161,245,124, 33, 70,121, 16,157,229,216,217, 33, 6, 86,215, 58,158, 34, 40,233, 41,149,121,173,
+248,102,133,101,110,144,179,197,179,170, 59,167,145, 81,181,127,230, 42,114,138, 1, 33, 73,206,180,181, 34,234,145, 56, 80, 81,
+162,103, 91,140,116,151, 83, 8, 88,173, 70,204, 91,135, 16, 12,198,113, 66,223,122, 89,212, 9,214,147,228, 11,108,213,218,229,
+100,124,158, 68,253,193,165,137, 85,188,164,252,107, 50, 18, 36,146,187,213,106, 61, 99,178,142,182, 10,129, 64, 30,237, 25,185,
+ 56,144, 43,116, 62,212,141,228,113,155, 92, 16,136, 37, 6, 42,130, 41, 33, 66,234,147,101,207,166, 47,153,233, 90,144, 16,178,
+ 82, 86,225,246,234,178, 32, 83, 81,198,170, 98, 64,167, 35,107,187,248, 90, 25,157, 59, 56,202, 98,161,164,129, 68, 86,131, 29,
+196, 25, 98,213,150, 73,107,170,121, 5,138,104, 7,196,239, 77, 92,223,227, 59,145, 97,201,133,209,111,157,194,246,153,155,113,
+233,222, 79, 2,105, 19,209, 77,156,209,233,121,138,146, 2,176, 90,141, 24, 70, 22,176,197, 24, 16, 40, 98, 28,163, 4,101, 72,
+ 34,158, 48, 16, 90,137, 30,142, 54,229, 12,246, 38, 77,104,125, 35, 35, 60,165,151,137,187, 36,196,236, 50, 33,177,165, 17,241,
+120, 52, 74,231,103, 44,119, 38, 38, 99, 52,149, 51,206,147, 11, 30,181,166,252,188,231,169, 56, 81, 21, 14,149, 50, 78,217, 69,
+209,224,168, 87, 88,176,207,227,241, 18,221,124, 14,231, 91,161,195, 69, 88,227,101,116, 95, 7,213,168, 95,172,250, 12,180,232,
+ 94, 11,154, 98,252,167,174, 8, 83,170,186,250,138,184,167,177,172, 44,238,148,228,172,234,192, 76, 18,177,171, 86,199,156,243,
+110,229,178, 76, 41, 7,160,232,119,194,171,230,200, 25, 20, 38,170,194, 93, 72,162, 62, 85,207,225,116, 47, 39,168, 90, 97, 88,
+164,148,149,230, 86,194,131, 40,208, 90,225, 90, 95,232, 60, 4,181, 21, 88,233, 6,138,255,138,245,174,186, 17,157, 70,164,138,
+ 73, 34,221, 85,182,157,234,121,136, 53, 17, 32,107,124, 66, 76, 56, 60, 90, 97, 57, 6,102,189, 11, 96,134,253,212,174, 76, 26,
+ 80, 94,143, 66,101,116,117,194,218,170,136, 56,133,210, 29, 39,130,186, 91,189,111,114,200, 77,134, 74, 69,101, 7,164,181, 28,
+ 1, 35, 9,135, 86, 46,120,223, 48, 85, 14, 33,101,139, 33,172,201, 5, 5,161,110,118, 76,245, 74,139,170, 34, 91,126,157,131,
+107, 60,140,115, 88, 29, 14,216, 56,181,193,175,125,136, 72, 4,116,253, 12, 99, 28,177, 26, 71, 24,235,209,117,115, 76,227,128,
+ 36,142,142, 52, 44,225,173, 65,242,220,241, 91,111, 97,131,131,107, 44,186,206, 99,123,107, 19,214, 25, 28, 29,143,216,219,189,
+186, 70,217,140, 40,159,115, 38, 31,202,106,148, 36,165, 77,207,102, 95, 60,229,149, 95, 81,190, 52,124,129,187,124,120, 70, 81,
+194,195, 54,114,193, 37,206,126, 38,192,154,148,201, 94, 80, 97,136, 84,248,148,225, 11,134, 89,228, 6,152,136, 47,203,144, 18,
+ 2, 89,108,205, 90,220,180,181,129,185,109, 16,195,132,189,171,187,216, 61,175, 37, 53, 32, 0, 0, 32, 0, 73, 68, 65, 84,216,
+135,137, 6, 27,243, 13,116,243, 30, 87, 47, 95,194,213,251, 47,160, 53, 6,179, 7,220,140,197,214, 6, 78,239,236, 96,235,212,
+ 41, 28, 44,143,240,143,183,127, 20,231,239,191, 15,231,206,221,140,190,235,176, 92, 45,113,229,242, 21,124,242,227,159,196,106,
+ 25,176,177,152,139,106, 60, 97, 90,141, 32, 50,232, 59, 15,227, 12,134,113,204, 48, 11,111,192, 17,166,134, 74,138,147, 8,176,
+ 52,216, 66,109,102,202, 1, 54, 34,102,168, 41, 83, 12,130,145,206, 77, 62, 12,189,160,157, 49, 44, 24,204,240, 19,181, 85,240,
+175,148,191,172,188, 91, 42,150, 20,126,136,135, 33,226,120, 53,161,239, 57,189,109, 12, 1,109,240,240, 38,130,156,250,211,197,
+139,235,164,107, 23, 64,140, 38,122,233, 72, 95,169,105, 92,161, 42,253,202,179,125, 70,125,180, 25, 32,152, 74,114,152, 41,135,
+ 8,219,132,144,201,116,122,216,240,112,207,179,162,150, 2,200,164,130,159, 84,110,184,181,197,246, 86,139, 10,171,144, 5,202,
+ 7, 55,139, 53,229,200, 17,207,166,140,211,100, 50,148,164,107,242, 78, 84, 6, 26,117,169, 86, 42,212, 30,103,147, 47,100, 77,
+117, 35,201,235,182,206,230,149,137,174, 36, 77, 29,122, 44,221,139,130,132,180,104,201,171, 22,249,103, 37,211,169, 23, 80,211,
+230, 76,215,226,204, 77, 15,199,222,181,203, 8,171, 37, 2, 13,128,111, 96,251, 30,198, 26, 4, 9,198,152, 38,238,204, 67,140,
+ 56, 88,174,176, 60, 94, 97, 26,121,156,207, 22,224,114,169,247, 77,135,190,111,224, 61, 23,145, 33, 37,206, 96,110, 44,219,114,
+ 36,114,210, 70, 98, 21,189,114,224, 5,170, 19,229,210,231,156,105, 3, 39,153,233,250, 62, 71, 0,211, 16,176, 26, 3, 86, 67,
+192,106,226,131, 93,167, 72, 49,134,188,115,159,181, 30,243,190, 67,219,200, 8, 56, 70,132,196, 7,191, 21, 87,140, 5, 33,140,
+ 3,239, 77,187, 25,188,239,242, 84,204, 86,186, 7, 77,188, 77, 36,209,241,196, 42,244,100,168, 32,139, 76, 57,158,145,131,142,
+226, 90,146, 24,151,115, 83, 78,104, 75, 18,102,147, 20,194,101, 66,246,105,131, 36,121,114, 77, 23, 35, 19,137, 20,185,216, 73,
+ 5,125, 28, 99, 16,122,153,231,117,130, 60, 79, 9,149,101,204,196,252, 29,178,206, 73,148,176,196,239, 86,157,163, 65, 29,150,
+ 85,186,123, 21,234,213,222,123,170,196,130,133,143,160,133,232,122,244,108, 9, 84, 42, 20,208,204, 33,169,237,136, 38,231, 15,
+162, 17,188,178,174, 30,146, 49,160, 16,216,115, 29, 35, 14,143, 6, 28,173, 34,166,137,173,101, 49, 22,112, 83, 82, 74, 16, 27,
+ 93,101, 69,196,152,213, 68,101, 42, 24,166, 32,103, 84,177, 20, 90, 36,120,103,185, 75, 79, 5,233, 10, 33,251,165, 72, 8, 33,
+173,133, 56,105,241,226,189,250,212, 27, 88,199, 99,251, 16, 70,192,248, 44,212,203,121, 10,217,243, 45, 54, 87,107, 5,159, 44,
+211, 27, 73,203,115, 77,207,192,152, 41, 97,117, 60, 98,243,108,195,231, 37, 17,156,111,209,247,115, 12,203,145,239, 62,103, 49,
+ 91,244, 24,167, 37, 12, 69, 41,192,217,201,101,188,129,245, 77, 21, 30, 99, 49,155,245,152,207,103,176, 0,142, 15,143,113,176,
+ 60,100, 85, 65,226, 53, 88,204,250,166, 19,212, 68, 20,171,184, 14, 68, 61,193,192, 70, 25,169,185, 74, 60, 36,209,135,222,187,
+138, 60,196, 48,112,170,220,143, 60, 50,230,212,176,236,175, 76,197, 77, 65,164,162, 5, 42,217,212, 85,196,223,188,109,113,118,
+163,195, 86,219,161, 5,176,187,183,135,227,163, 35, 12,199, 43, 88, 56, 52,109,139, 64, 1,123,247,159,199,242,224, 16,109,223,
+163,217,152,225,236,153, 51, 56,115,243, 89,120,111,112,254,252,121,220,121,199,157, 56, 58, 62,198,131, 31,248, 64,116,179, 22,
+ 87,174, 92,197,189,119,222,135,187, 62,117, 15,194, 56, 97,177,177, 1, 50, 14, 49, 5, 6,107,196,132, 89,207,127,239,209, 56,
+201, 72,134, 47,219, 70, 38, 22, 9,128,245, 46,219, 77,172, 1, 38,245,228, 70,161,226, 16, 9, 93,138,149,167, 41, 78,249, 0,
+ 34,226,223,150,170, 47,161,213,170, 74,104, 76, 36,171,230, 36,113,148,190,117,153,168, 71,153,252, 84,196,115, 60,254, 34, 70,
+199,142,132,213,152,208,119,196, 95,168, 38,160,245, 77,225, 71, 19,114,174,178, 90, 99, 18, 24,243,107, 33,105, 88,114,249, 91,
+ 83, 0, 48,201,122,120, 33, 80, 65, 99, 23,115, 80, 10, 95, 96,140,145, 52, 21,102,178,164,103, 49, 35,158, 11, 4,163, 22, 99,
+147,178, 85, 11, 68, 48,142, 83,255, 40,135, 78,164, 12,222, 33,201, 9, 48,180, 30,192, 97, 43, 50, 93, 81, 5, 23, 1,147, 19,
+ 43, 93,146,231, 53,214,216,208,170, 66,143,160, 98, 95,203, 93,153, 65,241,138, 88,144, 51, 72, 16,229,175, 41,241,164,124,177,
+215,208, 89,254, 25, 12,153, 53,193,214,186, 96, 42,229,137, 0,135,224, 80,134,149,206, 79,159,194,205, 15,122, 4,206,223,241,
+ 17,132, 97, 5,163, 41, 90,190,101,116,164,140, 12,167, 41,224,202,181, 3,220,127,109, 31,118, 42, 74, 93,111,141,192, 76, 56,
+108,194,153, 17,253,172,197,230,172,193,172,111,225, 28,201,251,200,207,181, 33,158,208,164, 24,185, 35, 39, 73,206,130,201,222,
+120, 29,199,102,210,153, 88, 24, 57,147, 97,196,193,209,128,227, 49, 96, 53,240,148, 45,196,136, 16, 18, 98,160,108, 37,243,214,
+161,105, 45,182, 22, 1,155,179, 22,125,239, 65, 6,104, 99,194,184, 90,129, 34,179, 17, 28, 37,132,229, 18,221,230, 38,124,223,
+ 51,120, 70,248,166,117,160, 73,129,253, 0, 78,222,235,104, 10, 70, 85, 69,153,154, 16,104,132,229,158, 32,137, 93, 21, 47, 62,
+196, 36,151, 29,171,250, 99, 82, 11, 20,229, 24, 91,146, 11,198, 18,114, 74, 29, 36, 86, 56, 85,196, 64, 83, 71,253, 74, 97,170,
+133, 77,190,156,101,157, 22, 41, 22,154,158,136,105,213,223,158, 39,122,178, 95, 55, 21,110,151,170, 73,132, 66,119, 82,162, 19,
+252, 4, 83,237,206, 83, 85, 84,150, 70, 75, 69,203,214, 49, 23,163,124,111, 81,196,205, 80, 66,159,203,157, 52,119,171,190, 96,
+106, 29, 64, 83, 66, 8,132,229,225,132,131, 35,158, 38, 77, 49,137, 51,168,186,172, 67, 42,129, 35,196,161, 42,206,185,204, 47,
+247,222, 75,179, 83, 5,149, 68,222,181,123,112,198,186,241, 60,101,212, 2,140,136, 65, 48, 12,160, 73,140,120,149, 16, 32, 67,
+236,255,230, 93,122, 35, 99,110, 69,222, 58,149,118,115, 49, 22, 75, 17,147, 68,132,171,107,184, 80,225,121, 89,224,200,132,189,
+166,235, 16, 98, 64,180, 9,173, 16, 71, 99,140,104,219, 25,250,217, 28, 71, 71,135,136,211,136,126, 99, 3,179,174,195,225,193,
+ 17, 23,120,214,194,131, 56,181, 88,167,178, 25, 46, 76,216,156,111, 96,163,157,129, 12,112,124,188, 47,250, 27,229, 97, 80, 78,
+217,203, 43, 3, 1,107,173, 9,180,229,249,243,236,157,229, 50, 44, 74,133,170, 52, 42,107, 40,175,134, 10, 64,163, 48, 53, 21,
+ 21,235,172,227,177,101,133,217,139,105, 2,169, 61,194, 36, 57, 96, 29,172,229, 11,161,237,122,244,141,195,188,117, 24,143, 6,
+ 28,238,237, 99, 76, 1,113,156, 16,134,128, 4,131,174,105,144, 92,196,241,222, 1, 86,171, 21,250,197, 28,243,205, 77,236,156,
+ 59,135,179,103, 78,227,224,240, 16,187, 87,175,224,226,249, 11, 32, 10,120,240,131,110,134,107, 29,238,188,227, 62,124,228,246,
+143,224, 96,111, 15,141,107,176, 88,116, 72,198, 96,156, 70, 68, 57, 96, 91,239, 49,107, 26, 89, 1, 4,238, 94, 44,131, 92,172,
+ 66, 39, 68,200, 23, 21,121,155,119,137, 50,110,211, 0, 14,121,232,189,141,136,162,252,189,110,245, 85, 91, 93,170,157, 22, 37,
+ 22, 18, 6,233,244,242,232, 23,154,236, 68,185,138,172,199,130, 33, 38,172,134, 1,199, 75,131, 69,231, 17, 91, 18,129, 74,226,
+241, 75, 34, 68,177,193, 89,147, 16,172, 65, 71, 6, 54, 8,253,200, 17,195,133, 20, 9, 12,159,133, 54,214, 70, 97, 10, 83,166,
+198,233,136, 91,175,213, 36,249,239, 42,126,169,107,199, 28,121,105,121,173,224,136, 56,245,139, 40,239, 59,121,121, 41,145,146,
+ 38,192,105, 55,168, 86, 31, 16, 18, 2, 11, 68, 36,131,253,186, 80,149,220,193,184, 92,244, 16,153,235,220, 8,218,229, 40,156,
+ 35, 73,226, 18,100,164,156,147, 12,172, 90,122,138,243,128, 52, 85,195, 22,182, 63,145,203, 83, 10, 85,213, 83,214, 12,208,154,
+247, 87, 63,107,205,232, 78, 38,229,228, 57, 3, 11,219,181,216,190,249, 22,140,203,125,236,222,123, 55, 59, 48,220, 4,138, 22,
+ 49,112,198, 64,138,132,213,114,196,249, 11, 7, 56, 88, 13,128, 66,137, 34, 59, 22, 92, 99,248, 18,237,121, 93,113,176, 12, 56,
+234, 18,118,182,182,208,247, 14,169,245,232, 26,199,212,112, 81, 13,135,192,170, 97, 50, 22, 49,129,129, 52,114,176, 58,219,200,
+197,170, 1, 75, 1, 49, 38, 28, 47, 71, 92,219, 63,194,193, 48, 97,156,128, 24, 13,199,240,138,165, 51, 38, 13,226,113, 24, 40,
+160,133, 3,204, 74, 50, 1, 26,244,125,131,193, 19, 64, 19,226,232,248,251, 77, 19,108,219,160,155,245,176,178, 79, 79,149, 54,
+131,133,190,162,190,231, 23, 7,152, 36, 94,248,146,101, 94,123,181, 53,142, 52, 74,120, 82, 74,148, 63, 75, 99, 10, 78,153, 85,
+226,190,178,253,149,194,153,177,150,204, 27, 79, 96, 4,167,250,200,189,216,251, 56,197, 46,173, 3,111,228, 25, 99,151,135,149,
+ 92,115, 41,164,212,155,173, 10,118, 93,215,153, 40,234,230, 26, 43,140,235, 68,151,181,211,198, 90, 46, 78,140,115,112, 39, 44,
+158, 26, 59,171, 23,119, 86,222, 87,180,189,162, 4, 45, 96, 41, 50,200, 66, 56, 99, 20,247,231,214,138, 84, 53,254, 68,153, 86,
+ 28, 28, 28, 99,185, 28, 49,140,145,159, 35,177,127,250,166, 40,254, 83, 18,157,149,118,233, 34, 14,230,143,179,138,176,173,244,
+ 4,214, 18, 26, 88, 73, 90, 51,160, 32,159,119, 36, 24, 47,220,133, 41,149, 60,116, 57, 35,180, 0,178,170,219,112, 14, 38, 19,
+251, 52, 23, 29,136, 6,156, 70,169,104,158, 58, 65,215,112,115, 83,118,234, 86,222,215, 6, 93,215, 96, 28,150, 8,227,132,198,
+ 55, 48, 6, 8, 33, 96, 54,219, 16,133,251, 10,209, 69,244,109,143,148, 60,134, 21,255,190,195,105,133, 49, 69, 25,255,107,145,
+162, 41,137, 9,253,124, 14,215,121,196, 97,196,242,248, 8,118, 54,227, 48,165, 24,197, 5,104, 10, 88, 75, 9,145,196,254,121,
+202, 96, 47, 89,111, 36, 98,113,141, 83,255,162, 45,121,185, 20,181, 67,143,121, 84, 97, 72,121,207, 90,141,169, 66,213,100,248,
+ 68, 25,151, 49,173,142,227, 22, 61, 26,103,209, 53, 14,190,235,208,180, 30, 49, 14,216,223,221,199,209,238, 62, 26,195, 8, 82,
+ 29,195, 52, 93,131, 48,142, 88, 30, 28,131,136,176,216,222,194,246,206, 14, 78,223,124, 22, 77, 55,199,197,251, 47,226,218,213,
+ 75,128, 1, 22, 27,115,204,186, 25,104,140,248,192,251, 62,132,143,252,227, 71, 65, 83,194,172,155,243, 97,110, 13,134,200, 86,
+ 2,239, 29, 90,231,208,200,107, 95, 6, 30,109,122,107, 89,145, 41, 16, 6,229,235, 6, 57,248, 53,222,145, 49,166, 30,132,144,
+125, 80, 81, 56,197,140,115, 11, 44, 94, 2, 95,170,206, 74,213,175,149, 86, 82, 21, 41, 7, 48,104,197,157,145,170,150, 81,130,
+ 70, 14,162,100, 52,155, 89,162, 56,101,234, 17, 83,192, 56, 18,150,171, 9,203,213,132,190, 3,186,104,217, 34,225, 27, 36,203,
+100,171,224, 4,107, 75, 12,167,209,174,203, 70, 7,216, 38, 11, 94, 20,237,202, 26,155,130,180, 76,242,217, 59, 88,217, 17,154,
+220,129, 20,126,118,161,196, 89,203,209,185, 16,157, 5,178,151, 87,118,229, 32,161, 98,149, 24, 88, 67,142,255, 94, 56,238,232,
+ 53,111, 93, 45, 76, 57,243,221,149,170, 53,241, 72,200, 10,158, 84,217,212, 41, 71,106, 38,102,161, 91,137, 81, 52, 5, 75, 91,
+135,132,104,229,171,161,114, 57, 39,155,202,132, 4, 57, 77, 54, 75,158,120,175, 47,163, 42,170, 82,203, 77, 77,150, 35, 84,123,
+255,162, 28,182, 38,229,239,153,131, 71,191,216,192,206,185, 91,144, 34,176,119,249, 2,166, 20, 17,194,138,117, 26,146,102,119,
+188, 26,225,189,129,179, 1, 33, 26,244,179,185,188,143, 38,235, 37, 66, 8, 18,191, 10, 28,197,132,213,181, 37,230,189,197,206,
+188,197, 98,238, 49,107, 27,206,172, 38, 32,194, 98, 32,136,216, 53,201,202,130,173,171, 70,232,110,218, 17,134,105,194,209,114,
+194,229,253, 99, 28,175, 38, 41, 2,116,109, 36, 9,142,214,202,119,138,187,166,113, 69, 56, 58, 26, 97,168, 67,211, 36, 12, 41,
+192, 39,139, 16,128,198, 0,209, 4,172,210, 4,223, 26,108, 46,182, 97,155, 62,123,129,141,168,221,145, 63,155,178,202, 49,245,
+200, 84,197, 81,178, 30,137,146, 9, 96, 43,103,131, 2,143,136,176,118,249,234, 51,171, 98,200,140,101,133, 6,142, 36,142, 77,
+150, 34,159,100, 92,171,174,149, 24, 13,140,147,212, 11, 21, 16,162,222,163, 35,163,146, 85, 68,167, 29,154, 78,230,108,165,120,
+ 87, 32,158, 18, 24,181, 24,177, 25,115, 87,209,146,117,133, 39,159, 59,213,129, 50, 66,128,227,201, 81,201,112, 47, 25, 30,194,
+191, 52,117,212,106, 9,186, 73, 2, 17,226, 61,186, 43,170,252, 74,201,199,170,126,182,243,237, 31, 45,113,180,154, 48,133,136,
+148, 12, 38, 73,113, 52,112,133,121, 33,227, 97, 47,159,147,177,224,172,122,163,239, 33,101,138, 35, 79,181, 60, 44, 17, 92,235,
+225,218, 6,218, 84, 71,217,169,123,114, 8, 9, 24, 83, 18, 68,112,132,215, 62,155,248,188,244,157,103,250,155, 76, 32, 41, 17,
+ 98,144,207, 71, 44,186,170,227, 1, 1, 86,244, 79, 78, 66,132,234,148, 89, 43,164, 61, 99, 35, 79,112,201, 32, 36,192,119, 13,
+ 12, 18,166,105,196,246,169, 30, 97,100,103, 10, 70,160,109, 91, 16, 18, 14,151, 71,120,192,153, 83,216,223, 93,130,198, 81, 38,
+ 38, 13,175, 14, 76,192, 56, 78,192,148, 48,107,123, 88, 99,112, 60, 12, 24,227, 18,189,183,152,178,155, 65,116, 58, 85,236,177,
+218, 5,131, 36, 84, 18, 82, 78, 5,245,106,255, 81,244,166, 81, 30,182,236,131, 53,231,151, 18, 85,128,123, 86,199, 91,181,182,
+201, 14,216, 42,165, 71, 61,152,196, 98, 9,223,116,232,218, 22,125,235,209, 72,133,185,191,187,143,176, 58,134, 9, 1,222, 57,
+241,194,178,125,161,237, 90,132, 48, 98, 26, 7, 56, 0,179,173, 45,108,223,116, 22, 59,103,207, 96, 58, 94,225,227, 31,251, 24,
+142,175,238, 97,177, 53,199,124, 49, 71,219,182,184,114,254, 18,110,255,224, 71,112,199,221,159,132, 49, 9,109,223,243, 23, 78,
+128, 25,108, 99,225,117,156, 38,246,112, 24, 11, 95,224,222, 54,153, 12,196,106,106,155,119,177, 69, 16, 37, 30,205,138,198, 68,
+114, 89, 38, 39,162, 46,107, 65, 33,101, 63,106,210,253,123, 5,163,208, 81, 32,199,166, 86, 95,238,236,139,229, 47, 72,177, 74,
+ 21,142,180,119, 18,254,146,216,198, 54,142, 30,199,195,132,249,216, 96, 24, 35,250, 38,162, 77, 65,190,162,145,131, 10, 92, 98,
+223,120,138, 72, 82,113,166, 24, 17,228,226,231,145,165,238,124, 69,136,129, 40,227,115,147,237, 61, 32,151, 59, 35, 61,140, 20,
+150,163,226, 49,245,147, 23, 40,135,128,103, 68,225,106,179, 15, 94,133, 91, 9,200,239, 21,239,100,141,138, 48,141,140, 15,245,
+168,165, 40,194, 45, 61,200, 76,201,164, 54, 69, 97, 78, 18,194, 64,182, 16,172, 76, 69,127, 43,164,188, 18, 20, 82,179,219,243,
+ 1, 76, 54,195, 71,140,232, 8,106, 61,128,177, 21,239, 19,235, 29, 21, 42,218, 87,189,123, 49, 42, 28, 37,205,170,119,112, 13,
+ 48,223, 62, 35,195, 11,135,195,131,171,152, 86, 3, 86, 3,143,234,147, 97, 52,240,102,231, 48,235, 55,208,180,155,104,187, 5,
+ 91, 35,157,131,115, 45, 0, 96, 53, 14, 8, 81,196,145,196, 97, 47,199,203, 37,166,229, 10,171,209, 97,123, 17, 48,159,245,240,
+158,177,180,214, 53,210,233,104,193,198,162, 36,235,171,192,136, 16,176, 26, 39,236, 31,174,176, 26,162,136,202,128,198,201,103,
+100, 93,142,167, 53, 70, 70,253,134,208,185, 14,109,171, 95,163,132, 32,221, 90,140, 0, 57,135,136, 8,235, 91, 44, 54,182,209,
+118, 51,222, 89, 58,151, 11, 88, 45, 26,217,194, 83,171,237, 21,110, 84, 33,132,173, 92,238,201, 22, 52, 48,225, 4,135,128,170,
+168,209, 19,108,120, 67,249, 59,165,255,236, 68,245, 29, 41,101,208,141,129,226, 76,139, 56, 51, 67, 12,163,252, 55, 50,247,161,
+ 74,220, 90,111,229,109, 70,200,198, 74,232,166, 69, 76,149,232,166, 58, 21, 20,239, 58, 23,217,148, 81,182, 6,128, 55, 76,169,
+ 36,136, 29, 84,166,168, 58,102,215,227, 43,145,160, 78,243,235,144,221,120, 6,225,200,101,166,187,249, 74,116,135, 74,168,104,
+ 12,177,237, 76, 86, 49,199,203, 17,171,145, 47,249, 36, 23,164,243,182,206,207, 19,117, 54, 11,177,189,103,126, 61, 37,230,145,
+152,106, 85, 89, 91, 69,141,177,240, 93, 3,231, 29,194, 20, 69,164,168, 48, 24,177,182, 81,201, 39,201,233,116, 0,140,179,240,
+173,103, 49, 90,133,135,166,192,193,228,121, 90, 42,232,222,210,132,150,115, 65,133,178,200,124, 13,230,115,120,223, 32,132, 9,
+134,128,166,233, 56, 88, 7, 60,189, 25,194, 74, 68,113, 22,125,219, 97, 26, 71,118, 89, 24,139,105, 28, 1,138, 48,214,243,212,
+201, 16, 8,188, 10,110, 26,139, 89,219, 1, 22, 88,142,199, 24, 35, 79, 46, 35,231, 45, 50,109, 20,197,133, 81, 59,142, 88,171,
+ 21, 69,156,206, 25, 8,222,194,150, 17,170,225, 15, 94, 31,108,239, 88, 80,159, 18,143,249,214, 35, 48,217, 54,101,136,173, 46,
+ 73,204,249,220,245, 49, 74, 50, 2,232, 26,143,190,235, 96,189, 19, 59,206,136,105,201,138,192, 6,252,119, 36,112,146,143,107,
+152, 32, 53,173, 6, 76, 99,128,183, 14, 27,103,206,224,204,185,179,240,237, 12, 87, 46, 92,194,149, 11, 23,177,187,183,139, 83,
+ 59,167,177,181,181,141,166,111,113,255,253,247,225,175,255,226, 61,216,189,182,135,182,105, 56, 14, 16,124,176, 33, 26, 9, 89,
+144, 17,170,192, 44,162,124,217,188,133,140,154, 37, 75,222, 11,250,150,104, 13, 1,106,114,164, 33,242,104, 94, 5,112, 44, 34,
+ 72, 26, 80,143, 73,137, 78, 74, 16,203,116, 43,100, 72, 79, 74,108,111, 49,182,152,221, 72,186, 91, 85,207, 27, 61,184,156, 43,
+ 32, 26, 42,158,219, 24, 18,134, 49, 96,185, 10, 24, 70,194, 48, 0,171,102, 66,219,138,186,146, 28, 76, 76, 8,102,226,208, 10,
+195, 32, 21, 36, 22,144,133, 20,120,167,149,211,127, 44, 43,134,181, 98,182, 14,107,161,146, 73,166, 24, 70, 61,174,133, 80,197,
+ 35, 70, 5, 95,184,181, 92,115,126,248,180,229,181, 82,108,241, 62,149, 17,141, 38,131, 70,138, 93,195, 22, 50,152, 30, 56, 10,
+149, 17,209,161,149,192, 11, 85, 11,243,223,195, 2, 43, 99, 29,103, 24,136,144, 40,143, 59,173, 34,111, 3, 11,192, 76, 65,156,
+154, 26,106, 79, 74,217,163, 92, 20,160, 14, 73,209, 93,170,106,233,112, 34,110,213, 92,255,207, 74, 32, 75, 84,129, 76,164, 59,
+109,186, 25, 22, 91,167,121,250,208, 56, 76,199, 71,232,142, 7,172,198, 37, 26,111,224, 45,176,189, 88, 0,222,193,251, 5, 34,
+ 57, 46, 8, 27,207, 46, 1,199, 93,219, 48, 38, 76, 49, 98, 12, 35,251,217, 23,115, 92,187,188,139,203,215, 14, 17, 67, 68, 72,
+ 6,179, 89, 66,107,124,230, 46,112,168,138,131, 51, 9,222, 21, 95,114,140,220,193, 31, 45,249,207,242,214,160,109, 92,246,241,
+ 26,227,115,250,159,242,181,249,124,136, 72,113,196, 6, 89, 78,220,114, 22,243,206,163,119,178,218, 34,222, 71,110,109,159,194,
+108,182,128,171,213,249,121,148,232, 10, 84, 40,179,198,203,232,252, 36, 43, 0, 84,118,162,202, 21,135,169, 48,194,168,124,189,
+ 39, 86, 51, 44,138, 43,221,189, 50,174, 37,170, 72, 36, 94, 82,140, 39, 70,253, 82, 21,196, 98,192,246, 41,100,149,121,186, 46,
+ 14, 86,199,226,121,194,107, 93,214, 75, 32,155,138,113,131,181,145, 43, 5,171, 60,103,150, 89,181,249,123,226,173, 69,168,214,
+ 14, 36,159, 41, 25, 35, 43,145, 2,106, 98,119, 7,119,210, 86, 68, 94,168,138, 92,214,191,200, 52, 49, 35,191,107, 78, 1,159,
+ 21,136, 9,187, 7, 75, 28, 30, 13,152, 34, 33, 38,195,221, 35,108,201,140, 16, 69, 65,164,144,119,211,186,158,211,233,157, 19,
+101,191,194,186,116,106,226,156,201, 1, 63,117,100,112,227, 25, 69, 29,194, 40, 35,104,158,214, 41, 75,130, 18, 91, 25,217,202,
+102,243,234, 50,198,200, 5,154, 41,161,186,217,106,105,145,137,126, 28, 25,142,220,196,218, 12, 75,115,240,146,115, 62,197, 1,
+ 83, 92,161,107,123, 76, 41,194,187, 78, 16,199, 35,200, 24,116,190,197,172,159,227,224, 96, 95,187, 10, 4, 17,247,150,188, 20,
+153, 44, 38,194,188,155,161,235,122,164, 16,113,188, 60,226,115, 86,197,105, 82,189, 81, 92, 95,113, 22,109, 69, 42, 96, 47, 41,
+ 46,125,137,155,212,203,197,230, 31,198, 75, 38,179,165,117, 49, 74, 78, 20, 74,124, 33,235,240,145, 85,225,146,172, 4, 7,103,
+120,215, 57, 12, 3,134, 21,241, 65, 58, 69, 56, 34,180,134, 32, 32, 75,102,206,183, 13,136, 2,166, 97,194, 52, 69,204,186, 57,
+182,206,236, 96,123,103, 27,211, 52,226,158,187, 62,137,227,107,251,176,214, 97,123,103, 11, 59,167, 78, 1,148,112,247, 93,119,
+226,142,143,126, 12,203,213, 49,186, 89,143, 73,230,130, 36,113,160, 86,138, 19,239, 27, 80, 12, 88, 77, 35, 98, 0,154,182,225,
+116, 51, 65, 6, 70, 34, 6,127,104,151,169,165,112,133,202, 84, 75,151, 85,196, 98, 14, 67, 48, 37, 39,217,122,192,132, 28,166,
+146, 91, 87, 61,170, 44,191, 63, 33,166, 28, 38,161, 23,122,231,188,168,104, 99,181, 3, 42,135, 81,118,192, 26, 17,117, 17,177,
+189,109,156,112,176, 28,208, 53, 64,211, 38,116,193,161,137, 13,156, 75,162,184,228, 47,141,181, 46,175, 79,172,193,137, 75, 7,
+217,186,167,171,134,242, 8,153, 76, 87,210,104, 67, 77, 8,178,213,196,194,164,147,135,174,228,255,146, 68,100,122,207, 54, 37,
+105, 15,162, 8,160,152, 15,111,171, 17,163,149,131, 94,173, 43, 65,214,102,182,216,146, 44, 95, 30,121,207,132, 36,162, 32, 21,
+115,202,170,160, 26, 93, 26, 83,108, 69,197,250,131, 53, 81, 86, 9, 2,225,159,201,137, 80,178,238,142,214,112,153,180,246, 86,
+ 93,151,223, 93, 3,105,178, 45, 80,167, 48,138,184,149,137, 68,219,207,144,232, 12, 96, 45,166,238, 0,227,108,137,217,176, 98,
+143,250, 56, 65,222, 74, 4,242, 8,147,252, 64,142,139, 80,235, 45, 18, 12, 66,116, 24, 67,192, 52,178,120,105, 12, 1,243,102,
+142,187,238,254, 20, 46, 31, 68, 88,187, 2,165, 9,169, 93,192,136,177,133,125,208,134, 59,126,135, 60,110, 54, 0,142, 87, 17,
+203, 8,204,103,179, 12,249,113,226,255, 86,151, 67, 12,200,147, 26,166,121,121, 56, 52, 48,148,208,120, 66,215, 26, 52,222, 51,
+216,200, 17, 90,223, 96, 62,159,163,155, 47, 96,125,203,123, 79,203, 33, 52,137, 18, 11, 30, 85, 27, 81, 32,215,213,103, 38, 83,
+ 35, 21, 38,194,201, 51, 36,164, 58,157,168,201, 7,150, 81,181, 41,173,227,133,233, 68,202,222,154, 40, 47,137,248,146,139, 28,
+165, 42,106,119, 84,231, 9, 32,243, 57,202, 69,160, 29,247,141,254, 87,139,154,204, 73,133,191,177,107, 65, 66, 56, 97,197,100,
+218,102, 2,156, 69,161,228,178, 11,135, 4,218,226,164, 3,134, 78, 52,136, 50, 32, 42,239,244,137, 49,163,208, 21,159,130,237,
+173, 94,100, 54,251,252,181, 33, 65, 34, 70, 4, 38,224, 40, 4, 92, 61, 88,226, 96,152, 16, 67, 66, 10, 69, 32,151, 50, 19, 67,
+ 38,165,137,224, 69, 95,165,235,184, 72, 58,234, 70, 94, 75, 82,118,139, 56, 52, 45,107,108,198, 20, 81, 69,239, 0,134, 67,142,
+248, 92,136,185, 16, 81, 34,157,181, 6,109,219,160,109,219, 28, 52,164, 1, 48,201, 10, 90, 85,246,238, 36, 69, 21, 23,169,242,
+126, 57,157,216, 84,118, 93,203,228,203,166,109,185, 57, 29, 3,218,174, 65,223,181, 88, 13, 75,158,124, 38, 72,192,146, 5, 57,
+139,166,235,112,124,229, 18, 23,219,198, 96,152, 6,192,122, 68, 50,121, 58, 75,196,154,148,217, 98, 11,214, 54,152,166,137, 61,
+238,153,199,161,128, 47,130,177, 9, 38,150,172, 21,202,250,164,178,190,229, 68, 79, 25,191, 43, 33,208,106,149, 38,245,160, 46,
+224,131, 88, 53,140,117,108,113, 54,124,128, 68, 50,194,128,150,184, 59,171, 32,124, 22,133, 36, 99, 49,142, 17,222, 17,171,122,
+ 41,193, 18, 11,180,180,219,241,198,195,120,126,200,195, 56,192, 24,131,157, 51,167,177,181,179, 13,215, 55,184,122,109, 23,187,
+ 23, 46, 97, 53, 44, 49,235,123,244,109, 7, 55,159,225,252,249,251,113,225,194, 37,158, 22, 88, 15,231, 91, 12, 33,178,182, 88,
+244, 75, 22,156,170,227,196, 63, 63, 38,131, 64,128,153, 18,102,189, 69,219, 88,196,105, 66, 26,121, 47, 97, 29,171,218,163, 22,
+ 58, 21,180,209,100,207,166,201, 7,121,253,229,214, 75, 93,169, 94,217,106, 66, 92,189, 38,177,140, 88, 17, 31,165, 58,200, 27,
+235, 22, 46,237,230,108,100,228,166,203,195, 19,190, 16, 72,186,229, 0,245,249, 79, 88, 46, 71, 44,123,143,126,178,152, 36,138,
+ 48, 37,246,104, 90,237, 70, 60,214,162, 41, 33,236,118, 62,200, 53,200, 33, 32, 4, 14,246, 17, 20,247, 9,134,180, 92,118,198,
+101, 1, 71,238, 4,170,116, 44,165, 40,235,232,158, 84,113,234,184,251,138,201,100,118,174,194, 39, 72,245, 11,142,187,236, 84,
+185,203, 57,212,194,115,202, 95,228,145,150, 45,203, 80, 22,175, 81, 61,226, 44,220,128, 60,146,180, 42,128, 51, 18, 22, 66, 37,
+112, 4,235,246, 27, 77,253,226, 11, 89,187, 72,101,185, 99,173, 82, 32,221,153, 86, 66,171,181, 3, 61,199,188, 98, 13,204, 3,
+ 13, 38, 33,137,122,133,129,235, 90,204,204, 14, 26,223,192,119, 75, 52,227,132, 56, 13, 8,211,200,160, 13, 74, 8,196, 5,117,
+ 54, 74, 89,207,130, 55,147, 48, 69,135, 54, 38, 16, 45, 48,173, 38,172,134, 99, 28, 25,139,115,231,110,194,133,123,239,197,209,
+146, 47, 6,227, 38,180,240,108,197,212, 46,219,121, 24,203,233, 87, 20, 34,198, 41, 97, 8, 3, 54,102, 51,244,222,228,137,146,
+118,213, 10,194, 96, 58, 23,229,168, 91,190,192,185,248,109, 27, 66,227, 93,214, 79,120,239,209,182, 61,218,174,131,245, 94,194,
+ 90, 56, 42,147, 47,198, 98, 73,203,137, 94,116,242, 25,100,237, 73,141,117,213,202,152,108, 66, 82,224,138, 73, 21,105,176, 22,
+153,149, 46, 39, 95,200, 81, 28, 24,206,100,212, 42, 40, 34,148, 16,175,220,201,145, 5, 40,136, 22, 65, 20,236,170, 50, 47, 23,
+218,141,226, 95,233,211, 22, 23,186, 18, 42,187,255, 84,136,138,245,207, 47, 97, 48,174,202, 86, 72,137,178,159, 63, 83,213,100,
+156,223, 52,130, 24, 21,100, 52, 18,115, 53,140, 68, 42,107, 2,162, 86,191,188, 11,183,217, 30,198, 23,127,153, 96, 81,226,221,
+238,193,193, 18,123,135, 43,196, 41, 22,248,141,124, 79, 67,140,197,215, 94,253,172,108, 91,167, 42, 55, 93,147,202,162, 52,134,
+252,253,116,150,155,174, 36, 36, 74, 21,252, 25, 99, 97,200,179, 8,155,204, 26, 75,215,129, 69,183,198, 26, 52, 77, 3,231, 61,
+156,177,204,127,143, 92,200, 7, 16,154,234, 51,209,230, 41,115, 38, 84, 4, 44,158,125, 99, 11, 4,201, 24,160,109,249,204, 72,
+ 49,113,232, 80,235, 49, 12,128,107, 90,196, 24, 96,173,135,183, 22,125,215,195, 16, 97,247,218, 53,156, 62,179,131, 72, 9,203,
+105, 64,180,158,181,151,188, 5,144,181,100,139,110,214,131, 76,194,209, 48, 96, 57, 12,114, 96, 72, 49, 17,153,183, 96, 73,242,
+ 38,168, 48,235, 11, 81, 78, 4,206,196, 83, 79,159, 52, 40,195,240, 94, 91, 31, 20,114,146,111,173, 21,136, 53,153,200,164,113,
+155, 38, 59,133,116,124,239,132, 46, 21, 37,237,200, 32,197, 9, 99, 96,175, 99,103,128, 86, 44, 90, 78,148,143, 73,246,118, 67,
+ 76,216,104, 91, 44, 54, 55, 49,219,152, 99, 53, 5, 92,189,247, 60,174, 93,190,134, 89,239,177,177,177,129,166,109,209,247, 61,
+ 62,121,231, 39,241,183,127,253,126,236,156, 58,141,135, 60,244,129, 56, 60, 56, 70, 8,138, 7, 20,112,137,228,127,119,109, 3,
+ 66,196, 16, 98, 69,111,146, 92,107,239,100,180, 19,121, 4, 41,187,187,140,189, 36, 90,243, 2,194,154, 18,156,160,202, 53,193,
+ 16,169,221,130,139, 12,147,221, 81,249,122, 51, 60,118,169,191,185,245,157,110,170,253,187, 66, 91, 34,129,125,253,201,200, 23,
+ 81,146,152, 52,103, 90,124,119,211,100, 48,120,197,199, 58,172, 70,194,108, 74,104,124,204,234, 82,181,208, 24,107, 96,146, 5,
+231,197,112, 87,227,178,101, 49,101,114, 86,182, 85,203,101,100,144, 78,248, 93,105,237, 64,170,199,141, 5, 24,163, 78, 10, 86,
+155, 91,107,249, 98,183,137,151, 29,198,102,238, 55,170, 49, 63, 81,226,240, 18,161,112,105,234, 95,170, 48,176,170,204,206,163,
+242,106,108,175,234,224,148,105,112,213,193,162,201, 75,106, 15,210,138, 54,179,222,245, 18, 79,185, 99,183, 80, 60,173, 17,177,
+156, 88, 28,235,213, 76,213, 83,209,137, 80,143,252,158,213,225,214, 84,240,147, 36,187,104,227, 28,188, 92, 10,206, 90,192,123,
+ 88, 63, 33,134, 14, 29, 69,132, 48,241,229, 30, 57, 25, 79,114, 3, 25, 99, 26, 35, 34, 18, 26,242, 34,224, 35,196,174,197,209,
+202,176,126,147,182,128, 48,224,202,149, 11,104,162,195, 20, 1,235,213, 78,229, 50,104, 68,121,225,220, 53, 79,152,183,156,226,
+231, 27, 7,195, 71, 98,182,182,234,104, 88, 26, 72, 22, 68, 81,121,166,172, 77, 60,174,183, 34, 99,114, 14, 77,227,225,189, 99,
+ 30,183,231, 32, 23, 99,125,209, 88, 24,189, 20,227,154,162, 28, 39,187,107,176, 13,147, 55, 61, 38, 51,248, 73,246,162,100, 34,
+ 39, 68,154, 42, 87, 92,166, 11,154, 52, 89,127, 78,138, 64,205, 94,238,148,178, 56, 18,186,207, 53, 53, 0,169, 96,106,107,103,
+ 6,213, 80,170,234,251,162, 23, 89,173,209, 89, 91,237,213, 10,126,249,119,206,217, 60,118,206, 23, 54,164, 0, 47,213, 37, 63,
+239,154,167,141, 66,218,131,172,255, 26,231, 17, 17, 51,156,165,252,253, 78,124,207,137,241,197,134,249, 0, 10,155, 97,215,149,
+133, 51,156, 27, 49, 77, 1, 49, 78,152, 82,192,181,253, 99, 28, 31,143,153, 2, 25,136, 35,133,141, 49,226, 4, 33,129, 72,197,
+ 12,155,202, 44,132,200,130, 70, 21,122,102,103,157, 62, 75,206,112, 70,185,172,237, 82, 10,249, 92,129, 20,115, 44,168,229,206,
+216, 90,159,133,185,214, 57,180, 93, 43,207,159,172, 41, 53,116, 10, 6,201, 48,122, 22, 18, 27,107,215,178, 46, 82, 30,233, 67,
+ 52,102, 10,235, 73,150,209,182, 6, 22, 97, 74,249, 62,224,152,227,136,105, 26,209, 52, 30,100, 13,186,174,199, 56, 14, 88, 13,
+ 43,248,166,193, 52,141,152,166, 99,105,244,202,106,146, 98, 68,211,122,180,109,135,144, 70, 28, 28,236, 97, 26, 3,136, 36,195,
+ 62,106,242, 26, 23,206, 49,165,146,121,143, 98,151, 84,176,145, 98,242,108, 34, 3,130,102,244,150,195, 89,169,103, 9,194, 92,
+ 54, 82, 81,231,252,112, 66,160, 88,168,113,181,143, 78,224,255,136, 17,105,154, 96,210, 4,155, 18,156, 84, 19,236, 51,245,136,
+137, 48,133, 9, 48,192,246,230, 6, 54,111,186, 9,179,197, 22, 14,119, 15,112,255,157,119,225,112,119, 23,155,155,115,116,125,
+ 15,231, 57,240,254,206,143,223,129,219,223,255, 33,140,203, 17, 77, 43, 7,141,177,128,231, 55,217, 89,203, 42,251,206, 51,126,
+ 15,108,255,202, 49,145, 82,133, 38,217, 25,187,166, 65, 52, 22, 65,152,186, 78, 56,200, 26,221, 1,241, 59,159,180,109,161,242,
+ 52,234,142, 56,201,147,169,187,179, 84, 9,183, 76, 85, 73, 67, 82,215,184, 35, 55, 25, 80, 65, 6, 57,182, 50, 95, 92, 68, 12,
+216, 32, 69,114, 42, 83,191, 80,255,194, 20, 49, 77, 9,135,171, 9,203, 49, 97, 24, 8,227,196, 43,128,164, 92,237, 68,153, 30,
+150,244,192,212, 3, 44,234,195, 28,203,193, 67, 60,186, 39,129,104,212,246, 49, 40,254, 53,209,154, 7, 85, 71,142, 84,169,133,
+197, 21,186,102,233,211, 28, 1,222,119,167, 58, 20,139,199,172, 73, 15,132,148, 87, 19, 84, 89,253,116,103,175,240, 12,181,201,
+192,186,178,215,173,112,174, 73,103, 5, 70,199,123,146, 18, 39, 9, 76,154,190,166,239, 49,201,248,145, 89,230, 78,240,139, 69,
+177,206,172,104, 91,166, 2,186,185, 61, 49,118,215, 3,195,185,154,245, 80,188,175,200, 5,143,122,105, 89,188,198,228, 58,143,
+182,155,161,155,205,209,207, 55,209,204,230,232,230,155,152,109,238, 96,182,177, 35,255,126,142,118,214,161,233, 58,244,179, 5,
+230,243, 5, 54, 55,230,216,152,205,176,152,117,152, 47,122,108,110,109,227,212,230, 54,182, 54, 22, 56,189,179,192,198,172,131,
+ 77,252,156,141, 19, 11,209, 52,235,193, 16, 79,146,172, 20,113,206, 89, 52, 77,131, 89,239,208,119, 45,218,206,162,109, 29,218,
+174,129,111, 89,244,212,245,236,135,159,245, 45, 7, 82,204,103,232,250, 22,125,223, 97, 62,155,161,239,123, 52,109, 3,223,113,
+ 71,210,205, 59,248,174,129,245,250,115,154, 12, 12,209,105,148,138,109,179, 69,201,156,188, 0,141, 8,223, 28, 79, 44,114,215,
+ 38, 32, 25,138,194,157,136,153, 47, 64,213,138,178,128,145,202, 40,188,190,224,163,176, 20,212, 27,109,170,144, 24, 67,144, 76,
+ 3,246,184,123,239,139, 0,143, 40, 7,217,156,164,190,157,180,146,233,101,189,174,198, 79, 21,207, 30,235,223,165,148, 68,187,
+ 82,172,229,250,140,221,242,196, 47,194,203,127,242,157,152,109,158, 41,113,162,146, 97, 96,173,229,132, 51,153,132,212,192, 40,
+181,152, 89,231, 36,182,215,225,150,199,127, 1, 94,241,154,183, 96,243,212, 57,185,208, 82, 25, 5, 35, 50,231,253, 96,133,203,
+151,143, 48,142, 73, 84,233, 42, 68, 20, 33,163,236,254,163,118,146, 50,202, 79, 84, 86, 18,207,126,254,151,225,221,159,220,195,
+ 3, 31,242, 48,201,157,144, 0, 38, 99,209,116, 13,172,113,120,202, 51,254, 9,222,249,193,139,184,249,129,183,100,107,107,142,
+144, 37,147,215,102,214,123, 56,225, 69,184, 70,217, 42,210, 68,200,123, 23, 19,227, 89, 73, 70,212,202, 34,120,198,243,110,197,
+159,221,126, 1, 55, 61,224, 65,229,211, 73,218,200, 80,158,124, 88,235,114,247, 63,172, 86,240,190, 99,253,128, 32,134,185, 49,
+228,239,185,111,231, 88, 30, 45,177, 60, 58, 70,215,244, 24,199, 9,227, 24,165,160, 68,198,161, 19, 17,230,237, 28,141,179, 24,
+166,132,227,163, 35,196, 48,102,194,103,142, 6, 78,200,171, 6, 93,147, 27, 13, 43, 82,205,109, 34, 68,240, 26,217, 43,255,216,
+ 73, 6,175, 38,252,100,197,165, 42,157,115,164,157, 17,168, 74,204, 17,117, 89, 3,101, 20,187, 72,160, 24, 24, 27,203,121,133,
+ 28,234, 66,146, 56,156,149,231, 19, 22,253, 2,155, 27, 11,204, 23, 61,142, 87, 9, 23,174, 94,196,114,119, 23, 77,227,208,205,
+ 56,171, 54,141,156, 37,125,255, 93,119,227,158, 59,239,133,247, 45,156, 29, 48, 13, 44,244,130,177, 8,145,233, 67, 86, 84,176,
+198,178, 16,108,138, 9,147,236, 70, 57, 86,134, 65, 51,164,149,176,236, 87,198,113, 64, 67,173,168,188, 53,126,209,172, 95,228,
+218, 69, 57,131, 36,241,166, 5, 73, 41,153,211, 94,118, 71,182, 8, 10,185,186, 55,165, 83,205,105,106, 37,124,100,237,128, 65,
+ 13, 92, 83, 87, 1,149, 73, 65,162, 12, 91, 32, 97, 25,135, 24,177, 26,217,122, 52,235, 60, 86, 67,192,172, 99, 11, 31,144, 4,
+ 59,235,228,162, 54,249, 64,113,100, 17,193,233, 88, 41,138,111, 84, 80,152,144, 11,156,191, 72,140, 4,182,220, 18,240,115,226,
+100,210,161, 90, 11,208, 90,199, 97,189,201,144, 26, 72, 6, 55, 89, 53,118, 85,113,147,130,234,204,156,118,102, 56,202,138, 67,
+187, 40,147, 45, 56, 38, 91,129,170, 4, 59, 61, 21,180, 40, 81,235,160, 85,123, 15, 43,188, 73,187, 30, 41, 70, 75,103,197, 99,
+ 70,163, 97, 33,169,202,156, 54, 39, 26, 35, 83,237, 25, 11, 4, 62,147, 19,113,131,241,106,150,117,101,233,116, 1,173,103,170,
+160,140,252,146,115, 25,191,236, 97, 17,237,196, 81,178, 94,118,190, 45,193, 43, 11, 64,167, 98,220,142,103, 31, 43,224, 49, 77,
+ 9,206, 71,120, 34, 80, 24, 96,199, 3, 12, 59,115, 44,151,252,221, 69,138, 8,193,192,194, 33, 26, 6,122, 88, 50,112,158,215,
+ 1,206, 26,116,141,231,164, 40, 57, 40, 21,104, 74,146,132,101, 29, 95, 26, 54,235, 77,100,234, 1, 11,239,197, 1, 32,128, 21,
+239, 93,190, 72,116,191, 75,138, 26,210, 78,212,161, 8, 8, 85,185, 46,228,198,114, 57, 82,158,236,212, 59,220,108, 15,173,152,
+255, 36,152,226,242,190,208,154,196,142,104, 93, 81,140, 12,120, 74,186,181,169,128, 49,213,127,147, 57,220,169,100,153,107,103,
+242,137,148, 0, 0, 32, 0, 73, 68, 65, 84, 99, 95,237,100,215,119,247, 39, 47,250,148,237,152, 57, 21, 46,119,237,230,198,207,
+144,116,136, 37, 91,160,232, 95, 50,133, 50,255,249,118, 77,117,159,214, 80,198,242, 90,173,201,194, 57,103, 44,238,251,248,251,
+240, 91,255,233,235, 16,195, 42, 11,131,147,225, 66, 39, 77, 1, 33, 36, 92,217, 59,198,209,113,177, 54,166,170,200,200, 58, 23,
+136, 5,208,251, 28,116, 3, 50, 55,212, 24,196, 84,132, 41,206, 59, 52,157,207,227,101,189,180,244,158, 90, 91,169,213, 19,143,
+196, 97, 77, 77,227,242, 36,200, 91,143, 68, 3,130,120,193, 65, 37, 71,160, 96,113, 79,234, 95, 74, 62,134, 78, 28,173,179, 48,
+212, 84, 77, 2,208,207,102,146, 5,194,119,153,177, 14, 9,132,206, 55,152, 45, 22,184,112,239, 93, 24,134, 21,218,174,195,209,
+238, 46,199, 13, 19,147, 86,181, 16, 32, 34,244, 93, 7, 24, 96, 88, 45, 49,172,134,172,195,178,165, 83,200,175,136, 27, 50, 89,
+ 7,104, 94, 65, 69, 52, 52,242,140,121,103,202,248,216,217,226, 51,207,249,213,169, 84, 90, 70,114,190, 83,148, 56, 58, 91,141,
+ 71,101,252,166, 29,161, 21,161, 74, 99, 45, 83,214, 98,128,113, 13,227,238, 66,132,115, 30, 91,243, 29,108, 44,182,209,181, 6,
+123, 7, 7,184,186,127, 8, 23, 34,102,139, 57,188,183,160, 52, 97,117,116,132,227,107,251, 56, 56, 56,196,225,225,129, 16,155,
+ 8, 9, 78,160, 40, 44,126,176, 0,230,242, 6,165,105, 66, 80,228,160,120,143,141,177,188,159,168,148,168, 36, 49,152,222, 53,
+ 88,197, 37,131, 52,116,132,168,245,144, 49, 57,159, 88,173, 72,166, 58,225,169,108, 21,229, 18,215,177, 76,117, 57, 74, 10, 15,
+235, 20,132, 9, 47, 99, 61,189, 80, 26, 33, 12, 69, 29,253, 37,131,228, 36, 52, 65,170, 54, 15, 39, 66, 41,222,211, 59,235,100,
+135,200,171,133, 41, 90, 28, 47, 7, 44,123,135, 85,103,177, 90,141,232,186, 6, 68,142, 59,238, 20, 69,208,193,200, 86,107,155,
+172, 67,202,135, 85,172,198,236,137,117, 20,234, 9, 87, 76,174, 30,184, 89,185, 75, 41, 95,120,214,213,151, 56, 33, 80, 16,120,
+ 76, 9,180,112,198,113, 39,172, 23, 99,246, 31, 37, 17, 95,149,110, 54, 73,213,138,220,101,112,156, 41,163, 75,221, 26,199,218,
+136,234, 61, 79, 26,170, 60,106,131,226,233,181,162,194,215,253,186,218,204, 52,177,208, 25,147, 11, 14, 61,188,109, 22,168, 32,
+ 39, 90,229, 36, 45,171, 95, 40,147,149,169, 25, 57,155, 61,203, 22,165,161, 43, 54, 57,205,211, 54, 40,118, 37,231, 12,144, 68,
+ 12,104, 36, 37, 46,185,108,131, 12, 20,129,136,181,112, 32, 22, 52,197, 44,190, 33,141,249, 69,130,153,181,112,216, 68, 75, 3,
+ 82, 88,225, 98,188,130,182,233,249, 2, 37, 73, 52,163, 0,136,184,149,201,131, 17,222,179,230,133,140,147,105,131, 23,102, 3,
+114,118,129, 17, 13,137, 5,149, 36, 50, 21,211,169,219,193, 16,188,147,247,201,248,204,231,230, 28,120, 87, 15, 56,114,119,174,
+221, 41,165, 50, 70, 45,157,186,196, 54, 27,170, 38, 78, 84,229,174,155,181,240, 33, 46, 0,101,247, 77,246,134,194,181,181,128,
+ 12, 32, 79,124, 52,227, 29, 89, 11, 47, 19, 40,133,135,104,150,131,190,102, 21,110, 10,204,106, 93, 47, 83,139,228,176,182,114,
+ 66, 85,168,102,240,207, 9,173, 10,107,117,101,175,175,225, 40,214,172,233, 78,242,238,191,210,206,144,196, 0,155, 28, 48, 99,
+215,247,252,214,194,217,134, 45, 87, 32,196,241, 88,206, 76,205, 25,103, 85, 57, 69, 96, 90, 77,184,186,127,132, 41,138,195, 73,
+ 10, 37,103, 93,181,118,224, 75,147,159, 15, 3, 4,102, 79,164,152, 4,224, 99, 50,252,169,176, 8, 88,228,234, 27, 39, 29,109,
+ 40, 32,167, 53, 44,110,204, 52, 82,230, 2,248,188,194,180,214,228,201,137,245, 70,124,221,156, 61, 31,213,110,103, 25,178,198,
+ 77, 13,174, 67,174,150,243,132,139,119, 43, 46, 8,230,213, 91,129,232, 24,116,125, 7,219, 56, 68,112, 2,168,247, 27,236, 98,
+113, 13,188,181,216,219,219,195,108, 54,131,241, 14,227,180,132,179, 30,132, 9,145,162,132,102,241,228,216,251, 6, 19, 37,172,
+198, 21,166,176,130,247, 13,219,122,173, 4,169, 41,201, 21, 66,101,173,133,113, 40,208, 36,168,243,129,209,203, 81,186,130,148,
+149,162,206,241,174,139, 12, 43,247,140, 99,225, 84,222,171,231,209,141, 65,253,217,164,108,185,176, 57, 7, 24,113,130,137,204,
+ 59, 78, 18, 75,216,245, 51,108,109,109, 99,107,107, 19, 41, 13,184,122,245, 26,174, 93, 57, 68, 99, 12, 22,139,158, 43,181, 56,
+225,112,111, 15, 87, 46, 92,192,229,203,151,113,120,124,140,213, 24,177, 90, 13, 8, 97,130,243, 6,171, 24,145, 92, 66,211, 88,
+236, 44, 58, 44,250, 14,222,114, 38,123, 20,240,132,107, 26,182,202, 89,147,195,229, 85,192, 21, 73, 99,240,184,107, 8,211,196,
+ 34, 63, 25, 57,231,139,142,207,216,124,177, 27, 81,197,174,187, 80,120,244,167, 41, 73,234,185, 53,176, 50,246, 35,120,171, 30,
+208,245, 7,213, 84,150, 40,146,145,124, 50,134,213,228,218, 73,200,235, 82,177,202, 26,142, 84,242,232,167, 64, 24,166,132,229,
+ 42,224,120, 57, 97, 53,196, 18,178, 16, 19, 40,114,142, 54,165, 36,208,145, 88, 70,220,249,245, 72,200, 70,110, 40,249, 75,104,
+171, 32, 20,189, 48,117, 60,168,227,200,226, 3, 46, 85, 48, 37, 65,222, 18,239,237,178, 80,144, 21, 81, 25,185,169, 66, 30, 22,
+168, 69,190, 64,165,160,178,178, 27,212,247,184, 14,237,208,139,121,173,219,170,114,211, 57,109,207, 92, 71,229,178, 98,103, 43,
+187,214,146,120,196, 73, 38,108,125, 52,107,123,123,183,214,229, 64, 92, 8,250,249,153,188,134, 58,113,121,115, 96,194,154,210,
+ 89,167, 94,250,135,169, 78,130,244, 27, 36, 2, 71, 99, 29,108,211,194,249, 6,222, 58,102, 97,219, 6,222, 55,240, 13,239,168,
+219,166,229, 44,117,249,197,118, 30,135,198,115,186, 85,215,122,180,243, 22, 91,167, 78,225,244,153, 51,216,218,233,209, 47, 60,
+186,126,134,118,222,161,237, 60,186,174, 69,235, 27, 52, 94, 11,123,135,166,113,104, 91,155,113,155,190,241,104, 27,207, 66,166,
+198,160,241, 14,173,183,232, 26,143, 86,124,193,252,171, 69,211,182,112,206,195, 89, 15,239, 26, 56,219,242,106, 65,206, 17,227,
+108, 53,250,160, 53,164, 46,219,228, 74, 44, 46,223,113,148, 69,168, 57,134, 87, 84,220, 5,121, 90,121,140, 43,173,132,142,221,
+107, 22,196,201,157,183, 94, 96, 72, 84,193, 0, 11,213,206, 26, 43,100, 50,126,125,140,130,165, 18, 43, 90,228,180,153, 43,127,
+ 35,143,188,238,119,235, 44,116,221, 57,199, 92, 44,214,251,119, 48, 85,205, 90, 94, 11, 1,232,251, 5,158,243,178, 87,225,107,
+127,244,143,241,229,223,245, 95,113,246, 33,143,173,152, 11, 22, 15,125,252,211,240,117, 63,246, 54,108,156, 58,151,127,190, 7,
+ 63,238,169,248,154, 87,255, 15, 44,118,206,194, 24,194,131, 30,247, 84,188,244, 63,189, 5, 15,122,236,231,225, 75,191,227,167,
+241, 79,255,221,127, 5,172,195, 67, 31,255, 84,124,253,143,252, 1, 54,119,110, 6, 96,240,164, 91,191, 17, 47,250,215,191,128,
+151,255,200, 31,226,165, 63,244,155,120,216,231, 61, 15,123, 71, 43,132, 41, 0, 49,225, 11,159,119, 43,254,242,206, 3,124,230,
+231,124, 30,254,227,207,253, 10,222,241, 15, 23,240,214,191,254, 56,158,243,165, 95, 9, 39, 93,122,253,125,141, 66, 82, 84,235,
+244,195, 30,245, 88,188,238, 45,183,225, 93, 31,185,132,215,190,225,205, 56,115,211, 57, 94,203, 74,128, 88,190,110,101, 2,248,
+194,151,124, 35,222,250,238,143,224,175,238,216,195, 47,252,198, 91,112,250,236,205,121, 50,250,204, 47,126, 1,222,254,190,187,
+240,216, 39, 62, 9,175,248,174, 31,194,171,223,240, 22,252,200,235,222,140,207,121,250,115,120, 53,106, 13, 54,182,182,240, 3,
+ 63,241,139,120,215,135,239,199,111,189,253,221,120,252,103, 63,249, 58, 61,196,151,125,213,203,240,155,239,248, 0,222,250,183,
+119,225, 63,254,236,175, 99,231,212, 89, 22,114, 58,143,135, 61,250,115,240,147,175,127, 39,158,248,185, 95,132,231,124,197,183,
+226,171,191,233, 85, 8,227, 50,127,167, 27,207,240,166,189,221, 93,108,110,109,227, 65, 15,127, 50,190,248, 69,255, 26,223,242,
+189, 63,143,111,248,142,215,224,179, 62,247,185, 72,137,215,163,198,117,120,200, 35,159,128,127,246,178, 31,196,217,115,143,192,
+215,125,243, 15,227,155,190,235, 39, 0, 16,218,217, 28, 47,121,217,247,224, 7, 95,243, 27,248,174,255,240, 51,248,146, 47,253,
+ 23,120,205,255,249, 7,216, 57,125,147, 60, 91, 88,155,222,144,145, 0, 28,103,181, 71, 98, 35,155,151,100, 27,181,172, 72,205,
+ 10,111,189, 4,141,228,233, 35,172, 43,135,101,160, 8,164,200, 64, 26, 75, 28, 2, 49, 1,113,224,204,103, 39,202,231,214,123,
+108,204, 23,216, 90,108,160,177, 13,246, 15, 15,112,254,242, 69, 28,172,150,152, 45,122,204,103, 29, 44, 25,132, 97,194,222,181,
+ 3, 92,185,120, 21,123,187, 7, 24,134, 17,203,229,132,131,227, 37,150, 49, 50,105, 7, 6,102, 10,112,176,232,231,115,248, 89,
+ 15, 88, 32,192, 10,184,197,192, 55, 44,148,243,214,150,131,216, 22,193, 82, 74, 9, 83, 90,129,108,132,117, 30,211, 68,204,189,
+ 38, 81, 67, 86,227, 91,155,249,224, 34, 30,179,148, 61,157, 41,139,117,229, 66, 52,128,149,112, 27,187,230, 55, 44,130,170, 60,
+218, 19, 11, 87,134,252, 24, 32,153, 4,146,132, 47,163,187,122, 50,153,208,102, 9,112, 17, 57,157, 10,194,147, 79, 41, 33,134,
+128,113, 21, 48, 14,132,229,138, 19,189,210,196, 23,121, 20,155, 95, 74, 17, 49,141,140, 33,164,128, 16, 71,233,228,147,236,225,
+ 41, 79,183, 36, 91, 46,255,249, 76, 30,163,181,131, 88,211,231,202,238, 47, 85, 73, 66, 50,186, 36, 22,197, 25,101,120,231, 29,
+165,142,189,101, 28,158, 44, 64,130,143,133,166,165,150,131, 46,143,196, 52,168,194, 36, 24, 19,175, 27,117,150, 7,149,100, 95,
+ 45,251, 80,195,204,121,115, 98, 71,171,126,214,148, 43, 99, 35, 83, 3,147, 69,121, 84,117,227,220,192, 57, 17, 5,105,241,198,
+101, 43, 39,224,233, 56,207,100, 91,138,240,100,203, 47,216,162,172,207, 96,167, 2, 15, 33,209,127, 88,245, 77,123, 11,239, 91,
+120, 47, 98, 51,215,192,249,134,211,158,156,208,224,172,205,174, 13,107, 9,174,225,203,182,111, 26, 52,125,135,173,237,109,220,
+124,250, 38,222,125,123,143,153,239,209,250, 25,124,211,193, 54, 30,100,121,191,218,182, 13,186,174, 69,227,123,116, 93,195, 23,
+187,227, 11,150,197,110,158, 67, 98,188,133,117, 4,231,141, 20, 26,173,136,227,216,102,103, 28,241,255,123,123,157,119,191, 20,
+129,182, 26,155, 99,237,146,206, 86, 49, 99,214,186,248,188,131,150,239,202,218,231,158,116,183,171,254,236,152, 69,110,186,115,
+ 95,139, 59,149, 29,116,166,255, 81,210, 23, 81, 1, 98,152,247, 29, 73,242,237, 85, 87, 65, 38,119,172,172, 41,138,112,206,156,
+232,210,175, 31,245,171,182, 67,159, 99, 75, 96,103, 75,146, 73,164,172,170,140, 88, 96, 73,126, 15, 96,241,148, 23,127, 15, 22,
+ 59,231,240,214,215,126, 11,222,253,166,215,226, 33,159,249,180, 74,199, 97,214, 38, 31,107, 5, 45,192,223, 45,148,104,226, 39,
+223,250, 10,124,240, 29,191,137,183,255,242,127,200, 72,212,218,230,186, 58,218,197,109,191,243,227,248,245, 31,253, 23,248,216,
+251,111,195, 11, 95,241,253, 72,193,178,243,134, 98,254, 25,127,228,231, 95,135, 15,253,237, 95,225, 37,207,126, 18,222,253,167,
+111,199, 15,254,212, 47,193, 53,162, 96, 55,124,209, 36,163, 1, 60, 41,127,246, 47,253,230,239,198, 79,191,234,123,241,242, 47,
+123, 58, 30,248,144,135,225, 59, 94,249,106,254,249, 37,108, 40,219,187,140,193,243, 94,240, 66,124,219,247,254, 0, 94,249,237,
+ 47,195, 11,159,241, 68,204, 23, 27,248,254, 87,255, 44,107,184, 28,143,238, 1,224, 59, 94,249, 99,248,212, 71,111,199,127,249,
+174,111,196,237,127,243, 30,252,171, 87,254, 40,156,136,187,191,237,223,255, 48,110,122,192,131,241, 53, 47,120, 26, 94,253,202,
+239,196, 51,158,119,107,166,233,129, 44,158,249, 37, 95,129,111,250,238,255, 3, 63,250,111,191, 25,223,250,226,103, 99, 54, 95,
+224, 91, 95,249,163,188,126,170,234,208, 47,126,209, 55,226, 31,222,247, 46,252,238,175,188, 26, 20, 24, 80,228,141, 65,211,182,
+ 88, 45,143,112,184, 60,196, 23, 62,239,159,227,204, 3, 30,137,191,122,215,239,225,215,126,254,251,240,103,255,243,119,113,235,
+ 11, 95,142, 39, 61,245,185, 88,197,132,166,105, 68, 40, 12,124,193, 23,125, 37,254,226, 29,255, 29,111,252,229, 87, 33, 2,120,
+254,139,190, 9,231, 30,120, 11, 94,255,139, 63,128, 63,250,253,255, 11,143,123,194,231,203,126,130,157, 84, 73,166,137, 36,145,
+217,136, 9, 38,114, 64,146, 21,133, 87, 78, 8, 50, 57,164, 32, 2, 20, 96,197, 40,111, 41,194, 82, 18,137,191,128, 49, 13, 4,
+ 47, 74,104,172,129, 55, 4, 19, 2,194,184,196, 52,173, 0, 74,240,206,195,183, 29,102,243, 13, 44, 22, 11,204,230, 29,142,167,
+ 1,151,118,175,226,194,165, 61, 76,176,216,154, 45,208,123, 7, 36,194,106, 28,176,183,191,135, 43, 87, 47, 99,255,248, 8, 67,
+ 76,216, 95, 14, 56, 88, 46, 49, 6, 25, 31, 19, 23, 29, 91,125,143,214,122,244,243, 57,239,125, 4,169, 9, 27,225,188, 69,219,
+ 52,217, 90, 81, 87,197, 53,251,153, 69, 49,252,123,217,182, 25,242, 46, 42,211,198, 84,176, 80, 67,103, 78,166,136,165,162,214,
+ 52,150,113,132,154,229,140,202, 99,158,106,107,156, 78,224,177, 30,209,138,156,236, 36, 64, 13,185, 32, 99, 30,241, 17, 2,196,
+218, 34,202,114, 67,156,186, 21, 82,194,114,156,176, 28, 39,172,166,128,229,106,192, 56, 78,108, 27, 73, 17, 41,133,236,183, 77,
+ 41, 48, 40, 40,175, 1, 40,139,185,214,194, 72,146, 78, 16,162,252, 60,220, 77, 83, 22,179,209,117,246, 21,134,155,199,204, 64,
+224, 46, 59, 21, 10,152, 90,201, 44,203, 49, 65, 28,178,193, 24, 88,237,152, 83,126,239,248,103, 55, 25, 50,147,178,232,137,137,
+ 75,252,254, 83,238,138,214, 71,177,186, 82,178, 57,119, 59, 17,157, 16,182, 89,150,112,187,114,184,159, 12,103, 89,239,190,139,
+216,200,161, 58,124,171, 29, 23, 17,239,171, 13, 85,209,175,166, 2,147,200,165,180,246,231, 75, 71,161, 99,109,141, 46,230, 3,
+215,131,100, 5,198, 43, 1, 87,232,135,142, 95, 71,233, 22, 37,151,193, 88, 52,206,193,121, 22,133, 54,179, 57, 22,155, 59,152,
+245, 51,204,102, 30,109, 99,209,117, 77,142,148, 52,214,163,241, 29,218,166, 71,211,205,209,246, 61,218,182, 65,211, 54,124,209,
+183, 30, 93,215,161,109, 91, 22,138, 57, 7,111,125,198,180,168, 56, 75, 87, 92,122,152,114, 32,134, 91,139, 52,189,110,186,178,
+ 54,106,182, 57,196, 69,119,209, 39, 93, 5,181, 79, 60,157,216,119,235,251,155,233, 97, 84, 34, 43, 13,106,183, 70, 69,166, 51,
+ 37,110, 58,233,168,186, 2,191,212,123,114, 45,182, 84,228,119,210, 54,183,158,173, 14,209, 62, 32,235, 0,178, 5,120,237, 6,
+174, 98,154,215,126,198,130,178,109,103,155,184,229,179,158,133,191,127,231,111, 98,255,234,125,184,114,247, 71,240,129,255,249,
+134, 53,143,187, 49,184, 1,200,198,222,112,159,253,254,183,253, 42,206,127,226,239, 48, 28,239,175, 77, 93,245,189,253,240,159,
+191, 9, 23,239,249, 71,236, 95,187,140,127,120,223,109,104,187, 30,179,141,109, 89, 45, 22,187,231,235,126,230,199,241,251,111,
+248, 37, 92, 58,127, 63,110,123,199,255,192,198,214, 54,118, 78,159,225,103, 81,113,183,154,149, 97, 13,167, 96, 2,248,233, 87,
+253, 59,252,253,251,222,139,187,239,248, 71,188,229,183,127, 21, 79,127,238, 11, 96,136, 49,168,177, 2, 65, 25,107,240,210, 87,
+124, 39,254,232,119,127, 29, 31,124,223,123,113,254,222,187,241,251,191,254, 43,120,206,243,191, 28,173,111,224, 93, 17,166,190,
+245,119,127, 21,127,254,182, 55, 99,255,202, 69,124,224, 61,255, 31,230, 27,155,216, 62,117, 26, 59,167,206,224,233,207,185, 21,
+191,246, 75,175,197, 93,119,124, 28, 31,254,187,191,193,255,253,179,175, 89, 27,192,127,245, 55,124, 59,254,159, 55,253, 22, 62,
+250,161,247,225,210,249,123,240,246, 55,255, 6,158,250,172, 47, 65,215,117, 37, 54, 28,192,123,223,249,251,184,116,255, 39,176,
+119,245, 50, 66,148,213,153,181,104,187, 14,203,227, 35,180,179, 5, 30,241,216,207,199,167,254,225, 47,113,241,190, 79,224,240,
+112, 15, 31,254,224, 95,226,189,127,254, 54, 60,227,185,255, 20,136, 81, 80,178,252, 51,254,233,219,127, 11,159,248,232, 7,112,
+112,237, 26,250,110, 3,143,251,204,167,224, 47,222,245,135,184,122,249,126, 92,190,112, 15,110,251,211, 55,101,205,129,169,112,
+236,245, 4, 50, 73, 86,129,215, 74,200,144, 19, 69, 30,128, 70,148,201, 58, 18, 21, 75, 21,241,204, 58,115,128, 19, 18,188, 33,
+ 52,158, 43,191, 24, 2,166, 97, 64, 10, 19, 90,239,208,185, 6,125,239, 49,235,231,232,186, 30, 33, 68, 28,236, 31,225,232,248,
+ 24,148, 8,253,172,197,188,239, 88, 53, 25, 9,227, 56,225,224,240, 16,123, 7,251, 88,174,142,177, 90,141, 56, 58, 92, 98,146,
+120,189,144, 0, 34,139, 89, 99,177,209,118,152,119, 30,190, 33,184,100, 89,172,165,135,172,179,104, 26, 95,165, 24,137,197, 66,
+224,247,124, 29,242,124, 34, 70,198,236, 89,103,224,155, 34,180, 98,117, 55,202,184, 59, 70,144,227,206,204, 56, 39, 38,127,135,
+ 41,198,220,125,235, 88,185,241, 13, 32, 36,173, 41,152, 74, 16,162, 98, 26, 35,251,115,201,171,215,104, 86,245, 31,202, 63,219,
+ 58, 82, 50,105, 17, 37, 20,164,148,224,100, 34, 97,133,202,150, 34,131, 30,134, 41, 97, 57, 76,152,173, 60,142, 26,131,190,225,
+ 81,172,111,188,116, 0,164, 1, 69,112,137,178, 77, 36,139, 45, 68,161,174,127, 54,137,176, 16, 73, 86, 24,196,187, 73,117, 59,
+ 80,162,234,208, 53,121,244,201,202,212,130,192,229,157, 61,241,206,248,132,242,152,189,221, 96,112,140,129, 84,156, 82,214,184,
+ 42, 41, 75, 56,200,206, 53,121, 39,121,163,195,168,190,116, 79,238,205,242,174, 93, 73, 94,122,105,194,150,221,170,118,108, 39,
+128, 50,117, 12,102,254, 92,179,168,210,228, 76,114,163, 59,204, 42,104,134,242,142, 94,137,103,180, 38,148, 42,153,236, 0,208,
+ 2, 38,176,176, 17, 60, 21, 80,155,153,138,165,160,182,122, 83,136,119, 70, 62, 3,103,141, 96, 38, 45, 7,216, 56, 70, 61, 81,
+ 59,193,247, 29,220,106, 41, 98, 71, 43,113,147, 34, 69, 52,172,121, 96, 17,144,169,128, 59, 22,206, 23, 43, 20,191, 65, 73, 94,
+151,172,230,115, 48,136, 20,208, 64, 94,233,161,250, 60,234,113,116,170, 86, 73,245,251,107, 78,220, 76,117,193, 86, 23,143,181,
+ 8,113, 29, 36, 83, 10, 71, 50, 10,102,209,116, 63,170, 2,128,132, 31,158,170,142,223, 40,197,204,174,237, 93,121,151, 43,103,
+132,112,200,117, 92, 94,232, 99,246, 68, 84,107, 58, 65,136, 51,146,221,174, 19,136,170, 56, 41,106, 73,246, 49, 87,190,100,136,
+ 30,100,243,220,195, 96,172,197,238,197, 59,215,220, 52,165,160,193, 90,156,168,182,228,230,186,206,157,255,205,193,213,251,114,
+ 1, 72,245, 70, 81, 58,234,217,230, 25,124,254,179,190, 10,231, 30,254, 89,152,111,238,228,115,152, 55,170,133,227,241,190,247,
+220, 86, 98, 64, 99, 42, 65, 75,177, 48,248, 41,239,181,203,170,238,232, 96,159, 53, 33,206,224,242,133,123,209,245, 51,108,110,
+157,194,193,253,247, 22,254,186, 24,164, 31,249,184, 39,224,145,143,125, 2, 94,252,181,255, 50, 71,220,250,166,193,153,179,103,
+177,119,237,162, 60,227,192,199, 63,252, 1, 1, 16, 37,118, 87,201,107,121,196,163, 31, 11,107, 45, 62,254,145, 15, 23, 29, 78,
+109,105, 67,194,103, 60,230,241,248,140,199, 60, 30, 47,252,234,151,139, 54,196,195,251, 6, 59,167,207, 34,211,159, 0, 44,143,
+119,209, 56, 73,228,195,148, 51, 24,250,182,195,181,221,171, 56,115,243, 67, 96,172,197,222,229,243, 89,245,159, 18,112,223,221,
+159,192,179,190,248,197,216, 58,125,134,137,121,146,234,121,225,190,187, 16, 2, 55, 65,103,111,122, 16,140,181,184,112,255,167,
+178,206, 71,159, 31,111,109, 33,231, 9,247,190,118, 68,192, 26,134,207, 24,225, 50,115,136,144, 41,227,205,202, 35,204,162, 20,
+147,173, 64, 68, 9,206, 91, 52,162,192,158, 34,239,109,145, 18, 90,231, 49,111, 91,116, 93,139,249,108,134,166,109,112,112,120,
+140,131,195, 35,132,196, 74,244,126,214,160,243, 30, 38, 37,241,222, 2,195, 56, 98, 24, 6, 28, 29, 47,113,116,180,194,241,193,
+ 18,203,113,132, 51,158,137, 64, 48,216,154,247, 56,189,104,132, 71, 63,129,162,146,210,108,134, 91,128, 98, 37,218, 41, 81,158,
+206, 9,227, 58,153,108, 75, 34, 2, 66,152,208,182, 30, 77,227, 17,101, 76,157,177,144, 84, 56,229,245,120,150,201,234, 5,238,
+200, 14, 68,179,158,133,236, 61,236,196, 1, 47,182,206, 5, 71, 1,158,104,154,136, 17,186, 88,198, 2,138, 70,193, 42,224, 70,
+197, 56, 74,177,147,139,215,121, 95,128, 47,201, 32, 6,182, 32, 14, 99,196, 48, 69,172, 70,139,229, 42, 96,214, 79,104,186, 14,
+214,202, 94, 26, 22,137,156, 72,239, 84,125,158,100, 60, 87,108, 55,168,114,157,141,245, 98, 53, 83,127, 61, 85,161, 30, 53, 44,
+ 35,201,218,166, 22,212,217,108, 73, 75,138,191,180, 69,177,172,248, 73,170,210,146, 50, 64,147, 10, 98,213, 24, 92, 71,126, 99,
+ 23,128,174, 13, 10,172,228, 70,190,250,172,112,181,197,215,171,135,159, 65,221,173,165, 28,149,123, 35, 59, 85,125, 9, 89, 73,
+197,130, 81, 69, 9,178,160, 76, 47,117, 67, 5, 29,172, 41,127,200,108,127, 83, 52, 2,149,143, 93,233,140,150,212, 71,110,225,
+200,139, 88, 11, 72, 54,149,231, 40, 50,120,201,100,145,134,136,145,146, 76, 36,172,229, 17,161,239,208,205,230, 8,195,132,129,
+192,223, 31,103,179, 48,140,215,106, 92, 88,165,148, 64,177,232, 16,248, 92,224,221, 34,127, 86, 38, 91,107, 52, 77,208,216,234,
+ 34,177,117,226,221, 58,195,160, 78,207,251,116,162,181,122,157, 18, 69, 53, 28, 43,208, 15,110,192, 84, 87, 59,238,201, 32, 19,
+213,211, 32, 11,217,214, 85,244,250,153,155, 74, 60,166,128, 26,182,193, 34, 7,220,168,237,137, 40, 86, 26,141, 18, 24,164,211,
+128, 90,232, 86,175, 26,234,207, 60, 7, 6, 25, 35,254,107,147, 51, 2,234,160, 25, 53,113,187,134, 57,255, 81, 46,171, 34, 6,
+ 68, 78, 51,212,139, 32,159, 21, 55, 16,157,151,119,198,149, 60,133,234,250, 39, 2,108,211,226, 5,223,242, 26,236, 93, 62,143,
+ 63,252,229, 87,131,218,109,252,203,127,255, 99, 85, 51, 98,214, 24,239, 84, 21, 46,186,179,138,161, 42,106,242, 52,195,173,125,
+127,140, 1, 26,239,208,116,252,179, 45, 87, 75,132, 41,172,125,127,173, 40,223,223,248,223,126, 14,127,240,155,191,202,223,113,
+239,225,157,195,213, 75, 23,209,180, 46,119,255, 70,158,253,132,136, 40, 5,134,115, 22,253,108, 6, 0, 24, 86,171,181,207,162,
+118, 35,164,148,240,123,175,255, 69,252,201, 91,126,155,169,116,214,192,187, 6, 49,174, 48,187,249,116,129, 74,165,130, 17,247,
+190,133,177, 22,190,241,128,179, 88, 46,143, 49,235, 55,164,224, 15, 37,236,167,210, 29, 53, 77, 35,104, 89,126,158,167, 20,101,
+101, 68,240, 82,156,196,105, 82,202,108,126, 47,212,178, 13, 74,136,210,171,170,149, 90,211, 92,173,194, 22,194, 20,132, 68, 22,
+ 17, 66,192, 36, 49,129, 4,176, 37, 32,176,216, 45,239,155,164, 40, 77, 49,113,150,183, 88, 71, 90,231,177,232,103,216,220,216,
+194,230,230, 38, 98, 50,184,116,101, 31, 87,175,237,225,242,149, 75,104,188, 71,223,247,240,206, 33, 73,252, 99,136, 1,171, 48,
+226,104,181,194,254,222, 33, 14,174, 29,226,232, 96,196, 56, 10,173, 8, 9,109,215,224,244,230, 28,219,155, 45,124,195, 7,215,
+144,192,233, 85, 77,131,214,119,112,174,145,221,135,149, 17, 87, 25,141,193, 20,236, 97,166,183,155,170, 91, 72, 36,227,194,166,
+232,162, 52, 12, 28,182,150,126,173,217, 83,168,174,132, 53, 22,143,202,104,217, 9,130,211, 40,103, 88, 56,227, 84,190,167, 44,
+ 26, 66,225, 58,103, 50,102,158, 26, 84,240,126, 37,103,129,100,116, 46, 73, 82,122,201, 5,238,214,199, 41, 97, 24, 2,139, 11,
+199,136, 49, 4, 17,201,201, 24, 94,246, 97, 41,133, 44,124,171, 71,151, 53,135, 93,215, 0, 20,167,204,133,215,221,100,125,120,
+214,194, 32, 99, 72, 2, 90,226,218,104,146, 15, 71,170, 14,162,210, 41, 27,129,205, 20,163, 83,201,116, 47,214, 58, 84, 52, 48,
+166, 9,164,100,242,184, 20,134,214, 40, 98, 55, 18,208, 89, 43, 99,246,106, 37, 83,235, 1,138,104,111, 29,227,185,254,115,210,
+117,209,174,230, 6, 59,204,147, 69, 64,253, 58, 56, 68,201,158, 96,131,235,100, 67, 56,245, 50,110,231,139,183,176, 9, 52,241,
+ 75, 9,142, 58,122,181,206, 8,223, 94,167, 20, 73,180, 33,178,159, 55, 14,125,187,192,214,198, 14,182,182,118,208, 47, 22,104,
+186, 14,109,215,161,235,122,180, 77,199, 64, 13, 42, 43, 43, 43,163, 98, 43,222,108,107, 4,134,148,105,235, 38,191, 62,214,228,
+184, 44,214,243,206, 85,235,166,234,189, 50,230,186, 95, 58,114, 87,206,195, 58, 62,245,211,188,143, 39,132,145,250,138,234,207,
+178, 36,182, 81, 53, 74, 63,145,216,166, 54, 83,131,181,168,223, 12, 62, 18,131,177, 53, 36, 19, 28,202, 80, 41,151,199,232,148,
+207,146,154,235,190,174, 5, 48, 5, 15, 45,207, 92, 16, 31,181, 66,173,244,245, 51,104, 74, 93, 3,252,243, 45, 15,174, 0, 0,
+ 54, 78,157,203,255,174,149, 11,196, 41, 44, 37, 43,248,125,126, 78,111,249,236,103,222,240,109, 35, 9,166,161,235,222, 87,194,
+217,135, 60, 26,139,237,179,120,219,111,252, 20,110,255,155,191,196,249,251,239,203,154, 5,105,237,242, 52,179, 46,182, 79,174,
+ 56,107, 55,130, 94,176, 25,234, 34,105,105,222, 91, 60,244, 17,143,198,133,251,239,193,238,181,171,197,221,145,201,110,192,223,
+191,255,175,241,132,207,249, 60,220,119,207,157,184,239,222,187,112,254,222,187,113,254,222,187,153,119,238, 74, 92,176, 21,109,
+ 64,202,150, 79,182, 26, 95,187,124, 9, 0,240,192, 7,223,146,207,158,141,205,173,210,196, 16,225,246, 15,254, 45, 30,247, 89,
+ 79,198,165,251,239,197,165, 11,247,226,226,253,119,227,234,229,243, 32, 10, 48,213, 28,196, 57,151, 3,128, 72,138, 93,215, 52,
+136, 32, 28, 28, 30, 98,121,116, 13, 68, 9, 27, 59, 55,173,145,253, 31,124,203,163,176,123,237, 18, 72,138,178, 32,255,159,100,
+181, 8, 3,236, 93,227,215,185,181,125, 10, 20, 9,105, 2,250,217, 2,154, 93,217, 58,139,206, 89, 52, 50,109,140,148, 16, 12,
+255, 45, 4,130, 77, 73, 68, 80, 39, 14, 63, 71, 78, 84,197,172,172, 78,210,222, 84,225, 53, 8, 49, 97, 12,124,145, 53,198, 98,
+209,180, 56,189,185,137,157,205, 13, 24,107,176,119,120,132, 75,187,123, 56, 88, 46, 97,189,199,230,214, 54, 12, 2, 82,140,152,
+194,128, 41, 6,132,100, 48, 36,194,114, 90,225,242,165, 75,184,122,225, 10, 86,203, 21,166, 56, 33, 17,224, 93,143,249,108,134,
+179,167,102,216,218,240,130, 73,180,240,221, 12,214,119,136,201, 48,219,189,181, 48,222,177, 66, 84,146,199,172,116,112,252,243,
+ 72,118,110, 66,142, 1, 53,164, 4, 68,139, 40,105, 80,206,250, 50,202,179, 26,185,170,222, 80,130, 73, 16,105, 67, 42, 32, 19,
+ 83, 82,173, 84,248,165,182, 24,235,106,206,119,144, 42,158,197,132,206, 26,120, 39, 97, 51,166, 40,237, 99, 1,213,101,139,148,
+173, 18,191, 20, 7, 81, 4, 58, 44,218, 75,210, 41,132, 24, 17, 66,196,114, 8,152, 38,226,208,151,129,163,103, 65,236,107, 71,
+ 20,245,187,142,254,242, 1, 24,170,113, 32, 63, 19, 33,132,114, 48,166, 4, 10, 49,163, 81,213, 6,199,157,114, 44, 60,230,235,
+198,125,180,230, 51, 78, 20, 51,193, 46,211,185,196,147, 94, 11,169,100, 99,125,226, 2,112,121, 62, 34,209, 61,114,233,248, 53,
+184, 70,254,189,102,125, 87,107,170, 36, 43,133,128,212,135,191,145,131,218,194,220,144,156,119,221,193, 88,117,150,230,132, 32,
+170, 22, 12,214,147,130, 84,167, 95,173, 29,130, 39,138, 5, 17,246,169,183, 53,166,176, 62, 90, 37,192, 36, 18,182,191,149,212,
+ 54, 15, 3,207, 34, 28,217,191,243, 69,235, 88,220,230, 12,218,174,195,124, 99, 7, 27, 91, 59,232,103,115,120, 81,216,155, 42,
+170, 82,119,153, 92, 92, 52,112,190,205, 35, 78, 11, 57,200,124, 43,216, 89, 43,112, 14,119, 66,161,142,235,138,161, 53,116,232,
+137,223, 91, 51,211,235,145,251,201,127, 62, 9,118,201,122, 20,181, 65,158,252,108,100,252, 85,255,119,133,214,118,242,243,172,
+166,149,181,198, 44,131,152, 82,142,158,206,214,175,172, 19,184,126,159,205, 83, 41, 83, 68, 77,149,110, 37, 11, 76, 81,248, 5,
+ 68, 84,196,183, 39, 10,155,253,139,119, 97,247,194,157,120,226,115, 94,138,217,214, 77,120,240, 99,191, 0, 79,124,222,215, 86,
+206, 47,131,195,107,231, 1, 0,143,121,218,139,240,192,199,124, 62,190,232,107,190, 31,219,231, 30, 94, 77, 45,234, 24,215,210,
+ 60,156,212,118, 28, 31,236, 1, 0, 30,242,232, 39,163,219,190, 25,255,228,197, 95, 15, 0,120,244, 19,159,148,237,134,154, 7,
+ 98,114,202,230, 58, 69,143,200,224,243,159,254, 44,252,222,159,253, 29,206, 62,224, 65, 25, 15,171,191,239,123,126,228, 39,241,
+240, 71, 62, 26,143,123,226,231,226,203, 95,242, 13,120,203,239,188,158,133,189,149, 85,207, 72, 81,244,223, 94,251,159,241,212,
+103, 60, 23,255,219,247,253, 48, 30,240,160,135,226,161,183, 60, 2, 47,120,209, 87, 97,231,244, 14,179, 20,164, 24,244,210,228,
+ 76, 33, 33,200,249,223,182, 13,238,186,243, 31,241,169, 79,124, 12, 47,251,214,127,131, 7, 60,248,161,120,198, 23,223,138,111,
+252,246,239, 41, 42, 85, 0,111,248,249,159,192,231,126,225,179,240, 13,223,249, 74,220,116,238,193, 56,247,160,135,226,153, 47,
+120, 17,102,243, 13, 52,222,231,103,179,109,123,118, 75,137,167,252,129,183, 60, 22,207,126,225,183,193,219, 22,135,135,135,176,
+ 22, 56,127,231,135,241,168, 39, 60, 19,103,207, 61, 28,179,249, 22,158,240,217, 79,195, 83,158,254,124,252,197, 59,223,140,198,
+121,152, 16, 49, 76, 99,245,108,243, 10,245,210,133,123,112,225,190, 79,225,169,207,248, 10,108,204,119,240,168,199, 60, 25, 79,
+127,230, 87,234,226, 11,173,116,235,206,154,204,252, 79, 49, 33,136,203,201,102,242, 9,140,236, 15,188, 84,227,252,137,135, 24,
+ 89,177, 40,153,198, 73, 2, 14, 10,204, 33,161,177, 22, 91,179, 30,219,139, 57,250,190,197, 42, 6, 92, 59, 60,192,149,253,125,
+132, 56,162,237, 60,124,215, 72,180,220,192, 59, 43, 99,145, 44, 97,140, 35,246, 15,142,112,233,252, 21,236,239, 29, 34, 16,123,
+249,136,120, 68,177,179,213,227,230,237, 14,157,183, 88, 69,130,157,245,240,139, 5,140,107, 96, 26,102,237, 54,206,160, 23,218,
+143, 54,224, 94, 58,139,220, 61,137,207, 57,139,207,168,148,170, 4,137,230,147, 47,179,119,236, 71, 36,201,155, 54, 85, 55, 78,
+178,251, 50,181,104,198,148,172, 97,165, 19, 24, 25,107,229,112,133, 84, 69,230,229,156, 55,148, 92,250, 42,211,216,105,167,110,
+128,104, 74,204, 94,249,115,144, 37,247,234,217, 84,248, 71, 4,178, 96,110,156, 34, 86, 67,196, 48, 68,172, 86, 9,171,113,196,
+ 24,184,168,226,139, 56,112, 88, 74, 72, 72, 33,229, 75,182,190,216, 83, 12,252,251,180, 51, 38,246,125,166, 72, 72,129, 88,232,
+101, 41, 91,225, 0,115,194,186,101, 50,201,170,102,228,175, 29,222, 58,118, 55,165,107, 39, 21, 55, 85,148, 59, 99, 52, 52,132,
+170,221,179,126,241, 69,160,120,194,105,152,180, 19,177, 66,227,179,204, 52,213, 61,151,185, 1, 5, 78, 85,239, 53,233,236,198,
+100,176,170, 1, 73, 73,214, 35,245,107, 2,200,178,134, 1,134, 64,214,102,242,156,130, 70,226,137,105, 2, 1,107, 5,246,154,
+128, 43, 17,239,186, 69,134,203,155, 87, 43, 32, 37,183,134,141, 85, 10,152, 53,224, 46, 70,108,114,198,121, 88,223, 0,141,135,
+109,153,147,221,246, 29,124, 35,116, 55,199,147,163,182,109,208,120,151,187,110,223,216, 76, 19,132,240,249,157,227,179,194,193,
+100,129,156, 61,161,114, 47,197,212,186,198, 33,157,160, 52,166,235,168,141,159,198,118,118,226,179, 40, 76,133,180,158,178,118,
+163,143, 73,159, 1,117,187,101, 8, 72,148, 34, 93,139,207, 80,249,222,169,144,223, 80, 91, 55, 77, 21, 78, 18,243, 20,192,152,
+235, 19,250, 52, 98, 57,201,106, 47,174,189,214,106,162,115, 34, 65,236,228,251,161,207,194,159,255,214,171,209,111,156,194,139,
+190,247,117,120,204,211, 94,136,219,111,251,189, 50, 82, 79,132,195, 75,247,226,131,239,120, 35, 30,241, 57,207,195, 23,252,243,
+127,139,221, 11,159,196,135,254,228,141,213,151,162, 26, 59,215,227,120, 99, 74,136, 20,128,139,247,220,129,247,252,241, 27,241,
+156,127,246, 45,248,230,239,127, 45, 94,255,179,175,193,123,255,236, 79,240,253, 63,249,139, 56,123,211,131,115, 35,147,225, 40,
+149,135,154,119,239, 28, 22,211,111,108,224,225,143,122, 12,171,211, 13, 79,115, 85, 75,240,206,183,190, 9, 63,245,134, 55,227,
+199, 95,247, 7,184,237,255,253, 35,252,218, 47,252,151,204,134,208, 51,214, 58,142, 20,125,223, 95,253, 5,190,243,235, 95,132,
+ 47,124,230,115,241,150, 63,255,123,252,218, 91,222,133, 23,126,213,215,179,133,178,241,249,247, 59,203, 44,139,152,166,156, 77,
+223,181, 29, 98, 72,248,161,127,243, 10,156, 62,123, 19,222,244,167,127,135,151,188,252, 95,225,119,222,240,139,107, 43,156, 15,
+189,255,175,240,191,127,219, 75,241,164, 47,120, 38,126,225,119,223,137,159,248,213,183,226,217,183,190,152,221, 97, 93,151,239,
+130,144, 56, 19,133,153, 14, 9,109, 63,195, 98,243, 52, 55,171,227,136,214,123,124,236,131,127,138,243,119,253, 3,158,254, 37,
+ 47,195, 43,190,251,167,241,236, 47,249, 42,188,237,205,175,199,135,222,127, 27,156,117,152,166, 9,227, 48,230, 70,109, 34,194,
+ 20, 18,166, 49,225,191,191,241,103,208,207, 55,240,109,223,247,211,120,202,211,111,197,123,110,251, 99, 30,211,143,203,156, 52,
+185,182,186,170,168,131,230,229, 95,243,124,229,145,194, 91,135,182,101, 47,169,118, 1,148,168, 92,144, 82,149,234,232,196, 59,
+160,119, 22,243, 89,139,153,227, 61,247,106, 28, 48,140, 99,230,172, 55, 82, 61,241,136, 41,128,210,132,205,141, 51, 0, 5, 76,
+199, 3,246,246,246,177, 18,154,206,209,225, 33,166,213, 10,105,154,224,136,176,181, 53,195,108,209,138,248,199, 1,182,145,136,
+215,136,214, 54, 32, 3,236,156,218,193,230,246, 6,238,184,227,110,172,134, 9,135,171, 35, 76,203, 99,204,219, 22, 4, 96, 53,
+ 76, 24, 83, 68, 50, 14,141,115, 56,220, 63,148,148,157, 22,221,188,195,209,209, 17,198,101,128, 33,194,108,222,192,219, 6, 49,
+ 5, 44,135, 9,109,223, 35,233,135,231,121,236,184, 92,174,132,116,102, 16, 34, 48,197,136, 85,136,121, 55,231,173, 67,235,123,
+248, 94,250,249, 16,176, 58, 90, 33, 37, 32,164,145,183,241,214, 2, 34, 32, 9, 32,116, 93, 7, 74,137, 71,228, 68,252,101, 64,
+ 9,120, 99, 26,159,218,123, 36,131,189, 42, 40,154,134, 81,167, 83, 80,110, 56, 71,100,246, 77,131,205,121,139, 83,155, 29,182,
+ 55,122,156, 61, 61,195,206,118,143,190,235,224, 61, 43,154,157,107,208,184,150,199,166,173,135,119,158, 65, 16, 78, 2, 91,244,
+176,182, 46, 7, 54,104, 74, 26, 63, 11,158,249, 68,154,203,110,202,104,237,228, 1, 88,246, 66, 18, 3, 43, 95, 94,210,144, 28,
+181, 82,230,253,171,203, 15,112, 6,246,240,147, 39, 98,187,188,112, 98,138,153,105,144, 40, 8,113,137, 95,191,117,110, 93, 64,
+101,148, 83, 64,165,203,176,133,228,231, 20,234, 97,220,218,206,175, 0, 76,112, 93, 40,135,126,127,172,186, 28, 4, 88,146, 5,
+124,153,166, 87, 93,114, 39,114,182, 41, 21,165,127, 14,213, 50,172, 39, 80, 17, 37,139,235, 18, 82, 50,234,219, 98, 20, 39, 81,
+ 94,171,104,100,105, 14,201, 38, 5,250, 68, 68, 68, 46,232,166, 9,211, 56,240,254, 55, 70,196,113,100, 39, 68,136, 72, 20, 4,
+184, 34, 46, 15, 69,128,146,236,219,178,174, 35,193, 89,134,111,128, 72, 18,244, 10, 74, 85,117, 34,159,142,133,159, 82, 20,194,
+ 99,201,177,175, 39, 34, 39, 59,253,235,236,224,198,186,199, 0, 0, 20,185, 73, 68, 65, 84,138,159, 38, 52, 37,235, 75, 8,107,
+ 22, 82, 64,167, 38,234,123, 86, 49,108,172,130, 99,140,236, 96, 99, 22, 22,106,129, 91,130, 85,108, 38,102,106, 1, 33,200,153,
+172, 95,176,102,189,104, 53,146,251,160,171, 51,214, 42,153, 60,153,163, 19,108,123,101,189,159, 60,184,235, 85,209,201, 81,119,
+ 45,152,131,193,117, 83, 32, 93, 95,105, 68,178, 70,203,162,226,206, 59,153,102, 4, 68, 76, 41, 98,127,127,137, 43,151,247,112,
+254,210, 46,238,187,112, 21, 71,199, 1, 33,112,164,117, 18,215, 84,144, 44,113, 11,194, 48, 77,104,219, 22,190,113, 24,199, 9,
+171,213,200,176, 41,231, 96, 45, 71,249, 26, 99,176,179,181,192,162,107,177,154, 6,132, 41,162,107, 25, 24, 19, 82,196,209,241,
+128, 24,152,116,167,132,197,126,198,168,213,105,156,184,136, 74, 4,235, 60, 26,223,192, 25,131,249,162,197,230,230, 6, 92,211,
+ 99, 99, 62,199,185,237, 45, 32, 6, 92,219, 63,196,238,254, 1,108,107,177,181,189,133,123,239, 59,143,221,221, 61,132,192,212,
+212,166,105,208,247,204,120,152,198, 17,137, 56, 77,206, 26,160,159,117, 2,178, 49,216,220,222,129, 73, 19, 30,245,152,207,192,
+230,246, 38,124,235,177,177,117, 26,137, 34,174, 93,190,140,107, 87, 47,227,225,143,120, 20, 30,255,132,207,194,189,247,221,133,
+ 79,124,226,227,120,228,103,124, 6, 78,109,159, 66, 8, 19, 46, 94,188, 31,187,123,135,184,118, 60, 32,198,136,249,124,134,197,
+ 98, 3,227, 48,225,218,254, 53, 78, 22,133,224,177, 83,161,100, 58,111,185,193, 36,224, 41, 79,191, 21,207,125,254, 75,240,115,
+255,249, 91, 65, 96,130,234, 56, 77,156,196, 56, 8, 37, 85,114, 88, 60,153,146, 29, 11, 65,226,145,169, 82,199,114,130,141, 97,
+191, 39, 88, 44,213, 55, 14,243,190, 67,235, 29, 44, 37,172,134, 21, 66, 8, 8,148,144,172, 65,211,244, 60, 22, 8, 35, 99,244,
+ 92,139,190,221,192, 56, 92, 1, 82,196,234,120,194,229,139,151,113,116,120,192,248,200,196, 23, 85,227, 24,114,209,119, 22,222,
+ 38, 17, 56,108,194,192, 99,255,248, 16, 41, 4,204,186, 30,125,219,130, 18, 19,121, 8,149,208,167,218,173,241,104,132, 4,238,
+ 47, 4,172,170,186, 52,149,216,195, 66,132, 90, 38,230,212, 57, 13,117,168,129,132, 57, 97,200,249,108,183, 49, 2,142, 96, 21,
+173,250, 42,157, 68,119,122, 81,236, 78,165,125,211,131, 44, 82,225, 19,203,104, 91,247,103, 86,212,238,218,185, 89,225,173,231,
+ 56, 74, 77,179, 50, 66,105,147, 11,137,133,103,124, 96, 69,129, 28,140, 83,131, 97,136, 56, 60, 26, 49,239, 61, 90,231, 88,201,
+ 31, 69, 0,105,185,136,112,106,159,113, 70, 68, 80, 38,119,199, 57,110,151, 20,147,203,196, 40,172, 41,183,145, 5, 69, 76, 75,
+141,215,229,255,214,164,212, 68, 37, 13,205,230,224,244, 82, 16,100, 85,167, 8,131, 85,104,229, 52,130,149,120,252, 84, 46,195,
+ 28, 78, 91,172,129,149,186,222,202, 94, 57, 37,130, 35,147, 73, 97, 28, 87, 32, 64,162, 28, 94,148, 50,169,173,188,102,179,166,
+174,207,227, 96, 37,232,153,178,179, 39,107,214, 73,103,154, 87,226,202, 62,213, 84,203, 72,170,214, 20, 70, 44,114, 68, 34,240,
+ 50,168, 8, 97, 74,230,195,122, 16,136,114,249,141,129, 33,254, 25,147,181, 5, 55,202,169, 6, 2, 97,226, 48, 23,155, 88, 31,
+ 79,158,199, 66,198,122, 16, 26,249, 30,200,107,119,200,252, 2,189, 24, 51,206,212,241, 84, 41, 81,125,121, 20,190,182,174,173,
+244,114,173,223, 51, 47, 98, 59,157,108,213, 44,252,162,234, 94, 31, 83,223,232, 34, 95,223,225, 82, 65,174,214, 59,124, 82,215,
+136,116, 52,100,242, 51,157, 47, 69,161, 34,241,115,106, 42,203,157,108,143, 21,253,106, 84, 83,162, 79, 90, 90,203,230, 6,241,
+ 41, 89, 10,146, 36,153,231, 76, 0, 75, 66,139, 84,129, 97, 18,206, 62, 23, 19,238, 58,241, 32,157, 96,212,103,189,129,190,183,
+ 21,126,216,160,232, 51, 18,174, 95, 23,145,174, 22, 44, 99,159,115, 36,180,234, 39, 82,225, 82, 12,227,132,163,227, 1,135, 71,
+252,107,152,146,208,143,249,210,137, 72,176,137,119,145,214, 90,196,137,179,196,249, 71,144, 9, 95,109,134,209,116, 61,213,142,
+ 88, 84,194, 73,228,239, 94, 44, 81, 74, 98, 88,178, 25,219,139, 68,215,173, 36,172, 51, 25, 97,172,121,235,214, 0,129, 74, 26,
+156, 58,161,120,141, 72, 37,204,230,196,218,231,164,215,159, 3,186, 90,198,184,198,129, 27, 31,239,114, 68, 47,135, 64,241,127,
+211,118, 45,172, 37, 12,203, 37,156, 76,138, 33,211,181, 24, 18, 23,204, 18,183,173,175,117, 53,140, 44,148, 51, 54, 11, 92, 73,
+190, 35,143,121,220,147, 48,141, 3,118,175, 93,194,153,155,206,225,233,207,254, 10,124,248,131,239, 6, 39,139, 19, 66, 96,157,
+ 91,140,194,218, 39,117,188, 27,120, 34, 35, 25,198, 60, 58,203, 2,174,202,239,106, 53,211, 21,132,198, 25,204,186, 22, 27,109,
+131,148, 18,134,213, 50, 91,225,140,227,212, 26,238,172,132,137,155,136,115,180,157,135, 51, 30,136, 22,215, 46, 95,198,225,225,
+ 18,251,123,135,240, 14,204,108, 7, 97,214, 55,232, 54, 55,176,232, 45, 86,227, 17,194, 56, 96,115,243, 12,200, 54, 56, 60, 58,
+ 64,140,137,129, 25,179, 25,156,115,152,166,192,192, 12,199,193, 27, 44, 76, 43, 23,183, 19,188, 39, 18,119, 21, 78,172, 82,245,
+151,208, 74,165,173, 29, 7, 3,208, 89,224,147,193, 33, 98,251,161, 68, 21,179,189,240,148,245, 27, 78, 68,217,237,163,157,165,
+ 21,174,126, 8, 50, 83, 23,209,158,142, 0,157,160, 77, 83, 8,114,121,151,117,105, 60, 33,104, 65,165,150, 45,155,175,130,157,
+180, 48, 57,157, 73,211,147,166, 72, 88,141,129, 45,134,131,197,209,241,132,190,107,224,147,240,144, 67, 0, 44,224,200, 35, 4,
+ 11,239, 1, 99,116, 55,230,178, 90,216,218,117,242, 90,233, 52, 40, 11,180,114, 90, 31,149, 68,191,122,188,170,157,187, 38, 39,
+113, 1,224,214, 53,180,242,254, 40,163, 58, 67,122,114, 40,142, 45, 24, 76, 83,162,157,172,177,217,189,129,156,252, 68,149, 26,
+151,114, 80, 2, 36,252, 33,115,221,179, 42, 61,137, 91,130, 10,244, 5,213,235,160,117,146, 83, 29,167,169,128, 16, 50,149,189,
+ 74, 73, 88,226,112, 32, 9,171,201, 26,139,250,114,175, 60,214,150,170, 8, 78, 20,144,142,177, 0, 37, 11, 66,168,248,222,102,
+205,183, 90, 11,165, 40,134, 28,165,188, 22,106, 98, 12, 91, 2,213,202, 4, 3, 68, 39,135,102,161, 75,230,203, 43, 70, 97, 65,
+166, 2, 14,145,238, 95, 3, 51,235, 14, 82, 3, 98,200, 89, 32,176,181,179,230, 58,168,166,161, 8, 60,249,217, 77, 39, 45,108,
+149,160,236,255,111, 20,159, 1, 71, 39, 70,215,121,212, 31, 83,245,109, 17,171,162,136, 57,141, 20,116, 42,234,226,103,197,103,
+ 10,162, 85, 54,121, 53,230,212, 65,128,174,138, 64, 69, 48,198, 10,250,147,221, 52, 36, 85,142,215, 64,106, 17, 45, 76, 8,197,
+ 28,115, 97,166, 26, 15,102,222,175, 11, 7,215,198,250,250,108,102,201,115, 37, 6, 61,177, 2, 40,200,252,130,152, 45, 59,189,
+194,129, 84,126,252, 56,140, 88, 46, 7, 28,202,197, 30, 66,137, 87,205,131,123, 73,114,179, 6, 24, 19, 67,134,172, 53,124,225,
+ 80,170,158,221, 98, 52,208,162, 60,101,140,115, 41,202,115,108,109,206, 27,225,166,173,208,144, 69, 52, 92, 33,113,157,115, 48,
+206, 51, 28, 21, 6,157,111, 74,124,181,156,139,109,211,136, 54, 40, 85, 22, 65, 20,242,159,173,146, 0,109,213, 24,138,104,147,
+ 82,130, 35, 96, 54,155, 9, 59, 33,102, 56,149, 34,139,187,182,197, 24, 88,183,212,183,179, 66, 16, 12,129, 5,225, 81,196,144,
+114, 38,114, 86,199, 8, 77,194,208,166, 34,201,207,120,211,185,135,226,139,158,253,229,216,220, 58,133, 97,117,140,219, 63,244,
+ 94,188,227,109,191,205,174,151,152, 16, 66,194, 40,127, 46, 73, 50,162,206,254, 60, 4,121,234, 37,160,129, 59, 35, 81,138, 27,
+ 43, 66, 36,190,120,251,166,193,162,237, 96,157,193,106, 10, 24, 86, 3,156, 21,213,120,227,178, 45, 41, 6,254,192,156,179,112,
+205, 12, 10, 14, 30,198, 3, 28, 29, 15,184,120,239,121,184,255,213,214,217, 37, 71,142,228, 72,216,129, 8,146,169,146,186,186,
+123,108,214,108,239,127,136, 62,193,216, 92,103,119,186,164,204, 36, 25, 0,230, 1, 64, 68, 80,210, 67,155,149,117, 85,169, 36,
+ 50,201,192,143,187,127,235,138, 82, 92, 9,185,108, 11,214,178,224,183,245,119,188,189,110, 56, 30,255,143,199,255,157,168,219,
+ 11, 26, 45, 56,142, 7, 68, 61, 44,255,199,182,162, 44, 27, 0, 69, 43, 13, 84, 61, 71, 28,197,233, 90,203, 82,177,119,138, 13,
+ 65,169, 36, 89, 54,168, 59, 83,119,212,197,140, 20, 1, 95, 20,228,176,138,194,174, 31, 56,101,212,227, 60, 91,154, 2, 14,192,
+129, 41,180,102,157, 36, 38,166, 40,170, 30,202, 65,110,117,216, 15,238,103, 16,226,192,118, 9,128,245,224, 18, 85,160,176,162,
+192,208, 48, 24,234,224, 43, 11,129, 3, 42,192,209,229, 88, 28, 24,202, 4,154,188,148, 98,138,166,132,199,161,216,150,134,199,
+206,120,127,156,120,125, 61,177,174, 5,197, 92, 40,215, 90,140,169, 99,180,155,251, 89, 87,243,158, 62, 3,152, 56, 0, 73, 83,
+178, 65,146,112,143,111,184,203,191, 69,145,118, 15,181, 13, 44,107,242,212,193, 17,195,139,158,192,151, 15,109, 23,149,245,195,
+ 99, 16,240, 40,112,172,158,248,135, 0,142, 76, 12,246,232, 10,188,203,105, 51, 91,207,241,175,148,163,228,180, 35,165,128,174,
+116, 53,123,186, 15, 6,100,195, 62,217,177, 34,177,157,166,221,214,148, 38,151, 41,102,185,106,228, 79,123, 76, 75,129, 37, 97,
+242, 35,195,177,146,136, 20,177,238,141,227, 97,111,233, 80,152,200,181, 15,132,171,230,148,131,252,185, 68,140,114, 45,137,147,
+144, 8, 5, 10, 23, 6, 23, 47, 44,137, 61,115, 90, 29,123,233,147,150,132, 72, 48,106,228, 59,120, 62, 56,245, 74,211,195,140,
+ 34, 65, 48, 81,181, 60,220, 28,157,146, 77, 95,199,228, 92,188, 99,225, 60,100, 52,138,197, 30,207, 28,135,254,116,248, 1,159,
+ 68,139,147, 91,226,115, 39, 63, 4,119,122,177,105,102,238, 3, 81,247, 54,246,162,220,177,165,220, 15,198, 62, 69,163, 49,190,
+206, 91, 65, 25, 34, 25, 93, 22,115,236,150, 15,189, 6, 83,197,215, 24,242, 37, 47, 0, 53,254,178,239,143,175,110, 13,149,110,
+129,185,104, 17,102,212,111,230, 65,104,215,234,122,183,158, 86,182,107,146, 28,245,194, 42, 71,219,179,169, 15, 0,132,125,245,
+119, 30, 13,247,143, 29,191,126, 61,240,235,253,137,199,126, 66, 36, 19,252, 92, 85, 14, 85, 40,249,212, 79,180, 65,201, 39,162,
+ 91, 41,184, 31, 97,145, 69,243, 51, 36, 63,211,225, 71, 47,209,244,228,202, 13, 29, 42,227, 4, 60,233, 41,131,134,117, 93,124,
+138, 97,145,226, 25,204,244, 14, 62,169,110,101,107, 32,172, 84,240,163,174, 29, 52, 35,166,254,251, 75,197,227,249,128, 54,141,
+103, 93,193, 37, 24, 11, 25, 65, 77,212,215, 4,204,212,169,137,181,214,200,245,247, 36, 69, 98,160,197, 20,130, 99,146, 87,168,
+ 98,221,110, 56,143,134,199,227, 3,219,122,235, 46, 32,105,238, 56,106, 33,102,171,236, 12,135,125,119,140,173,193,115, 33,178,
+153, 41, 4, 24, 27,254,253,175,191,240,239,127,253,117,117,133, 68, 32,132,136,225,104, 13,123,107, 80,177,142,171,229, 48, 40,
+ 87,168,245, 8, 77,205, 32,149,105, 31, 72,204,184,213,138,151,205,119, 15,135, 26,246,247, 59, 90, 19,135,209, 47,236,223, 40,
+ 1,123, 59, 32, 49, 82,113,193, 76,180,173, 77,208,142, 29,143,251, 3,239,255,249, 27,199,121,199,219,203, 11, 42, 23,220,182,
+ 5,191,253,252,137,219,219, 43,222, 94,111, 56,218, 59,158, 7,135, 16,103,129,178,251,104,215,117,117, 49,210, 82, 34,114,178,
+160,218, 75,128,233,151,174, 88, 6,151, 56, 40, 25, 92, 43,112,138,123,216,227,129,236, 2,140, 28, 39, 70,140, 33,193,253,250,
+ 14,175, 58,221,243,190, 84,239, 79,204,147,219, 52,186, 61, 85,235, 25, 19, 20, 25,221, 48,237,188,104, 7, 26,132, 21,133, 9,
+117, 89, 1,122,130, 72, 47,188,229, 92, 9,171,186,170, 62,223,211,133, 10,242,163, 13,178, 47,138,218, 94,201,134,152, 44,135,
+ 12,212, 83,210,226,251, 60, 13, 18, 68,188,231,193,168, 85,176,237, 39,238,143, 3, 47,183, 13,181, 12,190,188, 74, 67, 33,130,
+ 50,112,180, 36,112, 69,238,123, 86,189,113,208,149, 62,178,140,151, 19,208,247,186,156, 97, 42, 81,121,246,241, 30,212, 89, 2,
+106,160, 34, 93,101,220,105,109,134,111, 83,220,124,127,102, 83, 82,150,117, 96, 70,102,165,251,191,207, 32,246, 61,114, 58, 22,
+230,241, 90, 73,188, 48, 39, 73,202,199,196, 74,209, 65,105,198,216, 74, 92,195,236, 82, 39, 12,225, 52, 59,201,172,231,180,215,
+ 93,173, 87,248,116,152,240,244,189,135,159, 87,245,130,240, 21, 75,138, 84,116,252, 61, 76,162,244,189,190,153,116,160,195, 64,
+ 80, 78, 28,249, 72,171, 99, 34,104,104, 25, 56,126,207, 71,157,181,239,134, 53,198,168,158,102,154,157,188,139, 96, 11, 5, 36,
+ 67,100, 80,203, 84, 61,202,212,232, 83,199,168, 35,214,117, 66, 27,119,209, 88, 69,239, 10,231,188,243,121,207,126, 25,169,218,
+ 24,215,102, 72, 83,148,203,177,157, 41,221, 65, 66,145,205,224, 93,157,125,217,203,127, 22, 31,114, 47, 58, 8,198, 22,200,233,
+188, 79,165, 63,159, 10, 23,127, 26, 8,210, 50, 72, 72, 64, 38, 61, 32, 40,237,165,196,163, 49,232,148,186, 79,182, 77,255,238,
+ 5,106,252, 69,205,158,215,212,136,252, 93, 51,173, 25,232,147,229,242,243,117,227, 24, 60,245,125, 58,141,113,255,117,146,193,
+ 93,156, 75, 23,108,201,117,234,161,145,185,127,127,238,120,127,236,248,117,127,226,227,254,196, 33, 2,179,214, 11,131,211, 12,
+224,130,133, 13,133,128, 93, 21, 86,128, 82, 9, 77, 13,162,103,136, 61,227,186,112,233,158,254,101,241,116,195,243,244, 53,103,
+141,244, 71,233,163,245,156,196,121,116, 55,151,130,227, 56, 70,208, 21,114,224, 73, 40,181,118, 0, 12, 68,240,178,222, 80,202,
+ 2,177,195, 87, 84, 34,222, 48,222, 86,188,127,124,196,132, 36, 68,204, 83,202,165, 70, 97,220, 53, 12, 57, 42,101,111, 98, 90,
+ 19,215, 12, 69,184,144, 30, 54,166,122,230, 16,154,109, 91,177,239,187, 55,186,111, 53,186,254,130,163, 9,246, 38,104,162, 17,
+ 45,189,248, 20,251, 56, 34,141,149,251, 36,131, 45,182, 23, 65,129,156, 29, 50, 94,145, 83, 76,113, 60,163, 68,196,153,235,126,
+ 13, 66,171,101, 64, 85, 17, 23, 49, 4, 39, 88, 99,175,107,102,193, 37, 95,240,163,250,254,235, 99,127,226,104, 2,131, 96,169,
+174, 58,135,133,218,186,197, 94,182,174,254, 65, 20, 5,164,161,105,131,180, 19,231,115,199,254, 60, 60,244,254,182,130, 8,120,
+253,249,134,223,254,248,137,223,255,248, 29,219, 90, 61, 87,249,136, 49, 80,169, 88,215, 23,240, 82, 81,150, 10, 57, 20,231,121,
+ 56,150, 50,197, 90,203, 10,170,165,211,121,206,122, 66,141,125,239, 64, 64,217, 10,240,244, 23,213,226, 74,141, 20,239,118,207,
+121,153, 49,140, 0, 26, 8,135,156, 88,203,138, 98, 4, 38,141,125, 35,161,105,252,253, 56,192,136, 25, 5, 65, 35,106,205, 71,
+ 61,219,234,251,161, 22,195, 74, 83,212, 90,194, 51,207,240,136,144,156, 28,211, 24,141, 98,130,135,208, 36,248, 25, 89, 34,163,
+187,163,129,188,205,221,147, 23, 5, 12,152,204,113,226, 16, 49, 8, 43,142,230,246,195,125, 55,220, 31,130,215,219,129,165, 16,
+ 42,209, 8, 31, 82,198, 34,236,157,156, 54,175, 57, 74,241,105,141,249,215, 70,210,254,120,236, 73,189,107,207,129,160,142, 32,
+ 29,162, 80,171,115,223, 79, 91, 80,232, 48, 65, 57,136,180, 67, 79,134,160, 39,253,215,158,248, 7,154, 20,244, 52, 70,121, 41,
+ 78, 67,190,152, 75,137,235,115,245,139, 11,220, 95,204,198, 83, 65,145, 88,214,208, 41,164, 62,160,112,228, 13,132,205, 14,152,
+ 84,253, 58,133,151,232,183,190,245, 76, 42,251,156, 62,151,147, 5, 88, 68,190,134,149, 73, 48,244, 43,131, 37, 94,195,178,199,
+ 96,182,216,185,122,135, 82,234,128,153,152,153, 31, 80,102, 48,153,119,203,126,208,149,220,179, 79,135,157, 98,236,255,109,142,
+204,229,226,206,144,233,222, 58,140,201,119,224, 34, 45,246,235, 17,148, 17, 80, 28,228, 14, 55,178,191, 44,166, 38, 84, 70, 72,
+145, 23,133,137,207,180,152,104,216, 37, 19,130,248,170,154,239,120,210,153,128, 24,208,164,204,143,176,192, 61,115,184, 0, 12,
+246, 45, 7, 32,211,206, 75,117,172,109,174,104,116,138, 45, 51,137,128,167,146, 84, 50, 29,164,190,148,113, 76,209,165,152,133,
+144, 74,144, 8,143, 49, 30, 63, 23,193, 65, 48,158,125,174,151,224,149,156,166,113,175, 14,198,215,247, 61,241, 87,223,119, 18,
+ 5,115, 90,133, 75, 84,245,119,126,126,158, 16,199, 35, 87,195,166, 92,218,196,203,170, 2,103, 83,220, 31, 39,222,223, 15,188,
+127,236,120, 28,103,136, 37,253, 90,139, 26,208, 0, 98, 69, 45, 43,154,181, 32, 87, 18,106,241,213,129, 68,136, 21, 37, 27, 62,
+154, 37,103, 47,240, 52, 34, 24,185, 2, 46, 36,164, 17,147, 28,222,117,170,190,107, 79, 42, 89,215,219,128,130,129, 16, 94,124,
+ 37,172,235, 2,131,196, 57, 6, 40, 9,182,178,130,137,112,180, 51, 72,109,220, 93, 50,184,132,128,161,187,136,208,181, 49, 20,
+194, 84,233, 83,101, 3, 3,146,182, 89,191,138,219,143, 87, 80, 41,120,124,236,174, 85,130,130, 23,194,113, 42,142,125, 71,107,
+242,137,101, 32,176,214, 2,124, 54,246,139,158,232, 25,110,168,224, 83,228, 57, 69, 42,145,177,233,197, 74, 90,176,105,178,132,
+ 18,121, 67, 91, 29, 76,224, 0,249, 6, 65, 5, 99,227,130,151,101, 65, 93, 60,138,243, 63,207,167,239,152,226,126, 44,133,177,
+ 70, 66,149,168, 64, 11, 67, 74,167, 19,192, 90, 67, 59, 5,164, 2,134,132,104,203, 1, 21,117, 91,177,217, 13,101, 49,252,241,
+207, 63,241,251, 31,127,226,118,187,193,180,225,216, 21,173, 1,135, 24,164, 84, 44, 47, 47, 88,214, 13, 12,194, 67,119,127,105,
+149, 5, 90,185, 35, 20, 77,189, 19,174,213, 71,221, 62,238,241,135,114,140,174,232,107,220,103, 79, 35, 27,244, 53,181,200, 81,
+ 39,194,169,138, 26,251,112, 85,129,178, 57,171, 3,132, 66,215, 66,192,163, 39,253, 97,221,234, 6,102,198, 71,123, 7,169, 0,
+ 92, 71,209,113,182, 62, 34, 73,241,147, 37,206, 53, 20,224,233, 57,231, 68,179, 98,234,196,227, 5,201,125,175, 76, 17,222, 16,
+145,161,230, 34,183,124, 97, 22,206,113,141,224,104, 26,185, 2, 13,207,157,241,124,158,216,182, 10, 46, 26, 48, 30,134,168,248,
+ 8, 74,201, 17,172, 16,103,184, 43,129,217, 15,118, 19,241,240,136, 4,208, 36, 3,157, 57,152, 1,234,190,101,226, 73, 40, 54,
+119, 25, 9, 18,196, 36, 20,163, 41,217, 41, 4, 57, 60,186,218,188,182, 61,217, 79, 37, 40,107, 60,249,126,237, 58,198,142,132,
+174, 81, 56,240,183,182,180,194, 52,189, 99,226, 80,233,251,254,241, 2,207, 4, 45, 31,205, 79,162, 48,179, 47, 59, 76, 34,124,
+107,237,235, 72,199,220,185, 50,141, 20,194,238, 81,214,169,136, 40, 35,221, 43,175, 95, 23, 90, 22,207,228,215, 12,220, 81,180,
+176,153,114, 97,180,136,159, 52,230,206,119,207, 3, 63,177,147, 68, 10, 81,153,198,225, 37,240,192,177,111,132,196, 65,208,226,
+179, 24, 33, 63, 29, 60, 19, 83,131, 82,188, 48,148,214, 99,112, 17,130,196, 11,122, 52,160, 80, 58, 81,187,122,198,251,236, 95,
+ 79,106, 97,138, 62,109,232, 25,250,100, 41,138,187,196,137,150,201,183,223,221, 6, 29,206, 19,135,201, 52, 98, 71,199, 32,167,
+248,208, 15,149,252, 60,137, 72,188, 63, 98,223,101,185,174, 9, 44,175, 14, 59,105,135,252, 4,212,135,212,109, 88,221,230, 54,
+225,119,241,197,199,237,107, 62, 14, 77,140,198, 97,209,133,145,243,218,194, 38, 58,224, 28, 5, 11, 30, 98,214,139,134, 37,139,
+ 85,238, 16,171, 57,205, 78, 97, 83,220,129, 64,245,196,243,249,196,199,251, 19,191,222, 31,184, 63, 14,156, 77,167, 66, 43,214,
+ 83,166,190,178, 49, 7, 72, 33,181, 60, 68,145,248,103,157,243,192, 97, 15,205, 61,120, 45,124, 33, 84,114,113,250,156, 73, 67,
+154, 62,114, 76,181, 44, 11, 32,128, 74,235,255, 47,181, 67,149, 24,235, 82,163, 72,244,132,181,117, 41, 99,169,101,134, 82, 23,
+ 44,107,245, 3,189,233,104, 58,250,179, 53, 66,134,250,173, 73, 91, 45, 83, 56,126, 98,183, 31,244, 82, 37,128, 23,246,159, 63,
+174,243,207,183, 55,112, 41,120, 62,239, 17,200,229, 41,144, 34, 59,246, 99,199,105,209,240, 22, 95, 93,138, 10,154, 74,127,235,
+177, 13, 6, 72,166, 72, 22,248,159, 85, 9,177, 54, 57,228, 74,213,247,233,102,131,107,225, 34,241,177,208,227, 18,122, 35,152,
+143, 85,127,108, 55,220,110, 43,192,140,231,113,224,253,126,199,126,182, 62,120,244,221,187,119, 98, 77, 37,170,126,247,100,171,
+ 24,246,251, 19,207,231, 30, 49,178, 14,123, 16,113,235, 13, 10, 97,251,241, 3,255,248,159,255,197,126, 54,252,252,243, 13,219,
+143, 23, 87,129,198,192, 89, 34, 16,101, 89,111,216,222, 94,177,221,110,142, 30, 12,123,210,178, 84, 87,148,151,130, 90,151, 14,
+138,168,225,173,231, 57, 49, 34,110,208,136, 78, 28, 35, 61, 36, 20, 36, 97, 28, 19, 13,200,149,146,254, 33,168,181,160, 44,117,
+ 84,181,166, 99, 23, 62,179,108, 99, 52, 93, 11, 97, 91, 23, 48, 49, 68,206,254,128, 46,203,218,177,171,246,169,226, 79, 69,102,
+ 2, 71, 44, 42,218,220, 53,118, 53,104, 22,145,121,216,147, 97, 90,243,197,152,209, 15, 97,183, 61,161, 87,118,173, 53, 28,231,
+137,179,163, 89, 15,156,167,223,195,158, 57,175,158,149,172,131,150,226, 99, 32,139,226,109, 82, 4,107,216,165,242, 32,154, 41,
+ 43,157,190,214,175,179,126, 17, 55,125,206,252, 22,209, 47, 10,231,209,225,206, 73,119,218, 29, 59,170,218, 59, 45,149,152, 0,
+ 36,159, 96, 38,121, 1, 23,190,244, 72,221,116,143,177,246,196,167,145,229,157, 99,106,179, 1,239,193, 20, 51,154,157,178, 31,
+ 64,246,109, 82,218,176, 74, 77, 73,102, 70,211, 62, 29, 87, 1,217, 5,240, 97, 19, 94, 52, 69, 61, 17,233,153,105, 89,185,254,
+ 97,223,255,113,164,228,169,105,143, 74,189,238,149,109,250,249,228, 42, 64,163, 97,133, 34, 46,253,185,154,199,233, 57,153,224,
+ 72, 74,164, 46, 76,211, 81,152,230,227, 23, 19, 25,127, 41,101, 71, 54,127, 22,174, 89,252,179, 91, 33,133,118, 72, 27,159, 98,
+160, 76,117, 36,103,229,139,190,135, 48,229,127, 19,200, 37, 67, 9, 47, 84,193, 16, 7, 39,103,193,139, 21,239, 62,115,202,210,
+199,230,169,154, 87,111, 32,114,208,238,100, 66,185, 36, 49,186,224,138,134,150, 32,138, 44, 73,188,238, 20, 73,106,225,246,233,
+125,162,141, 84,193, 47,246,203,217, 18,154, 34,102, 78,199, 15,127, 10,118,250,164,233,179,152,158,128,191, 9,198,153, 62,135,
+106,190, 75,127,223,241,247,175, 59,254,254,245,192,243,233, 59,219,110,221,211, 76,104, 51,212,194,177,235,166,176,209,186,208,
+210, 15,117, 30, 42,135, 32, 41, 90,144, 46,107, 41,113, 45, 16,191,230, 75,112,143,230,174,156, 8,203,178,198, 61, 26,176,155,
+ 20,197,114,224,192, 65, 6, 17,195,194,140,109, 89,134, 16, 25, 30, 87,206,196, 16,179,128,129,201, 39,161, 37,245, 48, 37, 34,
+ 23, 77,115,164, 4,142,181,147,223,251,101, 45,158,143, 1, 96,169, 91, 20,109,190,203,190,189,188, 64,196,109,162,173,157, 61,
+232,232,148, 19, 71,172,164, 13, 22,186,165,224, 88, 92,110, 64, 52, 35,240,208,161, 49, 9,141,224,177, 30,119,142, 30, 23,157,
+223,223, 82, 11,146,187,231,130,111,197,127, 1, 99,173, 92,242, 48,148, 43, 5, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
};
-
diff --git a/source/blender/editors/gpencil/SConscript b/source/blender/editors/gpencil/SConscript
index af3cbdb901d..06d78d1e7e0 100644
--- a/source/blender/editors/gpencil/SConscript
+++ b/source/blender/editors/gpencil/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #/intern/guardedalloc ../../gpu'
+incs += ' ../../gpu'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
env.BlenderLib ( 'bf_editors_gpencil', sources, Split(incs), [], libtype=['core'], priority=[45] )
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index dcd57efa926..6651c7745bb 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -37,7 +37,7 @@
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "DNA_gpencil_types.h"
@@ -326,7 +326,7 @@ static void gp_draw_stroke (bGPDspoint *points, int totpoints, short thickness,
/* calculate gradient and normal - 'angle'=(ny/nx) */
m1[1]= s1[1] - s0[1];
m1[0]= s1[0] - s0[0];
- Normalize2(m1);
+ normalize_v2(m1);
m2[1]= -m1[0];
m2[0]= m1[1];
@@ -374,7 +374,7 @@ static void gp_draw_stroke (bGPDspoint *points, int totpoints, short thickness,
/* calculate gradient of bisector (as average of normals) */
mb[0]= (pm[0] + m2[0]) / 2;
mb[1]= (pm[1] + m2[1]) / 2;
- Normalize2(mb);
+ normalize_v2(mb);
/* calculate gradient to apply
* - as basis, use just pthick * bisector gradient
@@ -382,7 +382,7 @@ static void gp_draw_stroke (bGPDspoint *points, int totpoints, short thickness,
*/
mt[0]= mb[0] * pthick;
mt[1]= mb[1] * pthick;
- athick= Vec2Length(mt);
+ athick= len_v2(mt);
dfac= pthick - (athick * 2);
if ( ((athick * 2) < pthick) && (IS_EQ(athick, pthick)==0) )
{
@@ -442,7 +442,7 @@ static void gp_draw_stroke (bGPDspoint *points, int totpoints, short thickness,
}
/* store stroke's 'natural' normal for next stroke to use */
- Vec2Copyf(pm, m2);
+ copy_v2_v2(pm, m2);
}
glEnd();
@@ -765,31 +765,4 @@ void draw_gpencil_3dview (bContext *C, short only3d)
draw_gpencil_3dview_ext(scene, ar, only3d);
}
-/* draw grease-pencil sketches to opengl render window assuming that matrices are already set correctly */
-// XXX porting note, ogl render will probably be a window with one 3d region
-void draw_gpencil_oglrender (bContext *C)
-{
- ScrArea *sa= CTX_wm_area(C);
- View3D *v3d= (View3D *)sa->spacedata.first;
- ARegion *ar= CTX_wm_region(C);
- Scene *scene= CTX_data_scene(C);
- bGPdata *gpd;
-
- /* assume gpencil data comes from v3d */
- if (v3d == NULL) return;
- gpd= gpencil_data_get_active(C);
- if (gpd == NULL) return;
-
- /* pass 1: draw 3d-strokes ------------ > */
- gp_draw_data(gpd, 0, 0, ar->winx, ar->winy, CFRA, (GP_DRAWDATA_NOSTATUS|GP_DRAWDATA_ONLY3D));
-
- /* pass 2: draw 2d-strokes ------------ > */
- /* adjust view matrices */
- wmOrtho2(-0.375f, (float)(ar->winx)-0.375f, -0.375f, (float)(ar->winy)-0.375f); // XXX may not be correct anymore
- glLoadIdentity();
-
- /* draw it! */
- gp_draw_data(gpd, 0, 0, ar->winx, ar->winy, CFRA, GP_DRAWDATA_NOSTATUS);
-}
-
/* ************************************************** */
diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c
index beb4ed06810..88ceba88827 100644
--- a/source/blender/editors/gpencil/editaction_gpencil.c
+++ b/source/blender/editors/gpencil/editaction_gpencil.c
@@ -33,7 +33,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "DNA_listBase.h"
diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c
index b25de4d5f1d..4da5ec02ddc 100644
--- a/source/blender/editors/gpencil/gpencil_buttons.c
+++ b/source/blender/editors/gpencil/gpencil_buttons.c
@@ -32,7 +32,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "DNA_gpencil_types.h"
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 6b76c48e1bf..c2b9a1a4bb9 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -37,7 +37,7 @@
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "DNA_listBase.h"
@@ -45,6 +45,7 @@
#include "DNA_curve_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_object_types.h"
+#include "DNA_node_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
@@ -113,9 +114,18 @@ bGPdata **gpencil_data_get_pointers (bContext *C, PointerRNA *ptr)
case SPACE_NODE: /* Nodes Editor */
{
- //SpaceNode *snode= (SpaceNode *)CTX_wm_space_data(C);
+ SpaceNode *snode= (SpaceNode *)CTX_wm_space_data(C);
/* return the GP data for the active node block/node */
+ if (snode && snode->nodetree) {
+ /* for now, as long as there's an active node tree, default to using that in the Nodes Editor */
+ if (ptr) RNA_id_pointer_create(&snode->nodetree->id, ptr);
+ return &snode->nodetree->gpd;
+ }
+ else {
+ /* even when there is no node-tree, don't allow this to flow to scene */
+ return NULL;
+ }
}
break;
@@ -368,7 +378,7 @@ static void gp_strokepoint_convertcoords (bContext *C, bGPDstroke *gps, bGPDspoi
if (gps->flag & GP_STROKE_3DSPACE) {
/* directly use 3d-coordinates */
- VecCopyf(p3d, &pt->x);
+ copy_v3_v3(p3d, &pt->x);
}
else {
float *fp= give_cursor(scene, v3d);
@@ -393,7 +403,7 @@ static void gp_strokepoint_convertcoords (bContext *C, bGPDstroke *gps, bGPDspoi
*/
project_short_noclip(ar, fp, mval);
window_to_3d(ar, dvec, mval[0]-mx, mval[1]-my);
- VecSubf(p3d, fp, dvec);
+ sub_v3_v3v3(p3d, fp, dvec);
}
}
@@ -424,7 +434,7 @@ static void gp_stroke_to_path (bContext *C, bGPDlayer *gpl, bGPDstroke *gps, Cur
/* get coordinates to add at */
gp_strokepoint_convertcoords(C, gps, pt, p3d);
- VecCopyf(bp->vec, p3d);
+ copy_v3_v3(bp->vec, p3d);
/* set settings */
bp->f1= SELECT;
@@ -460,9 +470,9 @@ static void gp_stroke_to_bezier (bContext *C, bGPDlayer *gpl, bGPDstroke *gps, C
gp_strokepoint_convertcoords(C, gps, pt, p3d);
/* TODO: maybe in future the handles shouldn't be in same place */
- VecCopyf(bezt->vec[0], p3d);
- VecCopyf(bezt->vec[1], p3d);
- VecCopyf(bezt->vec[2], p3d);
+ copy_v3_v3(bezt->vec[0], p3d);
+ copy_v3_v3(bezt->vec[1], p3d);
+ copy_v3_v3(bezt->vec[2], p3d);
/* set settings */
bezt->h1= bezt->h2= HD_FREE;
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 92ae2400666..4229c66353c 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -34,7 +34,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_gpencil.h"
#include "BKE_context.h"
@@ -169,11 +169,11 @@ static void gp_get_3d_reference (tGPsdata *p, float *vec)
/* active Object
* - use relative distance of 3D-cursor from object center
*/
- VecSubf(vec, fp, ob->loc);
+ sub_v3_v3v3(vec, fp, ob->loc);
}
else {
/* use 3D-cursor */
- VecCopyf(vec, fp);
+ copy_v3_v3(vec, fp);
}
}
@@ -228,7 +228,7 @@ static void gp_stroke_convertcoords (tGPsdata *p, short mval[], float out[])
/* method taken from editview.c - mouse_cursor() */
project_short_noclip(p->ar, rvec, mval);
window_to_3d_delta(p->ar, dvec, mval[0]-mx, mval[1]-my);
- VecSubf(out, rvec, dvec);
+ sub_v3_v3v3(out, rvec, dvec);
}
/* 2d - on 'canvas' (assume that p->v2d is set) */
@@ -808,16 +808,17 @@ static tGPsdata *gp_session_initpaint (bContext *C)
#endif
}
break;
-#if 0 // XXX these other spaces will come over time...
+
case SPACE_NODE:
{
- SpaceNode *snode= curarea->spacedata.first;
+ //SpaceNode *snode= curarea->spacedata.first;
/* set current area */
p->sa= curarea;
p->ar= ar;
p->v2d= &ar->v2d;
+#if 0 // XXX will this sort of antiquated stuff be restored?
/* check that gpencil data is allowed to be drawn */
if ((snode->flag & SNODE_DISPGP)==0) {
p->status= GP_STATUS_ERROR;
@@ -825,8 +826,10 @@ static tGPsdata *gp_session_initpaint (bContext *C)
printf("Error: In active view, Grease Pencil not shown \n");
return;
}
+#endif
}
break;
+#if 0 // XXX these other spaces will come over time...
case SPACE_SEQ:
{
SpaceSeq *sseq= curarea->spacedata.first;
@@ -983,12 +986,13 @@ static void gp_paint_initstroke (tGPsdata *p, short paintmode)
p->gpd->sbuffer_sflag |= GP_STROKE_3DSPACE;
}
break;
-#if 0 // XXX other spacetypes to be restored in due course
+
case SPACE_NODE:
{
p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE;
}
break;
+#if 0 // XXX other spacetypes to be restored in due course
case SPACE_SEQ:
{
SpaceSeq *sseq= (SpaceSeq *)p->sa->spacedata.first;
@@ -1298,12 +1302,15 @@ static int gpencil_draw_invoke (bContext *C, wmOperator *op, wmEvent *event)
tGPsdata *p = NULL;
wmWindow *win= CTX_wm_window(C);
- //printf("GPencil - Starting Drawing \n");
+ if (G.f & G_DEBUG)
+ printf("GPencil - Starting Drawing \n");
/* try to initialise context data needed while drawing */
if (!gpencil_draw_init(C, op)) {
- if (op->customdata) MEM_freeN(op->customdata);
- printf("\tGP - no valid data \n");
+ if (op->customdata)
+ MEM_freeN(op->customdata);
+ if (G.f & G_DEBUG)
+ printf("\tGP - no valid data \n");
return OPERATOR_CANCELLED;
}
else
diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h
index f90d28cd175..59efa01cc35 100644
--- a/source/blender/editors/include/ED_anim_api.h
+++ b/source/blender/editors/include/ED_anim_api.h
@@ -140,6 +140,7 @@ typedef enum eAnim_ChannelType {
ANIMTYPE_DSCUR,
ANIMTYPE_DSSKEY,
ANIMTYPE_DSWOR,
+ ANIMTYPE_DSNTREE,
ANIMTYPE_DSPART,
ANIMTYPE_DSMBALL,
ANIMTYPE_DSARM,
@@ -202,6 +203,7 @@ typedef enum eAnimFilter_Flags {
#define EXPANDED_SCEC(sce) ((sce->flag & SCE_DS_COLLAPSED)==0)
/* 'Sub-Scene' channels (flags stored in Data block) */
#define FILTER_WOR_SCED(wo) ((wo->flag & WO_DS_EXPAND))
+#define FILTER_NTREE_SCED(ntree) ((ntree->flag & NTREE_DS_EXPAND))
/* 'Object' channels */
#define SEL_OBJC(base) ((base->flag & SELECT))
#define EXPANDED_OBJC(ob) ((ob->nlaflag & OB_ADS_COLLAPSED)==0)
@@ -309,7 +311,7 @@ typedef enum eAnimChannels_SetFlag {
ACHANNEL_SETFLAG_TOGGLE
} eAnimChannels_SetFlag;
-/* types of settings for AnimChanels */
+/* types of settings for AnimChannels */
typedef enum eAnimChannel_Settings {
ACHANNEL_SETTING_SELECT = 0,
ACHANNEL_SETTING_PROTECT, // warning: for drawing UI's, need to check if this is off (maybe inverse this later)
@@ -416,7 +418,7 @@ short ANIM_headerUI_standard_buttons(const struct bContext *C, struct bDopeSheet
/* F-MODIFIER TOOLS */
/* draw a given F-Modifier for some layout/UI-Block */
-void ANIM_uiTemplate_fmodifier_draw(struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm);
+void ANIM_uiTemplate_fmodifier_draw(const struct bContext *C, struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm);
/* ************************************************* */
/* ASSORTED TOOLS */
@@ -479,11 +481,6 @@ void ED_nla_postop_refresh(bAnimContext *ac);
/* --------- anim_deps.c, animation updates -------- */
- /* generic update flush, does tagged objects only, reads from Context screen (layers) and scene */
-void ED_anim_dag_flush_update(const struct bContext *C);
- /* only flush object */
-void ED_anim_object_flush_update(const struct bContext *C, struct Object *ob);
-
/* pose <-> action syncing */
void ANIM_action_to_pose_sync(struct Object *ob);
void ANIM_pose_to_action_sync(struct Object *ob, struct ScrArea *sa);
diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h
index 1836729e419..74f1f7e3b83 100644
--- a/source/blender/editors/include/ED_armature.h
+++ b/source/blender/editors/include/ED_armature.h
@@ -65,17 +65,16 @@ typedef struct EditBone
their parents. Therefore any rotations specified during the
animation are automatically relative to the bones' rest positions*/
int flag;
-
- int parNr; /* Used for retrieving values from the menu system */
+ int layer;
float dist, weight;
float xwidth, length, zwidth; /* put them in order! transform uses this as scale */
float ease1, ease2;
float rad_head, rad_tail;
- short layer, segments;
float oldlength; /* for envelope scaling */
-
+
+ short segments;
} EditBone;
#define BONESEL_ROOT 0x10000000
@@ -107,7 +106,7 @@ void ED_armature_deselectall(struct Object *obedit, int toggle, int doundo);
int ED_do_pose_selectbuffer(struct Scene *scene, struct Base *base, unsigned int *buffer,
short hits, short extend);
-void mouse_armature(struct bContext *C, short mval[2], int extend);
+int mouse_armature(struct bContext *C, short mval[2], int extend);
int join_armature_exec(struct bContext *C, struct wmOperator *op);
struct Bone *get_indexed_bone (struct Object *ob, int index);
float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]);
@@ -116,7 +115,8 @@ void ED_armature_sync_selection(struct ListBase *edbo);
void ED_armature_validate_active(struct bArmature *arm);
void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d);
-EditBone *addEditBone(struct bArmature *arm, char *name); /* used by COLLADA importer */
+struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name);
+void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *exBone);
void transform_armature_mirror_update(struct Object *obedit);
void clear_armature(struct Scene *scene, struct Object *ob, char mode);
@@ -165,7 +165,8 @@ void BDR_drawSketch(const struct bContext *vc);
int BDR_drawSketchNames(struct ViewContext *vc);
/* meshlaplacian.c */
-void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd,
+void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm,
+ struct MeshDeformModifierData *mmd,
float *vertexcos, int totvert, float cagemat[][4]);
#endif /* ED_ARMATURE_H */
diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h
index fea684971b2..66a481ca5ac 100644
--- a/source/blender/editors/include/ED_curve.h
+++ b/source/blender/editors/include/ED_curve.h
@@ -50,7 +50,7 @@ void load_editNurb (struct Object *obedit);
void make_editNurb (struct Object *obedit);
void free_editNurb (struct Object *obedit);
-void mouse_nurb (struct bContext *C, short mval[2], int extend);
+int mouse_nurb (struct bContext *C, short mval[2], int extend);
struct Nurb *add_nurbs_primitive(struct bContext *C, int type, int newname);
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index 31c8e93c683..ef5169465ab 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -73,7 +73,6 @@ void draw_gpencil_2dimage(struct bContext *C, struct ImBuf *ibuf);
void draw_gpencil_2dview(struct bContext *C, short onlyv2d);
void draw_gpencil_3dview(struct bContext *C, short only3d);
void draw_gpencil_3dview_ext(struct Scene *scene, struct ARegion *ar, short only3d);
-void draw_gpencil_oglrender(struct bContext *C);
void gpencil_panel_standard(const struct bContext *C, struct Panel *pa);
diff --git a/source/blender/editors/include/ED_keyframes_draw.h b/source/blender/editors/include/ED_keyframes_draw.h
index 699502eb9eb..8002918b870 100644
--- a/source/blender/editors/include/ED_keyframes_draw.h
+++ b/source/blender/editors/include/ED_keyframes_draw.h
@@ -104,27 +104,43 @@ void draw_keyframe_shape(float x, float y, float xscale, float hsize, short sel,
/* ******************************* Methods ****************************** */
-/* Channel Drawing */
+/* Channel Drawing ------------------ */
+/* F-Curve */
void draw_fcurve_channel(struct View2D *v2d, struct AnimData *adt, struct FCurve *fcu, float ypos);
+/* Action Group Summary */
void draw_agroup_channel(struct View2D *v2d, struct AnimData *adt, struct bActionGroup *agrp, float ypos);
+/* Action Summary */
void draw_action_channel(struct View2D *v2d, struct AnimData *adt, struct bAction *act, float ypos);
+/* Object Summary */
void draw_object_channel(struct View2D *v2d, struct bDopeSheet *ads, struct Object *ob, float ypos);
+/* Scene Summary */
void draw_scene_channel(struct View2D *v2d, struct bDopeSheet *ads, struct Scene *sce, float ypos);
+/* DopeSheet Summary */
void draw_summary_channel(struct View2D *v2d, struct bAnimContext *ac, float ypos);
+/* Grease Pencil Layer */
+// XXX not restored
void draw_gpl_channel(struct View2D *v2d, struct bDopeSheet *ads, struct bGPDlayer *gpl, float ypos);
-/* Keydata Generation */
+/* Keydata Generation --------------- */
+/* F-Curve */
void fcurve_to_keylist(struct AnimData *adt, struct FCurve *fcu, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
+/* Action Group */
void agroup_to_keylist(struct AnimData *adt, struct bActionGroup *agrp, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
+/* Action */
void action_to_keylist(struct AnimData *adt, struct bAction *act, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
+/* Object */
void ob_to_keylist(struct bDopeSheet *ads, struct Object *ob, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
+/* Scene */
void scene_to_keylist(struct bDopeSheet *ads, struct Scene *sce, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
+/* DopeSheet Summary */
void summary_to_keylist(struct bAnimContext *ac, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
+/* Grease Pencil Layer */
+// XXX not restored
void gpl_to_keylist(struct bDopeSheet *ads, struct bGPDlayer *gpl, struct DLRBT_Tree *keys, struct DLRBT_Tree *blocks);
-/* Keyframe Finding */
-ActKeyColumn *cfra_find_actkeycolumn(ActKeyColumn *ak, float cframe);
-ActKeyColumn *cfra_find_nearest_next_ak(ActKeyColumn *ak, float cframe, short next);
+/* ActKeyColumn API ---------------- */
+/* Comparator callback used for ActKeyColumns and cframe float-value pointer */
+short compare_ak_cfraPtr(void *node, void *data);
#endif /* ED_KEYFRAMES_DRAW_H */
diff --git a/source/blender/editors/include/ED_mball.h b/source/blender/editors/include/ED_mball.h
index 6708a73e088..b21bcb0cc09 100644
--- a/source/blender/editors/include/ED_mball.h
+++ b/source/blender/editors/include/ED_mball.h
@@ -35,7 +35,7 @@ void ED_keymap_metaball(struct wmKeyConfig *keyconf);
struct MetaElem *add_metaball_primitive(struct bContext *C, int type, int newname);
-void mouse_mball(struct bContext *C, short mval[2], int extend);
+int mouse_mball(struct bContext *C, short mval[2], int extend);
void free_editMball(struct Object *obedit);
void make_editMball(struct Object *obedit);
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index fa47426c70a..ba26104a555 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -83,6 +83,7 @@ int mesh_get_x_mirror_vert(struct Object *ob, int index);
int *mesh_get_x_mirror_faces(struct Object *ob, struct EditMesh *em);
int join_mesh_exec(struct bContext *C, struct wmOperator *op);
+int join_mesh_shapes_exec(struct bContext *C, struct wmOperator *op);
/* mesh_ops.c */
void ED_operatortypes_mesh(void);
@@ -149,7 +150,7 @@ void EM_free_data_layer(struct EditMesh *em, struct CustomData *data, int type)
extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs;
void EM_cache_x_mirror_vert(struct Object *ob, struct EditMesh *em);
-void mouse_mesh(struct bContext *C, short mval[2], short extend);
+int mouse_mesh(struct bContext *C, short mval[2], short extend);
int EM_check_backbuf(unsigned int index);
int EM_mask_init_backbuf_border(struct ViewContext *vc, short mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax);
void EM_free_backbuf(void);
diff --git a/source/blender/editors/include/ED_node.h b/source/blender/editors/include/ED_node.h
index 667a4ecb144..8922a38e875 100644
--- a/source/blender/editors/include/ED_node.h
+++ b/source/blender/editors/include/ED_node.h
@@ -44,7 +44,10 @@ void ED_node_changed_update(struct ID *id, struct bNode *node);
/* node_edit.c */
void ED_node_shader_default(struct Material *ma);
void ED_node_composit_default(struct Scene *sce);
-void ED_node_texture_default(struct Tex *tex);;
+void ED_node_texture_default(struct Tex *tex);
+
+/* node ops.c */
+void ED_operatormacros_node(void);
#endif /* ED_NODE_H */
diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h
index b2d92869a2f..69b478c6dfa 100644
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@ -36,6 +36,7 @@ struct bContext;
struct Base;
struct View3D;
struct bConstraint;
+struct bPoseChannel;
struct KeyBlock;
struct Lattice;
struct Mesh;
@@ -91,10 +92,8 @@ int object_is_libdata(struct Object *ob);
int object_data_is_libdata(struct Object *ob);
/* constraints */
-struct bConstraint *add_new_constraint(short type);
-void add_constraint_to_object(struct bConstraint *con, struct Object *ob);
-
struct ListBase *get_active_constraints(struct Object *ob);
+struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r);
struct bConstraint *get_active_constraint(struct Object *ob);
void object_test_constraints(struct Object *ob);
@@ -105,7 +104,7 @@ void ED_object_constraint_update(struct Object *ob);
void ED_object_constraint_dependency_update(struct Scene *scene, struct Object *ob);
/* object_lattice.c */
-void mouse_lattice(struct bContext *C, short mval[2], int extend);
+int mouse_lattice(struct bContext *C, short mval[2], int extend);
void undo_push_lattice(struct bContext *C, char *name);
/* object_shapekey.c */
@@ -117,12 +116,17 @@ void key_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb)
void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb);
/* object_modifier.c */
-int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type);
+enum {
+ MODIFIER_APPLY_DATA=1,
+ MODIFIER_APPLY_SHAPE,
+} eModifier_Apply_Mode;
+
+struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type);
int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
int ED_object_modifier_move_down(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
int ED_object_modifier_move_up(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
int ED_object_modifier_convert(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
-int ED_object_modifier_apply(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_apply(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md, int mode);
int ED_object_modifier_copy(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
#endif /* ED_OBJECT_H */
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 18c86306e44..fb708e4d1c7 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -152,6 +152,7 @@ int ED_operator_posemode(struct bContext *C);
#define ED_KEYMAP_ANIMATION 8
#define ED_KEYMAP_FRAMES 16
#define ED_KEYMAP_GPENCIL 32
+#define ED_KEYMAP_HEADER 64
#endif /* ED_SCREEN_H */
diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h
index dcdc9e417e4..0deda5a2a84 100644
--- a/source/blender/editors/include/ED_screen_types.h
+++ b/source/blender/editors/include/ED_screen_types.h
@@ -32,8 +32,9 @@
/* for animplayer */
typedef struct ScreenAnimData {
ARegion *ar; /* do not read from this, only for comparing if region exists */
- int redraws;
- int flag; /* flags for playback */
+ short redraws;
+ short flag; /* flags for playback */
+ int sfra; /* frame that playback was started from */
} ScreenAnimData;
/* for animplayer */
@@ -49,7 +50,7 @@ enum {
};
-
+/* for editing areas/regions */
typedef struct AZone {
struct AZone *next, *prev;
ARegion *ar;
diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h
index 0f17599daae..065867a3bb3 100644
--- a/source/blender/editors/include/ED_transform.h
+++ b/source/blender/editors/include/ED_transform.h
@@ -135,7 +135,7 @@ void BIF_selectOrientation(void);
/* to be able to add operator properties to other operators */
void Properties_Proportional(struct wmOperatorType *ot);
-void Properties_Snapping(struct wmOperatorType *ot, short align);
+void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align);
void Properties_Constraints(struct wmOperatorType *ot);
/* view3d manipulators */
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 2ec9ddf6c52..ecd2d69b7fb 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -104,7 +104,8 @@ void mesh_foreachScreenFace(struct ViewContext *vc, void (*func)(void *userData,
void nurbs_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct Nurb *nu, struct BPoint *bp, struct BezTriple *bezt, int beztindex, int x, int y), void *userData);
void lattice_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct BPoint *bp, int x, int y), void *userData);
-int view3d_test_clipping(struct RegionView3D *rv3d, float *vec);
+void ED_view3d_local_clipping(struct RegionView3D *rv3d, float mat[][4]);
+int view3d_test_clipping(struct RegionView3D *rv3d, float *vec, int local);
void view3d_align_axis_to_vector(struct View3D *v3d, struct RegionView3D *rv3d, int axisidx, float vec[3]);
void drawcircball(int mode, float *cent, float rad, float tmat[][4]);
@@ -143,5 +144,7 @@ int ED_view3d_context_activate(struct bContext *C);
void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar,
int winx, int winy, float viewmat[][4], float winmat[][4]);
+void view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]);
+
#endif /* ED_VIEW3D_H */
diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h
index ee1a23f242b..b9d5e98b88e 100644
--- a/source/blender/editors/include/UI_icons.h
+++ b/source/blender/editors/include/UI_icons.h
@@ -54,8 +54,8 @@ DEF_ICON(ICON_BLANK005)
DEF_ICON(ICON_GO_LEFT)
DEF_ICON(ICON_PLUG)
DEF_ICON(ICON_UI)
-DEF_ICON(ICON_TEXNODE)
-DEF_ICON(ICON_TEXNODE_SEL)
+DEF_ICON(ICON_NODE)
+DEF_ICON(ICON_NODE_SEL)
/* ui */
DEF_ICON(ICON_FULLSCREEN)
@@ -157,7 +157,7 @@ DEF_ICON(ICON_ACTION)
DEF_ICON(ICON_NLA)
DEF_ICON(ICON_SCRIPTWIN)
DEF_ICON(ICON_TIME)
-DEF_ICON(ICON_NODE)
+DEF_ICON(ICON_NODETREE)
DEF_ICON(ICON_LOGIC)
DEF_ICON(ICON_CONSOLE)
DEF_ICON(ICON_PREFERENCES)
@@ -394,18 +394,18 @@ DEF_ICON(ICON_BLANK654)
DEF_ICON(ICON_BLANK655)
/* EMPTY */
-DEF_ICON(ICON_BLANK660)
-DEF_ICON(ICON_BLANK661)
-DEF_ICON(ICON_BLANK662)
-DEF_ICON(ICON_BLANK663)
-DEF_ICON(ICON_BLANK664)
-DEF_ICON(ICON_BLANK665)
-DEF_ICON(ICON_BLANK666)
-DEF_ICON(ICON_BLANK667)
-DEF_ICON(ICON_BLANK668)
-DEF_ICON(ICON_BLANK669)
-DEF_ICON(ICON_BLANK670)
-DEF_ICON(ICON_BLANK671)
+DEF_ICON(ICON_FORCE_FORCE)
+DEF_ICON(ICON_FORCE_WIND)
+DEF_ICON(ICON_FORCE_VORTEX)
+DEF_ICON(ICON_FORCE_MAGNETIC)
+DEF_ICON(ICON_FORCE_HARMONIC)
+DEF_ICON(ICON_FORCE_CHARGE)
+DEF_ICON(ICON_FORCE_LENNARDJONES)
+DEF_ICON(ICON_FORCE_TEXTURE)
+DEF_ICON(ICON_FORCE_CURVE)
+DEF_ICON(ICON_FORCE_BOID)
+DEF_ICON(ICON_FORCE_TURBULENCE)
+DEF_ICON(ICON_FORCE_DRAG)
DEF_ICON(ICON_BLANK672)
DEF_ICON(ICON_BLANK673)
DEF_ICON(ICON_BLANK674)
@@ -641,19 +641,19 @@ DEF_ICON(ICON_PROP_OFF)
DEF_ICON(ICON_PROP_ON)
DEF_ICON(ICON_PROP_CON)
DEF_ICON(ICON_BLANK212)
-DEF_ICON(ICON_BLANK213)
-DEF_ICON(ICON_BLANK214)
-DEF_ICON(ICON_BLANK214b)
+DEF_ICON(ICON_PARTICLE_POINT)
+DEF_ICON(ICON_PARTICLE_TIP)
+DEF_ICON(ICON_PARTICLE_PATH)
/* EDITING */
DEF_ICON(ICON_MAN_TRANS)
DEF_ICON(ICON_MAN_ROT)
DEF_ICON(ICON_MAN_SCALE)
DEF_ICON(ICON_MANIPUL)
-DEF_ICON(ICON_BLANK215)
-DEF_ICON(ICON_SNAP_GEAR)
-DEF_ICON(ICON_SNAP_GEO)
+DEF_ICON(ICON_SNAP_OFF)
+DEF_ICON(ICON_SNAP_ON)
DEF_ICON(ICON_SNAP_NORMAL)
+DEF_ICON(ICON_SNAP_INCREMENT)
DEF_ICON(ICON_SNAP_VERTEX)
DEF_ICON(ICON_SNAP_EDGE)
DEF_ICON(ICON_SNAP_FACE)
@@ -709,7 +709,7 @@ DEF_ICON(ICON_SMOOTH)
DEF_ICON(ICON_POTATO)
DEF_ICON(ICON_BLANK248)
DEF_ICON(ICON_ORTHO)
-DEF_ICON(ICON_BLANK249)
+DEF_ICON(ICON_ORTHO_OFF)
DEF_ICON(ICON_CAMERA)
DEF_ICON(ICON_LOCKVIEW_OFF)
DEF_ICON(ICON_LOCKVIEW_ON)
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 78992769725..608954eeed8 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -214,6 +214,7 @@ typedef struct uiLayout uiLayout;
#define LISTBOX (43<<9)
#define LISTROW (44<<9)
#define HOTKEYEVT (45<<9)
+#define BUT_IMAGE (46<<9)
#define BUTTYPE (63<<9)
@@ -271,6 +272,8 @@ void uiPupBlock(struct bContext *C, uiBlockCreateFunc func, void *arg);
void uiPupBlockO(struct bContext *C, uiBlockCreateFunc func, void *arg, char *opname, int opcontext);
void uiPupBlockOperator(struct bContext *C, uiBlockCreateFunc func, struct wmOperator *op, int opcontext);
+void uiPupBlockClose(struct bContext *C, uiBlock *block);
+
/* Blocks
*
* Functions for creating, drawing and freeing blocks. A Block is a
@@ -303,10 +306,20 @@ void uiBlockClearButLock(uiBlock *block);
void uiBlockBeginAlign(uiBlock *block);
void uiBlockEndAlign(uiBlock *block);
+/* block bounds/position calculation */
+enum {
+ UI_BLOCK_BOUNDS=1,
+ UI_BLOCK_BOUNDS_TEXT,
+ UI_BLOCK_BOUNDS_POPUP_MOUSE,
+ UI_BLOCK_BOUNDS_POPUP_MENU,
+ UI_BLOCK_BOUNDS_POPUP_CENTER,
+} eBlockBoundsCalc;
+
void uiBoundsBlock(struct uiBlock *block, int addval);
void uiTextBoundsBlock(uiBlock *block, int addval);
void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my);
void uiMenuPopupBoundsBlock(uiBlock *block, int addvall, int mx, int my);
+void uiCenteredBoundsBlock(uiBlock *block, int addval);
int uiBlocksGetYMin (struct ListBase *lb);
@@ -532,7 +545,8 @@ void uiEndPanel(uiBlock *block, int width, int height);
void UI_add_region_handlers(struct ListBase *handlers);
void UI_add_area_handlers(struct ListBase *handlers);
-void UI_add_popup_handlers(struct bContext *C, struct ListBase *handlers, uiPopupBlockHandle *menu);
+void UI_add_popup_handlers(struct bContext *C, struct ListBase *handlers, uiPopupBlockHandle *popup);
+void UI_remove_popup_handlers(struct ListBase *handlers, uiPopupBlockHandle *popup);
/* Module
*
@@ -560,6 +574,7 @@ void UI_exit(void);
#define UI_LAYOUT_PANEL 0
#define UI_LAYOUT_HEADER 1
#define UI_LAYOUT_MENU 2
+#define UI_LAYOUT_TOOLBAR 3
#define UI_UNIT_X 20
#define UI_UNIT_Y 20
@@ -585,6 +600,7 @@ uiBlock *uiLayoutGetBlock(uiLayout *layout);
void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA *ptr);
+char *uiLayoutIntrospect(uiLayout *layout); // XXX - testing
void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext);
void uiLayoutSetActive(uiLayout *layout, int active);
@@ -632,13 +648,13 @@ void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struc
void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels);
void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname);
-void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname);
+void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname,
+ PointerRNA *used_ptr, char *used_propname, int active_layer);
void uiTemplateImage(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *userptr, int compact);
void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image *ima, struct ImageUser *iuser);
void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C);
void uiTemplateOperatorSearch(uiLayout *layout);
void uiTemplateHeader3D(uiLayout *layout, struct bContext *C);
-void uiTemplate_view3d_select_faceselmenu(uiLayout *layout, struct bContext *C);
void uiTemplateTextureImage(uiLayout *layout, struct bContext *C, struct Tex *tex);
void uiTemplateList(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *activeptr, char *activeprop, int rows, int type);
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index fcc41e4f533..23ad50d448b 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -38,7 +38,7 @@
#include "DNA_texture_types.h"
#include "DNA_userdef_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
@@ -313,7 +313,30 @@ void ui_bounds_block(uiBlock *block)
block->safety.ymax= block->maxy+xof;
}
-static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int menu)
+static void ui_centered_bounds_block(const bContext *C, uiBlock *block)
+{
+ wmWindow *window= CTX_wm_window(C);
+ int xmax, ymax;
+ int startx, starty;
+ int width, height;
+
+ wm_window_get_size(window, &xmax, &ymax);
+
+ ui_bounds_block(block);
+
+ width= block->maxx - block->minx;
+ height= block->maxy - block->miny;
+
+ startx = (xmax * 0.5f) - (width * 0.5f);
+ starty = (ymax * 0.5f) - (height * 0.5f);
+
+ ui_block_translate(block, startx - block->minx, starty - block->miny);
+
+ /* now recompute bounds and safety */
+ ui_bounds_block(block);
+
+}
+static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int bounds_calc)
{
wmWindow *window= CTX_wm_window(C);
int startx, starty, endx, endy, width, height;
@@ -323,13 +346,14 @@ static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int menu)
/* compute mouse position with user defined offset */
ui_bounds_block(block);
- mx= window->eventstate->x + block->minx + block->mx;
- my= window->eventstate->y + block->miny + block->my;
-
+
wm_window_get_size(window, &xmax, &ymax);
+ mx= window->eventstate->x + block->minx + block->mx;
+ my= window->eventstate->y + block->miny + block->my;
+
/* first we ensure wide enough text bounds */
- if(menu) {
+ if(bounds_calc==UI_BLOCK_BOUNDS_POPUP_MENU) {
if(block->flag & UI_BLOCK_LOOP) {
block->bounds= 50;
ui_text_bounds_block(block, block->minx);
@@ -377,21 +401,21 @@ void uiBoundsBlock(uiBlock *block, int addval)
return;
block->bounds= addval;
- block->dobounds= 1;
+ block->dobounds= UI_BLOCK_BOUNDS;
}
/* used for pulldowns */
void uiTextBoundsBlock(uiBlock *block, int addval)
{
block->bounds= addval;
- block->dobounds= 2;
+ block->dobounds= UI_BLOCK_BOUNDS_TEXT;
}
/* used for block popups */
void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my)
{
block->bounds= addval;
- block->dobounds= 3;
+ block->dobounds= UI_BLOCK_BOUNDS_POPUP_MOUSE;
block->mx= mx;
block->my= my;
}
@@ -400,11 +424,18 @@ void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my)
void uiMenuPopupBoundsBlock(uiBlock *block, int addval, int mx, int my)
{
block->bounds= addval;
- block->dobounds= 4;
+ block->dobounds= UI_BLOCK_BOUNDS_POPUP_MENU;
block->mx= mx;
block->my= my;
}
+/* used for centered popups, i.e. splash */
+void uiCenteredBoundsBlock(uiBlock *block, int addval)
+{
+ block->bounds= addval;
+ block->dobounds= UI_BLOCK_BOUNDS_POPUP_CENTER;
+}
+
/* ************** LINK LINE DRAWING ************* */
/* link line drawing is not part of buttons or theme.. so we stick with it here */
@@ -627,9 +658,10 @@ void uiEndBlock(const bContext *C, uiBlock *block)
if(block->flag & UI_BLOCK_LOOP) ui_menu_block_set_keymaps(C, block);
/* after keymaps! */
- if(block->dobounds == 1) ui_bounds_block(block);
- else if(block->dobounds == 2) ui_text_bounds_block(block, 0.0f);
- else if(block->dobounds) ui_popup_bounds_block(C, block, (block->dobounds == 4));
+ if(block->dobounds == UI_BLOCK_BOUNDS) ui_bounds_block(block);
+ else if(block->dobounds == UI_BLOCK_BOUNDS_TEXT) ui_text_bounds_block(block, 0.0f);
+ else if(block->dobounds == UI_BLOCK_BOUNDS_POPUP_CENTER) ui_centered_bounds_block(C, block);
+ else if(block->dobounds) ui_popup_bounds_block(C, block, block->dobounds);
if(block->minx==0.0 && block->maxx==0.0) uiBoundsBlock(block, 0);
if(block->flag & UI_BUT_ALIGN) uiBlockEndAlign(block);
@@ -988,7 +1020,7 @@ static void ui_do_active_linklines(uiBlock *block, short *mval)
v3[0]= line->to->x1;
v3[1]= (line->to->y1+line->to->y2)/2.0;
- fac= PdistVL2Dfl(v1, v2, v3);
+ fac= dist_to_line_segment_v2(v1, v2, v3);
if(fac < mindist) {
mindist= fac;
act= line;
@@ -1355,15 +1387,15 @@ static void ui_get_but_string_unit(uiBut *but, char *str, int len_max, double va
Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
int do_split= scene->unit.flag & USER_UNIT_OPT_SPLIT;
int unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
- int precission= but->a2;
+ int precision= but->a2;
if(scene->unit.scale_length<0.0001) scene->unit.scale_length= 1.0; // XXX do_versions
/* Sanity checks */
- if(precission>4) precission= 4;
- else if(precission==0) precission= 2;
+ if(precision>4) precision= 4;
+ else if(precision==0) precision= 2;
- bUnit_AsString(str, len_max, ui_get_but_scale_unit(but, value), precission, scene->unit.system, unit_type, do_split, pad);
+ bUnit_AsString(str, len_max, ui_get_but_scale_unit(but, value), precision, scene->unit.system, unit_type, do_split, pad);
}
static float ui_get_but_step_unit(uiBut *but, double value, float step_default)
@@ -1928,7 +1960,7 @@ void ui_check_but(uiBut *but)
sprintf(but->drawstr, "%s%.2f", but->str, value);
}
}
- else strcpy(but->drawstr, but->str);
+ else strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
break;
@@ -1946,7 +1978,7 @@ void ui_check_but(uiBut *but)
break;
case KEYEVT:
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
if (but->flag & UI_SELECT) {
strcat(but->drawstr, "Press a key");
} else {
@@ -1959,9 +1991,9 @@ void ui_check_but(uiBut *but)
short *sp= (short *)but->func_arg3;
if(but->flag & UI_BUT_IMMEDIATE)
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
else
- strcpy(but->drawstr, "");
+ strncpy(but->drawstr, "", UI_MAX_DRAW_STR);
if(*sp) {
char *str= but->drawstr;
@@ -1979,25 +2011,25 @@ void ui_check_but(uiBut *but)
strcat(but->drawstr, "Press a key ");
}
else
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
break;
case BUT_TOGDUAL:
/* trying to get the dual-icon to left of text... not very nice */
if(but->str[0]) {
- strcpy(but->drawstr, " ");
- strcpy(but->drawstr+2, but->str);
+ strncpy(but->drawstr, " ", UI_MAX_DRAW_STR);
+ strncpy(but->drawstr+2, but->str, UI_MAX_DRAW_STR-2);
}
break;
default:
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
}
/* if we are doing text editing, this will override the drawstr */
if(but->editstr)
- strcpy(but->drawstr, but->editstr);
+ strncpy(but->drawstr, but->editstr, UI_MAX_DRAW_STR);
/* text clipping moved to widget drawing code itself */
}
@@ -2203,6 +2235,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short
but->bit= type & BIT;
but->bitnr= type & 31;
but->icon = 0;
+ but->iconadd=0;
but->retval= retval;
if( strlen(str)>=UI_MAX_NAME_STR-1 ) {
@@ -2931,7 +2964,7 @@ PointerRNA *uiButGetOperatorPtrRNA(uiBut *but)
{
if(but->optype && !but->opptr) {
but->opptr= MEM_callocN(sizeof(PointerRNA), "uiButOpPtr");
- WM_operator_properties_create(but->opptr, but->optype->idname);
+ WM_operator_properties_create_ptr(but->opptr, but->optype);
}
return but->opptr;
diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c
index d2948852346..0925598cc99 100644
--- a/source/blender/editors/interface/interface_anim.c
+++ b/source/blender/editors/interface/interface_anim.c
@@ -189,25 +189,25 @@ void uiAnimContextProperty(const bContext *C, struct PointerRNA *ptr, struct Pro
void ui_but_anim_insert_keyframe(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_insert_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyframe_insert_button", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_delete_keyframe(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_delete_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyframe_delete_button", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_add_driver(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_add_driver_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_driver_button_add", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_remove_driver(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_remove_driver_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_driver_button_remove", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_copy_driver(bContext *C)
@@ -225,11 +225,11 @@ void ui_but_anim_paste_driver(bContext *C)
void ui_but_anim_add_keyingset(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_add_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyingset_button_add", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_remove_keyingset(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_remove_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyingset_button_remove", WM_OP_INVOKE_DEFAULT, NULL);
}
diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index 59a1933fa4a..762ec541bff 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -37,12 +37,15 @@
#include "DNA_texture_types.h"
#include "DNA_userdef_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_colortools.h"
#include "BKE_texture.h"
#include "BKE_utildefines.h"
+#include "IMB_imbuf.h"
+#include "IMB_imbuf_types.h"
+
#include "BIF_gl.h"
#include "BIF_glutil.h"
@@ -458,8 +461,47 @@ void uiEmboss(float x1, float y1, float x2, float y2, int sel)
}
-/* ************** TEXT AND ICON DRAWING FUNCTIONS ************* */
+/* ************** SPECIAL BUTTON DRAWING FUNCTIONS ************* */
+void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect)
+{
+ extern char datatoc_splash_png[];
+ extern int datatoc_splash_png_size;
+ ImBuf *ibuf;
+ //GLint scissor[4];
+ //int w, h;
+
+ /* hardcoded to splash, loading and freeing every draw, eek! */
+ ibuf= IMB_ibImageFromMemory((int *)datatoc_splash_png, datatoc_splash_png_size, IB_rect);
+
+ if (!ibuf) return;
+
+ /* scissor doesn't seem to be doing the right thing...?
+ //glColor4f(1.0, 0.f, 0.f, 1.f);
+ //fdrawbox(rect->xmin, rect->ymin, rect->xmax, rect->ymax)
+
+ w = (rect->xmax - rect->xmin);
+ h = (rect->ymax - rect->ymin);
+ // prevent drawing outside widget area
+ glGetIntegerv(GL_SCISSOR_BOX, scissor);
+ glScissor(ar->winrct.xmin + rect->xmin, ar->winrct.ymin + rect->ymin, w, h);
+ */
+
+ glEnable(GL_BLEND);
+ glColor4f(0.0, 0.0, 0.0, 0.0);
+
+ glaDrawPixelsSafe((float)rect->xmin, (float)rect->ymin, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect);
+ //glaDrawPixelsTex((float)rect->xmin, (float)rect->ymin, ibuf->x, ibuf->y, GL_UNSIGNED_BYTE, ibuf->rect);
+
+ glDisable(GL_BLEND);
+
+ /*
+ // restore scissortest
+ glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
+ */
+
+ IMB_freeImBuf(ibuf);
+}
#if 0
#ifdef INTERNATIONAL
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index f085e7054a3..6d65a2a57a1 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -38,7 +38,7 @@
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "PIL_time.h"
@@ -183,8 +183,6 @@ typedef struct uiAfterFunc {
static int ui_mouse_inside_button(ARegion *ar, uiBut *but, int x, int y);
static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state);
static int ui_handler_region_menu(bContext *C, wmEvent *event, void *userdata);
-static int ui_handler_popup(bContext *C, wmEvent *event, void *userdata);
-static void ui_handler_remove_popup(bContext *C, void *userdata);
static void ui_handle_button_activate(bContext *C, ARegion *ar, uiBut *but, uiButtonActivateType type);
static void button_timers_tooltip_remove(bContext *C, uiBut *but);
@@ -754,6 +752,13 @@ static void ui_apply_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data)
data->applied= 1;
}
+static void ui_apply_but_IMAGE(bContext *C, uiBut *but, uiHandleButtonData *data)
+{
+ ui_apply_but_func(C, but);
+
+ data->retval= but->retval;
+ data->applied= 1;
+}
static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, int interactive)
{
@@ -874,6 +879,9 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
case INLINK:
ui_apply_but_LINK(C, but, data);
break;
+ case BUT_IMAGE:
+ ui_apply_but_IMAGE(C, but, data);
+ break;
default:
break;
}
@@ -1051,24 +1059,16 @@ static short test_special_char(char ch)
static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data)
{
- char *str;
- int x, changed;
-
- str= data->str;
- changed= (but->selsta != but->selend);
-
- for(x=0; x< strlen(str); x++) {
- if (but->selend + x <= strlen(str) ) {
- str[but->selsta + x]= str[but->selend + x];
- } else {
- str[but->selsta + x]= '\0';
- break;
- }
+ char *str= data->str;
+ int len= strlen(str);
+ int change= 0;
+ if(but->selsta != but->selend && len) {
+ memmove( str+but->selsta, str+but->selend, len+1 );
+ change= 1;
}
-
+
but->pos = but->selend = but->selsta;
-
- return changed;
+ return change;
}
static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x)
@@ -1357,8 +1357,10 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
buf[i]= 0;
/* paste over the current selection */
- if ((but->selend - but->selsta) > 0)
+ if ((but->selend - but->selsta) > 0) {
ui_textedit_delete_selection(but, data);
+ len= strlen(str);
+ }
for (y=0; y<strlen(buf); y++)
{
@@ -2224,14 +2226,6 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
fac= 1.0f;
if(event->shift) fac /= 10.0f;
if(event->alt) fac /= 20.0f;
-
- if(event->custom == EVT_DATA_TABLET) {
- wmTabletData *wmtab= event->customdata;
-
- /* de-sensitise based on tablet pressure */
- if (wmtab->Active != EVT_TABLET_NONE)
- fac *= wmtab->Pressure;
- }
snap= (event->ctrl)? (event->shift)? 2: 1: 0;
@@ -2652,7 +2646,7 @@ static int ui_numedit_but_NORMAL(uiBut *but, uiHandleButtonData *data, int mx, i
fp[2]= -sqrt( radsq-dx*dx-dy*dy );
}
}
- Normalize(fp);
+ normalize_v3(fp);
data->draglastx= mx;
data->draglasty= my;
@@ -3364,7 +3358,7 @@ static uiBlock *menu_change_hotkey(bContext *C, ARegion *ar, void *arg_but)
dummy[1]= 0;
block= uiBeginBlock(C, ar, "_popup", UI_EMBOSSP);
- uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT|UI_BLOCK_RET_1);
+ uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
BLI_strncpy(buf, ot->name, OP_MAX_TYPENAME);
strcat(buf, " |");
@@ -3399,42 +3393,46 @@ static int ui_but_menu(bContext *C, uiBut *but)
pup= uiPupMenuBegin(C, name, 0);
layout= uiPupMenuLayout(pup);
+
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_DEFAULT);
if(but->rnapoin.data && but->rnaprop) {
length= RNA_property_array_length(&but->rnapoin, but->rnaprop);
-
+
+ /* Keyframes */
if(but->flag & UI_BUT_ANIMATED_KEY) {
if(length) {
- uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1);
- uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
- uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_delete_keyframe_button", "all", 1);
- uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1);
+ uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_keyframe_delete_button", "all", 1);
+ uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0);
}
else {
- uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
- uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0);
}
}
else if(but->flag & UI_BUT_DRIVEN);
else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) {
if(length) {
- uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1);
- uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1);
+ uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
}
else
- uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
}
-
+
+ /* Drivers */
if(but->flag & UI_BUT_DRIVEN) {
uiItemS(layout);
if(length) {
- uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1);
- uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_driver_button_remove", "all", 1);
+ uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_driver_button_remove", "all", 0);
}
else
- uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_driver_button_remove", "all", 0);
uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button");
if (ANIM_driver_can_paste())
@@ -3445,37 +3443,43 @@ static int ui_but_menu(bContext *C, uiBut *but)
uiItemS(layout);
if(length) {
- uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1);
- uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_driver_button_add", "all", 1);
+ uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_driver_button_add", "all", 0);
}
else
- uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_driver_button_add", "all", 0);
if (ANIM_driver_can_paste())
uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button");
}
-
+
+ /* Keying Sets */
if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) {
uiItemS(layout);
if(length) {
- uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1);
- uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0);
- uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button");
+ uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 1);
+ uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0);
+ uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove");
}
else {
- uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0);
- uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button");
+ uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0);
+ uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove");
}
}
-
+
uiItemS(layout);
-
+
+ /* Property Operators */
+
+ //Copy Property Value
+ //Paste Property Value
+
+ //uiItemO(layout, "Reset to Default Value", 0, "WM_OT_property_value_reset_button");
+
uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button");
uiItemS(layout);
-
-
}
@@ -3495,7 +3499,7 @@ static int ui_but_menu(bContext *C, uiBut *but)
RNA_string_set(&ptr_props, "doc_id", buf);
RNA_string_set(&ptr_props, "doc_new", RNA_property_description(but->rnaprop));
- uiItemFullO(layout, "Edit Docs (TODO)", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0);
+ uiItemFullO(layout, "Submit Description", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0);
}
else if (but->optype) {
WM_operator_py_idname(buf, but->optype->idname);
@@ -3509,7 +3513,7 @@ static int ui_but_menu(bContext *C, uiBut *but)
RNA_string_set(&ptr_props, "doc_id", buf);
RNA_string_set(&ptr_props, "doc_new", but->optype->description);
- uiItemFullO(layout, "Edit Docs (TODO)", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0);
+ uiItemFullO(layout, "Submit Description", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0);
}
}
@@ -3645,6 +3649,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
case TOG3:
case ROW:
case LISTROW:
+ case BUT_IMAGE:
retval= ui_do_but_EXIT(C, but, data, event);
break;
case TEX:
@@ -3739,26 +3744,55 @@ static void ui_blocks_set_tooltips(ARegion *ar, int enable)
static int ui_mouse_inside_region(ARegion *ar, int x, int y)
{
uiBlock *block;
- int mx, my;
+
- /* check if the mouse is in the region, and in case of a view2d also check
- * if it is inside the view2d itself, not over scrollbars for example */
+ /* check if the mouse is in the region */
if(!BLI_in_rcti(&ar->winrct, x, y)) {
for(block=ar->uiblocks.first; block; block=block->next)
block->auto_open= 0;
-
+
return 0;
}
+ /* also, check that with view2d, that the mouse is not over the scrollbars
+ * NOTE: care is needed here, since the mask rect may include the scrollbars
+ * even when they are not visible, so we need to make a copy of the mask to
+ * use to check
+ */
if(ar->v2d.mask.xmin!=ar->v2d.mask.xmax) {
+ View2D *v2d= &ar->v2d;
+ rcti mask_rct;
+ int mx, my;
+
+ /* convert window coordinates to region coordinates */
mx= x;
my= y;
ui_window_to_region(ar, &mx, &my);
-
- if(!BLI_in_rcti(&ar->v2d.mask, mx, my))
+
+ /* make a copy of the mask rect, and tweak accordingly for hidden scrollbars */
+ mask_rct.xmin= v2d->mask.xmin;
+ mask_rct.xmax= v2d->mask.xmax;
+ mask_rct.ymin= v2d->mask.ymin;
+ mask_rct.ymax= v2d->mask.ymax;
+
+ if (v2d->scroll & V2D_SCROLL_VERTICAL_HIDE) {
+ if (v2d->scroll & V2D_SCROLL_LEFT)
+ mask_rct.xmin= v2d->vert.xmin;
+ else if (v2d->scroll & V2D_SCROLL_RIGHT)
+ mask_rct.xmax= v2d->vert.xmax;
+ }
+ if (v2d->scroll & V2D_SCROLL_HORIZONTAL_HIDE) {
+ if (v2d->scroll & (V2D_SCROLL_BOTTOM|V2D_SCROLL_BOTTOM_O))
+ mask_rct.ymin= v2d->hor.ymin;
+ else if (v2d->scroll & V2D_SCROLL_TOP)
+ mask_rct.ymax= v2d->hor.ymax;
+ }
+
+ /* check if in the rect */
+ if(!BLI_in_rcti(&mask_rct, mx, my))
return 0;
}
-
+
return 1;
}
@@ -4486,14 +4520,14 @@ static int ui_mouse_motion_towards_check(uiBlock *block, uiPopupBlockHandle *men
newp[0]= mx;
newp[1]= my;
- if(Vec2Lenf(oldp, newp) < 4.0f)
+ if(len_v2v2(oldp, newp) < 4.0f)
return menu->dotowards;
closer= 0;
- closer |= IsectPT2Df(newp, oldp, p1, p2);
- closer |= IsectPT2Df(newp, oldp, p2, p3);
- closer |= IsectPT2Df(newp, oldp, p3, p4);
- closer |= IsectPT2Df(newp, oldp, p4, p1);
+ closer |= isect_point_tri_v2(newp, oldp, p1, p2);
+ closer |= isect_point_tri_v2(newp, oldp, p2, p3);
+ closer |= isect_point_tri_v2(newp, oldp, p3, p4);
+ closer |= isect_point_tri_v2(newp, oldp, p4, p1);
if(!closer)
menu->dotowards= 0;
@@ -4951,7 +4985,7 @@ static int ui_handler_popup(bContext *C, wmEvent *event, void *userdata)
uiPopupBlockHandle temp= *menu;
ui_popup_block_free(C, menu);
- WM_event_remove_ui_handler(&CTX_wm_window(C)->modalhandlers, ui_handler_popup, ui_handler_remove_popup, menu);
+ UI_remove_popup_handlers(&CTX_wm_window(C)->modalhandlers, menu);
if(temp.menuretval == UI_RETURN_OK) {
if(temp.popup_func)
@@ -4992,8 +5026,14 @@ void UI_add_region_handlers(ListBase *handlers)
WM_event_add_ui_handler(NULL, handlers, ui_handler_region, ui_handler_remove_region, NULL);
}
-void UI_add_popup_handlers(bContext *C, ListBase *handlers, uiPopupBlockHandle *menu)
+void UI_add_popup_handlers(bContext *C, ListBase *handlers, uiPopupBlockHandle *popup)
+{
+ WM_event_add_ui_handler(C, handlers, ui_handler_popup, ui_handler_remove_popup, popup);
+}
+
+void UI_remove_popup_handlers(ListBase *handlers, uiPopupBlockHandle *popup)
{
- WM_event_add_ui_handler(C, handlers, ui_handler_popup, ui_handler_remove_popup, menu);
+ WM_event_remove_ui_handler(handlers, ui_handler_popup, ui_handler_remove_popup, popup);
}
+
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index 90f15d7992e..23a0ff7d223 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -40,7 +40,7 @@
#include "GPU_extensions.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_storage_types.h"
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 3c3b289a945..21425bbb261 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -427,6 +427,7 @@ extern void gl_round_box_vertical_shade(int mode, float minx, float miny, float
void ui_draw_but_COLORBAND(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
void ui_draw_but_NORMAL(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
void ui_draw_but_CURVE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
+void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
/* interface_handlers.c */
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 53ccc253b99..d46cb4df1c0 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -629,7 +629,11 @@ PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDP
but= uiDefIconButO(block, BUT, ot->idname, context, icon, 0, 0, w, UI_UNIT_Y, NULL);
else
but= uiDefButO(block, BUT, ot->idname, context, (char*)name, 0, 0, w, UI_UNIT_Y, NULL);
-
+
+ /* text alignment for toolbar buttons */
+ if((layout->root->type == UI_LAYOUT_TOOLBAR) && !icon)
+ but->flag |= UI_TEXT_LEFT;
+
/* assign properties */
if(properties || (flag & UI_ITEM_O_RETURN_PROPS)) {
PointerRNA *opptr= uiButGetOperatorPtrRNA(but);
@@ -2450,3 +2454,89 @@ void uiLayoutSetContextPointer(uiLayout *layout, char *name, PointerRNA *ptr)
layout->context= CTX_store_add(&block->contexts, name, ptr);
}
+
+/* introspect funcs */
+#include "BLI_dynstr.h"
+
+static void ui_intro_button(DynStr *ds, uiButtonItem *bitem)
+{
+ uiBut *but = bitem->but;
+ BLI_dynstr_appendf(ds, "'type':%d, ", but->type); /* see ~ UI_interface.h:200 */
+ BLI_dynstr_appendf(ds, "'draw_string':'''%s''', ", but->drawstr);
+ BLI_dynstr_appendf(ds, "'tip':'''%s''', ", but->tip ? but->tip : ""); // not exactly needed, rna has this
+
+ if(but->optype) {
+ char *opstr = WM_operator_pystring(but->block->evil_C, but->optype, but->opptr, 0);
+ BLI_dynstr_appendf(ds, "'operator':'''%s''', ", opstr ? opstr : "");
+ MEM_freeN(opstr);
+ }
+
+ if(but->rnaprop) {
+ BLI_dynstr_appendf(ds, "'rna':'%s.%s[%d]', ", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop), but->rnaindex);
+ }
+
+}
+
+static void ui_intro_items(DynStr *ds, ListBase *lb)
+{
+ uiItem *item;
+
+ BLI_dynstr_append(ds, "[");
+
+ for(item=lb->first; item; item=item->next) {
+
+ BLI_dynstr_append(ds, "{");
+
+ /* could also use the INT but this is nicer*/
+ switch(item->type) {
+ case ITEM_BUTTON: BLI_dynstr_append(ds, "'type':'BUTTON', ");break;
+ case ITEM_LAYOUT_ROW: BLI_dynstr_append(ds, "'type':'ROW', "); break;
+ case ITEM_LAYOUT_COLUMN: BLI_dynstr_append(ds, "'type':'COLUMN', "); break;
+ case ITEM_LAYOUT_COLUMN_FLOW:BLI_dynstr_append(ds, "'type':'COLUMN_FLOW', "); break;
+ case ITEM_LAYOUT_ROW_FLOW: BLI_dynstr_append(ds, "'type':'ROW_FLOW', "); break;
+ case ITEM_LAYOUT_BOX: BLI_dynstr_append(ds, "'type':'BOX', "); break;
+ case ITEM_LAYOUT_ABSOLUTE: BLI_dynstr_append(ds, "'type':'ABSOLUTE', "); break;
+ case ITEM_LAYOUT_SPLIT: BLI_dynstr_append(ds, "'type':'SPLIT', "); break;
+ case ITEM_LAYOUT_OVERLAP: BLI_dynstr_append(ds, "'type':'OVERLAP', "); break;
+ case ITEM_LAYOUT_ROOT: BLI_dynstr_append(ds, "'type':'ROOT', "); break;
+ default: BLI_dynstr_append(ds, "'type':'UNKNOWN', "); break;
+ }
+
+ switch(item->type) {
+ case ITEM_BUTTON:
+ ui_intro_button(ds, (uiButtonItem *)item);
+ break;
+ default:
+ BLI_dynstr_append(ds, "'items':");
+ ui_intro_items(ds, &((uiLayout*)item)->items);
+ break;
+ }
+
+ BLI_dynstr_append(ds, "}");
+
+ if(item != lb->last)
+ BLI_dynstr_append(ds, ", ");
+ }
+ BLI_dynstr_append(ds, "], ");
+}
+
+static void ui_intro_uiLayout(DynStr *ds, uiLayout *layout)
+{
+ ui_intro_items(ds, &layout->items);
+}
+
+static char *str = NULL; // XXX, constant re-freeing, far from ideal.
+char *uiLayoutIntrospect(uiLayout *layout)
+{
+ DynStr *ds= BLI_dynstr_new();
+
+ if(str)
+ MEM_freeN(str);
+
+ ui_intro_uiLayout(ds, layout);
+
+ str = BLI_dynstr_get_cstring(ds);
+ BLI_dynstr_free(ds);
+
+ return str;
+}
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 20cd6ebf971..e73a4fbe977 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -37,7 +37,7 @@
#include "PIL_time.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index e3b7d173961..c3eac3f3893 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -35,7 +35,7 @@
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_ghash.h"
@@ -1303,7 +1303,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
bt->y2 -= ar->winrct.ymin;
}
- block->flag |= UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT;
+ block->flag |= UI_BLOCK_LOOP;
/* adds subwindow */
ED_region_init(C, ar);
@@ -1321,9 +1321,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
void ui_popup_block_free(bContext *C, uiPopupBlockHandle *handle)
{
- /* XXX ton added, chrash on load file with popup open... need investigate */
- if(CTX_wm_screen(C))
- ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
+ ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
MEM_freeN(handle);
}
@@ -1340,6 +1338,8 @@ static void ui_block_func_MENUSTR(bContext *C, uiLayout *layout, void *arg_str)
char *instr= arg_str;
int columns, rows, a, b;
+ uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
+
/* compute menu data */
md= decompose_menu_string(instr);
@@ -1416,6 +1416,8 @@ void ui_block_func_ICONROW(bContext *C, uiLayout *layout, void *arg_but)
uiBut *but= arg_but;
int a;
+ uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
+
for(a=(int)but->hardmin; a<=(int)but->hardmax; a++)
uiDefIconButF(block, BUTM|FLO, B_NOP, but->icon+(a-but->hardmin), 0, 0, UI_UNIT_X*5, UI_UNIT_Y,
&handle->retvalue, (float)a, 0.0, 0, 0, "");
@@ -1429,6 +1431,8 @@ void ui_block_func_ICONTEXTROW(bContext *C, uiLayout *layout, void *arg_but)
MenuData *md;
MenuEntry *entry;
int a;
+
+ uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
md= decompose_menu_string(but->str);
@@ -1996,6 +2000,8 @@ uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_bu
block= uiBeginBlock(C, handle->region, "colorpicker", UI_EMBOSS);
+ uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
+
VECCOPY(handle->retvec, but->editvec);
if(win->eventstate->shift) {
uiBlockPickerButtons(block, handle->retvec, hsvcol, oldcol, hexcol, 'p', 0);
@@ -2197,6 +2203,8 @@ static uiBlock *ui_block_func_POPUP(bContext *C, uiPopupBlockHandle *handle, voi
uiBlockLayoutResolve(block, NULL, NULL);
+ uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
+
if(pup->popup) {
uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_NUMSELECT|UI_BLOCK_RET_1);
uiBlockSetDirection(block, direction);
@@ -2550,3 +2558,11 @@ void uiPupBlockOperator(bContext *C, uiBlockCreateFunc func, wmOperator *op, int
WM_event_add_mousemove(C);
}
+void uiPupBlockClose(bContext *C, uiBlock *block)
+{
+ if(block->handle) {
+ UI_remove_popup_handlers(&CTX_wm_window(C)->modalhandlers, block->handle);
+ ui_popup_block_free(C, block->handle);
+ }
+}
+
diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c
index 5c058889107..2e8d2a8cb2b 100644
--- a/source/blender/editors/interface/interface_style.c
+++ b/source/blender/editors/interface/interface_style.c
@@ -35,7 +35,7 @@
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BLI_rect.h"
#include "BLI_string.h"
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index a35da38ea66..9402da2f2c6 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -110,7 +110,7 @@ static void id_search_cb(const bContext *C, void *arg_template, char *str, uiSea
}
/* ID Search browse menu, open */
-static uiBlock *search_menu(bContext *C, ARegion *ar, void *arg_litem)
+static uiBlock *id_search_menu(bContext *C, ARegion *ar, void *arg_litem)
{
static char search[256];
static TemplateID template;
@@ -262,7 +262,7 @@ static void template_ID(bContext *C, uiBlock *block, TemplateID *template, Struc
type= idptr.type;
if(flag & UI_ID_BROWSE) {
- but= uiDefBlockButN(block, search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y, "Browse ID data");
+ but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y, "Browse ID data");
if(type) {
but->icon= RNA_struct_ui_icon(type);
but->flag|= UI_HAS_ICON;
@@ -448,6 +448,8 @@ void uiTemplateAnyID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
/********************* RNA Path Builder Template ********************/
+/* ---------- */
+
/* This is creating/editing RNA-Paths
*
* - ptr: struct which holds the path property
@@ -497,7 +499,7 @@ void uiTemplatePathBuilder(uiLayout *layout, bContext *C, PointerRNA *ptr, char
#include "UI_resources.h"
#include "ED_util.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "ED_object.h"
@@ -654,7 +656,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
uiLayout *box;
box= uiLayoutBox(column);
- row= uiLayoutRow(box, 1);
+ row= uiLayoutRow(box, 0);
if(!isVirtual && (md->type!=eModifierType_Collision) && (md->type!=eModifierType_Surface)) {
/* only here obdata, the rest of modifiers is ob level */
@@ -667,8 +669,12 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache)
uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert");
}
- else
- uiItemO(row, "Apply", 0, "OBJECT_OT_modifier_apply");
+ else
+ uiItemEnumO(row, "Apply", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_DATA);
+
+ if (modifier_sameTopology(md))
+ uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE);
+
uiBlockClearButLock(block);
uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE);
@@ -1872,51 +1878,94 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname)
/********************* Layer Buttons Template ************************/
+static void handle_layer_buttons(bContext *C, void *arg1, void *arg2)
+{
+ uiBut *but = arg1;
+ int cur = GET_INT_FROM_POINTER(arg2);
+ wmWindow *win= CTX_wm_window(C);
+ int i, tot, shift= win->eventstate->shift;
+
+ if(!shift) {
+ tot= RNA_property_array_length(&but->rnapoin, but->rnaprop);
+
+ /* Normally clicking only selects one layer */
+ RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, cur, 1);
+ for(i = 0; i < tot; ++i) {
+ if(i != cur)
+ RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, i, 0);
+ }
+ }
+}
+
// TODO:
-// - option for showing extra info like whether layer has contents?
// - for now, grouping of layers is determined by dividing up the length of
// the array of layer bitflags
-void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname)
+void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname,
+ PointerRNA *used_ptr, char *used_propname, int active_layer)
{
- uiLayout *uRow, *uSplit, *uCol;
- PropertyRNA *prop;
+ uiLayout *uRow, *uCol;
+ PropertyRNA *prop, *used_prop;
int groups, cols, layers;
int group, col, layer, row;
+ int cols_per_group = 5;
+ const char *desc;
prop= RNA_struct_find_property(ptr, propname);
if (!prop) {
printf("uiTemplateLayer: layers property not found: %s\n", propname);
return;
}
+
+ desc= RNA_property_description(prop);
/* the number of layers determines the way we group them
* - we want 2 rows only (for now)
* - the number of columns (cols) is the total number of buttons per row
* the 'remainder' is added to this, as it will be ok to have first row slightly wider if need be
- * - for now, only split into groups if if group will have at least 5 items
+ * - for now, only split into groups if group will have at least 5 items
*/
layers= RNA_property_array_length(ptr, prop);
cols= (layers / 2) + (layers % 2);
- groups= ((cols / 2) < 5) ? (1) : (cols / 2);
+ groups= ((cols / 2) < cols_per_group) ? (1) : (cols / cols_per_group);
+
+ if(used_ptr && used_propname) {
+ used_prop= RNA_struct_find_property(used_ptr, used_propname);
+ if (!used_prop) {
+ printf("uiTemplateLayer: used layers property not found: %s\n", used_propname);
+ return;
+ }
+
+ if(RNA_property_array_length(used_ptr, used_prop) < layers)
+ used_prop = NULL;
+ }
/* layers are laid out going across rows, with the columns being divided into groups */
- if (groups > 1)
- uSplit= uiLayoutSplit(layout, (1.0f/(float)groups));
- else
- uSplit= layout;
for (group= 0; group < groups; group++) {
- uCol= uiLayoutColumn(uSplit, 1);
+ uCol= uiLayoutColumn(layout, 1);
for (row= 0; row < 2; row++) {
+ uiBlock *block;
+ uiBut *but;
+
uRow= uiLayoutRow(uCol, 1);
- layer= groups*cols*row + cols*group;
+ block= uiLayoutGetBlock(uRow);
+ layer= groups*cols_per_group*row + cols_per_group*group;
/* add layers as toggle buts */
- for (col= 0; (col < cols) && (layer < layers); col++, layer++) {
- int icon=0; // XXX - add some way of setting this...
- uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, UI_ITEM_R_TOGGLE);
+ for (col= 0; (col < cols_per_group) && (layer < layers); col++, layer++) {
+ int icon = 0;
+ int butlay = 1 << layer;
+
+ if(active_layer & butlay)
+ icon = ICON_LAYER_ACTIVE;
+ else if(used_prop && RNA_property_boolean_get_index(used_ptr, used_prop, layer))
+ icon = ICON_LAYER_USED;
+
+ but= uiDefAutoButR(block, ptr, prop, layer, "", icon, 0, 0, 10, 10);
+ uiButSetFunc(but, handle_layer_buttons, but, SET_INT_IN_POINTER(layer));
+ but->type= TOG;
}
}
}
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index f24ae62db8f..ecd8c9720c8 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -46,8 +46,15 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
{
uiBut *but=NULL;
const char *propname= RNA_property_identifier(prop);
+ char prop_item[sizeof(((IDProperty *)NULL)->name)+4]; /* size of the ID prop name + room for [""] */
int arraylen= RNA_property_array_length(ptr, prop);
+ /* support for custom props */
+ if(RNA_property_is_idprop(prop)) {
+ sprintf(prop_item, "[\"%s\"]", propname);
+ propname= prop_item;
+ }
+
switch(RNA_property_type(prop)) {
case PROP_BOOLEAN: {
int value, length;
@@ -62,11 +69,10 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
else
value= RNA_property_boolean_get(ptr, prop);
- // XXX: when to do TOG, and when to do ICONTOG? for now, let's just do TOG, since ICONTOG causes too much trouble everywhere else
if(icon && name && strcmp(name, "") == 0)
- but= uiDefIconButR(block, TOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+ but= uiDefIconButR(block, ICONTOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
else if(icon)
- but= uiDefIconTextButR(block, TOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+ but= uiDefIconTextButR(block, ICONTOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
else
but= uiDefButR(block, OPTION, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
break;
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 00b72786e68..e148fd9217f 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -35,7 +35,7 @@
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BLI_rect.h"
@@ -806,6 +806,60 @@ static void ui_text_leftclip(uiFontStyle *fstyle, uiBut *but, rcti *rect)
}
}
+static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect)
+{
+ int border= (but->flag & UI_BUT_ALIGN_RIGHT)? 8: 10;
+ int okwidth= rect->xmax-rect->xmin - border;
+ char *cpoin=NULL;
+ char *cpend = but->drawstr + strlen(but->drawstr);
+
+ /* need to set this first */
+ uiStyleFontSet(fstyle);
+
+ but->strwidth= BLF_width(but->drawstr);
+ but->ofs= 0;
+
+ /* find the space after ':' separator */
+ cpoin= strrchr(but->drawstr, ':');
+
+ if (cpoin && (cpoin < cpend-2)) {
+ char *cp2 = cpoin;
+
+ /* chop off the leading text, starting from the right */
+ while (but->strwidth > okwidth && cp2 > but->drawstr) {
+ /* shift the text after and including cp2 back by 1 char, +1 to include null terminator */
+ memmove(cp2-1, cp2, strlen(cp2)+1);
+ cp2--;
+
+ but->strwidth= BLF_width(but->drawstr+but->ofs);
+ if(but->strwidth < 10) break;
+ }
+
+
+ /* after the leading text is gone, chop off the : and following space, with ofs */
+ while ((but->strwidth > okwidth) && (but->ofs < 2))
+ {
+ but->ofs++;
+ but->strwidth= BLF_width(but->drawstr+but->ofs);
+ if(but->strwidth < 10) break;
+ }
+
+ }
+
+ /* once the label's gone, chop off the least significant digits */
+ while(but->strwidth > okwidth ) {
+ int pos= strlen(but->drawstr);
+
+ but->drawstr[ pos-1 ] = 0;
+ pos--;
+
+ but->strwidth= BLF_width(but->drawstr+but->ofs);
+ if(but->strwidth < 10) break;
+ }
+
+}
+
+
static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *but, rcti *rect)
{
// int transopts;
@@ -893,9 +947,12 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
{
if(but==NULL) return;
-
- /* cutting off from left part */
- if ELEM5(but->type, NUM, NUMABS, NUMSLI, SLI, TEX) {
+
+ /* clip but->drawstr to fit in available space */
+ if (ELEM4(but->type, NUM, NUMABS, NUMSLI, SLI)) {
+ ui_text_label_rightclip(fstyle, but, rect);
+ }
+ else if (but->type == TEX) {
ui_text_leftclip(fstyle, but, rect);
}
else but->ofs= 0;
@@ -1666,8 +1723,8 @@ static void widget_numbut(uiWidgetColors *wcol, rcti *rect, int state, int round
{
uiWidgetBase wtb;
float rad= 0.5f*(rect->ymax - rect->ymin);
- int textoffs;
-
+ float textofs = rad*0.75;
+
widget_init(&wtb);
/* fully rounded */
@@ -1677,12 +1734,13 @@ static void widget_numbut(uiWidgetColors *wcol, rcti *rect, int state, int round
if(!(state & UI_TEXTINPUT)) {
widget_num_tria(&wtb.tria1, rect, 0.6f, 'l');
widget_num_tria(&wtb.tria2, rect, 0.6f, 'r');
- }
+ }
+
widgetbase_draw(&wtb, wcol);
/* text space */
- rect->xmin += rad*0.75f;
- rect->xmax -= rad*0.75f;
+ rect->xmin += textofs;
+ rect->xmax -= textofs;
}
@@ -1889,7 +1947,6 @@ static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int s
rcti rect1;
double value;
float offs, fac;
- int textoffs;
char outline[3];
widget_init(&wtb);
@@ -1899,7 +1956,6 @@ static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int s
/* fully rounded */
offs= 0.5f*(rect->ymax - rect->ymin);
- textoffs= offs;
round_box_edges(&wtb, roundboxalign, rect, offs);
wtb.outline= 0;
@@ -1941,8 +1997,8 @@ static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int s
widgetbase_draw(&wtb, wcol);
/* text space */
- rect->xmin += textoffs;
- rect->xmax -= textoffs;
+ rect->xmin += offs*0.75f;
+ rect->xmax -= offs*0.75f;
}
static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
@@ -2497,6 +2553,10 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
ui_draw_but_NORMAL(but, &tui->wcol_regular, rect);
break;
+ case BUT_IMAGE:
+ ui_draw_but_IMAGE(ar, but, &tui->wcol_regular, rect);
+ break;
+
case BUT_CURVE:
ui_draw_but_CURVE(ar, but, &tui->wcol_regular, rect);
break;
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index ef37f6e530a..6579e30900b 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -237,6 +237,7 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event)
case LEFTMOUSE:
case MIDDLEMOUSE:
+ case ESCKEY:
if (event->val==KM_RELEASE) {
/* calculate overall delta mouse-movement for redo */
RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx));
@@ -253,6 +254,12 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_RUNNING_MODAL;
}
+static int view_pan_cancel(bContext *C, wmOperator *op)
+{
+ view_pan_exit(C, op);
+ return OPERATOR_CANCELLED;
+}
+
void VIEW2D_OT_pan(wmOperatorType *ot)
{
/* identifiers */
@@ -264,6 +271,7 @@ void VIEW2D_OT_pan(wmOperatorType *ot)
ot->exec= view_pan_exec;
ot->invoke= view_pan_invoke;
ot->modal= view_pan_modal;
+ ot->cancel= view_pan_cancel;
/* operator is repeatable */
ot->flag= OPTYPE_BLOCKING;
@@ -1165,14 +1173,15 @@ static void scroller_activate_apply(bContext *C, wmOperator *op)
/* type of movement */
switch (vsm->zone) {
case SCROLLHANDLE_MIN:
- case SCROLLHANDLE_MAX:
-
/* only expand view on axis if zoom is allowed */
if ((vsm->scroller == 'h') && !(v2d->keepzoom & V2D_LOCKZOOM_X))
v2d->cur.xmin -= temp;
if ((vsm->scroller == 'v') && !(v2d->keepzoom & V2D_LOCKZOOM_Y))
v2d->cur.ymin -= temp;
-
+ break;
+
+ case SCROLLHANDLE_MAX:
+
/* only expand view on axis if zoom is allowed */
if ((vsm->scroller == 'h') && !(v2d->keepzoom & V2D_LOCKZOOM_X))
v2d->cur.xmax += temp;
@@ -1285,6 +1294,13 @@ static int scroller_activate_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_PASS_THROUGH;
}
}
+ /* zone is also inappropriate if scroller is not visible... */
+ if ( ((vsm->scroller=='h') && (v2d->scroll & V2D_SCROLL_HORIZONTAL_HIDE)) ||
+ ((vsm->scroller=='v') && (v2d->scroll & V2D_SCROLL_VERTICAL_HIDE)) )
+ {
+ /* can't catch this event for ourselves, so let it go to someone else? */
+ return OPERATOR_PASS_THROUGH;
+ }
if(vsm->scroller=='h')
v2d->scroll_ui |= V2D_SCROLL_H_ACTIVE;
diff --git a/source/blender/editors/mesh/SConscript b/source/blender/editors/mesh/SConscript
index 00391b3474a..f5f8bb940e8 100644
--- a/source/blender/editors/mesh/SConscript
+++ b/source/blender/editors/mesh/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #/intern/guardedalloc ../../gpu'
+incs += ' ../../gpu'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
if env['OURPLATFORM'] == 'linux2':
diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c
index 0042ad9483b..5d94fb32438 100644
--- a/source/blender/editors/mesh/editface.c
+++ b/source/blender/editors/mesh/editface.c
@@ -32,7 +32,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_heap.h"
#include "BLI_edgehash.h"
#include "BLI_editVert.h"
@@ -453,7 +453,7 @@ int minmax_tface(Scene *scene, float *min, float *max)
me= get_mesh(ob);
if(me==0 || me->mtface==0) return ok;
- Mat3CpyMat4(bmat, ob->obmat);
+ copy_m3_m4(bmat, ob->obmat);
mv= me->mvert;
mf= me->mface;
@@ -463,24 +463,24 @@ int minmax_tface(Scene *scene, float *min, float *max)
continue;
VECCOPY(vec, (mv+mf->v1)->co);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, ob->obmat[3]);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, ob->obmat[3]);
DO_MINMAX(vec, min, max);
VECCOPY(vec, (mv+mf->v2)->co);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, ob->obmat[3]);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, ob->obmat[3]);
DO_MINMAX(vec, min, max);
VECCOPY(vec, (mv+mf->v3)->co);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, ob->obmat[3]);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, ob->obmat[3]);
DO_MINMAX(vec, min, max);
if (mf->v4) {
VECCOPY(vec, (mv+mf->v4)->co);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, ob->obmat[3]);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, ob->obmat[3]);
DO_MINMAX(vec, min, max);
}
ok= 1;
@@ -500,11 +500,11 @@ static float edgetag_cut_cost(EditMesh *em, int e1, int e2, int vert)
EditVert *v2 = EM_get_vert_for_index( (eed2->v1->tmp.l == vert)? eed2->v2->tmp.l: eed2->v1->tmp.l );
float cost, d1[3], d2[3];
- cost = VecLenf(v1->co, v->co);
- cost += VecLenf(v->co, v2->co);
+ cost = len_v3v3(v1->co, v->co);
+ cost += len_v3v3(v->co, v2->co);
- VecSubf(d1, v->co, v1->co);
- VecSubf(d2, v2->co, v->co);
+ sub_v3_v3v3(d1, v->co, v1->co);
+ sub_v3_v3v3(d2, v2->co, v->co);
cost = cost + 0.5f*cost*(2.0f - fabs(d1[0]*d2[0] + d1[1]*d2[1] + d1[2]*d2[2]));
diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c
index 81d565a9ba4..a286c0ad8e8 100644
--- a/source/blender/editors/mesh/editmesh.c
+++ b/source/blender/editors/mesh/editmesh.c
@@ -49,7 +49,7 @@
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_dynstr.h"
#include "BLI_rand.h"
@@ -411,12 +411,12 @@ EditFace *addfacelist(EditMesh *em, EditVert *v1, EditVert *v2, EditVert *v3, Ed
em->totface++;
if(efa->v4) {
- CalcNormFloat4(efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co, efa->n);
- CalcCent4f(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ normal_quad_v3( efa->n,efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ cent_quad_v3(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
}
else {
- CalcNormFloat(efa->v1->co, efa->v2->co, efa->v3->co, efa->n);
- CalcCent3f(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co);
+ normal_tri_v3( efa->n,efa->v1->co, efa->v2->co, efa->v3->co);
+ cent_tri_v3(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co);
}
return efa;
@@ -614,13 +614,13 @@ static void edge_normal_compare(EditEdge *eed, EditFace *efa1)
inp= efa1->n[0]*efa2->n[0] + efa1->n[1]*efa2->n[1] + efa1->n[2]*efa2->n[2];
if(inp<0.999 && inp >-0.999) eed->f2= 1;
- if(efa1->v4) CalcCent4f(cent1, efa1->v1->co, efa1->v2->co, efa1->v3->co, efa1->v4->co);
- else CalcCent3f(cent1, efa1->v1->co, efa1->v2->co, efa1->v3->co);
- if(efa2->v4) CalcCent4f(cent2, efa2->v1->co, efa2->v2->co, efa2->v3->co, efa2->v4->co);
- else CalcCent3f(cent2, efa2->v1->co, efa2->v2->co, efa2->v3->co);
+ if(efa1->v4) cent_quad_v3(cent1, efa1->v1->co, efa1->v2->co, efa1->v3->co, efa1->v4->co);
+ else cent_tri_v3(cent1, efa1->v1->co, efa1->v2->co, efa1->v3->co);
+ if(efa2->v4) cent_quad_v3(cent2, efa2->v1->co, efa2->v2->co, efa2->v3->co, efa2->v4->co);
+ else cent_tri_v3(cent2, efa2->v1->co, efa2->v2->co, efa2->v3->co);
- VecSubf(cent1, cent2, cent1);
- Normalize(cent1);
+ sub_v3_v3v3(cent1, cent2, cent1);
+ normalize_v3(cent1);
inp= cent1[0]*efa1->n[0] + cent1[1]*efa1->n[1] + cent1[2]*efa1->n[2];
if(inp < -0.001 ) eed->f1= 1;
@@ -1004,7 +1004,7 @@ void load_editMesh(Scene *scene, Object *ob)
/* vertex normal */
VECCOPY(nor, eve->no);
- VecMulf(nor, 32767.0);
+ mul_v3_fl(nor, 32767.0);
VECCOPY(mvert->no, nor);
/* note: it used to remove me->dvert when it was not in use, cancelled
@@ -1771,6 +1771,11 @@ static void undoMesh_to_editMesh(void *umv, void *emv)
EM_free_index_arrays();
}
+ /* restore total selections */
+ EM_nvertices_selected(em);
+ EM_nedges_selected(em);
+ EM_nfaces_selected(em);
+
// XXX retopo_free_paint();
// em->retopo_paint_data= retopo_paint_data_copy(um->retopo_paint_data);
// scene->toolsettings->retopo_mode= um->retopo_mode;
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index 5905b2021ea..fbe72a54e70 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -49,7 +49,7 @@
#include "RNA_access.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BKE_context.h"
@@ -147,40 +147,40 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event)
done= 0;
for(eed= vc.em->edges.first; eed; eed= eed->next) {
if( (eed->v1->f & SELECT)+(eed->v2->f & SELECT) == SELECT ) {
- if(eed->v1->f & SELECT) VecSubf(vec, eed->v1->co, eed->v2->co);
- else VecSubf(vec, eed->v2->co, eed->v1->co);
- VecAddf(nor, nor, vec);
+ if(eed->v1->f & SELECT) sub_v3_v3v3(vec, eed->v1->co, eed->v2->co);
+ else sub_v3_v3v3(vec, eed->v2->co, eed->v1->co);
+ add_v3_v3v3(nor, nor, vec);
done= 1;
}
}
- if(done) Normalize(nor);
+ if(done) normalize_v3(nor);
/* center */
- VecAddf(cent, min, max);
- VecMulf(cent, 0.5f);
+ add_v3_v3v3(cent, min, max);
+ mul_v3_fl(cent, 0.5f);
VECCOPY(min, cent);
- Mat4MulVecfl(vc.obedit->obmat, min); // view space
+ mul_m4_v3(vc.obedit->obmat, min); // view space
view3d_get_view_aligned_coordinate(&vc, min, event->mval);
- Mat4Invert(vc.obedit->imat, vc.obedit->obmat);
- Mat4MulVecfl(vc.obedit->imat, min); // back in object space
+ invert_m4_m4(vc.obedit->imat, vc.obedit->obmat);
+ mul_m4_v3(vc.obedit->imat, min); // back in object space
- VecSubf(min, min, cent);
+ sub_v3_v3v3(min, min, cent);
/* calculate rotation */
- Mat3One(mat);
+ unit_m3(mat);
if(done) {
float dot;
VECCOPY(vec, min);
- Normalize(vec);
+ normalize_v3(vec);
dot= INPR(vec, nor);
if( fabs(dot)<0.999) {
float cross[3], si, q1[4];
- Crossf(cross, nor, vec);
- Normalize(cross);
+ cross_v3_v3v3(cross, nor, vec);
+ normalize_v3(cross);
dot= 0.5f*saacos(dot);
si= (float)sin(dot);
q1[0]= (float)cos(dot);
@@ -188,7 +188,7 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event)
q1[2]= cross[1]*si;
q1[3]= cross[2]*si;
- QuatToMat3(q1, mat);
+ quat_to_mat3( mat,q1);
}
}
@@ -207,12 +207,12 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event)
eve= addvertlist(vc.em, 0, NULL);
- Mat3CpyMat4(mat, vc.obedit->obmat);
- Mat3Inv(imat, mat);
+ copy_m3_m4(mat, vc.obedit->obmat);
+ invert_m3_m3(imat, mat);
VECCOPY(eve->co, min);
- Mat3MulVecfl(imat, eve->co);
- VecSubf(eve->co, eve->co, vc.obedit->obmat[3]);
+ mul_m3_v3(imat, eve->co);
+ sub_v3_v3v3(eve->co, eve->co, vc.obedit->obmat[3]);
eve->f= SELECT;
}
@@ -1011,7 +1011,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
vec[0]= dia*phi;
vec[1]= - dia;
vec[2]= 0.0f;
- Mat4MulVecfl(mat,vec);
+ mul_m4_v3(mat,vec);
eve= addvertlist(em, vec, NULL);
eve->f= 1+2+4;
if (a) {
@@ -1022,7 +1022,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
/* extrude and translate */
vec[0]= vec[2]= 0.0;
vec[1]= dia*phid;
- Mat4Mul3Vecfl(mat, vec);
+ mul_mat3_m4_v3(mat, vec);
for(a=0;a<seg-1;a++) {
extrudeflag_vert(obedit, em, 2, nor); // nor unused
@@ -1057,7 +1057,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
q[0]= cos(phi);
q[3]= sin(phi);
q[1]=q[2]= 0;
- QuatToMat3(q, cmat);
+ quat_to_mat3( cmat,q);
for(a=0; a<seg; a++) {
extrudeflag_vert(obedit, em, 2, nor); // nor unused
@@ -1070,7 +1070,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
eve= em->verts.first;
while(eve) {
if(eve->f & SELECT) {
- Mat4MulVecfl(mat,eve->co);
+ mul_m4_v3(mat,eve->co);
}
eve= eve->next;
}
@@ -1111,7 +1111,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
eve= em->verts.first;
while(eve) {
if(eve->f & 2) {
- Mat4MulVecfl(mat,eve->co);
+ mul_m4_v3(mat,eve->co);
}
eve= eve->next;
}
@@ -1150,7 +1150,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
/* and now do imat */
for(eve= em->verts.first; eve; eve= eve->next) {
if(eve->f & SELECT) {
- Mat4MulVecfl(mat,eve->co);
+ mul_m4_v3(mat,eve->co);
}
}
recalc_editnormals(em);
@@ -1170,7 +1170,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
vec[1]= dia*cos(phi);
vec[2]= b?depth:-depth;
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
eve= addvertlist(em, vec, NULL);
eve->f= SELECT;
if(a==0) {
@@ -1187,12 +1187,12 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
if(type == PRIM_CONE || (fill && !ELEM(type, PRIM_PLANE, PRIM_CUBE))) {
vec[0]= vec[1]= 0.0f;
vec[2]= type==PRIM_CONE ? depth : -depth;
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
vdown= addvertlist(em, vec, NULL);
if((ext || type==PRIM_CONE) && fill) {
vec[0]= vec[1]= 0.0f;
vec[2]= type==PRIM_CONE ? -depth : depth;
- Mat4MulVecfl(mat,vec);
+ mul_m4_v3(mat,vec);
vtop= addvertlist(em, vec, NULL);
}
} else {
@@ -1281,25 +1281,25 @@ static float new_primitive_matrix(bContext *C, int view_align, float primmat[][4
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
float *curs, mat[3][3], vmat[3][3], cmat[3][3], imat[3][3];
- Mat4One(primmat);
+ unit_m4(primmat);
if(rv3d && view_align) {
- Mat3CpyMat4(vmat, rv3d->viewmat);
+ copy_m3_m4(vmat, rv3d->viewmat);
} else
- Mat3One(vmat);
+ unit_m3(vmat);
/* inverse transform for view and object */
- Mat3CpyMat4(mat, obedit->obmat);
- Mat3MulMat3(cmat, vmat, mat);
- Mat3Inv(imat, cmat);
- Mat4CpyMat3(primmat, imat);
+ copy_m3_m4(mat, obedit->obmat);
+ mul_m3_m3m3(cmat, vmat, mat);
+ invert_m3_m3(imat, cmat);
+ copy_m4_m3(primmat, imat);
/* center */
curs= give_cursor(scene, v3d);
VECCOPY(primmat[3], curs);
VECSUB(primmat[3], primmat[3], obedit->obmat[3]);
- Mat3Inv(imat, mat);
- Mat3MulVecfl(imat, primmat[3]);
+ invert_m3_m3(imat, mat);
+ mul_m3_v3(imat, primmat[3]);
if(v3d) return v3d->grid;
return 1.0f;
diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c
index e1b63022dd4..544dd790dc8 100644
--- a/source/blender/editors/mesh/editmesh_lib.c
+++ b/source/blender/editors/mesh/editmesh_lib.c
@@ -47,7 +47,7 @@ editmesh_lib: generic (no UI, no menus) operations/evaluators for editmesh data
#include "DNA_windowmanager_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BKE_customdata.h"
@@ -272,14 +272,14 @@ void EM_editselection_center(float *center, EditSelection *ese)
{
if (ese->type==EDITVERT) {
EditVert *eve= ese->data;
- VecCopyf(center, eve->co);
+ copy_v3_v3(center, eve->co);
} else if (ese->type==EDITEDGE) {
EditEdge *eed= ese->data;
- VecAddf(center, eed->v1->co, eed->v2->co);
- VecMulf(center, 0.5);
+ add_v3_v3v3(center, eed->v1->co, eed->v2->co);
+ mul_v3_fl(center, 0.5);
} else if (ese->type==EDITFACE) {
EditFace *efa= ese->data;
- VecCopyf(center, efa->cent);
+ copy_v3_v3(center, efa->cent);
}
}
@@ -287,26 +287,26 @@ void EM_editselection_normal(float *normal, EditSelection *ese)
{
if (ese->type==EDITVERT) {
EditVert *eve= ese->data;
- VecCopyf(normal, eve->no);
+ copy_v3_v3(normal, eve->no);
} else if (ese->type==EDITEDGE) {
EditEdge *eed= ese->data;
float plane[3]; /* need a plane to correct the normal */
float vec[3]; /* temp vec storage */
- VecAddf(normal, eed->v1->no, eed->v2->no);
- VecSubf(plane, eed->v2->co, eed->v1->co);
+ add_v3_v3v3(normal, eed->v1->no, eed->v2->no);
+ sub_v3_v3v3(plane, eed->v2->co, eed->v1->co);
/* the 2 vertex normals will be close but not at rightangles to the edge
for rotate about edge we want them to be at right angles, so we need to
do some extra colculation to correct the vert normals,
we need the plane for this */
- Crossf(vec, normal, plane);
- Crossf(normal, plane, vec);
- Normalize(normal);
+ cross_v3_v3v3(vec, normal, plane);
+ cross_v3_v3v3(normal, plane, vec);
+ normalize_v3(normal);
} else if (ese->type==EDITFACE) {
EditFace *efa= ese->data;
- VecCopyf(normal, efa->n);
+ copy_v3_v3(normal, efa->n);
}
}
@@ -321,7 +321,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese)
if (ese->prev) { /*use previously selected data to make a usefull vertex plane */
EM_editselection_center(vec, ese->prev);
- VecSubf(plane, vec, eve->co);
+ sub_v3_v3v3(plane, vec, eve->co);
} else {
/* make a fake plane thats at rightangles to the normal
we cant make a crossvec from a vec thats the same as the vec
@@ -330,7 +330,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese)
if (eve->no[0]<0.5) vec[0]=1;
else if (eve->no[1]<0.5) vec[1]=1;
else vec[2]=1;
- Crossf(plane, eve->no, vec);
+ cross_v3_v3v3(plane, eve->no, vec);
}
} else if (ese->type==EDITEDGE) {
EditEdge *eed= ese->data;
@@ -341,41 +341,41 @@ void EM_editselection_plane(float *plane, EditSelection *ese)
(running along the edge).. to flip less often.
at least its more pradictable */
if (eed->v2->co[1] > eed->v1->co[1]) /*check which to do first */
- VecSubf(plane, eed->v2->co, eed->v1->co);
+ sub_v3_v3v3(plane, eed->v2->co, eed->v1->co);
else
- VecSubf(plane, eed->v1->co, eed->v2->co);
+ sub_v3_v3v3(plane, eed->v1->co, eed->v2->co);
} else if (ese->type==EDITFACE) {
EditFace *efa= ese->data;
float vec[3];
if (efa->v4) { /*if its a quad- set the plane along the 2 longest edges.*/
float vecA[3], vecB[3];
- VecSubf(vecA, efa->v4->co, efa->v3->co);
- VecSubf(vecB, efa->v1->co, efa->v2->co);
- VecAddf(plane, vecA, vecB);
+ sub_v3_v3v3(vecA, efa->v4->co, efa->v3->co);
+ sub_v3_v3v3(vecB, efa->v1->co, efa->v2->co);
+ add_v3_v3v3(plane, vecA, vecB);
- VecSubf(vecA, efa->v1->co, efa->v4->co);
- VecSubf(vecB, efa->v2->co, efa->v3->co);
- VecAddf(vec, vecA, vecB);
+ sub_v3_v3v3(vecA, efa->v1->co, efa->v4->co);
+ sub_v3_v3v3(vecB, efa->v2->co, efa->v3->co);
+ add_v3_v3v3(vec, vecA, vecB);
/*use the biggest edge length*/
if (plane[0]*plane[0]+plane[1]*plane[1]+plane[2]*plane[2] < vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2])
- VecCopyf(plane, vec);
+ copy_v3_v3(plane, vec);
} else {
/*start with v1-2 */
- VecSubf(plane, efa->v1->co, efa->v2->co);
+ sub_v3_v3v3(plane, efa->v1->co, efa->v2->co);
/*test the edge between v2-3, use if longer */
- VecSubf(vec, efa->v2->co, efa->v3->co);
+ sub_v3_v3v3(vec, efa->v2->co, efa->v3->co);
if (plane[0]*plane[0]+plane[1]*plane[1]+plane[2]*plane[2] < vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2])
- VecCopyf(plane, vec);
+ copy_v3_v3(plane, vec);
/*test the edge between v1-3, use if longer */
- VecSubf(vec, efa->v3->co, efa->v1->co);
+ sub_v3_v3v3(vec, efa->v3->co, efa->v1->co);
if (plane[0]*plane[0]+plane[1]*plane[1]+plane[2]*plane[2] < vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2])
- VecCopyf(plane, vec);
+ copy_v3_v3(plane, vec);
}
}
- Normalize(plane);
+ normalize_v3(plane);
}
@@ -908,9 +908,9 @@ void EM_free_data_layer(EditMesh *em, CustomData *data, int type)
static void add_normal_aligned(float *nor, float *add)
{
if( INPR(nor, add) < -0.9999f)
- VecSubf(nor, nor, add);
+ sub_v3_v3v3(nor, nor, add);
else
- VecAddf(nor, nor, add);
+ add_v3_v3v3(nor, nor, add);
}
static void set_edge_directions_f2(EditMesh *em, int val)
@@ -1097,7 +1097,7 @@ short extrudeflag_edges_indiv(EditMesh *em, short flag, float *nor)
}
}
}
- Normalize(nor);
+ normalize_v3(nor);
/* set correct selection */
EM_clear_flag_all(em, SELECT);
@@ -1216,20 +1216,20 @@ static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *n
float mtx[4][4];
if (mmd->mirror_ob) {
float imtx[4][4];
- Mat4Invert(imtx, mmd->mirror_ob->obmat);
- Mat4MulMat4(mtx, obedit->obmat, imtx);
+ invert_m4_m4(imtx, mmd->mirror_ob->obmat);
+ mul_m4_m4m4(mtx, obedit->obmat, imtx);
}
for (eed= em->edges.first; eed; eed= eed->next) {
if(eed->f2 == 1) {
float co1[3], co2[3];
- VecCopyf(co1, eed->v1->co);
- VecCopyf(co2, eed->v2->co);
+ copy_v3_v3(co1, eed->v1->co);
+ copy_v3_v3(co2, eed->v2->co);
if (mmd->mirror_ob) {
- VecMat4MulVecfl(co1, mtx, co1);
- VecMat4MulVecfl(co2, mtx, co2);
+ mul_v3_m4v3(co1, mtx, co1);
+ mul_v3_m4v3(co2, mtx, co2);
}
if (mmd->flag & MOD_MIR_AXIS_X)
@@ -1380,7 +1380,7 @@ static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *n
}
}
- Normalize(nor); // translation normal grab
+ normalize_v3(nor); // translation normal grab
/* step 7: redo selection */
EM_clear_flag_all(em, SELECT);
@@ -1503,20 +1503,20 @@ short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor)
float mtx[4][4];
if (mmd->mirror_ob) {
float imtx[4][4];
- Mat4Invert(imtx, mmd->mirror_ob->obmat);
- Mat4MulMat4(mtx, obedit->obmat, imtx);
+ invert_m4_m4(imtx, mmd->mirror_ob->obmat);
+ mul_m4_m4m4(mtx, obedit->obmat, imtx);
}
for (eed= em->edges.first; eed; eed= eed->next) {
if(eed->f2 == 2) {
float co1[3], co2[3];
- VecCopyf(co1, eed->v1->co);
- VecCopyf(co2, eed->v2->co);
+ copy_v3_v3(co1, eed->v1->co);
+ copy_v3_v3(co2, eed->v2->co);
if (mmd->mirror_ob) {
- VecMat4MulVecfl(co1, mtx, co1);
- VecMat4MulVecfl(co2, mtx, co2);
+ mul_v3_m4v3(co1, mtx, co1);
+ mul_v3_m4v3(co2, mtx, co2);
}
if (mmd->flag & MOD_MIR_AXIS_X)
@@ -1652,7 +1652,7 @@ short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor)
efa= nextvl;
}
- Normalize(nor); // for grab
+ normalize_v3(nor); // for grab
/* for all vertices with eve->tmp.v!=0
if eve->f1==1: make edge
@@ -1704,7 +1704,7 @@ void rotateflag(EditMesh *em, short flag, float *cent, float rotmat[][3])
eve->co[0]-=cent[0];
eve->co[1]-=cent[1];
eve->co[2]-=cent[2];
- Mat3MulVecfl(rotmat,eve->co);
+ mul_m3_v3(rotmat,eve->co);
eve->co[0]+=cent[0];
eve->co[1]+=cent[1];
eve->co[2]+=cent[2];
@@ -1913,24 +1913,24 @@ void recalc_editnormals(EditMesh *em)
for(efa= em->faces.first; efa; efa=efa->next) {
if(efa->v4) {
- CalcNormFloat4(efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co, efa->n);
- CalcCent4f(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
- VecAddf(efa->v4->no, efa->v4->no, efa->n);
+ normal_quad_v3( efa->n,efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ cent_quad_v3(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ add_v3_v3v3(efa->v4->no, efa->v4->no, efa->n);
}
else {
- CalcNormFloat(efa->v1->co, efa->v2->co, efa->v3->co, efa->n);
- CalcCent3f(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co);
+ normal_tri_v3( efa->n,efa->v1->co, efa->v2->co, efa->v3->co);
+ cent_tri_v3(efa->cent, efa->v1->co, efa->v2->co, efa->v3->co);
}
- VecAddf(efa->v1->no, efa->v1->no, efa->n);
- VecAddf(efa->v2->no, efa->v2->no, efa->n);
- VecAddf(efa->v3->no, efa->v3->no, efa->n);
+ add_v3_v3v3(efa->v1->no, efa->v1->no, efa->n);
+ add_v3_v3v3(efa->v2->no, efa->v2->no, efa->n);
+ add_v3_v3v3(efa->v3->no, efa->v3->no, efa->n);
}
/* following Mesh convention; we use vertex coordinate itself for normal in this case */
for(eve= em->verts.first; eve; eve=eve->next) {
- if (Normalize(eve->no)==0.0) {
+ if (normalize_v3(eve->no)==0.0) {
VECCOPY(eve->no, eve->co);
- Normalize(eve->no);
+ normalize_v3(eve->no);
}
}
}
@@ -1996,8 +1996,8 @@ int convex(float *v1, float *v2, float *v3, float *v4)
float nor[3], nor1[3], nor2[3], vec[4][2];
/* define projection, do both trias apart, quad is undefined! */
- CalcNormFloat(v1, v2, v3, nor1);
- CalcNormFloat(v1, v3, v4, nor2);
+ normal_tri_v3( nor1,v1, v2, v3);
+ normal_tri_v3( nor2,v1, v3, v4);
nor[0]= ABS(nor1[0]) + ABS(nor2[0]);
nor[1]= ABS(nor1[1]) + ABS(nor2[1]);
nor[2]= ABS(nor1[2]) + ABS(nor2[2]);
@@ -2022,7 +2022,7 @@ int convex(float *v1, float *v2, float *v3, float *v4)
}
/* linetests, the 2 diagonals have to instersect to be convex */
- if( IsectLL2Df(vec[0], vec[2], vec[1], vec[3]) > 0 ) return 1;
+ if( isect_line_line_v2(vec[0], vec[2], vec[1], vec[3]) > 0 ) return 1;
return 0;
}
@@ -2037,22 +2037,22 @@ int convex(float *v1, float *v2, float *v3, float *v4)
float EM_face_area(EditFace *efa)
{
- if(efa->v4) return AreaQ3Dfl(efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
- else return AreaT3Dfl(efa->v1->co, efa->v2->co, efa->v3->co);
+ if(efa->v4) return area_quad_v3(efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ else return area_tri_v3(efa->v1->co, efa->v2->co, efa->v3->co);
}
float EM_face_perimeter(EditFace *efa)
{
if(efa->v4) return
- VecLenf(efa->v1->co, efa->v2->co)+
- VecLenf(efa->v2->co, efa->v3->co)+
- VecLenf(efa->v3->co, efa->v4->co)+
- VecLenf(efa->v4->co, efa->v1->co);
+ len_v3v3(efa->v1->co, efa->v2->co)+
+ len_v3v3(efa->v2->co, efa->v3->co)+
+ len_v3v3(efa->v3->co, efa->v4->co)+
+ len_v3v3(efa->v4->co, efa->v1->co);
else return
- VecLenf(efa->v1->co, efa->v2->co)+
- VecLenf(efa->v2->co, efa->v3->co)+
- VecLenf(efa->v3->co, efa->v1->co);
+ len_v3v3(efa->v1->co, efa->v2->co)+
+ len_v3v3(efa->v2->co, efa->v3->co)+
+ len_v3v3(efa->v3->co, efa->v1->co);
}
void EM_fgon_flags(EditMesh *em)
@@ -2240,7 +2240,7 @@ UvVertMap *EM_make_uv_vert_map(EditMesh *em, int selected, int do_face_idx_array
tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
uv2 = tf->uv[iterv->tfindex];
- Vec2Subf(uvdiff, uv2, uv);
+ sub_v2_v2v2(uvdiff, uv2, uv);
if(fabs(uv[0]-uv2[0]) < limit[0] && fabs(uv[1]-uv2[1]) < limit[1]) {
if(lastv) lastv->next= next;
diff --git a/source/blender/editors/mesh/editmesh_loop.c b/source/blender/editors/mesh/editmesh_loop.c
index 3dc9c81a213..fd665f07767 100644
--- a/source/blender/editors/mesh/editmesh_loop.c
+++ b/source/blender/editors/mesh/editmesh_loop.c
@@ -49,7 +49,7 @@ editmesh_loop: tools with own drawing subloops, select, knife, subdiv
#include "DNA_windowmanager_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_ghash.h"
@@ -672,7 +672,7 @@ static int knife_cut_exec(bContext *C, wmOperator *op)
scr = MEM_mallocN(sizeof(float)*2, "Vertex Screen Coordinates");
VECCOPY(co, eve->co);
co[3]= 1.0;
- Mat4MulVec4fl(obedit->obmat, co);
+ mul_m4_v4(obedit->obmat, co);
project_float(ar, co, scr);
BLI_ghash_insert(gh, eve, scr);
eve->f1 = 0; /*store vertex intersection flag here*/
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index 737f658d46f..8501b7fba92 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -53,7 +53,7 @@ editmesh_mods.c, UI level access, no geometry changes
#include "DNA_view3d_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -82,6 +82,7 @@ editmesh_mods.c, UI level access, no geometry changes
#include "RNA_access.h"
#include "RNA_define.h"
+#include "RNA_enum_types.h"
#include "ED_mesh.h"
#include "ED_screen.h"
@@ -482,14 +483,17 @@ static void findnearestedge__doClosest(void *userData, EditEdge *eed, int x0, in
struct { ViewContext vc; float mval[2]; int dist; EditEdge *closest; } *data = userData;
float v1[2], v2[2];
int distance;
-
+
+ ED_view3d_local_clipping(data->vc.rv3d, data->vc.obedit->obmat); /* for local clipping lookups */
+
v1[0] = x0;
v1[1] = y0;
v2[0] = x1;
v2[1] = y1;
-
- distance= PdistVL2Dfl(data->mval, v1, v2);
-
+
+ distance= dist_to_line_segment_v2(data->mval, v1, v2);
+
+
if(eed->f & SELECT) distance+=5;
if(distance < data->dist) {
if(data->vc.rv3d->rflag & RV3D_CLIPPING) {
@@ -499,9 +503,8 @@ static void findnearestedge__doClosest(void *userData, EditEdge *eed, int x0, in
vec[0]= eed->v1->co[0] + labda*(eed->v2->co[0] - eed->v1->co[0]);
vec[1]= eed->v1->co[1] + labda*(eed->v2->co[1] - eed->v1->co[1]);
vec[2]= eed->v1->co[2] + labda*(eed->v2->co[2] - eed->v1->co[2]);
- Mat4MulVecfl(data->vc.obedit->obmat, vec);
- if(view3d_test_clipping(data->vc.rv3d, vec)==0) {
+ if(view3d_test_clipping(data->vc.rv3d, vec, 1)==0) {
data->dist = distance;
data->closest = eed;
}
@@ -825,7 +828,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
float angle;
for(efa= em->faces.first; efa; efa= efa->next) {
if (!(efa->f & SELECT) && !efa->h) {
- angle= RAD2DEG(VecAngle2(base_efa->n, efa->n));
+ angle= RAD2DEG(angle_v2v2(base_efa->n, efa->n));
if (angle/180.0<=thresh) {
EM_select_face(efa, 1);
selcount++;
@@ -837,12 +840,12 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
}
} else if (mode==SIMFACE_COPLANAR) { /* same planer */
float angle, base_dot, dot;
- base_dot= Inpf(base_efa->cent, base_efa->n);
+ base_dot= dot_v3v3(base_efa->cent, base_efa->n);
for(efa= em->faces.first; efa; efa= efa->next) {
if (!(efa->f & SELECT) && !efa->h) {
- angle= RAD2DEG(VecAngle2(base_efa->n, efa->n));
+ angle= RAD2DEG(angle_v2v2(base_efa->n, efa->n));
if (angle/180.0<=thresh) {
- dot=Inpf(efa->cent, base_efa->n);
+ dot=dot_v3v3(efa->cent, base_efa->n);
if (fabs(base_dot-dot) <= thresh) {
EM_select_face(efa, 1);
selcount++;
@@ -916,7 +919,7 @@ static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mod
if (mode==SIMEDGE_LENGTH) { /*store length*/
for(eed= em->edges.first; eed; eed= eed->next) {
if (!eed->h) /* dont calc data for hidden edges*/
- eed->tmp.fp= VecLenf(eed->v1->co, eed->v2->co);
+ eed->tmp.fp= len_v3v3(eed->v1->co, eed->v2->co);
}
} else if (mode==SIMEDGE_FACE) { /*store face users*/
EditFace *efa;
@@ -959,7 +962,7 @@ static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mod
else if (eed->f2==0) /* first access, assign the face */
eed->tmp.f= efa;
else if (eed->f2==1) /* second, we assign the angle*/
- eed->tmp.fp= RAD2DEG(VecAngle2(eed->tmp.f->n, efa->n))/180;
+ eed->tmp.fp= RAD2DEG(angle_v2v2(eed->tmp.f->n, efa->n))/180;
eed->f2++; /* f2==0 no face assigned. f2==1 one face found. f2==2 angle calculated.*/
}
j++;
@@ -985,11 +988,11 @@ static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mod
}
} else if (mode==SIMEDGE_DIR) { /* same direction */
float base_dir[3], dir[3], angle;
- VecSubf(base_dir, base_eed->v1->co, base_eed->v2->co);
+ sub_v3_v3v3(base_dir, base_eed->v1->co, base_eed->v2->co);
for(eed= em->edges.first; eed; eed= eed->next) {
if (!(eed->f & SELECT) && !eed->h) {
- VecSubf(dir, eed->v1->co, eed->v2->co);
- angle= RAD2DEG(VecAngle2(base_dir, dir));
+ sub_v3_v3v3(dir, eed->v1->co, eed->v2->co);
+ angle= RAD2DEG(angle_v2v2(base_dir, dir));
if (angle>90) /* use the smallest angle between the edges */
angle= fabs(angle-180.0f);
@@ -1161,7 +1164,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
float angle;
for(eve= em->verts.first; eve; eve= eve->next) {
if (!(eve->f & SELECT) && !eve->h) {
- angle= RAD2DEG(VecAngle2(base_eve->no, eve->no));
+ angle= RAD2DEG(angle_v2v2(base_eve->no, eve->no));
if (angle/180.0<=thresh) {
eve->f |= SELECT;
selcount++;
@@ -1388,34 +1391,34 @@ void EM_mesh_copy_edge(EditMesh *em, short type)
break;
case 3: /* copy length */
- eed_len_act = VecLenf(eed_act->v1->co, eed_act->v2->co);
+ eed_len_act = len_v3v3(eed_act->v1->co, eed_act->v2->co);
for(eed=em->edges.first; eed; eed=eed->next) {
if (eed->f & SELECT && eed != eed_act) {
- eed_len = VecLenf(eed->v1->co, eed->v2->co);
+ eed_len = len_v3v3(eed->v1->co, eed->v2->co);
if (eed_len == eed_len_act) continue;
/* if this edge is zero length we cont do anything with it*/
if (eed_len == 0.0f) continue;
if (eed_len_act == 0.0f) {
- VecAddf(vec_mid, eed->v1->co, eed->v2->co);
- VecMulf(vec_mid, 0.5);
+ add_v3_v3v3(vec_mid, eed->v1->co, eed->v2->co);
+ mul_v3_fl(vec_mid, 0.5);
VECCOPY(eed->v1->co, vec_mid);
VECCOPY(eed->v2->co, vec_mid);
} else {
/* copy the edge length */
- VecAddf(vec_mid, eed->v1->co, eed->v2->co);
- VecMulf(vec_mid, 0.5);
+ add_v3_v3v3(vec_mid, eed->v1->co, eed->v2->co);
+ mul_v3_fl(vec_mid, 0.5);
/* SCALE 1 */
- VecSubf(vec, eed->v1->co, vec_mid);
- VecMulf(vec, eed_len_act/eed_len);
- VecAddf(eed->v1->co, vec, vec_mid);
+ sub_v3_v3v3(vec, eed->v1->co, vec_mid);
+ mul_v3_fl(vec, eed_len_act/eed_len);
+ add_v3_v3v3(eed->v1->co, vec, vec_mid);
/* SCALE 2 */
- VecSubf(vec, eed->v2->co, vec_mid);
- VecMulf(vec, eed_len_act/eed_len);
- VecAddf(eed->v2->co, vec, vec_mid);
+ sub_v3_v3v3(vec, eed->v2->co, vec_mid);
+ mul_v3_fl(vec, eed_len_act/eed_len);
+ add_v3_v3v3(eed->v2->co, vec, vec_mid);
}
change = 1;
}
@@ -2220,7 +2223,7 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot)
/* here actual select happens */
/* gets called via generic mouse select operator */
-void mouse_mesh(bContext *C, short mval[2], short extend)
+int mouse_mesh(bContext *C, short mval[2], short extend)
{
ViewContext vc;
EditVert *eve;
@@ -2279,10 +2282,13 @@ void mouse_mesh(bContext *C, short mval[2], short extend)
vc.em->mat_nr= efa->mat_nr;
// BIF_preview_changed(ID_MA);
}
- }
- WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data);
+ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data);
+
+ return 1;
+ }
+ return 0;
}
/* *********** select linked ************* */
@@ -2400,6 +2406,15 @@ static int select_linked_limited_invoke(ViewContext *vc, short all, short sel)
#undef is_face_tag
#undef face_tag
+static void linked_limit_default(bContext *C, wmOperator *op) {
+ if(!RNA_property_is_set(op->ptr, "limit")) {
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh(obedit->data);
+ if(em->selectmode == SCE_SELECT_FACE)
+ RNA_boolean_set(op->ptr, "limit", TRUE);
+ }
+}
+
static int select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
Object *obedit= CTX_data_edit_object(C);
@@ -2409,8 +2424,12 @@ static int select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent *event
EditFace *efa;
short done=1, toggle=0;
int sel= !RNA_boolean_get(op->ptr, "deselect");
- int limit= RNA_boolean_get(op->ptr, "limit");
+ int limit;
+ linked_limit_default(C, op);
+
+ limit = RNA_boolean_get(op->ptr, "limit");
+
/* unified_finednearest needs ogl */
view3d_operator_needs_opengl(C);
@@ -2571,6 +2590,12 @@ static int select_linked_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+static int select_linked_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ linked_limit_default(C, op);
+ return select_linked_exec(C, op);
+}
+
void MESH_OT_select_linked(wmOperatorType *ot)
{
/* identifiers */
@@ -2580,6 +2605,7 @@ void MESH_OT_select_linked(wmOperatorType *ot)
/* api callbacks */
ot->exec= select_linked_exec;
+ ot->invoke= select_linked_invoke;
ot->poll= ED_operator_editmesh;
/* flags */
@@ -3638,21 +3664,11 @@ void EM_deselect_by_material(EditMesh *em, int index)
static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val)
{
if(val>0) {
- if(val==1) {
- em->selectmode= SCE_SELECT_VERTEX;
- EM_selectmode_set(em);
- }
- else if(val==2) {
- //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE);
- em->selectmode= SCE_SELECT_EDGE;
- EM_selectmode_set(em);
- }
-
- else{
- //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE);
- em->selectmode= SCE_SELECT_FACE;
- EM_selectmode_set(em);
- }
+ //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE);
+ //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE);
+
+ em->selectmode= val;
+ EM_selectmode_set(em);
/* note, em stores selectmode to be able to pass it on everywhere without scene,
this is only until all select modes and toolsettings are settled more */
@@ -3661,13 +3677,6 @@ static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val)
}
}
-static EnumPropertyItem prop_mesh_edit_types[] = {
- {1, "VERT", ICON_VERTEXSEL, "Vertices", ""},
- {2, "EDGE", ICON_EDGESEL, "Edges", ""},
- {3, "FACE", ICON_FACESEL, "Faces", ""},
- {0, NULL, 0, NULL, NULL}
-};
-
static int mesh_selection_type_exec(bContext *C, wmOperator *op)
{
ToolSettings *ts= CTX_data_tool_settings(C);
@@ -3677,6 +3686,7 @@ static int mesh_selection_type_exec(bContext *C, wmOperator *op)
mesh_selection_type(ts, em, RNA_enum_get(op->ptr,"type"));
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
+ WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
@@ -3696,10 +3706,10 @@ void MESH_OT_selection_type(wmOperatorType *ot)
ot->poll= ED_operator_editmesh;
/* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ ot->flag= OPTYPE_UNDO;
/* props */
- RNA_def_enum(ot->srna, "type", prop_mesh_edit_types, 0, "Type", "Set the mesh selection type");
+ RNA_def_enum(ot->srna, "type", mesh_select_mode_items, 0, "Type", "Set the mesh selection type");
}
/* ************************* SEAMS AND EDGES **************** */
@@ -3873,7 +3883,7 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning *
while(efa) {
if(efa->f1) {
- CalcCent3f(cent, efa->v1->co, efa->v2->co, efa->v3->co);
+ cent_tri_v3(cent, efa->v1->co, efa->v2->co, efa->v3->co);
cent[0]= cent[0]*cent[0] + cent[1]*cent[1] + cent[2]*cent[2];
if(cent[0]>maxx) {
@@ -3882,7 +3892,7 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning *
tria_nr= 0;
}
if(efa->v4) {
- CalcCent3f(cent, efa->v1->co, efa->v3->co, efa->v4->co);
+ cent_tri_v3(cent, efa->v1->co, efa->v3->co, efa->v4->co);
cent[0]= cent[0]*cent[0] + cent[1]*cent[1] + cent[2]*cent[2];
if(cent[0]>maxx) {
@@ -3901,11 +3911,11 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning *
/* set first face correct: calc normal */
if(tria_nr==1) {
- CalcNormFloat(startvl->v1->co, startvl->v3->co, startvl->v4->co, nor);
- CalcCent3f(cent, startvl->v1->co, startvl->v3->co, startvl->v4->co);
+ normal_tri_v3( nor,startvl->v1->co, startvl->v3->co, startvl->v4->co);
+ cent_tri_v3(cent, startvl->v1->co, startvl->v3->co, startvl->v4->co);
} else {
- CalcNormFloat(startvl->v1->co, startvl->v2->co, startvl->v3->co, nor);
- CalcCent3f(cent, startvl->v1->co, startvl->v2->co, startvl->v3->co);
+ normal_tri_v3( nor,startvl->v1->co, startvl->v2->co, startvl->v3->co);
+ cent_tri_v3(cent, startvl->v1->co, startvl->v2->co, startvl->v3->co);
}
/* first normal is oriented this way or the other */
if(select) {
@@ -4115,9 +4125,9 @@ void faceselect_align_view_to_selected(View3D *v3d, RegionView3D *rv3d, Mesh *me
v3= me->mvert[mf->v3].co;
if (mf->v4) {
float *v4= me->mvert[mf->v4].co;
- CalcNormFloat4(v1, v2, v3, v4, fno);
+ normal_quad_v3( fno,v1, v2, v3, v4);
} else {
- CalcNormFloat(v1, v2, v3, fno);
+ normal_tri_v3( fno,v1, v2, v3);
}
norm[0]+= fno[0];
@@ -4140,18 +4150,18 @@ static void face_getnormal_obspace(Object *obedit, EditFace *efa, float *fno)
float vec[4][3];
VECCOPY(vec[0], efa->v1->co);
- Mat4Mul3Vecfl(obedit->obmat, vec[0]);
+ mul_mat3_m4_v3(obedit->obmat, vec[0]);
VECCOPY(vec[1], efa->v2->co);
- Mat4Mul3Vecfl(obedit->obmat, vec[1]);
+ mul_mat3_m4_v3(obedit->obmat, vec[1]);
VECCOPY(vec[2], efa->v3->co);
- Mat4Mul3Vecfl(obedit->obmat, vec[2]);
+ mul_mat3_m4_v3(obedit->obmat, vec[2]);
if(efa->v4) {
VECCOPY(vec[3], efa->v4->co);
- Mat4Mul3Vecfl(obedit->obmat, vec[3]);
+ mul_mat3_m4_v3(obedit->obmat, vec[3]);
- CalcNormFloat4(vec[0], vec[1], vec[2], vec[3], fno);
+ normal_quad_v3( fno,vec[0], vec[1], vec[2], vec[3]);
}
- else CalcNormFloat(vec[0], vec[1], vec[2], fno);
+ else normal_tri_v3( fno,vec[0], vec[1], vec[2]);
}
@@ -4187,7 +4197,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, wmOperator *o
if (eve->f & SELECT) {
if (leve) {
float tno[3];
- CalcNormFloat(cent, leve->co, eve->co, tno);
+ normal_tri_v3( tno,cent, leve->co, eve->co);
/* XXX, fixme, should be flipped intp a
* consistent direction. -zr
@@ -4200,7 +4210,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, wmOperator *o
}
}
- Mat4Mul3Vecfl(obedit->obmat, norm);
+ mul_mat3_m4_v3(obedit->obmat, norm);
view3d_align_axis_to_vector(v3d, rv3d, axis, norm);
}
else if (nselverts==2) { /* Align view to edge (or 2 verts) */
@@ -4217,7 +4227,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, wmOperator *o
leve= eve;
}
}
- Mat4Mul3Vecfl(obedit->obmat, norm);
+ mul_mat3_m4_v3(obedit->obmat, norm);
view3d_align_axis_to_vector(v3d, rv3d, axis, norm);
}
else if (nselverts==1) { /* Align view to vert normal */
@@ -4231,7 +4241,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, wmOperator *o
break; /* we know this is the only selected vert, so no need to keep looking */
}
}
- Mat4Mul3Vecfl(obedit->obmat, norm);
+ mul_mat3_m4_v3(obedit->obmat, norm);
view3d_align_axis_to_vector(v3d, rv3d, axis, norm);
}
}
@@ -4312,11 +4322,11 @@ static int smooth_vertex(bContext *C, wmOperator *op)
if((eed->v1->f & SELECT) && eed->v1->f1<255) {
eed->v1->f1++;
- VecAddf(eed->v1->tmp.p, eed->v1->tmp.p, fvec);
+ add_v3_v3v3(eed->v1->tmp.p, eed->v1->tmp.p, fvec);
}
if((eed->v2->f & SELECT) && eed->v2->f1<255) {
eed->v2->f1++;
- VecAddf(eed->v2->tmp.p, eed->v2->tmp.p, fvec);
+ add_v3_v3v3(eed->v2->tmp.p, eed->v2->tmp.p, fvec);
}
}
eed= eed->next;
@@ -4435,7 +4445,7 @@ void vertexnoise(Object *obedit, EditMesh *em)
vec[1]= 0.2*(b2-BLI_hnoise(tex->noisesize, eve->co[0], eve->co[1]+ofs, eve->co[2]));
vec[2]= 0.2*(b2-BLI_hnoise(tex->noisesize, eve->co[0], eve->co[1], eve->co[2]+ofs));
- VecAddf(eve->co, eve->co, vec);
+ add_v3_v3v3(eve->co, eve->co, vec);
}
else {
float tin, dum;
@@ -4466,8 +4476,8 @@ void flipface(EditMesh *em, EditFace *efa)
EM_data_interp_from_faces(em, efa, NULL, efa, 0, 2, 1, 3);
}
- if(efa->v4) CalcNormFloat4(efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co, efa->n);
- else CalcNormFloat(efa->v1->co, efa->v2->co, efa->v3->co, efa->n);
+ if(efa->v4) normal_quad_v3( efa->n,efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ else normal_tri_v3( efa->n,efa->v1->co, efa->v2->co, efa->v3->co);
}
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index cea7ec33d3a..b89940fa882 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -58,7 +58,7 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise
#include "RNA_access.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
#include "BLI_ghash.h"
@@ -150,7 +150,7 @@ static void convert_to_triface(EditMesh *em, int direction)
if(efa->v4) {
if(efa->f & SELECT) {
/* choose shortest diagonal for split */
- fac= VecLenf(efa->v1->co, efa->v3->co) - VecLenf(efa->v2->co, efa->v4->co);
+ fac= len_v3v3(efa->v1->co, efa->v3->co) - len_v3v3(efa->v2->co, efa->v4->co);
/* this makes sure exact squares get split different in both cases */
if( (direction==0 && fac<FLT_EPSILON) || (direction && fac>0.0f) ) {
efan= EM_face_from_faces(em, efa, NULL, 0, 1, 2, -1);
@@ -689,8 +689,8 @@ void extrude_mesh(Scene *scene, Object *obedit, EditMesh *em, wmOperator *op)
else {
// initTransform(TFM_TRANSLATION, CTX_NO_PET|CTX_NO_MIRROR);
if(transmode=='n') {
- Mat4MulVecfl(obedit->obmat, nor);
- VecSubf(nor, nor, obedit->obmat[3]);
+ mul_m4_v3(obedit->obmat, nor);
+ sub_v3_v3v3(nor, nor, obedit->obmat[3]);
// BIF_setSingleAxisConstraint(nor, "along normal");
}
// Transform();
@@ -705,8 +705,7 @@ static int mesh_extrude_invoke(bContext *C, wmOperator *op, wmEvent *event)
Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
-// int constraint_axis[3] = {0, 0, 1};
-
+
extrude_mesh(scene, obedit, em, op);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -714,16 +713,6 @@ static int mesh_extrude_invoke(bContext *C, wmOperator *op, wmEvent *event)
DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
- RNA_enum_set(op->ptr, "proportional", 0);
- RNA_boolean_set(op->ptr, "mirror", 0);
-
- /* the following two should only be set when extruding faces */
-// RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
-// RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
-
-
-// WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
-
return OPERATOR_FINISHED;
}
@@ -816,15 +805,15 @@ static int extrude_repeat_mesh(bContext *C, wmOperator *op)
dvec[0]= rv3d->persinv[2][0];
dvec[1]= rv3d->persinv[2][1];
dvec[2]= rv3d->persinv[2][2];
- Normalize(dvec);
+ normalize_v3(dvec);
dvec[0]*= offs;
dvec[1]*= offs;
dvec[2]*= offs;
/* base correction */
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(tmat, bmat);
- Mat3MulVecfl(tmat, dvec);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(tmat, bmat);
+ mul_m3_v3(tmat, dvec);
for(a=0; a<steps; a++) {
extrudeflag(obedit, em, SELECT, nor);
@@ -879,30 +868,30 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float
RNA_float_get_array(op->ptr, "center", cent);
/* imat and center and size */
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(imat,bmat);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(imat,bmat);
cent[0]-= obedit->obmat[3][0];
cent[1]-= obedit->obmat[3][1];
cent[2]-= obedit->obmat[3][2];
- Mat3MulVecfl(imat, cent);
+ mul_m3_v3(imat, cent);
phi= degr*M_PI/360.0;
phi/= steps;
if(ts->editbutflag & B_CLOCKWISE) phi= -phi;
RNA_float_get_array(op->ptr, "axis", n);
- Normalize(n);
+ normalize_v3(n);
q[0]= (float)cos(phi);
si= (float)sin(phi);
q[1]= n[0]*si;
q[2]= n[1]*si;
q[3]= n[2]*si;
- QuatToMat3(q, cmat);
+ quat_to_mat3( cmat,q);
- Mat3MulMat3(tmat,cmat,bmat);
- Mat3MulMat3(bmat,imat,tmat);
+ mul_m3_m3m3(tmat,cmat,bmat);
+ mul_m3_m3m3(bmat,imat,tmat);
if(dupli==0)
if(ts->editbutflag & B_KEEPORIG)
@@ -917,7 +906,7 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float
rotateflag(em, SELECT, cent, bmat);
if(dvec) {
- Mat3MulVecfl(bmat,dvec);
+ mul_m3_v3(bmat,dvec);
translateflag(em, SELECT, dvec);
}
}
@@ -1362,8 +1351,8 @@ static void alter_co(float *co, EditEdge *edge, float smooth, float fractal, int
/* we calculate an offset vector vec1[], to be added to *co */
float len, fac, nor[3], nor1[3], nor2[3];
- VecSubf(nor, edge->v1->co, edge->v2->co);
- len= 0.5f*Normalize(nor);
+ sub_v3_v3v3(nor, edge->v1->co, edge->v2->co);
+ len= 0.5f*normalize_v3(nor);
VECCOPY(nor1, edge->v1->no);
VECCOPY(nor2, edge->v2->no);
@@ -1394,18 +1383,18 @@ static void alter_co(float *co, EditEdge *edge, float smooth, float fractal, int
co[2] += vec1[2];
}
else if(beauty & B_SPHERE) { /* subdivide sphere */
- Normalize(co);
+ normalize_v3(co);
co[0]*= smooth;
co[1]*= smooth;
co[2]*= smooth;
}
if(beauty & B_FRACTAL) {
- fac= fractal*VecLenf(edge->v1->co, edge->v2->co);
+ fac= fractal*len_v3v3(edge->v1->co, edge->v2->co);
vec1[0]= fac*(float)(0.5-BLI_drand());
vec1[1]= fac*(float)(0.5-BLI_drand());
vec1[2]= fac*(float)(0.5-BLI_drand());
- VecAddf(co, co, vec1);
+ add_v3_v3v3(co, co, vec1);
}
}
@@ -1446,7 +1435,7 @@ static EditVert *subdivide_edge_addvert(EditMesh *em, EditEdge *edge, float smoo
ev->no[0] = (edge->v2->no[0]-edge->v1->no[0])*percent + edge->v1->no[0];
ev->no[1] = (edge->v2->no[1]-edge->v1->no[1])*percent + edge->v1->no[1];
ev->no[2] = (edge->v2->no[2]-edge->v1->no[2])*percent + edge->v1->no[2];
- Normalize(ev->no);
+ normalize_v3(ev->no);
return ev;
}
@@ -1475,11 +1464,11 @@ static void facecopy(EditMesh *em, EditFace *source, EditFace *target)
target->flag = source->flag;
target->h = source->h;
- InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v1->co, w[0]);
- InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v2->co, w[1]);
- InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v3->co, w[2]);
+ interp_weights_face_v3( w[0],v1, v2, v3, v4, target->v1->co);
+ interp_weights_face_v3( w[1],v1, v2, v3, v4, target->v2->co);
+ interp_weights_face_v3( w[2],v1, v2, v3, v4, target->v3->co);
if (target->v4)
- InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v4->co, w[3]);
+ interp_weights_face_v3( w[3],v1, v2, v3, v4, target->v4->co);
CustomData_em_interp(&em->fdata, &source->data, NULL, (float*)w, 1, target->data);
}
@@ -2623,15 +2612,15 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float
VECCOPY(v2mat, ef->v2->co);
VECCOPY(v3mat, ef->v3->co);
VECCOPY(v4mat, ef->v4->co);
- Mat4Mul3Vecfl(obedit->obmat, v1mat);
- Mat4Mul3Vecfl(obedit->obmat, v2mat);
- Mat4Mul3Vecfl(obedit->obmat, v3mat);
- Mat4Mul3Vecfl(obedit->obmat, v4mat);
-
- length[0] = VecLenf(v1mat, v2mat);
- length[1] = VecLenf(v2mat, v3mat);
- length[2] = VecLenf(v3mat, v4mat);
- length[3] = VecLenf(v4mat, v1mat);
+ mul_mat3_m4_v3(obedit->obmat, v1mat);
+ mul_mat3_m4_v3(obedit->obmat, v2mat);
+ mul_mat3_m4_v3(obedit->obmat, v3mat);
+ mul_mat3_m4_v3(obedit->obmat, v4mat);
+
+ length[0] = len_v3v3(v1mat, v2mat);
+ length[1] = len_v3v3(v2mat, v3mat);
+ length[2] = len_v3v3(v3mat, v4mat);
+ length[3] = len_v3v3(v4mat, v1mat);
sort[0] = ef->e1;
sort[1] = ef->e2;
sort[2] = ef->e3;
@@ -3121,43 +3110,43 @@ static float measure_facepair(EditVert *v1, EditVert *v2, EditVert *v3, EditVert
minarea, maxarea, areaA, areaB;
/*First Test: Normal difference*/
- CalcNormFloat(v1->co, v2->co, v3->co, noA1);
- CalcNormFloat(v1->co, v3->co, v4->co, noA2);
+ normal_tri_v3( noA1,v1->co, v2->co, v3->co);
+ normal_tri_v3( noA2,v1->co, v3->co, v4->co);
if(noA1[0] == noA2[0] && noA1[1] == noA2[1] && noA1[2] == noA2[2]) normalADiff = 0.0;
- else normalADiff = RAD2DEG(VecAngle2(noA1, noA2));
+ else normalADiff = RAD2DEG(angle_v2v2(noA1, noA2));
//if(!normalADiff) normalADiff = 179;
- CalcNormFloat(v2->co, v3->co, v4->co, noB1);
- CalcNormFloat(v4->co, v1->co, v2->co, noB2);
+ normal_tri_v3( noB1,v2->co, v3->co, v4->co);
+ normal_tri_v3( noB2,v4->co, v1->co, v2->co);
if(noB1[0] == noB2[0] && noB1[1] == noB2[1] && noB1[2] == noB2[2]) normalBDiff = 0.0;
- else normalBDiff = RAD2DEG(VecAngle2(noB1, noB2));
+ else normalBDiff = RAD2DEG(angle_v2v2(noB1, noB2));
//if(!normalBDiff) normalBDiff = 179;
measure += (normalADiff/360) + (normalBDiff/360);
if(measure > limit) return measure;
/*Second test: Colinearity*/
- VecSubf(edgeVec1, v1->co, v2->co);
- VecSubf(edgeVec2, v2->co, v3->co);
- VecSubf(edgeVec3, v3->co, v4->co);
- VecSubf(edgeVec4, v4->co, v1->co);
+ sub_v3_v3v3(edgeVec1, v1->co, v2->co);
+ sub_v3_v3v3(edgeVec2, v2->co, v3->co);
+ sub_v3_v3v3(edgeVec3, v3->co, v4->co);
+ sub_v3_v3v3(edgeVec4, v4->co, v1->co);
diff = 0.0;
diff = (
- fabs(RAD2DEG(VecAngle2(edgeVec1, edgeVec2)) - 90) +
- fabs(RAD2DEG(VecAngle2(edgeVec2, edgeVec3)) - 90) +
- fabs(RAD2DEG(VecAngle2(edgeVec3, edgeVec4)) - 90) +
- fabs(RAD2DEG(VecAngle2(edgeVec4, edgeVec1)) - 90)) / 360;
+ fabs(RAD2DEG(angle_v2v2(edgeVec1, edgeVec2)) - 90) +
+ fabs(RAD2DEG(angle_v2v2(edgeVec2, edgeVec3)) - 90) +
+ fabs(RAD2DEG(angle_v2v2(edgeVec3, edgeVec4)) - 90) +
+ fabs(RAD2DEG(angle_v2v2(edgeVec4, edgeVec1)) - 90)) / 360;
if(!diff) return 0.0;
measure += diff;
if(measure > limit) return measure;
/*Third test: Concavity*/
- areaA = AreaT3Dfl(v1->co, v2->co, v3->co) + AreaT3Dfl(v1->co, v3->co, v4->co);
- areaB = AreaT3Dfl(v2->co, v3->co, v4->co) + AreaT3Dfl(v4->co, v1->co, v2->co);
+ areaA = area_tri_v3(v1->co, v2->co, v3->co) + area_tri_v3(v1->co, v3->co, v4->co);
+ areaB = area_tri_v3(v2->co, v3->co, v4->co) + area_tri_v3(v4->co, v1->co, v2->co);
if(areaA <= areaB) minarea = areaA;
else minarea = areaB;
@@ -3259,7 +3248,7 @@ void join_triangles(EditMesh *em)
EVPtr *efaa = NULL;
float *creases = NULL;
float measure; /*Used to set tolerance*/
- float limit = 0.0f; // XXX scene->toolsettings->jointrilimit;
+ float limit = 0.8f; // XXX scene->toolsettings->jointrilimit;
int i, ok, totedge=0, totseledge=0, complexedges, vindex[4];
/*if we take a long time on very dense meshes we want waitcursor to display*/
@@ -4370,9 +4359,9 @@ useless:
}
if(prop == 0) {
- len = VecLenf(upVert->co,downVert->co)*((perc+1)/2);
+ len = len_v3v3(upVert->co,downVert->co)*((perc+1)/2);
if(flip == 1) {
- len = VecLenf(upVert->co,downVert->co) - len;
+ len = len_v3v3(upVert->co,downVert->co) - len;
}
}
@@ -4387,7 +4376,7 @@ useless:
}
else
{
- len = MIN2(perc, VecLenf(upVert->co,downVert->co));
+ len = MIN2(perc, len_v3v3(upVert->co,downVert->co));
len = MAX2(len, 0);
}
}
@@ -4405,13 +4394,13 @@ useless:
tempsv = BLI_ghash_lookup(vertgh,ev);
tempev = editedge_getOtherVert((perc>=0)?tempsv->up:tempsv->down, ev);
- VecLerpf(ev->co, tempsv->origvert.co, tempev->co, fabs(perc));
+ interp_v3_v3v3(ev->co, tempsv->origvert.co, tempev->co, fabs(perc));
if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
- Vec2Lerpf(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc));
+ interp_v2_v2v2(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc));
fuv_link = suv->fuv_list;
while (fuv_link) {
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
@@ -4431,17 +4420,17 @@ useless:
float newlen;
ev = look->link;
tempsv = BLI_ghash_lookup(vertgh,ev);
- newlen = (len / VecLenf(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co));
+ newlen = (len / len_v3v3(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co));
if(newlen > 1.0) {newlen = 1.0;}
if(newlen < 0.0) {newlen = 0.0;}
if(flip == 0) {
- VecLerpf(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen));
+ interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen));
if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
/* dont do anything if no UVs */
for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
- Vec2Lerpf(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen));
+ interp_v2_v2v2(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen));
fuv_link = suv->fuv_list;
while (fuv_link) {
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
@@ -4451,14 +4440,14 @@ useless:
}
}
} else{
- VecLerpf(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen));
+ interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen));
if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
/* dont do anything if no UVs */
for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
- Vec2Lerpf(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen));
+ interp_v2_v2v2(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen));
fuv_link = suv->fuv_list;
while (fuv_link) {
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
@@ -4768,7 +4757,7 @@ static float mesh_rip_edgedist(ARegion *ar, float mat[][4], float *co1, float *c
mvalf[0]= (float)mval[0];
mvalf[1]= (float)mval[1];
- return PdistVL2Dfl(mvalf, vec1, vec2);
+ return dist_to_line_segment_v2(mvalf, vec1, vec2);
}
/* helper for below */
@@ -5120,11 +5109,11 @@ static int blend_from_shape_exec(bContext *C, wmOperator *op)
VECCOPY(co, data + eve->keyindex*3);
if(add) {
- VecMulf(co, blend);
- VecAddf(eve->co, eve->co, co);
+ mul_v3_fl(co, blend);
+ add_v3_v3v3(eve->co, eve->co, co);
}
else
- VecLerpf(eve->co, eve->co, co, blend);
+ interp_v3_v3v3(eve->co, eve->co, co, blend);
blended= 1;
}
@@ -5737,7 +5726,7 @@ static void em_snap_to_center(EditMesh *em)
for (eve=em->verts.first; eve; eve=eve->next) {
if (eve->f & SELECT) {
- VecAddf(cent, cent, eve->co);
+ add_v3_v3v3(cent, cent, eve->co);
i++;
}
}
@@ -5745,7 +5734,7 @@ static void em_snap_to_center(EditMesh *em)
if (!i)
return;
- VecMulf(cent, 1.0f / (float)i);
+ mul_v3_fl(cent, 1.0f / (float)i);
for (eve=em->verts.first; eve; eve=eve->next) {
if (eve->f & SELECT) {
@@ -5762,11 +5751,11 @@ static void em_snap_to_cursor(EditMesh *em, bContext *C)
EditVert *eve;
float co[3], *vco, invmat[4][4];
- Mat4Invert(invmat, ob->obmat);
+ invert_m4_m4(invmat, ob->obmat);
vco = give_cursor(scene, v3d);
VECCOPY(co, vco);
- Mat4MulVecfl(invmat, co);
+ mul_m4_v3(invmat, co);
for (eve=em->verts.first; eve; eve=eve->next) {
if (eve->f & SELECT) {
@@ -5987,7 +5976,7 @@ static int select_vertex_path_exec(bContext *C, wmOperator *op)
newpe = MEM_mallocN(sizeof(PathEdge), "Path Edge");
newpe->v = ((PathNode*)eed->v2->tmp.p)->u;
if(physical){
- newpe->w = VecLenf(eed->v1->co, eed->v2->co);
+ newpe->w = len_v3v3(eed->v1->co, eed->v2->co);
}
else newpe->w = 1;
newpe->next = 0;
@@ -5999,7 +5988,7 @@ static int select_vertex_path_exec(bContext *C, wmOperator *op)
newpe = MEM_mallocN(sizeof(PathEdge), "Path Edge");
newpe->v = ((PathNode*)eed->v1->tmp.p)->u;
if(physical){
- newpe->w = VecLenf(eed->v1->co, eed->v2->co);
+ newpe->w = len_v3v3(eed->v1->co, eed->v2->co);
}
else newpe->w = 1;
newpe->next = 0;
@@ -6813,20 +6802,20 @@ static void beauty_fill(EditMesh *em)
* the area divided by the total edge lengths
*/
- len1= VecLenf(v1->co, v2->co);
- len2= VecLenf(v2->co, v3->co);
- len3= VecLenf(v3->co, v4->co);
- len4= VecLenf(v4->co, v1->co);
- len5= VecLenf(v1->co, v3->co);
- len6= VecLenf(v2->co, v4->co);
+ len1= len_v3v3(v1->co, v2->co);
+ len2= len_v3v3(v2->co, v3->co);
+ len3= len_v3v3(v3->co, v4->co);
+ len4= len_v3v3(v4->co, v1->co);
+ len5= len_v3v3(v1->co, v3->co);
+ len6= len_v3v3(v2->co, v4->co);
- opp1= AreaT3Dfl(v1->co, v2->co, v3->co);
- opp2= AreaT3Dfl(v1->co, v3->co, v4->co);
+ opp1= area_tri_v3(v1->co, v2->co, v3->co);
+ opp2= area_tri_v3(v1->co, v3->co, v4->co);
fac1= opp1/(len1+len2+len5) + opp2/(len3+len4+len5);
- opp1= AreaT3Dfl(v2->co, v3->co, v4->co);
- opp2= AreaT3Dfl(v2->co, v4->co, v1->co);
+ opp1= area_tri_v3(v2->co, v3->co, v4->co);
+ opp2= area_tri_v3(v2->co, v4->co, v1->co);
fac2= opp1/(len2+len3+len6) + opp2/(len4+len1+len6);
diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c
index 94a7dbebb9c..0285faf7949 100644
--- a/source/blender/editors/mesh/mesh_data.c
+++ b/source/blender/editors/mesh/mesh_data.c
@@ -38,6 +38,7 @@
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
#include "BKE_context.h"
@@ -49,7 +50,7 @@
#include "BKE_mesh.h"
#include "BKE_report.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_edgehash.h"
@@ -63,6 +64,8 @@
#include "ED_object.h"
#include "ED_view3d.h"
+#include "RE_render_ext.h"
+
#include "mesh_intern.h"
static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *layer)
@@ -193,11 +196,12 @@ int ED_mesh_uv_texture_add(bContext *C, Scene *scene, Object *ob, Mesh *me)
int ED_mesh_uv_texture_remove(bContext *C, Object *ob, Mesh *me)
{
+ CustomData *data= (me->edit_mesh)? &me->edit_mesh->fdata: &me->fdata;
CustomDataLayer *cdl;
int index;
- index= CustomData_get_active_layer_index(&me->fdata, CD_MTFACE);
- cdl= (index == -1)? NULL: &me->fdata.layers[index];
+ index= CustomData_get_active_layer_index(data, CD_MTFACE);
+ cdl= (index == -1) ? NULL: &data->layers[index];
if(!cdl)
return 0;
@@ -252,11 +256,12 @@ int ED_mesh_color_add(bContext *C, Scene *scene, Object *ob, Mesh *me)
int ED_mesh_color_remove(bContext *C, Object *ob, Mesh *me)
{
+ CustomData *data= (me->edit_mesh)? &me->edit_mesh->fdata: &me->fdata;
CustomDataLayer *cdl;
int index;
- index= CustomData_get_active_layer_index(&me->fdata, CD_MCOL);
- cdl= (index == -1)? NULL: &me->fdata.layers[index];
+ index= CustomData_get_active_layer_index(data, CD_MCOL);
+ cdl= (index == -1)? NULL: &data->layers[index];
if(!cdl)
return 0;
@@ -389,13 +394,15 @@ void MESH_OT_vertex_color_remove(wmOperatorType *ot)
static int sticky_add_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
+ View3D *v3d= CTX_wm_view3d(C);
Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
Mesh *me= ob->data;
- if(me->msticky)
- return OPERATOR_CANCELLED;
+ /*if(me->msticky)
+ return OPERATOR_CANCELLED;*/
- // XXX RE_make_sticky();
+ RE_make_sticky(scene, v3d);
DAG_id_flush_update(&me->id, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
@@ -459,7 +466,7 @@ static void mesh_calc_edges(Mesh *mesh, int update)
MFace *mf = mesh->mface;
MEdge *med, *med_orig;
EdgeHash *eh = BLI_edgehash_new();
- int i, *index, totedge, totface = mesh->totface;
+ int i, totedge, totface = mesh->totface;
if(mesh->totedge==0)
update= 0;
@@ -498,7 +505,7 @@ static void mesh_calc_edges(Mesh *mesh, int update)
ehi = BLI_edgehashIterator_new(eh);
med = CustomData_get_layer(&edata, CD_MEDGE);
for(i = 0; !BLI_edgehashIterator_isDone(ehi);
- BLI_edgehashIterator_step(ehi), ++i, ++med, ++index) {
+ BLI_edgehashIterator_step(ehi), ++i, ++med) {
if(update && (med_orig=BLI_edgehashIterator_getValue(ehi))) {
*med= *med_orig; /* copy from the original */
@@ -566,7 +573,7 @@ void ED_mesh_transform(Mesh *me, float *mat)
MVert *mvert= me->mvert;
for(i= 0; i < me->totvert; i++, mvert++)
- Mat4MulVecfl((float (*)[4])mat, mvert->co);
+ mul_m4_v3((float (*)[4])mat, mvert->co);
mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL);
}
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 9f16e7adbf8..1363d8b2102 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -39,7 +39,7 @@
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -153,17 +153,27 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_loopcut);
}
+int ED_operator_editmesh_face_select(bContext *C)
+{
+ Object *obedit= CTX_data_edit_object(C);
+ if(obedit && obedit->type==OB_MESH) {
+ EditMesh *em = ((Mesh *)obedit->data)->edit_mesh;
+ if (em && em->selectmode & SCE_SELECT_FACE) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
void ED_operatormacros_mesh(void)
{
wmOperatorType *ot;
wmOperatorTypeMacro *otmacro;
-
- /*combining operators with invoke and exec portions doesn't work yet.
+ int constraint_axis[3] = {0, 0, 1};
- ot= WM_operatortype_append_macro("MESH_OT_loopcut", "Loopcut", OPTYPE_UNDO|OPTYPE_REGISTER);
- WM_operatortype_macro_define(ot, "MESH_OT_edgering_select");
- WM_operatortype_macro_define(ot, "MESH_OT_subdivide");
- */
+ ot= WM_operatortype_append_macro("MESH_OT_loopcut_slide", "Loopcut and Slide", OPTYPE_UNDO|OPTYPE_REGISTER);
+ WM_operatortype_macro_define(ot, "MESH_OT_loopcut");
+ WM_operatortype_macro_define(ot, "TFM_OT_edge_slide");
ot= WM_operatortype_append_macro("MESH_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "MESH_OT_duplicate");
@@ -175,6 +185,14 @@ void ED_operatormacros_mesh(void)
otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
+ ot= WM_operatortype_append_macro("MESH_OT_extrude_move_along_normals", "Extrude Along Normals", OPTYPE_UNDO|OPTYPE_REGISTER);
+ ot->poll = ED_operator_editmesh_face_select; /* restrict extrude along normals to face select */
+ WM_operatortype_macro_define(ot, "MESH_OT_extrude");
+ otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ RNA_enum_set(otmacro->ptr, "proportional", 0);
+ RNA_enum_set(otmacro->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
+ RNA_boolean_set_array(otmacro->ptr, "constraint_axis", constraint_axis);
+
ot= WM_operatortype_append_macro("MESH_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "MESH_OT_extrude");
otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
@@ -190,7 +208,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "EditMesh", 0, 0);
keymap->poll= ED_operator_editmesh;
- WM_keymap_add_item(keymap, "MESH_OT_loopcut", RKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_loopcut_slide", RKEY, KM_PRESS, KM_CTRL, 0);
/* selecting */
/* standard mouse selection goes via space_view3d */
@@ -226,11 +244,12 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, 0, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1);
WM_keymap_add_item(keymap, "MESH_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0);
-
+
/* tools */
WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_CTRL, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "inside", 1);
+ WM_keymap_add_item(keymap, "MESH_OT_extrude_move_along_normals", EKEY, KM_PRESS, 0, 0); /* this first so it's selected if possible */
WM_keymap_add_item(keymap, "MESH_OT_extrude_move", EKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0);
@@ -261,15 +280,13 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_skin", FKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); /* python */
WM_keymap_add_item(keymap, "MESH_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", AKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "name", "INFO_MT_mesh_add");
+ WM_keymap_add_menu(keymap, "INFO_MT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0);
- /* use KM_RELEASE because same key is used for tweaks
- * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT
- * */
- WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_RELEASE, KM_CTRL|KM_ALT, 0);
+
+ /* use KM_CLICK because same key is used for tweaks */
+ WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0);
@@ -280,21 +297,14 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, 0, KKEY);
/* menus */
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", WKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_edit_mesh_specials");
-
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", FKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_edit_mesh_faces");
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_specials", WKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_faces", FKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_edges", EKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_vertices", VKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_uv_map", UKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_vertex_group", GKEY, KM_PRESS, KM_CTRL, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", EKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_edit_mesh_edges");
-
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", VKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_edit_mesh_vertices");
-
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", UKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_uv_map");
-
ED_object_generic_keymap(keyconf, keymap, TRUE);
}
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c
index 18125207eca..02833bdf3f7 100644
--- a/source/blender/editors/mesh/meshtools.c
+++ b/source/blender/editors/mesh/meshtools.c
@@ -31,6 +31,7 @@
meshtools.c: no editmode (violated already :), tools operating on meshes
*/
+#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
@@ -51,7 +52,7 @@
#include "DNA_windowmanager_types.h"
#include "DNA_world_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_ghash.h"
@@ -62,6 +63,7 @@
#include "BKE_blender.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
+#include "BKE_DerivedMesh.h"
#include "BKE_customdata.h"
#include "BKE_global.h"
#include "BKE_image.h"
@@ -305,7 +307,7 @@ int join_mesh_exec(bContext *C, wmOperator *op)
faceofs= 0;
/* inverse transform for all selected meshes in this object */
- Mat4Invert(imat, ob->obmat);
+ invert_m4_m4(imat, ob->obmat);
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
/* only join if this is a mesh */
@@ -342,11 +344,11 @@ int join_mesh_exec(bContext *C, wmOperator *op)
/* if this is the object we're merging into, no need to do anything */
if(base->object != ob) {
/* watch this: switch matmul order really goes wrong */
- Mat4MulMat4(cmat, base->object->obmat, imat);
+ mul_m4_m4m4(cmat, base->object->obmat, imat);
/* transform vertex coordinates into new space */
for(a=0, mv=mvert; a < me->totvert; a++, mv++) {
- Mat4MulVecfl(cmat, mv->co);
+ mul_m4_v3(cmat, mv->co);
}
/* for each shapekey in destination mesh:
@@ -366,7 +368,7 @@ int join_mesh_exec(bContext *C, wmOperator *op)
fp2= ((float *)(okb->data));
for(a=0; a < me->totvert; a++, fp1+=3, fp2+=3) {
VECCOPY(fp1, fp2);
- Mat4MulVecfl(cmat, fp1);
+ mul_m4_v3(cmat, fp1);
}
}
else {
@@ -543,6 +545,82 @@ int join_mesh_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+/*********************** JOIN AS SHAPES ***************************/
+
+/* Append selected meshes vertex locations as shapes of the active mesh,
+ return 0 if no join is made (error) and 1 of the join is done */
+
+int join_mesh_shapes_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+ Mesh *me= (Mesh *)ob->data;
+ Mesh *selme=NULL;
+ DerivedMesh *dm=NULL;
+ Key *key=me->key;
+ KeyBlock *kb;
+ int ok=0, nonequal_verts=0;
+
+ CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
+ if (base->object == ob) continue;
+
+ if (base->object->type==OB_MESH) {
+ selme = (Mesh *)base->object->data;
+
+ if (selme->totvert==me->totvert)
+ ok++;
+ else
+ nonequal_verts=1;
+ }
+ }
+ CTX_DATA_END;
+
+ if (!ok) {
+ if (nonequal_verts)
+ BKE_report(op->reports, RPT_ERROR, "Selected meshes must have equal numbers of vertices.");
+ else
+ BKE_report(op->reports, RPT_ERROR, "No additional selected meshes with equal vertex count to join.");
+ return OPERATOR_CANCELLED;
+ }
+
+ if(key == NULL) {
+ key= me->key= add_key((ID *)me);
+ key->type= KEY_RELATIVE;
+
+ /* first key added, so it was the basis. initialise it with the existing mesh */
+ kb= add_keyblock(scene, key);
+ mesh_to_key(me, kb);
+ }
+
+ /* now ready to add new keys from selected meshes */
+ CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
+ if (base->object == ob) continue;
+
+ if(base->object->type==OB_MESH) {
+ selme = (Mesh *)base->object->data;
+
+ if (selme->totvert==me->totvert) {
+ dm = mesh_get_derived_deform(scene, base->object, CD_MASK_BAREMESH);
+
+ if (!dm) continue;
+
+ kb= add_keyblock(scene, key);
+ strcpy(kb->name, base->object->id.name+2);
+ BLI_uniquename(&key->block, kb, "Key", '.', offsetof(KeyBlock, name), 32);
+
+ DM_to_meshkey(dm, me, kb);
+
+ dm->release(dm);
+ }
+ }
+ }
+ CTX_DATA_END;
+
+ WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene);
+
+ return OPERATOR_FINISHED;
+}
+
/* ********************** SORT FACES ******************* */
static void permutate(void *list, int num, int size, int *index)
@@ -633,15 +711,15 @@ void sort_faces(Scene *scene, View3D *v3d)
float cur[3];
if (event == 1)
- Mat4MulMat4(mat, OBACT->obmat, rv3d->viewmat); /* apply the view matrix to the object matrix */
+ mul_m4_m4m4(mat, OBACT->obmat, rv3d->viewmat); /* apply the view matrix to the object matrix */
else if (event == 2) { /* sort from cursor */
if( v3d && v3d->localvd ) {
VECCOPY(cur, v3d->cursor);
} else {
VECCOPY(cur, scene->cursor);
}
- Mat4Invert(mat, OBACT->obmat);
- Mat4MulVecfl(mat, cur);
+ invert_m4_m4(mat, OBACT->obmat);
+ mul_m4_v3(mat, cur);
}
mf= me->mface;
@@ -655,21 +733,21 @@ void sort_faces(Scene *scene, View3D *v3d)
else face_sort_floats[i] = reverse;
} else {
/* find the faces center */
- VecAddf(vec, (me->mvert+mf->v1)->co, (me->mvert+mf->v2)->co);
+ add_v3_v3v3(vec, (me->mvert+mf->v1)->co, (me->mvert+mf->v2)->co);
if (mf->v4) {
- VecAddf(vec, vec, (me->mvert+mf->v3)->co);
- VecAddf(vec, vec, (me->mvert+mf->v4)->co);
- VecMulf(vec, 0.25f);
+ add_v3_v3v3(vec, vec, (me->mvert+mf->v3)->co);
+ add_v3_v3v3(vec, vec, (me->mvert+mf->v4)->co);
+ mul_v3_fl(vec, 0.25f);
} else {
- VecAddf(vec, vec, (me->mvert+mf->v3)->co);
- VecMulf(vec, 1.0f/3.0f);
+ add_v3_v3v3(vec, vec, (me->mvert+mf->v3)->co);
+ mul_v3_fl(vec, 1.0f/3.0f);
} /* done */
if (event == 1) { /* sort on view axis */
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
face_sort_floats[i] = vec[2] * reverse;
} else { /* distance from cursor*/
- face_sort_floats[i] = VecLenf(cur, vec) * reverse; /* back to front */
+ face_sort_floats[i] = len_v3v3(cur, vec) * reverse; /* back to front */
}
}
}
@@ -811,12 +889,12 @@ static intptr_t mesh_octree_find_index(MocNode **bt, MVert *mvert, float *co)
/* does mesh verts and editmode, code looks potential dangerous, octree should really be filled OK! */
if(mvert) {
vec= (mvert+(*bt)->index[a]-1)->co;
- if(FloatCompare(vec, co, MOC_THRESH))
+ if(compare_v3v3(vec, co, MOC_THRESH))
return (*bt)->index[a]-1;
}
else {
EditVert *eve= (EditVert *)((*bt)->index[a]);
- if(FloatCompare(eve->co, co, MOC_THRESH))
+ if(compare_v3v3(eve->co, co, MOC_THRESH))
return (*bt)->index[a];
}
}
@@ -881,12 +959,12 @@ intptr_t mesh_octree_table(Object *ob, EditMesh *em, float *co, char mode)
MeshOctree.offs[1]-= MOC_THRESH;
MeshOctree.offs[2]-= MOC_THRESH;
- VecSubf(MeshOctree.div, max, min);
+ sub_v3_v3v3(MeshOctree.div, max, min);
MeshOctree.div[0]+= 2*MOC_THRESH; /* and divide with 2 threshold unit more extra (try 8x8 unit grid on paint) */
MeshOctree.div[1]+= 2*MOC_THRESH;
MeshOctree.div[2]+= 2*MOC_THRESH;
- VecMulf(MeshOctree.div, 1.0f/MOC_RES);
+ mul_v3_fl(MeshOctree.div, 1.0f/MOC_RES);
if(MeshOctree.div[0]==0.0f) MeshOctree.div[0]= 1.0f;
if(MeshOctree.div[1]==0.0f) MeshOctree.div[1]= 1.0f;
if(MeshOctree.div[2]==0.0f) MeshOctree.div[2]= 1.0f;
diff --git a/source/blender/editors/metaball/SConscript b/source/blender/editors/metaball/SConscript
index 4b1b4090631..e526a1560cf 100644
--- a/source/blender/editors/metaball/SConscript
+++ b/source/blender/editors/metaball/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #/intern/guardedalloc ../../gpu'
+incs += ' ../../gpu'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
env.BlenderLib ( 'bf_editors_metaball', sources, Split(incs), [], libtype=['core'], priority=[45] )
diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c
index f335e47188f..09200514c0f 100644
--- a/source/blender/editors/metaball/mball_edit.c
+++ b/source/blender/editors/metaball/mball_edit.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "DNA_meta_types.h"
@@ -116,7 +116,7 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname)
ml= ml->next;
}
- Mat3CpyMat4(mat, obedit->obmat);
+ copy_m3_m4(mat, obedit->obmat);
if(v3d) {
curs= give_cursor(scene, v3d);
VECCOPY(cent, curs);
@@ -130,16 +130,16 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname)
if (rv3d) {
if (!(newname) || U.flag & USER_ADD_VIEWALIGNED)
- Mat3CpyMat4(imat, rv3d->viewmat);
+ copy_m3_m4(imat, rv3d->viewmat);
else
- Mat3One(imat);
- Mat3MulVecfl(imat, cent);
- Mat3MulMat3(cmat, imat, mat);
- Mat3Inv(imat,cmat);
- Mat3MulVecfl(imat, cent);
+ unit_m3(imat);
+ mul_m3_v3(imat, cent);
+ mul_m3_m3m3(cmat, imat, mat);
+ invert_m3_m3(imat,cmat);
+ mul_m3_v3(imat, cent);
}
else
- Mat3One(imat);
+ unit_m3(imat);
ml= MEM_callocN(sizeof(MetaElem), "metaelem");
@@ -517,7 +517,7 @@ void MBALL_OT_reveal_metaelems(wmOperatorType *ot)
/* Select MetaElement with mouse click (user can select radius circle or
* stiffness circle) */
-void mouse_mball(bContext *C, short mval[2], int extend)
+int mouse_mball(bContext *C, short mval[2], int extend)
{
static MetaElem *startelem=NULL;
Object *obedit= CTX_data_edit_object(C);
@@ -588,8 +588,12 @@ void mouse_mball(bContext *C, short mval[2], int extend)
mb->lastelem= act;
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb);
+
+ return 1;
}
}
+
+ return 0;
}
diff --git a/source/blender/editors/object/SConscript b/source/blender/editors/object/SConscript
index 6ecc80f2d81..06d68cd1021 100644
--- a/source/blender/editors/object/SConscript
+++ b/source/blender/editors/object/SConscript
@@ -5,7 +5,6 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc'
-incs += ' #/intern/guardedalloc'
incs += ' ../../makesrna ../../python ../../ikplugin'
defs = []
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 5378ee47f89..1cda61fe90f 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -46,7 +46,7 @@
#include "DNA_view3d_types.h"
#include "DNA_vfont_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BKE_anim.h"
@@ -126,7 +126,7 @@ void ED_object_base_init_from_view(bContext *C, Base *base, int view_align)
RegionView3D *rv3d = CTX_wm_region_view3d(C);
if(rv3d) {
rv3d->viewquat[0]= -rv3d->viewquat[0];
- QuatToEul(rv3d->viewquat, ob->rot);
+ quat_to_eul( ob->rot,rv3d->viewquat);
rv3d->viewquat[0]= -rv3d->viewquat[0];
}
}
@@ -235,19 +235,18 @@ void OBJECT_OT_add(wmOperatorType *ot)
/********************* Add Effector Operator ********************/
/* copy from rna_object_force.c*/
static EnumPropertyItem field_type_items[] = {
- {0, "NONE", 0, "None", ""},
- {PFIELD_FORCE, "FORCE", 0, "Force", ""},
- {PFIELD_WIND, "WIND", 0, "Wind", ""},
- {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""},
- {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""},
- {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""},
- {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""},
- {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""},
- {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""},
- {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""},
- {PFIELD_BOID, "BOID", 0, "Boid", ""},
- {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""},
- {PFIELD_DRAG, "DRAG", 0, "Drag", ""},
+ {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""},
+ {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""},
+ {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""},
+ {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""},
+ {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""},
+ {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""},
+ {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""},
+ {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""},
+ {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""},
+ {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""},
+ {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""},
+ {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""},
{0, NULL, 0, NULL, NULL}};
void add_effector_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menus, only non-editmode stuff */
@@ -755,7 +754,7 @@ static int object_delete_exec(bContext *C, wmOperator *op)
if(islamp) reshadeall_displist(scene); /* only frees displist */
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C));
@@ -928,7 +927,7 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base)
ob->disp.first= ob->disp.last= NULL;
ob->transflag &= ~OB_DUPLI;
- Mat4CpyMat4(ob->obmat, dob->mat);
+ copy_m4_m4(ob->obmat, dob->mat);
ED_object_apply_obmat(ob);
}
@@ -951,7 +950,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
return OPERATOR_FINISHED;
@@ -1262,9 +1261,8 @@ static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag
Group *group;
for(group= G.main->group.first; group; group= group->id.next) {
if(object_in_group(ob, group))
- add_to_group(group, obn);
+ add_to_group(group, obn, scene, basen);
}
- obn->flag |= OB_FROMGROUP; /* this flag is unset with copy_object() */
}
/* duplicates using userflags */
@@ -1481,7 +1479,7 @@ static int duplicate_exec(bContext *C, wmOperator *op)
copy_object_set_idnew(C, dupflag);
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
@@ -1508,6 +1506,18 @@ void OBJECT_OT_duplicate(wmOperatorType *ot)
}
/**************************** Join *************************/
+static int join_poll(bContext *C)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if (!ob) return 0;
+
+ if (ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_ARMATURE))
+ return ED_operator_screenactive(C);
+ else
+ return 0;
+}
+
static int join_exec(bContext *C, wmOperator *op)
{
@@ -1518,10 +1528,6 @@ static int join_exec(bContext *C, wmOperator *op)
BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode.");
return OPERATOR_CANCELLED;
}
- else if(!ob) {
- BKE_report(op->reports, RPT_ERROR, "Can't join unless there is an active object.");
- return OPERATOR_CANCELLED;
- }
else if(object_data_is_libdata(ob)) {
BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata.");
return OPERATOR_CANCELLED;
@@ -1533,9 +1539,7 @@ static int join_exec(bContext *C, wmOperator *op)
return join_curve_exec(C, op);
else if(ob->type == OB_ARMATURE)
return join_armature_exec(C, op);
-
- BKE_report(op->reports, RPT_ERROR, "This object type doesn't support joining.");
-
+
return OPERATOR_CANCELLED;
}
@@ -1548,9 +1552,57 @@ void OBJECT_OT_join(wmOperatorType *ot)
/* api callbacks */
ot->exec= join_exec;
- ot->poll= ED_operator_scene_editable;
+ ot->poll= join_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/**************************** Join as Shape Key*************************/
+static int join_shapes_poll(bContext *C)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if (!ob) return 0;
+
+ /* only meshes supported at the moment */
+ if (ob->type == OB_MESH)
+ return ED_operator_screenactive(C);
+ else
+ return 0;
+}
+
+static int join_shapes_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+
+ if(scene->obedit) {
+ BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode.");
+ return OPERATOR_CANCELLED;
+ }
+ else if(object_data_is_libdata(ob)) {
+ BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata.");
+ return OPERATOR_CANCELLED;
+ }
+
+ if(ob->type == OB_MESH)
+ return join_mesh_shapes_exec(C, op);
+
+ return OPERATOR_CANCELLED;
+}
+
+void OBJECT_OT_join_shapes(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Join as Shapes";
+ ot->description = "Merge selected objects to shapes of active object.";
+ ot->idname= "OBJECT_OT_join_shapes";
+
+ /* api callbacks */
+ ot->exec= join_shapes_exec;
+ ot->poll= join_shapes_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c
index 35b11571a61..eababfe8080 100644
--- a/source/blender/editors/object/object_constraint.c
+++ b/source/blender/editors/object/object_constraint.c
@@ -33,7 +33,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dynstr.h"
#include "DNA_action_types.h"
@@ -98,22 +98,38 @@ ListBase *get_active_constraints (Object *ob)
return NULL;
}
-/* single constraint */
-bConstraint *get_active_constraint (Object *ob)
+ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_r)
{
- ListBase *lb= get_active_constraints(ob);
+ if(pchan_r)
+ *pchan_r= NULL;
- if (lb) {
- bConstraint *con;
-
- for (con= lb->first; con; con=con->next) {
- if (con->flag & CONSTRAINT_ACTIVE)
- return con;
+ if (ELEM(NULL, ob, con))
+ return NULL;
+
+ if((BLI_findindex(&ob->constraints, con) != -1)) {
+ return &ob->constraints;
+ }
+ else if(ob->pose) {
+ bPoseChannel *pchan;
+ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if((BLI_findindex(&pchan->constraints, con) != -1)) {
+
+ if(pchan_r)
+ *pchan_r= pchan;
+
+ return &pchan->constraints;
+ }
}
}
-
+
return NULL;
}
+
+/* single constraint */
+bConstraint *get_active_constraint (Object *ob)
+{
+ return constraints_get_active(get_active_constraints(ob));
+}
/* -------------- Constraint Management (Add New, Remove, Rename) -------------------- */
/* ------------- PyConstraints ------------------ */
@@ -187,56 +203,6 @@ void update_pyconstraint_cb (void *arg1, void *arg2)
#endif
}
-/* Creates a new constraint, initialises its data, and returns it */
-bConstraint *add_new_constraint (short type)
-{
- bConstraint *con;
- bConstraintTypeInfo *cti;
-
- con = MEM_callocN(sizeof(bConstraint), "Constraint");
-
- /* Set up a generic constraint datablock */
- con->type = type;
- con->flag |= CONSTRAINT_EXPAND;
- con->enforce = 1.0f;
-
- /* Load the data for it */
- cti = constraint_get_typeinfo(con);
- if (cti) {
- con->data = MEM_callocN(cti->size, cti->structName);
-
- /* only constraints that change any settings need this */
- if (cti->new_data)
- cti->new_data(con->data);
-
- /* set the name based on the type of constraint */
- strcpy(con->name, cti->name);
- }
- else
- strcpy(con->name, "Const");
-
- return con;
-}
-
-/* Adds the given constraint to the Object-level set of constraints for the given Object */
-void add_constraint_to_object (bConstraint *con, Object *ob)
-{
- ListBase *list;
- list = &ob->constraints;
-
- if (list) {
- unique_constraint_name(con, list);
- BLI_addtail(list, con);
-
- if (proxylocked_constraints_owner(ob, NULL))
- con->flag |= CONSTRAINT_PROXY_LOCAL;
-
- con->flag |= CONSTRAINT_ACTIVE;
- for (con= con->prev; con; con= con->prev)
- con->flag &= ~CONSTRAINT_ACTIVE;
- }
-}
-
/* helper function for add_constriant - sets the last target for the active constraint */
static void set_constraint_nth_target (bConstraint *con, Object *target, char subtarget[], int index)
{
@@ -401,9 +367,7 @@ static void test_constraints (Object *owner, const char substring[])
/* if the number of points does not match the amount required by the chain length,
* free the points array and request a rebind...
*/
- if ( (data->points == NULL) ||
- (!(data->flag & CONSTRAINT_SPLINEIK_NO_ROOT) && (data->numpoints != data->chainlen+1)) ||
- ( (data->flag & CONSTRAINT_SPLINEIK_NO_ROOT) && (data->numpoints != data->chainlen)) )
+ if ((data->points == NULL) || (data->numpoints != data->chainlen+1))
{
/* free the points array */
if (data->points) {
@@ -577,7 +541,7 @@ static int childof_set_inverse_exec (bContext *C, wmOperator *op)
float imat[4][4], tmat[4][4];
/* make copy of pchan's original pose-mat (for use later) */
- Mat4CpyMat4(pmat, pchan->pose_mat);
+ copy_m4_m4(pmat, pchan->pose_mat);
/* disable constraint for pose to be solved without it */
cinf= con->enforce;
@@ -590,9 +554,9 @@ static int childof_set_inverse_exec (bContext *C, wmOperator *op)
* pchan->pose_mat from the original pchan->pose_mat, thus determining
* the effect of the constraint
*/
- Mat4Invert(imat, pchan->pose_mat);
- Mat4MulMat4(tmat, imat, pmat);
- Mat4Invert(data->invmat, tmat);
+ invert_m4_m4(imat, pchan->pose_mat);
+ mul_m4_m4m4(tmat, imat, pmat);
+ invert_m4_m4(data->invmat, tmat);
/* recalculate pose with new inv-mat */
con->enforce= cinf;
@@ -604,10 +568,10 @@ static int childof_set_inverse_exec (bContext *C, wmOperator *op)
* NOTE: what_does_parent uses a static workob defined in object.c
*/
what_does_parent(scene, ob, &workob);
- Mat4Invert(data->invmat, workob.obmat);
+ invert_m4_m4(data->invmat, workob.obmat);
}
else
- Mat4One(data->invmat);
+ unit_m4(data->invmat);
WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob);
@@ -637,7 +601,7 @@ static int childof_clear_inverse_exec (bContext *C, wmOperator *op)
bChildOfConstraint *data= (bChildOfConstraint *)con->data;
/* simply clear the matrix */
- Mat4One(data->invmat);
+ unit_m4(data->invmat);
WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob);
@@ -707,22 +671,13 @@ void ED_object_constraint_rename(Object *ob, bConstraint *con, char *oldname)
void ED_object_constraint_set_active(Object *ob, bConstraint *con)
-{
- ListBase *lb;
- bConstraint *origcon= con;
-
+{
/* lets be nice and escape if its active already */
- if(con && (con->flag & CONSTRAINT_ACTIVE))
+ // NOTE: this assumes that the stack doesn't have other active ones set...
+ if (con && (con->flag & CONSTRAINT_ACTIVE))
return ;
- lb= get_active_constraints(ob);
- if(lb == NULL)
- return;
-
- for(con= lb->first; con; con= con->next) {
- if(con==origcon) con->flag |= CONSTRAINT_ACTIVE;
- else con->flag &= ~CONSTRAINT_ACTIVE;
- }
+ constraints_set_active(get_active_constraints(ob), con);
}
void ED_object_constraint_update(Object *ob)
@@ -872,7 +827,7 @@ static int pose_constraints_clear_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
/* free constraints for all selected bones */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
free_constraints(&pchan->constraints);
pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST);
@@ -989,7 +944,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o
/* if the active Object is Armature, and we can search for bones, do so... */
if ((obact->type == OB_ARMATURE) && (only_ob == 0)) {
/* search in list of selected Pose-Channels for target */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
/* just use the first one that we encounter, as long as it is not the active one */
if (pchan != pchanact) {
@@ -1052,9 +1007,9 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o
* if adding a target for an IK Constraint
*/
if (con_type == CONSTRAINT_TYPE_KINEMATIC)
- VecMat4MulVecfl(obt->loc, obact->obmat, pchanact->pose_tail);
+ mul_v3_m4v3(obt->loc, obact->obmat, pchanact->pose_tail);
else
- VecMat4MulVecfl(obt->loc, obact->obmat, pchanact->pose_head);
+ mul_v3_m4v3(obt->loc, obact->obmat, pchanact->pose_head);
}
else
VECCOPY(obt->loc, obact->obmat[3]);
@@ -1076,9 +1031,14 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o
static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase *list, int type, short setTarget)
{
Scene *scene= CTX_data_scene(C);
- bPoseChannel *pchan= get_active_posechannel(ob);
+ bPoseChannel *pchan;
bConstraint *con;
+ if(list == &ob->constraints)
+ pchan= NULL;
+ else
+ pchan= get_active_posechannel(ob);
+
/* check if constraint to be added is valid for the given constraints stack */
if (type == CONSTRAINT_TYPE_NULL) {
return OPERATOR_CANCELLED;
@@ -1097,32 +1057,10 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase
}
/* create a new constraint of the type requried, and add it to the active/given constraints list */
- con = add_new_constraint(type);
-
- if (list) {
- bConstraint *coniter;
-
- /* add new constraint to end of list of constraints before ensuring that it has a unique name
- * (otherwise unique-naming code will fail, since it assumes element exists in list)
- */
- BLI_addtail(list, con);
- unique_constraint_name(con, list);
-
- /* if the target list is a list on some PoseChannel belonging to a proxy-protected
- * Armature layer, we must tag newly added constraints with a flag which allows them
- * to persist after proxy syncing has been done
- */
- if (proxylocked_constraints_owner(ob, pchan))
- con->flag |= CONSTRAINT_PROXY_LOCAL;
-
- /* make this constraint the active one
- * - since constraint was added at end of stack, we can just go
- * through deactivating all previous ones
- */
- con->flag |= CONSTRAINT_ACTIVE;
- for (coniter= con->prev; coniter; coniter= coniter->prev)
- coniter->flag &= ~CONSTRAINT_ACTIVE;
- }
+ if(pchan)
+ con = add_pose_constraint(ob, pchan, NULL, type);
+ else
+ con = add_ob_constraint(ob, NULL, type);
/* get the first selected object/bone, and make that the target
* - apart from the buttons-window add buttons, we shouldn't add in this way
@@ -1434,7 +1372,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
/* only remove IK Constraints */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
bConstraint *con, *next;
@@ -1442,8 +1380,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *op)
for (con= pchan->constraints.first; con; con= next) {
next= con->next;
if (con->type==CONSTRAINT_TYPE_KINEMATIC) {
- free_constraint_data(con);
- BLI_freelinkN(&pchan->constraints, con);
+ remove_constraint(&pchan->constraints, con);
}
}
pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_TARGET);
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 0cfdd914222..4678ee35fcd 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -67,7 +67,7 @@
#include "DNA_modifier_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_ghash.h"
#include "BLI_rand.h"
@@ -161,16 +161,16 @@ void ED_object_apply_obmat(Object *ob)
/* from obmat to loc rot size */
if(ob==NULL) return;
- Mat3CpyMat4(mat, ob->obmat);
+ copy_m3_m4(mat, ob->obmat);
VECCOPY(ob->loc, ob->obmat[3]);
- Mat3ToEul(mat, ob->rot);
- EulToMat3(ob->rot, tmat);
+ mat3_to_eul( ob->rot,mat);
+ eul_to_mat3( tmat,ob->rot);
- Mat3Inv(imat, tmat);
+ invert_m3_m3(imat, tmat);
- Mat3MulMat3(tmat, imat, mat);
+ mul_m3_m3m3(tmat, imat, mat);
ob->size[0]= tmat[0][0];
ob->size[1]= tmat[1][1];
@@ -1062,7 +1062,7 @@ void flip_subdivison(Scene *scene, View3D *v3d, int level)
}
}
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
}
static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob)
@@ -1549,8 +1549,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event)
if(do_scene_sort)
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
-
+ DAG_ids_flush_update(0);
}
void copy_attr_menu(Scene *scene, View3D *v3d)
@@ -1734,85 +1733,6 @@ void image_aspect(Scene *scene, View3D *v3d)
}
-void set_ob_ipoflags(Scene *scene, View3D *v3d)
-{
-#if 0 // XXX old animation system
- Base *base;
- int set= 1;
-
- if (!v3d) {
- error("Can't do this! Open a 3D window");
- return;
- }
-
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(base->object->ipoflag & OB_DRAWKEY) {
- set= 0;
- break;
- }
- }
- }
-
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(set) {
- base->object->ipoflag |= OB_DRAWKEY;
- if(base->object->ipo) base->object->ipo->showkey= 1;
- }
- else {
- base->object->ipoflag &= ~OB_DRAWKEY;
- if(base->object->ipo) base->object->ipo->showkey= 0;
- }
- }
- }
-#endif // XXX old animation system
-}
-
-
-void select_select_keys(Scene *scene, View3D *v3d)
-{
-#if 0 // XXX old animation system
- Base *base;
- IpoCurve *icu;
- BezTriple *bezt;
- int a;
-
- if (!v3d) {
- error("Can't do this! Open a 3D window");
- return;
- }
-
- if(scene->id.lib) return;
-
- if(okee("Show and select all keys")==0) return;
-
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(base->object->ipo) {
- base->object->ipoflag |= OB_DRAWKEY;
- base->object->ipo->showkey= 1;
- icu= base->object->ipo->curve.first;
- while(icu) {
- a= icu->totvert;
- bezt= icu->bezt;
- while(a--) {
- bezt->f1 |= SELECT;
- bezt->f2 |= SELECT;
- bezt->f3 |= SELECT;
- bezt++;
- }
- icu= icu->next;
- }
- }
- }
- }
-
-
-#endif // XXX old animation system
-}
-
-
int vergbaseco(const void *a1, const void *a2)
{
Base **x1, **x2;
@@ -2135,4 +2055,3 @@ void OBJECT_OT_game_property_remove(wmOperatorType *ot)
RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "Property index to remove ", 0, INT_MAX);
}
-
diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c
index ec8409e9aa1..1e5b93aa6dc 100644
--- a/source/blender/editors/object/object_group.c
+++ b/source/blender/editors/object/object_group.c
@@ -60,7 +60,7 @@
static int objects_add_active_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Object *ob= OBACT, *obt;
+ Object *ob= OBACT;
Group *group;
int ok = 0;
@@ -73,11 +73,7 @@ static int objects_add_active_exec(bContext *C, wmOperator *op)
if(object_in_group(ob, group)) {
/* Assign groups to selected objects */
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
- obt= base->object;
- add_to_group(group, obt);
- obt->flag |= OB_FROMGROUP;
- base->flag |= OB_FROMGROUP;
- base->object->recalc= OB_RECALC_OB;
+ add_to_group(group, base->object, scene, base);
ok = 1;
}
CTX_DATA_END;
@@ -110,7 +106,7 @@ void GROUP_OT_objects_add_active(wmOperatorType *ot)
static int objects_remove_active_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Object *ob= OBACT, *obt;
+ Object *ob= OBACT;
Group *group;
int ok = 0;
@@ -123,11 +119,7 @@ static int objects_remove_active_exec(bContext *C, wmOperator *op)
if(object_in_group(ob, group)) {
/* Assign groups to selected objects */
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
- obt= base->object;
- rem_from_group(group, obt);
- obt->flag &= ~OB_FROMGROUP;
- base->flag &= ~OB_FROMGROUP;
- base->object->recalc= OB_RECALC_OB;
+ rem_from_group(group, base->object, scene, base);
ok = 1;
}
CTX_DATA_END;
@@ -165,11 +157,7 @@ static int group_objects_remove_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
group = NULL;
while((group = find_group(base->object, group)))
- rem_from_group(group, base->object);
-
- base->object->flag &= ~OB_FROMGROUP;
- base->flag &= ~OB_FROMGROUP;
- base->object->recalc= OB_RECALC_OB;
+ rem_from_group(group, base->object, scene, base);
}
CTX_DATA_END;
@@ -205,10 +193,7 @@ static int group_create_exec(bContext *C, wmOperator *op)
group= add_group(name);
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
- add_to_group(group, base->object);
- base->object->flag |= OB_FROMGROUP;
- base->flag |= OB_FROMGROUP;
- base->object->recalc= OB_RECALC_OB;
+ add_to_group(group, base->object, scene, base);
}
CTX_DATA_END;
@@ -259,9 +244,7 @@ static int group_add_exec(bContext *C, wmOperator *op)
group= BLI_findlink(&bmain->group, value);
if(group) {
- add_to_group(group, ob);
- ob->flag |= OB_FROMGROUP;
- base->flag |= OB_FROMGROUP;
+ add_to_group(group, ob, scene, NULL); /* base will be used if found */
}
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
@@ -323,21 +306,11 @@ static int group_remove_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
Group *group= CTX_data_pointer_get_type(C, "group", &RNA_Group).data;
- Base *base;
if(!ob || !group)
return OPERATOR_CANCELLED;
- base= object_in_scene(ob, scene);
- if(!base)
- return OPERATOR_CANCELLED;
-
- rem_from_group(group, ob);
-
- if(find_group(ob, NULL) == NULL) {
- ob->flag &= ~OB_FROMGROUP;
- base->flag &= ~OB_FROMGROUP;
- }
+ rem_from_group(group, ob, scene, NULL); /* base will be used if found */
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c
index 22a6329a097..a2feee54c8c 100644
--- a/source/blender/editors/object/object_hook.c
+++ b/source/blender/editors/object/object_hook.c
@@ -30,11 +30,12 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
+#include "DNA_action_types.h"
#include "DNA_curve_types.h"
#include "DNA_lattice_types.h"
#include "DNA_mesh_types.h"
@@ -43,21 +44,35 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
+#include "DNA_windowmanager_types.h"
+#include "BKE_action.h"
+#include "BKE_context.h"
#include "BKE_customdata.h"
#include "BKE_depsgraph.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_object.h"
+#include "BKE_report.h"
+#include "BKE_scene.h"
+#include "BKE_utildefines.h"
+
+#include "RNA_define.h"
+#include "RNA_access.h"
#include "ED_curve.h"
#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_view3d.h"
+#include "ED_screen.h"
-#include "object_intern.h"
+#include "WM_types.h"
+#include "WM_api.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
-/* XXX operators for this are not implemented yet */
+#include "object_intern.h"
static int return_editmesh_indexar(EditMesh *em, int *tot, int **indexar, float *cent)
{
@@ -77,12 +92,12 @@ static int return_editmesh_indexar(EditMesh *em, int *tot, int **indexar, float
for(eve= em->verts.first; eve; eve= eve->next) {
if(eve->f & SELECT) {
*index= nr; index++;
- VecAddf(cent, cent, eve->co);
+ add_v3_v3v3(cent, cent, eve->co);
}
nr++;
}
- VecMulf(cent, 1.0f/(float)totvert);
+ mul_v3_fl(cent, 1.0f/(float)totvert);
return totvert;
}
@@ -105,7 +120,7 @@ static int return_editmesh_vgroup(Object *obedit, EditMesh *em, char *name, floa
for(i=0; i<dvert->totweight; i++){
if(dvert->dw[i].def_nr == (obedit->actdef-1)) {
totvert++;
- VecAddf(cent, cent, eve->co);
+ add_v3_v3v3(cent, cent, eve->co);
}
}
}
@@ -113,7 +128,7 @@ static int return_editmesh_vgroup(Object *obedit, EditMesh *em, char *name, floa
if(totvert) {
bDeformGroup *defGroup = BLI_findlink(&obedit->defbase, obedit->actdef-1);
strcpy(name, defGroup->name);
- VecMulf(cent, 1.0f/(float)totvert);
+ mul_v3_fl(cent, 1.0f/(float)totvert);
return 1;
}
}
@@ -170,14 +185,14 @@ static int return_editlattice_indexar(Lattice *editlatt, int *tot, int **indexar
if(bp->f1 & SELECT) {
if(bp->hide==0) {
*index= nr; index++;
- VecAddf(cent, cent, bp->vec);
+ add_v3_v3v3(cent, cent, bp->vec);
}
}
bp++;
nr++;
}
- VecMulf(cent, 1.0f/(float)totvert);
+ mul_v3_fl(cent, 1.0f/(float)totvert);
return totvert;
}
@@ -243,17 +258,17 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo
while(a--) {
if(bezt->f1 & SELECT) {
*index= nr; index++;
- VecAddf(cent, cent, bezt->vec[0]);
+ add_v3_v3v3(cent, cent, bezt->vec[0]);
}
nr++;
if(bezt->f2 & SELECT) {
*index= nr; index++;
- VecAddf(cent, cent, bezt->vec[1]);
+ add_v3_v3v3(cent, cent, bezt->vec[1]);
}
nr++;
if(bezt->f3 & SELECT) {
*index= nr; index++;
- VecAddf(cent, cent, bezt->vec[2]);
+ add_v3_v3v3(cent, cent, bezt->vec[2]);
}
nr++;
bezt++;
@@ -265,7 +280,7 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo
while(a--) {
if(bp->f1 & SELECT) {
*index= nr; index++;
- VecAddf(cent, cent, bp->vec);
+ add_v3_v3v3(cent, cent, bp->vec);
}
nr++;
bp++;
@@ -273,12 +288,12 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo
}
}
- VecMulf(cent, 1.0f/(float)totvert);
+ mul_v3_fl(cent, 1.0f/(float)totvert);
return totvert;
}
-int object_hook_index_array(Object *obedit, int *tot, int **indexar, char *name, float *cent_r)
+static int object_hook_index_array(Object *obedit, int *tot, int **indexar, char *name, float *cent_r)
{
*indexar= NULL;
*tot= 0;
@@ -360,7 +375,7 @@ static void select_editcurve_hook(Object *obedit, HookModifierData *hmd)
}
}
-void object_hook_select(Object *ob, HookModifierData *hmd)
+static void object_hook_select(Object *ob, HookModifierData *hmd)
{
if (hmd->indexar == NULL)
return;
@@ -371,242 +386,464 @@ void object_hook_select(Object *ob, HookModifierData *hmd)
else if(ob->type==OB_SURF) select_editcurve_hook(ob, hmd);
}
+/* special poll operators for hook operators */
+// TODO: check for properties window modifier context too as alternative?
+static int hook_op_edit_poll(bContext *C)
+{
+ Object *obedit= CTX_data_edit_object(C);
+
+ if (obedit) {
+ if (ED_operator_editmesh(C)) return 1;
+ if (ED_operator_editsurfcurve(C)) return 1;
+ if (ED_operator_editlattice(C)) return 1;
+ //if (ED_operator_editmball(C)) return 1;
+ }
+
+ return 0;
+}
-void add_hook(Scene *scene, View3D *v3d, int mode)
+static Object *add_hook_object_new(Scene *scene, Object *obedit)
{
- ModifierData *md = NULL;
+ Base *base, *basedit;
+ Object *ob;
+
+ ob= add_object(scene, OB_EMPTY);
+
+ basedit = object_in_scene(obedit, scene);
+ base = object_in_scene(ob, scene);
+ base->lay = ob->lay = obedit->lay;
+
+ /* icky, add_object sets new base as active.
+ * so set it back to the original edit object */
+ scene->basact = basedit;
+
+ return ob;
+}
+
+static void add_hook_object(Scene *scene, Object *obedit, Object *ob, int mode)
+{
+ ModifierData *md=NULL;
HookModifierData *hmd = NULL;
- Object *ob=NULL;
- Object *obedit= scene->obedit; // XXX get from context
-
- if(obedit==NULL) return;
-
- /* preconditions */
- if(mode==2) { /* selected object */
- Base *base;
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(base!=BASACT) {
- ob= base->object;
- break;
- }
- }
- }
- if(ob==NULL) {
- // XXX error("Requires selected Object");
- return;
- }
- }
- else if(mode!=1) {
- int maxlen=0, a, nr;
- char *cp;
-
- /* make pupmenu with hooks */
- for(md=obedit->modifiers.first; md; md= md->next) {
- if (md->type==eModifierType_Hook)
- maxlen+=32;
- }
-
- if(maxlen==0) {
- // XXX error("Object has no hooks yet");
- return;
- }
+ float cent[3];
+ int tot, ok, *indexar;
+ char name[32];
+
+ ok = object_hook_index_array(obedit, &tot, &indexar, name, cent);
+
+ if (!ok) return; // XXX error("Requires selected vertices or active Vertex Group");
+
+ if (mode==OBJECT_ADDHOOK_NEWOB && !ob) {
- cp= MEM_callocN(maxlen+32, "temp string");
- if(mode==3) strcpy(cp, "Remove %t|");
- else if(mode==4) strcpy(cp, "Reassign %t|");
- else if(mode==5) strcpy(cp, "Select %t|");
- else if(mode==6) strcpy(cp, "Clear Offset %t|");
+ ob = add_hook_object_new(scene, obedit);
- for(md=obedit->modifiers.first; md; md= md->next) {
- if (md->type==eModifierType_Hook) {
- strcat(cp, md->name);
- strcat(cp, " |");
- }
+ /* transform cent to global coords for loc */
+ mul_v3_m4v3(ob->loc, obedit->obmat, cent);
+ }
+
+ md = obedit->modifiers.first;
+ while (md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform) {
+ md = md->next;
+ }
+
+ hmd = (HookModifierData*) modifier_new(eModifierType_Hook);
+ BLI_insertlinkbefore(&obedit->modifiers, md, hmd);
+ BLI_snprintf(hmd->modifier.name, sizeof(hmd->modifier.name), "Hook-%s", ob->id.name+2);
+ modifier_unique_name(&obedit->modifiers, (ModifierData*)hmd);
+
+ hmd->object= ob;
+ hmd->indexar= indexar;
+ copy_v3_v3(hmd->cent, cent);
+ hmd->totindex= tot;
+ BLI_strncpy(hmd->name, name, 32);
+
+ /* matrix calculus */
+ /* vert x (obmat x hook->imat) x hook->obmat x ob->imat */
+ /* (parentinv ) */
+ where_is_object(scene, ob);
+
+ invert_m4_m4(ob->imat, ob->obmat);
+ /* apparently this call goes from right to left... */
+ mul_serie_m4(hmd->parentinv, ob->imat, obedit->obmat, NULL,
+ NULL, NULL, NULL, NULL, NULL);
+
+ DAG_scene_sort(scene);
+}
+
+static int object_add_hook_selob_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Object *obsel=NULL;
+
+ CTX_DATA_BEGIN(C, Object*, ob, selected_objects)
+ {
+ if (ob != obedit) {
+ obsel = ob;
+ break;
}
-
- nr= 0; // XXX pupmenu(cp);
- MEM_freeN(cp);
-
- if(nr<1) return;
-
- a= 1;
- for(md=obedit->modifiers.first; md; md=md->next) {
- if (md->type==eModifierType_Hook) {
- if(a==nr) break;
- a++;
- }
+ }
+ CTX_DATA_END;
+
+ if (!obsel) {
+ BKE_report(op->reports, RPT_ERROR, "Can't add hook with no other selected objects.");
+ return OPERATOR_CANCELLED;
+ }
+
+ add_hook_object(scene, obedit, obsel, OBJECT_ADDHOOK_SELOB);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_hook_add_selobj(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Hook to Selected Object";
+ ot->description= "Hook selected vertices to the first selected Object.";
+ ot->idname= "OBJECT_OT_hook_add_selob";
+
+ /* api callbacks */
+ ot->exec= object_add_hook_selob_exec;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+static int object_add_hook_newob_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+
+ add_hook_object(scene, obedit, NULL, OBJECT_ADDHOOK_NEWOB);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_hook_add_newobj(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Hook to New Object";
+ ot->description= "Hook selected vertices to the first selected Object.";
+ ot->idname= "OBJECT_OT_hook_add_newob";
+
+ /* api callbacks */
+ ot->exec= object_add_hook_newob_exec;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+static EnumPropertyItem hook_mod_items[]= {
+{0, NULL, 0, NULL, NULL}};
+
+static int object_hook_remove_exec(bContext *C, wmOperator *op)
+{
+ int num= RNA_enum_get(op->ptr, "modifier");
+ Object *ob=NULL;
+ HookModifierData *hmd=NULL;
+
+ ob = CTX_data_edit_object(C);
+ hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num);
+
+ if (!ob || !hmd) {
+ BKE_report(op->reports, RPT_ERROR, "Couldn't find hook modifier");
+ return OPERATOR_CANCELLED;
+ }
+
+ /* remove functionality */
+
+ BLI_remlink(&ob->modifiers, (ModifierData *)hmd);
+ modifier_free((ModifierData *)hmd);
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+static EnumPropertyItem *hook_mod_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+ Object *ob = CTX_data_edit_object(C);
+ EnumPropertyItem tmp = {0, "", 0, "", ""};
+ EnumPropertyItem *item= NULL;
+ ModifierData *md = NULL;
+ int a, totitem= 0;
+
+ if(!ob)
+ return hook_mod_items;
+
+ for(a=0, md=ob->modifiers.first; md; md= md->next, a++) {
+ if (md->type==eModifierType_Hook) {
+ tmp.value= a;
+ tmp.icon = ICON_HOOK;
+ tmp.identifier= md->name;
+ tmp.name= md->name;
+ RNA_enum_item_add(&item, &totitem, &tmp);
}
-
- hmd = (HookModifierData*) md;
- ob= hmd->object;
}
+
+ RNA_enum_item_end(&item, &totitem);
+ *free= 1;
+
+ return item;
+}
- /* do it, new hooks or reassign */
- if(mode==1 || mode==2 || mode==4) {
- float cent[3];
- int tot, ok, *indexar;
- char name[32];
-
- ok = object_hook_index_array(obedit, &tot, &indexar, name, cent);
+void OBJECT_OT_hook_remove(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Remove Hook";
+ ot->idname= "OBJECT_OT_hook_remove";
+ ot->description= "Remove a hook from the active object.";
+
+ /* api callbacks */
+ ot->exec= object_hook_remove_exec;
+ ot->invoke= WM_menu_invoke;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove.");
+ RNA_def_enum_funcs(prop, hook_mod_itemf);
+}
+
+static int object_hook_reset_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
+ int num= RNA_enum_get(op->ptr, "modifier");
+ Object *ob=NULL;
+ HookModifierData *hmd=NULL;
+
+ if (ptr.data) { /* if modifier context is available, use that */
+ ob = ptr.id.data;
+ hmd= ptr.data;
+ }
+ else { /* use the provided property */
+ ob = CTX_data_edit_object(C);
+ hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num);
+ }
+ if (!ob || !hmd) {
+ BKE_report(op->reports, RPT_ERROR, "Couldn't find hook modifier");
+ return OPERATOR_CANCELLED;
+ }
+
+ /* reset functionality */
+ if(hmd->object) {
+ bPoseChannel *pchan= get_pose_channel(hmd->object->pose, hmd->subtarget);
- if(ok==0) {
- // XXX error("Requires selected vertices or active Vertex Group");
- }
- else {
+ if(hmd->subtarget[0] && pchan) {
+ float imat[4][4], mat[4][4];
- if(mode==1) {
- Base *base= BASACT, *newbase;
-
- ob= add_object(scene, OB_EMPTY);
- /* set layers OK */
- newbase= BASACT;
- newbase->lay= base->lay;
- ob->lay= newbase->lay;
-
- /* transform cent to global coords for loc */
- VecMat4MulVecfl(ob->loc, obedit->obmat, cent);
-
- /* restore, add_object sets active */
- BASACT= base;
- }
- /* if mode is 2 or 4, ob has been set */
+ /* calculate the world-space matrix for the pose-channel target first, then carry on as usual */
+ mul_m4_m4m4(mat, pchan->pose_mat, hmd->object->obmat);
- /* new hook */
- if(mode==1 || mode==2) {
- ModifierData *md = obedit->modifiers.first;
-
- while (md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform) {
- md = md->next;
- }
-
- hmd = (HookModifierData*) modifier_new(eModifierType_Hook);
- BLI_insertlinkbefore(&obedit->modifiers, md, hmd);
- sprintf(hmd->modifier.name, "Hook-%s", ob->id.name+2);
- modifier_unique_name(&obedit->modifiers, (ModifierData*)hmd);
- }
- else if (hmd->indexar) MEM_freeN(hmd->indexar); /* reassign, hook was set */
-
- hmd->object= ob;
- hmd->indexar= indexar;
- VecCopyf(hmd->cent, cent);
- hmd->totindex= tot;
- BLI_strncpy(hmd->name, name, 32);
-
- // TODO: need to take into account bone targets here too now...
- if(mode==1 || mode==2) {
- /* matrix calculus */
- /* vert x (obmat x hook->imat) x hook->obmat x ob->imat */
- /* (parentinv ) */
-
- where_is_object(scene, ob);
-
- Mat4Invert(ob->imat, ob->obmat);
- /* apparently this call goes from right to left... */
- Mat4MulSerie(hmd->parentinv, ob->imat, obedit->obmat, NULL,
- NULL, NULL, NULL, NULL, NULL);
- }
+ invert_m4_m4(imat, mat);
+ mul_serie_m4(hmd->parentinv, imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
+ }
+ else {
+ invert_m4_m4(hmd->object->imat, hmd->object->obmat);
+ mul_serie_m4(hmd->parentinv, hmd->object->imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
}
}
- else if(mode==3) { /* remove */
- BLI_remlink(&obedit->modifiers, md);
- modifier_free(md);
- }
- else if(mode==5) { /* select */
- // FIXME: this is now OBJECT_OT_hook_select
- object_hook_select(obedit, hmd);
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_hook_reset(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Reset Hook";
+ ot->description= "Recalculate and and clear offset transformation.";
+ ot->idname= "OBJECT_OT_hook_reset";
+
+ /* callbacks */
+ ot->exec= object_hook_reset_exec;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to.");
+ RNA_def_enum_funcs(prop, hook_mod_itemf);
+}
+
+static int object_hook_recenter_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
+ int num= RNA_enum_get(op->ptr, "modifier");
+ Object *ob=NULL;
+ HookModifierData *hmd=NULL;
+ Scene *scene = CTX_data_scene(C);
+ float bmat[3][3], imat[3][3];
+
+ if (ptr.data) { /* if modifier context is available, use that */
+ ob = ptr.id.data;
+ hmd= ptr.data;
+ }
+ else { /* use the provided property */
+ ob = CTX_data_edit_object(C);
+ hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num);
}
- else if(mode==6) { /* clear offset */
- // FIXME: this is now OBJECT_OT_hook_reset operator
- where_is_object(scene, ob); /* ob is hook->parent */
-
- Mat4Invert(ob->imat, ob->obmat);
- /* this call goes from right to left... */
- Mat4MulSerie(hmd->parentinv, ob->imat, obedit->obmat, NULL,
- NULL, NULL, NULL, NULL, NULL);
+ if (!ob || !hmd) {
+ BKE_report(op->reports, RPT_ERROR, "Couldn't find hook modifier");
+ return OPERATOR_CANCELLED;
}
+
+ /* recenter functionality */
+ copy_m3_m4(bmat, ob->obmat);
+ invert_m3_m3(imat, bmat);
+
+ sub_v3_v3v3(hmd->cent, scene->cursor, ob->obmat[3]);
+ mul_m3_v3(imat, hmd->cent);
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+
+ return OPERATOR_FINISHED;
+}
- DAG_scene_sort(scene);
+void OBJECT_OT_hook_recenter(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Recenter Hook";
+ ot->description= "Set hook center to cursor position.";
+ ot->idname= "OBJECT_OT_hook_recenter";
+
+ /* callbacks */
+ ot->exec= object_hook_recenter_exec;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to.");
+ RNA_def_enum_funcs(prop, hook_mod_itemf);
}
-void add_hook_menu(Scene *scene, View3D *v3d)
+static int object_hook_assign_exec(bContext *C, wmOperator *op)
{
- Object *obedit= scene->obedit; // XXX get from context
- int mode;
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
+ int num= RNA_enum_get(op->ptr, "modifier");
+ Object *ob=NULL;
+ HookModifierData *hmd=NULL;
+ float cent[3];
+ char name[32];
+ int *indexar, tot;
+
+ if (ptr.data) { /* if modifier context is available, use that */
+ ob = ptr.id.data;
+ hmd= ptr.data;
+ }
+ else { /* use the provided property */
+ ob = CTX_data_edit_object(C);
+ hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num);
+ }
+ if (!ob || !hmd) {
+ BKE_report(op->reports, RPT_ERROR, "Couldn't find hook modifier");
+ return OPERATOR_CANCELLED;
+ }
+
+ /* assign functionality */
- if(obedit==NULL) return;
+ if(!object_hook_index_array(ob, &tot, &indexar, name, cent)) {
+ BKE_report(op->reports, RPT_WARNING, "Requires selected vertices or active vertex group");
+ return OPERATOR_CANCELLED;
+ }
+ if(hmd->indexar)
+ MEM_freeN(hmd->indexar);
- if(modifiers_findByType(obedit, eModifierType_Hook))
- mode= 0; // XXX pupmenu("Hooks %t|Add, To New Empty %x1|Add, To Selected Object %x2|Remove... %x3|Reassign... %x4|Select... %x5|Clear Offset...%x6");
- else
- mode= 0; // XXX pupmenu("Hooks %t|Add, New Empty %x1|Add, To Selected Object %x2");
+ copy_v3_v3(hmd->cent, cent);
+ hmd->indexar= indexar;
+ hmd->totindex= tot;
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+
+ return OPERATOR_FINISHED;
+}
- if(mode<1) return;
-
- /* do operations */
- add_hook(scene, v3d, mode);
+void OBJECT_OT_hook_assign(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Assign to Hook";
+ ot->description= "Assign the selected vertices to a hook.";
+ ot->idname= "OBJECT_OT_hook_assign";
+
+ /* callbacks */
+ ot->exec= object_hook_assign_exec;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to.");
+ RNA_def_enum_funcs(prop, hook_mod_itemf);
}
-void hookmenu(Scene *scene, View3D *v3d)
+static int object_hook_select_exec(bContext *C, wmOperator *op)
{
- /* only called in object mode */
- short event, changed=0;
- Object *ob;
- Base *base;
- ModifierData *md;
- HookModifierData *hmd;
-
- event= 0; // XXX pupmenu("Modify Hooks for Selected...%t|Reset Offset%x1|Recenter at Cursor%x2");
- if (event==-1) return;
- if (event==2 && !(v3d)) {
- // XXX error("Cannot perform this operation without a 3d view");
- return;
- }
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
+ int num= RNA_enum_get(op->ptr, "modifier");
+ Object *ob=NULL;
+ HookModifierData *hmd=NULL;
- for (base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- for (md = base->object->modifiers.first; md; md=md->next) {
- if (md->type==eModifierType_Hook) {
- ob = base->object;
- hmd = (HookModifierData*) md;
-
- /*
- * Copied from modifiers_cursorHookCenter and
- * modifiers_clearHookOffset, should consolidate
- * */
-
- if (event==1) {
- if(hmd->object) {
- Mat4Invert(hmd->object->imat, hmd->object->obmat);
- Mat4MulSerie(hmd->parentinv, hmd->object->imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
-
- changed= 1;
- DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- }
- } else {
- float *curs = give_cursor(scene, v3d);
- float bmat[3][3], imat[3][3];
-
- where_is_object(scene, ob);
-
- Mat3CpyMat4(bmat, ob->obmat);
- Mat3Inv(imat, bmat);
-
- curs= give_cursor(scene, v3d);
- hmd->cent[0]= curs[0]-ob->obmat[3][0];
- hmd->cent[1]= curs[1]-ob->obmat[3][1];
- hmd->cent[2]= curs[2]-ob->obmat[3][2];
- Mat3MulVecfl(imat, hmd->cent);
-
- changed= 1;
- DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- }
- }
- }
- }
+ if (ptr.data) { /* if modifier context is available, use that */
+ ob = ptr.id.data;
+ hmd= ptr.data;
+ }
+ else { /* use the provided property */
+ ob = CTX_data_edit_object(C);
+ hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num);
+ }
+ if (!ob || !hmd) {
+ BKE_report(op->reports, RPT_ERROR, "Couldn't find hook modifier");
+ return OPERATOR_CANCELLED;
}
- if (changed) {
- }
+ /* select functionality */
+ object_hook_select(ob, hmd);
+
+ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data);
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_hook_select(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Select Hook";
+ ot->description= "Selects effected vertices on mesh.";
+ ot->idname= "OBJECT_OT_hook_select";
+
+ /* callbacks */
+ ot->exec= object_hook_select_exec;
+ ot->poll= hook_op_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove.");
+ RNA_def_enum_funcs(prop, hook_mod_itemf);
}
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 8f27f0fbae4..9230dca7ba2 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -36,6 +36,12 @@ struct Object;
struct Mesh;
struct HookModifierData;
+/* add hook menu */
+enum {
+ OBJECT_ADDHOOK_NEWOB = 1,
+ OBJECT_ADDHOOK_SELOB,
+} eObject_Hook_Add_Mode;
+
/* internal exports only */
/* object_transform.c */
@@ -100,11 +106,17 @@ void OBJECT_OT_duplicates_make_real(struct wmOperatorType *ot);
void OBJECT_OT_duplicate(struct wmOperatorType *ot);
void OBJECT_OT_delete(struct wmOperatorType *ot);
void OBJECT_OT_join(struct wmOperatorType *ot);
+void OBJECT_OT_join_shapes(struct wmOperatorType *ot);
void OBJECT_OT_convert(struct wmOperatorType *ot);
/* object_hook.c */
-int object_hook_index_array(Object *obedit, int *tot, int **indexar, char *name, float *cent_r);
-void object_hook_select(Object *obedit, struct HookModifierData *hmd);
+void OBJECT_OT_hook_add_selobj(struct wmOperatorType *ot);
+void OBJECT_OT_hook_add_newobj(struct wmOperatorType *ot);
+void OBJECT_OT_hook_remove(struct wmOperatorType *ot);
+void OBJECT_OT_hook_select(struct wmOperatorType *ot);
+void OBJECT_OT_hook_assign(struct wmOperatorType *ot);
+void OBJECT_OT_hook_reset(struct wmOperatorType *ot);
+void OBJECT_OT_hook_recenter(struct wmOperatorType *ot);
/* object_lattice.c */
void free_editLatt(Object *ob);
@@ -132,10 +144,6 @@ void OBJECT_OT_modifier_copy(struct wmOperatorType *ot);
void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot);
void OBJECT_OT_multires_higher_levels_delete(struct wmOperatorType *ot);
void OBJECT_OT_meshdeform_bind(struct wmOperatorType *ot);
-void OBJECT_OT_hook_reset(struct wmOperatorType *ot);
-void OBJECT_OT_hook_recenter(struct wmOperatorType *ot);
-void OBJECT_OT_hook_select(struct wmOperatorType *ot);
-void OBJECT_OT_hook_assign(struct wmOperatorType *ot);
void OBJECT_OT_explode_refresh(struct wmOperatorType *ot);
/* object_constraint.c */
@@ -171,10 +179,10 @@ void OBJECT_OT_vertex_group_copy_to_linked(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_copy(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_normalize(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_normalize_all(struct wmOperatorType *ot);
+void OBJECT_OT_vertex_group_levels(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_invert(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_blend(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot);
-void OBJECT_OT_vertex_group_menu(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot);
void OBJECT_OT_game_property_new(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c
index b49c1eb5902..3f27ea407a2 100644
--- a/source/blender/editors/object/object_lattice.c
+++ b/source/blender/editors/object/object_lattice.c
@@ -298,7 +298,7 @@ static BPoint *findnearestLattvert(ViewContext *vc, short mval[2], int sel)
return data.bp;
}
-void mouse_lattice(bContext *C, short mval[2], int extend)
+int mouse_lattice(bContext *C, short mval[2], int extend)
{
ViewContext vc;
BPoint *bp= NULL;
@@ -315,7 +315,11 @@ void mouse_lattice(bContext *C, short mval[2], int extend)
bp->f1 ^= SELECT; /* swap */
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data);
+
+ return 1;
}
+
+ return 0;
}
/******************************** Undo *************************/
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 0683cb6842f..88763f63f7b 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -33,6 +33,7 @@
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
+#include "DNA_key_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
@@ -40,8 +41,9 @@
#include "DNA_object_force.h"
#include "DNA_scene_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
+#include "BLI_string.h"
#include "BKE_action.h"
#include "BKE_curve.h"
@@ -51,6 +53,7 @@
#include "BKE_DerivedMesh.h"
#include "BKE_effect.h"
#include "BKE_global.h"
+#include "BKE_key.h"
#include "BKE_lattice.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
@@ -66,6 +69,7 @@
#include "RNA_enum_types.h"
#include "ED_armature.h"
+#include "ED_object.h"
#include "ED_screen.h"
#include "WM_api.h"
@@ -75,7 +79,7 @@
/******************************** API ****************************/
-int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int type)
+ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, char *name, int type)
{
ModifierData *md=NULL, *new_md=NULL;
ModifierTypeInfo *mti = modifierType_getInfo(type);
@@ -83,7 +87,7 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty
if(mti->flags&eModifierTypeFlag_Single) {
if(modifiers_findByType(ob, type)) {
BKE_report(reports, RPT_WARNING, "Only one modifier of this type allowed.");
- return 0;
+ return NULL;
}
}
@@ -91,7 +95,7 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty
/* don't need to worry about the new modifier's name, since that is set to the number
* of particle systems which shouldn't have too many duplicates
*/
- object_add_particle_system(scene, ob);
+ new_md = object_add_particle_system(scene, ob, name);
}
else {
/* get new modifier data to add */
@@ -107,8 +111,12 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty
}
else
BLI_addtail(&ob->modifiers, new_md);
-
+
+ if(name)
+ BLI_strncpy(new_md->name, name, sizeof(new_md->name));
+
/* make sure modifier data has unique name */
+
modifier_unique_name(&ob->modifiers, new_md);
/* special cases */
@@ -131,7 +139,7 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- return 1;
+ return new_md;
}
int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
@@ -145,8 +153,10 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod
if(obmd==md)
break;
- if(!obmd)
+ if(!obmd) {
+ BKE_reportf(reports, RPT_ERROR, "Modifier '%s' not in object '%s'.", ob->id.name, md->name);
return 0;
+ }
/* special cases */
if(md->type == eModifierType_ParticleSystem) {
@@ -174,6 +184,9 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod
DAG_scene_sort(scene);
}
+ else if(md->type == eModifierType_Smoke) {
+ ob->dt = OB_SHADED;
+ }
BLI_remlink(&ob->modifiers, md);
modifier_free(md);
@@ -325,44 +338,71 @@ int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, Mo
return 1;
}
-int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
+static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
{
- DerivedMesh *dm;
- Mesh *me = ob->data;
- int converted = 0;
+ if (ob->type==OB_MESH) {
+ DerivedMesh *dm;
+ Mesh *me= ob->data;
+ Key *key=me->key;
+ KeyBlock *kb;
+
+ if(!modifier_sameTopology(md)) {
+ BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to Shapes");
+ return 0;
+ }
+ mesh_pmv_off(ob, me);
+
+ dm = mesh_create_derived_for_modifier(scene, ob, md);
+ if (!dm) {
+ BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply");
+ return 0;
+ }
+
+ if(key == NULL) {
+ key= me->key= add_key((ID *)me);
+ key->type= KEY_RELATIVE;
+ /* if that was the first key block added, then it was the basis.
+ * Initialise it with the mesh, and add another for the modifier */
+ kb= add_keyblock(scene, key);
+ mesh_to_key(me, kb);
+ }
- if (scene->obedit) {
- BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode");
- return 0;
- } else if (((ID*) ob->data)->us>1) {
- BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data");
+ kb= add_keyblock(scene, key);
+ DM_to_meshkey(dm, me, kb);
+
+ dm->release(dm);
+ }
+ else {
+ BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type");
return 0;
}
+ return 1;
+}
- if (md!=ob->modifiers.first)
- BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected.");
-
+static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
+{
if (ob->type==OB_MESH) {
- if(me->key) {
+ DerivedMesh *dm;
+ Mesh *me = ob->data;
+ if( me->key) {
BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys");
return 0;
}
-
+
mesh_pmv_off(ob, me);
-
- /* Multires: ensure that recent sculpting is applied */
- if(md->type == eModifierType_Multires)
- multires_force_update(ob);
-
+
+ /* Multires: ensure that recent sculpting is applied */
+ if(md->type == eModifierType_Multires)
+ multires_force_update(ob);
+
dm = mesh_create_derived_for_modifier(scene, ob, md);
if (!dm) {
BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply");
return 0;
}
-
+
DM_to_mesh(dm, me);
- converted = 1;
-
+
dm->release(dm);
}
else if (ELEM(ob->type, OB_CURVE, OB_SURF)) {
@@ -370,37 +410,55 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi
Curve *cu = ob->data;
int numVerts;
float (*vertexCos)[3];
-
+
+
BKE_report(reports, RPT_INFO, "Applied modifier only changed CV points, not tesselated/bevel vertices");
-
+
if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md))) {
BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
return 0;
}
-
+
vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts);
mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0);
curve_applyVertexCos(cu, &cu->nurb, vertexCos);
- converted = 1;
-
MEM_freeN(vertexCos);
-
+
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
else {
BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type");
return 0;
}
+ return 1;
+}
- if (converted) {
- BLI_remlink(&ob->modifiers, md);
- modifier_free(md);
+int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md, int mode)
+{
+ if (scene->obedit) {
+ BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode");
+ return 0;
+ } else if (((ID*) ob->data)->us>1) {
+ BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data");
+ return 0;
+ }
+
+ if (md!=ob->modifiers.first)
+ BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected.");
- return 1;
+ if (mode == MODIFIER_APPLY_SHAPE) {
+ if (!modifier_apply_shape(reports, scene, ob, md))
+ return 0;
+ } else {
+ if (!modifier_apply_obdata(reports, scene, ob, md))
+ return 0;
}
- return 0;
+ BLI_remlink(&ob->modifiers, md);
+ modifier_free(md);
+
+ return 1;
}
int ED_object_modifier_copy(ReportList *reports, Object *ob, ModifierData *md)
@@ -431,7 +489,7 @@ static int modifier_add_exec(bContext *C, wmOperator *op)
Object *ob = CTX_data_active_object(C);
int type= RNA_enum_get(op->ptr, "type");
- if(!ED_object_modifier_add(op->reports, scene, ob, type))
+ if(!ED_object_modifier_add(op->reports, scene, ob, NULL, type))
return OPERATOR_CANCELLED;
WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
@@ -595,8 +653,9 @@ static int modifier_apply_exec(bContext *C, wmOperator *op)
PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier);
Object *ob= ptr.id.data;
ModifierData *md= ptr.data;
+ int apply_as= RNA_enum_get(op->ptr, "apply_as");
- if(!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md))
+ if(!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md, apply_as))
return OPERATOR_CANCELLED;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
@@ -605,6 +664,11 @@ static int modifier_apply_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+static EnumPropertyItem modifier_apply_as_items[] = {
+ {MODIFIER_APPLY_DATA, "DATA", 0, "Object Data", "Apply modifier to the object's data"},
+ {MODIFIER_APPLY_SHAPE, "SHAPE", 0, "New Shape", "Apply deform-only modifier to a new shape on this object"},
+ {0, NULL, 0, NULL, NULL}};
+
void OBJECT_OT_modifier_apply(wmOperatorType *ot)
{
ot->name= "Apply Modifier";
@@ -612,11 +676,14 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot)
ot->idname= "OBJECT_OT_modifier_apply";
ot->poll= ED_operator_object_active;
+ //ot->invoke= WM_menu_invoke;
ot->exec= modifier_apply_exec;
ot->poll= modifier_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_enum(ot->srna, "apply_as", modifier_apply_as_items, MODIFIER_APPLY_DATA, "Apply as", "How to apply the modifier to the geometry");
}
/************************ convert modifier operator *********************/
@@ -780,7 +847,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op)
int mode= mmd->modifier.mode;
/* force modifier to run, it will call binding routine */
- mmd->bindfunc= harmonic_coordinates_bind;
+ mmd->bindfunc= mesh_deform_bind;
mmd->modifier.mode |= eModifierMode_Realtime;
if(ob->type == OB_MESH) {
@@ -819,157 +886,6 @@ void OBJECT_OT_meshdeform_bind(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-/******************** hook operators ************************/
-
-static int hook_poll(bContext *C)
-{
- PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
- ID *id= ptr.id.data;
- return (ptr.data && id && !id->lib);
-}
-
-static int hook_reset_exec(bContext *C, wmOperator *op)
-{
- PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
- Object *ob= ptr.id.data;
- HookModifierData *hmd= ptr.data;
-
- if(hmd->object) {
- bPoseChannel *pchan= get_pose_channel(hmd->object->pose, hmd->subtarget);
-
- if(hmd->subtarget[0] && pchan) {
- float imat[4][4], mat[4][4];
-
- /* calculate the world-space matrix for the pose-channel target first, then carry on as usual */
- Mat4MulMat4(mat, pchan->pose_mat, hmd->object->obmat);
-
- Mat4Invert(imat, mat);
- Mat4MulSerie(hmd->parentinv, imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
- }
- else {
- Mat4Invert(hmd->object->imat, hmd->object->obmat);
- Mat4MulSerie(hmd->parentinv, hmd->object->imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
- }
- }
-
- DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
-
- return OPERATOR_FINISHED;
-}
-
-void OBJECT_OT_hook_reset(wmOperatorType *ot)
-{
- ot->name= "Hook Reset";
- ot->description= "Recalculate and and clear offset transformation.";
- ot->idname= "OBJECT_OT_hook_reset";
-
- ot->exec= hook_reset_exec;
- ot->poll= hook_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
-static int hook_recenter_exec(bContext *C, wmOperator *op)
-{
- Scene *scene= CTX_data_scene(C);
- PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
- Object *ob= ptr.id.data;
- HookModifierData *hmd= ptr.data;
- float bmat[3][3], imat[3][3];
-
- Mat3CpyMat4(bmat, ob->obmat);
- Mat3Inv(imat, bmat);
-
- VECSUB(hmd->cent, scene->cursor, ob->obmat[3]);
- Mat3MulVecfl(imat, hmd->cent);
-
- DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
-
- return OPERATOR_FINISHED;
-}
-
-void OBJECT_OT_hook_recenter(wmOperatorType *ot)
-{
- ot->name= "Hook Recenter";
- ot->description= "Set hook center to cursor position.";
- ot->idname= "OBJECT_OT_hook_recenter";
-
- ot->exec= hook_recenter_exec;
- ot->poll= hook_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
-static int hook_select_exec(bContext *C, wmOperator *op)
-{
- PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
- Object *ob= ptr.id.data;
- HookModifierData *hmd= ptr.data;
-
- object_hook_select(ob, hmd);
-
- WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data);
-
- return OPERATOR_FINISHED;
-}
-
-void OBJECT_OT_hook_select(wmOperatorType *ot)
-{
- ot->name= "Hook Select";
- ot->description= "Selects effected vertices on mesh.";
- ot->idname= "OBJECT_OT_hook_select";
-
- ot->exec= hook_select_exec;
- ot->poll= hook_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
-static int hook_assign_exec(bContext *C, wmOperator *op)
-{
- PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier);
- Object *ob= ptr.id.data;
- HookModifierData *hmd= ptr.data;
- float cent[3];
- char name[32];
- int *indexar, tot;
-
- if(!object_hook_index_array(ob, &tot, &indexar, name, cent)) {
- BKE_report(op->reports, RPT_WARNING, "Requires selected vertices or active vertex group");
- return OPERATOR_CANCELLED;
- }
-
- if(hmd->indexar)
- MEM_freeN(hmd->indexar);
-
- VECCOPY(hmd->cent, cent);
- hmd->indexar= indexar;
- hmd->totindex= tot;
-
- DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
-
- return OPERATOR_FINISHED;
-}
-
-void OBJECT_OT_hook_assign(wmOperatorType *ot)
-{
- ot->name= "Hook Assign";
- ot->description= "Reassigns selected vertices to hook.";
- ot->idname= "OBJECT_OT_hook_assign";
-
- ot->exec= hook_assign_exec;
- ot->poll= hook_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
/****************** explode refresh operator *********************/
static int explode_refresh_poll(bContext *C)
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index ccb6e8cdea3..4dcecc92880 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -39,7 +39,7 @@
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_context.h"
@@ -124,6 +124,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_duplicates_make_real);
WM_operatortype_append(OBJECT_OT_duplicate);
WM_operatortype_append(OBJECT_OT_join);
+ WM_operatortype_append(OBJECT_OT_join_shapes);
WM_operatortype_append(OBJECT_OT_convert);
WM_operatortype_append(OBJECT_OT_modifier_add);
@@ -136,12 +137,8 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_multires_subdivide);
WM_operatortype_append(OBJECT_OT_multires_higher_levels_delete);
WM_operatortype_append(OBJECT_OT_meshdeform_bind);
- WM_operatortype_append(OBJECT_OT_hook_reset);
- WM_operatortype_append(OBJECT_OT_hook_recenter);
- WM_operatortype_append(OBJECT_OT_hook_select);
- WM_operatortype_append(OBJECT_OT_hook_assign);
WM_operatortype_append(OBJECT_OT_explode_refresh);
-
+
WM_operatortype_append(OBJECT_OT_constraint_add);
WM_operatortype_append(OBJECT_OT_constraint_add_with_targets);
WM_operatortype_append(POSE_OT_constraint_add);
@@ -169,9 +166,9 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_vertex_group_normalize);
WM_operatortype_append(OBJECT_OT_vertex_group_normalize_all);
WM_operatortype_append(OBJECT_OT_vertex_group_invert);
+ WM_operatortype_append(OBJECT_OT_vertex_group_levels);
WM_operatortype_append(OBJECT_OT_vertex_group_blend);
WM_operatortype_append(OBJECT_OT_vertex_group_clean);
- WM_operatortype_append(OBJECT_OT_vertex_group_menu);
WM_operatortype_append(OBJECT_OT_vertex_group_set_active);
WM_operatortype_append(OBJECT_OT_game_property_new);
@@ -188,6 +185,14 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_group_add);
WM_operatortype_append(OBJECT_OT_group_remove);
+
+ WM_operatortype_append(OBJECT_OT_hook_add_selobj);
+ WM_operatortype_append(OBJECT_OT_hook_add_newobj);
+ WM_operatortype_append(OBJECT_OT_hook_remove);
+ WM_operatortype_append(OBJECT_OT_hook_select);
+ WM_operatortype_append(OBJECT_OT_hook_assign);
+ WM_operatortype_append(OBJECT_OT_hook_reset);
+ WM_operatortype_append(OBJECT_OT_hook_recenter);
}
void ED_operatormacros_object(void)
@@ -223,6 +228,7 @@ void ED_keymap_object(wmKeyConfig *keyconf)
wmKeyMap *keymap;
wmKeyMapItem *kmi;
+ /* Objects, Regardless of Mode -------------------------------------------------- */
keymap= WM_keymap_find(keyconf, "Object Non-modal", 0, 0);
/* Note: this keymap works disregarding mode */
@@ -247,6 +253,7 @@ void ED_keymap_object(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "OBJECT_OT_center_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0);
+ /* Object Mode ---------------------------------------------------------------- */
/* Note: this keymap gets disabled in non-objectmode, */
keymap= WM_keymap_find(keyconf, "Object Mode", 0, 0);
keymap->poll= object_mode_poll;
@@ -282,19 +289,13 @@ void ED_keymap_object(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_delete", DELKEY, KM_PRESS, 0, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", AKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "name", "INFO_MT_add");
+ WM_keymap_add_menu(keymap, "INFO_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_duplicates_make_real", AKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", AKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_object_apply");
-
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", UKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_make_single_user");
-
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", LKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_make_links");
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_object_apply", AKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_make_single_user", UKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_make_links", LKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move_linked", DKEY, KM_PRESS, KM_ALT, 0);
@@ -305,19 +306,33 @@ void ED_keymap_object(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "OBJECT_OT_make_local", LKEY, KM_PRESS, 0, 0);
// XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith
- WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_create", GKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
- /* Lattice */
+ kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", ONEKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "level", 1);
+ kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", TWOKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "level", 2);
+ kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", THREEKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "level", 3);
+ kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FOURKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "level", 4);
+ kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FIVEKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "level", 5);
+
+ /* Lattice -------------------------------------------------------------------- */
keymap= WM_keymap_find(keyconf, "Lattice", 0, 0);
keymap->poll= ED_operator_editlattice;
WM_keymap_add_item(keymap, "LATTICE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+
+ /* menus */
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0);
ED_object_generic_keymap(keyconf, keymap, TRUE);
}
@@ -342,6 +357,5 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym
RNA_string_set(km->ptr, "value_1", "DISABLED");
RNA_string_set(km->ptr, "value_2", "CONNECTED");
}
-
}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index cbd1e1be8d5..749b1e34651 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -48,7 +48,7 @@
#include "DNA_view3d_types.h"
#include "DNA_world_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
@@ -221,7 +221,7 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op)
/* inverse parent matrix */
what_does_parent(scene, ob, &workob);
- Mat4Invert(ob->parentinv, workob.obmat);
+ invert_m4_m4(ob->parentinv, workob.obmat);
}
else {
ob->partype= PARVERT1;
@@ -229,7 +229,7 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op)
/* inverse parent matrix */
what_does_parent(scene, ob, &workob);
- Mat4Invert(ob->parentinv, workob.obmat);
+ invert_m4_m4(ob->parentinv, workob.obmat);
}
}
}
@@ -451,14 +451,14 @@ static int parent_clear_exec(bContext *C, wmOperator *op)
ED_object_apply_obmat(ob);
}
else if(type == 2)
- Mat4One(ob->parentinv);
+ unit_m4(ob->parentinv);
ob->recalc |= OB_RECALC;
}
CTX_DATA_END;
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -598,9 +598,46 @@ static int parent_set_exec(bContext *C, wmOperator *op)
/* handle types */
if (pchan)
- strcpy (ob->parsubstr, pchan->name);
+ strcpy(ob->parsubstr, pchan->name);
else
ob->parsubstr[0]= 0;
+
+ if(partype == PAR_PATH_CONST)
+ ; /* don't do anything here, since this is not technically "parenting" */
+ else if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm )
+ {
+ /* partype is now set to PAROBJECT so that invisible 'virtual' modifiers don't need to be created
+ * NOTE: the old (2.4x) method was to set ob->partype = PARSKEL, creating the virtual modifiers
+ */
+ ob->partype= PAROBJECT; /* note, dna define, not operator property */
+ //ob->partype= PARSKEL; /* note, dna define, not operator property */
+
+ /* BUT, to keep the deforms, we need a modifier, and then we need to set the object that it uses */
+ // XXX currently this should only happen for meshes, curves, surfaces, and lattices - this stuff isn't available for metas yet
+ if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE))
+ {
+ ModifierData *md;
+
+ switch (partype) {
+ case PAR_CURVE: /* curve deform */
+ md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Curve);
+ ((CurveModifierData *)md)->object= par;
+ break;
+ case PAR_LATTICE: /* lattice deform */
+ md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Lattice);
+ ((LatticeModifierData *)md)->object= par;
+ break;
+ default: /* armature deform */
+ md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Armature);
+ ((ArmatureModifierData *)md)->object= par;
+ break;
+ }
+ }
+ }
+ else if (partype == PAR_BONE)
+ ob->partype= PARBONE; /* note, dna define, not operator property */
+ else
+ ob->partype= PAROBJECT; /* note, dna define, not operator property */
/* constraint */
if(partype == PAR_PATH_CONST) {
@@ -608,16 +645,13 @@ static int parent_set_exec(bContext *C, wmOperator *op)
bFollowPathConstraint *data;
float cmat[4][4], vec[3];
- con = add_new_constraint(CONSTRAINT_TYPE_FOLLOWPATH);
- strcpy (con->name, "AutoPath");
+ con = add_ob_constraint(ob, "AutoPath", CONSTRAINT_TYPE_FOLLOWPATH);
data = con->data;
data->tar = par;
- add_constraint_to_object(con, ob);
-
get_constraint_target_matrix(scene, con, 0, CONSTRAINT_OBTYPE_OBJECT, NULL, cmat, scene->r.cfra - give_timeoffset(ob));
- VecSubf(vec, ob->obmat[3], cmat[3]);
+ sub_v3_v3v3(vec, ob->obmat[3], cmat[3]);
ob->loc[0] = vec[0];
ob->loc[1] = vec[1];
@@ -635,33 +669,22 @@ static int parent_set_exec(bContext *C, wmOperator *op)
ob->partype= PAROBJECT;
what_does_parent(scene, ob, &workob);
- ob->partype= PARSKEL;
-
- Mat4Invert(ob->parentinv, workob.obmat);
+ invert_m4_m4(ob->parentinv, workob.obmat);
}
else {
/* calculate inverse parent matrix */
what_does_parent(scene, ob, &workob);
- Mat4Invert(ob->parentinv, workob.obmat);
+ invert_m4_m4(ob->parentinv, workob.obmat);
}
ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
-
- if(partype == PAR_PATH_CONST)
- ; /* don't do anything here, since this is not technically "parenting" */
- if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm )
- ob->partype= PARSKEL; /* note, dna define, not operator property */
- else if (partype == PAR_BONE)
- ob->partype= PARBONE; /* note, dna define, not operator property */
- else
- ob->partype= PAROBJECT; /* note, dna define, not operator property */
}
}
}
CTX_DATA_END;
- DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_scene_sort(scene);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -734,7 +757,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op)
}
else {
/* clear inverse matrix and also the object location */
- Mat4One(ob->parentinv);
+ unit_m4(ob->parentinv);
memset(ob->loc, 0, 3*sizeof(float));
/* set recalc flags */
@@ -749,7 +772,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -789,7 +812,7 @@ static int object_slow_parent_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
return OPERATOR_FINISHED;
@@ -827,7 +850,7 @@ static int object_slow_parent_set_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
return OPERATOR_FINISHED;
@@ -876,8 +899,8 @@ static int object_track_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
+ DAG_ids_flush_update(0);
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
return OPERATOR_FINISHED;
}
@@ -923,8 +946,7 @@ static int track_set_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if(ob!=obact) {
- con = add_new_constraint(CONSTRAINT_TYPE_TRACKTO);
- strcpy (con->name, "AutoTrack");
+ con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_TRACKTO);
data = con->data;
data->tar = obact;
@@ -935,8 +957,6 @@ static int track_set_exec(bContext *C, wmOperator *op)
data->reserved1 = TRACK_nZ;
data->reserved2 = UP_Y;
}
-
- add_constraint_to_object(con, ob);
}
}
CTX_DATA_END;
@@ -947,8 +967,7 @@ static int track_set_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if(ob!=obact) {
- con = add_new_constraint(CONSTRAINT_TYPE_LOCKTRACK);
- strcpy (con->name, "AutoTrack");
+ con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_LOCKTRACK);
data = con->data;
data->tar = obact;
@@ -959,8 +978,6 @@ static int track_set_exec(bContext *C, wmOperator *op)
data->trackflag = TRACK_nZ;
data->lockflag = LOCK_Y;
}
-
- add_constraint_to_object(con, ob);
}
}
CTX_DATA_END;
@@ -975,7 +992,7 @@ static int track_set_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
}
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
return OPERATOR_FINISHED;
}
@@ -1155,7 +1172,7 @@ static int make_links_scene_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* one day multiple scenes will be visible, then we should have some update function for them */
return OPERATOR_FINISHED;
@@ -1223,7 +1240,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C));
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index 47730496296..20f3ea3df9e 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -40,7 +40,7 @@
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BLI_rand.h"
#include "BLI_string.h"
@@ -524,7 +524,7 @@ static short select_grouped_color(bContext *C, Object *ob)
char changed = 0;
CTX_DATA_BEGIN(C, Base*, base, selectable_bases) {
- if (!(base->flag & SELECT) && (FloatCompare(base->object->col, ob->col, 0.005f))) {
+ if (!(base->flag & SELECT) && (compare_v3v3(base->object->col, ob->col, 0.005f))) {
ED_base_object_select(base, BA_SELECT);
changed = 1;
}
diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c
index f52927a1a00..f8eff578839 100644
--- a/source/blender/editors/object/object_shapekey.c
+++ b/source/blender/editors/object/object_shapekey.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
@@ -119,49 +119,6 @@ void key_to_mesh(KeyBlock *kb, Mesh *me)
}
}
-static KeyBlock *add_keyblock(Scene *scene, Key *key)
-{
- KeyBlock *kb;
- float curpos= -0.1;
- int tot;
-
- kb= key->block.last;
- if(kb) curpos= kb->pos;
-
- kb= MEM_callocN(sizeof(KeyBlock), "Keyblock");
- BLI_addtail(&key->block, kb);
- kb->type= KEY_CARDINAL;
-
- tot= BLI_countlist(&key->block);
- if(tot==1) strcpy(kb->name, "Basis");
- else sprintf(kb->name, "Key %d", tot-1);
-
- // XXX this is old anim system stuff? (i.e. the 'index' of the shapekey)
- kb->adrcode= tot-1;
-
- key->totkey++;
- if(key->totkey==1) key->refkey= kb;
-
- kb->slidermin= 0.0f;
- kb->slidermax= 1.0f;
-
- // XXX kb->pos is the confusing old horizontal-line RVK crap in old IPO Editor...
- if(key->type == KEY_RELATIVE)
- kb->pos= curpos+0.1;
- else {
-#if 0 // XXX old animation system
- curpos= bsystem_time(scene, 0, (float)CFRA, 0.0);
- if(calc_ipo_spec(key->ipo, KEY_SPEED, &curpos)==0) {
- curpos /= 100.0;
- }
- kb->pos= curpos;
-
- sort_keys(key);
-#endif // XXX old animation system
- }
- return kb;
-}
-
static void insert_meshkey(Scene *scene, Object *ob)
{
Mesh *me= ob->data;
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c
index 0c09e0a03de..19157c6aa6a 100644
--- a/source/blender/editors/object/object_transform.c
+++ b/source/blender/editors/object/object_transform.c
@@ -26,7 +26,9 @@
*/
#include <stdlib.h>
+#include <string.h>
+#include "DNA_anim_types.h"
#include "DNA_action_types.h"
#include "DNA_armature_types.h"
#include "DNA_curve_types.h"
@@ -38,7 +40,7 @@
#include "DNA_screen_types.h"
#include "DNA_view3d_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_listbase.h"
@@ -61,6 +63,7 @@
#include "ED_anim_api.h"
#include "ED_armature.h"
#include "ED_curve.h"
+#include "ED_keyframing.h"
#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_screen.h"
@@ -72,8 +75,16 @@
static int object_location_clear_exec(bContext *C, wmOperator *op)
{
- int armature_clear= 0;
-
+ Scene *scene= CTX_data_scene(C);
+
+ KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location");
+ bCommonKeySrc cks;
+ ListBase dsources = {&cks, &cks};
+
+ /* init common-key-source for use by KeyingSets */
+ memset(&cks, 0, sizeof(bCommonKeySrc));
+
+ /* clear location of selected objects if not in weight-paint mode */
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) {
if((ob->protectflag & OB_LOCK_LOCX)==0)
@@ -82,13 +93,17 @@ static int object_location_clear_exec(bContext *C, wmOperator *op)
ob->loc[1]= ob->dloc[1]= 0.0f;
if((ob->protectflag & OB_LOCK_LOCZ)==0)
ob->loc[2]= ob->dloc[2]= 0.0f;
+
+ /* do auto-keyframing as appropriate */
+ if (autokeyframe_cfra_can_key(scene, &ob->id)) {
+ /* init cks for this object, then use the relative KeyingSets to keyframe it */
+ cks.id= &ob->id;
+ modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
+ }
}
ob->recalc |= OB_RECALC_OB;
}
CTX_DATA_END;
-
- if(armature_clear==0) /* in this case flush was done */
- ED_anim_dag_flush_update(C);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
@@ -112,8 +127,16 @@ void OBJECT_OT_location_clear(wmOperatorType *ot)
static int object_rotation_clear_exec(bContext *C, wmOperator *op)
{
- int armature_clear= 0;
-
+ Scene *scene= CTX_data_scene(C);
+
+ KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation");
+ bCommonKeySrc cks;
+ ListBase dsources = {&cks, &cks};
+
+ /* init common-key-source for use by KeyingSets */
+ memset(&cks, 0, sizeof(bCommonKeySrc));
+
+ /* clear rotation of selected objects if not in weight-paint mode */
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) {
if (ob->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) {
@@ -159,10 +182,10 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op)
if (ob->rotmode == ROT_MODE_QUAT) {
QUATCOPY(quat1, ob->quat);
- QuatToEul(ob->quat, oldeul);
+ quat_to_eul( oldeul,ob->quat);
}
else if (ob->rotmode == ROT_MODE_AXISANGLE) {
- AxisAngleToEulO(ob->rotAxis, ob->rotAngle, oldeul, EULER_ORDER_DEFAULT);
+ axis_angle_to_eulO( oldeul, EULER_ORDER_DEFAULT,ob->rotAxis, ob->rotAngle);
}
else {
VECCOPY(oldeul, ob->rot);
@@ -178,14 +201,14 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op)
eul[2]= oldeul[2];
if (ob->rotmode == ROT_MODE_QUAT) {
- EulToQuat(eul, ob->quat);
+ eul_to_quat( ob->quat,eul);
/* quaternions flip w sign to accumulate rotations correctly */
if ((quat1[0]<0.0f && ob->quat[0]>0.0f) || (quat1[0]>0.0f && ob->quat[0]<0.0f)) {
- QuatMulf(ob->quat, -1.0f);
+ mul_qt_fl(ob->quat, -1.0f);
}
}
else if (ob->rotmode == ROT_MODE_AXISANGLE) {
- EulOToAxisAngle(eul, EULER_ORDER_DEFAULT, ob->rotAxis, &ob->rotAngle);
+ eulO_to_axis_angle( ob->rotAxis, &ob->rotAngle,eul, EULER_ORDER_DEFAULT);
}
else {
VECCOPY(ob->rot, eul);
@@ -206,13 +229,17 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op)
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f;
}
}
+
+ /* do auto-keyframing as appropriate */
+ if (autokeyframe_cfra_can_key(scene, &ob->id)) {
+ /* init cks for this object, then use the relative KeyingSets to keyframe it */
+ cks.id= &ob->id;
+ modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
+ }
}
ob->recalc |= OB_RECALC_OB;
}
CTX_DATA_END;
-
- if(armature_clear==0) /* in this case flush was done */
- ED_anim_dag_flush_update(C);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
@@ -236,8 +263,16 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot)
static int object_scale_clear_exec(bContext *C, wmOperator *op)
{
- int armature_clear= 0;
-
+ Scene *scene= CTX_data_scene(C);
+
+ KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scaling");
+ bCommonKeySrc cks;
+ ListBase dsources = {&cks, &cks};
+
+ /* init common-key-source for use by KeyingSets */
+ memset(&cks, 0, sizeof(bCommonKeySrc));
+
+ /* clear scales of selected objects if not in weight-paint mode */
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) {
if((ob->protectflag & OB_LOCK_SCALEX)==0) {
@@ -252,14 +287,18 @@ static int object_scale_clear_exec(bContext *C, wmOperator *op)
ob->dsize[2]= 0.0f;
ob->size[2]= 1.0f;
}
+
+ /* do auto-keyframing as appropriate */
+ if (autokeyframe_cfra_can_key(scene, &ob->id)) {
+ /* init cks for this object, then use the relative KeyingSets to keyframe it */
+ cks.id= &ob->id;
+ modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
+ }
}
ob->recalc |= OB_RECALC_OB;
}
CTX_DATA_END;
- if(armature_clear==0) /* in this case flush was done */
- ED_anim_dag_flush_update(C);
-
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -290,19 +329,19 @@ static int object_origin_clear_exec(bContext *C, wmOperator *op)
v1= ob->loc;
v3= ob->parentinv[3];
- Mat3CpyMat4(mat, ob->parentinv);
+ copy_m3_m4(mat, ob->parentinv);
VECCOPY(v3, v1);
v3[0]= -v3[0];
v3[1]= -v3[1];
v3[2]= -v3[2];
- Mat3MulVecfl(mat, v3);
+ mul_m3_v3(mat, v3);
}
ob->recalc |= OB_RECALC_OB;
}
CTX_DATA_END;
if(armature_clear==0) /* in this case flush was done */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
@@ -338,7 +377,7 @@ static void ignore_parent_tx(Main *bmain, Scene *scene, Object *ob )
if(ob_child->parent == ob) {
ED_object_apply_obmat(ob_child);
what_does_parent(scene, ob_child, &workob);
- Mat4Invert(ob_child->parentinv, workob.obmat);
+ invert_m4_m4(ob_child->parentinv, workob.obmat);
}
}
}
@@ -402,20 +441,20 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo
else if(apply_rot)
object_rot_to_mat3(ob, rsmat);
else
- Mat3One(rsmat);
+ unit_m3(rsmat);
- Mat4CpyMat3(mat, rsmat);
+ copy_m4_m3(mat, rsmat);
/* calculate translation */
if(apply_loc) {
- VecCopyf(mat[3], ob->loc);
+ copy_v3_v3(mat[3], ob->loc);
if(!(apply_scale && apply_rot)) {
/* correct for scale and rotation that is still applied */
object_to_mat3(ob, obmat);
- Mat3Inv(iobmat, obmat);
- Mat3MulMat3(tmat, rsmat, iobmat);
- Mat3MulVecfl(tmat, mat[3]);
+ invert_m3_m3(iobmat, obmat);
+ mul_m3_m3m3(tmat, rsmat, iobmat);
+ mul_m3_v3(tmat, mat[3]);
}
}
@@ -426,7 +465,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo
/* adjust data */
mvert= me->mvert;
for(a=0; a<me->totvert; a++, mvert++)
- Mat4MulVecfl(mat, mvert->co);
+ mul_m4_v3(mat, mvert->co);
if(me->key) {
KeyBlock *kb;
@@ -435,7 +474,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo
float *fp= kb->data;
for(a=0; a<kb->totelem; a++, fp+=3)
- Mat4MulVecfl(mat, fp);
+ mul_m4_v3(mat, fp);
}
}
@@ -448,15 +487,15 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo
else if(ELEM(ob->type, OB_CURVE, OB_SURF)) {
cu= ob->data;
- scale = Mat3ToScalef(rsmat);
+ scale = mat3_to_scale(rsmat);
for(nu=cu->nurb.first; nu; nu=nu->next) {
if(nu->type == CU_BEZIER) {
a= nu->pntsu;
for(bezt= nu->bezt; a--; bezt++) {
- Mat4MulVecfl(mat, bezt->vec[0]);
- Mat4MulVecfl(mat, bezt->vec[1]);
- Mat4MulVecfl(mat, bezt->vec[2]);
+ mul_m4_v3(mat, bezt->vec[0]);
+ mul_m4_v3(mat, bezt->vec[1]);
+ mul_m4_v3(mat, bezt->vec[2]);
bezt->radius *= scale;
bezt++;
}
@@ -464,7 +503,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo
else {
a= nu->pntsu*nu->pntsv;
for(bp= nu->bp; a--; bp++)
- Mat4MulVecfl(mat, bp->vec);
+ mul_m4_v3(mat, bp->vec);
}
}
}
@@ -475,8 +514,14 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo
ob->loc[0]= ob->loc[1]= ob->loc[2]= 0.0f;
if(apply_scale)
ob->size[0]= ob->size[1]= ob->size[2]= 1.0f;
- if(apply_rot)
+ if(apply_rot) {
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f;
+ ob->quat[1]= ob->quat[2]= ob->quat[3]= 0.0f;
+ ob->rotAxis[0]= ob->rotAxis[2]= 0.0f;
+ ob->rotAngle= 0.0f;
+
+ ob->quat[0]= ob->rotAxis[1]= 1.0f;
+ }
where_is_object(scene, ob);
ignore_parent_tx(bmain, scene, ob);
@@ -501,10 +546,16 @@ static int visual_transform_apply_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
where_is_object(scene, ob);
-
+
VECCOPY(ob->loc, ob->obmat[3]);
- Mat4ToSize(ob->obmat, ob->size);
- Mat4ToEul(ob->obmat, ob->rot);
+ mat4_to_size(ob->size,ob->obmat);
+
+ if (ob->rotmode == ROT_MODE_QUAT)
+ mat4_to_quat(ob->quat, ob->obmat);
+ else if (ob->rotmode == ROT_MODE_AXISANGLE)
+ mat4_to_axis_angle(ob->rotAxis, &ob->rotAngle, ob->obmat);
+ else
+ mat4_to_eul(ob->rot,ob->obmat);
where_is_object(scene, ob);
@@ -641,20 +692,12 @@ void texspace_edit(Scene *scene, View3D *v3d)
}
}
-/************************ Mirror Menu ****************************/
-
-void mirrormenu(void)
-{
-// XXX initTransform(TFM_MIRROR, CTX_NO_PET);
-// XXX Transform();
-}
-
/********************* Set Object Center ************************/
static EnumPropertyItem prop_set_center_types[] = {
- {0, "CENTER", 0, "ObData to Center", "Move object data around Object center"},
- {1, "CENTERNEW", 0, "Center New", "Move Object center to center of object data"},
- {2, "CENTERCURSOR", 0, "Center Cursor", "Move Object Center to position of the 3d cursor"},
+ {0, "CENTER", 0, "ObData to Centroi", "Move object data to Object centroid"},
+ {1, "CENTER_NEW", 0, "Centroid to ObData", "Move Object centroid to center of object data"},
+ {2, "CENTER_CURSOR", 0, "Centroid to 3D Cursor", "Move Object centroid to position of the 3d cursor"},
{0, NULL, 0, NULL, NULL}
};
@@ -709,7 +752,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
}
if(v3d->around==V3D_CENTROID) {
- VecMulf(cent, 1.0f/(float)total);
+ mul_v3_fl(cent, 1.0f/(float)total);
}
else {
cent[0]= (min[0]+max[0])/2.0f;
@@ -718,7 +761,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
}
for(eve= em->verts.first; eve; eve= eve->next) {
- VecSubf(eve->co, eve->co, cent);
+ sub_v3_v3v3(eve->co, eve->co, cent);
}
recalc_editnormals(em);
@@ -748,8 +791,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
} else {
if(centermode==2) {
VECCOPY(cent, give_cursor(scene, v3d));
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulVecfl(ob->imat, cent);
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_m4_v3(ob->imat, cent);
} else {
INIT_MINMAX(min, max);
mvert= me->mvert;
@@ -764,7 +807,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
mvert= me->mvert;
for(a=0; a<me->totvert; a++, mvert++) {
- VecSubf(mvert->co, mvert->co, cent);
+ sub_v3_v3v3(mvert->co, mvert->co, cent);
}
if (me->key) {
@@ -773,7 +816,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
float *fp= kb->data;
for (a=0; a<kb->totelem; a++, fp+=3) {
- VecSubf(fp, fp, cent);
+ sub_v3_v3v3(fp, fp, cent);
}
}
}
@@ -781,10 +824,10 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
me->flag |= ME_ISDONE;
if(centermode) {
- Mat3CpyMat4(omat, ob->obmat);
+ copy_m3_m4(omat, ob->obmat);
VECCOPY(centn, cent);
- Mat3MulVecfl(omat, centn);
+ mul_m3_v3(omat, centn);
ob->loc[0]+= centn[0];
ob->loc[1]+= centn[1];
ob->loc[2]+= centn[2];
@@ -802,9 +845,9 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
ob_other->flag |= OB_DONE;
ob_other->recalc= OB_RECALC_OB|OB_RECALC_DATA;
- Mat3CpyMat4(omat, ob_other->obmat);
+ copy_m3_m4(omat, ob_other->obmat);
VECCOPY(centn, cent);
- Mat3MulVecfl(omat, centn);
+ mul_m3_v3(omat, centn);
ob_other->loc[0]+= centn[0];
ob_other->loc[1]+= centn[1];
ob_other->loc[2]+= centn[2];
@@ -815,7 +858,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
if(tme && (tme->flag & ME_ISDONE)==0) {
mvert= tme->mvert;
for(a=0; a<tme->totvert; a++, mvert++) {
- VecSubf(mvert->co, mvert->co, cent);
+ sub_v3_v3v3(mvert->co, mvert->co, cent);
}
if (tme->key) {
@@ -824,7 +867,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
float *fp= kb->data;
for (a=0; a<kb->totelem; a++, fp+=3) {
- VecSubf(fp, fp, cent);
+ sub_v3_v3v3(fp, fp, cent);
}
}
}
@@ -858,8 +901,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
} else {
if(centermode==2) {
VECCOPY(cent, give_cursor(scene, v3d));
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulVecfl(ob->imat, cent);
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_m4_v3(ob->imat, cent);
/* don't allow Z change if curve is 2D */
if( !( cu->flag & CU_3D ) )
@@ -884,23 +927,23 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
if(nu->type == CU_BEZIER) {
a= nu->pntsu;
while (a--) {
- VecSubf(nu->bezt[a].vec[0], nu->bezt[a].vec[0], cent);
- VecSubf(nu->bezt[a].vec[1], nu->bezt[a].vec[1], cent);
- VecSubf(nu->bezt[a].vec[2], nu->bezt[a].vec[2], cent);
+ sub_v3_v3v3(nu->bezt[a].vec[0], nu->bezt[a].vec[0], cent);
+ sub_v3_v3v3(nu->bezt[a].vec[1], nu->bezt[a].vec[1], cent);
+ sub_v3_v3v3(nu->bezt[a].vec[2], nu->bezt[a].vec[2], cent);
}
}
else {
a= nu->pntsu*nu->pntsv;
while (a--)
- VecSubf(nu->bp[a].vec, nu->bp[a].vec, cent);
+ sub_v3_v3v3(nu->bp[a].vec, nu->bp[a].vec, cent);
}
nu= nu->next;
}
if(centermode && obedit==NULL) {
- Mat3CpyMat4(omat, ob->obmat);
+ copy_m3_m4(omat, ob->obmat);
- Mat3MulVecfl(omat, cent);
+ mul_m3_v3(omat, cent);
ob->loc[0]+= cent[0];
ob->loc[1]+= cent[1];
ob->loc[2]+= cent[2];
@@ -967,7 +1010,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
if (tot_change) {
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
+ WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
}
/* Warn if any errors occured */
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index aa60679321a..d9c21a9c9a5 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -28,6 +28,7 @@
*/
#include <string.h>
+#include <math.h>
#include "MEM_guardedalloc.h"
@@ -68,6 +69,7 @@
#include "ED_view3d.h"
#include "UI_interface.h"
+#include "UI_resources.h"
#include "object_intern.h"
@@ -615,6 +617,32 @@ static void vgroup_normalize(Object *ob)
}
}
+static void vgroup_levels(Object *ob, float offset, float gain)
+{
+ bDeformGroup *dg;
+ MDeformWeight *dw;
+ MDeformVert *dvert, *dvert_array=NULL;
+ int i, def_nr, dvert_tot=0;
+
+ ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot);
+
+ dg = BLI_findlink(&ob->defbase, (ob->actdef-1));
+
+ if(dg) {
+ def_nr= ob->actdef-1;
+
+ for(i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array+i;
+ dw = ED_vgroup_weight_get(dvert, def_nr);
+ if(dw) {
+ dw->weight = gain * (dw->weight + offset);
+
+ CLAMP(dw->weight, 0.0f, 1.0f);
+ }
+ }
+ }
+}
+
/* TODO - select between groups */
static void vgroup_normalize_all(Object *ob, int lock_active)
{
@@ -1467,6 +1495,38 @@ void OBJECT_OT_vertex_group_copy(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+static int vertex_group_levels_exec(bContext *C, wmOperator *op)
+{
+ Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+
+ float offset= RNA_float_get(op->ptr,"offset");
+ float gain= RNA_float_get(op->ptr,"gain");
+
+ vgroup_levels(ob, offset, gain);
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data);
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_vertex_group_levels(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Vertex Group Levels";
+ ot->idname= "OBJECT_OT_vertex_group_levels";
+
+ /* api callbacks */
+ ot->poll= vertex_group_poll;
+ ot->exec= vertex_group_levels_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_float(ot->srna, "offset", 0.f, -1.0, 1.0, "Offset", "Value to add to weights.", -1.0f, 1.f);
+ RNA_def_float(ot->srna, "gain", 1.f, 0.f, FLT_MAX, "Gain", "Value to multiply weights by.", 0.0f, 10.f);
+}
static int vertex_group_normalize_exec(bContext *C, wmOperator *op)
{
@@ -1575,6 +1635,7 @@ void OBJECT_OT_vertex_group_blend(wmOperatorType *ot)
/* identifiers */
ot->name= "Blend Vertex Group";
ot->idname= "OBJECT_OT_vertex_group_blend";
+ ot->description= "";
/* api callbacks */
ot->poll= vertex_group_poll;
@@ -1608,6 +1669,7 @@ void OBJECT_OT_vertex_group_clean(wmOperatorType *ot)
/* identifiers */
ot->name= "Clean Vertex Group";
ot->idname= "OBJECT_OT_vertex_group_clean";
+ ot->description= "Remove Vertex Group assignments which aren't required.";
/* api callbacks */
ot->poll= vertex_group_poll;
@@ -1653,6 +1715,7 @@ void OBJECT_OT_vertex_group_copy_to_linked(wmOperatorType *ot)
/* identifiers */
ot->name= "Copy Vertex Group to Linked";
ot->idname= "OBJECT_OT_vertex_group_copy_to_linked";
+ ot->description= "Copy Vertex Groups to all users of the same Geometry data.";
/* api callbacks */
ot->poll= vertex_group_poll;
@@ -1691,6 +1754,7 @@ static EnumPropertyItem *vgroup_itemf(bContext *C, PointerRNA *ptr, int *free)
for(a=0, def=ob->defbase.first; def; def=def->next, a++) {
tmp.value= a;
+ tmp.icon= ICON_GROUP_VERTEX;
tmp.identifier= def->name;
tmp.name= def->name;
RNA_enum_item_add(&item, &totitem, &tmp);
@@ -1709,6 +1773,7 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot)
/* identifiers */
ot->name= "Set Active Vertex Group";
ot->idname= "OBJECT_OT_vertex_group_set_active";
+ ot->description= "Set the active vertex group.";
/* api callbacks */
ot->poll= vertex_group_poll;
@@ -1723,48 +1788,3 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot)
RNA_def_enum_funcs(prop, vgroup_itemf);
}
-static int vertex_group_menu_exec(bContext *C, wmOperator *op)
-{
- Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
- uiPopupMenu *pup;
- uiLayout *layout;
-
- pup= uiPupMenuBegin(C, "Vertex Groups", 0);
- layout= uiPupMenuLayout(pup);
- uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
-
- if(vgroup_object_in_edit_mode(ob)) {
- uiItemBooleanO(layout, "Assign to New Group", 0, "OBJECT_OT_vertex_group_assign", "new", 1);
-
- if(BLI_countlist(&ob->defbase) && ob->actdef) {
- uiItemO(layout, "Assign to Group", 0, "OBJECT_OT_vertex_group_assign");
- uiItemO(layout, "Remove from Group", 0, "OBJECT_OT_vertex_group_remove_from");
- uiItemBooleanO(layout, "Remove from All", 0, "OBJECT_OT_vertex_group_remove_from", "all", 1);
- }
- }
-
- if(BLI_countlist(&ob->defbase) && ob->actdef) {
- if(vgroup_object_in_edit_mode(ob))
- uiItemS(layout);
-
- uiItemO(layout, "Set Active Group", 0, "OBJECT_OT_vertex_group_set_active");
- uiItemO(layout, "Remove Group", 0, "OBJECT_OT_vertex_group_remove");
- uiItemBooleanO(layout, "Remove All Groups", 0, "OBJECT_OT_vertex_group_remove", "all", 1);
- }
-
- uiPupMenuEnd(C, pup);
-
- return OPERATOR_FINISHED;
-}
-
-void OBJECT_OT_vertex_group_menu(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Vertex Group Menu";
- ot->idname= "OBJECT_OT_vertex_group_menu";
-
- /* api callbacks */
- ot->poll= vertex_group_poll;
- ot->exec= vertex_group_menu_exec;
-}
-
diff --git a/source/blender/editors/physics/SConscript b/source/blender/editors/physics/SConscript
index 60b992d2e07..85a40c91b3a 100644
--- a/source/blender/editors/physics/SConscript
+++ b/source/blender/editors/physics/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #/intern/guardedalloc ../../gpu'
+incs += ' ../../gpu'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
if env['OURPLATFORM'] == 'linux2':
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c
index 75c56575474..b5007ff72ce 100644
--- a/source/blender/editors/physics/particle_edit.c
+++ b/source/blender/editors/physics/particle_edit.c
@@ -60,7 +60,7 @@
#include "BKE_utildefines.h"
#include "BKE_pointcache.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_kdtree.h"
@@ -587,13 +587,13 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected
if(pset->selectmode==SCE_SELECT_PATH)
selected= 0;
- Mat4One(imat);
- Mat4One(mat);
+ unit_m4(imat);
+ unit_m4(mat);
LOOP_VISIBLE_POINTS {
if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) {
psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat);
- Mat4Invert(imat,mat);
+ invert_m4_m4(imat,mat);
}
if(pset->selectmode==SCE_SELECT_END) {
@@ -698,7 +698,7 @@ static void PE_update_mirror_cache(Object *ob, ParticleSystem *psys)
key = pa->hair;
psys_mat_hair_to_orco(ob, psmd->dm, psys->part->from, pa, mat);
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
BLI_kdtree_insert(tree, p, co, NULL);
}
@@ -712,7 +712,7 @@ static void PE_update_mirror_cache(Object *ob, ParticleSystem *psys)
key = pa->hair;
psys_mat_hair_to_orco(ob, psmd->dm, psys->part->from, pa, mat);
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
co[0]= -co[0];
index= BLI_kdtree_find_nearest(tree, co, NULL, &nearest);
@@ -785,7 +785,7 @@ static void PE_mirror_particle(Object *ob, DerivedMesh *dm, ParticleSystem *psys
/* mirror positions and tags */
psys_mat_hair_to_orco(ob, dm, psys->part->from, pa, mat);
psys_mat_hair_to_orco(ob, dm, psys->part->from, mpa, mmat);
- Mat4Invert(immat, mmat);
+ invert_m4_m4(immat, mmat);
hkey=pa->hair;
mhkey=mpa->hair;
@@ -793,9 +793,9 @@ static void PE_mirror_particle(Object *ob, DerivedMesh *dm, ParticleSystem *psys
mkey= mpoint->keys;
for(k=0; k<pa->totkey; k++, hkey++, mhkey++, key++, mkey++) {
VECCOPY(mhkey->co, hkey->co);
- Mat4MulVecfl(mat, mhkey->co);
+ mul_m4_v3(mat, mhkey->co);
mhkey->co[0]= -mhkey->co[0];
- Mat4MulVecfl(immat, mhkey->co);
+ mul_m4_v3(immat, mhkey->co);
if(key->flag & PEK_TAG)
mkey->flag |= PEK_TAG;
@@ -867,12 +867,12 @@ static void pe_deflect_emitter(Scene *scene, Object *ob, PTCacheEdit *edit)
psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, psys->particles + p, hairmat);
LOOP_KEYS {
- Mat4MulVecfl(hairmat, key->co);
+ mul_m4_v3(hairmat, key->co);
}
LOOP_KEYS {
if(k==0) {
- dist_1st = VecLenf((key+1)->co, key->co);
+ dist_1st = len_v3v3((key+1)->co, key->co);
dist_1st *= 0.75f * pset->emitterdist;
}
else {
@@ -881,32 +881,32 @@ static void pe_deflect_emitter(Scene *scene, Object *ob, PTCacheEdit *edit)
vec=edit->emitter_cosnos +index*6;
nor=vec+3;
- VecSubf(dvec, key->co, vec);
+ sub_v3_v3v3(dvec, key->co, vec);
- dot=Inpf(dvec,nor);
+ dot=dot_v3v3(dvec,nor);
VECCOPY(dvec,nor);
if(dot>0.0f) {
if(dot<dist_1st) {
- Normalize(dvec);
- VecMulf(dvec,dist_1st-dot);
- VecAddf(key->co,key->co,dvec);
+ normalize_v3(dvec);
+ mul_v3_fl(dvec,dist_1st-dot);
+ add_v3_v3v3(key->co,key->co,dvec);
}
}
else {
- Normalize(dvec);
- VecMulf(dvec,dist_1st-dot);
- VecAddf(key->co,key->co,dvec);
+ normalize_v3(dvec);
+ mul_v3_fl(dvec,dist_1st-dot);
+ add_v3_v3v3(key->co,key->co,dvec);
}
if(k==1)
dist_1st*=1.3333f;
}
}
- Mat4Invert(hairimat,hairmat);
+ invert_m4_m4(hairimat,hairmat);
LOOP_KEYS {
- Mat4MulVecfl(hairimat, key->co);
+ mul_m4_v3(hairimat, key->co);
}
}
}
@@ -927,10 +927,10 @@ void PE_apply_lengths(Scene *scene, PTCacheEdit *edit)
LOOP_EDITED_POINTS {
LOOP_KEYS {
if(k) {
- VecSubf(dv1, key->co, (key - 1)->co);
- Normalize(dv1);
- VecMulf(dv1, (key - 1)->length);
- VecAddf(key->co, (key - 1)->co, dv1);
+ sub_v3_v3v3(dv1, key->co, (key - 1)->co);
+ normalize_v3(dv1);
+ mul_v3_fl(dv1, (key - 1)->length);
+ add_v3_v3v3(key->co, (key - 1)->co, dv1);
}
}
}
@@ -970,19 +970,19 @@ static void pe_iterate_lengths(Scene *scene, PTCacheEdit *edit)
for(; k<point->totkey; k++, key++) {
if(k) {
- VecSubf(dv0, (key - 1)->co, key->co);
- tlen= Normalize(dv0);
- VecMulf(dv0, (mul * (tlen - (key - 1)->length)));
+ sub_v3_v3v3(dv0, (key - 1)->co, key->co);
+ tlen= normalize_v3(dv0);
+ mul_v3_fl(dv0, (mul * (tlen - (key - 1)->length)));
}
if(k < point->totkey - 1) {
- VecSubf(dv2, (key + 1)->co, key->co);
- tlen= Normalize(dv2);
- VecMulf(dv2, mul * (tlen - key->length));
+ sub_v3_v3v3(dv2, (key + 1)->co, key->co);
+ tlen= normalize_v3(dv2);
+ mul_v3_fl(dv2, mul * (tlen - key->length));
}
if(k) {
- VecAddf((key-1)->co,(key-1)->co,dv1);
+ add_v3_v3v3((key-1)->co,(key-1)->co,dv1);
}
VECADD(dv1,dv0,dv2);
@@ -1001,7 +1001,7 @@ static void recalc_lengths(PTCacheEdit *edit)
LOOP_EDITED_POINTS {
key= point->keys;
for(k=0; k<point->totkey-1; k++, key++) {
- key->length= VecLenf(key->co, (key + 1)->co);
+ key->length= len_v3v3(key->co, (key + 1)->co);
}
}
}
@@ -1055,12 +1055,12 @@ static void recalc_emitter_field(Object *ob, ParticleSystem *psys)
VECADD(vec,vec,mvert->co);
VECADD(nor,nor,mvert->no);
- VecMulf(vec,0.25);
+ mul_v3_fl(vec,0.25);
}
else
- VecMulf(vec,0.3333f);
+ mul_v3_fl(vec,0.3333f);
- Normalize(nor);
+ normalize_v3(nor);
BLI_kdtree_insert(edit->emitter_field, i, vec, NULL);
}
@@ -1114,7 +1114,7 @@ static void update_world_cos(Object *ob, PTCacheEdit *edit)
LOOP_KEYS {
VECCOPY(key->world_co,key->co);
if(!(psys->flag & PSYS_GLOBAL_HAIR))
- Mat4MulVecfl(hairmat, key->world_co);
+ mul_m4_v3(hairmat, key->world_co);
}
}
}
@@ -1142,7 +1142,7 @@ static void update_velocities(Object *ob, PTCacheEdit *edit)
if(point->totkey>2) {
VECSUB(vec1, (key+1)->co, (key+2)->co);
- Projf(vec2, vec1, key->vel);
+ project_v3_v3v3(vec2, vec1, key->vel);
VECSUB(vec2, vec1, vec2);
VECADDFAC(key->vel, key->vel, vec2, 0.5f);
}
@@ -1157,7 +1157,7 @@ static void update_velocities(Object *ob, PTCacheEdit *edit)
if(point->totkey>2) {
VECSUB(vec1, (key-2)->co, (key-1)->co);
- Projf(vec2, vec1, key->vel);
+ project_v3_v3v3(vec2, vec1, key->vel);
VECSUB(vec2, vec1, vec2);
VECADDFAC(key->vel, key->vel, vec2, 0.5f);
}
@@ -1170,7 +1170,7 @@ static void update_velocities(Object *ob, PTCacheEdit *edit)
VECSUB(key->vel, (key+1)->co, (key-1)->co);
}
- VecMulf(key->vel, frs_sec/dfra);
+ mul_v3_fl(key->vel, frs_sec/dfra);
}
}
}
@@ -1537,7 +1537,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
if(!PE_start_edit(edit))
return OPERATOR_CANCELLED;
- Mat4One(mat);
+ unit_m4(mat);
LOOP_VISIBLE_POINTS {
if(edit->psys && !(psys->flag & PSYS_GLOBAL_HAIR))
@@ -1546,7 +1546,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
if(pset->selectmode==SCE_SELECT_POINT) {
LOOP_KEYS {
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
project_short(ar, co, vertco);
if((vertco[0] != IS_CLIPPED) && lasso_inside(mcords,moves,vertco[0],vertco[1])) {
if(select && !(key->flag & PEK_SELECT)) {
@@ -1564,7 +1564,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
key= point->keys + point->totkey - 1;
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
project_short(ar, co,vertco);
if((vertco[0] != IS_CLIPPED) && lasso_inside(mcords,moves,vertco[0],vertco[1])) {
if(select && !(key->flag & PEK_SELECT)) {
@@ -2255,7 +2255,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op)
LOOP_SELECTED_POINTS {
psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, psys->particles+p, mat);
VECCOPY(co, point->keys->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
BLI_kdtree_insert(tree, p, co, NULL);
}
@@ -2265,7 +2265,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op)
LOOP_SELECTED_POINTS {
psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, psys->particles+p, mat);
VECCOPY(co, point->keys->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
totn= BLI_kdtree_find_n_nearest(tree,10,co,NULL,nearest);
@@ -2736,8 +2736,8 @@ static void brush_comb(PEData *data, float mat[][4], float imat[][4], int point_
fac= (float)pow((double)(1.0f - data->dist / data->rad), (double)data->combfac);
VECCOPY(cvec,data->dvec);
- Mat4Mul3Vecfl(imat,cvec);
- VecMulf(cvec, fac);
+ mul_mat3_m4_v3(imat,cvec);
+ mul_v3_fl(cvec, fac);
VECADD(key->co, key->co, cvec);
(data->edit->points + point_index)->flag |= PEP_EDIT_RECALC;
@@ -2854,7 +2854,7 @@ static void brush_length(PEData *data, int point_index)
else {
VECSUB(dvec,key->co,pvec);
VECCOPY(pvec,key->co);
- VecMulf(dvec,data->growfac);
+ mul_v3_fl(dvec,data->growfac);
VECADD(key->co,(key-1)->co,dvec);
}
}
@@ -2873,25 +2873,25 @@ static void brush_puff(PEData *data, int point_index)
if(psys && !(psys->flag & PSYS_GLOBAL_HAIR)) {
psys_mat_hair_to_global(data->ob, data->dm, psys->part->from, psys->particles + point_index, mat);
- Mat4Invert(imat,mat);
+ invert_m4_m4(imat,mat);
}
else {
- Mat4One(mat);
- Mat4One(imat);
+ unit_m4(mat);
+ unit_m4(imat);
}
LOOP_KEYS {
if(k==0) {
/* find root coordinate and normal on emitter */
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
point_index= BLI_kdtree_find_nearest(edit->emitter_field, co, NULL, NULL);
if(point_index == -1) return;
VECCOPY(rootco, co);
- VecCopyf(nor, &edit->emitter_cosnos[point_index*6+3]);
- Normalize(nor);
+ copy_v3_v3(nor, &edit->emitter_cosnos[point_index*6+3]);
+ normalize_v3(nor);
length= 0.0f;
fac= (float)pow((double)(1.0f - data->dist / data->rad), (double)data->pufffac);
@@ -2903,8 +2903,8 @@ static void brush_puff(PEData *data, int point_index)
/* compute position as if hair was standing up straight */
VECCOPY(lastco, co);
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
- length += VecLenf(lastco, co);
+ mul_m4_v3(mat, co);
+ length += len_v3v3(lastco, co);
VECADDFAC(kco, rootco, nor, length);
@@ -2913,7 +2913,7 @@ static void brush_puff(PEData *data, int point_index)
VECADDFAC(co, co, dco, fac);
VECCOPY(key->co, co);
- Mat4MulVecfl(imat, key->co);
+ mul_m4_v3(imat, key->co);
}
}
@@ -2925,8 +2925,8 @@ static void brush_smooth_get(PEData *data, float mat[][4], float imat[][4], int
if(key_index) {
float dvec[3];
- VecSubf(dvec,key->co,(key-1)->co);
- Mat4Mul3Vecfl(mat,dvec);
+ sub_v3_v3v3(dvec,key->co,(key-1)->co);
+ mul_mat3_m4_v3(mat,dvec);
VECADD(data->vec,data->vec,dvec);
data->tot++;
}
@@ -2938,12 +2938,12 @@ static void brush_smooth_do(PEData *data, float mat[][4], float imat[][4], int p
if(key_index) {
VECCOPY(vec,data->vec);
- Mat4Mul3Vecfl(imat,vec);
+ mul_mat3_m4_v3(imat,vec);
- VecSubf(dvec,key->co,(key-1)->co);
+ sub_v3_v3v3(dvec,key->co,(key-1)->co);
VECSUB(dvec,vec,dvec);
- VecMulf(dvec,data->smoothfac);
+ mul_v3_fl(dvec,data->smoothfac);
VECADD(key->co,key->co,dvec);
}
@@ -2969,7 +2969,7 @@ static int brush_add(PEData *data, short number)
short size= pset->brush[PE_BRUSH_ADD].size;
short size2= size*size;
DerivedMesh *dm=0;
- Mat4Invert(imat,ob->obmat);
+ invert_m4_m4(imat,ob->obmat);
if(psys->flag & PSYS_GLOBAL_HAIR)
return 0;
@@ -2995,8 +2995,8 @@ static int brush_add(PEData *data, short number)
mco[1]= data->mval[1] + dmy;
viewline(data->vc.ar, data->vc.v3d, mco, co1, co2);
- Mat4MulVecfl(imat,co1);
- Mat4MulVecfl(imat,co2);
+ mul_m4_v3(imat,co1);
+ mul_m4_v3(imat,co2);
min_d=2.0;
/* warning, returns the derived mesh face */
@@ -3102,18 +3102,18 @@ static int brush_add(PEData *data, short number)
key[0].time= hkey->time/ 100.0f;
psys_get_particle_on_path(&sim, ptn[0].index, key, 0);
- VecMulf(key[0].co, weight[0]);
+ mul_v3_fl(key[0].co, weight[0]);
if(maxw>1) {
key[1].time= key[0].time;
psys_get_particle_on_path(&sim, ptn[1].index, key + 1, 0);
- VecMulf(key[1].co, weight[1]);
+ mul_v3_fl(key[1].co, weight[1]);
VECADD(key[0].co, key[0].co, key[1].co);
if(maxw>2) {
key[2].time= key[0].time;
psys_get_particle_on_path(&sim, ptn[2].index, key + 2, 0);
- VecMulf(key[2].co, weight[2]);
+ mul_v3_fl(key[2].co, weight[2]);
VECADD(key[0].co, key[0].co, key[2].co);
}
}
@@ -3134,8 +3134,8 @@ static int brush_add(PEData *data, short number)
}
for(k=0, hkey=pa->hair; k<pset->totaddkey; k++, hkey++) {
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
- Mat4Invert(imat,hairmat);
- Mat4MulVecfl(imat, hkey->co);
+ invert_m4_m4(imat,hairmat);
+ mul_m4_v3(imat, hkey->co);
}
}
@@ -3250,7 +3250,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
else
data.combfac= 1.0f - data.combfac;
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
window_to_3d_delta(ar, vec, dx, dy);
data.dvec= vec;
@@ -3320,7 +3320,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
data.pufffac= 1.0f - data.pufffac;
data.invert= (brush->invert ^ flip);
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
foreach_mouse_hit_point(&data, brush_puff, selected);
}
@@ -3356,12 +3356,12 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
data.smoothfac= (float)(brush->strength / 100.0f);
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
foreach_mouse_hit_key(&data, brush_smooth_get, selected);
if(data.tot) {
- VecMulf(data.vec, 1.0f / (float)data.tot);
+ mul_v3_fl(data.vec, 1.0f / (float)data.tot);
foreach_mouse_hit_key(&data, brush_smooth_do, selected);
}
@@ -3784,7 +3784,7 @@ int PE_minmax(Scene *scene, float *min, float *max)
if(psys)
psmd= psys_get_modifier(ob, psys);
else
- Mat4One(mat);
+ unit_m4(mat);
LOOP_VISIBLE_POINTS {
if(psys)
@@ -3792,7 +3792,7 @@ int PE_minmax(Scene *scene, float *min, float *max)
LOOP_SELECTED_KEYS {
VECCOPY(co, key->co);
- Mat4MulVecfl(mat, co);
+ mul_m4_v3(mat, co);
DO_MINMAX(co, min, max);
ok= 1;
}
diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c
index d763c0500d2..ce740a53db8 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -37,7 +37,7 @@
#include "DNA_scene_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BKE_context.h"
@@ -69,7 +69,7 @@ static int particle_system_add_exec(bContext *C, wmOperator *op)
if(!scene || !ob)
return OPERATOR_CANCELLED;
- object_add_particle_system(scene, ob);
+ object_add_particle_system(scene, ob, NULL);
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
return OPERATOR_FINISHED;
@@ -266,11 +266,11 @@ static int remove_particle_target_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void PARTICLE_OT_remove_target(wmOperatorType *ot)
+void PARTICLE_OT_target_remove(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove Particle Target";
- ot->idname= "PARTICLE_OT_remove_target";
+ ot->idname= "PARTICLE_OT_target_remove";
ot->description="Remove the selected particle target.";
/* api callbacks */
@@ -548,7 +548,7 @@ static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
for(k=0,key=pa->hair; k<pa->totkey; k++,key++) {
- Mat4MulVecfl(hairmat,key->co);
+ mul_m4_v3(hairmat,key->co);
if(ekey) {
ekey->flag &= ~PEK_USE_WCO;
@@ -638,7 +638,7 @@ static void connect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
/* convert to global coordinates */
for (i=0; i<numverts; i++)
- Mat4MulVecfl (ob->obmat, CDDM_get_vert(dm, i)->co);
+ mul_m4_v3(ob->obmat, CDDM_get_vert(dm, i)->co);
bvhtree_from_mesh_faces(&bvhtree, dm, 0.0, 2, 6);
@@ -657,21 +657,21 @@ static void connect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
mface = CDDM_get_face(dm,nearest.index);
- VecCopyf(v[0], CDDM_get_vert(dm,mface->v1)->co);
- VecCopyf(v[1], CDDM_get_vert(dm,mface->v2)->co);
- VecCopyf(v[2], CDDM_get_vert(dm,mface->v3)->co);
+ copy_v3_v3(v[0], CDDM_get_vert(dm,mface->v1)->co);
+ copy_v3_v3(v[1], CDDM_get_vert(dm,mface->v2)->co);
+ copy_v3_v3(v[2], CDDM_get_vert(dm,mface->v3)->co);
if(mface->v4) {
- VecCopyf(v[3], CDDM_get_vert(dm,mface->v4)->co);
- MeanValueWeights(v, 4, nearest.co, pa->fuv);
+ copy_v3_v3(v[3], CDDM_get_vert(dm,mface->v4)->co);
+ interp_weights_poly_v3( pa->fuv,v, 4, nearest.co);
}
else
- MeanValueWeights(v, 3, nearest.co, pa->fuv);
+ interp_weights_poly_v3( pa->fuv,v, 3, nearest.co);
pa->num = nearest.index;
pa->num_dmcache = psys_particle_dm_face_lookup(ob,psmd->dm,pa->num,pa->fuv,NULL);
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
- Mat4Invert(imat,hairmat);
+ invert_m4_m4(imat,hairmat);
VECSUB(vec, nearest.co, key->co);
@@ -682,7 +682,7 @@ static void connect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
for(k=0,key=pa->hair; k<pa->totkey; k++,key++) {
VECADD(key->co, key->co, vec);
- Mat4MulVecfl(imat,key->co);
+ mul_m4_v3(imat,key->co);
if(ekey) {
ekey->flag |= PEK_USE_WCO;
diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c
index b72c4991094..e5d553dacc7 100644
--- a/source/blender/editors/physics/physics_fluid.c
+++ b/source/blender/editors/physics/physics_fluid.c
@@ -62,7 +62,7 @@
#include "BLI_blenlib.h"
#include "BLI_threads.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_blender.h"
#include "BKE_context.h"
@@ -839,8 +839,8 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *ob)
}
// init trafo matrix
- Mat4CpyMat4(domainMat, fsDomain->obmat);
- if(!Mat4Invert(invDomMat, domainMat)) {
+ copy_m4_m4(domainMat, fsDomain->obmat);
+ if(!invert_m4_m4(invDomMat, domainMat)) {
snprintf(debugStrBuffer,256,"fluidsimBake::error - Invalid obj matrix?\n");
elbeemDebugOut(debugStrBuffer);
BKE_report(reports, RPT_ERROR, "Invalid object matrix.");
diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h
index e8169adc8dc..e7543cbb83e 100644
--- a/source/blender/editors/physics/physics_intern.h
+++ b/source/blender/editors/physics/physics_intern.h
@@ -68,7 +68,7 @@ void OBJECT_OT_particle_system_remove(struct wmOperatorType *ot);
void PARTICLE_OT_new(struct wmOperatorType *ot);
void PARTICLE_OT_new_target(struct wmOperatorType *ot);
-void PARTICLE_OT_remove_target(struct wmOperatorType *ot);
+void PARTICLE_OT_target_remove(struct wmOperatorType *ot);
void PARTICLE_OT_target_move_up(struct wmOperatorType *ot);
void PARTICLE_OT_target_move_down(struct wmOperatorType *ot);
void PARTICLE_OT_connect_hair(struct wmOperatorType *ot);
@@ -99,7 +99,7 @@ void PTCACHE_OT_free_bake_all(struct wmOperatorType *ot);
void PTCACHE_OT_bake(struct wmOperatorType *ot);
void PTCACHE_OT_free_bake(struct wmOperatorType *ot);
void PTCACHE_OT_bake_from_cache(struct wmOperatorType *ot);
-void PTCACHE_OT_add_new(struct wmOperatorType *ot);
+void PTCACHE_OT_add(struct wmOperatorType *ot);
void PTCACHE_OT_remove(struct wmOperatorType *ot);
#endif /* ED_PHYSICS_INTERN_H */
diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c
index 1b9ebf27edc..b0d804da457 100644
--- a/source/blender/editors/physics/physics_ops.c
+++ b/source/blender/editors/physics/physics_ops.c
@@ -75,7 +75,7 @@ static void operatortypes_particle(void)
WM_operatortype_append(PARTICLE_OT_new);
WM_operatortype_append(PARTICLE_OT_new_target);
- WM_operatortype_append(PARTICLE_OT_remove_target);
+ WM_operatortype_append(PARTICLE_OT_target_remove);
WM_operatortype_append(PARTICLE_OT_target_move_up);
WM_operatortype_append(PARTICLE_OT_target_move_down);
WM_operatortype_append(PARTICLE_OT_connect_hair);
@@ -108,8 +108,8 @@ static void keymap_particle(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "PARTICLE_OT_hide", HKEY, KM_PRESS, 0, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1);
- WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", ACTIONMOUSE, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", LEFTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
@@ -149,7 +149,7 @@ static void operatortypes_pointcache(void)
WM_operatortype_append(PTCACHE_OT_bake);
WM_operatortype_append(PTCACHE_OT_free_bake);
WM_operatortype_append(PTCACHE_OT_bake_from_cache);
- WM_operatortype_append(PTCACHE_OT_add_new);
+ WM_operatortype_append(PTCACHE_OT_add);
WM_operatortype_append(PTCACHE_OT_remove);
}
diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c
index 26099a18966..78728ae9eb0 100644
--- a/source/blender/editors/physics/physics_pointcache.c
+++ b/source/blender/editors/physics/physics_pointcache.c
@@ -308,11 +308,11 @@ static int ptcache_remove_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void PTCACHE_OT_add_new(wmOperatorType *ot)
+void PTCACHE_OT_add(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add new cache";
- ot->idname= "PTCACHE_OT_add_new";
+ ot->idname= "PTCACHE_OT_add";
/* api callbacks */
ot->exec= ptcache_add_new_exec;
diff --git a/source/blender/editors/render/SConscript b/source/blender/editors/render/SConscript
index ab1c0d11691..5f5f5138d06 100644
--- a/source/blender/editors/render/SConscript
+++ b/source/blender/editors/render/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #/intern/guardedalloc ../../gpu ../../freestyle'
+incs += ' ../../gpu ../../freestyle'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
incs += ' ../../blenloader'
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 92380a56d3d..74e1cca5579 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -42,7 +42,7 @@
#include "BLO_readfile.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_threads.h"
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 11cf451b0ae..d82ed734831 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -52,7 +52,7 @@
#include "BKE_utildefines.h"
#include "BKE_world.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_listbase.h"
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index be76e153fae..f663e5f0a21 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -35,7 +35,7 @@
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_context.h"
@@ -828,29 +828,40 @@ static void ed_default_handlers(wmWindowManager *wm, ListBase *handlers, int fla
// XXX it would be good to have boundbox checks for some of these...
if(flag & ED_KEYMAP_UI) {
+ /* user interface widgets */
UI_add_region_handlers(handlers);
}
if(flag & ED_KEYMAP_VIEW2D) {
+ /* 2d-viewport handling+manipulation */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "View2D", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
if(flag & ED_KEYMAP_MARKERS) {
+ /* time-markers */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Markers", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
// XXX need boundbox check urgently!!!
}
if(flag & ED_KEYMAP_ANIMATION) {
+ /* frame changing and timeline operators (for time spaces) */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Animation", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
if(flag & ED_KEYMAP_FRAMES) {
+ /* frame changing/jumping (for all spaces) */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Frames", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
if(flag & ED_KEYMAP_GPENCIL) {
+ /* grease pencil */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Grease Pencil", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
+ if(flag & ED_KEYMAP_HEADER) {
+ /* standard keymap for headers regions */
+ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Header", 0, 0);
+ WM_event_add_keymap_handler(handlers, keymap);
+ }
}
@@ -1272,7 +1283,15 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
}
if(open) {
- panel->layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL,
+ short panelContext;
+
+ /* panel context can either be toolbar region or normal panels region */
+ if (ar->regiontype == RGN_TYPE_TOOLS)
+ panelContext= UI_LAYOUT_TOOLBAR;
+ else
+ panelContext= UI_LAYOUT_PANEL;
+
+ panel->layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, panelContext,
style->panelspace, 0, w-2*style->panelspace, em, style);
pt->draw(C, panel);
diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c
index 1445c6b5cf8..752c6feb9af 100644
--- a/source/blender/editors/screen/glutil.c
+++ b/source/blender/editors/screen/glutil.c
@@ -37,7 +37,7 @@
#include "BKE_utildefines.h"
#include "BKE_colortools.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_threads.h"
#include "BIF_gl.h"
@@ -439,10 +439,15 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format,
glPixelStorei(GL_UNPACK_ROW_LENGTH, img_w);
glBindTexture(GL_TEXTURE_2D, texid);
- /* don't want nasty border artifacts */
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ /* don't want nasty border artifacts */
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+#ifdef __APPLE__
+ /* workaround for os x 10.5/10.6 driver bug: http://lists.apple.com/archives/Mac-opengl/2008/Jul/msg00117.html */
+ glPixelZoom(1.f, 1.f);
+#endif
+
for (subpart_y=0; subpart_y<nsubparts_y; subpart_y++) {
for (subpart_x=0; subpart_x<nsubparts_x; subpart_x++) {
int subpart_w= (subpart_x==nsubparts_x-1)?(img_w-subpart_x*tex_w):tex_w;
@@ -476,6 +481,11 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format,
glBindTexture(GL_TEXTURE_2D, ltexid);
glPixelStorei(GL_UNPACK_ROW_LENGTH, lrowlength);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+
+#ifdef __APPLE__
+ /* workaround for os x 10.5/10.6 driver bug (above) */
+ glPixelZoom(xzoom, yzoom);
+#endif
}
void glaDrawPixelsTex(float x, float y, int img_w, int img_h, int format, void *rect)
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index c02d86a567e..1cacf57e42a 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -64,10 +64,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
"scene", "selected_objects", "selected_bases",
"selected_editable_objects", "selected_editable_bases",
"visible_bones", "editable_bones", "selected_bones", "selected_editable_bones",
- "visible_pchans", "selected_pchans", "active_bone", "active_pchan",
- "active_base", "active_object", "edit_object",
+ "visible_pose_bones", "selected_pose_bones", "active_bone", "active_pose_bone",
+ "active_base", "active_object", "object", "edit_object",
"sculpt_object", "vertex_paint_object", "weight_paint_object",
- "texture_paint_object", "brush", "particle_edit_object", NULL};
+ "texture_paint_object", "particle_edit_object", NULL};
CTX_data_dir_set(result, dir);
return 1;
@@ -84,7 +84,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
if(selected_objects)
CTX_data_id_list_add(result, &base->object->id);
else
- CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
}
}
@@ -100,7 +100,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
if(selected_editable_objects)
CTX_data_id_list_add(result, &base->object->id);
else
- CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
}
}
}
@@ -131,18 +131,18 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
if (editable_bones) {
/* only selected + editable */
if (EBONE_EDITABLE(ebone)) {
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone);
if ((flipbone) && !(flipbone->flag & BONE_SELECTED))
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone);
}
}
else {
/* only include bones if visible */
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone);
if ((flipbone) && EBONE_VISIBLE(arm, flipbone)==0)
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone);
}
}
}
@@ -173,18 +173,18 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
if (selected_editable_bones) {
/* only selected + editable */
if (EBONE_EDITABLE(ebone)) {
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone);
if ((flipbone) && !(flipbone->flag & BONE_SELECTED))
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone);
}
}
else {
/* only include bones if selected */
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone);
if ((flipbone) && !(flipbone->flag & BONE_SELECTED))
- CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone);
+ CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone);
}
}
}
@@ -192,7 +192,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
return 1;
}
}
- else if(CTX_data_equals(member, "visible_pchans")) {
+ else if(CTX_data_equals(member, "visible_pose_bones")) {
bArmature *arm= (obact) ? obact->data : NULL;
bPoseChannel *pchan;
@@ -200,14 +200,14 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
for (pchan= obact->pose->chanbase.first; pchan; pchan= pchan->next) {
/* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */
if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) {
- CTX_data_list_add(result, &obact->id, &RNA_PoseChannel, pchan);
+ CTX_data_list_add(result, &obact->id, &RNA_PoseBone, pchan);
}
}
return 1;
}
}
- else if(CTX_data_equals(member, "selected_pchans")) {
+ else if(CTX_data_equals(member, "selected_pose_bones")) {
bArmature *arm= (obact) ? obact->data : NULL;
bPoseChannel *pchan;
@@ -216,7 +216,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
/* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */
if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) {
if (pchan->bone->flag & BONE_SELECTED || pchan->bone == arm->act_bone)
- CTX_data_list_add(result, &obact->id, &RNA_PoseChannel, pchan);
+ CTX_data_list_add(result, &obact->id, &RNA_PoseBone, pchan);
}
}
@@ -224,32 +224,34 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
}
}
else if(CTX_data_equals(member, "active_bone")) {
- bArmature *arm= (obact) ? obact->data : NULL;
- if(arm->edbo) {
- if(arm->act_edbone) {
- CTX_data_pointer_set(result, &arm->id, &RNA_EditBone, arm->act_edbone);
- return 1;
+ if(obact && obact->type == OB_ARMATURE) {
+ bArmature *arm= obact->data;
+ if(arm->edbo) {
+ if(arm->act_edbone) {
+ CTX_data_pointer_set(result, &arm->id, &RNA_EditBone, arm->act_edbone);
+ return 1;
+ }
}
- }
- else {
- if(arm->act_bone) {
- CTX_data_pointer_set(result, &arm->id, &RNA_Bone, arm->act_bone);
- return 1;
+ else {
+ if(arm->act_bone) {
+ CTX_data_pointer_set(result, &arm->id, &RNA_Bone, arm->act_bone);
+ return 1;
+ }
}
}
}
- else if(CTX_data_equals(member, "active_pchan")) {
+ else if(CTX_data_equals(member, "active_pose_bone")) {
bPoseChannel *pchan;
pchan= get_active_posechannel(obact);
if (pchan) {
- CTX_data_pointer_set(result, &obact->id, &RNA_PoseChannel, pchan);
+ CTX_data_pointer_set(result, &obact->id, &RNA_PoseBone, pchan);
return 1;
}
}
else if(CTX_data_equals(member, "active_base")) {
if(base)
- CTX_data_pointer_set(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_pointer_set(result, &scene->id, &RNA_ObjectBase, base);
return 1;
}
@@ -302,7 +304,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
return 1;
}
+ else {
+ return 0; /* not found */
+ }
- return 0;
+ return -1; /* found but not available */
}
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index acf5bcd739e..c158901c15d 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -1556,10 +1556,11 @@ void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable)
screen->animtimer= NULL;
if(enable) {
- struct ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData");
+ ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData");
screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS));
sad->ar= CTX_wm_region(C);
+ sad->sfra = scene->r.cfra;
sad->redraws= redraws;
sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0;
sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0;
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index b7a8102c5e3..b579763015d 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -31,7 +31,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_dlrbTree.h"
@@ -400,7 +400,7 @@ AZone *is_in_area_actionzone(ScrArea *sa, int x, int y)
for(az= sa->actionzones.first; az; az= az->next) {
if(BLI_in_rcti(&az->rect, x, y)) {
if(az->type == AZONE_AREA) {
- if(IsPointInTri2DInts(az->x1, az->y1, az->x2, az->y2, x, y))
+ if(isect_point_tri_v2_int(az->x1, az->y1, az->x2, az->y2, x, y))
break;
}
else if(az->type == AZONE_REGION) {
@@ -1468,6 +1468,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
DLRBT_Tree keys;
ActKeyColumn *ak;
+ float cfra= (scene)? (float)(CFRA) : 0.0f;
short next= RNA_boolean_get(op->ptr, "next");
/* sanity checks */
@@ -1486,21 +1487,18 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
/* build linked-list for searching */
BLI_dlrbTree_linkedlist_sync(&keys);
- /* find nearest keyframe in the right direction */
- ak= cfra_find_nearest_next_ak(keys.root, (float)scene->r.cfra, next);
+ /* find matching keyframe in the right direction */
+ if (next)
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra);
+ else
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra);
/* set the new frame (if keyframe found) */
- if (ak) {
- if (next && ak->next)
- scene->r.cfra= (int)ak->next->cfra;
- else if (!next && ak->prev)
- scene->r.cfra= (int)ak->prev->cfra;
- else {
- printf("ERROR: no suitable keyframe found. Using %f as new frame \n", ak->cfra);
- scene->r.cfra= (int)ak->cfra; // XXX
- }
- }
-
+ if (ak)
+ CFRA= (int)ak->cfra;
+ else
+ BKE_report(op->reports, RPT_ERROR, "No more keyframes to jump to in this direction");
+
/* free temp stuff */
BLI_dlrbTree_free(&keys);
@@ -1996,52 +1994,6 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot)
ot->poll= ED_operator_screenactive;
}
-/* ************** region split operator ***************************** */
-
-/* insert a region in the area region list */
-static int region_split_exec(bContext *C, wmOperator *op)
-{
- ARegion *ar= CTX_wm_region(C);
-
- if(ar->regiontype==RGN_TYPE_HEADER)
- BKE_report(op->reports, RPT_ERROR, "Cannot split header");
- else if(ar->alignment==RGN_ALIGN_QSPLIT)
- BKE_report(op->reports, RPT_ERROR, "Cannot split further");
- else {
- ScrArea *sa= CTX_wm_area(C);
- ARegion *newar= BKE_area_region_copy(sa->type, ar);
- int dir= RNA_enum_get(op->ptr, "type");
-
- BLI_insertlinkafter(&sa->regionbase, ar, newar);
-
- newar->alignment= ar->alignment;
-
- if(dir=='h')
- ar->alignment= RGN_ALIGN_HSPLIT;
- else
- ar->alignment= RGN_ALIGN_VSPLIT;
-
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
- }
-
- return OPERATOR_FINISHED;
-}
-
-static void SCREEN_OT_region_split(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Split Region";
- ot->description= "Split area by directional position.";
- ot->idname= "SCREEN_OT_region_split";
-
- /* api callbacks */
- ot->invoke= WM_menu_invoke;
- ot->exec= region_split_exec;
- ot->poll= ED_operator_areaactive;
-
- RNA_def_enum(ot->srna, "type", prop_direction_items, 'h', "Direction", "");
-}
-
/* ************** region four-split operator ***************************** */
/* insert a region in the area region list */
@@ -2167,7 +2119,104 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot)
ot->poll= ED_operator_areaactive;
ot->flag= 0;
+}
+/* ************** header flip operator ***************************** */
+
+/* flip a header region alignment */
+static int header_flip_exec(bContext *C, wmOperator *op)
+{
+ ARegion *ar= CTX_wm_region(C);
+
+ /* find the header region
+ * - try context first, but upon failing, search all regions in area...
+ */
+ if((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) {
+ ScrArea *sa= CTX_wm_area(C);
+
+ /* loop over all regions until a matching one is found */
+ for (ar= sa->regionbase.first; ar; ar= ar->next) {
+ if(ar->regiontype == RGN_TYPE_HEADER)
+ break;
+ }
+
+ /* don't do anything if no region */
+ if(ar == NULL)
+ return OPERATOR_CANCELLED;
+ }
+
+ /* copied from SCREEN_OT_region_flip */
+ if(ar->alignment==RGN_ALIGN_TOP)
+ ar->alignment= RGN_ALIGN_BOTTOM;
+ else if(ar->alignment==RGN_ALIGN_BOTTOM)
+ ar->alignment= RGN_ALIGN_TOP;
+ else if(ar->alignment==RGN_ALIGN_LEFT)
+ ar->alignment= RGN_ALIGN_RIGHT;
+ else if(ar->alignment==RGN_ALIGN_RIGHT)
+ ar->alignment= RGN_ALIGN_LEFT;
+
+ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ printf("executed header region flip\n");
+
+ return OPERATOR_FINISHED;
+}
+
+
+static void SCREEN_OT_header_flip(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Flip Header Region";
+ ot->idname= "SCREEN_OT_header_flip";
+
+ /* api callbacks */
+ ot->exec= header_flip_exec;
+
+ ot->poll= ED_operator_areaactive;
+ ot->flag= 0;
+}
+
+/* ************** header tools operator ***************************** */
+
+static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
+ uiPopupMenu *pup;
+ uiLayout *layout;
+
+ pup= uiPupMenuBegin(C, "Header", 0);
+ layout= uiPupMenuLayout(pup);
+
+ // XXX SCREEN_OT_region_flip doesn't work - gets wrong context for active region, so added custom operator
+ if (ar->alignment == RGN_ALIGN_TOP)
+ uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_header_flip");
+ else
+ uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_header_flip");
+
+ uiItemS(layout);
+
+ /* file browser should be fullscreen all the time, but other regions can be maximised/restored... */
+ if (sa->spacetype != SPACE_FILE) {
+ if (sa->full)
+ uiItemO(layout, "Tile Window", 0, "SCREEN_OT_screen_full_area");
+ else
+ uiItemO(layout, "Maximize Window", 0, "SCREEN_OT_screen_full_area");
+ }
+
+ uiPupMenuEnd(C, pup);
+
+ return OPERATOR_CANCELLED;
+}
+
+void SCREEN_OT_header_toolbox(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Header Toolbox";
+ ot->description="Display header region toolbox";
+ ot->idname= "SCREEN_OT_header_toolbox";
+
+ /* api callbacks */
+ ot->invoke= header_toolbox_invoke;
}
/* ****************** anim player, with timer ***************** */
@@ -2311,8 +2360,6 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event)
// TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this?
wt->timestep= (1.0/FPS);
- //WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
-
return OPERATOR_FINISHED;
}
return OPERATOR_PASS_THROUGH;
@@ -2340,6 +2387,7 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
bScreen *screen= CTX_wm_screen(C);
if(screen->animtimer) {
+ /* stop playback now */
ED_screen_animation_timer(C, 0, 0, 0);
sound_stop_all(C);
}
@@ -2402,8 +2450,19 @@ static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event)
{
bScreen *screen= CTX_wm_screen(C);
- if(screen->animtimer)
+ if(screen->animtimer) {
+ ScreenAnimData *sad= screen->animtimer->customdata;
+ Scene *scene= CTX_data_scene(C);
+
+ /* reset current frame before stopping, and just send a notifier to deal with the rest
+ * (since playback still needs to be stopped)
+ */
+ scene->r.cfra= sad->sfra;
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
+
+ /* call the other "toggling" operator to clean up now */
return screen_animation_play(C, op, event);
+ }
return OPERATOR_PASS_THROUGH;
}
@@ -2412,7 +2471,7 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Cancel Animation";
- ot->description= "Cancel animation.";
+ ot->description= "Cancel animation, returning to the original frame.";
ot->idname= "SCREEN_OT_animation_cancel";
/* api callbacks */
@@ -2961,7 +3020,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
multires_force_update(CTX_data_active_object(C));
/* get editmode results */
- ED_object_exit_editmode(C, EM_DO_UNDO); /* 0 = does not exit editmode */
+ ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */
// store spare
// get view3d layer, local layer, make this nice api call to render
@@ -3600,10 +3659,11 @@ void ED_operatortypes_screen(void)
WM_operatortype_append(SCREEN_OT_area_join);
WM_operatortype_append(SCREEN_OT_area_dupli);
WM_operatortype_append(SCREEN_OT_area_swap);
- WM_operatortype_append(SCREEN_OT_region_split);
WM_operatortype_append(SCREEN_OT_region_foursplit);
- WM_operatortype_append(SCREEN_OT_region_flip);
WM_operatortype_append(SCREEN_OT_region_scale);
+ WM_operatortype_append(SCREEN_OT_region_flip);
+ WM_operatortype_append(SCREEN_OT_header_flip);
+ WM_operatortype_append(SCREEN_OT_header_toolbox);
WM_operatortype_append(SCREEN_OT_screen_set);
WM_operatortype_append(SCREEN_OT_screen_full_area);
WM_operatortype_append(SCREEN_OT_screenshot);
@@ -3683,7 +3743,11 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
/* area move after action zones */
WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0);
-
+ /* Header Editing ------------------------------------------------ */
+ keymap= WM_keymap_find(keyconf, "Header", 0, 0);
+
+ WM_keymap_add_item(keymap, "SCREEN_OT_header_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0);
+
/* Screen General ------------------------------------------------ */
keymap= WM_keymap_find(keyconf, "Screen", 0, 0);
@@ -3695,22 +3759,17 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1);
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", UPARROWKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", DOWNARROWKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_screenshot", F3KEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0);
/* tests */
- WM_keymap_add_item(keymap, "SCREEN_OT_region_split", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT|KM_SHIFT, 0);
-
+ WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0);
-
WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0);
-
- WM_keymap_add_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0);
-
- RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", F7KEY, KM_PRESS, 0, 0)->ptr, "path", "test.py");
- WM_keymap_verify_item(keymap, "SCRIPT_OT_python_run_ui_scripts", F8KEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "WM_OT_reload_scripts", F8KEY, KM_PRESS, 0, 0);
/* files */
WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/sculpt_paint/SConscript b/source/blender/editors/sculpt_paint/SConscript
index 3d2ea89f506..472ba361059 100644
--- a/source/blender/editors/sculpt_paint/SConscript
+++ b/source/blender/editors/sculpt_paint/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' ../../render/extern/include #/intern/guardedalloc'
+incs += ' ../../render/extern/include'
incs += ' ../../gpu ../../makesrna'
if env['OURPLATFORM'] == 'linux2':
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 929f854242f..55f7a6a23b9 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -40,7 +40,7 @@
#ifdef WIN32
#include "BLI_winstuff.h"
#endif
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_linklist.h"
@@ -669,7 +669,7 @@ static int project_paint_PickFace(const ProjPaintState *ps, float pt[2], float w
v2= ps->screenCoords[mf->v2];
v3= ps->screenCoords[mf->v3];
- if (IsectPT2Df(pt, v1, v2, v3)) {
+ if (isect_point_tri_v2(pt, v1, v2, v3)) {
if (ps->is_ortho) z_depth= VecZDepthOrtho(pt, v1, v2, v3, w_tmp);
else z_depth= VecZDepthPersp(pt, v1, v2, v3, w_tmp);
@@ -683,7 +683,7 @@ static int project_paint_PickFace(const ProjPaintState *ps, float pt[2], float w
else if (mf->v4) {
v4= ps->screenCoords[mf->v4];
- if (IsectPT2Df(pt, v1, v3, v4)) {
+ if (isect_point_tri_v2(pt, v1, v3, v4)) {
if (ps->is_ortho) z_depth= VecZDepthOrtho(pt, v1, v3, v4, w_tmp);
else z_depth= VecZDepthPersp(pt, v1, v3, v4, w_tmp);
@@ -734,10 +734,10 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float
tf = ps->dm_mtface + face_index;
if (side == 0) {
- Vec2Lerp3f(uv, tf->uv[0], tf->uv[1], tf->uv[2], w);
+ interp_v2_v2v2v2(uv, tf->uv[0], tf->uv[1], tf->uv[2], w);
}
else { /* QUAD */
- Vec2Lerp3f(uv, tf->uv[0], tf->uv[2], tf->uv[3], w);
+ interp_v2_v2v2v2(uv, tf->uv[0], tf->uv[2], tf->uv[3], w);
}
ibuf = tf->tpage->ibufs.first; /* we must have got the imbuf before getting here */
@@ -818,7 +818,7 @@ static int project_paint_occlude_ptv(float pt[3], float v1[3], float v2[3], floa
return 0;
/* do a 2D point in try intersection */
- if (!IsectPT2Df(pt, v1, v2, v3))
+ if (!isect_point_tri_v2(pt, v1, v2, v3))
return 0; /* we know there is */
@@ -858,11 +858,10 @@ static int project_paint_occlude_ptv_clip(
}
/* Test if we're in the clipped area, */
- if (side) VecLerp3f(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v3].co, ps->dm_mvert[mf->v4].co, w);
- else VecLerp3f(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v2].co, ps->dm_mvert[mf->v3].co, w);
+ if (side) interp_v3_v3v3v3(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v3].co, ps->dm_mvert[mf->v4].co, w);
+ else interp_v3_v3v3v3(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v2].co, ps->dm_mvert[mf->v3].co, w);
- Mat4MulVecfl(ps->ob->obmat, wco);
- if(!view3d_test_clipping(ps->rv3d, wco)) {
+ if(!view3d_test_clipping(ps->rv3d, wco, 1)) {
return 1;
}
@@ -1162,51 +1161,51 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl
}
/* face edge directions */
- Vec2Subf(dir1, puv[1], puv[0]);
- Vec2Subf(dir2, puv[2], puv[1]);
- Normalize2(dir1);
- Normalize2(dir2);
+ sub_v2_v2v2(dir1, puv[1], puv[0]);
+ sub_v2_v2v2(dir2, puv[2], puv[1]);
+ normalize_v2(dir1);
+ normalize_v2(dir2);
if (is_quad) {
- Vec2Subf(dir3, puv[3], puv[2]);
- Vec2Subf(dir4, puv[0], puv[3]);
- Normalize2(dir3);
- Normalize2(dir4);
+ sub_v2_v2v2(dir3, puv[3], puv[2]);
+ sub_v2_v2v2(dir4, puv[0], puv[3]);
+ normalize_v2(dir3);
+ normalize_v2(dir4);
}
else {
- Vec2Subf(dir3, puv[0], puv[2]);
- Normalize2(dir3);
+ sub_v2_v2v2(dir3, puv[0], puv[2]);
+ normalize_v2(dir3);
}
if (is_quad) {
- a1 = AngleToLength(NormalizedVecAngle2_2D(dir4, dir1));
- a2 = AngleToLength(NormalizedVecAngle2_2D(dir1, dir2));
- a3 = AngleToLength(NormalizedVecAngle2_2D(dir2, dir3));
- a4 = AngleToLength(NormalizedVecAngle2_2D(dir3, dir4));
+ a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1));
+ a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2));
+ a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3));
+ a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4));
}
else {
- a1 = AngleToLength(NormalizedVecAngle2_2D(dir3, dir1));
- a2 = AngleToLength(NormalizedVecAngle2_2D(dir1, dir2));
- a3 = AngleToLength(NormalizedVecAngle2_2D(dir2, dir3));
+ a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1));
+ a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2));
+ a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3));
}
if (is_quad) {
- Vec2Subf(no1, dir4, dir1);
- Vec2Subf(no2, dir1, dir2);
- Vec2Subf(no3, dir2, dir3);
- Vec2Subf(no4, dir3, dir4);
- Normalize2(no1);
- Normalize2(no2);
- Normalize2(no3);
- Normalize2(no4);
- Vec2Mulf(no1, a1*scaler);
- Vec2Mulf(no2, a2*scaler);
- Vec2Mulf(no3, a3*scaler);
- Vec2Mulf(no4, a4*scaler);
- Vec2Addf(outset_uv[0], puv[0], no1);
- Vec2Addf(outset_uv[1], puv[1], no2);
- Vec2Addf(outset_uv[2], puv[2], no3);
- Vec2Addf(outset_uv[3], puv[3], no4);
+ sub_v2_v2v2(no1, dir4, dir1);
+ sub_v2_v2v2(no2, dir1, dir2);
+ sub_v2_v2v2(no3, dir2, dir3);
+ sub_v2_v2v2(no4, dir3, dir4);
+ normalize_v2(no1);
+ normalize_v2(no2);
+ normalize_v2(no3);
+ normalize_v2(no4);
+ mul_v2_fl(no1, a1*scaler);
+ mul_v2_fl(no2, a2*scaler);
+ mul_v2_fl(no3, a3*scaler);
+ mul_v2_fl(no4, a4*scaler);
+ add_v2_v2v2(outset_uv[0], puv[0], no1);
+ add_v2_v2v2(outset_uv[1], puv[1], no2);
+ add_v2_v2v2(outset_uv[2], puv[2], no3);
+ add_v2_v2v2(outset_uv[3], puv[3], no4);
outset_uv[0][0] *= ibuf_x_inv;
outset_uv[0][1] *= ibuf_y_inv;
@@ -1220,18 +1219,18 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl
outset_uv[3][1] *= ibuf_y_inv;
}
else {
- Vec2Subf(no1, dir3, dir1);
- Vec2Subf(no2, dir1, dir2);
- Vec2Subf(no3, dir2, dir3);
- Normalize2(no1);
- Normalize2(no2);
- Normalize2(no3);
- Vec2Mulf(no1, a1*scaler);
- Vec2Mulf(no2, a2*scaler);
- Vec2Mulf(no3, a3*scaler);
- Vec2Addf(outset_uv[0], puv[0], no1);
- Vec2Addf(outset_uv[1], puv[1], no2);
- Vec2Addf(outset_uv[2], puv[2], no3);
+ sub_v2_v2v2(no1, dir3, dir1);
+ sub_v2_v2v2(no2, dir1, dir2);
+ sub_v2_v2v2(no3, dir2, dir3);
+ normalize_v2(no1);
+ normalize_v2(no2);
+ normalize_v2(no3);
+ mul_v2_fl(no1, a1*scaler);
+ mul_v2_fl(no2, a2*scaler);
+ mul_v2_fl(no3, a3*scaler);
+ add_v2_v2v2(outset_uv[0], puv[0], no1);
+ add_v2_v2v2(outset_uv[1], puv[1], no2);
+ add_v2_v2v2(outset_uv[2], puv[2], no3);
outset_uv[0][0] *= ibuf_x_inv;
outset_uv[0][1] *= ibuf_y_inv;
@@ -1288,7 +1287,7 @@ static float lambda_cp_line2(const float p[2], const float l1[2], const float l2
h[0] = p[0] - l1[0];
h[1] = p[1] - l1[1];
- return(Inp2f(u, h)/Inp2f(u, u));
+ return(dot_v2v2(u, h)/dot_v2v2(u, u));
}
@@ -1304,7 +1303,7 @@ static void screen_px_from_ortho(
float w[3])
{
BarycentricWeights2f(uv, uv1co, uv2co, uv3co, w);
- VecLerp3f(pixelScreenCo, v1co, v2co, v3co, w);
+ interp_v3_v3v3v3(pixelScreenCo, v1co, v2co, v3co, w);
}
/* same as screen_px_from_ortho except we need to take into account
@@ -1338,7 +1337,7 @@ static void screen_px_from_persp(
}
/* done re-weighting */
- VecLerp3f(pixelScreenCo, v1co, v2co, v3co, w);
+ interp_v3_v3v3v3(pixelScreenCo, v1co, v2co, v3co, w);
}
static void project_face_pixel(const MTFace *tf_other, ImBuf *ibuf_other, const float w[3], int side, unsigned char rgba_ub[4], float rgba_f[4])
@@ -1356,7 +1355,7 @@ static void project_face_pixel(const MTFace *tf_other, ImBuf *ibuf_other, const
uvCo3 = (float *)tf_other->uv[2];
}
- Vec2Lerp3f(uv_other, uvCo1, uvCo2, uvCo3, w);
+ interp_v2_v2v2v2(uv_other, uvCo1, uvCo2, uvCo3, (float*)w);
/* use */
uvco_to_wrapped_pxco(uv_other, ibuf_other->x, ibuf_other->y, &x, &y);
@@ -1432,11 +1431,11 @@ float project_paint_uvpixel_mask(
no[0] = w[0]*no1[0] + w[1]*no2[0] + w[2]*no3[0];
no[1] = w[0]*no1[1] + w[1]*no2[1] + w[2]*no3[1];
no[2] = w[0]*no1[2] + w[1]*no2[2] + w[2]*no3[2];
- Normalize(no);
+ normalize_v3(no);
/* now we can use the normal as a mask */
if (ps->is_ortho) {
- angle = NormalizedVecAngle2((float *)ps->viewDir, no);
+ angle = angle_normalized_v3v3((float *)ps->viewDir, no);
}
else {
/* Annoying but for the perspective view we need to get the pixels location in 3D space :/ */
@@ -1456,9 +1455,9 @@ float project_paint_uvpixel_mask(
viewDirPersp[0] = (ps->viewPos[0] - (w[0]*co1[0] + w[1]*co2[0] + w[2]*co3[0]));
viewDirPersp[1] = (ps->viewPos[1] - (w[0]*co1[1] + w[1]*co2[1] + w[2]*co3[1]));
viewDirPersp[2] = (ps->viewPos[2] - (w[0]*co1[2] + w[1]*co2[2] + w[2]*co3[2]));
- Normalize(viewDirPersp);
+ normalize_v3(viewDirPersp);
- angle = NormalizedVecAngle2(viewDirPersp, no);
+ angle = angle_normalized_v3v3(viewDirPersp, no);
}
if (angle >= ps->normal_angle) {
@@ -1578,7 +1577,7 @@ static ProjPixel *project_paint_uvpixel_init(
}
else {
float co[2];
- Vec2Subf(co, projPixel->projCoSS, (float *)ps->cloneOffset);
+ sub_v2_v2v2(co, projPixel->projCoSS, (float *)ps->cloneOffset);
/* no need to initialize the bucket, we're only checking buckets faces and for this
* the faces are alredy initialized in project_paint_delayed_face_init(...) */
@@ -1769,20 +1768,20 @@ static void scale_quad(float insetCos[4][3], float *origCos[4], const float inse
cent[1] = (origCos[0][1] + origCos[1][1] + origCos[2][1] + origCos[3][1]) / 4.0f;
cent[2] = (origCos[0][2] + origCos[1][2] + origCos[2][2] + origCos[3][2]) / 4.0f;
- VecSubf(insetCos[0], origCos[0], cent);
- VecSubf(insetCos[1], origCos[1], cent);
- VecSubf(insetCos[2], origCos[2], cent);
- VecSubf(insetCos[3], origCos[3], cent);
+ sub_v3_v3v3(insetCos[0], origCos[0], cent);
+ sub_v3_v3v3(insetCos[1], origCos[1], cent);
+ sub_v3_v3v3(insetCos[2], origCos[2], cent);
+ sub_v3_v3v3(insetCos[3], origCos[3], cent);
- VecMulf(insetCos[0], inset);
- VecMulf(insetCos[1], inset);
- VecMulf(insetCos[2], inset);
- VecMulf(insetCos[3], inset);
+ mul_v3_fl(insetCos[0], inset);
+ mul_v3_fl(insetCos[1], inset);
+ mul_v3_fl(insetCos[2], inset);
+ mul_v3_fl(insetCos[3], inset);
- VecAddf(insetCos[0], insetCos[0], cent);
- VecAddf(insetCos[1], insetCos[1], cent);
- VecAddf(insetCos[2], insetCos[2], cent);
- VecAddf(insetCos[3], insetCos[3], cent);
+ add_v3_v3v3(insetCos[0], insetCos[0], cent);
+ add_v3_v3v3(insetCos[1], insetCos[1], cent);
+ add_v3_v3v3(insetCos[2], insetCos[2], cent);
+ add_v3_v3v3(insetCos[3], insetCos[3], cent);
}
@@ -1793,17 +1792,17 @@ static void scale_tri(float insetCos[4][3], float *origCos[4], const float inset
cent[1] = (origCos[0][1] + origCos[1][1] + origCos[2][1]) / 3.0f;
cent[2] = (origCos[0][2] + origCos[1][2] + origCos[2][2]) / 3.0f;
- VecSubf(insetCos[0], origCos[0], cent);
- VecSubf(insetCos[1], origCos[1], cent);
- VecSubf(insetCos[2], origCos[2], cent);
+ sub_v3_v3v3(insetCos[0], origCos[0], cent);
+ sub_v3_v3v3(insetCos[1], origCos[1], cent);
+ sub_v3_v3v3(insetCos[2], origCos[2], cent);
- VecMulf(insetCos[0], inset);
- VecMulf(insetCos[1], inset);
- VecMulf(insetCos[2], inset);
+ mul_v3_fl(insetCos[0], inset);
+ mul_v3_fl(insetCos[1], inset);
+ mul_v3_fl(insetCos[2], inset);
- VecAddf(insetCos[0], insetCos[0], cent);
- VecAddf(insetCos[1], insetCos[1], cent);
- VecAddf(insetCos[2], insetCos[2], cent);
+ add_v3_v3v3(insetCos[0], insetCos[0], cent);
+ add_v3_v3v3(insetCos[1], insetCos[1], cent);
+ add_v3_v3v3(insetCos[2], insetCos[2], cent);
}
@@ -1891,22 +1890,22 @@ static void rect_to_uvspace_ortho(
uv[0] = bucket_bounds->xmax;
uv[1] = bucket_bounds->ymin;
BarycentricWeights2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?3:0], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?3:0], uv1co, uv2co, uv3co, w);
//uv[0] = bucket_bounds->xmax; // set above
uv[1] = bucket_bounds->ymax;
BarycentricWeights2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?2:1], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?2:1], uv1co, uv2co, uv3co, w);
uv[0] = bucket_bounds->xmin;
//uv[1] = bucket_bounds->ymax; // set above
BarycentricWeights2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?1:2], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?1:2], uv1co, uv2co, uv3co, w);
//uv[0] = bucket_bounds->xmin; // set above
uv[1] = bucket_bounds->ymin;
BarycentricWeights2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?0:3], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?0:3], uv1co, uv2co, uv3co, w);
}
/* same as above but use BarycentricWeightsPersp2f */
@@ -1925,22 +1924,22 @@ static void rect_to_uvspace_persp(
uv[0] = bucket_bounds->xmax;
uv[1] = bucket_bounds->ymin;
BarycentricWeightsPersp2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?3:0], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?3:0], uv1co, uv2co, uv3co, w);
//uv[0] = bucket_bounds->xmax; // set above
uv[1] = bucket_bounds->ymax;
BarycentricWeightsPersp2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?2:1], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?2:1], uv1co, uv2co, uv3co, w);
uv[0] = bucket_bounds->xmin;
//uv[1] = bucket_bounds->ymax; // set above
BarycentricWeightsPersp2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?1:2], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?1:2], uv1co, uv2co, uv3co, w);
//uv[0] = bucket_bounds->xmin; // set above
uv[1] = bucket_bounds->ymin;
BarycentricWeightsPersp2f(uv, v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[flip?0:3], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[flip?0:3], uv1co, uv2co, uv3co, w);
}
/* This works as we need it to but we can save a few steps and not use it */
@@ -1967,7 +1966,7 @@ static float angle_2d_clockwise(const float p1[2], const float p2[2], const floa
/* limit must be a fraction over 1.0f */
static int IsectPT2Df_limit(float pt[2], float v1[2], float v2[2], float v3[2], float limit)
{
- return ((AreaF2Dfl(pt,v1,v2) + AreaF2Dfl(pt,v2,v3) + AreaF2Dfl(pt,v3,v1)) / (AreaF2Dfl(v1,v2,v3))) < limit;
+ return ((area_tri_v2(pt,v1,v2) + area_tri_v2(pt,v2,v3) + area_tri_v2(pt,v3,v1)) / (area_tri_v2(v1,v2,v3))) < limit;
}
/* Clip the face by a bucket and set the uv-space bucket_bounds_uv
@@ -2184,13 +2183,13 @@ static void project_bucket_clip_face(
if (is_ortho) {
for(i=0; i<(*tot); i++) {
BarycentricWeights2f(isectVCosSS[i], v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[i], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[i], uv1co, uv2co, uv3co, w);
}
}
else {
for(i=0; i<(*tot); i++) {
BarycentricWeightsPersp2f(isectVCosSS[i], v1coSS, v2coSS, v3coSS, w);
- Vec2Lerp3f(bucket_bounds_uv[i], uv1co, uv2co, uv3co, w);
+ interp_v2_v2v2v2(bucket_bounds_uv[i], uv1co, uv2co, uv3co, w);
}
}
}
@@ -2445,9 +2444,8 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
/* a pitty we need to get the worldspace pixel location here */
if(ps->rv3d->rflag & RV3D_CLIPPING) {
- VecLerp3f(wco, ps->dm_mvert[ (*(&mf->v1 + i1)) ].co, ps->dm_mvert[ (*(&mf->v1 + i2)) ].co, ps->dm_mvert[ (*(&mf->v1 + i3)) ].co, w);
- Mat4MulVecfl(ps->ob->obmat, wco);
- if(view3d_test_clipping(ps->rv3d, wco)) {
+ interp_v3_v3v3v3(wco, ps->dm_mvert[ (*(&mf->v1 + i1)) ].co, ps->dm_mvert[ (*(&mf->v1 + i2)) ].co, ps->dm_mvert[ (*(&mf->v1 + i3)) ].co, w);
+ if(view3d_test_clipping(ps->rv3d, wco, 1)) {
continue; /* Watch out that no code below this needs to run */
}
}
@@ -2567,7 +2565,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
line_clip_rect2f(bucket_bounds, vCoSS[fidx1], vCoSS[fidx2], bucket_clip_edges[0], bucket_clip_edges[1])
) {
- ftot = Vec2Lenf(vCoSS[fidx1], vCoSS[fidx2]); /* screenspace edge length */
+ ftot = len_v2v2(vCoSS[fidx1], vCoSS[fidx2]); /* screenspace edge length */
if (ftot > 0.0f) { /* avoid div by zero */
if (mf->v4) {
@@ -2575,19 +2573,19 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
else side= 0;
}
- fac1 = Vec2Lenf(vCoSS[fidx1], bucket_clip_edges[0]) / ftot;
- fac2 = Vec2Lenf(vCoSS[fidx1], bucket_clip_edges[1]) / ftot;
+ fac1 = len_v2v2(vCoSS[fidx1], bucket_clip_edges[0]) / ftot;
+ fac2 = len_v2v2(vCoSS[fidx1], bucket_clip_edges[1]) / ftot;
- Vec2Lerpf(seam_subsection[0], tf_uv_pxoffset[fidx1], tf_uv_pxoffset[fidx2], fac1);
- Vec2Lerpf(seam_subsection[1], tf_uv_pxoffset[fidx1], tf_uv_pxoffset[fidx2], fac2);
+ interp_v2_v2v2(seam_subsection[0], tf_uv_pxoffset[fidx1], tf_uv_pxoffset[fidx2], fac1);
+ interp_v2_v2v2(seam_subsection[1], tf_uv_pxoffset[fidx1], tf_uv_pxoffset[fidx2], fac2);
- Vec2Lerpf(seam_subsection[2], outset_uv[fidx1], outset_uv[fidx2], fac2);
- Vec2Lerpf(seam_subsection[3], outset_uv[fidx1], outset_uv[fidx2], fac1);
+ interp_v2_v2v2(seam_subsection[2], outset_uv[fidx1], outset_uv[fidx2], fac2);
+ interp_v2_v2v2(seam_subsection[3], outset_uv[fidx1], outset_uv[fidx2], fac1);
/* if the bucket_clip_edges values Z values was kept we could avoid this
* Inset needs to be added so occlusion tests wont hit adjacent faces */
- VecLerpf(edge_verts_inset_clip[0], insetCos[fidx1], insetCos[fidx2], fac1);
- VecLerpf(edge_verts_inset_clip[1], insetCos[fidx1], insetCos[fidx2], fac2);
+ interp_v3_v3v3(edge_verts_inset_clip[0], insetCos[fidx1], insetCos[fidx2], fac1);
+ interp_v3_v3v3(edge_verts_inset_clip[1], insetCos[fidx1], insetCos[fidx2], fac2);
if (pixel_bounds_uv(seam_subsection[0], seam_subsection[1], seam_subsection[2], seam_subsection[3], &bounds_px, ibuf->x, ibuf->y, 1)) {
@@ -2604,7 +2602,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
uv[0] = (float)x / ibuf_xf; /* use offset uvs instead */
/* test we're inside uvspace bucket and triangle bounds */
- if (IsectPQ2Df(uv, seam_subsection[0], seam_subsection[1], seam_subsection[2], seam_subsection[3])) {
+ if (isect_point_quad_v2(uv, seam_subsection[0], seam_subsection[1], seam_subsection[2], seam_subsection[3])) {
/* We need to find the closest point along the face edge,
* getting the screen_px_from_*** wont work because our actual location
@@ -2621,11 +2619,11 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
fac = lambda_cp_line2(uv, seam_subsection[0], seam_subsection[1]);
if (fac < 0.0f) { VECCOPY(pixelScreenCo, edge_verts_inset_clip[0]); }
else if (fac > 1.0f) { VECCOPY(pixelScreenCo, edge_verts_inset_clip[1]); }
- else { VecLerpf(pixelScreenCo, edge_verts_inset_clip[0], edge_verts_inset_clip[1], fac); }
+ else { interp_v3_v3v3(pixelScreenCo, edge_verts_inset_clip[0], edge_verts_inset_clip[1], fac); }
if (!is_ortho) {
pixelScreenCo[3] = 1.0f;
- Mat4MulVec4fl((float(*)[4])ps->projectMat, pixelScreenCo); /* cast because of const */
+ mul_m4_v4((float(*)[4])ps->projectMat, pixelScreenCo); /* cast because of const */
pixelScreenCo[0] = (float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*pixelScreenCo[0]/pixelScreenCo[3];
pixelScreenCo[1] = (float)(ps->ar->winy/2.0f)+(ps->ar->winy/2.0f)*pixelScreenCo[1]/pixelScreenCo[3];
pixelScreenCo[2] = pixelScreenCo[2]/pixelScreenCo[3]; /* Use the depth for bucket point occlusion */
@@ -2661,11 +2659,10 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
/* a pitty we need to get the worldspace pixel location here */
if(ps->rv3d->rflag & RV3D_CLIPPING) {
- if (side) VecLerp3f(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v3].co, ps->dm_mvert[mf->v4].co, w);
- else VecLerp3f(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v2].co, ps->dm_mvert[mf->v3].co, w);
-
- Mat4MulVecfl(ps->ob->obmat, wco);
- if(view3d_test_clipping(ps->rv3d, wco)) {
+ if (side) interp_v3_v3v3v3(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v3].co, ps->dm_mvert[mf->v4].co, w);
+ else interp_v3_v3v3v3(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v2].co, ps->dm_mvert[mf->v3].co, w);
+
+ if(view3d_test_clipping(ps->rv3d, wco, 1)) {
continue; /* Watch out that no code below this needs to run */
}
}
@@ -2824,23 +2821,23 @@ static int project_bucket_face_isect(ProjPaintState *ps, float min[2], float max
p4[0] = bucket_bounds.xmax; p4[1] = bucket_bounds.ymin;
if (mf->v4) {
- if( IsectPQ2Df(p1, v1, v2, v3, v4) || IsectPQ2Df(p2, v1, v2, v3, v4) || IsectPQ2Df(p3, v1, v2, v3, v4) || IsectPQ2Df(p4, v1, v2, v3, v4) ||
+ if( isect_point_quad_v2(p1, v1, v2, v3, v4) || isect_point_quad_v2(p2, v1, v2, v3, v4) || isect_point_quad_v2(p3, v1, v2, v3, v4) || isect_point_quad_v2(p4, v1, v2, v3, v4) ||
/* we can avoid testing v3,v1 because another intersection MUST exist if this intersects */
- (IsectLL2Df(p1, p2, v1, v2) || IsectLL2Df(p1, p2, v2, v3) || IsectLL2Df(p1, p2, v3, v4)) ||
- (IsectLL2Df(p2, p3, v1, v2) || IsectLL2Df(p2, p3, v2, v3) || IsectLL2Df(p2, p3, v3, v4)) ||
- (IsectLL2Df(p3, p4, v1, v2) || IsectLL2Df(p3, p4, v2, v3) || IsectLL2Df(p3, p4, v3, v4)) ||
- (IsectLL2Df(p4, p1, v1, v2) || IsectLL2Df(p4, p1, v2, v3) || IsectLL2Df(p4, p1, v3, v4))
+ (isect_line_line_v2(p1, p2, v1, v2) || isect_line_line_v2(p1, p2, v2, v3) || isect_line_line_v2(p1, p2, v3, v4)) ||
+ (isect_line_line_v2(p2, p3, v1, v2) || isect_line_line_v2(p2, p3, v2, v3) || isect_line_line_v2(p2, p3, v3, v4)) ||
+ (isect_line_line_v2(p3, p4, v1, v2) || isect_line_line_v2(p3, p4, v2, v3) || isect_line_line_v2(p3, p4, v3, v4)) ||
+ (isect_line_line_v2(p4, p1, v1, v2) || isect_line_line_v2(p4, p1, v2, v3) || isect_line_line_v2(p4, p1, v3, v4))
) {
return 1;
}
}
else {
- if( IsectPT2Df(p1, v1, v2, v3) || IsectPT2Df(p2, v1, v2, v3) || IsectPT2Df(p3, v1, v2, v3) || IsectPT2Df(p4, v1, v2, v3) ||
+ if( isect_point_tri_v2(p1, v1, v2, v3) || isect_point_tri_v2(p2, v1, v2, v3) || isect_point_tri_v2(p3, v1, v2, v3) || isect_point_tri_v2(p4, v1, v2, v3) ||
/* we can avoid testing v3,v1 because another intersection MUST exist if this intersects */
- (IsectLL2Df(p1, p2, v1, v2) || IsectLL2Df(p1, p2, v2, v3)) ||
- (IsectLL2Df(p2, p3, v1, v2) || IsectLL2Df(p2, p3, v2, v3)) ||
- (IsectLL2Df(p3, p4, v1, v2) || IsectLL2Df(p3, p4, v2, v3)) ||
- (IsectLL2Df(p4, p1, v1, v2) || IsectLL2Df(p4, p1, v2, v3))
+ (isect_line_line_v2(p1, p2, v1, v2) || isect_line_line_v2(p1, p2, v2, v3)) ||
+ (isect_line_line_v2(p2, p3, v1, v2) || isect_line_line_v2(p2, p3, v2, v3)) ||
+ (isect_line_line_v2(p3, p4, v1, v2) || isect_line_line_v2(p3, p4, v2, v3)) ||
+ (isect_line_line_v2(p4, p1, v1, v2) || isect_line_line_v2(p4, p1, v2, v3))
) {
return 1;
}
@@ -2934,6 +2931,8 @@ static void project_paint_begin(ProjPaintState *ps)
/* ---- end defines ---- */
+ ED_view3d_local_clipping(ps->rv3d, ps->ob->obmat); /* faster clipping lookups */
+
/* paint onto the derived mesh */
/* Workaround for subsurf selection, try the display mesh first */
@@ -3000,18 +2999,18 @@ static void project_paint_begin(ProjPaintState *ps)
view3d_get_object_project_mat(ps->rv3d, ps->ob, ps->projectMat);
/* viewDir - object relative */
- Mat4Invert(ps->ob->imat, ps->ob->obmat);
- Mat3CpyMat4(mat, ps->rv3d->viewinv);
- Mat3MulVecfl(mat, ps->viewDir);
- Mat3CpyMat4(mat, ps->ob->imat);
- Mat3MulVecfl(mat, ps->viewDir);
- Normalize(ps->viewDir);
+ invert_m4_m4(ps->ob->imat, ps->ob->obmat);
+ copy_m3_m4(mat, ps->rv3d->viewinv);
+ mul_m3_v3(mat, ps->viewDir);
+ copy_m3_m4(mat, ps->ob->imat);
+ mul_m3_v3(mat, ps->viewDir);
+ normalize_v3(ps->viewDir);
/* viewPos - object relative */
VECCOPY(ps->viewPos, ps->rv3d->viewinv[3]);
- Mat3CpyMat4(mat, ps->ob->imat);
- Mat3MulVecfl(mat, ps->viewPos);
- VecAddf(ps->viewPos, ps->viewPos, ps->ob->imat[3]);
+ copy_m3_m4(mat, ps->ob->imat);
+ mul_m3_v3(mat, ps->viewPos);
+ add_v3_v3v3(ps->viewPos, ps->viewPos, ps->ob->imat[3]);
{ /* only use these for running 'get_view3d_viewplane' */
rctf viewplane;
@@ -3045,7 +3044,7 @@ static void project_paint_begin(ProjPaintState *ps)
if (ps->is_ortho) {
for(a=0; a < ps->dm_totvert; a++, projScreenCo++) {
VECCOPY((*projScreenCo), ps->dm_mvert[a].co);
- Mat4MulVecfl(ps->projectMat, (*projScreenCo));
+ mul_m4_v3(ps->projectMat, (*projScreenCo));
/* screen space, not clamped */
(*projScreenCo)[0] = (float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*(*projScreenCo)[0];
@@ -3058,7 +3057,7 @@ static void project_paint_begin(ProjPaintState *ps)
VECCOPY((*projScreenCo), ps->dm_mvert[a].co);
(*projScreenCo)[3] = 1.0f;
- Mat4MulVec4fl(ps->projectMat, (*projScreenCo));
+ mul_m4_v4(ps->projectMat, (*projScreenCo));
if ((*projScreenCo)[3] > ps->clipsta) {
@@ -3152,14 +3151,14 @@ static void project_paint_begin(ProjPaintState *ps)
no[2] = (float)(v->no[2] / 32767.0f);
if (ps->is_ortho) {
- if (NormalizedVecAngle2(ps->viewDir, no) >= ps->normal_angle) { /* 1 vert of this face is towards us */
+ if (angle_normalized_v3v3(ps->viewDir, no) >= ps->normal_angle) { /* 1 vert of this face is towards us */
ps->vertFlags[a] |= PROJ_VERT_CULL;
}
}
else {
- VecSubf(viewDirPersp, ps->viewPos, v->co);
- Normalize(viewDirPersp);
- if (NormalizedVecAngle2(viewDirPersp, no) >= ps->normal_angle) { /* 1 vert of this face is towards us */
+ sub_v3_v3v3(viewDirPersp, ps->viewPos, v->co);
+ normalize_v3(viewDirPersp);
+ if (angle_normalized_v3v3(viewDirPersp, no) >= ps->normal_angle) { /* 1 vert of this face is towards us */
ps->vertFlags[a] |= PROJ_VERT_CULL;
}
}
@@ -3298,10 +3297,10 @@ static void project_paint_begin_clone(ProjPaintState *ps, int mouse[2])
float projCo[4];
float *curs= give_cursor(ps->scene, ps->v3d);
VECCOPY(projCo, curs);
- Mat4MulVecfl(ps->ob->imat, projCo);
+ mul_m4_v3(ps->ob->imat, projCo);
projCo[3] = 1.0f;
- Mat4MulVec4fl(ps->projectMat, projCo);
+ mul_m4_v4(ps->projectMat, projCo);
ps->cloneOffset[0] = mouse[0] - ((float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*projCo[0]/projCo[3]);
ps->cloneOffset[1] = mouse[1] - ((float)(ps->ar->winy/2.0f)+(ps->ar->winy/2.0f)*projCo[1]/projCo[3]);
}
@@ -3742,7 +3741,7 @@ static void *do_projectpaint_thread(void *ph_v)
projPixel = (ProjPixel *)node->link;
- /*dist = Vec2Lenf(projPixel->projCoSS, pos);*/ /* correct but uses a sqrtf */
+ /*dist = len_v2v2(projPixel->projCoSS, pos);*/ /* correct but uses a sqrtf */
dist_nosqrt = Vec2Lenf_nosqrt(projPixel->projCoSS, pos);
/*if (dist < s->brush->size) {*/ /* correct but uses a sqrtf */
@@ -3811,7 +3810,7 @@ static void *do_projectpaint_thread(void *ph_v)
}
break;
case PAINT_TOOL_SMEAR:
- Vec2Subf(co, projPixel->projCoSS, pos_ofs);
+ sub_v2_v2v2(co, projPixel->projCoSS, pos_ofs);
if (is_floatbuf) do_projectpaint_smear_f(ps, projPixel, rgba, alpha, mask, smearArena, &smearPixels_f, co);
else do_projectpaint_smear(ps, projPixel, rgba, alpha, mask, smearArena, &smearPixels, co);
@@ -4200,14 +4199,14 @@ static int imapaint_paint_op(void *state, ImBuf *ibufb, float *lastpos, float *p
static int texpaint_break_stroke(float *prevuv, float *fwuv, float *bkuv, float *uv)
{
float d1[2], d2[2];
- float mismatch = Vec2Lenf(fwuv, uv);
- float len1 = Vec2Lenf(prevuv, fwuv);
- float len2 = Vec2Lenf(bkuv, uv);
+ float mismatch = len_v2v2(fwuv, uv);
+ float len1 = len_v2v2(prevuv, fwuv);
+ float len2 = len_v2v2(bkuv, uv);
- Vec2Subf(d1, fwuv, prevuv);
- Vec2Subf(d2, uv, bkuv);
+ sub_v2_v2v2(d1, fwuv, prevuv);
+ sub_v2_v2v2(d2, uv, bkuv);
- return ((Inp2f(d1, d2) < 0.0f) || (mismatch > MAX2(len1, len2)*2));
+ return ((dot_v2v2(d1, d2) < 0.0f) || (mismatch > MAX2(len1, len2)*2));
}
/* ImagePaint Common */
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c
index d8f13f679a5..256d114fbdc 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -140,6 +140,42 @@ void ED_operatortypes_paint(void)
WM_operatortype_append(PAINT_OT_face_deselect_all);
}
+static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path)
+{
+ wmKeyMapItem *kmi;
+
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 0);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", TWOKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 1);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", THREEKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 2);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FOURKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 3);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FIVEKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 4);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SIXKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 5);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SEVENKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 6);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", EIGHTKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 7);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", NINEKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 8);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", path);
+ RNA_int_set(kmi->ptr, "value", 10);
+}
+
void ED_keymap_paint(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
@@ -155,6 +191,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index");
+
/* Vertex Paint mode */
keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0);
keymap->poll= vertex_paint_poll;
@@ -167,6 +205,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap,
"PAINT_OT_vertex_color_set",KKEY, KM_PRESS, KM_SHIFT, 0);
+ ed_keymap_paint_brush_switch(keymap, "tool_settings.vertex_paint.active_brush_index");
+
/* Weight Paint mode */
keymap= WM_keymap_find(keyconf, "Weight Paint", 0, 0);
keymap->poll= weight_paint_poll;
@@ -179,6 +219,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap,
"PAINT_OT_weight_set", KKEY, KM_PRESS, KM_SHIFT, 0);
+ ed_keymap_paint_brush_switch(keymap, "tool_settings.weight_paint.active_brush_index");
+
/* Image/Texture Paint mode */
keymap= WM_keymap_find(keyconf, "Image Paint", 0, 0);
keymap->poll= image_texture_paint_poll;
@@ -190,6 +232,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "PAINT_OT_sample_color", RIGHTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_clone_cursor_set", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
+ ed_keymap_paint_brush_switch(keymap, "tool_settings.image_paint.active_brush_index");
+
/* face-mask mode */
keymap= WM_keymap_find(keyconf, "Face Mask", 0, 0);
keymap->poll= facemask_paint_poll;
diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c
index 6e256bee7f2..8e795c5542e 100644
--- a/source/blender/editors/sculpt_paint/paint_stroke.c
+++ b/source/blender/editors/sculpt_paint/paint_stroke.c
@@ -41,7 +41,7 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "PIL_time.h"
@@ -120,6 +120,7 @@ static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *ev
PointerRNA itemptr;
float cur_depth, pressure = 1;
float center[3];
+ int flip= event->shift?1:0;
PaintStroke *stroke = op->customdata;
cur_depth = read_cached_depth(&stroke->vc, mouse[0], mouse[1]);
@@ -130,13 +131,15 @@ static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *ev
wmTabletData *wmtab= event->customdata;
if(wmtab->Active != EVT_TABLET_NONE)
pressure= wmtab->Pressure;
+ if(wmtab->Active == EVT_TABLET_ERASER)
+ flip = 1;
}
/* Add to stroke */
RNA_collection_add(op->ptr, "stroke", &itemptr);
RNA_float_set_array(&itemptr, "location", center);
RNA_float_set_array(&itemptr, "mouse", mouse);
- RNA_boolean_set(&itemptr, "flip", event->shift);
+ RNA_boolean_set(&itemptr, "flip", flip);
RNA_float_set(&itemptr, "pressure", pressure);
stroke->last_mouse_position[0] = mouse[0];
diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c
index 15104068350..24d9e0f4bc1 100644
--- a/source/blender/editors/sculpt_paint/paint_utils.c
+++ b/source/blender/editors/sculpt_paint/paint_utils.c
@@ -13,7 +13,7 @@
#include "RNA_access.h"
#include "RNA_define.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_brush.h"
#include "BKE_context.h"
@@ -43,9 +43,9 @@ static void imapaint_project(Object *ob, float *model, float *proj, float *co, f
VECCOPY(pco, co);
pco[3]= 1.0f;
- Mat4MulVecfl(ob->obmat, pco);
- Mat4MulVecfl((float(*)[4])model, pco);
- Mat4MulVec4fl((float(*)[4])proj, pco);
+ mul_m4_v3(ob->obmat, pco);
+ mul_m4_v3((float(*)[4])model, pco);
+ mul_m4_v4((float(*)[4])proj, pco);
}
static void imapaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, float *co, float *w)
@@ -79,15 +79,15 @@ static void imapaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, fl
wmat[0][1]= pv1[1]; wmat[1][1]= pv2[1]; wmat[2][1]= pv3[1];
wmat[0][2]= pv1[3]; wmat[1][2]= pv2[3]; wmat[2][2]= pv3[3];
- Mat3Inv(invwmat, wmat);
- Mat3MulVecfl(invwmat, h);
+ invert_m3_m3(invwmat, wmat);
+ mul_m3_v3(invwmat, h);
VECCOPY(w, h);
/* w is still divided by perspdiv, make it sum to one */
divw= w[0] + w[1] + w[2];
if(divw != 0.0f)
- VecMulf(w, 1.0f/divw);
+ mul_v3_fl(w, 1.0f/divw);
}
/* compute uv coordinates of mouse in face */
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 2045397f3c9..2512ecbc248 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -42,7 +42,7 @@
#include "IMB_imbuf_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_ghash.h"
#include "DNA_anim_types.h"
@@ -154,12 +154,10 @@ static VPaint *new_vpaint(int wpaint)
{
VPaint *vp= MEM_callocN(sizeof(VPaint), "VPaint");
- vp->gamma= vp->mul= 1.0f;
-
- vp->flag= VP_AREA+VP_SOFT+VP_SPRAY;
+ vp->flag= VP_AREA+VP_SPRAY;
if(wpaint)
- vp->flag= VP_AREA+VP_SOFT;
+ vp->flag= VP_AREA;
return vp;
}
@@ -468,7 +466,8 @@ void wpaint_fill(VPaint *wp, Object *ob, float paintweight)
DAG_id_flush_update(&me->id, OB_RECALC_DATA);
}
-
+/* XXX: should be re-implemented as a vertex/weight paint 'colour correct' operator
+
void vpaint_dogamma(Scene *scene)
{
VPaint *vp= scene->toolsettings->vpaint;
@@ -508,6 +507,7 @@ void vpaint_dogamma(Scene *scene)
cp+= 4;
}
}
+ */
static unsigned int mcol_blend(unsigned int col1, unsigned int col2, int fac)
{
@@ -739,65 +739,83 @@ static int sample_backbuf_area(ViewContext *vc, int *indexar, int totface, int x
return tot;
}
-static int calc_vp_alpha_dl(VPaint *vp, ViewContext *vc, float vpimat[][3], float *vert_nor, float *mval)
+static float calc_vp_alpha_dl(VPaint *vp, ViewContext *vc, float vpimat[][3], float *vert_nor, float *mval, float pressure)
{
Brush *brush = paint_brush(&vp->paint);
- float fac, dx, dy;
- int alpha;
+ float fac, fac_2, size, dx, dy;
+ float alpha;
short vertco[2];
- if(vp->flag & VP_SOFT) {
- project_short_noclip(vc->ar, vert_nor, vertco);
- dx= mval[0]-vertco[0];
- dy= mval[1]-vertco[1];
+ project_short_noclip(vc->ar, vert_nor, vertco);
+ dx= mval[0]-vertco[0];
+ dy= mval[1]-vertco[1];
+
+ if (brush->flag & BRUSH_SIZE_PRESSURE)
+ size = pressure * brush->size;
+ else
+ size = brush->size;
+
+ fac_2= dx*dx + dy*dy;
+ if(fac_2 > size*size) return 0.f;
+ fac = sqrtf(fac_2);
+
+ alpha= brush->alpha * brush_curve_strength_clamp(brush, fac, size);
+
+ if (brush->flag & BRUSH_ALPHA_PRESSURE)
+ alpha *= pressure;
- fac= sqrt(dx*dx + dy*dy);
- if(fac > brush->size) return 0;
- if(vp->flag & VP_HARD)
- alpha= 255;
- else
- alpha= 255.0*brush->alpha*(1.0-fac/brush->size);
- }
- else {
- alpha= 255.0*brush->alpha;
- }
-
if(vp->flag & VP_NORMALS) {
float *no= vert_nor+3;
- /* transpose ! */
+ /* transpose ! */
fac= vpimat[2][0]*no[0]+vpimat[2][1]*no[1]+vpimat[2][2]*no[2];
if(fac>0.0) {
dx= vpimat[0][0]*no[0]+vpimat[0][1]*no[1]+vpimat[0][2]*no[2];
dy= vpimat[1][0]*no[0]+vpimat[1][1]*no[1]+vpimat[1][2]*no[2];
- alpha*= fac/sqrt(dx*dx + dy*dy + fac*fac);
+ alpha*= fac/sqrtf(dx*dx + dy*dy + fac*fac);
}
- else return 0;
+ else return 0.f;
}
return alpha;
}
-static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float alpha, float paintval)
+static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float alpha, float paintval, int flip)
{
Brush *brush = paint_brush(&wp->paint);
+ int mode = wp->mode;
if(dw==NULL || uw==NULL) return;
- if(wp->mode==VP_MIX || wp->mode==VP_BLUR)
+ if (flip) {
+ switch(mode) {
+ case VP_MIX:
+ paintval = 1.f - paintval; break;
+ case VP_ADD:
+ mode= VP_SUB; break;
+ case VP_SUB:
+ mode= VP_ADD; break;
+ case VP_LIGHTEN:
+ mode= VP_DARKEN; break;
+ case VP_DARKEN:
+ mode= VP_LIGHTEN; break;
+ }
+ }
+
+ if(mode==VP_MIX || mode==VP_BLUR)
dw->weight = paintval*alpha + dw->weight*(1.0-alpha);
- else if(wp->mode==VP_ADD)
+ else if(mode==VP_ADD)
dw->weight += paintval*alpha;
- else if(wp->mode==VP_SUB)
+ else if(mode==VP_SUB)
dw->weight -= paintval*alpha;
- else if(wp->mode==VP_MUL)
+ else if(mode==VP_MUL)
/* first mul, then blend the fac */
dw->weight = ((1.0-alpha) + alpha*paintval)*dw->weight;
- else if(wp->mode==VP_LIGHTEN) {
+ else if(mode==VP_LIGHTEN) {
if (dw->weight < paintval)
dw->weight = paintval*alpha + dw->weight*(1.0-alpha);
- } else if(wp->mode==VP_DARKEN) {
+ } else if(mode==VP_DARKEN) {
if (dw->weight > paintval)
dw->weight = paintval*alpha + dw->weight*(1.0-alpha);
}
@@ -808,21 +826,21 @@ static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float
float testw=0.0f;
alpha= brush->alpha;
- if(wp->mode==VP_MIX || wp->mode==VP_BLUR)
+ if(mode==VP_MIX || mode==VP_BLUR)
testw = paintval*alpha + uw->weight*(1.0-alpha);
- else if(wp->mode==VP_ADD)
+ else if(mode==VP_ADD)
testw = uw->weight + paintval*alpha;
- else if(wp->mode==VP_SUB)
+ else if(mode==VP_SUB)
testw = uw->weight - paintval*alpha;
- else if(wp->mode==VP_MUL)
+ else if(mode==VP_MUL)
/* first mul, then blend the fac */
testw = ((1.0-alpha) + alpha*paintval)*uw->weight;
- else if(wp->mode==VP_LIGHTEN) {
+ else if(mode==VP_LIGHTEN) {
if (uw->weight < paintval)
testw = paintval*alpha + uw->weight*(1.0-alpha);
else
testw = uw->weight;
- } else if(wp->mode==VP_DARKEN) {
+ } else if(mode==VP_DARKEN) {
if (uw->weight > paintval)
testw = paintval*alpha + uw->weight*(1.0-alpha);
else
@@ -1023,7 +1041,7 @@ static void do_weight_paint_auto_normalize(MDeformVert *dvert,
}
static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index,
- int alpha, float paintweight,
+ float alpha, float paintweight, int flip,
int vgroup_mirror, char *validmap)
{
Mesh *me= ob->data;
@@ -1041,7 +1059,7 @@ static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index,
if(dw==NULL || uw==NULL)
return;
- wpaint_blend(wp, dw, uw, (float)alpha/255.0, paintweight);
+ wpaint_blend(wp, dw, uw, alpha, paintweight, flip);
do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap);
if(me->editflag & ME_EDIT_MIRROR_X) { /* x mirror painting */
@@ -1379,9 +1397,9 @@ static int wpaint_stroke_test_start(bContext *C, wmOperator *op, wmEvent *event)
// if(ob->lay & v3d->lay); else error("Active object is not in this layer");
/* imat for normals */
- Mat4MulMat4(mat, ob->obmat, wpd->vc.rv3d->viewmat);
- Mat4Invert(imat, mat);
- Mat3CpyMat4(wpd->wpimat, imat);
+ mul_m4_m4m4(mat, ob->obmat, wpd->vc.rv3d->viewmat);
+ invert_m4_m4(imat, mat);
+ copy_m3_m4(wpd->wpimat, imat);
/* if mirror painting, find the other group */
if(me->editflag & ME_EDIT_MIRROR_X) {
@@ -1423,8 +1441,9 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
float mat[4][4];
float paintweight= ts->vgroup_weight;
int *indexar= wpd->indexar;
- int totindex, index, alpha, totw;
- float mval[2];
+ int totindex, index, totw, flip;
+ float alpha;
+ float mval[2], pressure;
view3d_operator_needs_opengl(C);
@@ -1433,11 +1452,13 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
wmGetSingleMatrix(mat);
wmLoadMatrix(wpd->vc.rv3d->viewmat);
+ flip = RNA_boolean_get(itemptr, "flip");
+ pressure = RNA_float_get(itemptr, "pressure");
RNA_float_get_array(itemptr, "mouse", mval);
mval[0]-= vc->ar->winrct.xmin;
mval[1]-= vc->ar->winrct.ymin;
- Mat4SwapMat4(wpd->vc.rv3d->persmat, mat);
+ swap_m4m4(wpd->vc.rv3d->persmat, mat);
/* which faces are involved */
if(wp->flag & VP_AREA) {
@@ -1457,7 +1478,7 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
if(mface->mat_nr!=ob->actcol-1) {
indexar[index]= 0;
}
- }
+ }
}
}
@@ -1519,30 +1540,30 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
MFace *mface= me->mface + (indexar[index]-1);
if((me->dvert+mface->v1)->flag) {
- alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v1, mval);
+ alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v1, mval, pressure);
if(alpha) {
do_weight_paint_vertex(wp, ob, mface->v1,
- alpha, paintweight, wpd->vgroup_mirror,
+ alpha, paintweight, flip, wpd->vgroup_mirror,
wpd->vgroup_validmap);
}
(me->dvert+mface->v1)->flag= 0;
}
if((me->dvert+mface->v2)->flag) {
- alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v2, mval);
+ alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v2, mval, pressure);
if(alpha) {
do_weight_paint_vertex(wp, ob, mface->v2,
- alpha, paintweight, wpd->vgroup_mirror,
+ alpha, paintweight, flip, wpd->vgroup_mirror,
wpd->vgroup_validmap);
}
(me->dvert+mface->v2)->flag= 0;
}
if((me->dvert+mface->v3)->flag) {
- alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v3, mval);
+ alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v3, mval, pressure);
if(alpha) {
do_weight_paint_vertex(wp, ob, mface->v3,
- alpha, paintweight, wpd->vgroup_mirror,
+ alpha, paintweight, flip, wpd->vgroup_mirror,
wpd->vgroup_validmap);
}
(me->dvert+mface->v3)->flag= 0;
@@ -1550,10 +1571,10 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
if((me->dvert+mface->v4)->flag) {
if(mface->v4) {
- alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v4, mval);
+ alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*mface->v4, mval, pressure);
if(alpha) {
do_weight_paint_vertex(wp, ob, mface->v4,
- alpha, paintweight, wpd->vgroup_mirror,
+ alpha, paintweight, flip, wpd->vgroup_mirror,
wpd->vgroup_validmap);
}
(me->dvert+mface->v4)->flag= 0;
@@ -1562,7 +1583,7 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
}
}
- Mat4SwapMat4(vc->rv3d->persmat, mat);
+ swap_m4m4(vc->rv3d->persmat, mat);
DAG_id_flush_update(ob->data, OB_RECALC_DATA);
ED_region_tag_redraw(vc->ar);
@@ -1795,21 +1816,22 @@ static int vpaint_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent
copy_vpaint_prev(vp, (unsigned int *)me->mcol, me->totface);
/* some old cruft to sort out later */
- Mat4MulMat4(mat, ob->obmat, vpd->vc.rv3d->viewmat);
- Mat4Invert(imat, mat);
- Mat3CpyMat4(vpd->vpimat, imat);
+ mul_m4_m4m4(mat, ob->obmat, vpd->vc.rv3d->viewmat);
+ invert_m4_m4(imat, mat);
+ copy_m3_m4(vpd->vpimat, imat);
return 1;
}
-static void vpaint_paint_face(VPaint *vp, VPaintData *vpd, Object *ob, int index, float mval[2])
+static void vpaint_paint_face(VPaint *vp, VPaintData *vpd, Object *ob, int index, float mval[2], float pressure, int flip)
{
ViewContext *vc = &vpd->vc;
Mesh *me = get_mesh(ob);
MFace *mface= ((MFace*)me->mface) + index;
unsigned int *mcol= ((unsigned int*)me->mcol) + 4*index;
unsigned int *mcolorig= ((unsigned int*)vp->vpaint_prev) + 4*index;
- int alpha, i;
+ float alpha;
+ int i;
if((vp->flag & VP_COLINDEX && mface->mat_nr!=ob->actcol-1) ||
((me->editflag & ME_EDIT_PAINT_MASK) && !(mface->flag & ME_FACE_SEL)))
@@ -1828,9 +1850,9 @@ static void vpaint_paint_face(VPaint *vp, VPaintData *vpd, Object *ob, int index
}
for(i = 0; i < (mface->v4 ? 4 : 3); ++i) {
- alpha= calc_vp_alpha_dl(vp, vc, vpd->vpimat, vpd->vertexcosnos+6*(&mface->v1)[i], mval);
+ alpha= calc_vp_alpha_dl(vp, vc, vpd->vpimat, vpd->vertexcosnos+6*(&mface->v1)[i], mval, pressure);
if(alpha)
- vpaint_blend(vp, mcol+i, mcolorig+i, vpd->paintcol, alpha);
+ vpaint_blend(vp, mcol+i, mcolorig+i, vpd->paintcol, (int)(alpha*255.0));
}
}
@@ -1845,10 +1867,12 @@ static void vpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
Mesh *me= ob->data;
float mat[4][4];
int *indexar= vpd->indexar;
- int totindex, index;
- float mval[2];
+ int totindex, index, flip;
+ float pressure, mval[2];
RNA_float_get_array(itemptr, "mouse", mval);
+ flip = RNA_boolean_get(itemptr, "flip");
+ pressure = RNA_float_get(itemptr, "pressure");
view3d_operator_needs_opengl(C);
@@ -1871,14 +1895,14 @@ static void vpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
else totindex= 0;
}
- Mat4SwapMat4(vc->rv3d->persmat, mat);
+ swap_m4m4(vc->rv3d->persmat, mat);
for(index=0; index<totindex; index++) {
if(indexar[index] && indexar[index]<=me->totface)
- vpaint_paint_face(vp, vpd, ob, indexar[index]-1, mval);
+ vpaint_paint_face(vp, vpd, ob, indexar[index]-1, mval, pressure, flip);
}
- Mat4SwapMat4(vc->rv3d->persmat, mat);
+ swap_m4m4(vc->rv3d->persmat, mat);
/* was disabled because it is slow, but necessary for blur */
if(vp->mode == VP_BLUR)
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index c4c7f436f12..f4006e63dc0 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -32,7 +32,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
@@ -65,6 +65,7 @@
#include "BKE_modifier.h"
#include "BKE_multires.h"
#include "BKE_paint.h"
+#include "BKE_report.h"
#include "BKE_texture.h"
#include "BKE_utildefines.h"
#include "BKE_colortools.h"
@@ -74,6 +75,7 @@
#include "WM_api.h"
#include "WM_types.h"
+#include "ED_object.h"
#include "ED_screen.h"
#include "ED_sculpt.h"
#include "ED_space_api.h"
@@ -140,6 +142,7 @@ typedef struct StrokeCache {
float flip;
float pressure;
float mouse[2];
+ float tex_mouse[2];
/* The rest is temporary storage that isn't saved as a property */
@@ -256,12 +259,12 @@ static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], cons
{
float fno[3] = {no[0], no[1], no[2]};
- Normalize(fno);
+ normalize_v3(fno);
- if((Inpf(view_vec, fno)) > 0) {
- VecAddf(out, out, fno);
+ if((dot_v3v3(view_vec, fno)) > 0) {
+ add_v3_v3v3(out, out, fno);
} else {
- VecAddf(out_flip, out_flip, fno); /* out_flip is used when out is {0,0,0} */
+ add_v3_v3v3(out_flip, out_flip, fno); /* out_flip is used when out is {0,0,0} */
}
}
@@ -291,7 +294,7 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float out[3], const
VECCOPY(out, out_flip);
}
- Normalize(out);
+ normalize_v3(out);
if(out_dir) {
out[0] = out_dir[0] * view + out[0] * (10-view);
@@ -299,7 +302,7 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float out[3], const
out[2] = out_dir[2] * view + out[2] * (10-view);
}
- Normalize(out);
+ normalize_v3(out);
}
static void do_draw_brush(Sculpt *sd, SculptSession *ss, const ListBase* active_verts)
@@ -349,7 +352,7 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert)
/* Don't modify corner vertices */
if(ncount==1) {
- VecCopyf(avg, ss->mvert[vert].co);
+ copy_v3_v3(avg, ss->mvert[vert].co);
return;
}
@@ -365,7 +368,7 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert)
for(i=0; i<(f->v4?4:3); ++i) {
if(i != skip && (ncount!=2 || BLI_countlist(&ss->fmap[(&f->v1)[i]]) <= 2)) {
- VecAddf(avg, avg, ss->mvert[(&f->v1)[i]].co);
+ add_v3_v3v3(avg, avg, ss->mvert[(&f->v1)[i]].co);
++total;
}
}
@@ -374,9 +377,9 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert)
}
if(total>0)
- VecMulf(avg, 1.0f / total);
+ mul_v3_fl(avg, 1.0f / total);
else
- VecCopyf(avg, ss->mvert[vert].co);
+ copy_v3_v3(avg, ss->mvert[vert].co);
}
static void do_smooth_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts)
@@ -443,14 +446,14 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss)
float grab_delta[3];
float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
- VecCopyf(grab_delta, ss->cache->grab_delta_symmetry);
+ copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry);
while(node) {
float *co= ss->mvert[node->Index].co;
- VecCopyf(add, grab_delta);
- VecMulf(add, node->Fade);
- VecAddf(add, add, co);
+ copy_v3_v3(add, grab_delta);
+ mul_v3_fl(add, node->Fade);
+ add_v3_v3v3(add, add, co);
if( buffer != 0 ) {
IndexLink *cur = &ss->drawobject->indices[node->Index];
@@ -526,11 +529,11 @@ static void do_inflate_brush(Sculpt *s, SculptSession *ss, const ListBase *activ
add[0]= no[0]/ 32767.0f;
add[1]= no[1]/ 32767.0f;
add[2]= no[2]/ 32767.0f;
- VecMulf(add, node->Fade * ss->cache->radius);
+ mul_v3_fl(add, node->Fade * ss->cache->radius);
add[0]*= ss->cache->scale[0];
add[1]*= ss->cache->scale[1];
add[2]*= ss->cache->scale[2];
- VecAddf(add, add, co);
+ add_v3_v3v3(add, add, co);
if( buffer != 0 ) {
IndexLink *cur = &ss->drawobject->indices[node->Index];
@@ -567,8 +570,8 @@ static void calc_flatten_center(SculptSession *ss, ActiveData *node, float co[3]
co[0] = co[1] = co[2] = 0.0f;
for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i)
- VecAddf(co, co, ss->mvert[outer[i]->Index].co);
- VecMulf(co, 1.0f / FLATTEN_SAMPLE_SIZE);
+ add_v3_v3v3(co, co, ss->mvert[outer[i]->Index].co);
+ mul_v3_fl(co, 1.0f / FLATTEN_SAMPLE_SIZE);
}
/* Projects a point onto a plane along the plane's normal */
@@ -577,12 +580,12 @@ static void point_plane_project(float intr[3], float co[3], float plane_normal[3
float p1[3], sub1[3], sub2[3];
/* Find the intersection between squash-plane and vertex (along the area normal) */
- VecSubf(p1, co, plane_normal);
- VecSubf(sub1, plane_center, p1);
- VecSubf(sub2, co, p1);
- VecSubf(intr, co, p1);
- VecMulf(intr, Inpf(plane_normal, sub1) / Inpf(plane_normal, sub2));
- VecAddf(intr, intr, p1);
+ sub_v3_v3v3(p1, co, plane_normal);
+ sub_v3_v3v3(sub1, plane_center, p1);
+ sub_v3_v3v3(sub2, co, p1);
+ sub_v3_v3v3(intr, co, p1);
+ mul_v3_fl(intr, dot_v3v3(plane_normal, sub1) / dot_v3v3(plane_normal, sub2));
+ add_v3_v3v3(intr, intr, p1);
}
static int plane_point_side(float co[3], float plane_normal[3], float plane_center[3], int flip)
@@ -590,8 +593,8 @@ static int plane_point_side(float co[3], float plane_normal[3], float plane_cent
float delta[3];
float d;
- VecSubf(delta, co, plane_center);
- d = Inpf(plane_normal, delta);
+ sub_v3_v3v3(delta, co, plane_center);
+ d = dot_v3v3(plane_normal, delta);
if(flip)
d = -d;
@@ -629,22 +632,22 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase
/* Find the intersection between squash-plane and vertex (along the area normal) */
point_plane_project(intr, co, area_normal, cntr);
- VecSubf(val, intr, co);
+ sub_v3_v3v3(val, intr, co);
if(clay) {
if(bstr > FLT_EPSILON)
- VecMulf(val, node->Fade / bstr);
+ mul_v3_fl(val, node->Fade / bstr);
else
- VecMulf(val, node->Fade);
+ mul_v3_fl(val, node->Fade);
/* Clay displacement */
val[0]+=area_normal[0] * ss->cache->scale[0]*node->Fade;
val[1]+=area_normal[1] * ss->cache->scale[1]*node->Fade;
val[2]+=area_normal[2] * ss->cache->scale[2]*node->Fade;
}
else
- VecMulf(val, fabs(node->Fade));
+ mul_v3_fl(val, fabs(node->Fade));
- VecAddf(val, val, co);
+ add_v3_v3v3(val, val, co);
if( buffer != 0 ) {
IndexLink *cur = &ss->drawobject->indices[node->Index];
@@ -747,7 +750,7 @@ static float tex_strength(Sculpt *sd, SculptSession *ss, float *point, const flo
/* If the active area is being applied for symmetry, flip it
across the symmetry axis in order to project it. This insures
that the brush texture will be oriented correctly. */
- VecCopyf(flip, point);
+ copy_v3_v3(flip, point);
flip_coord(flip, flip, ss->cache->symmetry);
projectf(ss->cache->mats, flip, point_2d);
@@ -777,8 +780,8 @@ static float tex_strength(Sculpt *sd, SculptSession *ss, float *point, const flo
avg= get_texcache_pixel_bilinear(ss, ss->texcache_side*px/sx, ss->texcache_side*py/sy);
}
else if(tex->brush_map_mode == MTEX_MAP_MODE_FIXED) {
- float fx= (point_2d[0] - ss->cache->mouse[0]) / bsize;
- float fy= (point_2d[1] - ss->cache->mouse[1]) / bsize;
+ float fx= (point_2d[0] - ss->cache->tex_mouse[0]) / bsize;
+ float fy= (point_2d[1] - ss->cache->tex_mouse[1]) / bsize;
float angle= atan2(fy, fx) - rot;
float flen= sqrtf(fx*fx + fy*fy);
@@ -836,9 +839,7 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache)
ListBase *grab_active_verts = &ss->cache->grab_active_verts[ss->cache->symmetry];
ActiveData *adata= 0;
float *vert;
- Mesh *me= NULL; /*XXX: get_mesh(OBACT); */
const float bstrength= brush_strength(sd, cache);
- KeyBlock *keyblock= NULL; /*XXX: ob_get_keyblock(OBACT); */
Brush *b = brush;
int i;
@@ -852,7 +853,7 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache)
if(ss->multires || ss->projverts[i].inside) {
//vert= ss->vertexcosnos ? &ss->vertexcosnos[i*6] : a->verts[i].co;
vert= ss->mvert[i].co;
- av_dist= VecLenf(ss->cache->location, vert);
+ av_dist= len_v3v3(ss->cache->location, vert);
if(av_dist < cache->radius) {
adata= (ActiveData*)MEM_mallocN(sizeof(ActiveData), "ActiveData");
@@ -901,19 +902,7 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache)
}
/* Copy the modified vertices from mesh to the active key */
- if(keyblock && !ss->multires) {
- float *co= keyblock->data;
- if(co) {
- if(b->sculpt_tool == SCULPT_TOOL_GRAB)
- adata = grab_active_verts->first;
- else
- adata = active_verts.first;
-
- for(; adata; adata= adata->next)
- if(adata->Index < keyblock->totelem)
- VecCopyf(&co[adata->Index*3], me->mvert[adata->Index].co);
- }
- }
+ if(ss->kb) mesh_to_key(ss->ob->data, ss->kb);
if(ss->vertexcosnos && !ss->multires)
BLI_freelistN(&active_verts);
@@ -940,8 +929,8 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss)
const char symm = sd->flags & 7;
int i;
- VecCopyf(cache->location, cache->true_location);
- VecCopyf(cache->grab_delta_symmetry, cache->grab_delta);
+ copy_v3_v3(cache->location, cache->true_location);
+ copy_v3_v3(cache->grab_delta_symmetry, cache->grab_delta);
cache->symmetry = 0;
do_brush_action(sd, ss, cache);
@@ -963,15 +952,15 @@ static void add_face_normal(vec3f *norm, MVert *mvert, const MFace* face, float
vec3f s1, s2;
float final[3];
- VecSubf(&s1.x,&a.x,&b.x);
- VecSubf(&s2.x,&c.x,&b.x);
+ sub_v3_v3v3(&s1.x,&a.x,&b.x);
+ sub_v3_v3v3(&s2.x,&c.x,&b.x);
final[0] = s1.y * s2.z - s1.z * s2.y;
final[1] = s1.z * s2.x - s1.x * s2.z;
final[2] = s1.x * s2.y - s1.y * s2.x;
if(fn)
- VecCopyf(fn, final);
+ copy_v3_v3(fn, final);
norm->x+= final[0];
norm->y+= final[1];
@@ -994,7 +983,7 @@ static void update_damaged_vert(SculptSession *ss, ListBase *lb)
add_face_normal(&norm, ss->mvert, &ss->mface[face->index], fn);
face= face->next;
}
- Normalize(&norm.x);
+ normalize_v3(&norm.x);
ss->mvert[vert->Index].no[0]=norm.x*32767;
ss->mvert[vert->Index].no[1]=norm.y*32767;
@@ -1010,9 +999,9 @@ static void update_damaged_vert(SculptSession *ss, ListBase *lb)
else {
float norm[3];
if( ss->mface[i].v4 )
- CalcNormFloat4(ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co, ss->mvert[ss->mface[i].v4].co, norm);
+ normal_quad_v3( norm,ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co, ss->mvert[ss->mface[i].v4].co);
else
- CalcNormFloat(ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co, norm);
+ normal_tri_v3( norm,ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co);
VECCOPY(&buffer[(cur->element-cur->element%3)*3],norm);
VECCOPY(&buffer[(cur->element-cur->element%3+1)*3],norm);
VECCOPY(&buffer[(cur->element-cur->element%3+2)*3],norm);
@@ -1096,7 +1085,7 @@ char sculpt_modifiers_active(Object *ob)
ModifierData *md;
for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) {
- if(md->mode & eModifierMode_Realtime && md->type != eModifierType_Multires)
+ if(modifier_isEnabled(md, eModifierMode_Realtime) && md->type != eModifierType_Multires)
return 1;
}
@@ -1134,6 +1123,8 @@ static void sculpt_update_mesh_elements(bContext *C)
int oldtotvert = ss->totvert;
DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH);
+ ss->ob= ob;
+
if((ss->multires = sculpt_multires_active(ob))) {
//DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH);
ss->totvert = dm->getNumVerts(dm);
@@ -1166,6 +1157,15 @@ static void sculpt_update_mesh_elements(bContext *C)
create_vert_face_map(&ss->fmap, &ss->fmap_mem, ss->mface, ss->totvert, ss->totface);
ss->fmap_size = ss->totvert;
}
+
+ if((ob->shapeflag & OB_SHAPE_LOCK) && !sculpt_multires_active(ob)) {
+ ss->kb= ob_get_keyblock(ob);
+ ss->refkb= ob_get_reference_keyblock(ob);
+ }
+ else {
+ ss->kb= NULL;
+ ss->refkb= NULL;
+ }
}
static int sculpt_mode_poll(bContext *C)
@@ -1259,7 +1259,7 @@ static float unproject_brush_radius(SculptSession *ss, float offset)
view3d_unproject(ss->cache->mats, brush_edge, ss->cache->initial_mouse[0] + offset,
ss->cache->initial_mouse[1], ss->cache->depth);
- return VecLenf(ss->cache->true_location, brush_edge);
+ return len_v3v3(ss->cache->true_location, brush_edge);
}
static void sculpt_cache_free(StrokeCache *cache)
@@ -1292,8 +1292,8 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte
RNA_float_get_array(op->ptr, "initial_mouse", cache->initial_mouse);
cache->depth = RNA_float_get(op->ptr, "depth");
- cache->mouse[0] = cache->initial_mouse[0];
- cache->mouse[1] = cache->initial_mouse[1];
+ copy_v2_v2(cache->mouse, cache->initial_mouse);
+ copy_v2_v2(cache->tex_mouse, cache->initial_mouse);
/* Truly temporary data that isn't stored in properties */
@@ -1318,7 +1318,7 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte
ss->mesh_co_orig= MEM_mallocN(sizeof(float) * 3 * ss->totvert,
"sculpt mesh vertices copy");
for(i = 0; i < ss->totvert; ++i)
- VecCopyf(ss->mesh_co_orig[i], ss->mvert[i].co);
+ copy_v3_v3(ss->mesh_co_orig[i], ss->mvert[i].co);
}
if(brush->flag & BRUSH_ANCHORED) {
@@ -1333,7 +1333,7 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte
float *fn = ss->face_normals;
cache->face_norms= MEM_mallocN(sizeof(float) * 3 * ss->totface, "Sculpt face norms");
for(i = 0; i < ss->totface; ++i, fn += 3)
- VecCopyf(cache->face_norms[i], fn);
+ copy_v3_v3(cache->face_norms[i], fn);
}
}
}
@@ -1371,6 +1371,9 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR
else
cache->radius = cache->initial_radius;
+ if(!(brush->flag & BRUSH_ANCHORED))
+ copy_v2_v2(cache->tex_mouse, cache->mouse);
+
if(brush->flag & BRUSH_ANCHORED) {
dx = cache->mouse[0] - cache->initial_mouse[0];
dy = cache->mouse[1] - cache->initial_mouse[1];
@@ -1400,8 +1403,8 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR
if(brush->sculpt_tool == SCULPT_TOOL_GRAB) {
view3d_unproject(cache->mats, grab_location, cache->mouse[0], cache->mouse[1], cache->depth);
if(!cache->first_time)
- VecSubf(cache->grab_delta, grab_location, cache->old_grab_location);
- VecCopyf(cache->old_grab_location, grab_location);
+ sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location);
+ copy_v3_v3(cache->old_grab_location, grab_location);
}
}
@@ -1448,11 +1451,17 @@ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmE
sculpt_update_cache_invariants(sd, ss, C, op);
}
-static void sculpt_brush_stroke_init(bContext *C)
+static int sculpt_brush_stroke_init(bContext *C, ReportList *reports)
{
+ Object *ob= CTX_data_active_object(C);
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
SculptSession *ss = CTX_data_active_object(C)->sculpt;
+ if(ob_get_key(ob) && !(ob->shapeflag & OB_SHAPE_LOCK)) {
+ BKE_report(reports, RPT_ERROR, "Shape key sculpting requires a locked shape.");
+ return 0;
+ }
+
view3d_operator_needs_opengl(C);
/* TODO: Shouldn't really have to do this at the start of every
@@ -1461,6 +1470,10 @@ static void sculpt_brush_stroke_init(bContext *C)
sculpt_update_tex(sd, ss);
sculpt_update_mesh_elements(C);
+
+ if(ss->kb) key_to_mesh(ss->kb, ss->ob->data);
+
+ return 1;
}
static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss)
@@ -1477,7 +1490,7 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss)
buffer= (float *)GPU_buffer_lock(ss->drawobject->normals);
for(i = 0; i < ss->totvert; ++i) {
- VecCopyf(ss->mvert[i].co, ss->mesh_co_orig[i]);
+ copy_v3_v3(ss->mvert[i].co, ss->mesh_co_orig[i]);
ss->mvert[i].no[0] = cache->orig_norms[i][0];
ss->mvert[i].no[1] = cache->orig_norms[i][1];
ss->mvert[i].no[2] = cache->orig_norms[i][2];
@@ -1495,7 +1508,7 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss)
if(ss->face_normals) {
float *fn = ss->face_normals;
for(i = 0; i < ss->totface; ++i, fn += 3)
- VecCopyf(fn, cache->face_norms[i]);
+ copy_v3_v3(fn, cache->face_norms[i]);
}
if(brush->sculpt_tool == SCULPT_TOOL_LAYER)
@@ -1527,6 +1540,9 @@ static void sculpt_flush_update(bContext *C)
multires_mark_as_modified(ob);
}
+ if(sculpt_modifiers_active(ob))
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+
ED_region_tag_redraw(ar);
}
@@ -1567,12 +1583,15 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke)
{
- SculptSession *ss = CTX_data_active_object(C)->sculpt;
+ Object *ob= CTX_data_active_object(C);
+ SculptSession *ss = ob->sculpt;
/* Finished */
if(ss->cache) {
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
+ if(ss->refkb) key_to_mesh(ss->refkb, ob->data);
+
request_depth_update(paint_stroke_view_context(stroke)->rv3d);
sculpt_cache_free(ss->cache);
ss->cache = NULL;
@@ -1582,7 +1601,8 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke)
static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- sculpt_brush_stroke_init(C);
+ if(!sculpt_brush_stroke_init(C, op->reports))
+ return OPERATOR_CANCELLED;
op->customdata = paint_stroke_new(C, sculpt_stroke_test_start,
sculpt_stroke_update_step,
@@ -1601,9 +1621,10 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op)
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
SculptSession *ss = CTX_data_active_object(C)->sculpt;
- op->customdata = paint_stroke_new(C, sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done);
+ if(!sculpt_brush_stroke_init(C, op->reports))
+ return OPERATOR_CANCELLED;
- sculpt_brush_stroke_init(C);
+ op->customdata = paint_stroke_new(C, sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done);
sculpt_update_cache_invariants(sd, ss, C, op);
sculptmode_update_all_projverts(ss);
@@ -1694,7 +1715,8 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op)
Object *ob = CTX_data_active_object(C);
if(ob->mode & OB_MODE_SCULPT) {
- multires_force_update(ob);
+ if(sculpt_multires_active(ob))
+ multires_force_update(ob);
/* Leave sculptmode */
ob->mode &= ~OB_MODE_SCULPT;
diff --git a/source/blender/editors/sound/SConscript b/source/blender/editors/sound/SConscript
index 7968f4c53a9..9d2cd2b7cf5 100644
--- a/source/blender/editors/sound/SConscript
+++ b/source/blender/editors/sound/SConscript
@@ -5,7 +5,6 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc'
-incs += ' #/intern/guardedalloc'
incs += ' ../../makesrna ../../python'
incs += ' #/intern/audaspace/intern'
diff --git a/source/blender/editors/space_action/action_draw.c b/source/blender/editors/space_action/action_draw.c
index 7f2e1bd09e4..77cfc2cd484 100644
--- a/source/blender/editors/space_action/action_draw.c
+++ b/source/blender/editors/space_action/action_draw.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
/* Types --------------------------------------------------------------- */
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 0bcf4b037cb..1ba837afba3 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -123,11 +123,11 @@ static int act_new_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_new (wmOperatorType *ot)
+void ACTION_OT_new (wmOperatorType *ot)
{
/* identifiers */
ot->name= "New";
- ot->idname= "ACT_OT_new";
+ ot->idname= "ACTION_OT_new";
ot->description= "Create new action.";
/* api callbacks */
@@ -224,11 +224,11 @@ static int actkeys_previewrange_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_previewrange_set (wmOperatorType *ot)
+void ACTION_OT_previewrange_set (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Auto-Set Preview Range";
- ot->idname= "ACT_OT_previewrange_set";
+ ot->idname= "ACTION_OT_previewrange_set";
ot->description= "Set Preview Range based on extents of selected Keyframes.";
/* api callbacks */
@@ -272,11 +272,11 @@ static int actkeys_viewall_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_view_all (wmOperatorType *ot)
+void ACTION_OT_view_all (wmOperatorType *ot)
{
/* identifiers */
ot->name= "View All";
- ot->idname= "ACT_OT_view_all";
+ ot->idname= "ACTION_OT_view_all";
ot->description= "Reset viewable area to show full keyframe range.";
/* api callbacks */
@@ -357,11 +357,11 @@ static int actkeys_copy_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_copy (wmOperatorType *ot)
+void ACTION_OT_copy (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Copy Keyframes";
- ot->idname= "ACT_OT_copy";
+ ot->idname= "ACTION_OT_copy";
ot->description= "Copy selected keyframes to the copy/paste buffer.";
/* api callbacks */
@@ -402,11 +402,11 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_paste (wmOperatorType *ot)
+void ACTION_OT_paste (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Paste Keyframes";
- ot->idname= "ACT_OT_paste";
+ ot->idname= "ACTION_OT_paste";
ot->description= "Paste keyframes from copy/paste buffer for the selected channels, starting on the current frame.";
/* api callbacks */
@@ -499,11 +499,11 @@ static int actkeys_insertkey_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_insert_keyframe (wmOperatorType *ot)
+void ACT_OT_keyframe_insert (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframes";
- ot->idname= "ACT_OT_insert_keyframe";
+ ot->idname= "ACT_OT_keyframe_insert";
ot->description= "Insert keyframes for the specified channels.";
/* api callbacks */
@@ -577,11 +577,11 @@ static int actkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_FINISHED;
}
-void ACT_OT_duplicate (wmOperatorType *ot)
+void ACTION_OT_duplicate (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Duplicate Keyframes";
- ot->idname= "ACT_OT_duplicate";
+ ot->idname= "ACTION_OT_duplicate";
ot->description= "Make a copy of all selected keyframes.";
/* api callbacks */
@@ -645,11 +645,11 @@ static int actkeys_delete_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_delete (wmOperatorType *ot)
+void ACTION_OT_delete (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframes";
- ot->idname= "ACT_OT_delete";
+ ot->idname= "ACTION_OT_delete";
ot->description= "Remove all selected keyframes.";
/* api callbacks */
@@ -709,11 +709,11 @@ static int actkeys_clean_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_clean (wmOperatorType *ot)
+void ACTION_OT_clean (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Clean Keyframes";
- ot->idname= "ACT_OT_clean";
+ ot->idname= "ACTION_OT_clean";
ot->description= "Simplify F-Curves by removing closely spaced keyframes.";
/* api callbacks */
@@ -773,11 +773,11 @@ static int actkeys_sample_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_sample (wmOperatorType *ot)
+void ACTION_OT_sample (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Sample Keyframes";
- ot->idname= "ACT_OT_sample";
+ ot->idname= "ACTION_OT_sample";
ot->description= "Add keyframes on every frame between the selected keyframes.";
/* api callbacks */
@@ -849,11 +849,11 @@ static int actkeys_expo_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_extrapolation_type (wmOperatorType *ot)
+void ACTION_OT_extrapolation_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Extrapolation";
- ot->idname= "ACT_OT_extrapolation_type";
+ ot->idname= "ACTION_OT_extrapolation_type";
ot->description= "Set extrapolation mode for selected F-Curves.";
/* api callbacks */
@@ -920,11 +920,11 @@ static int actkeys_ipo_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_interpolation_type (wmOperatorType *ot)
+void ACTION_OT_interpolation_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Interpolation";
- ot->idname= "ACT_OT_interpolation_type";
+ ot->idname= "ACTION_OT_interpolation_type";
ot->description= "Set interpolation mode for the F-Curve segments starting from the selected keyframes.";
/* api callbacks */
@@ -1009,11 +1009,11 @@ static int actkeys_handletype_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_handle_type (wmOperatorType *ot)
+void ACTION_OT_handle_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Handle Type";
- ot->idname= "ACT_OT_handle_type";
+ ot->idname= "ACTION_OT_handle_type";
ot->description= "Set type of handle for selected keyframes.";
/* api callbacks */
@@ -1080,11 +1080,11 @@ static int actkeys_keytype_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_keyframe_type (wmOperatorType *ot)
+void ACTION_OT_keyframe_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Type";
- ot->idname= "ACT_OT_keyframe_type";
+ ot->idname= "ACTION_OT_keyframe_type";
ot->description= "Set type of keyframe for the seleced keyframes.";
/* api callbacks */
@@ -1150,11 +1150,11 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_frame_jump (wmOperatorType *ot)
+void ACTION_OT_frame_jump (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Jump to Frame";
- ot->idname= "ACT_OT_frame_jump";
+ ot->idname= "ACTION_OT_frame_jump";
ot->description= "Set the current frame to the average frame of the selected keyframes.";
/* api callbacks */
@@ -1246,11 +1246,11 @@ static int actkeys_snap_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_snap (wmOperatorType *ot)
+void ACTION_OT_snap (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Snap Keys";
- ot->idname= "ACT_OT_snap";
+ ot->idname= "ACTION_OT_snap";
ot->description= "Snap selected keyframes to the times specified.";
/* api callbacks */
@@ -1363,11 +1363,11 @@ static int actkeys_mirror_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_mirror (wmOperatorType *ot)
+void ACTION_OT_mirror (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Mirror Keys";
- ot->idname= "ACT_OT_mirror";
+ ot->idname= "ACTION_OT_mirror";
ot->description= "Flip selected keyframes over the selected mirror line.";
/* api callbacks */
diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c
index 6ec106077f7..d2dbb5fe3b0 100644
--- a/source/blender/editors/space_action/action_header.c
+++ b/source/blender/editors/space_action/action_header.c
@@ -86,7 +86,7 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, sact, &spaceptr);
/* create menu */
- //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACT_OT_properties");
+ //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACTION_OT_properties");
//uiItemS(layout);
@@ -104,13 +104,13 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set");
uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear");
- uiItemO(layout, NULL, 0, "ACT_OT_previewrange_set");
+ uiItemO(layout, NULL, 0, "ACTION_OT_previewrange_set");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "ACT_OT_frame_jump");
+ uiItemO(layout, NULL, 0, "ACTION_OT_frame_jump");
- uiItemO(layout, NULL, 0, "ACT_OT_view_all");
+ uiItemO(layout, NULL, 0, "ACTION_OT_view_all");
if (sa->full)
uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow
@@ -120,21 +120,21 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
static void act_selectmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiItemO(layout, NULL, 0, "ACT_OT_select_all_toggle");
- uiItemBooleanO(layout, "Invert All", 0, "ACT_OT_select_all_toggle", "invert", 1);
+ uiItemO(layout, NULL, 0, "ACTION_OT_select_all_toggle");
+ uiItemBooleanO(layout, "Invert All", 0, "ACTION_OT_select_all_toggle", "invert", 1);
uiItemS(layout);
- uiItemO(layout, NULL, 0, "ACT_OT_select_border");
- uiItemBooleanO(layout, "Border Axis Range", 0, "ACT_OT_select_border", "axis_range", 1);
+ uiItemO(layout, NULL, 0, "ACTION_OT_select_border");
+ uiItemBooleanO(layout, "Border Axis Range", 0, "ACTION_OT_select_border", "axis_range", 1);
uiItemS(layout);
- uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS);
- uiItemEnumO(layout, "Column on Current Frame", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA);
+ uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS);
+ uiItemEnumO(layout, "Column on Current Frame", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA);
- uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
- uiItemEnumO(layout, "Between Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
+ uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
+ uiItemEnumO(layout, "Between Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
}
static void act_channelmenu(bContext *C, uiLayout *layout, void *arg_unused)
@@ -170,34 +170,34 @@ static void act_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unus
static void act_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
uiItemMenuF(layout, "Transform", 0, act_edit_transformmenu, NULL);
- uiItemMenuEnumO(layout, "Snap", 0, "ACT_OT_snap", "type");
- uiItemMenuEnumO(layout, "Mirror", 0, "ACT_OT_mirror", "type");
+ uiItemMenuEnumO(layout, "Snap", 0, "ACTION_OT_snap", "type");
+ uiItemMenuEnumO(layout, "Mirror", 0, "ACTION_OT_mirror", "type");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "ACT_OT_insert_keyframe");
+ uiItemO(layout, NULL, 0, "ACT_OT_keyframe_insert");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "ACT_OT_duplicate");
- uiItemO(layout, NULL, 0, "ACT_OT_delete");
+ uiItemO(layout, NULL, 0, "ACTION_OT_duplicate");
+ uiItemO(layout, NULL, 0, "ACTION_OT_delete");
uiItemS(layout);
- uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACT_OT_keyframe_type", "type");
- uiItemMenuEnumO(layout, "Handle Type", 0, "ACT_OT_handle_type", "type");
- uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACT_OT_interpolation_type", "type");
- uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACT_OT_extrapolation_type", "type");
+ uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACTION_OT_keyframe_type", "type");
+ uiItemMenuEnumO(layout, "Handle Type", 0, "ACTION_OT_handle_type", "type");
+ uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACTION_OT_interpolation_type", "type");
+ uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACTION_OT_extrapolation_type", "type");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "ACT_OT_clean");
- uiItemO(layout, NULL, 0, "ACT_OT_sample");
+ uiItemO(layout, NULL, 0, "ACTION_OT_clean");
+ uiItemO(layout, NULL, 0, "ACTION_OT_sample");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "ACT_OT_copy");
- uiItemO(layout, NULL, 0, "ACT_OT_paste");
+ uiItemO(layout, NULL, 0, "ACTION_OT_copy");
+ uiItemO(layout, NULL, 0, "ACTION_OT_paste");
}
/* ************************ header area region *********************** */
@@ -305,7 +305,7 @@ void action_header_buttons(const bContext *C, ARegion *ar)
RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, saction, &ptr);
layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER, xco, 20+3, 20, 1, U.uistyles.first);
- uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACT_OT_new", NULL, NULL);
+ uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACTION_OT_new", NULL, NULL);
uiBlockLayoutResolve(block, &xco, NULL);
xco += 8;
@@ -331,9 +331,9 @@ void action_header_buttons(const bContext *C, ARegion *ar)
/* COPY PASTE */
uiBlockBeginAlign(block);
- uiDefIconButO(block, BUT, "ACT_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer.");
+ uiDefIconButO(block, BUT, "ACTION_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer.");
xco += XIC;
- uiDefIconButO(block, BUT, "ACT_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels.");
+ uiDefIconButO(block, BUT, "ACTION_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels.");
uiBlockEndAlign(block);
xco += (XIC + 8);
}
diff --git a/source/blender/editors/space_action/action_intern.h b/source/blender/editors/space_action/action_intern.h
index c436475b537..e45b2d05fac 100644
--- a/source/blender/editors/space_action/action_intern.h
+++ b/source/blender/editors/space_action/action_intern.h
@@ -53,10 +53,10 @@ void action_header_buttons(const struct bContext *C, struct ARegion *ar);
/* ***************************************** */
/* action_select.c */
-void ACT_OT_select_all_toggle(struct wmOperatorType *ot);
-void ACT_OT_select_border(struct wmOperatorType *ot);
-void ACT_OT_select_column(struct wmOperatorType *ot);
-void ACT_OT_clickselect(struct wmOperatorType *ot);
+void ACTION_OT_select_all_toggle(struct wmOperatorType *ot);
+void ACTION_OT_select_border(struct wmOperatorType *ot);
+void ACTION_OT_select_column(struct wmOperatorType *ot);
+void ACTION_OT_clickselect(struct wmOperatorType *ot);
/* defines for left-right select tool */
enum {
@@ -77,29 +77,29 @@ enum {
/* ***************************************** */
/* action_edit.c */
-void ACT_OT_previewrange_set(struct wmOperatorType *ot);
-void ACT_OT_view_all(struct wmOperatorType *ot);
+void ACTION_OT_previewrange_set(struct wmOperatorType *ot);
+void ACTION_OT_view_all(struct wmOperatorType *ot);
-void ACT_OT_copy(struct wmOperatorType *ot);
-void ACT_OT_paste(struct wmOperatorType *ot);
+void ACTION_OT_copy(struct wmOperatorType *ot);
+void ACTION_OT_paste(struct wmOperatorType *ot);
-void ACT_OT_insert_keyframe(struct wmOperatorType *ot);
-void ACT_OT_duplicate(struct wmOperatorType *ot);
-void ACT_OT_delete(struct wmOperatorType *ot);
-void ACT_OT_clean(struct wmOperatorType *ot);
-void ACT_OT_sample(struct wmOperatorType *ot);
+void ACT_OT_keyframe_insert(struct wmOperatorType *ot);
+void ACTION_OT_duplicate(struct wmOperatorType *ot);
+void ACTION_OT_delete(struct wmOperatorType *ot);
+void ACTION_OT_clean(struct wmOperatorType *ot);
+void ACTION_OT_sample(struct wmOperatorType *ot);
-void ACT_OT_keyframe_type(struct wmOperatorType *ot);
-void ACT_OT_handle_type(struct wmOperatorType *ot);
-void ACT_OT_interpolation_type(struct wmOperatorType *ot);
-void ACT_OT_extrapolation_type(struct wmOperatorType *ot);
+void ACTION_OT_keyframe_type(struct wmOperatorType *ot);
+void ACTION_OT_handle_type(struct wmOperatorType *ot);
+void ACTION_OT_interpolation_type(struct wmOperatorType *ot);
+void ACTION_OT_extrapolation_type(struct wmOperatorType *ot);
-void ACT_OT_frame_jump(struct wmOperatorType *ot);
+void ACTION_OT_frame_jump(struct wmOperatorType *ot);
-void ACT_OT_snap(struct wmOperatorType *ot);
-void ACT_OT_mirror(struct wmOperatorType *ot);
+void ACTION_OT_snap(struct wmOperatorType *ot);
+void ACTION_OT_mirror(struct wmOperatorType *ot);
-void ACT_OT_new(struct wmOperatorType *ot);
+void ACTION_OT_new(struct wmOperatorType *ot);
/* defines for snap keyframes
* NOTE: keep in sync with eEditKeyframes_Snap (in ED_keyframes_edit.h)
diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c
index ba504fa8a69..b4c9fee8469 100644
--- a/source/blender/editors/space_action/action_ops.c
+++ b/source/blender/editors/space_action/action_ops.c
@@ -63,30 +63,30 @@ void action_operatortypes(void)
{
/* keyframes */
/* selection */
- WM_operatortype_append(ACT_OT_clickselect);
- WM_operatortype_append(ACT_OT_select_all_toggle);
- WM_operatortype_append(ACT_OT_select_border);
- WM_operatortype_append(ACT_OT_select_column);
+ WM_operatortype_append(ACTION_OT_clickselect);
+ WM_operatortype_append(ACTION_OT_select_all_toggle);
+ WM_operatortype_append(ACTION_OT_select_border);
+ WM_operatortype_append(ACTION_OT_select_column);
/* editing */
- WM_operatortype_append(ACT_OT_snap);
- WM_operatortype_append(ACT_OT_mirror);
- WM_operatortype_append(ACT_OT_frame_jump);
- WM_operatortype_append(ACT_OT_handle_type);
- WM_operatortype_append(ACT_OT_interpolation_type);
- WM_operatortype_append(ACT_OT_extrapolation_type);
- WM_operatortype_append(ACT_OT_keyframe_type);
- WM_operatortype_append(ACT_OT_sample);
- WM_operatortype_append(ACT_OT_clean);
- WM_operatortype_append(ACT_OT_delete);
- WM_operatortype_append(ACT_OT_duplicate);
- WM_operatortype_append(ACT_OT_insert_keyframe);
- WM_operatortype_append(ACT_OT_copy);
- WM_operatortype_append(ACT_OT_paste);
- WM_operatortype_append(ACT_OT_new);
-
- WM_operatortype_append(ACT_OT_previewrange_set);
- WM_operatortype_append(ACT_OT_view_all);
+ WM_operatortype_append(ACTION_OT_snap);
+ WM_operatortype_append(ACTION_OT_mirror);
+ WM_operatortype_append(ACTION_OT_frame_jump);
+ WM_operatortype_append(ACTION_OT_handle_type);
+ WM_operatortype_append(ACTION_OT_interpolation_type);
+ WM_operatortype_append(ACTION_OT_extrapolation_type);
+ WM_operatortype_append(ACTION_OT_keyframe_type);
+ WM_operatortype_append(ACTION_OT_sample);
+ WM_operatortype_append(ACTION_OT_clean);
+ WM_operatortype_append(ACTION_OT_delete);
+ WM_operatortype_append(ACTION_OT_duplicate);
+ WM_operatortype_append(ACT_OT_keyframe_insert);
+ WM_operatortype_append(ACTION_OT_copy);
+ WM_operatortype_append(ACTION_OT_paste);
+ WM_operatortype_append(ACTION_OT_new);
+
+ WM_operatortype_append(ACTION_OT_previewrange_set);
+ WM_operatortype_append(ACTION_OT_view_all);
}
/* ************************** registration - keymaps **********************************/
@@ -97,69 +97,69 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap)
/* action_select.c - selection tools */
/* click-select */
- WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0);
RNA_boolean_set(kmi->ptr, "column", 1);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
RNA_boolean_set(kmi->ptr, "extend", 1);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0);
RNA_boolean_set(kmi->ptr, "extend", 1);
RNA_boolean_set(kmi->ptr, "column", 1);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "left_right", ACTKEYS_LRSEL_TEST);
/* deselect all */
- WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1);
+ WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1);
/* borderselect */
- WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, 0, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1);
+ WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, 0, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1);
/* column select */
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS);
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA);
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
/* action_edit.c */
/* snap - current frame to selected keys */
// TODO: maybe since this is called jump, we're better to have it on <something>-J?
- WM_keymap_add_item(keymap, "ACT_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
/* menu + single-step transform */
- WM_keymap_add_item(keymap, "ACT_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0);
/* menu + set setting */
- WM_keymap_add_item(keymap, "ACT_OT_handle_type", HKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_keyframe_type", RKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_handle_type", HKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_keyframe_type", RKEY, KM_PRESS, 0, 0);
/* destructive */
- WM_keymap_add_item(keymap, "ACT_OT_clean", OKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_clean", OKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_delete", XKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_delete", DELKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_delete", XKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_delete", DELKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACT_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0);
/* copy/paste */
- WM_keymap_add_item(keymap, "ACT_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "ACT_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
/* auto-set range */
- WM_keymap_add_item(keymap, "ACT_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
/* transform system */
transform_keymap_for_space(keyconf, keymap, SPACE_ACTION);
/* test */
- /* WM_keymap_add_item(keymap, "ACT_OT_test", QKEY, KM_PRESS, 0, 0); */
+ /* WM_keymap_add_item(keymap, "ACTION_OT_test", QKEY, KM_PRESS, 0, 0); */
}
/* --------------- */
diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c
index cc8688031b0..8eeed6da100 100644
--- a/source/blender/editors/space_action/action_select.c
+++ b/source/blender/editors/space_action/action_select.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dlrbTree.h"
#include "DNA_anim_types.h"
@@ -181,11 +181,11 @@ static int actkeys_deselectall_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_select_all_toggle (wmOperatorType *ot)
+void ACTION_OT_select_all_toggle (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select All";
- ot->idname= "ACT_OT_select_all_toggle";
+ ot->idname= "ACTION_OT_select_all_toggle";
ot->description= "Toggle selection of all keyframes.";
/* api callbacks */
@@ -342,11 +342,11 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_select_border(wmOperatorType *ot)
+void ACTION_OT_select_border(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Border Select";
- ot->idname= "ACT_OT_select_border";
+ ot->idname= "ACTION_OT_select_border";
ot->description= "Select all keyframes within the specified region.";
/* api callbacks */
@@ -556,11 +556,11 @@ static int actkeys_columnselect_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_select_column (wmOperatorType *ot)
+void ACTION_OT_select_column (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select All";
- ot->idname= "ACT_OT_select_column";
+ ot->idname= "ACTION_OT_select_column";
ot->description= "Select all keyframes on the specified frame(s).";
/* api callbacks */
@@ -979,11 +979,11 @@ static int actkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even
return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
}
-void ACT_OT_clickselect (wmOperatorType *ot)
+void ACTION_OT_clickselect (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Mouse Select Keys";
- ot->idname= "ACT_OT_clickselect";
+ ot->idname= "ACTION_OT_clickselect";
ot->description= "Select keyframes by clicking on them.";
/* api callbacks - absolutely no exec() this yet... */
diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c
index 07de15a26b4..d4f8fcfb449 100644
--- a/source/blender/editors/space_action/space_action.c
+++ b/source/blender/editors/space_action/space_action.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -341,6 +341,13 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
+ case NC_NODE:
+ switch(wmn->action) {
+ case NA_EDITED:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -437,7 +444,7 @@ void ED_spacetype_action(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype action region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= action_header_area_init;
art->draw= action_header_area_draw;
diff --git a/source/blender/editors/space_api/space.c b/source/blender/editors/space_api/space.c
index 3112cfffb22..5318eb33b1f 100644
--- a/source/blender/editors/space_api/space.c
+++ b/source/blender/editors/space_api/space.c
@@ -32,7 +32,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_screen.h"
diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c
index da92e450ed5..8cf56ae3eda 100644
--- a/source/blender/editors/space_api/spacetypes.c
+++ b/source/blender/editors/space_api/spacetypes.c
@@ -45,6 +45,7 @@
#include "ED_gpencil.h"
#include "ED_markers.h"
#include "ED_mesh.h"
+#include "ED_node.h"
#include "ED_object.h"
#include "ED_physics.h"
#include "ED_render.h"
@@ -111,6 +112,7 @@ void ED_spacetypes_init(void)
* maybe we'll need to have them go after python operators too? */
ED_operatormacros_armature();
ED_operatormacros_mesh();
+ ED_operatormacros_node();
ED_operatormacros_object();
}
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 71d5b59f253..0e2769a3557 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -707,8 +707,11 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
set_pointer_type(path, result, &RNA_Brush);
return 1;
}
+ else {
+ return 0; /* not found */
+ }
- return 0;
+ return -1; /* found but not available */
}
/************************* Drawing the Path ************************/
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index f05c652c39d..9fc24516d2d 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -38,7 +38,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -308,6 +308,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
if(wmn->data == ND_SPACE_PROPERTIES)
ED_area_tag_redraw(sa);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_area_tag_redraw(sa);
+ break;
}
if(wmn->data == ND_KEYS)
@@ -345,7 +349,7 @@ void ED_spacetype_buttons(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= BUTS_HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= buttons_header_area_init;
art->draw= buttons_header_area_draw;
diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c
index c6565eb6ecc..4d2f816ba6b 100644
--- a/source/blender/editors/space_console/space_console.c
+++ b/source/blender/editors/space_console/space_console.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
@@ -356,7 +356,7 @@ void ED_spacetype_console(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype console region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= console_header_area_init;
art->draw= console_header_area_draw;
diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h
index d07ffd4b964..fa99dc6e1ee 100644
--- a/source/blender/editors/space_file/file_intern.h
+++ b/source/blender/editors/space_file/file_intern.h
@@ -55,7 +55,7 @@ void FILE_OT_select(struct wmOperatorType *ot);
void FILE_OT_select_all_toggle(struct wmOperatorType *ot);
void FILE_OT_select_border(struct wmOperatorType *ot);
void FILE_OT_select_bookmark(struct wmOperatorType *ot);
-void FILE_OT_add_bookmark(struct wmOperatorType *ot);
+void FILE_OT_bookmark_add(struct wmOperatorType *ot);
void FILE_OT_delete_bookmark(struct wmOperatorType *ot);
void FILE_OT_hidedot(struct wmOperatorType *ot);
void FILE_OT_loadimages(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 97d4e8019fe..2d4185e871a 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -124,7 +124,7 @@ static void clamp_to_filelist(int numfiles, int *first_file, int *last_file)
}
}
-static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short selecting)
+static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short selecting, short toggle_one)
{
int first_file = -1;
int last_file = -1;
@@ -146,7 +146,14 @@ static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, s
if ( (first_file >= 0) && (first_file < numfiles) && (last_file >= 0) && (last_file < numfiles) ) {
for (act_file = first_file; act_file <= last_file; act_file++) {
struct direntry* file = filelist_file(sfile->files, act_file);
- if (selecting)
+
+ if (toggle_one) {
+ if (file->flags & ACTIVE) {
+ file->flags &= ~ACTIVE;
+ selecting=0;
+ } else
+ file->flags |= ACTIVE;
+ } else if (selecting)
file->flags |= ACTIVE;
else
file->flags &= ~ACTIVE;
@@ -208,7 +215,7 @@ static int file_border_select_exec(bContext *C, wmOperator *op)
BLI_isect_rcti(&(ar->v2d.mask), &rect, &rect);
- if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, selecting)) {
+ if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, selecting, 0)) {
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
} else {
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
@@ -239,6 +246,7 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
SpaceFile *sfile= CTX_wm_space_file(C);
short val;
rcti rect;
+ int extend = RNA_boolean_get(op->ptr, "extend");
if(ar->regiontype != RGN_TYPE_WINDOW)
return OPERATOR_CANCELLED;
@@ -251,9 +259,9 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_CANCELLED;
/* single select, deselect all selected first */
- file_deselect_all(sfile);
+ if (!extend) file_deselect_all(sfile);
- if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, val==LEFTMOUSE )) //LEFTMOUSE XXX, fixme
+ if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, 1, extend ))
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
else
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
@@ -273,13 +281,13 @@ void FILE_OT_select(wmOperatorType *ot)
/* api callbacks */
ot->invoke= file_select_invoke;
+ ot->poll= ED_operator_file_active;
/* rna */
-
- ot->poll= ED_operator_file_active;
+ RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first.");
}
-static int file_select_all_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int file_select_all_exec(bContext *C, wmOperator *op)
{
ScrArea *sa= CTX_wm_area(C);
SpaceFile *sfile= CTX_wm_space_file(C);
@@ -317,7 +325,7 @@ void FILE_OT_select_all_toggle(wmOperatorType *ot)
ot->idname= "FILE_OT_select_all_toggle";
/* api callbacks */
- ot->invoke= file_select_all_invoke;
+ ot->exec= file_select_all_exec;
/* rna */
@@ -326,7 +334,7 @@ void FILE_OT_select_all_toggle(wmOperatorType *ot)
/* ---------- BOOKMARKS ----------- */
-static int bookmark_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int bookmark_select_exec(bContext *C, wmOperator *op)
{
SpaceFile *sfile= CTX_wm_space_file(C);
@@ -353,13 +361,13 @@ void FILE_OT_select_bookmark(wmOperatorType *ot)
ot->idname= "FILE_OT_select_bookmark";
/* api callbacks */
- ot->invoke= bookmark_select_invoke;
+ ot->exec= bookmark_select_exec;
ot->poll= ED_operator_file_active;
RNA_def_string(ot->srna, "dir", "", 256, "Dir", "");
}
-static int bookmark_add_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int bookmark_add_exec(bContext *C, wmOperator *op)
{
ScrArea *sa= CTX_wm_area(C);
SpaceFile *sfile= CTX_wm_space_file(C);
@@ -378,19 +386,19 @@ static int bookmark_add_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_FINISHED;
}
-void FILE_OT_add_bookmark(wmOperatorType *ot)
+void FILE_OT_bookmark_add(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Bookmark";
ot->description= "Add a bookmark for the selected/active directory.";
- ot->idname= "FILE_OT_add_bookmark";
+ ot->idname= "FILE_OT_bookmark_add";
/* api callbacks */
- ot->invoke= bookmark_add_invoke;
+ ot->exec= bookmark_add_exec;
ot->poll= ED_operator_file_active;
}
-static int bookmark_delete_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int bookmark_delete_exec(bContext *C, wmOperator *op)
{
ScrArea *sa= CTX_wm_area(C);
struct FSMenu* fsmenu = fsmenu_get();
@@ -419,14 +427,14 @@ void FILE_OT_delete_bookmark(wmOperatorType *ot)
ot->idname= "FILE_OT_delete_bookmark";
/* api callbacks */
- ot->invoke= bookmark_delete_invoke;
+ ot->exec= bookmark_delete_exec;
ot->poll= ED_operator_file_active;
RNA_def_int(ot->srna, "index", -1, -1, 20000, "Index", "", -1, 20000);
}
-static int loadimages_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int loadimages_exec(bContext *C, wmOperator *op)
{
ScrArea *sa= CTX_wm_area(C);
SpaceFile *sfile= CTX_wm_space_file(C);
@@ -449,7 +457,7 @@ void FILE_OT_loadimages(wmOperatorType *ot)
ot->idname= "FILE_OT_loadimages";
/* api callbacks */
- ot->invoke= loadimages_invoke;
+ ot->exec= loadimages_exec;
ot->poll= ED_operator_file_active;
}
diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c
index afdb0d24917..fb52a36cdcf 100644
--- a/source/blender/editors/space_file/file_panels.c
+++ b/source/blender/editors/space_file/file_panels.c
@@ -138,7 +138,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa)
if(sfile) {
row= uiLayoutRow(pa->layout, 0);
- uiItemO(row, "Add", ICON_ZOOMIN, "file.add_bookmark");
+ uiItemO(row, "Add", ICON_ZOOMIN, "file.bookmark_add");
uiItemL(row, NULL, 0);
file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0);
@@ -175,7 +175,7 @@ static void file_panel_operator(const bContext *C, Panel *pa)
int empty= 1, flag;
if(op->type->ui) {
- op->type->ui((bContext*)C, op->ptr, pa->layout);
+ op->type->ui((bContext*)C, op, pa->layout);
}
else {
RNA_STRUCT_BEGIN(op->ptr, prop) {
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 94d90929d80..640f365b073 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -911,7 +911,17 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime)
|| BLI_testextensie(file->relname, ".movie")
|| BLI_testextensie(file->relname, ".mp4")
|| BLI_testextensie(file->relname, ".m4v")
- || BLI_testextensie(file->relname, ".mv")) {
+ || BLI_testextensie(file->relname, ".mv")
+ || BLI_testextensie(file->relname, ".wmv")
+ || BLI_testextensie(file->relname, ".ogv")
+ || BLI_testextensie(file->relname, ".mpeg")
+ || BLI_testextensie(file->relname, ".mpg")
+ || BLI_testextensie(file->relname, ".mpg2")
+ || BLI_testextensie(file->relname, ".vob")
+ || BLI_testextensie(file->relname, ".mkv")
+ || BLI_testextensie(file->relname, ".flv")
+ || BLI_testextensie(file->relname, ".divx")
+ || BLI_testextensie(file->relname, ".xvid")) {
file->flags |= MOVIEFILE;
}
else if(BLI_testextensie(file->relname, ".wav")
@@ -954,8 +964,22 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime)
file->flags |= IMAGEFILE;
}
else if(BLI_testextensie(file->relname, ".avi")
+ || BLI_testextensie(file->relname, ".flc")
+ || BLI_testextensie(file->relname, ".mov")
+ || BLI_testextensie(file->relname, ".movie")
|| BLI_testextensie(file->relname, ".mp4")
- || BLI_testextensie(file->relname, ".mv")) {
+ || BLI_testextensie(file->relname, ".m4v")
+ || BLI_testextensie(file->relname, ".mv")
+ || BLI_testextensie(file->relname, ".wmv")
+ || BLI_testextensie(file->relname, ".ogv")
+ || BLI_testextensie(file->relname, ".mpeg")
+ || BLI_testextensie(file->relname, ".mpg")
+ || BLI_testextensie(file->relname, ".mpg2")
+ || BLI_testextensie(file->relname, ".vob")
+ || BLI_testextensie(file->relname, ".mkv")
+ || BLI_testextensie(file->relname, ".flv")
+ || BLI_testextensie(file->relname, ".divx")
+ || BLI_testextensie(file->relname, ".xvid")) {
file->flags |= MOVIEFILE;
}
else if(BLI_testextensie(file->relname, ".wav")
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index cc0c1ca33aa..d681a58b276 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -124,7 +124,7 @@ short ED_fileselect_set_params(SpaceFile *sfile)
if (op) {
BLI_strncpy(params->title, op->type->name, sizeof(params->title));
- if(RNA_struct_find_property(op->ptr, "filename"))
+ if(RNA_struct_find_property(op->ptr, "filemode"))
params->type = RNA_int_get(op->ptr, "filemode");
else
params->type = FILE_SPECIAL;
@@ -164,7 +164,12 @@ short ED_fileselect_set_params(SpaceFile *sfile)
if (params->filter != 0)
params->flag |= FILE_FILTER;
- params->flag |= FILE_HIDE_DOT;
+ if (U.uiflag & USER_HIDE_DOT) {
+ params->flag |= FILE_HIDE_DOT;
+ } else {
+ params->flag &= ~FILE_HIDE_DOT;
+ }
+
if (params->type == FILE_LOADLIB) {
params->flag |= RNA_boolean_get(op->ptr, "link") ? FILE_LINK : 0;
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 91d917acfe7..8bbdbbeb4fb 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -43,7 +43,7 @@
#include "BLO_readfile.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_storage_types.h"
@@ -156,7 +156,7 @@ static void file_free(SpaceLink *sl)
static void file_init(struct wmWindowManager *wm, ScrArea *sa)
{
SpaceFile *sfile= (SpaceFile*)sa->spacedata.first;
- printf("file_init\n");
+ //printf("file_init\n");
if(sfile->layout) sfile->layout->dirty= 1;
}
@@ -354,7 +354,7 @@ void file_operatortypes(void)
WM_operatortype_append(FILE_OT_next);
WM_operatortype_append(FILE_OT_refresh);
WM_operatortype_append(FILE_OT_bookmark_toggle);
- WM_operatortype_append(FILE_OT_add_bookmark);
+ WM_operatortype_append(FILE_OT_bookmark_add);
WM_operatortype_append(FILE_OT_delete_bookmark);
WM_operatortype_append(FILE_OT_hidedot);
WM_operatortype_append(FILE_OT_filenum);
@@ -371,7 +371,7 @@ void file_keymap(struct wmKeyConfig *keyconf)
wmKeyMap *keymap= WM_keymap_find(keyconf, "File", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_bookmark_add", BKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_previous", BACKSPACEKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_next", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0);
@@ -382,10 +382,13 @@ void file_keymap(struct wmKeyConfig *keyconf)
/* keys for main area */
keymap= WM_keymap_find(keyconf, "FileMain", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(kmi->ptr, "extend", 1);
WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_select_border", EVT_TWEAK_L, KM_ANY, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_rename", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, KM_ANY, 0);
WM_keymap_add_item(keymap, "FILE_OT_loadimages", TIMER1, KM_ANY, KM_ANY, 0);
kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
RNA_int_set(kmi->ptr, "increment", 1);
@@ -528,7 +531,7 @@ void ED_spacetype_file(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype file region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= file_header_area_init;
art->draw= file_header_area_draw;
// art->listener= file_header_area_listener;
diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c
index a4c98ecbf8e..05987087288 100644
--- a/source/blender/editors/space_graph/graph_buttons.c
+++ b/source/blender/editors/space_graph/graph_buttons.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -195,6 +195,12 @@ static void graph_panel_properties(const bContext *C, Panel *pa)
icon= getname_anim_fcurve(name, ale->id, fcu);
uiItemL(col, name, icon);
+ /* RNA-Path Editing - only really should be enabled when things aren't working */
+ col= uiLayoutColumn(layout, 1);
+ uiLayoutSetEnabled(col, (fcu->flag & FCURVE_DISABLED));
+ uiItemR(col, "", ICON_RNA, &fcu_ptr, "rna_path", 0);
+ uiItemR(col, NULL, 0, &fcu_ptr, "array_index", 0);
+
/* color settings */
col= uiLayoutColumn(layout, 1);
uiItemL(col, "Display Color:", 0);
@@ -229,13 +235,13 @@ static void do_graph_region_driver_buttons(bContext *C, void *arg, int event)
DAG_scene_sort(scene);
/* force an update of depsgraph */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
}
break;
}
/* default for now */
- WM_event_add_notifier(C, NC_SCENE, scene); // XXX does this always work?
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); // XXX could use better notifier
}
/* callback to remove the active driver */
@@ -279,6 +285,7 @@ static void driver_update_flags_cb (bContext *C, void *fcu_v, void *dummy_v)
ChannelDriver *driver= fcu->driver;
/* clear invalid flags */
+ fcu->flag &= ~FCURVE_DISABLED; // XXX?
driver->flag &= ~DRIVER_FLAG_INVALID;
}
@@ -323,7 +330,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
uiButSetFunc(but, driver_update_flags_cb, fcu, NULL);
but= uiDefBut(block, BUT, B_IPO_DEPCHANGE, "Remove Driver", 0, 0, 10*UI_UNIT_X, 18, NULL, 0.0, 0.0, 0, 0, "Remove this driver");
- uiButSetFunc(but, driver_remove_cb, ale, NULL);
+ uiButSetNFunc(but, driver_remove_cb, MEM_dupallocN(ale), NULL);
/* driver-level settings - type, expressions, and errors */
RNA_pointer_create(ale->id, &RNA_Driver, driver, &driver_ptr);
@@ -335,7 +342,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
/* show expression box if doing scripted drivers, and/or error messages when invalid drivers exist */
if (driver->type == DRIVER_TYPE_PYTHON) {
/* expression */
- uiItemR(col, "Expr:", 0, &driver_ptr, "expression", 0);
+ uiItemR(col, "Expr", 0, &driver_ptr, "expression", 0);
/* errors? */
if (driver->flag & DRIVER_FLAG_INVALID)
@@ -370,13 +377,13 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
uiItemR(row, "", 0, &dtar_ptr, "name", 0);
/* remove button */
- but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable.");
+ but= uiDefIconBut(block, BUT, B_IPO_DEPCHANGE, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable.");
uiButSetFunc(but, driver_delete_var_cb, driver, dtar);
/* Target ID */
row= uiLayoutRow(box, 0);
- uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value: ");
+ uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value:");
/* Target Property */
// TODO: make this less technical...
@@ -393,7 +400,9 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
/* array index */
// TODO: this needs selector which limits it to ok values
- uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0);
+ // NOTE: for for now, the array index box still gets shown when non-zero (i.e. for tweaking rigs as necessary)
+ if (dtar->array_index)
+ uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0);
}
}
@@ -443,7 +452,7 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa)
for (fcm= fcu->modifiers.first; fcm; fcm= fcm->next) {
col= uiLayoutColumn(pa->layout, 1);
- ANIM_uiTemplate_fmodifier_draw(col, ale->id, &fcu->modifiers, fcm);
+ ANIM_uiTemplate_fmodifier_draw(C, col, ale->id, &fcu->modifiers, fcm);
}
MEM_freeN(ale);
diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c
index 40b7c071141..3a7f9024510 100644
--- a/source/blender/editors/space_graph/graph_draw.c
+++ b/source/blender/editors/space_graph/graph_draw.c
@@ -42,7 +42,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -818,7 +818,7 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGri
/* protected curves (non editable) are drawn with dotted lines */
setlinestyle(2);
}
- if (fcu->flag & FCURVE_MUTED) {
+ if ( ((fcu->grp) && (fcu->grp->flag & AGRP_MUTED)) || (fcu->flag & FCURVE_MUTED) ) {
/* muted curves are drawn in a greyish hue */
// XXX should we have some variations?
UI_ThemeColorShade(TH_HEADER, 50);
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index b467d7b4ca0..381d5becb1e 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -481,11 +481,11 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void GRAPH_OT_insert_keyframe (wmOperatorType *ot)
+void GRAPH_OT_keyframe_insert (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframes";
- ot->idname= "GRAPH_OT_insert_keyframe";
+ ot->idname= "GRAPH_OT_keyframe_insert";
ot->description= "Insert keyframes for the specified channels.";
/* api callbacks */
diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c
index 63c95b18e2d..e05e41f1b66 100644
--- a/source/blender/editors/space_graph/graph_header.c
+++ b/source/blender/editors/space_graph/graph_header.c
@@ -154,9 +154,10 @@ static void graph_channelmenu(bContext *C, uiLayout *layout, void *arg_unused)
static void graph_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TIME_TRANSLATE);
+ uiItemO(layout, "Grab/Move", 0, "TFM_OT_translate");
uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND);
- uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE);
+ uiItemO(layout, "Rotate", 0, "TFM_OT_rotate");
+ uiItemO(layout, "Scale", 0, "TFM_OT_resize");
}
static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
@@ -167,7 +168,7 @@ static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemS(layout);
- uiItemO(layout, NULL, 0, "GRAPH_OT_insert_keyframe");
+ uiItemO(layout, NULL, 0, "GRAPH_OT_keyframe_insert");
uiItemO(layout, NULL, 0, "GRAPH_OT_fmodifier_add");
uiItemS(layout);
diff --git a/source/blender/editors/space_graph/graph_intern.h b/source/blender/editors/space_graph/graph_intern.h
index 1e0f66751f0..87e03247353 100644
--- a/source/blender/editors/space_graph/graph_intern.h
+++ b/source/blender/editors/space_graph/graph_intern.h
@@ -90,7 +90,7 @@ void GRAPH_OT_previewrange_set(struct wmOperatorType *ot);
void GRAPH_OT_view_all(struct wmOperatorType *ot);
void GRAPH_OT_click_insert(struct wmOperatorType *ot);
-void GRAPH_OT_insert_keyframe(struct wmOperatorType *ot);
+void GRAPH_OT_keyframe_insert(struct wmOperatorType *ot);
void GRAPH_OT_copy(struct wmOperatorType *ot);
void GRAPH_OT_paste(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c
index 1780942a123..cddb1965964 100644
--- a/source/blender/editors/space_graph/graph_ops.c
+++ b/source/blender/editors/space_graph/graph_ops.c
@@ -255,7 +255,7 @@ void graphedit_operatortypes(void)
WM_operatortype_append(GRAPH_OT_copy);
WM_operatortype_append(GRAPH_OT_paste);
- WM_operatortype_append(GRAPH_OT_insert_keyframe);
+ WM_operatortype_append(GRAPH_OT_keyframe_insert);
WM_operatortype_append(GRAPH_OT_click_insert);
/* F-Curve Modifiers */
@@ -337,7 +337,7 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap)
WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
/* insertkey */
- WM_keymap_add_item(keymap, "GRAPH_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "GRAPH_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "GRAPH_OT_click_insert", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
/* copy/paste */
diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c
index 09fde389f6f..8d2e2921b7f 100644
--- a/source/blender/editors/space_graph/graph_select.c
+++ b/source/blender/editors/space_graph/graph_select.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
diff --git a/source/blender/editors/space_graph/graph_utils.c b/source/blender/editors/space_graph/graph_utils.c
index ee4e371e1f1..40fe3393a60 100644
--- a/source/blender/editors/space_graph/graph_utils.c
+++ b/source/blender/editors/space_graph/graph_utils.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c
index 342afab7534..24f87906391 100644
--- a/source/blender/editors/space_graph/space_graph.c
+++ b/source/blender/editors/space_graph/space_graph.c
@@ -38,7 +38,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_context.h"
@@ -417,6 +417,13 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
+ case NC_NODE:
+ switch(wmn->action) {
+ case NA_EDITED:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -586,7 +593,7 @@ void ED_spacetype_ipo(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= graph_region_listener;
art->init= graph_header_area_init;
art->draw= graph_header_area_draw;
diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c
index 87b6ec8bb71..a184ea2b2c4 100644
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@ -44,7 +44,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 8d7295e9f20..897b02404ef 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -50,7 +50,7 @@
#include "BKE_report.h"
#include "BKE_screen.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "IMB_imbuf.h"
@@ -234,6 +234,7 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event)
view_pan_exec(C, op);
break;
case MIDDLEMOUSE:
+ case LEFTMOUSE:
if(event->val==KM_RELEASE) {
view_pan_exit(C, op, 0);
return OPERATOR_FINISHED;
@@ -349,6 +350,7 @@ static int view_zoom_modal(bContext *C, wmOperator *op, wmEvent *event)
ED_area_tag_redraw(CTX_wm_area(C));
break;
case MIDDLEMOUSE:
+ case LEFTMOUSE:
if(event->val==KM_RELEASE) {
view_zoom_exit(C, op, 0);
return OPERATOR_FINISHED;
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 36d1573a12c..3bb697ba1f4 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -40,7 +40,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -569,7 +569,7 @@ void ED_spacetype_image(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype image region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= image_header_area_init;
art->draw= image_header_area_draw;
diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c
index 518553c9a7a..ab10e05b204 100644
--- a/source/blender/editors/space_info/space_info.c
+++ b/source/blender/editors/space_info/space_info.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_context.h"
@@ -204,7 +204,7 @@ void ED_spacetype_info(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype info region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= info_header_listener;
art->init= info_header_area_init;
art->draw= info_header_area_draw;
diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c
index c8f96fe3373..e159af65c74 100644
--- a/source/blender/editors/space_logic/logic_buttons.c
+++ b/source/blender/editors/space_logic/logic_buttons.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_global.h"
diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c
index dc8b111821d..8ba0577e3c7 100644
--- a/source/blender/editors/space_logic/logic_window.c
+++ b/source/blender/editors/space_logic/logic_window.c
@@ -637,7 +637,7 @@ static char *sensor_name(int type)
static char *sensor_pup(void)
{
- /* the number needs to match defines in game.h */
+ /* the number needs to match defines in DNA_sensor_types.h */
return "Sensors %t|Always %x0|Delay %x13|Keyboard %x3|Mouse %x5|"
"Touch %x1|Collision %x6|Near %x2|Radar %x7|"
"Property %x4|Random %x8|Ray %x9|Message %x10|Joystick %x11|Actuator %x12|Armature %x14";
@@ -3396,9 +3396,9 @@ void logic_buttons(bContext *C, ARegion *ar)
//uiButSetFunc(but, sca_move_controller, cont, NULL);
uiBlockBeginAlign(block);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
uiButSetFunc(but, sca_move_controller, cont, (void *)TRUE);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
uiButSetFunc(but, sca_move_controller, cont, (void *)FALSE);
uiBlockEndAlign(block);
@@ -3488,9 +3488,9 @@ void logic_buttons(bContext *C, ARegion *ar)
//uiButSetFunc(but, sca_move_sensor, sens, NULL);
uiBlockBeginAlign(block);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
uiButSetFunc(but, sca_move_sensor, sens, (void *)TRUE);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
uiButSetFunc(but, sca_move_sensor, sens, (void *)FALSE);
uiBlockEndAlign(block);
}
@@ -3568,9 +3568,9 @@ void logic_buttons(bContext *C, ARegion *ar)
// uiButSetFunc(but, sca_move_actuator, act, NULL);
uiBlockBeginAlign(block);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
uiButSetFunc(but, sca_move_actuator, act, (void *)TRUE);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
uiButSetFunc(but, sca_move_actuator, act, (void *)FALSE);
uiBlockEndAlign(block);
diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c
index 836ac4c6659..f9fdbb92db9 100644
--- a/source/blender/editors/space_logic/space_logic.c
+++ b/source/blender/editors/space_logic/space_logic.c
@@ -40,7 +40,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_screen.h"
@@ -364,7 +364,7 @@ void ED_spacetype_logic(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype logic region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= logic_header_area_init;
art->draw= logic_header_area_draw;
diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c
index b193b89d65a..e8eca9de281 100644
--- a/source/blender/editors/space_nla/nla_buttons.c
+++ b/source/blender/editors/space_nla/nla_buttons.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -155,6 +155,7 @@ static int nla_panel_context(const bContext *C, PointerRNA *adt_ptr, PointerRNA
case ANIMTYPE_DSCUR:
case ANIMTYPE_DSSKEY:
case ANIMTYPE_DSWOR:
+ case ANIMTYPE_DSNTREE:
case ANIMTYPE_DSPART:
case ANIMTYPE_DSMBALL:
case ANIMTYPE_DSARM:
@@ -246,7 +247,7 @@ static void nla_panel_animdata (const bContext *C, Panel *pa)
/* Active Action Properties ------------------------------------- */
/* action */
row= uiLayoutRow(layout, 1);
- uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACT_OT_new", NULL, NULL /*"ACT_OT_unlink"*/); // XXX: need to make these operators
+ uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/); // XXX: need to make these operators
/* extrapolation */
row= uiLayoutRow(layout, 1);
@@ -433,7 +434,7 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa)
for (fcm= strip->modifiers.first; fcm; fcm= fcm->next) {
col= uiLayoutColumn(pa->layout, 1);
- ANIM_uiTemplate_fmodifier_draw(col, strip_ptr.id.data, &strip->modifiers, fcm);
+ ANIM_uiTemplate_fmodifier_draw(C, col, strip_ptr.id.data, &strip->modifiers, fcm);
}
}
diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c
index 07dc3f0ad89..5f9d6b03efc 100644
--- a/source/blender/editors/space_nla/nla_channels.c
+++ b/source/blender/editors/space_nla/nla_channels.c
@@ -53,7 +53,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_animsys.h"
@@ -189,6 +189,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho
case ANIMTYPE_DSCUR:
case ANIMTYPE_DSSKEY:
case ANIMTYPE_DSWOR:
+ case ANIMTYPE_DSNTREE:
case ANIMTYPE_DSPART:
case ANIMTYPE_DSMBALL:
case ANIMTYPE_DSARM:
@@ -428,11 +429,11 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_add_tracks (wmOperatorType *ot)
+void NLA_OT_tracks_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Track(s)";
- ot->idname= "NLA_OT_add_tracks";
+ ot->idname= "NLA_OT_tracks_add";
ot->description= "Add NLA-Tracks above/after the selected tracks.";
/* api callbacks */
diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c
index b21f37ab678..c32058545fb 100644
--- a/source/blender/editors/space_nla/nla_draw.c
+++ b/source/blender/editors/space_nla/nla_draw.c
@@ -56,7 +56,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_dlrbTree.h"
diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c
index e53ccd004db..0ae3a347872 100644
--- a/source/blender/editors/space_nla/nla_edit.c
+++ b/source/blender/editors/space_nla/nla_edit.c
@@ -42,7 +42,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_animsys.h"
@@ -259,7 +259,7 @@ static int nlaedit_add_actionclip_invoke (bContext *C, wmOperator *op, wmEvent *
/* loop through Actions in Main database, adding as items in the menu */
for (act= m->action.first; act; act= act->id.next)
- uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_add_actionclip", "action", act->id.name);
+ uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_actionclip_add", "action", act->id.name);
uiItemS(layout);
uiPupMenuEnd(C, pup);
@@ -347,11 +347,11 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_add_actionclip (wmOperatorType *ot)
+void NLA_OT_actionclip_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Action Strip";
- ot->idname= "NLA_OT_add_actionclip";
+ ot->idname= "NLA_OT_actionclip_add";
ot->description= "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track.";
/* api callbacks */
@@ -467,11 +467,11 @@ static int nlaedit_add_transition_exec (bContext *C, wmOperator *op)
}
}
-void NLA_OT_add_transition (wmOperatorType *ot)
+void NLA_OT_transition_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Transition";
- ot->idname= "NLA_OT_add_transition";
+ ot->idname= "NLA_OT_transition_add";
ot->description= "Add a transition strip between two adjacent selected strips.";
/* api callbacks */
@@ -529,11 +529,11 @@ static int nlaedit_add_meta_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_add_meta (wmOperatorType *ot)
+void NLA_OT_meta_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Meta-Strips";
- ot->idname= "NLA_OT_add_meta";
+ ot->idname= "NLA_OT_meta_add";
ot->description= "Add new meta-strips incorporating the selected strips.";
/* api callbacks */
@@ -581,11 +581,11 @@ static int nlaedit_remove_meta_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_remove_meta (wmOperatorType *ot)
+void NLA_OT_meta_remove (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove Meta-Strips";
- ot->idname= "NLA_OT_remove_meta";
+ ot->idname= "NLA_OT_meta_remove";
ot->description= "Separate out the strips held by the selected meta-strips.";
/* api callbacks */
diff --git a/source/blender/editors/space_nla/nla_header.c b/source/blender/editors/space_nla/nla_header.c
index a2524a1b2dc..2624e7a9255 100644
--- a/source/blender/editors/space_nla/nla_header.c
+++ b/source/blender/editors/space_nla/nla_header.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_animsys.h"
@@ -177,18 +177,18 @@ static void nla_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
static void nla_addmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiItemO(layout, NULL, 0, "NLA_OT_add_actionclip");
- uiItemO(layout, NULL, 0, "NLA_OT_add_transition");
+ uiItemO(layout, NULL, 0, "NLA_OT_actionclip_add");
+ uiItemO(layout, NULL, 0, "NLA_OT_transition_add");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "NLA_OT_add_meta");
- uiItemO(layout, NULL, 0, "NLA_OT_remove_meta");
+ uiItemO(layout, NULL, 0, "NLA_OT_meta_add");
+ uiItemO(layout, NULL, 0, "NLA_OT_meta_remove");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "NLA_OT_add_tracks");
- uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_add_tracks", "above_selected", 1);
+ uiItemO(layout, NULL, 0, "NLA_OT_tracks_add");
+ uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_tracks_add", "above_selected", 1);
}
/* ------------------ */
diff --git a/source/blender/editors/space_nla/nla_intern.h b/source/blender/editors/space_nla/nla_intern.h
index 91c1decc576..ca50452b442 100644
--- a/source/blender/editors/space_nla/nla_intern.h
+++ b/source/blender/editors/space_nla/nla_intern.h
@@ -88,11 +88,11 @@ void NLA_OT_tweakmode_exit(wmOperatorType *ot);
/* --- */
-void NLA_OT_add_actionclip(wmOperatorType *ot);
-void NLA_OT_add_transition(wmOperatorType *ot);
+void NLA_OT_actionclip_add(wmOperatorType *ot);
+void NLA_OT_transition_add(wmOperatorType *ot);
-void NLA_OT_add_meta(wmOperatorType *ot);
-void NLA_OT_remove_meta(wmOperatorType *ot);
+void NLA_OT_meta_add(wmOperatorType *ot);
+void NLA_OT_meta_remove(wmOperatorType *ot);
void NLA_OT_duplicate(wmOperatorType *ot);
void NLA_OT_delete(wmOperatorType *ot);
@@ -116,7 +116,7 @@ void NLA_OT_fmodifier_add(wmOperatorType *ot);
void NLA_OT_channels_click(wmOperatorType *ot);
-void NLA_OT_add_tracks(wmOperatorType *ot);
+void NLA_OT_tracks_add(wmOperatorType *ot);
void NLA_OT_delete_tracks(wmOperatorType *ot);
/* **************************************** */
diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c
index 6c940f32c24..8f057c2d751 100644
--- a/source/blender/editors/space_nla/nla_ops.c
+++ b/source/blender/editors/space_nla/nla_ops.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_animsys.h"
@@ -130,7 +130,7 @@ void nla_operatortypes(void)
/* channels */
WM_operatortype_append(NLA_OT_channels_click);
- WM_operatortype_append(NLA_OT_add_tracks);
+ WM_operatortype_append(NLA_OT_tracks_add);
WM_operatortype_append(NLA_OT_delete_tracks);
/* select */
@@ -142,11 +142,11 @@ void nla_operatortypes(void)
WM_operatortype_append(NLA_OT_tweakmode_enter);
WM_operatortype_append(NLA_OT_tweakmode_exit);
- WM_operatortype_append(NLA_OT_add_actionclip);
- WM_operatortype_append(NLA_OT_add_transition);
+ WM_operatortype_append(NLA_OT_actionclip_add);
+ WM_operatortype_append(NLA_OT_transition_add);
- WM_operatortype_append(NLA_OT_add_meta);
- WM_operatortype_append(NLA_OT_remove_meta);
+ WM_operatortype_append(NLA_OT_meta_add);
+ WM_operatortype_append(NLA_OT_meta_remove);
WM_operatortype_append(NLA_OT_duplicate);
WM_operatortype_append(NLA_OT_delete);
@@ -178,8 +178,8 @@ static void nla_keymap_channels (wmKeyConfig *keyconf, wmKeyMap *keymap)
/* channel operations */
/* add tracks */
- WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1);
+ WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1);
/* delete tracks */
WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", XKEY, KM_PRESS, 0, 0);
@@ -240,12 +240,12 @@ static void nla_keymap_main (wmKeyConfig *keyconf, wmKeyMap *keymap)
WM_keymap_add_item(keymap, "NLA_OT_tweakmode_exit", TABKEY, KM_PRESS, 0, 0);
/* add strips */
- WM_keymap_add_item(keymap, "NLA_OT_add_actionclip", AKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "NLA_OT_add_transition", TKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_actionclip_add", AKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_transition_add", TKEY, KM_PRESS, KM_SHIFT, 0);
/* meta-strips */
- WM_keymap_add_item(keymap, "NLA_OT_add_meta", GKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "NLA_OT_remove_meta", GKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_meta_add", GKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_meta_remove", GKEY, KM_PRESS, KM_ALT, 0);
/* duplicate */
WM_keymap_add_item(keymap, "NLA_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
diff --git a/source/blender/editors/space_nla/nla_select.c b/source/blender/editors/space_nla/nla_select.c
index 7c8f2aef9d0..801434c4794 100644
--- a/source/blender/editors/space_nla/nla_select.c
+++ b/source/blender/editors/space_nla/nla_select.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_animsys.h"
diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c
index 5f2f75b7b6f..a019e684239 100644
--- a/source/blender/editors/space_nla/space_nla.c
+++ b/source/blender/editors/space_nla/space_nla.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_animsys.h"
@@ -432,6 +432,13 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
+ case NC_NODE:
+ switch(wmn->action) {
+ case NA_EDITED:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -531,7 +538,7 @@ void ED_spacetype_nla(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype nla region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= nla_header_area_init;
art->draw= nla_header_area_draw;
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 110fb709db8..924b4b2563e 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -32,7 +32,7 @@
#include <string.h>
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_ID.h"
#include "DNA_node_types.h"
@@ -94,60 +94,8 @@
#include "node_intern.h"
-
-/* autocomplete callback for buttons */
-static void autocomplete_vcol(bContext *C, char *str, void *arg_v)
-{
- Mesh *me;
- CustomDataLayer *layer;
- AutoComplete *autocpl;
- int a;
-
- if(str[0]==0)
- return;
-
- autocpl= autocomplete_begin(str, 32);
-
- /* search if str matches the beginning of name */
- for(me= G.main->mesh.first; me; me=me->id.next)
- for(a=0, layer= me->fdata.layers; a<me->fdata.totlayer; a++, layer++)
- if(layer->type == CD_MCOL)
- autocomplete_do_name(autocpl, layer->name);
-
- autocomplete_end(autocpl, str);
-}
-
-static int verify_valid_vcol_name(char *str)
-{
- Mesh *me;
- CustomDataLayer *layer;
- int a;
-
- if(str[0]==0)
- return 1;
-
- /* search if str matches the name */
- for(me= G.main->mesh.first; me; me=me->id.next)
- for(a=0, layer= me->fdata.layers; a<me->fdata.totlayer; a++, layer++)
- if(layer->type == CD_MCOL)
- if(strcmp(layer->name, str)==0)
- return 1;
-
- return 0;
-}
-
/* ****************** GENERAL CALLBACKS FOR NODES ***************** */
-static void node_ID_title_cb(bContext *C, void *node_v, void *unused_v)
-{
- bNode *node= node_v;
-
- if(node->id) {
- test_idbutton(node->id->name+2); /* library.c, verifies unique name */
- BLI_strncpy(node->name, node->id->name+2, 21);
- }
-}
-
#if 0
/* XXX not used yet, make compiler happy :) */
static void node_group_alone_cb(bContext *C, void *node_v, void *unused_v)
@@ -197,40 +145,28 @@ static void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
- uiBlock *block= uiLayoutAbsoluteBlock(layout);
- bNode *node= ptr->data;
- rctf *butr= &node->butr;
- bNodeSocket *sock= node->outputs.first; /* first socket stores value */
+ PointerRNA sockptr;
+ PropertyRNA *prop;
- uiDefButF(block, NUM, B_NODE_EXEC, "",
- (short)butr->xmin, (short)butr->ymin, butr->xmax-butr->xmin, 20,
- sock->ns.vec, sock->ns.min, sock->ns.max, 10, 2, "");
+ /* first socket stores value */
+ prop = RNA_struct_find_property(ptr, "outputs");
+ RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr);
+
+ uiItemR(layout, "", 0, &sockptr, "default_value", 0);
}
static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
- uiBlock *block= uiLayoutAbsoluteBlock(layout);
- bNode *node= ptr->data;
- rctf *butr= &node->butr;
- bNodeSocket *sock= node->outputs.first; /* first socket stores value */
-
- if(sock) {
- /* enforce square box drawing */
- uiBlockSetEmboss(block, UI_EMBOSSP);
-
- uiDefButF(block, HSVCUBE, B_NODE_EXEC, "",
- (short)butr->xmin, (short)butr->ymin, butr->xmax-butr->xmin, 12,
- sock->ns.vec, 0.0f, 1.0f, 3, 0, "");
- uiDefButF(block, HSVCUBE, B_NODE_EXEC, "",
- (short)butr->xmin, (short)butr->ymin+15, butr->xmax-butr->xmin, butr->xmax-butr->xmin -15 -15,
- sock->ns.vec, 0.0f, 1.0f, 2, 0, "");
- uiDefButF(block, COL, B_NOP, "",
- (short)butr->xmin, (short)butr->ymax-12, butr->xmax-butr->xmin, 12,
- sock->ns.vec, 0.0, 0.0, -1, 0, "");
- /* the -1 above prevents col button to popup a color picker */
-
- uiBlockSetEmboss(block, UI_EMBOSS);
- }
+ uiLayout *col;
+ PointerRNA sockptr;
+ PropertyRNA *prop;
+
+ /* first socket stores value */
+ prop = RNA_struct_find_property(ptr, "outputs");
+ RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr);
+
+ col = uiLayoutColumn(layout, 0);
+ uiItemR(col, "", 0, &sockptr, "default_value", 0);
}
static void node_buts_mix_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr)
@@ -423,11 +359,6 @@ static void node_browse_text_cb(bContext *C, void *ntree_v, void *node_v)
node->menunr= 0;
}
-static void node_texmap_cb(bContext *C, void *texmap_v, void *unused_v)
-{
- init_mapping(texmap_v);
-}
-
static void node_shader_buts_material(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
bNode *node= ptr->data;
@@ -577,36 +508,6 @@ static void node_shader_set_butfunc(bNodeType *ntype)
/* ****************** BUTTON CALLBACKS FOR COMPOSITE NODES ***************** */
-static void node_browse_image_cb(bContext *C, void *ntree_v, void *node_v)
-{
- bNodeTree *ntree= ntree_v;
- bNode *node= node_v;
-
- nodeSetActive(ntree, node);
-
- if(node->menunr<1) return;
- if(node->menunr==32767) { /* code for Load New */
- /// addqueue(curarea->win, UI_BUT_EVENT, B_NODE_LOADIMAGE); XXX
- }
- else {
- if(node->id) node->id->us--;
- node->id= BLI_findlink(&G.main->image, node->menunr-1);
- id_us_plus(node->id);
-
- BLI_strncpy(node->name, node->id->name+2, 21);
-
- NodeTagChanged(ntree, node);
- BKE_image_signal((Image *)node->id, node->storage, IMA_SIGNAL_USER_NEW_IMAGE);
- // addqueue(curarea->win, UI_BUT_EVENT, B_NODE_EXEC); XXX
- }
- node->menunr= 0;
-}
-
-static void node_active_cb(bContext *C, void *ntree_v, void *node_v)
-{
- nodeSetActive(ntree_v, node_v);
-}
-
static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
uiLayout *col;
@@ -1276,41 +1177,7 @@ static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *pt
static void node_texture_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
- uiBlock *block= uiLayoutAbsoluteBlock(layout);
- bNode *node= ptr->data;
- bNodeTree *ntree= ptr->id.data;
- rctf *butr= &node->butr;
- char *strp;
- uiBut *bt;
-
- uiBlockBeginAlign(block);
-
- /* browse button */
- IMAnames_to_pupstring(&strp, NULL, "LOAD NEW %x32767", &(G.main->image), NULL, NULL);
- node->menunr= 0;
- bt= uiDefButS(block, MENU, B_NOP, strp,
- butr->xmin, butr->ymin, 19, 19,
- &node->menunr, 0, 0, 0, 0, "Browses existing choices");
- uiButSetFunc(bt, node_browse_image_cb, ntree, node);
- if(strp) MEM_freeN(strp);
-
- /* Add New button */
- if(node->id==NULL) {
- bt= uiDefBut(block, BUT, B_NODE_LOADIMAGE, "Load New",
- butr->xmin+19, butr->ymin, (short)(butr->xmax-butr->xmin-19.0f), 19,
- NULL, 0.0, 0.0, 0, 0, "Add new Image");
- uiButSetFunc(bt, node_active_cb, ntree, node);
- }
- else {
- /* name button */
- short xmin= (short)butr->xmin, xmax= (short)butr->xmax;
- short width= xmax - xmin - 19;
-
- bt= uiDefBut(block, TEX, B_NOP, "IM:",
- xmin+19, butr->ymin, width, 19,
- node->id->name+2, 0.0, 19.0, 0, 0, "Image name");
- uiButSetFunc(bt, node_ID_title_cb, node, NULL);
- }
+ uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL);
}
static void node_texture_buts_output(uiLayout *layout, bContext *C, PointerRNA *ptr)
diff --git a/source/blender/editors/space_node/node_buttons.c b/source/blender/editors/space_node/node_buttons.c
new file mode 100644
index 00000000000..52d8fc48a1a
--- /dev/null
+++ b/source/blender/editors/space_node/node_buttons.c
@@ -0,0 +1,183 @@
+/**
+ * $Id:
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
+ * All rights reserved.
+ *
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+#include <float.h>
+
+#include "DNA_ID.h"
+#include "DNA_gpencil_types.h"
+#include "DNA_node_types.h"
+#include "DNA_space_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_math.h"
+#include "BLI_blenlib.h"
+#include "BLI_rand.h"
+
+#include "BKE_context.h"
+#include "BKE_depsgraph.h"
+#include "BKE_idprop.h"
+#include "BKE_object.h"
+#include "BKE_node.h"
+#include "BKE_global.h"
+#include "BKE_scene.h"
+#include "BKE_screen.h"
+#include "BKE_utildefines.h"
+
+#include "BIF_gl.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+#include "ED_gpencil.h"
+#include "ED_screen.h"
+#include "ED_types.h"
+#include "ED_util.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+#include "UI_view2d.h"
+
+#include "node_intern.h" // own include
+
+
+/* ******************* node space & buttons ************** */
+#define B_NOP 1
+#define B_REDR 2
+
+static void do_node_region_buttons(bContext *C, void *arg, int event)
+{
+ //SpaceNode *snode= CTX_wm_space_node(C);
+
+ switch(event) {
+ case B_REDR:
+ ED_area_tag_redraw(CTX_wm_area(C));
+ return; /* no notifier! */
+ }
+}
+
+/* poll callback for active node */
+static int active_node_poll(const bContext *C, PanelType *pt)
+{
+ SpaceNode *snode= CTX_wm_space_node(C);
+
+ // TODO: include check for whether there is an active node...
+ return (snode && snode->nodetree);
+}
+
+/* active node */
+static void active_node_panel(const bContext *C, Panel *pa)
+{
+ SpaceNode *snode= CTX_wm_space_node(C);
+ bNodeTree *ntree= (snode) ? snode->edittree : NULL;
+ bNode *node = (ntree) ? nodeGetActive(ntree) : NULL; // xxx... for editing group nodes
+ uiLayout *layout= pa->layout;
+ uiBlock *block;
+ PointerRNA ptr;
+
+ /* verify pointers, and create RNA pointer for the node */
+ if ELEM(NULL, ntree, node)
+ return;
+ //if (node->id) /* for group nodes */
+ // RNA_pointer_create(node->id, &RNA_Node, node, &ptr);
+ //else
+ RNA_pointer_create(&ntree->id, &RNA_Node, node, &ptr);
+
+ /* set update callback */
+ // xxx is this really needed
+ block= uiLayoutGetBlock(layout);
+ uiBlockSetHandleFunc(block, do_node_region_buttons, NULL);
+
+ /* draw this node's name, etc. */
+ uiItemR(layout, NULL, ICON_NODE, &ptr, "name", 0);
+ // TODO: a separator would be nice...
+
+ /* draw this node's settings */
+ if (node->typeinfo && node->typeinfo->uifunc)
+ node->typeinfo->uifunc(layout, (bContext *)C, &ptr);
+}
+
+/* ******************* node buttons registration ************** */
+
+void node_buttons_register(ARegionType *art)
+{
+ PanelType *pt;
+
+ pt= MEM_callocN(sizeof(PanelType), "spacetype node panel active node");
+ strcpy(pt->idname, "NODE_PT_item");
+ strcpy(pt->label, "Active Node");
+ pt->draw= active_node_panel;
+ pt->poll= active_node_poll;
+ BLI_addtail(&art->paneltypes, pt);
+
+ pt= MEM_callocN(sizeof(PanelType), "spacetype node panel gpencil");
+ strcpy(pt->idname, "NODE_PT_gpencil");
+ strcpy(pt->label, "Grease Pencil");
+ pt->draw= gpencil_panel_standard;
+ BLI_addtail(&art->paneltypes, pt);
+}
+
+static int node_properties(bContext *C, wmOperator *op)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= node_has_buttons_region(sa);
+
+ if(ar)
+ ED_region_toggle_hidden(C, ar);
+
+ return OPERATOR_FINISHED;
+}
+
+/* non-standard poll operator which doesn't care if there are any nodes */
+static int node_properties_poll(bContext *C)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ return (sa && (sa->spacetype == SPACE_NODE));
+}
+
+void NODE_OT_properties(wmOperatorType *ot)
+{
+ ot->name= "Properties";
+ ot->description= "Toggles the properties panel display.";
+ ot->idname= "NODE_OT_properties";
+
+ ot->exec= node_properties;
+ ot->poll= node_properties_poll;
+
+ /* flags */
+ ot->flag= 0;
+}
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index b45b27f426a..59085ce19cd 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -48,7 +48,7 @@
#include "DNA_text_types.h"
#include "DNA_userdef_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_threads.h"
#include "MEM_guardedalloc.h"
@@ -66,14 +66,13 @@
#include "BKE_text.h"
#include "BKE_utildefines.h"
-/* #include "BDR_gpencil.h" XXX */
-
#include "BIF_gl.h"
#include "BIF_glutil.h"
#include "WM_api.h"
#include "WM_types.h"
+#include "ED_gpencil.h"
#include "ED_screen.h"
#include "ED_util.h"
#include "ED_types.h"
@@ -548,53 +547,25 @@ static void node_sync_cb(bContext *C, void *snode_v, void *node_v)
/* ************** Socket callbacks *********** */
-static void socket_vector_menu_cb(bContext *C, void *node_v, void *ntree_v)
-{
- if(node_v && ntree_v) {
- NodeTagChanged(ntree_v, node_v);
- // addqueue(curarea->win, UI_BUT_EVENT, B_NODE_EXEC); XXX
- }
-}
-
/* NOTE: this is a block-menu, needs 0 events, otherwise the menu closes */
static uiBlock *socket_vector_menu(bContext *C, ARegion *ar, void *socket_v)
{
- SpaceNode *snode= CTX_wm_space_node(C);
- ScrArea *sa= CTX_wm_area(C);
- bNode *node;
bNodeSocket *sock= socket_v;
- bNodeStack *ns= &sock->ns;
uiBlock *block;
- uiBut *bt;
- /* a bit ugly... retrieve the node the socket comes from */
- for(node= snode->nodetree->nodes.first; node; node= node->next) {
- bNodeSocket *sockt;
- for(sockt= node->inputs.first; sockt; sockt= sockt->next)
- if(sockt==sock)
- break;
- if(sockt)
- break;
- }
+ SpaceNode *snode= CTX_wm_space_node(C);
+ bNodeTree *ntree = snode->nodetree;
+ PointerRNA ptr;
+ uiLayout *layout;
+
+ RNA_pointer_create(&ntree->id, &RNA_NodeSocket, sock, &ptr);
block= uiBeginBlock(C, ar, "socket menu", UI_EMBOSS);
uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN);
-
- /* use this for a fake extra empy space around the buttons */
- uiDefBut(block, LABEL, 0, "", -4, -4, 188, 68, NULL, 0, 0, 0, 0, "");
- uiBlockBeginAlign(block);
- bt= uiDefButF(block, NUMSLI, 0, "X ", 0,40,180,20, ns->vec, ns->min, ns->max, 10, 0, "");
- uiButSetFunc(bt, socket_vector_menu_cb, node, snode->nodetree);
- bt= uiDefButF(block, NUMSLI, 0, "Y ", 0,20,180,20, ns->vec+1, ns->min, ns->max, 10, 0, "");
- uiButSetFunc(bt, socket_vector_menu_cb, node, snode->nodetree);
- bt= uiDefButF(block, NUMSLI, 0, "Z ", 0,0,180,20, ns->vec+2, ns->min, ns->max, 10, 0, "");
- uiButSetFunc(bt, socket_vector_menu_cb, node, snode->nodetree);
+ layout= uiLayoutColumn(uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, sock->locx, sock->locy-8, 140, 20, U.uistyles.first), 0);
- uiBlockSetDirection(block, UI_TOP);
- uiEndBlock(C, block);
-
- ED_area_tag_redraw(sa);
+ uiItemR(layout, "", 0, &ptr, "default_value", UI_ITEM_R_EXPAND);
return block;
}
@@ -671,6 +642,8 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
int /*ofs,*/ color_id= node_get_colorid(node);
char showname[128]; /* 128 used below */
View2D *v2d = &ar->v2d;
+ bNodeTree *ntree = snode->nodetree;
+ PointerRNA ptr;
uiSetRoundBox(15-4);
ui_dropshadow(rct, BASIS_RAD, snode->aspect, node->flag & SELECT);
@@ -705,10 +678,10 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
glEnable(GL_BLEND);
if(node->id->lib) {
float rgb[3] = {1.0f, 0.7f, 0.3f};
- UI_icon_draw_aspect_color(iconofs, rct->ymax-NODE_DY, ICON_NODE, snode->aspect, rgb);
+ UI_icon_draw_aspect_color(iconofs, rct->ymax-NODE_DY, ICON_NODETREE, snode->aspect, rgb);
}
else {
- UI_icon_draw_aspect(iconofs, rct->ymax-NODE_DY, ICON_NODE, snode->aspect, 0.5f);
+ UI_icon_draw_aspect(iconofs, rct->ymax-NODE_DY, ICON_NODETREE, snode->aspect, 0.5f);
}
glDisable(GL_BLEND);
}
@@ -746,12 +719,14 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
else
UI_ThemeColor(TH_TEXT);
- if(node->flag & NODE_MUTED)
- sprintf(showname, "[%s]", node->name);
- else if(node->username[0])
- sprintf(showname, "(%s) %s", node->username, node->name);
+ if(node->flag & NODE_CUSTOM_NAME)
+ BLI_strncpy(showname, node->name, 32);
else
- BLI_strncpy(showname, node->name, 128);
+ /* todo: auto name display for node types */
+ BLI_strncpy(showname, node->name, 32);
+
+ //if(node->flag & NODE_MUTED)
+ // sprintf(showname, "[%s]", showname);
uiDefBut(node->block, LABEL, 0, showname, (short)(rct->xmin+15), (short)(rct->ymax-NODE_DY),
(int)(iconofs - rct->xmin-18.0f), NODE_DY, NULL, 0, 0, 0, 0, "");
@@ -789,13 +764,14 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
if(!(sock->flag & (SOCK_HIDDEN|SOCK_UNAVAIL))) {
socket_circle_draw(sock, NODE_SOCKSIZE);
+ RNA_pointer_create(&ntree->id, &RNA_NodeSocket, sock, &ptr);
+
if(node->block && sock->link==NULL) {
- float *butpoin= sock->ns.vec;
-
+
if(sock->type==SOCK_VALUE) {
- bt= uiDefButF(node->block, NUM, B_NODE_EXEC, sock->name,
- (short)sock->locx+NODE_DYS, (short)(sock->locy)-9, (short)node->width-NODE_DY, 17,
- butpoin, sock->ns.min, sock->ns.max, 10, 2, "");
+ bt=uiDefButR(node->block, NUM, B_NODE_EXEC, sock->name,
+ (short)sock->locx+NODE_DYS, (short)(sock->locy)-9, (short)node->width-NODE_DY, 17,
+ &ptr, "default_value", 0, sock->ns.min, sock->ns.max, -1, -1, NULL);
uiButSetFunc(bt, node_sync_cb, snode, node);
}
else if(sock->type==SOCK_VECTOR) {
@@ -808,9 +784,9 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
if(labelw>0) width= 40; else width= (short)node->width-NODE_DY;
- bt= uiDefButF(node->block, COL, B_NODE_EXEC, "",
- (short)(sock->locx+NODE_DYS), (short)sock->locy-8, width, 15,
- butpoin, 0, 0, 0, 0, "");
+ bt=uiDefButR(node->block, COL, B_NODE_EXEC, "",
+ (short)sock->locx+NODE_DYS, (short)(sock->locy)-8, width, 15,
+ &ptr, "default_value", 0, sock->ns.min, sock->ns.max, -1, -1, NULL);
uiButSetFunc(bt, node_sync_cb, snode, node);
if(labelw>0) uiDefBut(node->block, LABEL, 0, sock->name,
@@ -820,7 +796,7 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
}
else {
- uiDefBut(node->block, LABEL, 0, sock->name, (short)(sock->locx+3.0f), (short)(sock->locy-9.0f),
+ uiDefBut(node->block, LABEL, 0, sock->name, (short)(sock->locx+7), (short)(sock->locy-9.0f),
(short)(node->width-NODE_DY), NODE_DY, NULL, 0, 0, 0, 0, "");
}
}
@@ -904,12 +880,15 @@ static void node_draw_hidden(const bContext *C, ARegion *ar, SpaceNode *snode, b
if(node->miniwidth>0.0f) {
- if(node->flag & NODE_MUTED)
- sprintf(showname, "[%s]", node->name);
- else if(node->username[0])
- sprintf(showname, "(%s)%s", node->username, node->name);
+
+ if(node->flag & NODE_CUSTOM_NAME)
+ BLI_strncpy(showname, node->name, 128);
else
+ /* todo: auto name display */
BLI_strncpy(showname, node->name, 128);
+
+ //if(node->flag & NODE_MUTED)
+ // sprintf(showname, "[%s]", showname);
uiDefBut(node->block, LABEL, 0, showname, (short)(rct->xmin+15), (short)(centy-10),
(int)(rct->xmax - rct->xmin-18.0f -12.0f), NODE_DY, NULL, 0, 0, 0, 0, "");
@@ -1047,15 +1026,12 @@ static void node_draw_group(const bContext *C, ARegion *ar, SpaceNode *snode, bN
/* backdrop title */
UI_ThemeColor(TH_TEXT_HI);
- if(gnode->username[0]) {
- strcpy(showname,"(");
- strcat(showname, gnode->username);
- strcat(showname,") ");
- strcat(showname, ngroup->id.name+2);
- }
+ if (gnode->flag & NODE_CUSTOM_NAME)
+ strcat(showname, gnode->name);
else
strcpy(showname, ngroup->id.name+2);
+ // XXX this shows some scaling artifacts
UI_DrawString(rect.xmin+8.0f, rect.ymax+5.0f, showname);
/* links from groupsockets to the internal nodes */
@@ -1127,38 +1103,16 @@ void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d)
}
/* draw grease-pencil ('canvas' strokes) */
- /*if ((snode->flag & SNODE_DISPGP) && (snode->nodetree))
- draw_gpencil_2dview(sa, 1);*/
-
- /* restore viewport (not needed yet) */
- /*mywinset(sa->win);*/
-
- /* ortho at pixel level curarea */
- /*myortho2(-0.375, sa->winx-0.375, -0.375, sa->winy-0.375);*/
-
- /* draw grease-pencil (screen strokes) */
- /*if ((snode->flag & SNODE_DISPGP) && (snode->nodetree))
- draw_gpencil_2dview(sa, 0);*/
-
- //draw_area_emboss(sa);
-
- /* it is important to end a view in a transform compatible with buttons */
- /*bwin_scalematrix(sa->win, snode->blockscale, snode->blockscale, snode->blockscale);
- nodes_blockhandlers(sa);*/
-
- //curarea->win_swap= WIN_BACK_OK;
-
- /* in the end, this is a delayed previewrender test, to allow buttons to be first */
- /*if(snode->flag & SNODE_DO_PREVIEW) {
- addafterqueue(sa->win, RENDERPREVIEW, 1);
- snode->flag &= ~SNODE_DO_PREVIEW;
- }*/
-
-
+ if (/*(snode->flag & SNODE_DISPGP) &&*/ (snode->nodetree))
+ draw_gpencil_2dview((bContext*)C, 1);
/* reset view matrix */
UI_view2d_view_restore(C);
+ /* draw grease-pencil (screen strokes, and also paintbuffer) */
+ if (/*(snode->flag & SNODE_DISPGP) && */(snode->nodetree))
+ draw_gpencil_2dview((bContext*)C, 0);
+
/* scrollers */
scrollers= UI_view2d_scrollers_calc(C, v2d, 10, V2D_GRID_CLAMP, V2D_ARG_DUMMY, V2D_ARG_DUMMY);
UI_view2d_scrollers_draw(C, v2d, scrollers);
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 9eabf834a76..b42e9e1fac5 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -64,7 +64,7 @@
#include "BIF_gl.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_storage_types.h"
@@ -712,7 +712,7 @@ void node_set_active(SpaceNode *snode, bNode *node)
/* make active viewer, currently only 1 supported... */
if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) {
bNode *tnode;
- int was_output= node->flag & NODE_DO_OUTPUT;
+ int was_output= (node->flag & NODE_DO_OUTPUT);
for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
if( ELEM(tnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
@@ -762,6 +762,19 @@ void node_set_active(SpaceNode *snode, bNode *node)
}
}
+/* when links in groups change, inputs/outputs change, nodes added/deleted... */
+void node_tree_verify_groups(bNodeTree *nodetree)
+{
+ bNode *gnode;
+
+ gnode= node_tree_get_editgroup(nodetree);
+
+ /* does all materials */
+ if(gnode)
+ nodeVerifyGroup((bNodeTree *)gnode->id);
+
+}
+
/* ***************** Edit Group operator ************* */
void snode_make_group_editable(SpaceNode *snode, bNode *gnode)
@@ -892,81 +905,6 @@ void NODE_OT_group_ungroup(wmOperatorType *ot)
ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
}
-/* when links in groups change, inputs/outputs change, nodes added/deleted... */
-static void node_tree_verify_groups(bNodeTree *nodetree)
-{
- bNode *gnode;
-
- gnode= node_tree_get_editgroup(nodetree);
-
- /* does all materials */
- if(gnode)
- nodeVerifyGroup((bNodeTree *)gnode->id);
-
-}
-
-#if 0
-
-static void node_addgroup(SpaceNode *snode)
-{
- bNodeTree *ngroup;
- int tot= 0, offs, val;
- char *strp;
-
- if(snode->edittree!=snode->nodetree) {
- error("Can not add a Group in a Group");
- return;
- }
-
- /* construct menu with choices */
- for(ngroup= G.main->nodetree.first; ngroup; ngroup= ngroup->id.next) {
- if(ngroup->type==snode->treetype)
- tot++;
- }
- if(tot==0) {
- error("No groups available in database");
- return;
- }
- strp= MEM_mallocN(32*tot+32, "menu");
- strcpy(strp, "Add Group %t");
- offs= strlen(strp);
-
- for(tot=0, ngroup= G.main->nodetree.first; ngroup; ngroup= ngroup->id.next, tot++) {
- if(ngroup->type==snode->treetype)
- offs+= sprintf(strp+offs, "|%s %%x%d", ngroup->id.name+2, tot);
- }
-
- val= pupmenu(strp);
- if(val>=0) {
- ngroup= BLI_findlink(&G.main->nodetree, val);
- if(ngroup) {
- bNode *node= nodeAddNodeType(snode->edittree, NODE_GROUP, ngroup, NULL);
-
- /* generics */
- if(node) {
- float locx, locy;
- short mval[2];
-
- node_deselectall(snode, 0);
-
- getmouseco_areawin(mval);
- areamouseco_to_ipoco(G.v2d, mval, &locx, &locy);
-
- node->locx= locx;
- node->locy= locy + 60.0f; // arbitrary.. so its visible
- node->flag |= SELECT;
-
- id_us_plus(node->id);
-
- node_set_active(snode, node);
- }
- }
- }
- MEM_freeN(strp);
-}
-
-#endif /* 0 */
-
/* ************************** Node generic ************** */
/* allows to walk the list in order of visibility */
@@ -1035,56 +973,6 @@ static bNode *visible_node(SpaceNode *snode, rctf *rct)
return tnode;
}
-void snode_home(ScrArea *sa, ARegion *ar, SpaceNode* snode)
-{
- bNode *node;
- rctf *cur, *tot;
- float oldwidth, oldheight, width, height;
- int first= 1;
-
- cur= &ar->v2d.cur;
- tot= &ar->v2d.tot;
-
- oldwidth= cur->xmax - cur->xmin;
- oldheight= cur->ymax - cur->ymin;
-
- cur->xmin= cur->ymin= 0.0f;
- cur->xmax=ar->winx;
- cur->xmax= ar->winy;
-
- if(snode->edittree) {
- for(node= snode->edittree->nodes.first; node; node= node->next) {
- if(first) {
- first= 0;
- ar->v2d.cur= node->totr;
- }
- else {
- BLI_union_rctf(cur, &node->totr);
- }
- }
- }
-
- snode->xof= 0;
- snode->yof= 0;
- width= cur->xmax - cur->xmin;
- height= cur->ymax- cur->ymin;
- if(width > height) {
- float newheight;
- newheight= oldheight * width/oldwidth;
- cur->ymin= cur->ymin - newheight/4;
- cur->ymax= cur->ymin + newheight;
- }
- else {
- float newwidth;
- newwidth= oldwidth * height/oldheight;
- cur->xmin= cur->xmin - newwidth/4;
- cur->xmax= cur->xmin + newwidth;
- }
-
- ar->v2d.tot= ar->v2d.cur;
- UI_view2d_curRect_validate(&ar->v2d);
-}
-
#if 0
static void snode_bg_viewmove(SpaceNode *snode)
{
@@ -1169,13 +1057,15 @@ static int node_resize_modal(bContext *C, wmOperator *op, wmEvent *event)
UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin,
&mx, &my);
- if(node->flag & NODE_HIDDEN) {
- node->miniwidth= nsw->oldwidth + mx - nsw->mxstart;
- CLAMP(node->miniwidth, 0.0f, 100.0f);
- }
- else {
- node->width= nsw->oldwidth + mx - nsw->mxstart;
- CLAMP(node->width, node->typeinfo->minwidth, node->typeinfo->maxwidth);
+ if (node) {
+ if(node->flag & NODE_HIDDEN) {
+ node->miniwidth= nsw->oldwidth + mx - nsw->mxstart;
+ CLAMP(node->miniwidth, 0.0f, 100.0f);
+ }
+ else {
+ node->width= nsw->oldwidth + mx - nsw->mxstart;
+ CLAMP(node->width, node->typeinfo->minwidth, node->typeinfo->maxwidth);
+ }
}
ED_region_tag_redraw(ar);
@@ -1204,8 +1094,11 @@ static int node_resize_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(node) {
rctf totr;
+ /* convert mouse coordinates to v2d space */
UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin,
&snode->mx, &snode->my);
+
+ /* rect we're interested in is just the bottom right corner */
totr= node->totr;
totr.xmin= totr.xmax-10.0f;
totr.ymax= totr.ymin+10.0f;
@@ -1228,7 +1121,7 @@ static int node_resize_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_RUNNING_MODAL;
}
}
- return OPERATOR_PASS_THROUGH;
+ return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH;
}
void NODE_OT_resize(wmOperatorType *ot)
@@ -1251,6 +1144,8 @@ void NODE_OT_resize(wmOperatorType *ot)
/* ******************** rename ******************* */
+
+/* should go through RNA */
void node_rename(SpaceNode *snode)
{
bNode *node, *rename_node;
@@ -1266,7 +1161,7 @@ void node_rename(SpaceNode *snode)
if(found_node) {
rename_node= nodeGetActive(snode->edittree);
- node_rename_but((char *)rename_node->username);
+ node_rename_but((char *)rename_node->name);
// allqueue(REDRAWNODE, 1);
}
@@ -1317,125 +1212,6 @@ int node_has_hidden_sockets(bNode *node)
return 0;
}
-
-static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node)
-{
- bNodeSocket *sock;
-
- /* unhide all */
- if( node_has_hidden_sockets(node) ) {
- for(sock= node->inputs.first; sock; sock= sock->next)
- sock->flag &= ~SOCK_HIDDEN;
- for(sock= node->outputs.first; sock; sock= sock->next)
- sock->flag &= ~SOCK_HIDDEN;
- }
- else {
- bNode *gnode= node_tree_get_editgroup(snode->nodetree);
-
- /* hiding inside group should not break links in other group users */
- if(gnode) {
- nodeGroupSocketUseFlags((bNodeTree *)gnode->id);
- for(sock= node->inputs.first; sock; sock= sock->next)
- if(!(sock->flag & SOCK_IN_USE))
- if(sock->link==NULL)
- sock->flag |= SOCK_HIDDEN;
- for(sock= node->outputs.first; sock; sock= sock->next)
- if(!(sock->flag & SOCK_IN_USE))
- if(nodeCountSocketLinks(snode->edittree, sock)==0)
- sock->flag |= SOCK_HIDDEN;
- }
- else {
- /* hide unused sockets */
- for(sock= node->inputs.first; sock; sock= sock->next) {
- if(sock->link==NULL)
- sock->flag |= SOCK_HIDDEN;
- }
- for(sock= node->outputs.first; sock; sock= sock->next) {
- if(nodeCountSocketLinks(snode->edittree, sock)==0)
- sock->flag |= SOCK_HIDDEN;
- }
- }
- }
-
- // allqueue(REDRAWNODE, 1);
- node_tree_verify_groups(snode->nodetree);
-
-}
-
-/*static*/ int do_header_node(SpaceNode *snode, bNode *node, float mx, float my)
-{
- rctf totr= node->totr;
-
- totr.ymin= totr.ymax-20.0f;
-
- totr.xmax= totr.xmin+15.0f;
- if(BLI_in_rctf(&totr, mx, my)) {
- node->flag |= NODE_HIDDEN;
- // allqueue(REDRAWNODE, 0);
- return 1;
- }
-
- totr.xmax= node->totr.xmax;
- totr.xmin= totr.xmax-18.0f;
- if(node->typeinfo->flag & NODE_PREVIEW) {
- if(BLI_in_rctf(&totr, mx, my)) {
- node->flag ^= NODE_PREVIEW;
- // allqueue(REDRAWNODE, 0);
- return 1;
- }
- totr.xmin-=18.0f;
- }
- if(node->type == NODE_GROUP) {
- if(BLI_in_rctf(&totr, mx, my)) {
- snode_make_group_editable(snode, node);
- return 1;
- }
- totr.xmin-=18.0f;
- }
- if(node->typeinfo->flag & NODE_OPTIONS) {
- if(BLI_in_rctf(&totr, mx, my)) {
- node->flag ^= NODE_OPTIONS;
- // allqueue(REDRAWNODE, 0);
- return 1;
- }
- totr.xmin-=18.0f;
- }
- /* hide unused sockets */
- if(BLI_in_rctf(&totr, mx, my)) {
- node_hide_unhide_sockets(snode, node);
- }
-
-
- totr= node->totr;
- totr.xmin= totr.xmax-10.0f;
- totr.ymax= totr.ymin+10.0f;
- if(BLI_in_rctf(&totr, mx, my)) {
-// scale_node(snode, node);
- return 1;
- }
- return 0;
-}
-
-/*static*/ int do_header_hidden_node(SpaceNode *snode, bNode *node, float mx, float my)
-{
- rctf totr= node->totr;
-
- totr.xmax= totr.xmin+15.0f;
- if(BLI_in_rctf(&totr, mx, my)) {
- node->flag &= ~NODE_HIDDEN;
- // allqueue(REDRAWNODE, 0);
- return 1;
- }
-
- totr.xmax= node->totr.xmax;
- totr.xmin= node->totr.xmax-15.0f;
- if(BLI_in_rctf(&totr, mx, my)) {
-// scale_node(snode, node);
- return 1;
- }
- return 0;
-}
-
static void node_link_viewer(SpaceNode *snode, bNode *tonode)
{
bNode *node;
@@ -1571,7 +1347,7 @@ static int node_socket_hilights(SpaceNode *snode, int in_out)
if(snode->edittree==NULL) return 0;
- /* deselect socks */
+ /* deselect sockets */
for(node= snode->edittree->nodes.first; node; node= node->next) {
for(sock= node->inputs.first; sock; sock= sock->next) {
if(sock->flag & SELECT) {
@@ -1714,33 +1490,9 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
return node;
}
-#if 0
-
-void node_mute(SpaceNode *snode)
-{
- bNode *node;
-
- /* no disabling inside of groups */
- if(node_tree_get_editgroup(snode->nodetree))
- return;
-
- for(node= snode->edittree->nodes.first; node; node= node->next) {
- if(node->flag & SELECT) {
- if(node->inputs.first && node->outputs.first) {
- if(node->flag & NODE_MUTED)
- node->flag &= ~NODE_MUTED;
- else
- node->flag |= NODE_MUTED;
- }
- }
- }
-
-
-}
-
-#endif
+/* ****************** Duplicate *********************** */
-int node_duplicate_exec(bContext *C, wmOperator *op)
+static int node_duplicate_exec(bContext *C, wmOperator *op)
{
SpaceNode *snode= CTX_wm_space_node(C);
@@ -1753,75 +1505,21 @@ int node_duplicate_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static int node_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- node_duplicate_exec(C, op);
-
- RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
-
- return OPERATOR_FINISHED;
-}
-
void NODE_OT_duplicate(wmOperatorType *ot)
{
-
/* identifiers */
ot->name= "Duplicate Nodes";
ot->description = "Duplicate the nodes.";
ot->idname= "NODE_OT_duplicate";
/* api callbacks */
- ot->invoke= node_duplicate_invoke;
ot->exec= node_duplicate_exec;
-
ot->poll= ED_operator_node_active;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* to give to transform */
- RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
-}
-
-#if 0
-
-static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
-{
- bNode *newnode= NULL;
-
- if(link->fromsock->type==SOCK_RGBA && link->tosock->type==SOCK_VALUE) {
- if(snode->edittree->type==NTREE_SHADER)
- newnode= node_add_node(snode, SH_NODE_RGBTOBW, 0.0f, 0.0f);
- else if(snode->edittree->type==NTREE_COMPOSIT)
- newnode= node_add_node(snode, CMP_NODE_RGBTOBW, 0.0f, 0.0f);
- else
- newnode= NULL;
- }
- else if(link->fromsock->type==SOCK_VALUE && link->tosock->type==SOCK_RGBA) {
- if(snode->edittree->type==NTREE_SHADER)
- newnode= node_add_node(snode, SH_NODE_VALTORGB, 0.0f, 0.0f);
- else if(snode->edittree->type==NTREE_COMPOSIT)
- newnode= node_add_node(snode, CMP_NODE_VALTORGB, 0.0f, 0.0f);
- else
- newnode= NULL;
- }
-
- if(newnode) {
- /* dangerous assumption to use first in/out socks, but thats fine for now */
- newnode->flag |= NODE_HIDDEN;
- newnode->locx= 0.5f*(link->fromsock->locx + link->tosock->locx);
- newnode->locy= 0.5f*(link->fromsock->locy + link->tosock->locy) + HIDDEN_RAD;
-
- nodeAddLink(snode->edittree, newnode, newnode->outputs.first, link->tonode, link->tosock);
- link->tonode= newnode;
- link->tosock= newnode->inputs.first;
- }
}
-
-#endif /* 0 */
-
/* *************************** add link op ******************** */
/* temp data to pass on to modal */
@@ -2066,81 +1764,57 @@ void NODE_OT_link(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
}
-
-void node_hide(SpaceNode *snode)
-{
- bNode *node;
- int nothidden=0, ishidden=0;
-
- for(node= snode->edittree->nodes.first; node; node= node->next) {
- if(node->flag & SELECT) {
- if(node->flag & NODE_HIDDEN)
- ishidden++;
- else
- nothidden++;
- }
- }
- for(node= snode->edittree->nodes.first; node; node= node->next) {
- if(node->flag & SELECT) {
- if( (ishidden && nothidden) || ishidden==0)
- node->flag |= NODE_HIDDEN;
- else
- node->flag &= ~NODE_HIDDEN;
- }
- }
-}
-
-#if 0
-
-void node_insert_key(SpaceNode *snode)
-{
- bNode *node= editnode_get_active(snode->edittree);
-
- if(node == NULL)
- return;
-
- if(node->type==CMP_NODE_TIME) {
- if(node->custom1<node->custom2) {
-
- CurveMapping *cumap= node->storage;
- float fval, curval;
-
- curval= (float)(CFRA - node->custom1)/(float)(node->custom2-node->custom1);
- fval= curvemapping_evaluateF(cumap, 0, curval);
-
- if(fbutton(&fval, 0.0f, 1.0f, 10, 10, "Insert Value")) {
- curvemap_insert(cumap->cm, curval, fval);
-
- }
- }
- }
-}
+/* ********************** Make Link operator ***************** */
/* makes a link between selected output and input sockets */
-void node_make_link(SpaceNode *snode)
+static int node_make_link_exec(bContext *C, wmOperator *op)
{
+ SpaceNode *snode= CTX_wm_space_node(C);
bNode *fromnode, *tonode;
bNodeLink *link;
bNodeSocket *outsock= snode->edittree->selout;
bNodeSocket *insock= snode->edittree->selin;
+
+ if (!insock || !outsock) {
+ BKE_report(op->reports, RPT_ERROR, "No input or output socket(s) selected");
+ return OPERATOR_CANCELLED;
+ }
+ if (nodeFindLink(snode->edittree, outsock, insock)) {
+ BKE_report(op->reports, RPT_ERROR, "There is already a link between these sockets");
+ return OPERATOR_CANCELLED;
+ }
- if(!insock || !outsock) return;
- if(nodeFindLink(snode->edittree, outsock, insock)) return;
-
- if(nodeFindNode(snode->edittree, outsock, &fromnode, NULL) &&
- nodeFindNode(snode->edittree, insock, &tonode, NULL)) {
+ if (nodeFindNode(snode->edittree, outsock, &fromnode, NULL) &&
+ nodeFindNode(snode->edittree, insock, &tonode, NULL))
+ {
link= nodeAddLink(snode->edittree, fromnode, outsock, tonode, insock);
NodeTagChanged(snode->edittree, tonode);
node_remove_extra_links(snode, insock, link);
}
- else return;
+ else
+ return OPERATOR_CANCELLED;
ntreeSolveOrder(snode->edittree);
node_tree_verify_groups(snode->nodetree);
- // XXX snode_handle_recalc(snode);
+ snode_handle_recalc(C, snode);
+
+ return OPERATOR_FINISHED;
+}
+void NODE_OT_link_make(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Make Links";
+ ot->description= "Makes a link between selected output in input sockets.";
+ ot->idname= "NODE_OT_link_make";
+
+ /* callbacks */
+ ot->exec= node_make_link_exec;
+ ot->poll= ED_operator_node_active; // XXX we need a special poll which checks that there are selected input/output sockets
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-#endif
/* ********************** Cut Link operator ***************** */
@@ -2154,7 +1828,7 @@ static int cut_links_intersect(bNodeLink *link, float mcoords[][2], int tot)
for(i=0; i<tot-1; i++)
for(b=0; b<LINK_RESOL-1; b++)
- if(IsectLL2Df(mcoords[i], mcoords[i+1], coord_array[b], coord_array[b+1]) > 0)
+ if(isect_line_line_v2(mcoords[i], mcoords[i+1], coord_array[b], coord_array[b+1]) > 0)
return 1;
}
return 0;
@@ -2189,7 +1863,7 @@ static int cut_links_exec(bContext *C, wmOperator *op)
nodeRemLink(snode->edittree, link);
}
}
-
+
ntreeSolveOrder(snode->edittree);
node_tree_verify_groups(snode->nodetree);
snode_handle_recalc(C, snode);
@@ -2197,7 +1871,7 @@ static int cut_links_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
- return OPERATOR_PASS_THROUGH;;
+ return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH;
}
void NODE_OT_links_cut(wmOperatorType *ot)
@@ -2223,6 +1897,7 @@ void NODE_OT_links_cut(wmOperatorType *ot)
}
/* ******************************** */
+// XXX some code needing updating to operators...
/* goes over all scenes, reads render layerss */
void node_read_renderlayers(SpaceNode *snode)
@@ -2310,7 +1985,7 @@ static int node_group_make_exec(bContext *C, wmOperator *op)
if(gnode->type==CMP_NODE_R_LAYERS)
break;
}
-
+
if(gnode) {
BKE_report(op->reports, RPT_ERROR, "Can not add RenderLayer in a Group");
return OPERATOR_CANCELLED;
@@ -2326,7 +2001,9 @@ static int node_group_make_exec(bContext *C, wmOperator *op)
nodeSetActive(snode->nodetree, gnode);
ntreeSolveOrder(snode->nodetree);
}
-
+
+ snode_handle_recalc(C, snode);
+
return OPERATOR_FINISHED;
}
@@ -2345,216 +2022,93 @@ void NODE_OT_group_make(wmOperatorType *ot)
ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
}
-#if 0
-
-/* ******************** main event loop ****************** */
+/* ****************** Hide operator *********************** */
-void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
+static int node_hide_exec(bContext *C, wmOperator *op)
{
- SpaceNode *snode= spacedata;
- bNode *actnode;
- bNodeSocket *actsock;
- unsigned short event= evt->event;
- short val= evt->val, doredraw=0, fromlib= 0;
+ SpaceNode *snode= CTX_wm_space_node(C);
+ bNode *node;
+ int nothidden=0, ishidden=0;
- if(sa->win==0) return;
+ /* sanity checking (poll callback checks this already) */
+ if((snode == NULL) || (snode->edittree == NULL))
+ return OPERATOR_CANCELLED;
- if(snode->nodetree==NULL) {
- /* no other events should be handled, but floating panels still should get handled */
- uiDoBlocks(&curarea->uiblocks, event, 1);
- return;
+ for(node= snode->edittree->nodes.first; node; node= node->next) {
+ if(node->flag & SELECT) {
+ if(node->flag & NODE_HIDDEN)
+ ishidden++;
+ else
+ nothidden++;
+ }
+ }
+ for(node= snode->edittree->nodes.first; node; node= node->next) {
+ if(node->flag & SELECT) {
+ if( (ishidden && nothidden) || ishidden==0)
+ node->flag |= NODE_HIDDEN;
+ else
+ node->flag &= ~NODE_HIDDEN;
+ }
}
- if(val) {
- if( node_uiDoBlocks(sa, event)!=UI_NOTHING ) event= 0;
-
- fromlib= (snode->id && snode->id->lib);
-
- switch(event) {
- case LEFTMOUSE:
- if(gpencil_do_paint(sa, L_MOUSE)) {
- return;
- }
- else if(fromlib) {
- if(node_mouse_groupheader(snode)==0)
- //node_mouse_select(snode, event);
- }
- else {
-
- if(G.qual & LR_CTRLKEY)
- if(gesture())
- break;
-
-// if(node_add_link(snode)==0)
- if(node_mouse_groupheader(snode)==0)
-// if(node_mouse_select(snode, event)==0)
- node_border_link_delete(snode);
- }
- break;
-
- case RIGHTMOUSE:
- if(gpencil_do_paint(sa, R_MOUSE)) {
- return;
- }
- else if(find_indicated_socket(snode, &actnode, &actsock, SOCK_IN)) {
- if(actsock->flag & SOCK_SEL) {
- snode->edittree->selin= NULL;
- actsock->flag&= ~SOCK_SEL;
- }
- else {
- snode->edittree->selin= actsock;
- reset_sel_socket(snode, SOCK_IN);
- actsock->flag|= SOCK_SEL;
- }
- }
- else if(find_indicated_socket(snode, &actnode, &actsock, SOCK_OUT)) {
- if(actsock->flag & SOCK_SEL) {
- snode->edittree->selout= NULL;
- actsock->flag&= ~SOCK_SEL;
- }
- else {
- snode->edittree->selout= actsock;
- reset_sel_socket(snode, SOCK_OUT);
- actsock->flag|= SOCK_SEL;
- }
- }
-// else if(!node_mouse_select(snode, event))
-// toolbox_n();
+ snode_handle_recalc(C, snode);
+
+ return OPERATOR_FINISHED;
+}
- break;
- case MIDDLEMOUSE:
- if((snode->flag & SNODE_BACKDRAW) && (snode->treetype==NTREE_COMPOSIT)
- && (G.qual==LR_SHIFTKEY)) {
- snode_bg_viewmove(snode);
- } else {
- view2dmove(event);
- }
- case WHEELUPMOUSE:
- case WHEELDOWNMOUSE:
- view2dmove(event); /* in drawipo.c */
- break;
-
- case MOUSEY:
- doredraw= node_socket_hilights(snode, SOCK_IN|SOCK_OUT);
- break;
-
- case UI_BUT_EVENT:
- /* future: handlerize this! */
- if(snode->treetype==NTREE_SHADER)
- shader_node_event(snode, val);
- else if(snode->treetype==NTREE_COMPOSIT)
- composit_node_event(snode, val);
- else if(snode->treetype==NTREE_TEXTURE)
- texture_node_event(snode, val);
- break;
-
- case PADPLUSKEY:
- snode_zoom_in(sa);
- doredraw= 1;
- break;
- case PADMINUS:
- snode_zoom_out(sa);
- doredraw= 1;
- break;
- case HOMEKEY:
- snode_home(sa, snode);
- doredraw= 1;
- break;
- case TABKEY:
- if(fromlib) fromlib= -1;
- else snode_make_group_editable(snode, NULL);
- break;
-
- case AKEY:
- if(G.qual==LR_SHIFTKEY) {
- if(fromlib) fromlib= -1;
- else toolbox_n_add();
- }
- break;
- case BKEY:
- if(G.qual==0)
- node_border_select(snode);
- break;
- case CKEY: /* sort again, showing cyclics */
- ntreeSolveOrder(snode->edittree);
- doredraw= 1;
- break;
- case DKEY:
- if(G.qual==LR_SHIFTKEY) {
- if(fromlib) fromlib= -1;
- else node_adduplicate(snode);
- }
- break;
- case EKEY:
- // XXX snode_handle_recalc(snode);
- break;
- case FKEY:
- node_make_link(snode);
- break;
- case GKEY:
- if(fromlib) fromlib= -1;
- else {
- if(G.qual==LR_CTRLKEY) {
- if(okee("Make Group"))
- node_make_group(snode);
- }
- else if(G.qual==LR_ALTKEY) {
- if(okee("Ungroup"))
- node_ungroup(snode);
- }
- else if(G.qual==LR_SHIFTKEY) {
- node_addgroup(snode);
- }
-// else
-// XXX transform_nodes(snode->edittree, 'g', "Move Node");
- }
- break;
- case HKEY:
- node_hide(snode);
- break;
- case IKEY:
- node_insert_key(snode);
- break;
- case LKEY:
- node_select_linked(snode, G.qual==LR_SHIFTKEY);
- break;
- case MKEY:
- node_mute(snode);
- break;
- case RKEY:
- if(G.qual==LR_CTRLKEY) {
- node_rename(snode);
- }
- else if(G.qual==LR_SHIFTKEY) {
- if(okee("Read saved Full Sample Layers"))
- node_read_fullsamplelayers(snode);
- }
- else {
- if(okee("Read saved Render Layers"))
- node_read_renderlayers(snode);
- }
- break;
- case DELKEY:
- case XKEY:
- if(G.qual==LR_ALTKEY) {
- gpencil_delete_menu();
- }
- else {
- if(fromlib) fromlib= -1;
- else node_delete(snode);
+void NODE_OT_hide(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Hide";
+ ot->description= "Toggle hiding of the nodes.";
+ ot->idname= "NODE_OT_hide";
+
+ /* callbacks */
+ ot->exec= node_hide_exec;
+ ot->poll= ED_operator_node_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/* ****************** Mute operator *********************** */
+
+static int node_mute_exec(bContext *C, wmOperator *op)
+{
+ SpaceNode *snode= CTX_wm_space_node(C);
+ bNode *node;
+
+ /* no disabling inside of groups */
+ if(node_tree_get_editgroup(snode->nodetree))
+ return OPERATOR_CANCELLED;
+
+ for(node= snode->edittree->nodes.first; node; node= node->next) {
+ if(node->flag & SELECT) {
+ if(node->inputs.first && node->outputs.first) {
+ node->flag ^= NODE_MUTED;
}
- break;
}
}
+
+ snode_handle_recalc(C, snode);
+
+ return OPERATOR_FINISHED;
+}
- if(fromlib==-1)
- error_libdata();
- if(doredraw)
- scrarea_queue_winredraw(sa);
- if(doredraw==2)
- scrarea_queue_headredraw(sa);
+void NODE_OT_mute(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Mute";
+ ot->description= "Toggle muting of the nodes.";
+ ot->idname= "NODE_OT_mute";
+
+ /* callbacks */
+ ot->exec= node_mute_exec;
+ ot->poll= ED_operator_node_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-#endif
/* ****************** Delete operator ******************* */
@@ -2570,10 +2124,10 @@ static int node_delete_exec(bContext *C, wmOperator *op)
/* set selin and selout NULL if the sockets belong to a node to be deleted */
for(sock= node->inputs.first; sock; sock= sock->next)
if(snode->edittree->selin == sock) snode->edittree->selin= NULL;
-
+
for(sock= node->outputs.first; sock; sock= sock->next)
if(snode->edittree->selout == sock) snode->edittree->selout= NULL;
-
+
/* check id user here, nodeFreeNode is called for free dbase too */
if(node->id)
node->id->us--;
@@ -2583,11 +2137,8 @@ static int node_delete_exec(bContext *C, wmOperator *op)
node_tree_verify_groups(snode->nodetree);
- // NODE_FIX_ME
- // snode_handle_recalc(snode);
-
- WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */
-
+ snode_handle_recalc(C, snode);
+
return OPERATOR_FINISHED;
}
@@ -2606,3 +2157,66 @@ void NODE_OT_delete(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/* ****************** Show Cyclic Dependencies Operator ******************* */
+
+static int node_show_cycles_exec(bContext *C, wmOperator *op)
+{
+ SpaceNode *snode= CTX_wm_space_node(C);
+
+ /* this is just a wrapper around this call... */
+ ntreeSolveOrder(snode->edittree);
+ snode_handle_recalc(C, snode);
+
+ return OPERATOR_FINISHED;
+}
+
+void NODE_OT_show_cyclic_dependencies(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Show Cyclic Dependencies";
+ ot->description= "Sort the nodes and show the cyclic dependencies between the nodes.";
+ ot->idname= "NODE_OT_show_cyclic_dependencies";
+
+ /* callbacks */
+ ot->exec= node_show_cycles_exec;
+ ot->poll= ED_operator_node_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+#if 0
+
+/* ******************** main event loop ****************** */
+
+void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
+{
+ if(val) {
+ switch(event) {
+ case CKEY: /* sort again, showing cyclics */
+ ntreeSolveOrder(snode->edittree);
+ doredraw= 1;
+ break;
+ case EKEY:
+ // XXX snode_handle_recalc(snode);
+ break;
+
+ case RKEY:
+ if(G.qual==LR_CTRLKEY) {
+ node_rename(snode);
+ }
+ else if(G.qual==LR_SHIFTKEY) {
+ if(okee("Read saved Full Sample Layers"))
+ node_read_fullsamplelayers(snode);
+ }
+ else {
+ if(okee("Read saved Render Layers"))
+ node_read_renderlayers(snode);
+ }
+ break;
+ }
+ }
+}
+#endif
+
+
diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c
index a0eae40f579..4cedbe3f666 100644
--- a/source/blender/editors/space_node/node_header.c
+++ b/source/blender/editors/space_node/node_header.c
@@ -202,131 +202,3 @@ void node_menus_register(ARegionType *art)
WM_menutype_add(mt);
}
-#if 0
-static void do_node_nodemenu(bContext *C, void *arg, int event)
-{
- ScrArea *curarea= CTX_wm_area(C);
- SpaceNode *snode= CTX_wm_space_node(C);
- int fromlib=0;
-
- /* functions in editnode.c assume there's a tree */
- if(snode->nodetree==NULL)
- return;
- fromlib= (snode->id && snode->id->lib);
-
- switch(event) {
- case 1: /* grab/move */
- // XXX node_transform_ext(0,0);
- break;
- case 2: /* duplicate */
- if(fromlib) fromlib= -1;
- else ; // XXX node_adduplicate(snode);
- break;
- case 3: /* delete */
- if(fromlib) fromlib= -1;
- else ; // XXX node_delete(snode);
- break;
- case 4: /* make group */
- // XXX node_make_group(snode);
- break;
- case 5: /* ungroup */
- // XXX node_ungroup(snode);
- break;
- case 6: /* edit group */
- if(fromlib) fromlib= -1;
- else ; // XXX snode_make_group_editable(snode, NULL);
- break;
- case 7: /* hide/unhide */
- // XXX node_hide(snode);
- break;
- case 8: /* read saved render layers */
- // XXX node_read_renderlayers(snode);
- break;
- case 9: /* show cyclic */
- // XXX ntreeSolveOrder(snode->edittree);
- break;
- case 10: /* execute */
- // XXXX addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC);
- break;
- case 11: /* make link */
- // XXX node_make_link(snode);
- break;
- case 12: /* rename */
- // XXX node_rename(snode);
- break;
- case 13: /* read saved full sample layers */
- // XXX node_read_fullsamplelayers(snode);
- break;
- case 14: /* connect viewer */
- // XXX node_active_link_viewer(snode);
- break;
-
- }
-
- // XXX if(fromlib==-1) error_libdata();
-
- ED_area_tag_redraw(curarea);
-}
-
-static uiBlock *node_nodemenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- ScrArea *curarea= CTX_wm_area(C);
- SpaceNode *snode= CTX_wm_space_node(C);
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "node_nodemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_node_nodemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move|G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate|Shift D", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Link|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Group|Ctrl G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Ungroup|Alt G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Edit Group|Tab", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide/Unhide|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rename|Ctrl R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- if(snode->treetype==NTREE_COMPOSIT) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Execute Composite|E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Read Saved Render Results|R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Read Saved Full Sample Results|Shift R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Connect Node to Viewer|Ctrl RMB", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- }
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Cyclic Dependencies|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
-
- if(curarea->headertype==HEADERTOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- uiEndBlock(C, block);
-
- return block;
-}
-#endif
-
diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h
index f55ecf1d0f4..84729dd18ec 100644
--- a/source/blender/editors/space_node/node_intern.h
+++ b/source/blender/editors/space_node/node_intern.h
@@ -36,13 +36,8 @@ struct View2D;
struct bContext;
struct wmWindowManager;
-/* defines */
-
-#define NODE_SELECT_MOUSE 1
-
-/* border select defines XXX these seem to be hardcode values still in border select invoke, check */
-#define NODE_EXTEND 1
-#define NODE_EXCLUSIVE 3
+/* space_node.c */
+ARegion *node_has_buttons_region(ScrArea *sa);
/* node_header.c */
void node_header_buttons(const bContext *C, ARegion *ar);
@@ -51,13 +46,16 @@ void node_menus_register(struct ARegionType *art);
/* node_draw.c */
void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d);
+/* node_buttons.c */
+void node_buttons_register(struct ARegionType *art);
+void NODE_OT_properties(struct wmOperatorType *ot);
+
/* node_ops.c */
void node_operatortypes(void);
void node_keymap(wmKeyConfig *keyconf);
/* node_select.c */
void NODE_OT_select(struct wmOperatorType *ot);
-void NODE_OT_select_extend(struct wmOperatorType *ot);
void NODE_OT_select_all(wmOperatorType *ot);
void NODE_OT_select_linked_to(wmOperatorType *ot);
void NODE_OT_select_linked_from(wmOperatorType *ot);
@@ -78,22 +76,31 @@ bNode *next_node(bNodeTree *ntree);
bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy);
void snode_set_context(SpaceNode *snode, Scene *scene);
void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
-void snode_home(ScrArea *sa, ARegion *ar, SpaceNode *snode);
void node_set_active(SpaceNode *snode, bNode *node);
void node_deselectall(SpaceNode *snode);
void snode_composite_job(const struct bContext *C, ScrArea *sa);
bNode *node_tree_get_editgroup(bNodeTree *ntree);
+void node_tree_verify_groups(bNodeTree *nodetree);
void snode_autoconnect(SpaceNode *snode, bNode *node_to, int flag);
+int node_has_hidden_sockets(bNode *node);
void NODE_OT_duplicate(struct wmOperatorType *ot);
-void NODE_OT_link(struct wmOperatorType *ot);
void NODE_OT_delete(struct wmOperatorType *ot);
void NODE_OT_resize(struct wmOperatorType *ot);
+
+void NODE_OT_link(struct wmOperatorType *ot);
+void NODE_OT_link_make(struct wmOperatorType *ot);
void NODE_OT_links_cut(struct wmOperatorType *ot);
+
void NODE_OT_group_make(struct wmOperatorType *ot);
void NODE_OT_group_ungroup(struct wmOperatorType *ot);
void NODE_OT_group_edit(struct wmOperatorType *ot);
+void NODE_OT_mute(struct wmOperatorType *ot);
+void NODE_OT_hide(struct wmOperatorType *ot);
+
+void NODE_OT_show_cyclic_dependencies(struct wmOperatorType *ot);
+
// XXXXXX
// XXX from BSE_node.h
@@ -121,6 +128,6 @@ enum {
B_MATPRV,
B_NODE_LOADIMAGE,
B_NODE_SETIMAGE,
-} eActHeader_ButEvents;
+} eNodeSpace_ButEvents;
#endif /* ED_NODE_INTERN_H */
diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c
index 443b83a91bc..fae9afacbcd 100644
--- a/source/blender/editors/space_node/node_ops.c
+++ b/source/blender/editors/space_node/node_ops.c
@@ -49,41 +49,82 @@
void node_operatortypes(void)
{
+ WM_operatortype_append(NODE_OT_properties);
+
WM_operatortype_append(NODE_OT_select);
- WM_operatortype_append(NODE_OT_select_extend);
WM_operatortype_append(NODE_OT_select_all);
WM_operatortype_append(NODE_OT_select_linked_to);
WM_operatortype_append(NODE_OT_select_linked_from);
- WM_operatortype_append(NODE_OT_visibility_toggle);
- WM_operatortype_append(NODE_OT_view_all);
WM_operatortype_append(NODE_OT_select_border);
+
+ WM_operatortype_append(NODE_OT_view_all);
+ WM_operatortype_append(NODE_OT_visibility_toggle);
+ WM_operatortype_append(NODE_OT_mute);
+ WM_operatortype_append(NODE_OT_hide);
+ WM_operatortype_append(NODE_OT_show_cyclic_dependencies);
+
+ WM_operatortype_append(NODE_OT_duplicate);
WM_operatortype_append(NODE_OT_delete);
- WM_operatortype_append(NODE_OT_link);
WM_operatortype_append(NODE_OT_resize);
+
+ WM_operatortype_append(NODE_OT_link);
+ WM_operatortype_append(NODE_OT_link_make);
WM_operatortype_append(NODE_OT_links_cut);
- WM_operatortype_append(NODE_OT_duplicate);
+
WM_operatortype_append(NODE_OT_group_make);
WM_operatortype_append(NODE_OT_group_ungroup);
WM_operatortype_append(NODE_OT_group_edit);
}
+void ED_operatormacros_node(void)
+{
+ wmOperatorType *ot;
+ wmOperatorTypeMacro *otmacro;
+
+ ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
+ WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
+ otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ RNA_enum_set(otmacro->ptr, "proportional", 0);
+}
+
void node_keymap(struct wmKeyConfig *keyconf)
{
- wmKeyMap *keymap= WM_keymap_find(keyconf, "Node", SPACE_NODE, 0);
+ wmKeyMap *keymap;
wmKeyMapItem *kmi;
- /* mouse select in nodes used to be both keys, it's UI elements... */
- RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, 0, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
- RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
- RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select_extend", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
- RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select_extend", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
+ /* Entire Editor only ----------------- */
+ keymap= WM_keymap_find(keyconf, "Node Generic", SPACE_NODE, 0);
+
+ WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "NODE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+ /* Main Area only ----------------- */
+ keymap= WM_keymap_find(keyconf, "Node", SPACE_NODE, 0);
+ /* mouse select in nodes used to be both keys, but perhaps this should be reduced?
+ * NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize
+ */
+ WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
+ kmi= WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(kmi->ptr, "extend", 1);
+ kmi= WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(kmi->ptr, "extend", 1);
+
+ /* each of these falls through if not handled... */
WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_visibility_toggle", LEFTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "NODE_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_ALT, 0);
+
+ WM_keymap_add_item(keymap, "NODE_OT_links_cut", RIGHTMOUSE, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, 0, 0);
+
+ WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
+
+ WM_keymap_add_item(keymap, "NODE_OT_hide", HKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "NODE_OT_mute", MKEY, KM_PRESS, 0, 0);
+
+ WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_select_border", BKEY, KM_PRESS, 0, 0);
@@ -98,8 +139,5 @@ void node_keymap(struct wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", AKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "name", "NODE_MT_add");
-
transform_keymap_for_space(keyconf, keymap, SPACE_NODE);
}
diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c
index e082f3797c1..c81cfb47f5b 100644
--- a/source/blender/editors/space_node/node_select.c
+++ b/source/blender/editors/space_node/node_select.c
@@ -56,53 +56,35 @@
#include "node_intern.h"
+/* ****** Click Select ****** */
+
static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, short extend)
{
bNode *node;
float mx, my;
+ /* get mouse coordinates in view2d space */
mx= (float)mval[0];
my= (float)mval[1];
UI_view2d_region_to_view(&ar->v2d, mval[0], mval[1], &mx, &my);
+ /* find the closest visible node */
for(next_node(snode->edittree); (node=next_node(NULL));) {
-
- /* first check for the headers or scaling widget */
- /* XXX if(node->flag & NODE_HIDDEN) {
- if(do_header_hidden_node(snode, node, mx, my))
- return 1;
- }
- else {
- if(do_header_node(snode, node, mx, my))
- return 1;
- }*/
-
- /* node body */
- if(BLI_in_rctf(&node->totr, mx, my))
+ /* node body (header and scale are in other operators) */
+ if (BLI_in_rctf(&node->totr, mx, my))
break;
}
- if(node) {
- if((extend & KM_SHIFT)==0)
+
+ if (node) {
+ if (extend == 0) {
node_deselectall(snode);
-
- if(extend & KM_SHIFT) {
- if(node->flag & SELECT)
- node->flag &= ~SELECT;
- else
- node->flag |= SELECT;
+ node->flag |= SELECT;
}
else
- node->flag |= SELECT;
-
+ node->flag ^= SELECT;
+
node_set_active(snode, node);
-
- /* viewer linking */
- if(extend & KM_CTRL)
- ;// node_link_viewer(snode, node);
-
- //std_rmouse_transform(node_transform_ext); /* does undo push for select */
-
}
return node;
@@ -110,27 +92,23 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, shor
static int node_select_exec(bContext *C, wmOperator *op)
{
- // XXX wmWindow *window= CTX_wm_window(C);
SpaceNode *snode= CTX_wm_space_node(C);
ARegion *ar= CTX_wm_region(C);
- int select_type;
short mval[2];
short extend;
bNode *node= NULL;
-
- select_type = RNA_enum_get(op->ptr, "select_type");
- switch (select_type) {
- case NODE_SELECT_MOUSE:
- mval[0] = RNA_int_get(op->ptr, "mouse_x");
- mval[1] = RNA_int_get(op->ptr, "mouse_y");
- extend = RNA_boolean_get(op->ptr, "extend");
- node= node_mouse_select(snode, ar, mval, extend);
- break;
- }
+ /* get settings from RNA properties for operator */
+ mval[0] = RNA_int_get(op->ptr, "mouse_x");
+ mval[1] = RNA_int_get(op->ptr, "mouse_y");
+
+ extend = RNA_boolean_get(op->ptr, "extend");
+
+ /* perform the select */
+ node= node_mouse_select(snode, ar, mval, extend);
/* need refresh/a notifier vs compo notifier */
- // XXX WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */
+ WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */
/* WATCH THIS, there are a few other ways to change the active material */
if(node) {
@@ -138,34 +116,14 @@ static int node_select_exec(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING_DRAW, node->id);
}
}
-
- ED_region_tag_redraw(ar);
+
+ /* send notifiers */
+ WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL);
/* allow tweak event to work too */
return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
}
-static int node_select_modal(bContext *C, wmOperator *op, wmEvent *event)
-{
- /* execute the events */
- switch (event->type) {
- case MOUSEMOVE:
- printf("%d %d\n", event->x, event->y);
- break;
- case SELECTMOUSE:
- //if (event->val==KM_RELEASE) {
- /* calculate overall delta mouse-movement for redo */
- printf("done translating\n");
- //WM_cursor_restore(CTX_wm_window(C));
-
- return OPERATOR_FINISHED;
- //}
- break;
- }
-
- return OPERATOR_RUNNING_MODAL;
-}
-
static int node_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
ARegion *ar= CTX_wm_region(C);
@@ -180,56 +138,21 @@ static int node_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
return node_select_exec(C,op);
}
-static int node_extend_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- RNA_boolean_set(op->ptr, "extend", KM_SHIFT);
-
- return node_select_invoke(C, op, event);
-}
-
-/* operators */
-
-static EnumPropertyItem prop_select_items[] = {
- {NODE_SELECT_MOUSE, "NORMAL", 0, "Normal Select", "Select using the mouse"},
- {0, NULL, 0, NULL, NULL}};
-
-void NODE_OT_select_extend(wmOperatorType *ot)
-{
- // XXX - Todo - This should just be a toggle option for NODE_OT_select not its own op
- /* identifiers */
- ot->name= "Activate/Select (Shift)";
- ot->idname= "NODE_OT_select_extend";
-
- /* api callbacks */
- ot->invoke= node_extend_select_invoke;
- ot->poll= ED_operator_node_active;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- RNA_def_enum(ot->srna, "select_type", prop_select_items, 0, "Select Type", "");
-
- RNA_def_int(ot->srna, "mouse_x", 0, INT_MIN, INT_MAX, "Mouse X", "", INT_MIN, INT_MAX);
- RNA_def_int(ot->srna, "mouse_y", 0, INT_MIN, INT_MAX, "Mouse Y", "", INT_MIN, INT_MAX);
- RNA_def_boolean(ot->srna, "extend", 0, "Extend", "");
-}
void NODE_OT_select(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Activate/Select";
+ ot->name= "Select";
ot->idname= "NODE_OT_select";
/* api callbacks */
ot->invoke= node_select_invoke;
ot->poll= ED_operator_node_active;
- ot->modal= node_select_modal;
/* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-
- RNA_def_enum(ot->srna, "select_type", prop_select_items, 0, "Select Type", "");
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ /* properties */
RNA_def_int(ot->srna, "mouse_x", 0, INT_MIN, INT_MAX, "Mouse X", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "mouse_y", 0, INT_MIN, INT_MAX, "Mouse Y", "", INT_MIN, INT_MAX);
RNA_def_boolean(ot->srna, "extend", 0, "Extend", "");
@@ -343,13 +266,15 @@ static int node_select_linked_to_exec(bContext *C, wmOperator *op)
for (node=snode->edittree->nodes.first; node; node=node->next)
node->flag &= ~NODE_TEST;
- for (link=snode->edittree->links.first; link; link=link->next)
+ for (link=snode->edittree->links.first; link; link=link->next) {
if (link->fromnode->flag & NODE_SELECT)
link->tonode->flag |= NODE_TEST;
+ }
- for (node=snode->edittree->nodes.first; node; node=node->next)
+ for (node=snode->edittree->nodes.first; node; node=node->next) {
if (node->flag & NODE_TEST)
node->flag |= NODE_SELECT;
+ }
WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL);
return OPERATOR_FINISHED;
@@ -381,13 +306,15 @@ static int node_select_linked_from_exec(bContext *C, wmOperator *op)
for(node=snode->edittree->nodes.first; node; node=node->next)
node->flag &= ~NODE_TEST;
- for(link=snode->edittree->links.first; link; link=link->next)
+ for(link=snode->edittree->links.first; link; link=link->next) {
if(link->tonode->flag & NODE_SELECT)
link->fromnode->flag |= NODE_TEST;
+ }
- for(node=snode->edittree->nodes.first; node; node=node->next)
+ for(node=snode->edittree->nodes.first; node; node=node->next) {
if(node->flag & NODE_TEST)
node->flag |= NODE_SELECT;
+ }
WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL);
return OPERATOR_FINISHED;
diff --git a/source/blender/editors/space_node/node_state.c b/source/blender/editors/space_node/node_state.c
index dcab3dc0895..286e95cf9bd 100644
--- a/source/blender/editors/space_node/node_state.c
+++ b/source/blender/editors/space_node/node_state.c
@@ -55,6 +55,49 @@
#include "node_intern.h"
+/* **************** Node Header Buttons ************** */
+
+static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node)
+{
+ bNodeSocket *sock;
+
+ /* unhide all */
+ if( node_has_hidden_sockets(node) ) {
+ for(sock= node->inputs.first; sock; sock= sock->next)
+ sock->flag &= ~SOCK_HIDDEN;
+ for(sock= node->outputs.first; sock; sock= sock->next)
+ sock->flag &= ~SOCK_HIDDEN;
+ }
+ else {
+ bNode *gnode= node_tree_get_editgroup(snode->nodetree);
+
+ /* hiding inside group should not break links in other group users */
+ if(gnode) {
+ nodeGroupSocketUseFlags((bNodeTree *)gnode->id);
+ for(sock= node->inputs.first; sock; sock= sock->next)
+ if(!(sock->flag & SOCK_IN_USE))
+ if(sock->link==NULL)
+ sock->flag |= SOCK_HIDDEN;
+ for(sock= node->outputs.first; sock; sock= sock->next)
+ if(!(sock->flag & SOCK_IN_USE))
+ if(nodeCountSocketLinks(snode->edittree, sock)==0)
+ sock->flag |= SOCK_HIDDEN;
+ }
+ else {
+ /* hide unused sockets */
+ for(sock= node->inputs.first; sock; sock= sock->next) {
+ if(sock->link==NULL)
+ sock->flag |= SOCK_HIDDEN;
+ }
+ for(sock= node->outputs.first; sock; sock= sock->next) {
+ if(nodeCountSocketLinks(snode->edittree, sock)==0)
+ sock->flag |= SOCK_HIDDEN;
+ }
+ }
+ }
+
+ node_tree_verify_groups(snode->nodetree);
+}
static int do_header_node(SpaceNode *snode, bNode *node, float mx, float my)
{
@@ -93,7 +136,7 @@ static int do_header_node(SpaceNode *snode, bNode *node, float mx, float my)
}
/* hide unused sockets */
if(BLI_in_rctf(&totr, mx, my)) {
- // XXX node_hide_unhide_sockets(snode, node);
+ node_hide_unhide_sockets(snode, node);
}
return 0;
@@ -149,7 +192,7 @@ static int node_toggle_visibility_exec(bContext *C, wmOperator *op)
if(node_toggle_visibility(snode, ar, mval))
return OPERATOR_FINISHED;
else
- return OPERATOR_PASS_THROUGH;
+ return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH;
}
static int node_toggle_visibility_invoke(bContext *C, wmOperator *op, wmEvent *event)
@@ -171,6 +214,7 @@ void NODE_OT_visibility_toggle(wmOperatorType *ot)
/* identifiers */
ot->name= "Toggle Visibility";
ot->idname= "NODE_OT_visibility_toggle";
+ ot->description= "Handle clicks on node header buttons.";
/* api callbacks */
ot->invoke= node_toggle_visibility_invoke;
@@ -183,13 +227,67 @@ void NODE_OT_visibility_toggle(wmOperatorType *ot)
RNA_def_int(ot->srna, "mouse_y", 0, INT_MIN, INT_MAX, "Mouse Y", "", INT_MIN, INT_MAX);
}
+/* **************** View All Operator ************** */
+
+static void snode_home(ScrArea *sa, ARegion *ar, SpaceNode* snode)
+{
+ bNode *node;
+ rctf *cur, *tot;
+ float oldwidth, oldheight, width, height;
+ int first= 1;
+
+ cur= &ar->v2d.cur;
+ tot= &ar->v2d.tot;
+
+ oldwidth= cur->xmax - cur->xmin;
+ oldheight= cur->ymax - cur->ymin;
+
+ cur->xmin= cur->ymin= 0.0f;
+ cur->xmax=ar->winx;
+ cur->xmax= ar->winy;
+
+ if(snode->edittree) {
+ for(node= snode->edittree->nodes.first; node; node= node->next) {
+ if(first) {
+ first= 0;
+ ar->v2d.cur= node->totr;
+ }
+ else {
+ BLI_union_rctf(cur, &node->totr);
+ }
+ }
+ }
+
+ snode->xof= 0;
+ snode->yof= 0;
+ width= cur->xmax - cur->xmin;
+ height= cur->ymax- cur->ymin;
+ if(width > height) {
+ float newheight;
+ newheight= oldheight * width/oldwidth;
+ cur->ymin= cur->ymin - newheight/4;
+ cur->ymax= cur->ymin + newheight;
+ }
+ else {
+ float newwidth;
+ newwidth= oldwidth * height/oldheight;
+ cur->xmin= cur->xmin - newwidth/4;
+ cur->xmax= cur->xmin + newwidth;
+ }
+
+ ar->v2d.tot= ar->v2d.cur;
+ UI_view2d_curRect_validate(&ar->v2d);
+}
+
static int node_view_all_exec(bContext *C, wmOperator *op)
{
ScrArea *sa= CTX_wm_area(C);
ARegion *ar= CTX_wm_region(C);
SpaceNode *snode= CTX_wm_space_node(C);
+
snode_home(sa, ar, snode);
ED_region_tag_redraw(ar);
+
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 46461eff76b..f5c6efa2fb8 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -40,7 +40,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -65,6 +65,35 @@
#include "node_intern.h" // own include
+/* ******************** manage regions ********************* */
+
+ARegion *node_has_buttons_region(ScrArea *sa)
+{
+ ARegion *ar, *arnew;
+
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_UI)
+ return ar;
+
+ /* add subdiv level; after header */
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_HEADER)
+ break;
+
+ /* is error! */
+ if(ar==NULL) return NULL;
+
+ arnew= MEM_callocN(sizeof(ARegion), "buttons for node");
+
+ BLI_insertlinkafter(&sa->regionbase, ar, arnew);
+ arnew->regiontype= RGN_TYPE_UI;
+ arnew->alignment= RGN_ALIGN_RIGHT;
+
+ arnew->flag = RGN_FLAG_HIDDEN;
+
+ return arnew;
+}
+
/* ******************** default callbacks for node space ***************** */
static SpaceLink *node_new(const bContext *C)
@@ -82,16 +111,13 @@ static SpaceLink *node_new(const bContext *C)
ar->regiontype= RGN_TYPE_HEADER;
ar->alignment= RGN_ALIGN_BOTTOM;
-#if 0
- /* channels */
- ar= MEM_callocN(sizeof(ARegion), "nodetree area for node");
+ /* buttons/list view */
+ ar= MEM_callocN(sizeof(ARegion), "buttons for node");
BLI_addtail(&snode->regionbase, ar);
- ar->regiontype= RGN_TYPE_CHANNELS;
- ar->alignment= RGN_ALIGN_LEFT;
-
- //ar->v2d.scroll = (V2D_SCROLL_RIGHT|V2D_SCROLL_BOTTOM);
-#endif
+ ar->regiontype= RGN_TYPE_UI;
+ ar->alignment= RGN_ALIGN_RIGHT;
+ ar->flag = RGN_FLAG_HIDDEN;
/* main area */
ar= MEM_callocN(sizeof(ARegion), "main area for node");
@@ -128,9 +154,7 @@ static SpaceLink *node_new(const bContext *C)
/* not spacelink itself */
static void node_free(SpaceLink *sl)
{
-// SpaceNode *snode= (SpaceNode*) sl;
-// XXX if(snode->gpd) free_gpencil_data(snode->gpd);
}
@@ -174,6 +198,9 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn)
else if(wmn->data==ND_SPACE_NODE_VIEW)
ED_area_tag_redraw(sa);
break;
+ case NC_NODE:
+ ED_area_tag_refresh(sa);
+ break;
}
}
@@ -210,41 +237,26 @@ static SpaceLink *node_duplicate(SpaceLink *sl)
/* clear or remove stuff from old */
snoden->nodetree= NULL;
-// XXX snoden->gpd= gpencil_data_duplicate(snode->gpd);
return (SpaceLink *)snoden;
}
-#if 0
-static void node_channel_area_init(wmWindowManager *wm, ARegion *ar)
+
+/* add handlers, stuff you only do once or on area/region changes */
+static void node_buttons_area_init(wmWindowManager *wm, ARegion *ar)
{
- UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
+ wmKeyMap *keymap;
+
+ ED_region_panels_init(wm, ar);
+
+ keymap= WM_keymap_find(wm->defaultconf, "Node Generic", SPACE_NODE, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
}
-static void node_channel_area_draw(const bContext *C, ARegion *ar)
+static void node_buttons_area_draw(const bContext *C, ARegion *ar)
{
- View2D *v2d= &ar->v2d;
- View2DScrollers *scrollers;
- float col[3];
-
- /* clear and setup matrix */
- UI_GetThemeColor3fv(TH_BACK, col);
- glClearColor(col[0], col[1], col[2], 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- UI_view2d_view_ortho(C, v2d);
-
- /* data... */
-
- /* reset view matrix */
- UI_view2d_view_restore(C);
-
- /* scrollers */
- scrollers= UI_view2d_scrollers_calc(C, v2d, V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_ARG_DUMMY);
- UI_view2d_scrollers_draw(C, v2d, scrollers);
- UI_view2d_scrollers_free(scrollers);
+ ED_region_panels(C, ar, 1, NULL, -1);
}
-#endif
/* Initialise main area, setting handlers. */
static void node_main_area_init(wmWindowManager *wm, ARegion *ar)
@@ -253,7 +265,10 @@ static void node_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
- /* own keymap */
+ /* own keymaps */
+ keymap= WM_keymap_find(wm->defaultconf, "Node Generic", SPACE_NODE, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
+
keymap= WM_keymap_find(wm->defaultconf, "Node", SPACE_NODE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -287,6 +302,10 @@ static void node_region_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
switch(wmn->category) {
+ case NC_SPACE:
+ if(wmn->data==ND_SPACE_NODE)
+ ED_region_tag_redraw(ar);
+ break;
case NC_SCENE:
case NC_MATERIAL:
case NC_TEXTURE:
@@ -343,7 +362,7 @@ void ED_spacetype_node(void)
art->init= node_main_area_init;
art->draw= node_main_area_draw;
art->listener= node_region_listener;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_GPENCIL;
BLI_addhead(&st->regiontypes, art);
@@ -351,7 +370,7 @@ void ED_spacetype_node(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype node region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= node_region_listener;
art->init= node_header_area_init;
art->draw= node_header_area_draw;
@@ -360,19 +379,17 @@ void ED_spacetype_node(void)
node_menus_register(art);
-#if 0
- /* regions: channels */
+ /* regions: listview/buttons */
art= MEM_callocN(sizeof(ARegionType), "spacetype node region");
- art->regionid = RGN_TYPE_CHANNELS;
- art->minsizex= 100;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
-
- art->init= node_channel_area_init;
- art->draw= node_channel_area_draw;
-
+ art->regionid = RGN_TYPE_UI;
+ art->minsizex= 180; // XXX
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
+ art->listener= node_region_listener;
+ art->init= node_buttons_area_init;
+ art->draw= node_buttons_area_draw;
BLI_addhead(&st->regiontypes, art);
-#endif
+ node_buttons_register(art);
BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index 39eecd7d2de..bfb1724af35 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -4747,7 +4747,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
case ID_SCE:
WM_event_add_notifier(C, NC_SCENE, NULL); break;
default:
- WM_event_add_notifier(C, NC_MATERIAL, NULL); break;
+ WM_event_add_notifier(C, NC_ID|ND_ID_RENAME, NULL); break;
}
/* Check the library target exists */
if (te->idcode == ID_LI) {
diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c
index 431801d50f2..434c7942714 100644
--- a/source/blender/editors/space_outliner/outliner_ops.c
+++ b/source/blender/editors/space_outliner/outliner_ops.c
@@ -107,8 +107,8 @@ void outliner_keymap(wmKeyConfig *keyconf)
WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_add_selected", KKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_remove_selected", KKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe", IKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_add_selected", DKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_delete_selected", DKEY, KM_PRESS, KM_ALT, 0);
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 93fdc96e9f7..31de6839468 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -43,7 +43,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -147,6 +147,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_OUTLINER)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -277,7 +281,7 @@ void ED_spacetype_outliner(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= outliner_header_area_init;
art->draw= outliner_header_area_draw;
diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c
index df6f932acdf..153f1236dce 100644
--- a/source/blender/editors/space_script/script_edit.c
+++ b/source/blender/editors/space_script/script_edit.c
@@ -81,6 +81,7 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot)
ot->name= "Run python file";
ot->description= "Run Python file.";
ot->idname= "SCRIPT_OT_python_file_run";
+ ot->flag = OPTYPE_UNDO;
/* api callbacks */
ot->exec= run_pyfile_exec;
@@ -89,34 +90,3 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot)
RNA_def_string_file_path(ot->srna, "path", "", 512, "Path", "");
}
-static int run_ui_scripts_exec(bContext *C, wmOperator *op)
-{
-#ifndef DISABLE_PYTHON
- BPY_run_ui_scripts(C, 1); /* reload */
-#endif
- return OPERATOR_FINISHED;
-}
-
-static int run_ui_scripts_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- int ret= run_ui_scripts_exec(C, op);
-
- if(ret==OPERATOR_FINISHED)
- WM_event_add_notifier(C, NC_WINDOW, NULL);
-
- return ret;
-}
-
-
-void SCRIPT_OT_python_run_ui_scripts(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Reload Python Interface";
- ot->description= "Reload Python interface.";
- ot->idname= "SCRIPT_OT_python_run_ui_scripts";
-
- /* api callbacks */
- ot->exec= run_ui_scripts_exec;
- ot->invoke= run_ui_scripts_invoke;
- ot->poll= ED_operator_areaactive;
-}
diff --git a/source/blender/editors/space_script/script_intern.h b/source/blender/editors/space_script/script_intern.h
index 7534fc98de1..08ec8ea289a 100644
--- a/source/blender/editors/space_script/script_intern.h
+++ b/source/blender/editors/space_script/script_intern.h
@@ -40,7 +40,6 @@ void script_keymap(struct wmKeyConfig *keyconf);
/* script_edit.c */
void SCRIPT_OT_python_file_run(struct wmOperatorType *ot);
-void SCRIPT_OT_python_run_ui_scripts(struct wmOperatorType *ot);
#endif /* ED_SCRIPT_INTERN_H */
diff --git a/source/blender/editors/space_script/script_ops.c b/source/blender/editors/space_script/script_ops.c
index bf0a7e5769e..4ac90e852fb 100644
--- a/source/blender/editors/space_script/script_ops.c
+++ b/source/blender/editors/space_script/script_ops.c
@@ -37,7 +37,7 @@
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_context.h"
@@ -60,7 +60,6 @@
void script_operatortypes(void)
{
WM_operatortype_append(SCRIPT_OT_python_file_run);
- WM_operatortype_append(SCRIPT_OT_python_run_ui_scripts);
}
void script_keymap(wmKeyConfig *keyconf)
@@ -69,6 +68,5 @@ void script_keymap(wmKeyConfig *keyconf)
/* TODO - this is just while we have no way to load a text datablock */
RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "path", "test.py");
- WM_keymap_add_item(keymap, "SCRIPT_OT_python_run_ui_scripts", PKEY, KM_PRESS, KM_SHIFT, 0);
}
diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c
index eae0f77d0e1..e6edb71c1b1 100644
--- a/source/blender/editors/space_script/space_script.c
+++ b/source/blender/editors/space_script/space_script.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -219,7 +219,7 @@ void ED_spacetype_script(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype script region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= script_header_area_init;
art->draw= script_header_area_draw;
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index bd5259ddb52..ba3735834bc 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -38,7 +38,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_storage_types.h"
#include "IMB_imbuf_types.h"
@@ -100,6 +100,7 @@
/* avoid passing multiple args and be more verbose */
#define SEQPROP_STARTFRAME 1<<0
#define SEQPROP_ENDFRAME 1<<1
+#define SEQPROP_FILES 1<<2
static void sequencer_generic_props__internal(wmOperatorType *ot, int flag)
{
@@ -114,6 +115,9 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag)
RNA_def_int(ot->srna, "channel", 1, 1, MAXSEQ, "Channel", "Channel to place this strip into", 1, MAXSEQ);
RNA_def_boolean(ot->srna, "replace_sel", 1, "Replace Selection", "replace the current selection");
+
+ if(flag & SEQPROP_FILES)
+ RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
}
static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, wmEvent *event, int flag)
@@ -138,6 +142,31 @@ static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, w
}
+static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op)
+{
+ memset(seq_load, 0, sizeof(SeqLoadInfo));
+
+ seq_load->start_frame= RNA_int_get(op->ptr, "start_frame");
+ seq_load->channel= RNA_int_get(op->ptr, "channel");
+ seq_load->len= 1; // images only!
+
+ RNA_string_get(op->ptr, "name", seq_load->name);
+
+ RNA_string_get(op->ptr, "path", seq_load->path); /* full path, file is set by the caller */
+
+ if (RNA_struct_find_property(op->ptr, "replace_sel") && RNA_boolean_get(op->ptr, "replace_sel"))
+ seq_load->flag |= SEQ_LOAD_REPLACE_SEL;
+
+ if (RNA_struct_find_property(op->ptr, "cache") && RNA_boolean_get(op->ptr, "cache"))
+ seq_load->flag |= SEQ_LOAD_SOUND_CACHE;
+
+ if (RNA_struct_find_property(op->ptr, "sound") && RNA_boolean_get(op->ptr, "sound"))
+ seq_load->flag |= SEQ_LOAD_MOVIE_SOUND;
+
+ /* always use this for ops */
+ seq_load->flag |= SEQ_LOAD_FRAME_ADVANCE;
+}
+
/* add scene operator */
static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
{
@@ -185,7 +214,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
if (RNA_boolean_get(op->ptr, "replace_sel")) {
deselect_all_seq(scene);
- set_last_seq(scene, seq);
+ active_seq_set(scene, seq);
seq->flag |= SELECT;
}
@@ -227,127 +256,57 @@ void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot)
RNA_def_string(ot->srna, "scene", "", MAX_ID_NAME-2, "Scene Name", "Scene name to add as a strip");
}
-static Sequence* sequencer_add_sound_strip(bContext *C, wmOperator *op, int start_frame, int channel, char* filename)
+static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoadFunc seq_load_func)
{
- Scene *scene= CTX_data_scene(C);
+ Scene *scene= CTX_data_scene(C); /* only for sound */
Editing *ed= seq_give_editing(scene, TRUE);
+ SeqLoadInfo seq_load;
+ Sequence *seq;
+ int tot_files;
- bSound *sound;
+ seq_load_operator_info(&seq_load, op);
- Sequence *seq; /* generic strip vars */
- Strip *strip;
- StripElem *se;
+ if (seq_load.flag & SEQ_LOAD_REPLACE_SEL)
+ deselect_all_seq(scene);
- AUD_SoundInfo info;
+ tot_files= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files"));
- sound = sound_new_file(CTX_data_main(C), filename);
+ if(tot_files) {
+ /* multiple files */
+ char dir_only[FILE_MAX];
+ char file_only[FILE_MAX];
- if (sound==NULL || sound->handle == NULL) {
- if(op)
- BKE_report(op->reports, RPT_ERROR, "Unsupported audio format");
- return NULL;
- }
+ BLI_split_dirfile_basic(seq_load.path, dir_only, NULL);
- info = AUD_getInfo(sound->handle);
+ RNA_BEGIN(op->ptr, itemptr, "files") {
+ RNA_string_get(&itemptr, "name", file_only);
+ BLI_join_dirfile(seq_load.path, dir_only, file_only);
- if (info.specs.format == AUD_FORMAT_INVALID) {
- sound_delete(C, sound);
- if(op)
- BKE_report(op->reports, RPT_ERROR, "Unsupported audio format");
- return NULL;
+ seq= seq_load_func(C, ed->seqbasep, &seq_load);
+ }
+ RNA_END;
+ }
+ else {
+ /* single file */
+ seq= seq_load_func(C, ed->seqbasep, &seq_load);
}
- seq = alloc_sequence(ed->seqbasep, start_frame, channel);
-
- seq->type= SEQ_SOUND;
- seq->sound= sound;
-
- /* basic defaults */
- seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
- strip->len = seq->len = (int) (info.length * FPS);
- strip->us= 1;
-
- strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
-
- BLI_split_dirfile_basic(filename, strip->dir, se->name);
-
- seq->sound_handle = sound_new_handle(scene, sound, start_frame, start_frame + strip->len, 0);
+ if (seq_load.tot_success==0) {
+ BKE_reportf(op->reports, RPT_ERROR, "File \"%s\" could not be loaded", seq_load.path);
+ return OPERATOR_CANCELLED;
+ }
- calc_sequence_disp(seq);
sort_seq(scene);
- /* last active name */
- strncpy(ed->act_sounddir, strip->dir, FILE_MAXDIR-1);
+ ED_area_tag_redraw(CTX_wm_area(C));
- return seq;
+ return OPERATOR_FINISHED;
}
/* add movie operator */
static int sequencer_add_movie_strip_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Editing *ed= seq_give_editing(scene, TRUE);
-
- struct anim *an;
- char path[FILE_MAX];
-
- Sequence *seq, *soundseq=NULL; /* generic strip vars */
- Strip *strip;
- StripElem *se;
-
- int start_frame, channel, sound; /* operator props */
-
- start_frame= RNA_int_get(op->ptr, "start_frame");
- channel= RNA_int_get(op->ptr, "channel");
- sound = RNA_boolean_get(op->ptr, "sound");
-
- RNA_string_get(op->ptr, "path", path);
-
- an = openanim(path, IB_rect);
-
- if (an==NULL) {
- BKE_reportf(op->reports, RPT_ERROR, "File \"%s\" could not be loaded as a movie", path);
- return OPERATOR_CANCELLED;
- }
-
- seq = alloc_sequence(ed->seqbasep, start_frame, channel);
-
- seq->type= SEQ_MOVIE;
- seq->anim= an;
- seq->anim_preseek = IMB_anim_get_preseek(an);
-
- /* basic defaults */
- seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
- strip->len = seq->len = IMB_anim_get_duration( an );
- strip->us= 1;
-
- strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
-
- BLI_split_dirfile_basic(path, strip->dir, se->name);
-
- RNA_string_get(op->ptr, "name", seq->name);
-
- calc_sequence_disp(seq);
- sort_seq(scene);
-
- if(sound)
- {
- soundseq = sequencer_add_sound_strip(C, NULL, start_frame, channel+1, path);
- if(soundseq != NULL)
- RNA_string_get(op->ptr, "name", soundseq->name);
- }
-
- if (RNA_boolean_get(op->ptr, "replace_sel")) {
- deselect_all_seq(scene);
- set_last_seq(scene, seq);
- seq->flag |= SELECT;
- if(soundseq)
- soundseq->flag |= SELECT;
- }
-
- ED_area_tag_redraw(CTX_wm_area(C));
-
- return OPERATOR_FINISHED;
+ return sequencer_add_generic_strip_exec(C, op, sequencer_add_movie_strip);
}
@@ -377,46 +336,17 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL);
- sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
+ sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie");
}
/* add sound operator */
+
static int sequencer_add_sound_strip_exec(bContext *C, wmOperator *op)
{
- char path[FILE_MAX];
- Scene *scene= CTX_data_scene(C);
- Sequence *seq; /* generic strip vars */
- int start_frame, channel; /* operator props */
-
- start_frame= RNA_int_get(op->ptr, "start_frame");
- channel= RNA_int_get(op->ptr, "channel");
-
- RNA_string_get(op->ptr, "path", path);
-
- seq = sequencer_add_sound_strip(C, op, start_frame, channel, path);
-
- if(seq == NULL)
- return OPERATOR_CANCELLED;
-
- RNA_string_get(op->ptr, "name", seq->name);
-
- if (RNA_boolean_get(op->ptr, "cache")) {
- sound_cache(seq->sound, 0);
- }
-
- if (RNA_boolean_get(op->ptr, "replace_sel")) {
- deselect_all_seq(scene);
- set_last_seq(scene, seq);
- seq->flag |= SELECT;
- }
-
- ED_area_tag_redraw(CTX_wm_area(C));
-
- return OPERATOR_FINISHED;
+ return sequencer_add_generic_strip_exec(C, op, sequencer_add_sound_strip);
}
-
static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
sequencer_generic_invoke_xy__internal(C, op, event, 0);
@@ -443,46 +373,41 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL);
- sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
+ sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory.");
}
/* add image operator */
static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Editing *ed= seq_give_editing(scene, TRUE);
-
- int tot_images;
+ /* cant use the generic function for this */
- char path[FILE_MAX];
+ Scene *scene= CTX_data_scene(C); /* only for sound */
+ Editing *ed= seq_give_editing(scene, TRUE);
+ SeqLoadInfo seq_load;
+ Sequence *seq;
- Sequence *seq; /* generic strip vars */
Strip *strip;
StripElem *se;
-
- int start_frame, channel; /* operator props */
-
- start_frame= RNA_int_get(op->ptr, "start_frame");
- channel= RNA_int_get(op->ptr, "channel");
-
- RNA_string_get(op->ptr, "path", path);
- seq = alloc_sequence(ed->seqbasep, start_frame, channel);
- seq->type= SEQ_IMAGE;
-
- /* basic defaults */
- seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
- BLI_split_dirfile_basic(path, strip->dir, NULL);
-
- tot_images= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files"));
-
- strip->len = seq->len = tot_images?tot_images:1;
- strip->us= 1;
-
- strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
+ seq_load_operator_info(&seq_load, op);
+
+ /* images are unique in how they handle this - 1 per strip elem */
+ seq_load.len= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files"));
+
+ if(seq_load.len==0)
+ seq_load.len= 1;
+
+ if(seq_load.flag & SEQ_LOAD_REPLACE_SEL)
+ deselect_all_seq(scene);
+
- if(tot_images) {
+ /* main adding function */
+ seq= sequencer_add_image_strip(C, ed->seqbasep, &seq_load);
+ strip= seq->strip;
+ se= strip->stripdata;
+
+ if(seq_load.len > 1) {
RNA_BEGIN(op->ptr, itemptr, "files") {
RNA_string_get(&itemptr, "name", se->name);
se++;
@@ -490,29 +415,21 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
RNA_END;
}
else {
- BLI_split_dirfile_basic(path, NULL, se->name);
+ BLI_split_dirfile_basic(seq_load.path, NULL, se->name);
}
-
- RNA_string_get(op->ptr, "name", seq->name);
calc_sequence_disp(seq);
+
sort_seq(scene);
-
+
/* last active name */
strncpy(ed->act_imagedir, strip->dir, FILE_MAXDIR-1);
- if (RNA_boolean_get(op->ptr, "replace_sel")) {
- deselect_all_seq(scene);
- set_last_seq(scene, seq);
- seq->flag |= SELECT;
- }
-
ED_area_tag_redraw(CTX_wm_area(C));
-
+
return OPERATOR_FINISHED;
}
-
static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
sequencer_generic_invoke_xy__internal(C, op, event, 0);
@@ -539,9 +456,7 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL);
- sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
-
- RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
+ sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
}
@@ -583,6 +498,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
seq = alloc_sequence(ed->seqbasep, start_frame, channel);
seq->type= type;
+ seqUniqueName(ed->seqbasep, seq);
+
sh = get_sequence_effect(seq);
seq->seq1= seq1;
@@ -596,6 +513,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
seq_tx_set_final_right(seq, end_frame);
}
+ seq->flag |= SEQ_USE_EFFECT_DEFAULT_FADE;
+
calc_sequence(seq);
/* basic defaults */
@@ -634,7 +553,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
if (RNA_boolean_get(op->ptr, "replace_sel")) {
deselect_all_seq(scene);
- set_last_seq(scene, seq);
+ active_seq_set(scene, seq);
seq->flag |= SELECT;
}
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 76bed3772b1..a1488d867d7 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -31,7 +31,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "IMB_imbuf_types.h"
@@ -57,6 +57,7 @@
#include "BIF_glutil.h"
#include "ED_anim_api.h"
+#include "ED_markers.h"
#include "ED_space_api.h"
#include "ED_sequencer.h"
#include "ED_types.h"
@@ -77,18 +78,6 @@
int no_rightbox=0, no_leftbox= 0;
static void draw_shadedstrip(Sequence *seq, char *col, float x1, float y1, float x2, float y2);
-
-static void draw_cfra_seq(View2D *v2d, int cfra)
-{
- glColor3ub(0x30, 0x90, 0x50);
- glLineWidth(2.0);
- glBegin(GL_LINES);
- glVertex2f(cfra, v2d->cur.ymin);
- glVertex2f(cfra, v2d->cur.ymax);
- glEnd();
- glLineWidth(1.0);
-}
-
static void get_seq_color3ubv(Scene *curscene, Sequence *seq, char *col)
{
char blendcol[3];
@@ -525,7 +514,7 @@ static void draw_shadedstrip(Sequence *seq, char *col, float x1, float y1, float
/*
Draw a sequence strip, bounds check alredy made
ARegion is currently only used to get the windows width in pixels
-so wave file sample drawing precission is zoom adjusted
+so wave file sample drawing precision is zoom adjusted
*/
static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence *seq, int outline_tint, float pixelx)
{
@@ -622,8 +611,8 @@ void set_special_seq_update(int val)
else special_seq_update= 0;
}
-
-static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
+// XXX todo: remove special offset code for image-buf calculations...
+void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
{
extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad);
struct ImBuf *ibuf;
@@ -779,6 +768,7 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
}
+// XXX part of wacko image-drawing system...
void seq_reset_imageofs(SpaceSeq *sseq)
{
sseq->xof = sseq->yof = sseq->zoom = 0;
@@ -874,109 +864,143 @@ void drawprefetchseqspace(Scene *scene, ARegion *ar, SpaceSeq *sseq)
}
}
-void drawseqspace(const bContext *C, ARegion *ar)
+/* draw backdrop of the sequencer strips view */
+static void draw_seq_backdrop(View2D *v2d)
{
- ScrArea *sa= CTX_wm_area(C);
- SpaceSeq *sseq= sa->spacedata.first;
- Scene *scene= CTX_data_scene(C);
- View2D *v2d= &ar->v2d;
- View2DScrollers *scrollers;
- Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *seq;
- float col[3];
int i;
-
- if(sseq->mainb != SEQ_DRAW_SEQUENCE) {
- draw_image_seq(scene, ar, sseq);
- return;
- }
-
- UI_GetThemeColor3fv(TH_BACK, col);
- if(ed && ed->metastack.first) glClearColor(col[0], col[1], col[2]-0.1, 0.0);
- else glClearColor(col[0], col[1], col[2], 0.0);
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- UI_view2d_view_ortho(C, v2d);
+ /* darker grey overlay over the view backdrop */
UI_ThemeColorShade(TH_BACK, -20);
- glRectf(v2d->cur.xmin, 0.0, v2d->cur.xmax, 1.0);
+ glRectf(v2d->cur.xmin, -1.0, v2d->cur.xmax, 1.0);
- boundbox_seq(scene, &v2d->tot);
-
/* Alternating horizontal stripes */
i= MAX2(1, ((int)v2d->cur.ymin)-1);
glBegin(GL_QUADS);
- while (i<v2d->cur.ymax) {
- if (((int)i) & 1)
- UI_ThemeColorShade(TH_BACK, -15);
- else
- UI_ThemeColorShade(TH_BACK, -25);
-
- glVertex2f(v2d->cur.xmax, i);
- glVertex2f(v2d->cur.xmin, i);
- glVertex2f(v2d->cur.xmin, i+1);
- glVertex2f(v2d->cur.xmax, i+1);
- i+=1.0;
- }
+ while (i<v2d->cur.ymax) {
+ if (((int)i) & 1)
+ UI_ThemeColorShade(TH_BACK, -15);
+ else
+ UI_ThemeColorShade(TH_BACK, -25);
+
+ glVertex2f(v2d->cur.xmax, i);
+ glVertex2f(v2d->cur.xmin, i);
+ glVertex2f(v2d->cur.xmin, i+1);
+ glVertex2f(v2d->cur.xmax, i+1);
+
+ i+=1.0;
+ }
glEnd();
- /* Force grid lines */
+ /* Darker lines separating the horizontal bands */
i= MAX2(1, ((int)v2d->cur.ymin)-1);
+ UI_ThemeColor(TH_GRID);
+
glBegin(GL_LINES);
-
- while (i<v2d->cur.ymax) {
- UI_ThemeColor(TH_GRID);
- glVertex2f(v2d->cur.xmax, i);
- glVertex2f(v2d->cur.xmin, i);
- i+=1.0;
- }
+ while (i < v2d->cur.ymax) {
+ glVertex2f(v2d->cur.xmax, i);
+ glVertex2f(v2d->cur.xmin, i);
+
+ i+=1.0;
+ }
glEnd();
-
- UI_view2d_constant_grid_draw(C, v2d);
+}
- draw_cfra_seq(v2d, scene->r.cfra);
-
- /* sequences: first deselect */
- if(ed) {
- Sequence *last_seq = get_last_seq(scene);
- int sel = 0, j;
- int outline_tint;
- float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin);
- /* loop through twice, first unselected, then selected */
- for (j=0; j<2; j++) {
- seq= ed->seqbasep->first;
- if (j==0) outline_tint = -150;
- else outline_tint = -60;
+/* draw the contents of the sequencer strips view */
+static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar)
+{
+ Scene *scene= CTX_data_scene(C);
+ SpaceSeq *sseq= CTX_wm_space_seq(C);
+ View2D *v2d= &ar->v2d;
+ Sequence *last_seq = active_seq_get(scene);
+ int sel = 0, j;
+ float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin);
+
+ /* loop through twice, first unselected, then selected */
+ for (j=0; j<2; j++) {
+ Sequence *seq;
+ int outline_tint= (j) ? -60 : -150; /* highlighting around strip edges indicating selection */
+
+ /* loop through strips, checking for those that are visible */
+ for (seq= ed->seqbasep->first; seq; seq= seq->next) {
+ /* boundbox and selection tests for NOT drawing the strip... */
+ if ((seq->flag & SELECT) == sel) continue;
+ else if (seq == last_seq) continue;
+ else if (MIN2(seq->startdisp, seq->start) > v2d->cur.xmax) continue;
+ else if (MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin) continue;
+ else if (seq->machine+1.0 < v2d->cur.ymin) continue;
+ else if (seq->machine > v2d->cur.ymax) continue;
- while(seq) { /* bound box test, dont draw outside the view */
- if ( ((seq->flag & SELECT) == sel) ||
- seq == last_seq ||
- MIN2(seq->startdisp, seq->start) > v2d->cur.xmax ||
- MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin ||
- seq->machine+1.0 < v2d->cur.ymin ||
- seq->machine > v2d->cur.ymax)
- {
- /* dont draw */
- } else {
- draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx);
- }
- seq= seq->next;
- }
- sel= SELECT; /* draw selected next time round */
- }
- /* draw the last selected last, removes some overlapping error */
- if (last_seq) {
- draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx);
+ /* strip passed all tests unscathed... so draw it now */
+ draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx);
}
+
+ /* draw selected next time round */
+ sel= SELECT;
}
+
+ /* draw the last selected last (i.e. 'active' in other parts of Blender), removes some overlapping error */
+ if (last_seq)
+ draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx);
+}
- /* text draw cached, in pixelspace now */
- UI_view2d_text_cache_draw(ar);
+/* Draw Timeline/Strip Editor Mode for Sequencer */
+void draw_timeline_seq(const bContext *C, ARegion *ar)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ SpaceSeq *sseq= CTX_wm_space_seq(C);
+ View2D *v2d= &ar->v2d;
+ View2DScrollers *scrollers;
+ float col[3];
+ int flag=0;
+
+ /* clear and setup matrix */
+ UI_GetThemeColor3fv(TH_BACK, col);
+ if (ed && ed->metastack.first)
+ glClearColor(col[0], col[1], col[2]-0.1, 0.0);
+ else
+ glClearColor(col[0], col[1], col[2], 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
- /* Draw markers */
-// draw_markers_timespace(SCE_MARKERS, DRAW_MARKERS_LINES);
+ UI_view2d_view_ortho(C, v2d);
+
+
+ /* calculate extents of sequencer strips/data
+ * NOTE: needed for the scrollers later
+ */
+ boundbox_seq(scene, &v2d->tot);
+
+
+ /* draw backdrop */
+ draw_seq_backdrop(v2d);
+
+ /* regular grid-pattern over the rest of the view (i.e. frame grid lines) */
+ UI_view2d_constant_grid_draw(C, v2d);
+
+
+ /* sequence strips (if there is data available to be drawn) */
+ if (ed) {
+ /* draw the data */
+ draw_seq_strips(C, ed, ar);
+
+ /* text draw cached (for sequence names), in pixelspace now */
+ UI_view2d_text_cache_draw(ar);
+ }
+
+ /* current frame */
+ UI_view2d_view_ortho(C, v2d);
+ if ((sseq->flag & SEQ_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS;
+ if ((sseq->flag & SEQ_NO_DRAW_CFRANUM)==0) flag |= DRAWCFRA_SHOW_NUMBOX;
+ ANIM_draw_cfra(C, v2d, flag);
+
+ /* markers */
+ UI_view2d_view_orthoSpecial(C, v2d, 1);
+ draw_markers_time(C, DRAW_MARKERS_LINES);
+
+ /* preview range */
+ UI_view2d_view_ortho(C, v2d);
+ ANIM_draw_previewrange(C, v2d);
/* reset view matrix */
UI_view2d_view_restore(C);
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index bf7d0e78c92..5dd453b9e30 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_storage_types.h"
#include "IMB_imbuf_types.h"
@@ -140,21 +140,6 @@ typedef struct TransSeq {
int len;
} TransSeq;
-Sequence *get_last_seq(Scene *scene)
-{
- Editing *ed= seq_give_editing(scene, FALSE);
- if(ed==NULL) return NULL;
- return ed->act_seq;
-}
-
-void set_last_seq(Scene *scene, Sequence *seq)
-{
- Editing *ed= seq_give_editing(scene, FALSE);
- if(ed==NULL) return;
-
- ed->act_seq= seq;
-}
-
Sequence *get_foreground_frame_seq(Scene *scene, int frame)
{
Editing *ed= seq_give_editing(scene, FALSE);
@@ -191,7 +176,7 @@ static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect
{
Editing *ed= seq_give_editing(scene, FALSE);
struct SeqEffectHandle sh;
- Sequence *last_seq= get_last_seq(scene);
+ Sequence *last_seq= active_seq_get(scene);
if(last_seq && last_seq->type != SEQ_PLUGIN) return;
@@ -489,29 +474,6 @@ void recurs_sel_seq(Sequence *seqm)
}
}
-Sequence *alloc_sequence(ListBase *lb, int cfra, int machine)
-{
- Sequence *seq;
-
- /*ed= scene->ed;*/
-
- seq= MEM_callocN( sizeof(Sequence), "addseq");
- BLI_addtail(lb, seq);
-
- //set_last_seq(scene, seq); // Probably not a great idea at such a low level anyway - Campbell
-
- *( (short *)seq->name )= ID_SEQ;
- seq->name[2]= 0;
-
- seq->flag= SELECT;
- seq->start= cfra;
- seq->machine= machine;
- seq->mul= 1.0;
- seq->blend_opacity = 100.0;
-
- return seq;
-}
-
int event_to_efftype(int event)
{
if(event==2) return SEQ_CROSS;
@@ -537,7 +499,7 @@ static void reload_sound_strip(Scene *scene, char *name)
Editing *ed;
Sequence *seq, *seqact;
SpaceFile *sfile;
- Sequence *last_seq= get_last_seq(scene);
+ Sequence *last_seq= active_seq_get(scene);
ed= scene->ed;
@@ -579,7 +541,7 @@ static void reload_image_strip(Scene *scene, char *name)
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq=NULL, *seqact;
SpaceFile *sfile=NULL;
- Sequence *last_seq= get_last_seq(scene);
+ Sequence *last_seq= active_seq_get(scene);
@@ -615,7 +577,7 @@ static void reload_image_strip(Scene *scene, char *name)
void change_sequence(Scene *scene)
{
Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *last_seq= get_last_seq(scene);
+ Sequence *last_seq= active_seq_get(scene);
Scene *sce;
short event;
@@ -717,7 +679,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen
*error_str= NULL;
if (!activeseq)
- seq2= get_last_seq(scene);
+ seq2= active_seq_get(scene);
for(seq=ed->seqbasep->first; seq; seq=seq->next) {
if(seq->flag & SELECT) {
@@ -780,7 +742,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen
void reassign_inputs_seq_effect(Scene *scene)
{
Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *seq1, *seq2, *seq3, *last_seq = get_last_seq(scene);
+ Sequence *seq1, *seq2, *seq3, *last_seq = active_seq_get(scene);
char *error_msg;
if(last_seq==0 || !(last_seq->type & SEQ_EFFECT)) return;
@@ -849,7 +811,7 @@ static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq)
static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short deleteall)
{
Sequence *seq, *seqn;
- Sequence *last_seq = get_last_seq(scene);
+ Sequence *last_seq = active_seq_get(scene);
seq= lb->first;
while(seq) {
@@ -859,7 +821,7 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de
seq->sound->id.us--;
BLI_remlink(lb, seq);
- if(seq==last_seq) set_last_seq(scene, NULL);
+ if(seq==last_seq) active_seq_set(scene, NULL);
if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1);
if(seq->ipo) seq->ipo->id.us--;
seq_free_sequence(scene, seq);
@@ -987,7 +949,7 @@ static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new)
{
Sequence *seq;
Sequence *seqn = 0;
- Sequence *last_seq = get_last_seq(scene);
+ Sequence *last_seq = active_seq_get(scene);
for(seq= old->first; seq; seq= seq->next) {
seq->tmp= NULL;
@@ -1002,7 +964,7 @@ static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new)
recurs_dupli_seq(scene, &seq->seqbase,&seqn->seqbase);
if (seq == last_seq) {
- set_last_seq(scene, seqn);
+ active_seq_set(scene, seqn);
}
}
}
@@ -1299,7 +1261,7 @@ void set_filter_seq(Scene *scene)
void seq_remap_paths(Scene *scene)
{
- Sequence *seq, *last_seq = get_last_seq(scene);
+ Sequence *seq, *last_seq = active_seq_get(scene);
Editing *ed= seq_give_editing(scene, FALSE);
char from[FILE_MAX], to[FILE_MAX], stripped[FILE_MAX];
@@ -1701,7 +1663,7 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op)
if(ed==NULL)
return OPERATOR_CANCELLED;
- free_imbuf_seq(&ed->seqbase, FALSE);
+ free_imbuf_seq(scene, &ed->seqbase, FALSE);
ED_area_tag_redraw(CTX_wm_area(C));
@@ -1889,7 +1851,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *op)
if(ed==NULL)
return OPERATOR_CANCELLED;
- seq=get_last_seq(scene);
+ seq=active_seq_get(scene);
if (seq && seq->flag & SELECT) { /* avoid a loop since this is likely to be selected */
nothingSelected = FALSE;
} else {
@@ -2057,7 +2019,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *last_seq= get_last_seq(scene);
+ Sequence *last_seq= active_seq_get(scene);
MetaStack *ms;
if(ed==NULL)
@@ -2072,7 +2034,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op)
ed->seqbasep= &last_seq->seqbase;
- set_last_seq(scene, NULL);
+ active_seq_set(scene, NULL);
}
else {
@@ -2092,7 +2054,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op)
for(seq= ed->seqbasep->first; seq; seq= seq->next)
calc_sequence(seq);
- set_last_seq(scene, ms->parseq);
+ active_seq_set(scene, ms->parseq);
ms->parseq->flag |= SELECT;
recurs_sel_seq(ms->parseq);
@@ -2141,10 +2103,6 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
while(seq) {
if(seq->flag & SELECT) {
tot++;
- if (seq->type == SEQ_SOUND) {
- BKE_report(op->reports, RPT_ERROR, "Can't make Meta Strip from audio");
- return OPERATOR_CANCELLED;;
- }
}
seq= seq->next;
}
@@ -2202,7 +2160,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
seqm->strip->len= seqm->len;
seqm->strip->us= 1;
- set_last_seq(scene, seqm);
+ active_seq_set(scene, seqm);
if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm);
@@ -2243,7 +2201,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *seq, *last_seq = get_last_seq(scene); /* last_seq checks ed==NULL */
+ Sequence *seq, *last_seq = active_seq_get(scene); /* last_seq checks ed==NULL */
if(last_seq==NULL || last_seq->type!=SEQ_META)
return OPERATOR_CANCELLED;
@@ -2591,7 +2549,7 @@ static int sequencer_swap_internal_exec(bContext *C, int side)
{
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *active_seq = get_last_seq(scene);
+ Sequence *active_seq = active_seq_get(scene);
Sequence *seq;
if(ed==NULL) return OPERATOR_CANCELLED;
@@ -2674,7 +2632,7 @@ static int sequencer_rendersize_exec(bContext *C, wmOperator *op)
{
int retval = OPERATOR_CANCELLED;
Scene *scene= CTX_data_scene(C);
- Sequence *active_seq = get_last_seq(scene);
+ Sequence *active_seq = active_seq_get(scene);
if(active_seq==NULL) return OPERATOR_CANCELLED;
@@ -2717,4 +2675,5 @@ void SEQUENCER_OT_rendersize(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
-} \ No newline at end of file
+}
+
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 82b24deae63..a68001e536b 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -45,11 +45,11 @@ struct Scene;
/* space_sequencer.c */
struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa);
-/* sequencer_header.c */
-// void sequencer_header_buttons(const struct bContext *C, struct ARegion *ar);
/* sequencer_draw.c */
-void drawseqspace(const struct bContext *C, struct ARegion *ar);
+void draw_timeline_seq(const struct bContext *C, struct ARegion *ar);
+void draw_image_seq(struct Scene *scene, struct ARegion *ar, struct SpaceSeq *sseq);
+
void seq_reset_imageofs(struct SpaceSeq *sseq);
/* sequencer_edit.c */
@@ -59,13 +59,11 @@ int seq_tx_get_final_left(struct Sequence *seq, int metaclip);
int seq_tx_get_final_right(struct Sequence *seq, int metaclip);
void seq_rectf(struct Sequence *seq, struct rctf *rectf);
void boundbox_seq(struct Scene *scene, struct rctf *rect);
-struct Sequence *get_last_seq(struct Scene *scene);
struct Sequence *find_nearest_seq(struct Scene *scene, struct View2D *v2d, int *hand, short mval[2]);
struct Sequence *find_neighboring_sequence(struct Scene *scene, struct Sequence *test, int lr, int sel);
void deselect_all_seq(struct Scene *scene);
void recurs_sel_seq(struct Sequence *seqm);
int event_to_efftype(int event);
-void set_last_seq(struct Scene *scene, struct Sequence *seq);
int seq_effect_find_selected(struct Scene *scene, struct Sequence *activeseq, int type, struct Sequence **selseq1, struct Sequence **selseq2, struct Sequence **selseq3, char **error_str);
struct Sequence *alloc_sequence(struct ListBase *lb, int cfra, int machine);
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index 3e2f05f2901..73a2070ca54 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -38,7 +38,7 @@
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_context.h"
@@ -153,11 +153,14 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_left", LEFTARROWKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_right", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
+
/* Mouse selection, a bit verbose :/ */
WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1);
+
/* 2.4x method, now use Alt for handles and select the side based on which handle was selected */
/*
RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "linked_left", 1);
@@ -189,9 +192,15 @@ void sequencer_keymap(wmKeyConfig *keyconf)
RNA_boolean_set(kmi->ptr, "linked_handle", 1);
/* match action editor */
- RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "left_right", 1);
+ kmi= WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
+ RNA_boolean_set(kmi->ptr, "left_right", 1); /* grr, these conflict - only use left_right if not over an active seq */
+ RNA_boolean_set(kmi->ptr, "linked_time", 1);
/* adjusted since 2.4 */
+ kmi= WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+ RNA_boolean_set(kmi->ptr, "extend", 1);
+ RNA_boolean_set(kmi->ptr, "linked_time", 1);
+
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
@@ -202,11 +211,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_border", BKEY, KM_PRESS, 0, 0);
- kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", AKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "name", "SEQUENCER_MT_add");
+ WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0);
-
transform_keymap_for_space(keyconf, keymap, SPACE_SEQ);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index 381d9241094..b197077c68d 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -38,7 +38,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_curve_types.h"
#include "DNA_scene_types.h"
@@ -128,6 +128,40 @@ static void select_active_side(ListBase *seqbase, int sel_side, int channel, int
}
}
+/* used for mouse selection and for SEQUENCER_OT_select_active_side() */
+static void select_linked_time(ListBase *seqbase, Sequence *seq_link)
+{
+ Sequence *seq;
+
+ for(seq= seqbase->first; seq; seq=seq->next) {
+ if(seq_link->machine != seq->machine) {
+ int left_match = (seq->startdisp == seq_link->startdisp) ? 1:0;
+ int right_match = (seq->enddisp == seq_link->enddisp) ? 1:0;
+
+ if(left_match && right_match) {
+ /* a direct match, copy the selection settinhs */
+ seq->flag &= ~(SELECT|SEQ_LEFTSEL|SEQ_RIGHTSEL);
+ seq->flag |= seq_link->flag & (SELECT|SEQ_LEFTSEL|SEQ_RIGHTSEL);
+
+ recurs_sel_seq(seq);
+ }
+ else if(seq_link->flag & SELECT && (left_match || right_match)) {
+
+ /* clear for reselection */
+ seq->flag &= ~(SEQ_LEFTSEL|SEQ_RIGHTSEL);
+
+ if(left_match && seq_link->flag & SEQ_LEFTSEL)
+ seq->flag |= SELECT|SEQ_LEFTSEL;
+
+ if(right_match && seq_link->flag & SEQ_RIGHTSEL)
+ seq->flag |= SELECT|SEQ_RIGHTSEL;
+
+ recurs_sel_seq(seq);
+ }
+ }
+ }
+}
+
#if 0 // BRING BACK
void select_surround_from_last(Scene *scene)
{
@@ -147,7 +181,7 @@ void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING B
if(deselect_all)
deselect_all_seq(scene);
- set_last_seq(scene, seq);
+ active_seq_set(scene, seq);
if((seq->type==SEQ_IMAGE) || (seq->type==SEQ_MOVIE)) {
if(seq->strip)
@@ -166,7 +200,7 @@ void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING B
void select_neighbor_from_last(Scene *scene, int lr)
{
- Sequence *seq=get_last_seq(scene);
+ Sequence *seq= active_seq_get(scene);
Sequence *neighbor;
int change = 0;
if (seq) {
@@ -293,6 +327,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
short extend= RNA_boolean_get(op->ptr, "extend");
short linked_handle= RNA_boolean_get(op->ptr, "linked_handle");
short left_right= RNA_boolean_get(op->ptr, "left_right");
+ short linked_time= RNA_boolean_get(op->ptr, "linked_time");
short mval[2];
@@ -308,6 +343,13 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
mval[0]= event->x - ar->winrct.xmin;
mval[1]= event->y - ar->winrct.ymin;
+ seq= find_nearest_seq(scene, v2d, &hand, mval);
+
+ // XXX - not nice, Ctrl+RMB needs to do left_right only when not over a strip
+ if(seq && linked_time && left_right)
+ left_right= FALSE;
+
+
if (marker) {
int oldflag;
/* select timeline marker */
@@ -342,19 +384,18 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
recurs_sel_seq(seq);
}
}
-
}
SEQ_END
} else {
-
- seq= find_nearest_seq(scene, v2d, &hand, mval);
+ // seq= find_nearest_seq(scene, v2d, &hand, mval);
+
act_orig= ed->act_seq;
if(extend == 0 && linked_handle==0)
deselect_all_seq(scene);
if(seq) {
- set_last_seq(scene, seq);
+ active_seq_set(scene, seq);
if ((seq->type == SEQ_IMAGE) || (seq->type == SEQ_MOVIE)) {
if(seq->strip) {
@@ -442,6 +483,10 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
}
}
recurs_sel_seq(seq);
+
+ if(linked_time) {
+ select_linked_time(ed->seqbasep, seq);
+ }
}
}
@@ -487,6 +532,7 @@ void SEQUENCER_OT_select(wmOperatorType *ot)
RNA_def_boolean(ot->srna, "linked_handle", 0, "Linked Handle", "Select handles next to the active strip.");
/* for animation this is an enum but atm having an enum isnt useful for us */
RNA_def_boolean(ot->srna, "left_right", 0, "Left/Right", "select based on the frame side the cursor is on.");
+ RNA_def_boolean(ot->srna, "linked_time", 0, "Linked Time", "Select other strips at the same time.");
}
@@ -750,7 +796,7 @@ static int sequencer_select_active_side_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, 0);
- Sequence *seq_act=get_last_seq(scene);
+ Sequence *seq_act= active_seq_get(scene);
if (ed==NULL || seq_act==NULL)
return OPERATOR_CANCELLED;
diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c
index 206070b7095..b8adaf23f73 100644
--- a/source/blender/editors/space_sequencer/space_sequencer.c
+++ b/source/blender/editors/space_sequencer/space_sequencer.c
@@ -37,7 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -194,6 +194,23 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar)
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
+static void sequencer_main_area_draw(const bContext *C, ARegion *ar)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ SpaceSeq *sseq= sa->spacedata.first;
+ Scene *scene= CTX_data_scene(C);
+
+
+ if (sseq->mainb != SEQ_DRAW_SEQUENCE) {
+ /* image-viewer types */
+ draw_image_seq(scene, ar, sseq);
+ }
+ else {
+ /* NLE - strip editing timeline interface */
+ draw_timeline_seq(C, ar);
+ }
+}
+
/* add handlers, stuff you only do once or on area/region changes */
static void sequencer_header_area_init(wmWindowManager *wm, ARegion *ar)
@@ -281,9 +298,9 @@ void ED_spacetype_sequencer(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_WINDOW;
art->init= sequencer_main_area_init;
- art->draw= drawseqspace;
+ art->draw= sequencer_main_area_draw;
art->listener= sequencer_main_area_listener;
- art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION;
BLI_addhead(&st->regiontypes, art);
@@ -305,7 +322,7 @@ void ED_spacetype_sequencer(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= sequencer_header_area_init;
art->draw= sequencer_header_area_draw;
diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c
index 7cd9988eea0..f2c449ffc1f 100644
--- a/source/blender/editors/space_sound/space_sound.c
+++ b/source/blender/editors/space_sound/space_sound.c
@@ -38,7 +38,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -246,7 +246,7 @@ void ED_spacetype_sound(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype sound region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= sound_header_area_init;
art->draw= sound_header_area_draw;
diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c
index e9cd2644ba6..a8d146bb7a8 100644
--- a/source/blender/editors/space_text/space_text.c
+++ b/source/blender/editors/space_text/space_text.c
@@ -39,7 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_colortools.h"
@@ -438,7 +438,7 @@ void ED_spacetype_text(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype text region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= text_header_area_init;
art->draw= text_header_area_draw;
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
index 09c74666b69..16a7f97afd6 100644
--- a/source/blender/editors/space_text/text_ops.c
+++ b/source/blender/editors/space_text/text_ops.c
@@ -555,7 +555,7 @@ void TEXT_OT_run_script(wmOperatorType *ot)
/* api callbacks */
ot->exec= run_script_exec;
- ot->poll= text_edit_poll;
+// ot->poll= text_edit_poll; // dont do this since linked texts cant run
}
@@ -2412,7 +2412,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode)
first= 1;
}
else {
- BKE_reportf(op->reports, RPT_INFO, "Text not found: %s", st->findstr);
+ BKE_reportf(op->reports, RPT_ERROR, "Text not found: %s", st->findstr);
break;
}
} while(mode==TEXT_MARK_ALL);
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c
index 501ac1c0cba..59314fba48e 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -418,7 +418,7 @@ void ED_spacetype_time(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= time_header_area_init;
art->draw= time_header_area_draw;
diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c
index 39fc2fd2bd1..da475ff4c5b 100644
--- a/source/blender/editors/space_userpref/space_userpref.c
+++ b/source/blender/editors/space_userpref/space_userpref.c
@@ -175,7 +175,7 @@ void ED_spacetype_userpref(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype userpref region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->listener= userpref_header_listener;
art->init= userpref_header_area_init;
art->draw= userpref_header_area_draw;
diff --git a/source/blender/editors/space_view3d/SConscript b/source/blender/editors/space_view3d/SConscript
index 057c98a1d49..ba521a5fb1a 100644
--- a/source/blender/editors/space_view3d/SConscript
+++ b/source/blender/editors/space_view3d/SConscript
@@ -2,11 +2,11 @@
Import ('env')
sources = env.Glob('*.c')
-defs = []
+defs = [ 'GLEW_STATIC' ]
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' ../../render/extern/include #/intern/guardedalloc'
+incs += ' ../../render/extern/include'
incs += ' ../../gpu ../../makesrna ../../blenfont'
incs += ' #/intern/smoke/extern'
incs += ' #source/kernel/gen_system'
diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c
index fca7d6d7a9f..d8c2fb9d43e 100644
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@ -51,7 +51,7 @@
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_dlrbTree.h"
#include "BKE_animsys.h"
@@ -510,36 +510,36 @@ static void draw_bone_solid_octahedral(void)
glBegin(GL_TRIANGLES);
/* bottom */
- CalcNormFloat(vec[2], vec[1], vec[0], nor);
+ normal_tri_v3( nor,vec[2], vec[1], vec[0]);
glNormal3fv(nor);
glVertex3fv(vec[2]); glVertex3fv(vec[1]); glVertex3fv(vec[0]);
- CalcNormFloat(vec[3], vec[2], vec[0], nor);
+ normal_tri_v3( nor,vec[3], vec[2], vec[0]);
glNormal3fv(nor);
glVertex3fv(vec[3]); glVertex3fv(vec[2]); glVertex3fv(vec[0]);
- CalcNormFloat(vec[4], vec[3], vec[0], nor);
+ normal_tri_v3( nor,vec[4], vec[3], vec[0]);
glNormal3fv(nor);
glVertex3fv(vec[4]); glVertex3fv(vec[3]); glVertex3fv(vec[0]);
- CalcNormFloat(vec[1], vec[4], vec[0], nor);
+ normal_tri_v3( nor,vec[1], vec[4], vec[0]);
glNormal3fv(nor);
glVertex3fv(vec[1]); glVertex3fv(vec[4]); glVertex3fv(vec[0]);
/* top */
- CalcNormFloat(vec[5], vec[1], vec[2], nor);
+ normal_tri_v3( nor,vec[5], vec[1], vec[2]);
glNormal3fv(nor);
glVertex3fv(vec[5]); glVertex3fv(vec[1]); glVertex3fv(vec[2]);
- CalcNormFloat(vec[5], vec[2], vec[3], nor);
+ normal_tri_v3( nor,vec[5], vec[2], vec[3]);
glNormal3fv(nor);
glVertex3fv(vec[5]); glVertex3fv(vec[2]); glVertex3fv(vec[3]);
- CalcNormFloat(vec[5], vec[3], vec[4], nor);
+ normal_tri_v3( nor,vec[5], vec[3], vec[4]);
glNormal3fv(nor);
glVertex3fv(vec[5]); glVertex3fv(vec[3]); glVertex3fv(vec[4]);
- CalcNormFloat(vec[5], vec[4], vec[1], nor);
+ normal_tri_v3( nor,vec[5], vec[4], vec[1]);
glNormal3fv(nor);
glVertex3fv(vec[5]); glVertex3fv(vec[4]); glVertex3fv(vec[1]);
@@ -642,7 +642,7 @@ static void draw_sphere_bone_dist(float smat[][4], float imat[][4], int boneflag
/* figure out the sizes of spheres */
if (ebone) {
/* this routine doesn't call get_matrix_editbone() that calculates it */
- ebone->length = VecLenf(ebone->head, ebone->tail);
+ ebone->length = len_v3v3(ebone->head, ebone->tail);
length= ebone->length;
tail= ebone->rad_tail;
@@ -669,19 +669,19 @@ static void draw_sphere_bone_dist(float smat[][4], float imat[][4], int boneflag
/* ***** draw it ***** */
/* move vector to viewspace */
- VecSubf(dirvec, tailvec, headvec);
- Mat4Mul3Vecfl(smat, dirvec);
+ sub_v3_v3v3(dirvec, tailvec, headvec);
+ mul_mat3_m4_v3(smat, dirvec);
/* clear zcomp */
dirvec[2]= 0.0f;
/* move vector back */
- Mat4Mul3Vecfl(imat, dirvec);
+ mul_mat3_m4_v3(imat, dirvec);
- if (0.0f != Normalize(dirvec)) {
+ if (0.0f != normalize_v3(dirvec)) {
float norvec[3], vec1[3], vec2[3], vec[3];
int a;
- //VecMulf(dirvec, head);
- Crossf(norvec, dirvec, imat[2]);
+ //mul_v3_fl(dirvec, head);
+ cross_v3_v3v3(norvec, dirvec, imat[2]);
glBegin(GL_QUAD_STRIP);
@@ -752,7 +752,7 @@ static void draw_sphere_bone_wire(float smat[][4], float imat[][4], int armflag,
/* figure out the sizes of spheres */
if (ebone) {
/* this routine doesn't call get_matrix_editbone() that calculates it */
- ebone->length = VecLenf(ebone->head, ebone->tail);
+ ebone->length = len_v3v3(ebone->head, ebone->tail);
length= ebone->length;
tail= ebone->rad_tail;
@@ -807,25 +807,25 @@ static void draw_sphere_bone_wire(float smat[][4], float imat[][4], int armflag,
else UI_ThemeColor(TH_WIRE);
}
- VecSubf(dirvec, tailvec, headvec);
+ sub_v3_v3v3(dirvec, tailvec, headvec);
/* move vector to viewspace */
- Mat4Mul3Vecfl(smat, dirvec);
+ mul_mat3_m4_v3(smat, dirvec);
/* clear zcomp */
dirvec[2]= 0.0f;
/* move vector back */
- Mat4Mul3Vecfl(imat, dirvec);
+ mul_mat3_m4_v3(imat, dirvec);
- if (0.0f != Normalize(dirvec)) {
+ if (0.0f != normalize_v3(dirvec)) {
float norvech[3], norvect[3], vec[3];
VECCOPY(vec, dirvec);
- VecMulf(dirvec, head);
- Crossf(norvech, dirvec, imat[2]);
+ mul_v3_fl(dirvec, head);
+ cross_v3_v3v3(norvech, dirvec, imat[2]);
- VecMulf(vec, tail);
- Crossf(norvect, vec, imat[2]);
+ mul_v3_fl(vec, tail);
+ cross_v3_v3v3(norvect, vec, imat[2]);
if (id != -1)
glLoadName(id | BONESEL_BONE);
@@ -1463,12 +1463,12 @@ static void draw_pose_dofs(Object *ob)
glTranslatef(posetrans[0], posetrans[1], posetrans[2]);
if (pchan->parent) {
- Mat4CpyMat4(mat, pchan->parent->pose_mat);
+ copy_m4_m4(mat, pchan->parent->pose_mat);
mat[3][0]= mat[3][1]= mat[3][2]= 0.0f;
glMultMatrixf(mat);
}
- Mat4CpyMat3(mat, pchan->bone->bone_mat);
+ copy_m4_m3(mat, pchan->bone->bone_mat);
glMultMatrixf(mat);
scale= bone->length*pchan->size[1];
@@ -1555,12 +1555,12 @@ static void bone_matrix_translate_y(float mat[][4], float y)
float trans[3];
VECCOPY(trans, mat[1]);
- VecMulf(trans, y);
- VecAddf(mat[3], mat[3], trans);
+ mul_v3_fl(trans, y);
+ add_v3_v3v3(mat[3], mat[3], trans);
}
/* assumes object is Armature with pose */
-static void draw_pose_channels(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt)
+static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt)
{
RegionView3D *rv3d= ar->regiondata;
Object *ob= base->object;
@@ -1582,8 +1582,8 @@ static void draw_pose_channels(Scene *scene, View3D *v3d, ARegion *ar, Base *bas
if (arm->drawtype==ARM_ENVELOPE) {
/* precalc inverse matrix for drawing screen aligned */
wmGetMatrix(smat);
- Mat4MulFloat3(smat[0], 1.0f/VecLength(ob->obmat[0]));
- Mat4Invert(imat, smat);
+ mul_mat3_m4_fl(smat, 1.0f/len_v3(ob->obmat[0]));
+ invert_m4_m4(imat, smat);
/* and draw blended distances */
if (arm->flag & ARM_POSEMODE) {
@@ -1874,14 +1874,14 @@ static void draw_pose_channels(Scene *scene, View3D *v3d, ARegion *ar, Base *bas
/* Draw names of bone */
if (arm->flag & ARM_DRAWNAMES) {
- VecMidf(vec, pchan->pose_head, pchan->pose_tail);
+ mid_v3_v3v3(vec, pchan->pose_head, pchan->pose_tail);
view3d_cached_text_draw_add(vec[0], vec[1], vec[2], pchan->name, 10);
}
/* Draw additional axes on the bone tail */
if ( (arm->flag & ARM_DRAWAXES) && (arm->flag & ARM_POSEMODE) ) {
glPushMatrix();
- Mat4CpyMat4(bmat, pchan->pose_mat);
+ copy_m4_m4(bmat, pchan->pose_mat);
bone_matrix_translate_y(bmat, pchan->bone->length);
glMultMatrixf(bmat);
@@ -1908,14 +1908,14 @@ static void get_matrix_editbone(EditBone *eBone, float bmat[][4])
float mat[3][3];
/* Compose the parent transforms (i.e. their translations) */
- VecSubf(delta, eBone->tail, eBone->head);
+ sub_v3_v3v3(delta, eBone->tail, eBone->head);
eBone->length = (float)sqrt(delta[0]*delta[0] + delta[1]*delta[1] +delta[2]*delta[2]);
vec_roll_to_mat3(delta, eBone->roll, mat);
- Mat4CpyMat3(bmat, mat);
+ copy_m4_m3(bmat, mat);
- VecAddf(bmat[3], bmat[3], eBone->head);
+ add_v3_v3v3(bmat[3], bmat[3], eBone->head);
}
static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, int dt)
@@ -1931,8 +1931,8 @@ static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, int dt)
if(arm->drawtype==ARM_ENVELOPE) {
/* precalc inverse matrix for drawing screen aligned */
wmGetMatrix(smat);
- Mat4MulFloat3(smat[0], 1.0f/VecLength(ob->obmat[0]));
- Mat4Invert(imat, smat);
+ mul_mat3_m4_fl(smat, 1.0f/len_v3(ob->obmat[0]));
+ invert_m4_m4(imat, smat);
/* and draw blended distances */
glEnable(GL_BLEND);
@@ -2070,7 +2070,7 @@ static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, int dt)
/* Draw name */
if (arm->flag & ARM_DRAWNAMES) {
- VecMidf(vec, eBone->head, eBone->tail);
+ mid_v3_v3v3(vec, eBone->head, eBone->tail);
glRasterPos3fv(vec);
view3d_cached_text_draw_add(vec[0], vec[1], vec[2], eBone->name, 10);
}
@@ -2243,7 +2243,7 @@ static void draw_pose_paths(Scene *scene, View3D *v3d, ARegion *ar, Object *ob)
view3d_cached_text_draw_add(fp[0], fp[1], fp[2], str, 0);
}
else if ((a > stepsize) && (a < len-stepsize)) {
- if ((VecEqual(fp, fp-(stepsize*3))==0) || (VecEqual(fp, fp+(stepsize*3))==0)) {
+ if ((equals_v3v3(fp, fp-(stepsize*3))==0) || (equals_v3v3(fp, fp+(stepsize*3))==0)) {
sprintf(str, "%d", (a+sfra));
view3d_cached_text_draw_add(fp[0], fp[1], fp[2], str, 0);
}
@@ -2380,7 +2380,7 @@ static void draw_ghost_poses_range(Scene *scene, View3D *v3d, ARegion *ar, Base
BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
where_is_pose(scene, ob);
- draw_pose_channels(scene, v3d, ar, base, OB_WIRE);
+ draw_pose_bones(scene, v3d, ar, base, OB_WIRE);
}
glDisable(GL_BLEND);
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
@@ -2459,7 +2459,7 @@ static void draw_ghost_poses_keys(Scene *scene, View3D *v3d, ARegion *ar, Base *
BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
where_is_pose(scene, ob);
- draw_pose_channels(scene, v3d, ar, base, OB_WIRE);
+ draw_pose_bones(scene, v3d, ar, base, OB_WIRE);
}
glDisable(GL_BLEND);
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
@@ -2529,7 +2529,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base)
if (CFRA != cfrao) {
BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
where_is_pose(scene, ob);
- draw_pose_channels(scene, v3d, ar, base, OB_WIRE);
+ draw_pose_bones(scene, v3d, ar, base, OB_WIRE);
}
}
@@ -2544,7 +2544,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base)
if (CFRA != cfrao) {
BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
where_is_pose(scene, ob);
- draw_pose_channels(scene, v3d, ar, base, OB_WIRE);
+ draw_pose_bones(scene, v3d, ar, base, OB_WIRE);
}
}
}
@@ -2627,7 +2627,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in
}
}
}
- draw_pose_channels(scene, v3d, ar, base, dt);
+ draw_pose_bones(scene, v3d, ar, base, dt);
arm->flag &= ~ARM_POSEMODE;
if(ob->mode & OB_MODE_POSE)
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index 365b9ff03f7..bf73e70367c 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -31,7 +31,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "BLI_editVert.h"
@@ -614,7 +614,7 @@ void draw_mesh_text(Scene *scene, Object *ob, int glsl)
if (!mf_smooth) {
float nor[3];
- CalcNormFloat(v1, v2, v3, nor);
+ normal_tri_v3( nor,v1, v2, v3);
glNormal3fv(nor);
}
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 22fd77afd88..2c4f010ce3e 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -65,7 +65,7 @@
#include "DNA_world_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_edgehash.h"
#include "BLI_rand.h"
@@ -91,6 +91,7 @@
#include "BKE_particle.h"
#include "BKE_pointcache.h"
#include "BKE_property.h"
+#include "BKE_softbody.h"
#include "BKE_smoke.h"
#include "BKE_unit.h"
#include "BKE_utildefines.h"
@@ -142,7 +143,7 @@ static void draw_empty_cone(float size);
/* ************* only use while object drawing **************
* or after running ED_view3d_init_mats_rv3d
* */
-static void view3d_project_short_clip(ARegion *ar, float *vec, short *adr)
+static void view3d_project_short_clip(ARegion *ar, float *vec, short *adr, int local)
{
RegionView3D *rv3d= ar->regiondata;
float fx, fy, vec4[4];
@@ -151,16 +152,14 @@ static void view3d_project_short_clip(ARegion *ar, float *vec, short *adr)
/* clipplanes in eye space */
if(rv3d->rflag & RV3D_CLIPPING) {
- VECCOPY(vec4, vec);
- Mat4MulVecfl(rv3d->viewmatob, vec4);
- if(view3d_test_clipping(rv3d, vec4))
+ if(view3d_test_clipping(rv3d, vec, local))
return;
}
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmatob, vec4);
+ mul_m4_v4(rv3d->persmatob, vec4);
/* clipplanes in window space */
if( vec4[3]>BL_NEAR_CLIP ) { /* is the NEAR clipping cutoff for picking */
@@ -189,7 +188,7 @@ static void view3d_project_short_noclip(ARegion *ar, float *vec, short *adr)
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmatob, vec4);
+ mul_m4_v4(rv3d->persmatob, vec4);
if( vec4[3]>BL_NEAR_CLIP ) { /* is the NEAR clipping cutoff for picking */
fx= (ar->winx/2)*(1 + vec4[0]/vec4[3]);
@@ -456,8 +455,8 @@ void drawcircball(int mode, float *cent, float rad, float tmat[][4])
VECCOPY(vx, tmat[0]);
VECCOPY(vy, tmat[1]);
- VecMulf(vx, rad);
- VecMulf(vy, rad);
+ mul_v3_fl(vx, rad);
+ mul_v3_fl(vy, rad);
glBegin(mode);
for(a=0; a<tot; a++) {
@@ -544,8 +543,8 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa
/* project first and test */
for(vos= strings->first; vos; vos= vos->next) {
if(mat)
- Mat4MulVecfl(mat, vos->vec);
- view3d_project_short_clip(ar, vos->vec, vos->mval);
+ mul_m4_v3(mat, vos->vec);
+ view3d_project_short_clip(ar, vos->vec, vos->mval, 0);
if(vos->mval[0]!=IS_CLIPPED)
tot++;
}
@@ -674,7 +673,7 @@ static void drawshadbuflimits(Lamp *la, float mat[][4])
lavec[0]= -mat[2][0];
lavec[1]= -mat[2][1];
lavec[2]= -mat[2][2];
- Normalize(lavec);
+ normalize_v3(lavec);
sta[0]= mat[3][0]+ la->clipsta*lavec[0];
sta[1]= mat[3][1]+ la->clipsta*lavec[1];
@@ -705,13 +704,13 @@ static void spotvolume(float *lvec, float *vvec, float inp)
/* camera is at 0,0,0 */
float temp[3],plane[3],mat1[3][3],mat2[3][3],mat3[3][3],mat4[3][3],q[4],co,si,angle;
- Normalize(lvec);
- Normalize(vvec); /* is this the correct vector ? */
+ normalize_v3(lvec);
+ normalize_v3(vvec); /* is this the correct vector ? */
- Crossf(temp,vvec,lvec); /* equation for a plane through vvec en lvec */
- Crossf(plane,lvec,temp); /* a plane perpendicular to this, parrallel with lvec */
+ cross_v3_v3v3(temp,vvec,lvec); /* equation for a plane through vvec en lvec */
+ cross_v3_v3v3(plane,lvec,temp); /* a plane perpendicular to this, parrallel with lvec */
- Normalize(plane);
+ normalize_v3(plane);
/* now we've got two equations: one of a cone and one of a plane, but we have
three unknowns. We remove one unkown by rotating the plane to z=0 (the plane normal) */
@@ -724,7 +723,7 @@ static void spotvolume(float *lvec, float *vvec, float inp)
q[1] = plane[1] ;
q[2] = -plane[0] ;
q[3] = 0 ;
- Normalize(&q[1]);
+ normalize_v3(&q[1]);
angle = saacos(plane[2])/2.0;
co = cos(angle);
@@ -735,7 +734,7 @@ static void spotvolume(float *lvec, float *vvec, float inp)
q[2] *= si;
q[3] = 0;
- QuatToMat3(q,mat1);
+ quat_to_mat3(mat1,q);
/* rotate lamp vector now over acos(inp) degrees */
@@ -743,7 +742,7 @@ static void spotvolume(float *lvec, float *vvec, float inp)
vvec[1] = lvec[1] ;
vvec[2] = lvec[2] ;
- Mat3One(mat2);
+ unit_m3(mat2);
co = inp;
si = sqrt(1-inp*inp);
@@ -751,17 +750,17 @@ static void spotvolume(float *lvec, float *vvec, float inp)
mat2[1][0] = -si;
mat2[0][1] = si;
mat2[1][1] = co;
- Mat3MulMat3(mat3,mat2,mat1);
+ mul_m3_m3m3(mat3,mat2,mat1);
mat2[1][0] = si;
mat2[0][1] = -si;
- Mat3MulMat3(mat4,mat2,mat1);
- Mat3Transp(mat1);
+ mul_m3_m3m3(mat4,mat2,mat1);
+ transpose_m3(mat1);
- Mat3MulMat3(mat2,mat1,mat3);
- Mat3MulVecfl(mat2,lvec);
- Mat3MulMat3(mat2,mat1,mat4);
- Mat3MulVecfl(mat2,vvec);
+ mul_m3_m3m3(mat2,mat1,mat3);
+ mul_m3_v3(mat2,lvec);
+ mul_m3_m3m3(mat2,mat1,mat4);
+ mul_m3_v3(mat2,vvec);
return;
}
@@ -789,9 +788,9 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob)
lampsize= pixsize*((float)U.obcenter_dia*0.5f);
/* and view aligned matrix: */
- Mat4CpyMat4(imat, rv3d->viewinv);
- Normalize(imat[0]);
- Normalize(imat[1]);
+ copy_m4_m4(imat, rv3d->viewinv);
+ normalize_v3(imat[0]);
+ normalize_v3(imat[1]);
/* for AA effects */
glGetFloatv(GL_CURRENT_COLOR, curcol);
@@ -835,13 +834,13 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob)
short axis;
/* setup a 45 degree rotation matrix */
- VecRotToMat3(imat[2], M_PI/4.0f, mat);
+ vec_rot_to_mat3( mat,imat[2], M_PI/4.0f);
/* vectors */
VECCOPY(v1, imat[0]);
- VecMulf(v1, circrad*1.2f);
+ mul_v3_fl(v1, circrad*1.2f);
VECCOPY(v2, imat[0]);
- VecMulf(v2, circrad*2.5f);
+ mul_v3_fl(v2, circrad*2.5f);
/* center */
glTranslatef(vec[0], vec[1], vec[2]);
@@ -852,8 +851,8 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob)
for (axis=0; axis<8; axis++) {
glVertex3fv(v1);
glVertex3fv(v2);
- Mat3MulVecfl(mat, v1);
- Mat3MulVecfl(mat, v2);
+ mul_m3_v3(mat, v1);
+ mul_m3_v3(mat, v2);
}
glEnd();
@@ -1144,11 +1143,11 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob
if(flag==0) {
if(cam->flag & (CAM_SHOWLIMITS+CAM_SHOWMIST)) {
wmLoadMatrix(rv3d->viewmat);
- Mat4CpyMat4(vec, ob->obmat);
- Mat4Ortho(vec);
+ copy_m4_m4(vec, ob->obmat);
+ normalize_m4(vec);
wmMultMatrix(vec);
- Mat4SwapMat4(rv3d->persmat, tmat);
+ swap_m4m4(rv3d->persmat, tmat);
wmGetSingleMatrix(rv3d->persmat);
if(cam->flag & CAM_SHOWLIMITS) {
@@ -1161,7 +1160,7 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob
if(cam->flag & CAM_SHOWMIST)
if(wrld) draw_limit_line(wrld->miststa, wrld->miststa+wrld->mistdist, 0xFFFFFF);
- Mat4SwapMat4(rv3d->persmat, tmat);
+ swap_m4m4(rv3d->persmat, tmat);
}
}
}
@@ -1207,9 +1206,11 @@ void lattice_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, BPo
int i, N = lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
short s[2] = {IS_CLIPPED, 0};
+ ED_view3d_local_clipping(vc->rv3d, obedit->obmat); /* for local clipping lookups */
+
for (i=0; i<N; i++, bp++, co+=3) {
if (bp->hide==0) {
- view3d_project_short_clip(vc->ar, dl?co:bp->vec, s);
+ view3d_project_short_clip(vc->ar, dl?co:bp->vec, s, 1);
if (s[0] != IS_CLIPPED)
func(userData, bp, s[0], s[1]);
}
@@ -1314,7 +1315,7 @@ static void mesh_foreachScreenVert__mapFunc(void *userData, int index, float *co
short s[2]= {IS_CLIPPED, 0};
if (data->clipVerts) {
- view3d_project_short_clip(data->vc.ar, co, s);
+ view3d_project_short_clip(data->vc.ar, co, s, 1);
} else {
view3d_project_short_noclip(data->vc.ar, co, s);
}
@@ -1334,6 +1335,9 @@ void mesh_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, EditVe
data.userData = userData;
data.clipVerts = clipVerts;
+ if(clipVerts)
+ ED_view3d_local_clipping(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */
+
EM_init_index_arrays(vc->em, 1, 0, 0);
dm->foreachMappedVert(dm, mesh_foreachScreenVert__mapFunc, &data);
EM_free_index_arrays();
@@ -1349,8 +1353,8 @@ static void mesh_foreachScreenEdge__mapFunc(void *userData, int index, float *v0
if (eed->h==0) {
if (data->clipVerts==1) {
- view3d_project_short_clip(data->vc.ar, v0co, s[0]);
- view3d_project_short_clip(data->vc.ar, v1co, s[1]);
+ view3d_project_short_clip(data->vc.ar, v0co, s[0], 1);
+ view3d_project_short_clip(data->vc.ar, v1co, s[1], 1);
} else {
view3d_project_short_noclip(data->vc.ar, v0co, s[0]);
view3d_project_short_noclip(data->vc.ar, v1co, s[1]);
@@ -1376,6 +1380,9 @@ void mesh_foreachScreenEdge(ViewContext *vc, void (*func)(void *userData, EditEd
data.userData = userData;
data.clipVerts = clipVerts;
+ if(clipVerts)
+ ED_view3d_local_clipping(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */
+
EM_init_index_arrays(vc->em, 0, 1, 0);
dm->foreachMappedEdge(dm, mesh_foreachScreenEdge__mapFunc, &data);
EM_free_index_arrays();
@@ -1390,7 +1397,7 @@ static void mesh_foreachScreenFace__mapFunc(void *userData, int index, float *ce
short s[2];
if (efa && efa->h==0 && efa->fgonf!=EM_FGON) {
- view3d_project_short_clip(data->vc.ar, cent, s);
+ view3d_project_short_clip(data->vc.ar, cent, s, 1);
data->func(data->userData, efa, s[0], s[1], index);
}
@@ -1405,6 +1412,9 @@ void mesh_foreachScreenFace(ViewContext *vc, void (*func)(void *userData, EditFa
data.func = func;
data.userData = userData;
+ //if(clipVerts)
+ ED_view3d_local_clipping(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */
+
EM_init_index_arrays(vc->em, 0, 0, 1);
dm->foreachMappedFaceCenter(dm, mesh_foreachScreenFace__mapFunc, &data);
EM_free_index_arrays();
@@ -1419,6 +1429,8 @@ void nurbs_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, Nurb
Nurb *nu;
int i;
+ ED_view3d_local_clipping(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */
+
for (nu= cu->editnurb->first; nu; nu=nu->next) {
if(nu->type == CU_BEZIER) {
for (i=0; i<nu->pntsu; i++) {
@@ -1427,17 +1439,17 @@ void nurbs_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, Nurb
if(bezt->hide==0) {
if(cu->drawflag & CU_HIDE_HANDLES) {
- view3d_project_short_clip(vc->ar, bezt->vec[1], s);
+ view3d_project_short_clip(vc->ar, bezt->vec[1], s, 1);
if (s[0] != IS_CLIPPED)
func(userData, nu, NULL, bezt, 1, s[0], s[1]);
} else {
- view3d_project_short_clip(vc->ar, bezt->vec[0], s);
+ view3d_project_short_clip(vc->ar, bezt->vec[0], s, 1);
if (s[0] != IS_CLIPPED)
func(userData, nu, NULL, bezt, 0, s[0], s[1]);
- view3d_project_short_clip(vc->ar, bezt->vec[1], s);
+ view3d_project_short_clip(vc->ar, bezt->vec[1], s, 1);
if (s[0] != IS_CLIPPED)
func(userData, nu, NULL, bezt, 1, s[0], s[1]);
- view3d_project_short_clip(vc->ar, bezt->vec[2], s);
+ view3d_project_short_clip(vc->ar, bezt->vec[2], s, 1);
if (s[0] != IS_CLIPPED)
func(userData, nu, NULL, bezt, 2, s[0], s[1]);
}
@@ -1449,7 +1461,7 @@ void nurbs_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, Nurb
BPoint *bp = &nu->bp[i];
if(bp->hide==0) {
- view3d_project_short_clip(vc->ar, bp->vec, s);
+ view3d_project_short_clip(vc->ar, bp->vec, s, 1);
if (s[0] != IS_CLIPPED)
func(userData, nu, bp, NULL, -1, s[0], s[1]);
}
@@ -2234,7 +2246,7 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
if(G.f & (G_RENDER_OGL|G_RENDER_SHADOW))
return;
- /* make the precission of the pronted value proportionate to the gridsize */
+ /* make the precision of the pronted value proportionate to the gridsize */
if (grid < 0.01f)
strcpy(conv_float, "%.6f");
@@ -2271,13 +2283,13 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
z= 0.5f*(v1[2]+v2[2]);
if(v3d->flag & V3D_GLOBAL_STATS) {
- Mat4MulVecfl(ob->obmat, v1);
- Mat4MulVecfl(ob->obmat, v2);
+ mul_m4_v3(ob->obmat, v1);
+ mul_m4_v3(ob->obmat, v2);
}
if(unit->system)
- bUnit_AsString(val, sizeof(val), VecLenf(v1, v2)*unit->scale_length, 3, unit->system, B_UNIT_LENGTH, do_split, FALSE);
+ bUnit_AsString(val, sizeof(val), len_v3v3(v1, v2)*unit->scale_length, 3, unit->system, B_UNIT_LENGTH, do_split, FALSE);
else
- sprintf(val, conv_float, VecLenf(v1, v2));
+ sprintf(val, conv_float, len_v3v3(v1, v2));
view3d_cached_text_draw_add(x, y, z, val, 0);
}
@@ -2302,16 +2314,16 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
VECCOPY(v4, efa->v4->co);
}
if(v3d->flag & V3D_GLOBAL_STATS) {
- Mat4MulVecfl(ob->obmat, v1);
- Mat4MulVecfl(ob->obmat, v2);
- Mat4MulVecfl(ob->obmat, v3);
- if (efa->v4) Mat4MulVecfl(ob->obmat, v4);
+ mul_m4_v3(ob->obmat, v1);
+ mul_m4_v3(ob->obmat, v2);
+ mul_m4_v3(ob->obmat, v3);
+ if (efa->v4) mul_m4_v3(ob->obmat, v4);
}
if (efa->v4)
- area= AreaQ3Dfl(v1, v2, v3, v4);
+ area= area_quad_v3(v1, v2, v3, v4);
else
- area = AreaT3Dfl(v1, v2, v3);
+ area = area_tri_v3(v1, v2, v3);
if(unit->system)
bUnit_AsString(val, sizeof(val), area*unit->scale_length, 3, unit->system, B_UNIT_LENGTH, do_split, FALSE); // XXX should be B_UNIT_AREA
@@ -2343,10 +2355,10 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
VECCOPY(v4, v3);
}
if(v3d->flag & V3D_GLOBAL_STATS) {
- Mat4MulVecfl(ob->obmat, v1);
- Mat4MulVecfl(ob->obmat, v2);
- Mat4MulVecfl(ob->obmat, v3);
- Mat4MulVecfl(ob->obmat, v4);
+ mul_m4_v3(ob->obmat, v1);
+ mul_m4_v3(ob->obmat, v2);
+ mul_m4_v3(ob->obmat, v3);
+ mul_m4_v3(ob->obmat, v4);
}
e1= efa->e1;
@@ -2358,30 +2370,30 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
if( (e4->f & e1->f & SELECT) || (G.moving && (efa->v1->f & SELECT)) ) {
/* Vec 1 */
- sprintf(val,"%.3f", RAD2DEG(VecAngle3(v4, v1, v2)));
- VecLerpf(fvec, efa->cent, efa->v1->co, 0.8f);
+ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v4, v1, v2)));
+ interp_v3_v3v3(fvec, efa->cent, efa->v1->co, 0.8f);
view3d_cached_text_draw_add(efa->cent[0], efa->cent[1], efa->cent[2], val, 0);
}
if( (e1->f & e2->f & SELECT) || (G.moving && (efa->v2->f & SELECT)) ) {
/* Vec 2 */
- sprintf(val,"%.3f", RAD2DEG(VecAngle3(v1, v2, v3)));
- VecLerpf(fvec, efa->cent, efa->v2->co, 0.8f);
+ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v1, v2, v3)));
+ interp_v3_v3v3(fvec, efa->cent, efa->v2->co, 0.8f);
view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
}
if( (e2->f & e3->f & SELECT) || (G.moving && (efa->v3->f & SELECT)) ) {
/* Vec 3 */
if(efa->v4)
- sprintf(val,"%.3f", RAD2DEG(VecAngle3(v2, v3, v4)));
+ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v2, v3, v4)));
else
- sprintf(val,"%.3f", RAD2DEG(VecAngle3(v2, v3, v1)));
- VecLerpf(fvec, efa->cent, efa->v3->co, 0.8f);
+ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v2, v3, v1)));
+ interp_v3_v3v3(fvec, efa->cent, efa->v3->co, 0.8f);
view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
}
/* Vec 4 */
if(efa->v4) {
if( (e3->f & e4->f & SELECT) || (G.moving && (efa->v4->f & SELECT)) ) {
- sprintf(val,"%.3f", RAD2DEG(VecAngle3(v3, v4, v1)));
- VecLerpf(fvec, efa->cent, efa->v4->co, 0.8f);
+ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v3, v4, v1)));
+ interp_v3_v3v3(fvec, efa->cent, efa->v4->co, 0.8f);
view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
}
}
@@ -3434,7 +3446,7 @@ static void draw_particle(ParticleKey *state, int draw_as, short draw, float pix
{
vec[0]=2.0f*pixsize;
vec[1]=vec[2]=0.0;
- QuatMulVecf(state->rot,vec);
+ mul_qt_v3(state->rot,vec);
if(draw_as==PART_DRAW_AXIS) {
cd[1]=cd[2]=cd[4]=cd[5]=0.0;
cd[0]=cd[3]=1.0;
@@ -3462,7 +3474,7 @@ static void draw_particle(ParticleKey *state, int draw_as, short draw, float pix
vec[1]=2.0f*pixsize;
vec[0]=vec[2]=0.0;
- QuatMulVecf(state->rot,vec);
+ mul_qt_v3(state->rot,vec);
if(draw_as==PART_DRAW_AXIS){
VECCOPY(vec2,state->co);
}
@@ -3474,7 +3486,7 @@ static void draw_particle(ParticleKey *state, int draw_as, short draw, float pix
vec[2]=2.0f*pixsize;
vec[0]=vec[1]=0.0;
- QuatMulVecf(state->rot,vec);
+ mul_qt_v3(state->rot,vec);
if(draw_as==PART_DRAW_AXIS){
VECCOPY(vec2,state->co);
}
@@ -3489,9 +3501,9 @@ static void draw_particle(ParticleKey *state, int draw_as, short draw, float pix
case PART_DRAW_LINE:
{
VECCOPY(vec,state->vel);
- Normalize(vec);
+ normalize_v3(vec);
if(draw & PART_DRAW_VEL_LENGTH)
- VecMulf(vec,VecLength(state->vel));
+ mul_v3_fl(vec,len_v3(state->vel));
VECADDFAC(pdd->vd,state->co,vec,-draw_line[0]); pdd->vd+=3;
VECADDFAC(pdd->vd,state->co,vec,draw_line[1]); pdd->vd+=3;
if(cd) {
@@ -3649,7 +3661,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if( (base->flag & OB_FROMDUPLI) && (ob->flag & OB_FROMGROUP) ) {
float mat[4][4];
- Mat4MulMat4(mat, psys->imat, ob->obmat);
+ mul_m4_m4m4(mat, psys->imat, ob->obmat);
wmMultMatrix(mat);
}
@@ -3671,9 +3683,9 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
break;
case PART_DRAW_CIRC:
/* calculate view aligned matrix: */
- Mat4CpyMat4(imat, rv3d->viewinv);
- Normalize(imat[0]);
- Normalize(imat[1]);
+ copy_m4_m4(imat, rv3d->viewinv);
+ normalize_v3(imat[0]);
+ normalize_v3(imat[1]);
/* no break! */
case PART_DRAW_CROSS:
case PART_DRAW_AXIS:
@@ -3729,9 +3741,9 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
break;
}
if(part->draw & PART_DRAW_SIZE && part->draw_as!=PART_DRAW_CIRC){
- Mat4CpyMat4(imat, rv3d->viewinv);
- Normalize(imat[0]);
- Normalize(imat[1]);
+ copy_m4_m4(imat, rv3d->viewinv);
+ normalize_v3(imat[0]);
+ normalize_v3(imat[1]);
}
if(!create_cdata && pdd && pdd->cdata) {
@@ -3903,7 +3915,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
psys_get_particle_on_path(&sim,a,&state,need_v);
if(psys->parent)
- Mat4MulVecfl(psys->parent->obmat, state.co);
+ mul_m4_v3(psys->parent->obmat, state.co);
/* create actiual particle data */
if(draw_as == PART_DRAW_BB) {
@@ -3923,7 +3935,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
state.time=cfra;
if(psys_get_particle_state(&sim,a,&state,0)){
if(psys->parent)
- Mat4MulVecfl(psys->parent->obmat, state.co);
+ mul_m4_v3(psys->parent->obmat, state.co);
/* create actiual particle data */
if(draw_as == PART_DRAW_BB) {
@@ -3946,7 +3958,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
VECCOPY(pdd->ved,state.co);
pdd->ved+=3;
VECCOPY(vel,state.vel);
- VecMulf(vel,timestep);
+ mul_v3_fl(vel,timestep);
VECADD(pdd->ved,state.co,vel);
pdd->ved+=3;
@@ -4314,7 +4326,170 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj
glPointSize(1.0);
}
+//static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float tw,float th)
+static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float itw,float ith,float drw_size)
+{
+ float tr[3][3];
+ float root[3],tip[3];
+ float tw,th;
+ /* take a copy for not spoiling original */
+ copy_m3_m3(tr,rotscale);
+ tw = itw * drw_size;
+ th = ith * drw_size;
+
+ glColor4ub(0x7F, 0x00, 0x00, 155);
+ glBegin(GL_LINES);
+ root[1] = root[2] = 0.0f;
+ root[0] = -drw_size;
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ tip[1] = tip[2] = 0.0f;
+ tip[0] = drw_size;
+ mul_m3_v3(tr,tip);
+ VECADD(tip,tip,com);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[1] =0.0f; root[2] = tw;
+ root[0] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[1] =0.0f; root[2] = -tw;
+ root[0] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[1] =tw; root[2] = 0.0f;
+ root[0] =th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[1] =-tw; root[2] = 0.0f;
+ root[0] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ glColor4ub(0x00, 0x7F, 0x00, 155);
+
+ glBegin(GL_LINES);
+ root[0] = root[2] = 0.0f;
+ root[1] = -drw_size;
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ tip[0] = tip[2] = 0.0f;
+ tip[1] = drw_size;
+ mul_m3_v3(tr,tip);
+ VECADD(tip,tip,com);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[2] = tw;
+ root[1] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[2] = -tw;
+ root[1] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+ root[0] =tw; root[2] = 0.0f;
+ root[1] =th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =-tw; root[2] = 0.0f;
+ root[1] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ glColor4ub(0x00, 0x00, 0x7F, 155);
+ glBegin(GL_LINES);
+ root[0] = root[1] = 0.0f;
+ root[2] = -drw_size;
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ tip[0] = tip[1] = 0.0f;
+ tip[2] = drw_size;
+ mul_m3_v3(tr,tip);
+ VECADD(tip,tip,com);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[1] = tw;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[1] = -tw;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] = tw; root[1] = 0.0f;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] = -tw; root[1] = 0.0f;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+}
+
+/*place to add drawers */
unsigned int nurbcol[8]= {
0, 0x9090, 0x409030, 0x603080, 0, 0x40fff0, 0x40c033, 0xA090F0 };
@@ -4566,10 +4741,10 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base,
float vec_a[3] = { fac,0, 0}; // Offset perpendicular to the curve
float vec_b[3] = {-fac,0, 0}; // Delta along the curve
- QuatMulVecf(bevp->quat, vec_a);
- QuatMulVecf(bevp->quat, vec_b);
- VecAddf(vec_a, vec_a, bevp->vec);
- VecAddf(vec_b, vec_b, bevp->vec);
+ mul_qt_v3(bevp->quat, vec_a);
+ mul_qt_v3(bevp->quat, vec_b);
+ add_v3_v3v3(vec_a, vec_a, bevp->vec);
+ add_v3_v3v3(vec_b, vec_b, bevp->vec);
VECSUBFAC(vec_a, vec_a, bevp->dir, fac);
VECSUBFAC(vec_b, vec_b, bevp->dir, fac);
@@ -4711,8 +4886,8 @@ static void drawspiral(float *cent, float rad, float tmat[][4], int start)
VECCOPY(vx, tmat[0]);
VECCOPY(vy, tmat[1]);
- VecMulf(vx, rad);
- VecMulf(vy, rad);
+ mul_v3_fl(vx, rad);
+ mul_v3_fl(vy, rad);
VECCOPY(vec, cent);
@@ -4776,7 +4951,7 @@ static void drawtube(float *vec, float radius, float height, float tmat[][4])
float cur[3];
drawcircball(GL_LINE_LOOP, vec, radius, tmat);
- VecCopyf(cur,vec);
+ copy_v3_v3(cur,vec);
cur[2]+=height;
drawcircball(GL_LINE_LOOP, cur, radius, tmat);
@@ -4797,7 +4972,7 @@ static void drawcone(float *vec, float radius, float height, float tmat[][4])
{
float cur[3];
- VecCopyf(cur,vec);
+ copy_v3_v3(cur,vec);
cur[2]+=height;
drawcircball(GL_LINE_LOOP, cur, radius, tmat);
@@ -4845,9 +5020,9 @@ static int drawmball(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base,
else UI_ThemeColor(TH_WIRE);
wmGetMatrix(tmat);
- Mat4Invert(imat, tmat);
- Normalize(imat[0]);
- Normalize(imat[1]);
+ invert_m4_m4(imat, tmat);
+ normalize_v3(imat[0]);
+ normalize_v3(imat[1]);
while(ml) {
@@ -4904,14 +5079,14 @@ static void draw_forcefield(Scene *scene, Object *ob)
/* calculus here, is reused in PFIELD_FORCE */
wmGetMatrix(tmat);
- Mat4Invert(imat, tmat);
-// Normalize(imat[0]); // we don't do this because field doesnt scale either... apart from wind!
-// Normalize(imat[1]);
+ invert_m4_m4(imat, tmat);
+// normalize_v3(imat[0]); // we don't do this because field doesnt scale either... apart from wind!
+// normalize_v3(imat[1]);
if (pd->forcefield == PFIELD_WIND) {
float force_val;
- Mat4One(tmat);
+ unit_m4(tmat);
UI_ThemeColorBlend(curcol, TH_BACK, 0.5);
//if (has_ipo_code(ob->ipo, OB_PD_FSTR))
@@ -4947,7 +5122,7 @@ static void draw_forcefield(Scene *scene, Object *ob)
else if (pd->forcefield == PFIELD_VORTEX) {
float ffall_val, force_val;
- Mat4One(tmat);
+ unit_m4(tmat);
//if (has_ipo_code(ob->ipo, OB_PD_FFALL))
// ffall_val = IPO_GetFloatValue(ob->ipo, OB_PD_FFALL, scene->r.cfra);
//else
@@ -5008,7 +5183,7 @@ static void draw_forcefield(Scene *scene, Object *ob)
else if(pd->falloff==PFIELD_FALL_TUBE){
float radius,distance;
- Mat4One(tmat);
+ unit_m4(tmat);
vec[0]=vec[1]=0.0f;
radius=(pd->flag&PFIELD_USEMAXR)?pd->maxrad:1.0f;
@@ -5030,7 +5205,7 @@ static void draw_forcefield(Scene *scene, Object *ob)
else if(pd->falloff==PFIELD_FALL_CONE){
float radius,distance;
- Mat4One(tmat);
+ unit_m4(tmat);
radius=(pd->flag&PFIELD_USEMAXR)?pd->maxrad:1.0f;
radius*=(float)M_PI/180.0f;
@@ -5278,7 +5453,7 @@ static void draw_hooks(Object *ob)
if (md->type==eModifierType_Hook) {
HookModifierData *hmd = (HookModifierData*) md;
- VecMat4MulVecfl(vec, ob->obmat, hmd->cent);
+ mul_v3_m4v3(vec, ob->obmat, hmd->cent);
if(hmd->object) {
setlinestyle(3);
@@ -5310,7 +5485,7 @@ void drawRBpivot(bRigidBodyJointConstraint *data)
if(G.f & G_RENDER_SHADOW)
return;
- EulToMat4(eu,mat);
+ eul_to_mat4(mat,eu);
glLineWidth (4.0f);
setlinestyle(2);
for (axis=0; axis<3; axis++) {
@@ -5319,7 +5494,7 @@ void drawRBpivot(bRigidBodyJointConstraint *data)
dir[axis] = 1.f;
glBegin(GL_LINES);
- Mat4MulVecfl(mat,dir);
+ mul_m4_v3(mat,dir);
v[0] += dir[0];
v[1] += dir[1];
v[2] += dir[2];
@@ -5467,7 +5642,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if((flag & DRAW_CONSTCOLOR) == 0) {
project_short(ar, ob->obmat[3], &base->sx);
- if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM);
+ if( (!scene->obedit) && (G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM);
else {
if(ob->type==OB_LAMP) UI_ThemeColor(TH_LAMP);
@@ -5709,6 +5884,23 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
default:
drawaxes(1.0, flag, OB_ARROWS);
}
+ if(ob->soft /*&& flag & OB_SBMOTION*/){
+ float mrt[3][3],msc[3][3],mtr[3][3];
+ SoftBody *sb = 0;
+ float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f;
+ if ((sb= ob->soft)){
+ if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){
+
+ wmLoadMatrix(rv3d->viewmat);
+ copy_m3_m3(msc,sb->lscale);
+ copy_m3_m3(mrt,sb->lrot);
+ mul_m3_m3m3(mtr,mrt,msc);
+ ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize);
+ wmMultMatrix(ob->obmat);
+ }
+ }
+ }
+
if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob);
/* particle mode has to be drawn first so that possible child particles get cached in edit mode */
@@ -5895,7 +6087,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
vec[0]= vec[1]= vec[2]= 0.0;
wmGetMatrix(tmat);
- Mat4Invert(imat, tmat);
+ invert_m4_m4(imat, tmat);
setlinestyle(2);
drawcircball(GL_LINE_LOOP, vec, ob->inertia, imat);
@@ -5982,7 +6174,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if (cti->get_target_matrix)
cti->get_target_matrix(curcon, cob, ct, bsystem_time(scene, ob, (float)(scene->r.cfra), give_timeoffset(ob)));
else
- Mat4One(ct->matrix);
+ unit_m4(ct->matrix);
setlinestyle(3);
glBegin(GL_LINES);
diff --git a/source/blender/editors/space_view3d/drawvolume.c b/source/blender/editors/space_view3d/drawvolume.c
index 3c80441b9e6..168e1f8592d 100644
--- a/source/blender/editors/space_view3d/drawvolume.c
+++ b/source/blender/editors/space_view3d/drawvolume.c
@@ -66,7 +66,7 @@
#include "DNA_world_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_edgehash.h"
#include "BLI_rand.h"
@@ -191,7 +191,7 @@ static int convex(float *p0, float *up, float *a, float *b)
float va[3], vb[3], tmp[3];
VECSUB(va, a, p0);
VECSUB(vb, b, p0);
- Crossf(tmp, va, vb);
+ cross_v3_v3v3(tmp, va, vb);
return INPR(up, tmp) >= 0;
}
@@ -363,7 +363,7 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture
// get view vector
VECCOPY(viewnormal, rv3d->viewinv[2]);
- Normalize(viewnormal);
+ normalize_v3(viewnormal);
// find cube vertex that is closest to the viewer
for (i=0; i<8; i++) {
@@ -433,7 +433,7 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture
break;
VECCOPY(tmp_point, viewnormal);
- VecMulf(tmp_point, -dd*((ds/dd)-(float)n));
+ mul_v3_fl(tmp_point, -dd*((ds/dd)-(float)n));
VECADD(tmp_point2, cv[good_index], tmp_point);
d = INPR(tmp_point2, viewnormal);
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 4a9042aa31c..db617473291 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -40,7 +40,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_action.h"
@@ -148,7 +148,7 @@ RegionView3D *ED_view3d_context_rv3d(bContext *C)
if(rv3d==NULL) {
ScrArea *sa =CTX_wm_area(C);
- if(sa->spacetype==SPACE_VIEW3D) {
+ if(sa && sa->spacetype==SPACE_VIEW3D) {
ARegion *ar;
for(ar= sa->regionbase.first; ar; ar= ar->next)
if(ar->regiontype==RGN_TYPE_WINDOW)
@@ -175,6 +175,9 @@ void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d)
/* local viewmat and persmat, to calculate projections */
wmGetMatrix(rv3d->viewmatob);
wmGetSingleMatrix(rv3d->persmatob);
+
+ /* initializes object space clipping, speeds up clip tests */
+ ED_view3d_local_clipping(rv3d, ob->obmat);
}
/* ******************** default callbacks for view3d space ***************** */
@@ -369,6 +372,9 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
keymap= WM_keymap_find(wm->defaultconf, "Object Non-modal", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
+ keymap= WM_keymap_find(wm->defaultconf, "Frames", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
+
/* own keymap, last so modes can override it */
keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
@@ -511,6 +517,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_VIEW3D)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -633,6 +643,10 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_VIEW3D)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -676,7 +690,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
if(selected_objects)
CTX_data_id_list_add(result, &base->object->id);
else
- CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
}
}
}
@@ -693,7 +707,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
if(selected_editable_objects)
CTX_data_id_list_add(result, &base->object->id);
else
- CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
}
}
}
@@ -710,7 +724,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
if(visible_objects)
CTX_data_id_list_add(result, &base->object->id);
else
- CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
}
}
}
@@ -726,7 +740,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
if(selectable_objects)
CTX_data_id_list_add(result, &base->object->id);
else
- CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
}
}
}
@@ -736,7 +750,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
else if(CTX_data_equals(member, "active_base")) {
if(scene->basact && (scene->basact->lay & lay))
if((scene->basact->object->restrictflag & OB_RESTRICT_VIEW)==0)
- CTX_data_pointer_set(result, &scene->id, &RNA_UnknownType, scene->basact);
+ CTX_data_pointer_set(result, &scene->id, &RNA_ObjectBase, scene->basact);
return 1;
}
@@ -747,7 +761,11 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
return 1;
}
- return 0;
+ else {
+ return 0; /* not found */
+ }
+
+ return -1; /* found but not available */
}
/* only called once, from space/spacetypes.c */
@@ -769,7 +787,7 @@ void ED_spacetype_view3d(void)
/* regions: main window */
art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region");
art->regionid = RGN_TYPE_WINDOW;
- art->keymapflag= ED_KEYMAP_FRAMES|ED_KEYMAP_GPENCIL;
+ art->keymapflag= ED_KEYMAP_GPENCIL;
art->draw= view3d_main_area_draw;
art->init= view3d_main_area_init;
art->free= view3d_main_area_free;
@@ -821,7 +839,7 @@ void ED_spacetype_view3d(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= view3d_header_area_listener;
art->init= view3d_header_area_init;
art->draw= view3d_header_area_draw;
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index 608a22ea529..a988ceb50e7 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -52,7 +52,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -176,7 +176,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
if(eve->f & SELECT) {
evedef= eve;
tot++;
- VecAddf(median, median, eve->co);
+ add_v3_v3v3(median, median, eve->co);
}
eve= eve->next;
}
@@ -232,18 +232,18 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
a= nu->pntsu;
while(a--) {
if(bezt->f2 & SELECT) {
- VecAddf(median, median, bezt->vec[1]);
+ add_v3_v3v3(median, median, bezt->vec[1]);
tot++;
median[4]+= bezt->weight;
totweight++;
}
else {
if(bezt->f1 & SELECT) {
- VecAddf(median, median, bezt->vec[0]);
+ add_v3_v3v3(median, median, bezt->vec[0]);
tot++;
}
if(bezt->f3 & SELECT) {
- VecAddf(median, median, bezt->vec[2]);
+ add_v3_v3v3(median, median, bezt->vec[2]);
tot++;
}
}
@@ -255,7 +255,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
a= nu->pntsu*nu->pntsv;
while(a--) {
if(bp->f1 & SELECT) {
- VecAddf(median, median, bp->vec);
+ add_v3_v3v3(median, median, bp->vec);
median[3]+= bp->vec[3];
totw++;
tot++;
@@ -277,7 +277,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
bp= lt->editlatt->def;
while(a--) {
if(bp->f1 & SELECT) {
- VecAddf(median, median, bp->vec);
+ add_v3_v3v3(median, median, bp->vec);
tot++;
median[4]+= bp->weight;
totweight++;
@@ -296,7 +296,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
if(totweight) median[4] /= (float)totweight;
if(v3d->flag & V3D_GLOBAL_STATS)
- Mat4MulVecfl(ob->obmat, median);
+ mul_m4_v3(ob->obmat, median);
if(block) { // buttons
int but_y;
@@ -371,11 +371,11 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
memcpy(ve_median, tfp->ve_median, sizeof(tfp->ve_median));
if(v3d->flag & V3D_GLOBAL_STATS) {
- Mat4Invert(ob->imat, ob->obmat);
- Mat4MulVecfl(ob->imat, median);
- Mat4MulVecfl(ob->imat, ve_median);
+ invert_m4_m4(ob->imat, ob->obmat);
+ mul_m4_v3(ob->imat, median);
+ mul_m4_v3(ob->imat, ve_median);
}
- VecSubf(median, ve_median, median);
+ sub_v3_v3v3(median, ve_median, median);
median[3]= ve_median[3]-median[3];
median[4]= ve_median[4]-median[4];
@@ -388,7 +388,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
eve= em->verts.first;
while(eve) {
if(eve->f & SELECT) {
- VecAddf(eve->co, eve->co, median);
+ add_v3_v3v3(eve->co, eve->co, median);
}
eve= eve->next;
}
@@ -423,17 +423,17 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
a= nu->pntsu;
while(a--) {
if(bezt->f2 & SELECT) {
- VecAddf(bezt->vec[0], bezt->vec[0], median);
- VecAddf(bezt->vec[1], bezt->vec[1], median);
- VecAddf(bezt->vec[2], bezt->vec[2], median);
+ add_v3_v3v3(bezt->vec[0], bezt->vec[0], median);
+ add_v3_v3v3(bezt->vec[1], bezt->vec[1], median);
+ add_v3_v3v3(bezt->vec[2], bezt->vec[2], median);
bezt->weight+= median[4];
}
else {
if(bezt->f1 & SELECT) {
- VecAddf(bezt->vec[0], bezt->vec[0], median);
+ add_v3_v3v3(bezt->vec[0], bezt->vec[0], median);
}
if(bezt->f3 & SELECT) {
- VecAddf(bezt->vec[2], bezt->vec[2], median);
+ add_v3_v3v3(bezt->vec[2], bezt->vec[2], median);
}
}
bezt++;
@@ -444,7 +444,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
a= nu->pntsu*nu->pntsv;
while(a--) {
if(bp->f1 & SELECT) {
- VecAddf(bp->vec, bp->vec, median);
+ add_v3_v3v3(bp->vec, bp->vec, median);
bp->vec[3]+= median[3];
bp->weight+= median[4];
}
@@ -466,7 +466,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
bp= lt->editlatt->def;
while(a--) {
if(bp->f1 & SELECT) {
- VecAddf(bp->vec, bp->vec, median);
+ add_v3_v3v3(bp->vec, bp->vec, median);
bp->weight+= median[4];
}
bp++;
@@ -504,7 +504,7 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(layout, 0.8);
- if (ptr->type == &RNA_PoseChannel) {
+ if (ptr->type == &RNA_PoseBone) {
PointerRNA boneptr;
Bone *bone;
@@ -521,40 +521,35 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(layout, 0.8);
switch(RNA_enum_get(ptr, "rotation_mode")) {
- case ROT_MODE_XYZ:
- case ROT_MODE_XZY:
- case ROT_MODE_YXZ:
- case ROT_MODE_YZX:
- case ROT_MODE_ZXY:
- case ROT_MODE_ZYX:
- colsub = uiLayoutColumn(split, 1);
- uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0);
- colsub = uiLayoutColumn(split, 1);
- uiItemL(colsub, "", 0);
- uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
- break;
- case ROT_MODE_QUAT:
+ case ROT_MODE_QUAT: /* quaternion */
colsub = uiLayoutColumn(split, 1);
uiItemR(colsub, "Rotation", 0, ptr, "rotation_quaternion", 0);
colsub = uiLayoutColumn(split, 1);
- uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
+ uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
if (RNA_boolean_get(ptr, "lock_rotations_4d"))
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
else
uiItemL(colsub, "", 0);
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
break;
- case ROT_MODE_AXISANGLE:
+ case ROT_MODE_AXISANGLE: /* axis angle */
colsub = uiLayoutColumn(split, 1);
uiItemR(colsub, "Rotation", 0, ptr, "rotation_axis_angle", 0);
colsub = uiLayoutColumn(split, 1);
- uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
+ uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
if (RNA_boolean_get(ptr, "lock_rotations_4d"))
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
else
uiItemL(colsub, "", 0);
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
break;
+ default: /* euler rotations */
+ colsub = uiLayoutColumn(split, 1);
+ uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0);
+ colsub = uiLayoutColumn(split, 1);
+ uiItemL(colsub, "", 0);
+ uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
+ break;
}
uiItemR(layout, "", 0, ptr, "rotation_mode", 0);
@@ -591,7 +586,7 @@ static void v3d_posearmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo
return;
}
- RNA_pointer_create(&ob->id, &RNA_PoseChannel, pchan, &pchanptr);
+ RNA_pointer_create(&ob->id, &RNA_PoseBone, pchan, &pchanptr);
col= uiLayoutColumn(layout, 0);
@@ -606,13 +601,13 @@ static void v3d_posearmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo
if (pchan->rotmode == ROT_MODE_AXISANGLE) {
float quat[4];
/* convert to euler, passing through quats... */
- AxisAngleToQuat(quat, pchan->rotAxis, pchan->rotAngle);
- QuatToEul(quat, tfp->ob_eul);
+ axis_angle_to_quat(quat, pchan->rotAxis, pchan->rotAngle);
+ quat_to_eul( tfp->ob_eul,quat);
}
else if (pchan->rotmode == ROT_MODE_QUAT)
- QuatToEul(pchan->quat, tfp->ob_eul);
+ quat_to_eul( tfp->ob_eul,pchan->quat);
else
- VecCopyf(tfp->ob_eul, pchan->eul);
+ copy_v3_v3(tfp->ob_eul, pchan->eul);
tfp->ob_eul[0]*= 180.0/M_PI;
tfp->ob_eul[1]*= 180.0/M_PI;
tfp->ob_eul[2]*= 180.0/M_PI;
@@ -823,13 +818,13 @@ static void do_view3d_region_buttons(bContext *C, void *arg, int event)
if (pchan->rotmode == ROT_MODE_AXISANGLE) {
float quat[4];
/* convert to axis-angle, passing through quats */
- EulToQuat(eul, quat);
- QuatToAxisAngle(quat, pchan->rotAxis, &pchan->rotAngle);
+ eul_to_quat( quat,eul);
+ quat_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,quat);
}
else if (pchan->rotmode == ROT_MODE_QUAT)
- EulToQuat(eul, pchan->quat);
+ eul_to_quat( pchan->quat,eul);
else
- VecCopyf(pchan->eul, eul);
+ copy_v3_v3(pchan->eul, eul);
}
/* no break, pass on */
case B_ARMATUREPANEL2:
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 2879dc3ed22..acb82283604 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -48,7 +48,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_anim.h"
@@ -193,22 +193,27 @@ void view3d_clr_clipping(void)
}
}
-int view3d_test_clipping(RegionView3D *rv3d, float *vec)
+static int test_clipping(float *vec, float clip[][4])
{
- /* vec in world coordinates, returns 1 if clipped */
float view[3];
-
VECCOPY(view, vec);
- if(0.0f < rv3d->clip[0][3] + INPR(view, rv3d->clip[0]))
- if(0.0f < rv3d->clip[1][3] + INPR(view, rv3d->clip[1]))
- if(0.0f < rv3d->clip[2][3] + INPR(view, rv3d->clip[2]))
- if(0.0f < rv3d->clip[3][3] + INPR(view, rv3d->clip[3]))
+ if(0.0f < clip[0][3] + INPR(view, clip[0]))
+ if(0.0f < clip[1][3] + INPR(view, clip[1]))
+ if(0.0f < clip[2][3] + INPR(view, clip[2]))
+ if(0.0f < clip[3][3] + INPR(view, clip[3]))
return 0;
-
+
return 1;
}
+/* for 'local' ED_view3d_local_clipping must run first
+ * then all comparisons can be done in localspace */
+int view3d_test_clipping(RegionView3D *rv3d, float *vec, int local)
+{
+ return test_clipping(vec, local ? rv3d->clip_local : rv3d->clip);
+}
+
/* ********* end custom clipping *********** */
@@ -251,7 +256,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u
vec4[0]=vec4[1]=vec4[2]=0.0;
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
fx= vec4[0];
fy= vec4[1];
fw= vec4[3];
@@ -266,7 +271,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u
vec4[2]= 0.0;
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
fx= vec4[0];
fy= vec4[1];
fw= vec4[3];
@@ -596,7 +601,7 @@ static void draw_view_axis(RegionView3D *rv3d)
/* X */
vec[0] = vec[3] = 1;
vec[1] = vec[2] = 0;
- QuatMulVecf(rv3d->viewquat, vec);
+ mul_qt_v3(rv3d->viewquat, vec);
UI_make_axis_color((char *)gridcol, (char *)col, 'x');
rgb_to_hsv(col[0]/255.0f, col[1]/255.0f, col[2]/255.0f, &h, &s, &v);
@@ -616,7 +621,7 @@ static void draw_view_axis(RegionView3D *rv3d)
/* Y */
vec[1] = vec[3] = 1;
vec[0] = vec[2] = 0;
- QuatMulVecf(rv3d->viewquat, vec);
+ mul_qt_v3(rv3d->viewquat, vec);
UI_make_axis_color((char *)gridcol, (char *)col, 'y');
rgb_to_hsv(col[0]/255.0f, col[1]/255.0f, col[2]/255.0f, &h, &s, &v);
@@ -636,7 +641,7 @@ static void draw_view_axis(RegionView3D *rv3d)
/* Z */
vec[2] = vec[3] = 1;
vec[1] = vec[0] = 0;
- QuatMulVecf(rv3d->viewquat, vec);
+ mul_qt_v3(rv3d->viewquat, vec);
UI_make_axis_color((char *)gridcol, (char *)col, 'z');
rgb_to_hsv(col[0]/255.0f, col[1]/255.0f, col[2]/255.0f, &h, &s, &v);
@@ -1558,7 +1563,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas
/* need this for next part of code */
bb= object_get_boundbox(dob->ob);
- Mat4One(dob->ob->obmat); /* obmat gets restored */
+ unit_m4(dob->ob->obmat); /* obmat gets restored */
displist= glGenLists(1);
glNewList(displist, GL_COMPILE);
@@ -1576,7 +1581,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas
wmLoadMatrix(rv3d->viewmat);
}
else {
- Mat4CpyMat4(dob->ob->obmat, dob->mat);
+ copy_m4_m4(dob->ob->obmat, dob->mat);
draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR);
}
@@ -1689,9 +1694,9 @@ void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *))
setwinmatrixview3d(ar, v3d, NULL); /* 0= no pick rect */
setviewmatrixview3d(scene, v3d, rv3d); /* note: calls where_is_object for camera... */
- Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
- Mat4Invert(rv3d->persinv, rv3d->persmat);
- Mat4Invert(rv3d->viewinv, rv3d->viewmat);
+ mul_m4_m4m4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
+ invert_m4_m4(rv3d->persinv, rv3d->persmat);
+ invert_m4_m4(rv3d->viewinv, rv3d->viewmat);
glClear(GL_DEPTH_BUFFER_BIT);
@@ -1899,29 +1904,29 @@ static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar,
/* setup window matrices */
if(winmat)
- Mat4CpyMat4(rv3d->winmat, winmat);
+ copy_m4_m4(rv3d->winmat, winmat);
else
setwinmatrixview3d(ar, v3d, NULL); /* NULL= no pickrect */
/* setup view matrix */
if(viewmat)
- Mat4CpyMat4(rv3d->viewmat, viewmat);
+ copy_m4_m4(rv3d->viewmat, viewmat);
else
setviewmatrixview3d(scene, v3d, rv3d); /* note: calls where_is_object for camera... */
/* update utilitity matrices */
- Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
- Mat4Invert(rv3d->persinv, rv3d->persmat);
- Mat4Invert(rv3d->viewinv, rv3d->viewmat);
+ mul_m4_m4m4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
+ invert_m4_m4(rv3d->persinv, rv3d->persmat);
+ invert_m4_m4(rv3d->viewinv, rv3d->viewmat);
/* calculate pixelsize factor once, is used for lamps and obcenters */
{
float len1, len2, vec[3];
VECCOPY(vec, rv3d->persinv[0]);
- len1= Normalize(vec);
+ len1= normalize_v3(vec);
VECCOPY(vec, rv3d->persinv[1]);
- len2= Normalize(vec);
+ len2= normalize_v3(vec);
rv3d->pixsize= 2.0f*(len1>len2?len1:len2);
@@ -2176,7 +2181,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
glDisable(GL_DEPTH_TEST);
}
- /* draw grease-pencil stuff */
+ /* draw grease-pencil stuff (3d-space strokes) */
//if (v3d->flag2 & V3D_DISPGP)
draw_gpencil_3dview((bContext *)C, 1);
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 1cbb7d0ab56..2444c461bd0 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -46,7 +46,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BKE_action.h"
@@ -141,12 +141,12 @@ static void view3d_boxview_clip(ScrArea *sa)
}
/* normals for plane equations */
- CalcNormFloat(bb->vec[0], bb->vec[1], bb->vec[4], clip[0]);
- CalcNormFloat(bb->vec[1], bb->vec[2], bb->vec[5], clip[1]);
- CalcNormFloat(bb->vec[2], bb->vec[3], bb->vec[6], clip[2]);
- CalcNormFloat(bb->vec[3], bb->vec[0], bb->vec[7], clip[3]);
- CalcNormFloat(bb->vec[4], bb->vec[5], bb->vec[6], clip[4]);
- CalcNormFloat(bb->vec[0], bb->vec[2], bb->vec[1], clip[5]);
+ normal_tri_v3( clip[0],bb->vec[0], bb->vec[1], bb->vec[4]);
+ normal_tri_v3( clip[1],bb->vec[1], bb->vec[2], bb->vec[5]);
+ normal_tri_v3( clip[2],bb->vec[2], bb->vec[3], bb->vec[6]);
+ normal_tri_v3( clip[3],bb->vec[3], bb->vec[0], bb->vec[7]);
+ normal_tri_v3( clip[4],bb->vec[4], bb->vec[5], bb->vec[6]);
+ normal_tri_v3( clip[5],bb->vec[0], bb->vec[2], bb->vec[1]);
/* then plane equations */
for(val=0; val<5; val++) {
@@ -299,7 +299,7 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
/* If there's no selection, lastofs is unmodified and last value since static */
calculateTransformCenter(C, event, V3D_CENTROID, lastofs);
VECCOPY(vod->obofs, lastofs);
- VecMulf(vod->obofs, -1.0f);
+ mul_v3_fl(vod->obofs, -1.0f);
}
/* lookup, we dont pass on v3d to prevent confusement */
@@ -422,13 +422,13 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
calctrackballvec(&vod->ar->winrct, x, y, newvec);
- VecSubf(dvec, newvec, vod->trackvec);
+ sub_v3_v3v3(dvec, newvec, vod->trackvec);
si= sqrt(dvec[0]*dvec[0]+ dvec[1]*dvec[1]+ dvec[2]*dvec[2]);
si/= (2.0*TRACKBALLSIZE);
- Crossf(q1+1, vod->trackvec, newvec);
- Normalize(q1+1);
+ cross_v3_v3v3(q1+1, vod->trackvec, newvec);
+ normalize_v3(q1+1);
/* Allow for rotation beyond the interval
* [-pi, pi] */
@@ -447,19 +447,19 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
q1[1]*= si;
q1[2]*= si;
q1[3]*= si;
- QuatMul(rv3d->viewquat, q1, vod->oldquat);
+ mul_qt_qtqt(rv3d->viewquat, q1, vod->oldquat);
if (use_sel) {
/* compute the post multiplication quat, to rotate the offset correctly */
QUATCOPY(q1, vod->oldquat);
- QuatConj(q1);
- QuatMul(q1, q1, rv3d->viewquat);
+ conjugate_qt(q1);
+ mul_qt_qtqt(q1, q1, rv3d->viewquat);
- QuatConj(q1); /* conj == inv for unit quat */
+ conjugate_qt(q1); /* conj == inv for unit quat */
VECCOPY(rv3d->ofs, vod->ofs);
- VecSubf(rv3d->ofs, rv3d->ofs, vod->obofs);
- QuatMulVecf(q1, rv3d->ofs);
- VecAddf(rv3d->ofs, rv3d->ofs, vod->obofs);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ mul_qt_v3(q1, rv3d->ofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
}
}
else {
@@ -475,12 +475,12 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
const float sensitivity = 0.0035;
/* Get the 3x3 matrix and its inverse from the quaternion */
- QuatToMat3(rv3d->viewquat, m);
- Mat3Inv(m_inv,m);
+ quat_to_mat3( m,rv3d->viewquat);
+ invert_m3_m3(m_inv,m);
/* Determine the direction of the x vector (for rotating up and down) */
/* This can likely be compuated directly from the quaternion. */
- Mat3MulVecfl(m_inv,xvec);
+ mul_m3_v3(m_inv,xvec);
/* Perform the up/down rotation */
phi = sensitivity * -(y - vod->oldy);
@@ -489,13 +489,13 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
q1[1] = si * xvec[0];
q1[2] = si * xvec[1];
q1[3] = si * xvec[2];
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
if (use_sel) {
- QuatConj(q1); /* conj == inv for unit quat */
- VecSubf(rv3d->ofs, rv3d->ofs, vod->obofs);
- QuatMulVecf(q1, rv3d->ofs);
- VecAddf(rv3d->ofs, rv3d->ofs, vod->obofs);
+ conjugate_qt(q1); /* conj == inv for unit quat */
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ mul_qt_v3(q1, rv3d->ofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
}
/* Perform the orbital rotation */
@@ -503,13 +503,13 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
q1[0] = cos(phi);
q1[1] = q1[2] = 0.0;
q1[3] = sin(phi);
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
if (use_sel) {
- QuatConj(q1);
- VecSubf(rv3d->ofs, rv3d->ofs, vod->obofs);
- QuatMulVecf(q1, rv3d->ofs);
- VecAddf(rv3d->ofs, rv3d->ofs, vod->obofs);
+ conjugate_qt(q1);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ mul_qt_v3(q1, rv3d->ofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
}
}
@@ -519,17 +519,17 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
float viewmat[3][3];
- QuatToMat3(rv3d->viewquat, viewmat);
+ quat_to_mat3( viewmat,rv3d->viewquat);
for (i = 0 ; i < 39; i++){
float snapmat[3][3];
float view = (int)snapquats[i][4];
- QuatToMat3(snapquats[i], snapmat);
+ quat_to_mat3( snapmat,snapquats[i]);
- if ((Inpf(snapmat[0], viewmat[0]) > thres) &&
- (Inpf(snapmat[1], viewmat[1]) > thres) &&
- (Inpf(snapmat[2], viewmat[2]) > thres)){
+ if ((dot_v3v3(snapmat[0], viewmat[0]) > thres) &&
+ (dot_v3v3(snapmat[1], viewmat[1]) > thres) &&
+ (dot_v3v3(snapmat[2], viewmat[2]) > thres)){
QUATCOPY(rv3d->viewquat, snapquats[i]);
@@ -678,7 +678,7 @@ static void viewmove_apply(ViewOpsData *vod, int x, int y)
float dvec[3];
window_to_3d_delta(vod->ar, dvec, x-vod->oldx, y-vod->oldy);
- VecAddf(vod->rv3d->ofs, vod->rv3d->ofs, dvec);
+ add_v3_v3v3(vod->rv3d->ofs, vod->rv3d->ofs, dvec);
if(vod->rv3d->viewlock & RV3D_BOXVIEW)
view3d_boxview_sync(vod->sa, vod->ar);
@@ -851,8 +851,19 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y)
zfac = vod->dist0 * ((float)len2/len1) / vod->rv3d->dist;
}
else { /* USER_ZOOM_DOLLY */
- float len1 = (vod->ar->winrct.ymax - y) + 5;
- float len2 = (vod->ar->winrct.ymax - vod->origy) + 5;
+ float len1, len2;
+
+ if (U.uiflag & USER_ZOOM_DOLLY_HORIZ) {
+ len1 = (vod->ar->winrct.xmax - x) + 5;
+ len2 = (vod->ar->winrct.xmax - vod->origx) + 5;
+ }
+ else {
+ len1 = (vod->ar->winrct.ymax - y) + 5;
+ len2 = (vod->ar->winrct.ymax - vod->origy) + 5;
+ }
+ if (U.uiflag & USER_ZOOM_INVERT)
+ SWAP(float, len1, len2);
+
zfac = vod->dist0 * (2.0*((len2/len1)-1.0) + 1.0) / vod->rv3d->dist;
}
@@ -868,9 +879,9 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y)
upvec[0] = upvec[1] = 0.0f;
upvec[2] = (vod->dist0 - vod->rv3d->dist) * vod->grid;
vod->rv3d->dist = vod->dist0;
- Mat3CpyMat4(mat, vod->rv3d->viewinv);
- Mat3MulVecfl(mat, upvec);
- VecAddf(vod->rv3d->ofs, vod->rv3d->ofs, upvec);
+ copy_m3_m4(mat, vod->rv3d->viewinv);
+ mul_m3_v3(mat, upvec);
+ add_v3_v3v3(vod->rv3d->ofs, vod->rv3d->ofs, upvec);
} else {
/* these limits were in old code too */
if(vod->rv3d->dist<0.001*vod->grid) vod->rv3d->dist= 0.001*vod->grid;
@@ -1001,7 +1012,7 @@ void VIEW3D_OT_zoom(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER;
- RNA_def_int(ot->srna, "delta", 0, 0, INT_MAX, "Delta", "", 0, INT_MAX);
+ RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "mx", 0, 0, INT_MAX, "Zoom Position X", "", 0, INT_MAX);
RNA_def_int(ot->srna, "my", 0, 0, INT_MAX, "Zoom Position Y", "", 0, INT_MAX);
}
@@ -1142,10 +1153,10 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
if(pchan->bone->layer & arm->layer) {
ok= 1;
VECCOPY(vec, pchan->pose_head);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
DO_MINMAX(vec, min, max);
VECCOPY(vec, pchan->pose_tail);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
DO_MINMAX(vec, min, max);
}
}
@@ -1232,6 +1243,51 @@ void VIEW3D_OT_view_center(wmOperatorType *ot)
ot->flag= 0;
}
+static int viewcenter_cursor_exec(bContext *C, wmOperator *op)
+{
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ Scene *scene= CTX_data_scene(C);
+
+ if (rv3d) {
+ if (rv3d->persp==RV3D_CAMOB) {
+ /* center the camera offset */
+ rv3d->camdx= rv3d->camdy= 0.0;
+ }
+ else {
+ /* non camera center */
+ float *curs= give_cursor(scene, v3d);
+ float new_ofs[3];
+
+ new_ofs[0]= -curs[0];
+ new_ofs[1]= -curs[1];
+ new_ofs[2]= -curs[2];
+
+ smooth_view(C, NULL, NULL, new_ofs, NULL, NULL, NULL);
+ }
+
+ if (rv3d->viewlock & RV3D_BOXVIEW)
+ view3d_boxview_copy(CTX_wm_area(C), CTX_wm_region(C));
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_view_center_cursor(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Center View to Cursor";
+ ot->description= "Centers the view so that the cursor is in the middle of the view.";
+ ot->idname= "VIEW3D_OT_view_center_cursor";
+
+ /* api callbacks */
+ ot->exec= viewcenter_cursor_exec;
+ ot->poll= ED_operator_view3d_active;
+
+ /* flags */
+ ot->flag= 0;
+}
+
/* ********************* Set render border operator ****************** */
static int render_border_exec(bContext *C, wmOperator *op)
@@ -1401,7 +1457,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op)
dvec[1] = p[1]-p_corner[1];
dvec[2] = p[2]-p_corner[2];
- new_dist = VecLength(dvec);
+ new_dist = len_v3(dvec);
if(new_dist <= v3d->near*1.5) new_dist= v3d->near*1.5;
new_ofs[0] = -p[0];
@@ -1430,7 +1486,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op)
window_to_3d_delta(ar, dvec, (rect.xmin+rect.xmax-vb[0])/2, (rect.ymin+rect.ymax-vb[1])/2);
/* center the view to the center of the rectangle */
- VecSubf(new_ofs, new_ofs, dvec);
+ sub_v3_v3v3(new_ofs, new_ofs, dvec);
}
/* work out the ratios, so that everything selected fits when we zoom */
@@ -1524,9 +1580,9 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
/* same as transform manipulator when normal is set */
ED_getTransformOrientationMatrix(C, twmat, TRUE);
- Mat3ToQuat(twmat, obact_quat);
- QuatInv(obact_quat);
- QuatMul(new_quat, new_quat, obact_quat);
+ mat3_to_quat( obact_quat,twmat);
+ invert_qt(obact_quat);
+ mul_qt_qtqt(new_quat, new_quat, obact_quat);
rv3d->view= view= 0;
}
@@ -1704,14 +1760,14 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
q1[0]= (float)cos(phi);
q1[1]= q1[2]= 0.0;
q1[3]= si;
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
rv3d->view= 0;
}
if(orbitdir == V3D_VIEW_STEPDOWN || orbitdir == V3D_VIEW_STEPUP) {
/* horizontal axis */
VECCOPY(q1+1, rv3d->viewinv[0]);
- Normalize(q1+1);
+ normalize_v3(q1+1);
phi= (float)(M_PI/360.0)*U.pad_rot_angle;
if(orbitdir == V3D_VIEW_STEPDOWN) phi= -phi;
si= (float)sin(phi);
@@ -1719,7 +1775,7 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
q1[1]*= si;
q1[2]*= si;
q1[3]*= si;
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
rv3d->view= 0;
}
ED_region_tag_redraw(ar);
@@ -1829,6 +1885,42 @@ void VIEW3D_OT_view_persportho(wmOperatorType *ot)
/* ********************* set clipping operator ****************** */
+static void calc_clipping_plane(float clip[6][4], BoundBox *clipbb)
+{
+ int val;
+
+ for(val=0; val<4; val++) {
+
+ normal_tri_v3( clip[val],clipbb->vec[val], clipbb->vec[val==3?0:val+1], clipbb->vec[val+4]);
+
+ clip[val][3]=
+ - clip[val][0]*clipbb->vec[val][0]
+ - clip[val][1]*clipbb->vec[val][1]
+ - clip[val][2]*clipbb->vec[val][2];
+ }
+}
+
+static void calc_local_clipping(float clip_local[][4], BoundBox *clipbb, float mat[][4])
+{
+ BoundBox clipbb_local;
+ float imat[4][4];
+ int i;
+
+ invert_m4_m4(imat, mat);
+
+ for(i=0; i<8; i++) {
+ mul_v3_m4v3(clipbb_local.vec[i], imat, clipbb->vec[i]);
+ }
+
+ calc_clipping_plane(clip_local, &clipbb_local);
+}
+
+void ED_view3d_local_clipping(RegionView3D *rv3d, float mat[][4])
+{
+ if(rv3d->rflag & RV3D_CLIPPING)
+ calc_local_clipping(rv3d->clip_local, rv3d->clipbb, mat);
+}
+
static int view3d_clipping_exec(bContext *C, wmOperator *op)
{
RegionView3D *rv3d= CTX_wm_region_view3d(C);
@@ -1879,15 +1971,8 @@ static int view3d_clipping_exec(bContext *C, wmOperator *op)
}
/* then plane equations */
- for(val=0; val<4; val++) {
+ calc_clipping_plane(rv3d->clip, rv3d->clipbb);
- CalcNormFloat(rv3d->clipbb->vec[val], rv3d->clipbb->vec[val==3?0:val+1], rv3d->clipbb->vec[val+4],
- rv3d->clip[val]);
-
- rv3d->clip[val][3]= - rv3d->clip[val][0]*rv3d->clipbb->vec[val][0]
- - rv3d->clip[val][1]*rv3d->clipbb->vec[val][1]
- - rv3d->clip[val][2]*rv3d->clipbb->vec[val][2];
- }
return OPERATOR_FINISHED;
}
@@ -1961,7 +2046,7 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(mval[0]!=IS_CLIPPED) {
window_to_3d_delta(ar, dvec, mval[0]-mx, mval[1]-my);
- VecSubf(fp, fp, dvec);
+ sub_v3_v3v3(fp, fp, dvec);
}
else {
@@ -2018,6 +2103,9 @@ static int manipulator_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return OPERATOR_PASS_THROUGH;
if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return OPERATOR_PASS_THROUGH;
+ /* only no modifier or shift */
+ if(event->keymodifier != 0 && event->keymodifier != KM_SHIFT) return OPERATOR_PASS_THROUGH;
+
/* note; otherwise opengl won't work */
view3d_operator_needs_opengl(C);
@@ -2248,9 +2336,9 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode)
m_dist = rv3d->dist;
upvec[0] = upvec[1] = 0;
upvec[2] = rv3d->dist;
- Mat3CpyMat4(mat, rv3d->viewinv);
- Mat3MulVecfl(mat, upvec);
- VecSubf(rv3d->ofs, rv3d->ofs, upvec);
+ copy_m3_m4(mat, rv3d->viewinv);
+ mul_m3_v3(mat, upvec);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, upvec);
rv3d->dist = 0.0;
}
@@ -2264,16 +2352,16 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode)
// rotate device x and y by view z
- Mat3CpyMat4(mat, rv3d->viewinv);
+ copy_m3_m4(mat, rv3d->viewinv);
mat[2][2] = 0.0f;
- Mat3MulVecfl(mat, rvec);
+ mul_m3_v3(mat, rvec);
// rotate the view
- phi = Normalize(rvec);
+ phi = normalize_v3(rvec);
if(phi != 0) {
- VecRotToQuat(rvec,phi,q1);
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ axis_angle_to_quat(q1,rvec,phi);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
}
@@ -2286,13 +2374,13 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode)
// the next three lines rotate the x and y translation coordinates
// by the current z axis angle
- Mat3CpyMat4(mat, rv3d->viewinv);
+ copy_m3_m4(mat, rv3d->viewinv);
mat[2][2] = 0.0f;
- Mat3MulVecfl(mat, tvec);
+ mul_m3_v3(mat, tvec);
// translate the view
- VecSubf(rv3d->ofs, rv3d->ofs, tvec);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, tvec);
/*----------------------------------------------------
@@ -2351,9 +2439,9 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
rv3d->dist = m_dist;
upvec[0] = upvec[1] = 0;
upvec[2] = rv3d->dist;
- Mat3CpyMat4(mat, rv3d->viewinv);
- Mat3MulVecfl(mat, upvec);
- VecAddf(rv3d->ofs, rv3d->ofs, upvec);
+ copy_m3_m4(mat, rv3d->viewinv);
+ mul_m3_v3(mat, upvec);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, upvec);
}
/*----------------------------------------------------
@@ -2415,8 +2503,8 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
d = 1.0f;
/* if (ob) {
- VecSubf(diff, obofs, rv3d->ofs);
- d = VecLength(diff);
+ sub_v3_v3v3(diff, obofs, rv3d->ofs);
+ d = len_v3(diff);
}
*/
@@ -2431,7 +2519,7 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
dvec[0] = curareaX * rv3d->persinv[0][0] + curareaY * rv3d->persinv[1][0];
dvec[1] = curareaX * rv3d->persinv[0][1] + curareaY * rv3d->persinv[1][1];
dvec[2] = curareaX * rv3d->persinv[0][2] + curareaY * rv3d->persinv[1][2];
- VecAddf(rv3d->ofs, rv3d->ofs, dvec);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, dvec);
/*----------------------------------------------------
* ndof device dolly
@@ -2456,14 +2544,14 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
*/
/* Get the 3x3 matrix and its inverse from the quaternion */
- QuatToMat3(rv3d->viewquat, m);
- Mat3Inv(m_inv,m);
+ quat_to_mat3( m,rv3d->viewquat);
+ invert_m3_m3(m_inv,m);
/* Determine the direction of the x vector (for rotating up and down) */
/* This can likely be compuated directly from the quaternion. */
- Mat3MulVecfl(m_inv,xvec);
- Mat3MulVecfl(m_inv,yvec);
- Mat3MulVecfl(m_inv,zvec);
+ mul_m3_v3(m_inv,xvec);
+ mul_m3_v3(m_inv,yvec);
+ mul_m3_v3(m_inv,zvec);
/* Perform the up/down rotation */
phi = sbadjust * rsens * /*0.5f * */ fval[3]; /* spin vertically half as fast as horizontally */
@@ -2472,13 +2560,13 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
q1[1] = si * xvec[0];
q1[2] = si * xvec[1];
q1[3] = si * xvec[2];
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
if (use_sel) {
- QuatConj(q1); /* conj == inv for unit quat */
- VecSubf(rv3d->ofs, rv3d->ofs, obofs);
- QuatMulVecf(q1, rv3d->ofs);
- VecAddf(rv3d->ofs, rv3d->ofs, obofs);
+ conjugate_qt(q1); /* conj == inv for unit quat */
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs);
+ mul_qt_v3(q1, rv3d->ofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs);
}
/* Perform the orbital rotation */
@@ -2497,13 +2585,13 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
q1[0] = cos(phi);
q1[1] = q1[2] = 0.0;
q1[3] = sin(phi);
- QuatMul(rv3d->viewquat, rv3d->viewquat, q1);
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
if (use_sel) {
- QuatConj(q1);
- VecSubf(rv3d->ofs, rv3d->ofs, obofs);
- QuatMulVecf(q1, rv3d->ofs);
- VecAddf(rv3d->ofs, rv3d->ofs, obofs);
+ conjugate_qt(q1);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs);
+ mul_qt_v3(q1, rv3d->ofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs);
}
/*----------------------------------------------------
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index d37c81904cf..dd5df957a95 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -85,7 +85,7 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -112,7 +112,6 @@
/* XXX port over */
static void countall(void) {}
extern void borderselect();
-static int retopo_mesh_paint_check() {return 0;}
/* view3d handler codes */
#define VIEW3D_HANDLER_BACKGROUND 1
@@ -551,9 +550,10 @@ static uiBlock *view3d_select_object_groupedmenu(bContext *C, ARegion *ar, void
#endif
+// TODO - port to python
+#if 0
void do_view3d_select_faceselmenu(bContext *C, void *arg, int event)
{
-#if 0
/* events >= 6 are registered bpython scripts */
#ifndef DISABLE_PYTHON
if (event >= 6) BPY_menu_do_python(PYMENU_FACESELECT, event - 6);
@@ -573,7 +573,6 @@ void do_view3d_select_faceselmenu(bContext *C, void *arg, int event)
select_linked_tfaces(2);
break;
}
-#endif
}
static uiBlock *view3d_select_faceselmenu(bContext *C, ARegion *ar, void *arg_unused)
@@ -620,14 +619,7 @@ static uiBlock *view3d_select_faceselmenu(bContext *C, ARegion *ar, void *arg_un
uiTextBoundsBlock(block, 50);
return block;
}
-
-/* wrapper for python layouts */
-void uiTemplate_view3d_select_faceselmenu(uiLayout *layout, bContext *C)
-{
- void *arg_unused = NULL;
- ARegion *ar= CTX_wm_region(C);
- view3d_select_faceselmenu(C, ar, arg_unused);
-}
+#endif
#if 0
void do_view3d_transform_moveaxismenu(bContext *C, void *arg, int event)
@@ -635,7 +627,7 @@ void do_view3d_transform_moveaxismenu(bContext *C, void *arg, int event)
#if 0
float mat[3][3];
- Mat3One(mat);
+ unit_m3(mat);
switch(event)
{
@@ -702,7 +694,7 @@ void do_view3d_transform_rotateaxismenu(bContext *C, void *arg, int event)
#if 0
float mat[3][3];
- Mat3One(mat);
+ unit_m3(mat);
switch(event)
{
@@ -769,7 +761,7 @@ void do_view3d_transform_scaleaxismenu(bContext *C, void *arg, int event)
#if 0
float mat[3][3];
- Mat3One(mat);
+ unit_m3(mat);
switch(event)
{
@@ -1649,38 +1641,6 @@ static char *view3d_modeselect_pup(Scene *scene)
return (string);
}
-
-static char *drawtype_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Draw type: %t");
- str += sprintf(str, "%s", "|Bounding Box %x1");
- str += sprintf(str, "%s", "|Wireframe %x2");
- str += sprintf(str, "%s", "|Solid %x3");
- str += sprintf(str, "%s", "|Shaded %x4");
- str += sprintf(str, "%s", "|Textured %x5");
- return string;
-}
-static char *around_pup(const bContext *C)
-{
- Object *obedit = CTX_data_edit_object(C);
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Pivot: %t");
- str += sprintf(str, "%s", "|Bounding Box Center %x0");
- str += sprintf(str, "%s", "|Median Point %x3");
- str += sprintf(str, "%s", "|3D Cursor %x1");
- str += sprintf(str, "%s", "|Individual Centers %x2");
- if ((obedit) && (obedit->type == OB_MESH))
- str += sprintf(str, "%s", "|Active Vert/Edge/Face %x4");
- else
- str += sprintf(str, "%s", "|Active Object %x4");
- return string;
-}
-
static char *ndof_pup(void)
{
static char string[512];
@@ -1693,37 +1653,6 @@ static char *ndof_pup(void)
return string;
}
-
-static char *snapmode_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Snap Element: %t");
- str += sprintf(str, "%s", "|Vertex%x0");
- str += sprintf(str, "%s", "|Edge%x1");
- str += sprintf(str, "%s", "|Face%x2");
- str += sprintf(str, "%s", "|Volume%x3");
- return string;
-}
-
-static char *propfalloff_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Falloff: %t");
- str += sprintf(str, "%s", "|Smooth Falloff%x0");
- str += sprintf(str, "%s", "|Sphere Falloff%x1");
- str += sprintf(str, "%s", "|Root Falloff%x2");
- str += sprintf(str, "%s", "|Sharp Falloff%x3");
- str += sprintf(str, "%s", "|Linear Falloff%x4");
- str += sprintf(str, "%s", "|Random Falloff%x6");
- str += sprintf(str, "%s", "|Constant, No Falloff%x5");
- return string;
-}
-
-
static void do_view3d_header_buttons(bContext *C, void *arg, int event)
{
wmWindow *win= CTX_wm_window(C);
@@ -1909,11 +1838,11 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
BKE_mesh_end_editmesh(obedit->data, em);
}
-static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob, int *xcoord, int yco)
+static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob)
{
Object *obedit = CTX_data_edit_object(C);
RegionView3D *rv3d= wm_region_view3d(C);
- short xmax, xco= *xcoord;
+ short xmax, xco= 0, yco = 0;
/* compensate for local mode when setting up the viewing menu/iconrow values */
if(rv3d->view==7) rv3d->viewbut= 1;
@@ -1956,31 +1885,6 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o
/* ported to python */
}
}
-
- *xcoord= xco;
-}
-
-static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay)
-{
- if (but_lay & ob_lay)
- return ICON_LAYER_ACTIVE;
- else if (but_lay & used_lay)
- return ICON_LAYER_USED;
- else
- return ICON_BLANK1;
-}
-
-static void header_xco_step(ARegion *ar, int *xco, int *yco, int *maxco, int step)
-{
- *xco += step;
- if(*maxco < *xco) *maxco = *xco;
-
- if(ar->winy > *yco + 44) {
- if(*xco > ar->winrct.xmax) {
- *xco= 8;
- *yco+= 22;
- }
- }
}
/* Returns the icon associated with an object mode */
@@ -1999,22 +1903,26 @@ static int object_mode_icon(int mode)
void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
{
- ARegion *ar= CTX_wm_region(C);
+ bScreen *screen= CTX_wm_screen(C);
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
Scene *scene= CTX_data_scene(C);
ToolSettings *ts= CTX_data_tool_settings(C);
+ PointerRNA v3dptr, toolsptr, sceneptr;
Object *ob= OBACT;
Object *obedit = CTX_data_edit_object(C);
uiBlock *block;
uiLayout *row;
- int a, xco=0, maxco=0, yco= 0;
- block= uiLayoutAbsoluteBlock(layout);
+ RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr);
+ RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr);
+ RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr);
+
+ block= uiLayoutGetBlock(layout);
uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL);
if((sa->flag & HEADER_NO_PULLDOWN)==0)
- view3d_header_pulldowns(C, block, ob, &xco, yco);
+ view3d_header_pulldowns(C, block, ob);
/* other buttons: */
uiBlockSetEmboss(block, UI_EMBOSS);
@@ -2035,245 +1943,77 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
if(ob && (ob->mode & OB_MODE_TEXTURE_PAINT)) v3d->flag |= V3D_TEXTUREPAINT;
if(paint_facesel_test(ob)) v3d->flag |= V3D_FACESELECT;
+ uiBlockBeginAlign(block);
uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) ,
- xco,yco,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)");
- header_xco_step(ar, &xco, &yco, &maxco, 126+8);
+ 0,0,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode");
+ uiBlockEndAlign(block);
- /* DRAWTYPE */
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_BBOX, drawtype_pup(), xco,yco,XIC+10,YIC, &(v3d->drawtype), 1.0, 5.0, 0, 0, "Viewport Shading (Hotkeys: Z, Shift Z, Alt Z)");
+ /* Draw type */
+ uiItemR(layout, "", 0, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY);
- header_xco_step(ar, &xco, &yco, &maxco, XIC+18);
+ if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) {
+ /* Manipulators aren't used in weight paint mode */
+
+ PointerRNA meshptr;
- uiBlockBeginAlign(block);
+ RNA_pointer_create(&ob->id, &RNA_Mesh, ob->data, &meshptr);
+ uiItemR(layout, "", 0, &meshptr, "use_paint_mask", UI_ITEM_R_ICON_ONLY);
+ } else {
+ char *str_menu;
- if(retopo_mesh_paint_check()) {
- void *rpd= NULL; // XXX RetopoPaintData *rpd= get_retopo_paint_data();
- if(rpd) {
- ToolSettings *ts= scene->toolsettings;
-
- uiDefButC(block,ROW,B_REDR,"Pen",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_PEN,0,0,"");
- xco+= 40;
- uiDefButC(block,ROW,B_REDR,"Line",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_LINE,0,0,"");
- xco+= 40;
- uiDefButC(block,ROW,B_REDR,"Ellipse",xco,yco,60,20,&ts->retopo_paint_tool,6.0,RETOPO_ELLIPSE,0,0,"");
- xco+= 65;
-
- uiBlockBeginAlign(block);
- if(ts->retopo_paint_tool == RETOPO_PEN) {
- uiDefButC(block,TOG,B_NOP,"Hotspot",xco,yco,60,20, &ts->retopo_hotspot, 0,0,0,0,"Show hotspots at line ends to allow line continuation");
- xco+= 80;
- }
- else if(ts->retopo_paint_tool == RETOPO_LINE) {
- uiDefButC(block,NUM,B_NOP,"LineDiv",xco,yco,80,20,&ts->line_div,1,50,0,0,"Subdivisions per retopo line");
- xco+= 80;
- }
- else if(ts->retopo_paint_tool == RETOPO_ELLIPSE) {
- uiDefButC(block,NUM,B_NOP,"EllDiv",xco,yco,80,20,&ts->ellipse_div,3,50,0,0,"Subdivisions per retopo ellipse");
- xco+= 80;
- }
- header_xco_step(ar, &xco, &yco, &maxco, 5);
-
- uiBlockEndAlign(block);
- }
- } else {
- if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) {
- Mesh *me= ob->data;
- uiDefIconButBitS(block, TOG, ME_EDIT_PAINT_MASK, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &me->editflag, 0, 0, 0, 0, "Painting Mask (FKey)");
- header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
- } else {
- /* Manipulators aren't used in weight paint mode */
- char *str_menu;
- uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(C), xco,yco,XIC+10,YIC, &(v3d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period, Ctrl Period, Alt Period)");
- xco+= XIC+10;
-
- uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN,
- xco,yco,XIC,YIC,
- &v3d->flag, 0, 0, 0, 0, "Move object centers only");
- uiBlockEndAlign(block);
-
- header_xco_step(ar, &xco, &yco, &maxco, XIC+8);
-
- uiBlockBeginAlign(block);
+ row= uiLayoutRow(layout, 1);
+ uiItemR(row, "", 0, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY);
+ uiItemR(row, "", 0, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY);
- /* NDOF */
- if (G.ndofdevice ==0 ) {
- uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), xco,yco,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode");
- xco+= XIC+10;
-
- uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM,
- xco,yco,XIC,YIC,
- &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis");
- uiBlockEndAlign(block);
+ /* NDOF */
+ if (G.ndofdevice ==0 ) {
+ uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), 0,0,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode");
- header_xco_step(ar, &xco, &yco, &maxco, XIC+8);
- }
- uiBlockEndAlign(block);
+ uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM,
+ 0,0,XIC,YIC,
+ &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis");
+ }
- /* Transform widget / manipulators */
- uiBlockBeginAlign(block);
- uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,yco,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)");
- xco+= XIC;
+ /* Transform widget / manipulators */
+ row= uiLayoutRow(layout, 1);
+ uiItemR(row, "", 0, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY);
+ block= uiLayoutGetBlock(row);
- if(v3d->twflag & V3D_USE_MANIPULATOR) {
- uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)");
- xco+= XIC;
- }
-
- if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) {
- v3d->twmode = 0;
- }
+ if(v3d->twflag & V3D_USE_MANIPULATOR) {
+ uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode");
+ uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode");
+ uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode");
+ }
- str_menu = BIF_menustringTransformOrientation(C, "Orientation");
- uiDefButS(block, MENU, B_MAN_MODE, str_menu,xco,yco,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)");
- MEM_freeN(str_menu);
+ if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) {
+ v3d->twmode = 0;
+ }
- header_xco_step(ar, &xco, &yco, &maxco, 78);
- uiBlockEndAlign(block);
- }
+ str_menu = BIF_menustringTransformOrientation(C, "Orientation");
+ uiDefButS(block, MENU, B_MAN_MODE, str_menu,0,0,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation");
+ MEM_freeN(str_menu);
+ }
- /* LAYERS */
- if(obedit==NULL && v3d->localvd==NULL) {
- int ob_lay = ob ? ob->lay : 0;
- uiBlockBeginAlign(block);
- for(a=0; a<5; a++) {
- uiDefIconButBitI(block, TOG, 1<<a, B_LAY+a, view3d_layer_icon(1<<a, ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- for(a=0; a<5; a++) {
- uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- xco+= 5;
- uiBlockBeginAlign(block);
- for(a=5; a<10; a++) {
- uiDefIconButBitI(block, TOG, 1<<a, B_LAY+a, view3d_layer_icon(1<<a, ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- for(a=5; a<10; a++) {
- uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- uiBlockEndAlign(block);
-
- xco+= (a-2)*(XIC/2)+3;
+ if(obedit==NULL && v3d->localvd==NULL) {
+ int ob_lay = ob ? ob->lay : 0;
- /* LOCK */
- uiDefIconButS(block, ICONTOG, B_SCENELOCK, ICON_LOCKVIEW_OFF, xco+=XIC,yco,XIC,YIC, &(v3d->scenelock), 0, 0, 0, 0, "Locks Active Camera and layers to Scene (Ctrl `)");
- header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
+ /* Layers */
+ uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay);
- }
-
- /* proportional falloff */
- if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) {
-
- uiBlockBeginAlign(block);
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(ts->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) ");
- xco+= XIC+10;
-
- if(ts->proportional) {
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SMOOTHCURVE, propfalloff_pup(), xco,yco,XIC+10,YIC, &(ts->prop_mode), 0.0, 0.0, 0, 0, "Proportional Edit Falloff (Hotkey: Shift O) ");
- xco+= XIC+10;
- }
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, 10);
- }
-
- /* Snap */
- if (BIF_snappingSupported(obedit)) {
- uiBlockBeginAlign(block);
-
- if (ts->snap_flag & SCE_SNAP) {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target");
- xco+= XIC;
- if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) {
- uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center");
- xco+= XIC;
- }
- if (ts->snap_mode == SCE_SNAP_MODE_FACE) {
- uiDefIconButBitS(block, TOG, SCE_SNAP_PROJECT, B_REDR, ICON_RETOPO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Project elements instead of snapping them");
- xco+= XIC;
- }
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode");
- xco+= XIC + 10;
- uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->snap_target, 0, 0, 0, 0, "Snap Target Mode");
- xco+= 70;
- } else {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
- xco+= XIC;
- }
-
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, 10);
- }
-
- /* selection modus */
- if(obedit && (obedit->type == OB_MESH)) {
- EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
-
- uiBlockBeginAlign(block);
- uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)");
- xco+= XIC;
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, 10);
- if(v3d->drawtype > OB_WIRE) {
- uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry");
- }
- xco+= XIC;
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, XIC);
+ /* Scene lock */
+ uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY);
+ }
- BKE_mesh_end_editmesh(obedit->data, em);
- }
- else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) {
- uiBlockBeginAlign(block);
- uiDefIconButBitI(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_EDGESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode");
- xco+= XIC;
- uiDefIconButBitI(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode");
- xco+= XIC;
- uiDefIconButBitI(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Tip select mode");
- xco+= XIC;
- uiBlockEndAlign(block);
-
- if(v3d->drawtype > OB_WIRE) {
- uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Limit selection to visible (clipped with depth buffer)");
- xco+= XIC;
- }
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, XIC);
- }
+ /* selection modus */
+ if(obedit && (obedit->type == OB_MESH)) {
+ EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- /* OpenGL Render */
row= uiLayoutRow(layout, 1);
- uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render");
- uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1);
-
-
- if (ob && (ob->mode & OB_MODE_POSE)) {
- PointerRNA *but_ptr;
- uiBut *but;
-
- xco+= XIC*2;
- uiBlockBeginAlign(block);
-
- uiDefIconButO(block, BUT, "POSE_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, NULL);
- uiBlockSetButLock(block, object_data_is_libdata(ob), "Can't edit external libdata");
- xco+= XIC;
-
- uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, NULL);
- xco+= XIC;
- but=uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEFLIPDOWN, xco,yco,XIC,YIC, NULL);
- but_ptr= uiButGetOperatorPtrRNA(but);
- RNA_boolean_set(but_ptr, "flipped", 1);
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, XIC);
+ block= uiLayoutGetBlock(row);
+ uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode");
- }
+ BKE_mesh_end_editmesh(obedit->data, em);
}
}
-
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index 84d1a1275a9..b32a067206e 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -71,6 +71,7 @@ void VIEW3D_OT_rotate(struct wmOperatorType *ot);
void VIEW3D_OT_view_all(struct wmOperatorType *ot);
void VIEW3D_OT_viewnumpad(struct wmOperatorType *ot);
void VIEW3D_OT_view_center(struct wmOperatorType *ot);
+void VIEW3D_OT_view_center_cursor(struct wmOperatorType *ot);
void VIEW3D_OT_view_pan(struct wmOperatorType *ot);
void VIEW3D_OT_view_persportho(struct wmOperatorType *ot);
void VIEW3D_OT_view_orbit(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index adda08202c0..62672dc19bc 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -39,7 +39,7 @@
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BKE_context.h"
@@ -71,6 +71,7 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_view_pan);
WM_operatortype_append(VIEW3D_OT_view_persportho);
WM_operatortype_append(VIEW3D_OT_view_center);
+ WM_operatortype_append(VIEW3D_OT_view_center_cursor);
WM_operatortype_append(VIEW3D_OT_select);
WM_operatortype_append(VIEW3D_OT_select_border);
WM_operatortype_append(VIEW3D_OT_clip_border);
@@ -105,7 +106,7 @@ void view3d_operatortypes(void)
void view3d_keymap(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
- wmKeyMapItem *km;
+ wmKeyMapItem *kmi;
keymap= WM_keymap_find(keyconf, "View3D Generic", SPACE_VIEW3D, 0);
@@ -115,7 +116,11 @@ void view3d_keymap(wmKeyConfig *keyconf)
/* only for region 3D window */
keymap= WM_keymap_find(keyconf, "View3D", SPACE_VIEW3D, 0);
- WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, 0, 0); /* manipulator always on left mouse, not on action mouse*/
+ WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_ANY, 0);
+ /*
+ * Doesn't work with KM_SHIFT, have to use KM_ANY and filter in invoke
+ * */
+ // WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_cursor3d", ACTIONMOUSE, KM_PRESS, 0, 0);
@@ -123,6 +128,7 @@ void view3d_keymap(wmKeyConfig *keyconf)
WM_keymap_verify_item(keymap, "VIEW3D_OT_move", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center", PADPERIOD, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center_cursor", PADPERIOD, KM_PRESS, KM_CTRL, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_fly", FKEY, KM_PRESS, KM_SHIFT, 0);
@@ -156,24 +162,24 @@ void view3d_keymap(wmKeyConfig *keyconf)
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANUP);
/* active aligned, replaces '*' key in 2.4x */
- km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(km->ptr, "type", RV3D_VIEW_FRONT);
- RNA_boolean_set(km->ptr, "align_active", TRUE);
- km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(km->ptr, "type", RV3D_VIEW_RIGHT);
- RNA_boolean_set(km->ptr, "align_active", TRUE);
- km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(km->ptr, "type", RV3D_VIEW_TOP);
- RNA_boolean_set(km->ptr, "align_active", TRUE);
- km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
- RNA_enum_set(km->ptr, "type", RV3D_VIEW_BACK);
- RNA_boolean_set(km->ptr, "align_active", TRUE);
- km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
- RNA_enum_set(km->ptr, "type", RV3D_VIEW_LEFT);
- RNA_boolean_set(km->ptr, "align_active", TRUE);
- km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
- RNA_enum_set(km->ptr, "type", RV3D_VIEW_BOTTOM);
- RNA_boolean_set(km->ptr, "align_active", TRUE);
+ kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT, 0);
+ RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT);
+ RNA_boolean_set(kmi->ptr, "align_active", TRUE);
+ kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT, 0);
+ RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT);
+ RNA_boolean_set(kmi->ptr, "align_active", TRUE);
+ kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT, 0);
+ RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP);
+ RNA_boolean_set(kmi->ptr, "align_active", TRUE);
+ kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+ RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BACK);
+ RNA_boolean_set(kmi->ptr, "align_active", TRUE);
+ kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+ RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_LEFT);
+ RNA_boolean_set(kmi->ptr, "align_active", TRUE);
+ kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+ RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM);
+ RNA_boolean_set(kmi->ptr, "align_active", TRUE);
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN);
@@ -207,20 +213,15 @@ void view3d_keymap(wmKeyConfig *keyconf)
/* drawtype */
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0);
- RNA_string_set(km->ptr, "path", "space_data.viewport_shading");
- RNA_string_set(km->ptr, "value_1", "SOLID");
- RNA_string_set(km->ptr, "value_2", "WIREFRAME");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading");
+ RNA_string_set(kmi->ptr, "value_1", "SOLID");
+ RNA_string_set(kmi->ptr, "value_2", "WIREFRAME");
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0);
- RNA_string_set(km->ptr, "path", "space_data.viewport_shading");
- RNA_string_set(km->ptr, "value_1", "TEXTURED");
- RNA_string_set(km->ptr, "value_2", "SOLID");
-
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "space_data.viewport_shading");
- RNA_string_set(km->ptr, "value_1", "SHADED");
- RNA_string_set(km->ptr, "value_2", "WIREFRAME");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0);
+ RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading");
+ RNA_string_set(kmi->ptr, "value_1", "TEXTURED");
+ RNA_string_set(kmi->ptr, "value_2", "SOLID");
/* selection*/
WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
@@ -229,19 +230,19 @@ void view3d_keymap(wmKeyConfig *keyconf)
RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "enumerate", TRUE);
/* selection key-combinations */
- km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
- RNA_boolean_set(km->ptr, "center", TRUE);
- RNA_boolean_set(km->ptr, "extend", TRUE);
- km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0);
- RNA_boolean_set(km->ptr, "center", TRUE);
- RNA_boolean_set(km->ptr, "enumerate", TRUE);
- km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0);
- RNA_boolean_set(km->ptr, "extend", TRUE);
- RNA_boolean_set(km->ptr, "enumerate", TRUE);
- km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL|KM_ALT, 0);
- RNA_boolean_set(km->ptr, "center", TRUE);
- RNA_boolean_set(km->ptr, "extend", TRUE);
- RNA_boolean_set(km->ptr, "enumerate", TRUE);
+ kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+ RNA_boolean_set(kmi->ptr, "center", TRUE);
+ RNA_boolean_set(kmi->ptr, "extend", TRUE);
+ kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0);
+ RNA_boolean_set(kmi->ptr, "center", TRUE);
+ RNA_boolean_set(kmi->ptr, "enumerate", TRUE);
+ kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+ RNA_boolean_set(kmi->ptr, "extend", TRUE);
+ RNA_boolean_set(kmi->ptr, "enumerate", TRUE);
+ kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL|KM_ALT, 0);
+ RNA_boolean_set(kmi->ptr, "center", TRUE);
+ RNA_boolean_set(kmi->ptr, "extend", TRUE);
+ RNA_boolean_set(kmi->ptr, "enumerate", TRUE);
WM_keymap_add_item(keymap, "VIEW3D_OT_select_border", BKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0);
@@ -258,29 +259,31 @@ void view3d_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "VIEW3D_OT_snap_menu", SKEY, KM_PRESS, KM_SHIFT, 0);
/* context ops */
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0);
- RNA_string_set(km->ptr, "path", "space_data.pivot_point");
- RNA_string_set(km->ptr, "value", "BOUNDING_BOX_CENTER");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
+ RNA_string_set(kmi->ptr, "value", "BOUNDING_BOX_CENTER");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */
- RNA_string_set(km->ptr, "path", "space_data.pivot_point");
- RNA_string_set(km->ptr, "value", "MEDIAN_POINT");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */
+ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
+ RNA_string_set(kmi->ptr, "value", "MEDIAN_POINT");
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */
- RNA_string_set(km->ptr, "path", "space_data.pivot_point_align");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */
+ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point_align");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0);
- RNA_string_set(km->ptr, "path", "space_data.pivot_point");
- RNA_string_set(km->ptr, "value", "CURSOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */
+ RNA_string_set(kmi->ptr, "path", "space_data.manipulator");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(km->ptr, "path", "space_data.pivot_point");
- RNA_string_set(km->ptr, "value", "INDIVIDUAL_CENTERS");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
+ RNA_string_set(kmi->ptr, "value", "CURSOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0);
- RNA_string_set(km->ptr, "path", "space_data.pivot_point");
- RNA_string_set(km->ptr, "value", "ACTIVE_ELEMENT");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
+ RNA_string_set(kmi->ptr, "value", "INDIVIDUAL_CENTERS");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0);
+ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
+ RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT");
transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D);
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 2505110d766..2b45cfef6e1 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -49,7 +49,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -120,7 +120,7 @@ void view3d_get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2
if(mval[0]!=IS_CLIPPED) {
window_to_3d_delta(vc->ar, dvec, mval[0]-mx, mval[1]-my);
- VecSubf(fp, fp, dvec);
+ sub_v3_v3v3(fp, fp, dvec);
}
}
@@ -129,7 +129,7 @@ void view3d_get_transformation(ViewContext *vc, Object *ob, bglMats *mats)
float cpy[4][4];
int i, j;
- Mat4MulMat4(cpy, ob->obmat, vc->rv3d->viewmat);
+ mul_m4_m4m4(cpy, ob->obmat, vc->rv3d->viewmat);
for(i = 0; i < 4; ++i) {
for(j = 0; j < 4; ++j) {
@@ -326,9 +326,9 @@ int lasso_inside_edge(short mcords[][2], short moves, int x0, int y0, int x1, in
/* no points in lasso, so we have to intersect with lasso edge */
- if( IsectLL2Ds(mcords[0], mcords[moves-1], v1, v2) > 0) return 1;
+ if( isect_line_line_v2_short(mcords[0], mcords[moves-1], v1, v2) > 0) return 1;
for(a=0; a<moves-1; a++) {
- if( IsectLL2Ds(mcords[a], mcords[a+1], v1, v2) > 0) return 1;
+ if( isect_line_line_v2_short(mcords[a], mcords[a+1], v1, v2) > 0) return 1;
}
return 0;
@@ -349,10 +349,10 @@ static void do_lasso_select_pose(ViewContext *vc, short mcords[][2], short moves
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
VECCOPY(vec, pchan->pose_head);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
project_short(vc->ar, vec, sco1);
VECCOPY(vec, pchan->pose_tail);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
project_short(vc->ar, vec, sco2);
if(lasso_inside_edge(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1])) {
@@ -363,7 +363,7 @@ static void do_lasso_select_pose(ViewContext *vc, short mcords[][2], short moves
{
bArmature *arm= ob->data;
- if((arm->act_bone->flag & BONE_SELECTED)==0) {
+ if(arm->act_bone && (arm->act_bone->flag & BONE_SELECTED)==0) {
arm->act_bone= NULL;
}
}
@@ -625,10 +625,10 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m
for (ebone= arm->edbo->first; ebone; ebone=ebone->next) {
VECCOPY(vec, ebone->head);
- Mat4MulVecfl(vc->obedit->obmat, vec);
+ mul_m4_v3(vc->obedit->obmat, vec);
project_short(vc->ar, vec, sco1);
VECCOPY(vec, ebone->tail);
- Mat4MulVecfl(vc->obedit->obmat, vec);
+ mul_m4_v3(vc->obedit->obmat, vec);
project_short(vc->ar, vec, sco2);
didpoint= 0;
@@ -648,7 +648,7 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m
else ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
}
}
-
+ ED_armature_sync_selection(arm->edbo);
ED_armature_validate_active(arm);
}
@@ -999,7 +999,7 @@ static short mixed_bones_object_selectbuffer(ViewContext *vc, unsigned int *buff
/* mval is region coords */
-static void mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate)
+static int mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate)
{
ViewContext vc;
ARegion *ar= CTX_wm_region(C);
@@ -1007,6 +1007,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
Scene *scene= CTX_data_scene(C);
Base *base, *startbase=NULL, *basact=NULL, *oldbasact=NULL;
int temp, a, dist=100;
+ int retval = 0;
short hits;
/* setup view context for argument to callbacks */
@@ -1153,6 +1154,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
basact->flag|= SELECT;
basact->object->flag= basact->flag;
+ retval = 1;
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, basact->object);
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, basact->object);
@@ -1172,6 +1174,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
/* so, do we have something selected? */
if(basact) {
+ retval = 1;
if(vc.obedit) {
/* only do select */
@@ -1205,6 +1208,8 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
}
}
+
+ return retval;
}
/* ******************** border and circle ************************************** */
@@ -1227,7 +1232,7 @@ int edge_inside_circle(short centx, short centy, short rad, short x1, short y1,
v2[0]= x2;
v2[1]= y2;
- if( PdistVL2Dfl(v3, v1, v2) < (float)rad ) return 1;
+ if( dist_to_line_segment_v2(v3, v1, v2) < (float)rad ) return 1;
return 0;
}
@@ -1611,31 +1616,37 @@ static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
short extend= RNA_boolean_get(op->ptr, "extend");
short center= RNA_boolean_get(op->ptr, "center");
short enumerate= RNA_boolean_get(op->ptr, "enumerate");
+ int retval = 0;
view3d_operator_needs_opengl(C);
if(obedit) {
if(obedit->type==OB_MESH)
- mouse_mesh(C, event->mval, extend);
+ retval = mouse_mesh(C, event->mval, extend);
else if(obedit->type==OB_ARMATURE)
- mouse_armature(C, event->mval, extend);
+ retval = mouse_armature(C, event->mval, extend);
else if(obedit->type==OB_LATTICE)
- mouse_lattice(C, event->mval, extend);
+ retval = mouse_lattice(C, event->mval, extend);
else if(ELEM(obedit->type, OB_CURVE, OB_SURF))
- mouse_nurb(C, event->mval, extend);
+ retval = mouse_nurb(C, event->mval, extend);
else if(obedit->type==OB_MBALL)
- mouse_mball(C, event->mval, extend);
+ retval = mouse_mball(C, event->mval, extend);
}
else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT)
- PE_mouse_particles(C, event->mval, extend);
+ return PE_mouse_particles(C, event->mval, extend);
else if(obact && paint_facesel_test(obact))
- face_select(C, obact, event->mval, extend);
+ retval = face_select(C, obact, event->mval, extend);
else
- mouse_select(C, event->mval, extend, center, enumerate);
+ retval = mouse_select(C, event->mval, extend, center, enumerate);
- /* allowing tweaks */
- return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED;
+ /* passthrough allows tweaks
+ * FINISHED to signal one operator worked
+ * */
+ if (retval)
+ return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED;
+ else
+ return OPERATOR_PASS_THROUGH; /* nothing selected, just passthrough */
}
void VIEW3D_OT_select(wmOperatorType *ot)
@@ -1717,6 +1728,7 @@ static void mesh_circle_select(ViewContext *vc, int selecting, short *mval, floa
vc->em= ((Mesh *)vc->obedit->data)->edit_mesh;
+ data.vc = vc;
data.select = selecting;
data.mval[0] = mval[0];
data.mval[1] = mval[1];
@@ -1859,12 +1871,12 @@ static void armature_circle_select(ViewContext *vc, int selecting, short *mval,
/* project head location to screenspace */
VECCOPY(vec, ebone->head);
- Mat4MulVecfl(vc->obedit->obmat, vec);
+ mul_m4_v3(vc->obedit->obmat, vec);
project_short(vc->ar, vec, sco1);
/* project tail location to screenspace */
VECCOPY(vec, ebone->tail);
- Mat4MulVecfl(vc->obedit->obmat, vec);
+ mul_m4_v3(vc->obedit->obmat, vec);
project_short(vc->ar, vec, sco2);
/* check if the head and/or tail is in the circle
diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c
index 205d3e6df8c..a23163f4a5c 100644
--- a/source/blender/editors/space_view3d/view3d_snap.c
+++ b/source/blender/editors/space_view3d/view3d_snap.c
@@ -48,7 +48,7 @@
#include "DNA_view3d_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_linklist.h"
@@ -135,8 +135,8 @@ static void special_transvert_update(Scene *scene, Object *obedit)
if (tv) {
float diffvec[3];
- VecSubf(diffvec, tv->loc, tv->oldloc);
- VecAddf(ebo->tail, ebo->tail, diffvec);
+ sub_v3_v3v3(diffvec, tv->loc, tv->oldloc);
+ add_v3_v3v3(ebo->tail, ebo->tail, diffvec);
a++;
if (a<tottrans) tv++;
@@ -454,21 +454,21 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op)
make_trans_verts(obedit, bmat[0], bmat[1], 0);
if(tottrans==0) return OPERATOR_CANCELLED;
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(imat, bmat);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(imat, bmat);
tv= transvmain;
for(a=0; a<tottrans; a++, tv++) {
VECCOPY(vec, tv->loc);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, obedit->obmat[3]);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, obedit->obmat[3]);
vec[0]= v3d->gridview*floor(.5+ vec[0]/gridf);
vec[1]= v3d->gridview*floor(.5+ vec[1]/gridf);
vec[2]= v3d->gridview*floor(.5+ vec[2]/gridf);
- VecSubf(vec, vec, obedit->obmat[3]);
+ sub_v3_v3v3(vec, vec, obedit->obmat[3]);
- Mat3MulVecfl(imat, vec);
+ mul_m3_v3(imat, vec);
VECCOPY(tv->loc, vec);
}
@@ -525,8 +525,8 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op)
if(ob->parent) {
where_is_object(scene, ob);
- Mat3Inv(imat, originmat);
- Mat3MulVecfl(imat, vec);
+ invert_m3_m3(imat, originmat);
+ mul_m3_v3(imat, vec);
ob->loc[0]+= vec[0];
ob->loc[1]+= vec[1];
ob->loc[2]+= vec[2];
@@ -543,7 +543,8 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op)
}
CTX_DATA_END;
}
- ED_anim_dag_flush_update(C);
+
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -586,8 +587,8 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op)
make_trans_verts(obedit, bmat[0], bmat[1], 0);
if(tottrans==0) return OPERATOR_CANCELLED;
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(imat, bmat);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(imat, bmat);
tv= transvmain;
for(a=0; a<tottrans; a++, tv++) {
@@ -595,7 +596,7 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op)
vec[1]= curs[1]-obedit->obmat[3][1];
vec[2]= curs[2]-obedit->obmat[3][2];
- Mat3MulVecfl(imat, vec);
+ mul_m3_v3(imat, vec);
VECCOPY(tv->loc, vec);
}
@@ -612,9 +613,9 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op)
bArmature *arm= ob->data;
float cursp[3];
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
VECCOPY(cursp, curs);
- Mat4MulVecfl(ob->imat, cursp);
+ mul_m4_v3(ob->imat, cursp);
for (pchan = ob->pose->chanbase.first; pchan; pchan=pchan->next) {
if(pchan->bone->flag & BONE_SELECTED) {
@@ -650,8 +651,8 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op)
if(ob->parent) {
where_is_object(scene, ob);
- Mat3Inv(imat, originmat);
- Mat3MulVecfl(imat, vec);
+ invert_m3_m3(imat, originmat);
+ mul_m3_v3(imat, vec);
ob->loc[0]+= vec[0];
ob->loc[1]+= vec[1];
ob->loc[2]+= vec[2];
@@ -667,7 +668,8 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op)
}
CTX_DATA_END;
}
- ED_anim_dag_flush_update(C);
+
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -749,19 +751,19 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op)
make_trans_verts(obedit, bmat[0], bmat[1], 2);
if(tottrans==0) return OPERATOR_CANCELLED;
- Mat3CpyMat4(bmat, obedit->obmat);
+ copy_m3_m4(bmat, obedit->obmat);
tv= transvmain;
for(a=0; a<tottrans; a++, tv++) {
VECCOPY(vec, tv->loc);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, obedit->obmat[3]);
- VecAddf(centroid, centroid, vec);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, obedit->obmat[3]);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
}
if(v3d->around==V3D_CENTROID) {
- VecMulf(centroid, 1.0/(float)tottrans);
+ mul_v3_fl(centroid, 1.0/(float)tottrans);
VECCOPY(curs, centroid);
}
else {
@@ -782,8 +784,8 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op)
if(arm->layer & pchan->bone->layer) {
if(pchan->bone->flag & BONE_SELECTED) {
VECCOPY(vec, pchan->pose_head);
- Mat4MulVecfl(ob->obmat, vec);
- VecAddf(centroid, centroid, vec);
+ mul_m4_v3(ob->obmat, vec);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
count++;
}
@@ -793,7 +795,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op)
else {
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
VECCOPY(vec, ob->obmat[3]);
- VecAddf(centroid, centroid, vec);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
count++;
}
@@ -801,7 +803,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op)
}
if(count) {
if(v3d->around==V3D_CENTROID) {
- VecMulf(centroid, 1.0/(float)count);
+ mul_v3_fl(centroid, 1.0/(float)count);
VECCOPY(curs, centroid);
}
else {
@@ -854,7 +856,7 @@ static int snap_curs_to_active(bContext *C, wmOperator *op)
EM_editselection_center(curs, &ese);
}
- Mat4MulVecfl(obedit->obmat, curs);
+ mul_m4_v3(obedit->obmat, curs);
}
}
else {
@@ -908,20 +910,20 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
make_trans_verts(obedit, bmat[0], bmat[1], 0);
if(tottrans==0) return OPERATOR_CANCELLED;
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(imat, bmat);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(imat, bmat);
tv= transvmain;
for(a=0; a<tottrans; a++, tv++) {
VECCOPY(vec, tv->loc);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, obedit->obmat[3]);
- VecAddf(centroid, centroid, vec);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, obedit->obmat[3]);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
}
if(v3d->around==V3D_CENTROID) {
- VecMulf(centroid, 1.0/(float)tottrans);
+ mul_v3_fl(centroid, 1.0/(float)tottrans);
VECCOPY(snaploc, centroid);
}
else {
@@ -944,7 +946,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
if(pchan->bone->flag & BONE_SELECTED) {
if(pchan->bone->layer & arm->layer) {
VECCOPY(vec, pchan->pose_mat[3]);
- VecAddf(centroid, centroid, vec);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
count++;
}
@@ -954,7 +956,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
else {
/* not armature bones (i.e. objects) */
VECCOPY(vec, ob->obmat[3]);
- VecAddf(centroid, centroid, vec);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
count++;
}
@@ -963,7 +965,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
if(count) {
if(v3d->around==V3D_CENTROID) {
- VecMulf(centroid, 1.0/(float)count);
+ mul_v3_fl(centroid, 1.0/(float)count);
VECCOPY(snaploc, centroid);
}
else {
@@ -982,8 +984,8 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
make_trans_verts(obedit, bmat[0], bmat[1], 0);
if(tottrans==0) return OPERATOR_CANCELLED;
- Mat3CpyMat4(bmat, obedit->obmat);
- Mat3Inv(imat, bmat);
+ copy_m3_m4(bmat, obedit->obmat);
+ invert_m3_m3(imat, bmat);
tv= transvmain;
for(a=0; a<tottrans; a++, tv++) {
@@ -991,7 +993,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
vec[1]= snaploc[1]-obedit->obmat[3][1];
vec[2]= snaploc[2]-obedit->obmat[3][2];
- Mat3MulVecfl(imat, vec);
+ mul_m3_v3(imat, vec);
VECCOPY(tv->loc, vec);
}
@@ -1040,8 +1042,8 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
if(ob->parent) {
where_is_object(scene, ob);
- Mat3Inv(imat, originmat);
- Mat3MulVecfl(imat, vec);
+ invert_m3_m3(imat, originmat);
+ mul_m3_v3(imat, vec);
ob->loc[0]+= vec[0];
ob->loc[1]+= vec[1];
ob->loc[2]+= vec[2];
@@ -1058,7 +1060,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
CTX_DATA_END;
}
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -1093,14 +1095,14 @@ int minmax_verts(Object *obedit, float *min, float *max)
if(tottrans==0) return 0;
- Mat3CpyMat4(bmat, obedit->obmat);
+ copy_m3_m4(bmat, obedit->obmat);
tv= transvmain;
for(a=0; a<tottrans; a++, tv++) {
VECCOPY(vec, tv->loc);
- Mat3MulVecfl(bmat, vec);
- VecAddf(vec, vec, obedit->obmat[3]);
- VecAddf(centroid, centroid, vec);
+ mul_m3_v3(bmat, vec);
+ add_v3_v3v3(vec, vec, obedit->obmat[3]);
+ add_v3_v3v3(centroid, centroid, vec);
DO_MINMAX(vec, min, max);
}
diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c
index e1c6f70bde0..5dbc6cc232c 100644
--- a/source/blender/editors/space_view3d/view3d_toolbar.c
+++ b/source/blender/editors/space_view3d/view3d_toolbar.c
@@ -51,7 +51,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -143,7 +143,7 @@ static void view3d_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOper
RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
if(op->type->ui)
- op->type->ui((bContext*)C, &ptr, pa->layout);
+ op->type->ui((bContext*)C, op, pa->layout);
else
uiDefAutoButsRNA(C, pa->layout, &ptr, 1);
}
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 9fbc916c02d..62374ca3134 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -45,7 +45,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -161,26 +161,26 @@ static void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *di
/* Offset */
if (ofs) {
VECCOPY(ofs, ob->obmat[3]);
- VecMulf(ofs, -1.0f); /*flip the vector*/
+ mul_v3_fl(ofs, -1.0f); /*flip the vector*/
}
/* Quat */
if (quat) {
- Mat4CpyMat4(bmat, ob->obmat);
- Mat4Ortho(bmat);
- Mat4Invert(imat, bmat);
- Mat3CpyMat4(tmat, imat);
- Mat3ToQuat(tmat, quat);
+ copy_m4_m4(bmat, ob->obmat);
+ normalize_m4(bmat);
+ invert_m4_m4(imat, bmat);
+ copy_m3_m4(tmat, imat);
+ mat3_to_quat( quat,tmat);
}
if (dist) {
float vec[3];
- Mat3CpyMat4(tmat, ob->obmat);
+ copy_m3_m4(tmat, ob->obmat);
vec[0]= vec[1] = 0.0;
vec[2]= -(*dist);
- Mat3MulVecfl(tmat, vec);
- VecSubf(ofs, ofs, vec);
+ mul_m3_v3(tmat, vec);
+ sub_v3_v3v3(ofs, ofs, vec);
}
/* Lens */
@@ -190,6 +190,7 @@ static void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *di
/* ****************** smooth view operator ****************** */
+/* This operator is one of the 'timer refresh' ones like animation playback */
struct SmoothViewStore {
float orig_dist, new_dist;
@@ -263,10 +264,10 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo
VECCOPY(vec1, sms.new_quat);
VECCOPY(vec2, sms.orig_quat);
- Normalize(vec1);
- Normalize(vec2);
+ normalize_v3(vec1);
+ normalize_v3(vec2);
/* scale the time allowed by the rotation */
- sms.time_allowed *= NormalizedVecAngle2(vec1, vec2)/(M_PI/2);
+ sms.time_allowed *= angle_normalized_v3v3(vec1, vec2)/(M_PI/2);
}
/* original values */
@@ -361,7 +362,7 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event)
for (i=0; i<3; i++)
rv3d->ofs[i] = sms->new_ofs[i]*step + sms->orig_ofs[i]*step_inv;
- QuatInterpol(rv3d->viewquat, sms->orig_quat, sms->new_quat, step);
+ interp_qt_qtqt(rv3d->viewquat, sms->orig_quat, sms->new_quat, step);
rv3d->dist = sms->new_dist*step + sms->orig_dist*step_inv;
v3d->lens = sms->new_lens*step + sms->orig_lens*step_inv;
@@ -386,6 +387,8 @@ void VIEW3D_OT_smoothview(wmOperatorType *ot)
ot->poll= ED_operator_view3d_active;
}
+/* ****************** change view operators ****************** */
+
static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob)
{
float dvec[3];
@@ -395,10 +398,10 @@ static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob)
dvec[2]= rv3d->dist*rv3d->viewinv[2][2];
VECCOPY(ob->loc, dvec);
- VecSubf(ob->loc, ob->loc, rv3d->ofs);
+ sub_v3_v3v3(ob->loc, ob->loc, rv3d->ofs);
rv3d->viewquat[0]= -rv3d->viewquat[0];
- QuatToEul(rv3d->viewquat, ob->rot);
+ quat_to_eul( ob->rot,rv3d->viewquat);
rv3d->viewquat[0]= -rv3d->viewquat[0];
ob->recalc= OB_RECALC_OB;
@@ -445,6 +448,7 @@ void VIEW3D_OT_setcameratoview(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
static int view3d_setobjectascamera_exec(bContext *C, wmOperator *op)
{
View3D *v3d = CTX_wm_view3d(C);
@@ -479,6 +483,7 @@ void VIEW3D_OT_setobjectascamera(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
/* ********************************** */
/* create intersection coordinates in view Z direction at mouse coordinates */
@@ -493,12 +498,12 @@ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float
vec[2]= -1.0f;
vec[3]= 1.0f;
- Mat4MulVec4fl(rv3d->persinv, vec);
- VecMulf(vec, 1.0f / vec[3]);
+ mul_m4_v4(rv3d->persinv, vec);
+ mul_v3_fl(vec, 1.0f / vec[3]);
VECCOPY(ray_start, rv3d->viewinv[3]);
VECSUB(vec, vec, ray_start);
- Normalize(vec);
+ normalize_v3(vec);
VECADDFAC(ray_start, rv3d->viewinv[3], vec, v3d->near);
VECADDFAC(ray_end, rv3d->viewinv[3], vec, v3d->far);
@@ -509,7 +514,7 @@ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float
vec[2] = 0.0f;
vec[3] = 1.0f;
- Mat4MulVec4fl(rv3d->persinv, vec);
+ mul_m4_v4(rv3d->persinv, vec);
VECADDFAC(ray_start, vec, rv3d->viewinv[2], 1000.0f);
VECADDFAC(ray_end, vec, rv3d->viewinv[2], -1000.0f);
@@ -522,8 +527,8 @@ void viewray(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float
float ray_end[3];
viewline(ar, v3d, mval, ray_start, ray_end);
- VecSubf(ray_normal, ray_end, ray_start);
- Normalize(ray_normal);
+ sub_v3_v3v3(ray_normal, ray_end, ray_start);
+ normalize_v3(ray_normal);
}
@@ -601,8 +606,8 @@ void view3d_get_object_project_mat(RegionView3D *rv3d, Object *ob, float pmat[4]
{
float vmat[4][4];
- Mat4MulMat4(vmat, ob->obmat, rv3d->viewmat);
- Mat4MulMat4(pmat, vmat, rv3d->winmat);
+ mul_m4_m4m4(vmat, ob->obmat, rv3d->viewmat);
+ mul_m4_m4m4(pmat, vmat, rv3d->winmat);
}
/* Uses window coordinates (x,y) and depth component z to find a point in
@@ -627,7 +632,7 @@ void view3d_project_float(ARegion *ar, float *vec, float *adr, float mat[4][4])
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(mat, vec4);
+ mul_m4_v4(mat, vec4);
if( vec4[3]>FLT_EPSILON ) {
adr[0] = (float)(ar->winx/2.0f)+(ar->winx/2.0f)*vec4[0]/vec4[3];
@@ -648,12 +653,12 @@ int boundbox_clip(RegionView3D *rv3d, float obmat[][4], BoundBox *bb)
if(bb==NULL) return 1;
if(bb->flag & OB_BB_DISABLED) return 1;
- Mat4MulMat4(mat, obmat, rv3d->persmat);
+ mul_m4_m4m4(mat, obmat, rv3d->persmat);
for(a=0; a<8; a++) {
VECCOPY(vec, bb->vec[a]);
vec[3]= 1.0;
- Mat4MulVec4fl(mat, vec);
+ mul_m4_v4(mat, vec);
max= vec[3];
min= -vec[3];
@@ -680,13 +685,13 @@ void project_short(ARegion *ar, float *vec, short *adr) /* clips */
adr[0]= IS_CLIPPED;
if(rv3d->rflag & RV3D_CLIPPING) {
- if(view3d_test_clipping(rv3d, vec))
+ if(view3d_test_clipping(rv3d, vec, 0))
return;
}
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
if( vec4[3]>BL_NEAR_CLIP ) { /* 0.001 is the NEAR clipping cutoff for picking */
fx= (ar->winx/2)*(1 + vec4[0]/vec4[3]);
@@ -712,7 +717,7 @@ void project_int(ARegion *ar, float *vec, int *adr)
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
if( vec4[3]>BL_NEAR_CLIP ) { /* 0.001 is the NEAR clipping cutoff for picking */
fx= (ar->winx/2)*(1 + vec4[0]/vec4[3]);
@@ -736,7 +741,7 @@ void project_int_noclip(ARegion *ar, float *vec, int *adr)
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
if( fabs(vec4[3]) > BL_NEAR_CLIP ) {
fx = (ar->winx/2)*(1 + vec4[0]/vec4[3]);
@@ -761,7 +766,7 @@ void project_short_noclip(ARegion *ar, float *vec, short *adr)
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
if( vec4[3]>BL_NEAR_CLIP ) { /* 0.001 is the NEAR clipping cutoff for picking */
fx= (ar->winx/2)*(1 + vec4[0]/vec4[3]);
@@ -787,7 +792,7 @@ void project_float(ARegion *ar, float *vec, float *adr)
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
if( vec4[3]>BL_NEAR_CLIP ) {
adr[0] = (float)(ar->winx/2.0)+(ar->winx/2.0)*vec4[0]/vec4[3];
@@ -803,7 +808,7 @@ void project_float_noclip(ARegion *ar, float *vec, float *adr)
VECCOPY(vec4, vec);
vec4[3]= 1.0;
- Mat4MulVec4fl(rv3d->persmat, vec4);
+ mul_m4_v4(rv3d->persmat, vec4);
if( fabs(vec4[3]) > BL_NEAR_CLIP ) {
adr[0] = (float)(ar->winx/2.0)+(ar->winx/2.0)*vec4[0]/vec4[3];
@@ -1001,12 +1006,12 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short
rv3d->view= 0; /* dont show the grid */
- Mat4CpyMat4(bmat, ob->obmat);
- Mat4Ortho(bmat);
- Mat4Invert(rv3d->viewmat, bmat);
+ copy_m4_m4(bmat, ob->obmat);
+ normalize_m4(bmat);
+ invert_m4_m4(rv3d->viewmat, bmat);
/* view quat calculation, needed for add object */
- Mat3CpyMat4(tmat, rv3d->viewmat);
+ copy_m3_m4(tmat, rv3d->viewmat);
if (smooth) {
float new_quat[4];
if (rv3d->persp==RV3D_CAMOB && v3d->camera) {
@@ -1018,7 +1023,7 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short
VECCOPY(orig_ofs, rv3d->ofs);
/* Switch from camera view */
- Mat3ToQuat(tmat, new_quat);
+ mat3_to_quat( new_quat,tmat);
rv3d->persp=RV3D_PERSP;
rv3d->dist= 0.0;
@@ -1029,11 +1034,11 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short
rv3d->persp=RV3D_CAMOB; /* just to be polite, not needed */
} else {
- Mat3ToQuat(tmat, new_quat);
+ mat3_to_quat( new_quat,tmat);
smooth_view(NULL, NULL, NULL, NULL, new_quat, NULL, NULL); // XXX
}
} else {
- Mat3ToQuat(tmat, rv3d->viewquat);
+ mat3_to_quat( rv3d->viewquat,tmat);
}
}
@@ -1077,7 +1082,7 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d)
obmat_to_viewmat(v3d, rv3d, v3d->camera, 0);
}
else {
- QuatToMat4(rv3d->viewquat, rv3d->viewmat);
+ quat_to_mat4( rv3d->viewmat,rv3d->viewquat);
rv3d->viewmat[3][2]-= rv3d->dist;
}
}
@@ -1086,7 +1091,7 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d)
if(rv3d->viewlock)
view3d_viewlock(rv3d);
- QuatToMat4(rv3d->viewquat, rv3d->viewmat);
+ quat_to_mat4( rv3d->viewmat,rv3d->viewquat);
if(rv3d->persp==RV3D_PERSP) rv3d->viewmat[3][2]-= rv3d->dist;
if(v3d->ob_centre) {
Object *ob= v3d->ob_centre;
@@ -1097,12 +1102,12 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d)
bPoseChannel *pchan= get_pose_channel(ob->pose, v3d->ob_centre_bone);
if(pchan) {
VECCOPY(vec, pchan->pose_mat[3]);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
}
}
- i_translate(-vec[0], -vec[1], -vec[2], rv3d->viewmat);
+ translate_m4( rv3d->viewmat,-vec[0], -vec[1], -vec[2]);
}
- else i_translate(rv3d->ofs[0], rv3d->ofs[1], rv3d->ofs[2], rv3d->viewmat);
+ else translate_m4( rv3d->viewmat,rv3d->ofs[0], rv3d->ofs[1], rv3d->ofs[2]);
}
}
@@ -1136,7 +1141,7 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b
}
setwinmatrixview3d(ar, v3d, &rect);
- Mat4MulMat4(vc->rv3d->persmat, vc->rv3d->viewmat, vc->rv3d->winmat);
+ mul_m4_m4m4(vc->rv3d->persmat, vc->rv3d->viewmat, vc->rv3d->winmat);
if(v3d->drawtype > OB_WIRE) {
v3d->zbuf= TRUE;
@@ -1186,11 +1191,11 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b
for(dob= lb->first; dob; dob= dob->next) {
tbase.object= dob->ob;
- Mat4CpyMat4(dob->ob->obmat, dob->mat);
+ copy_m4_m4(dob->ob->obmat, dob->mat);
draw_object(scene, ar, v3d, &tbase, DRAW_PICKING|DRAW_CONSTCOLOR);
- Mat4CpyMat4(dob->ob->obmat, dob->omat);
+ copy_m4_m4(dob->ob->obmat, dob->omat);
}
free_object_duplilist(lb);
}
@@ -1206,7 +1211,7 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b
G.f &= ~G_PICKSEL;
setwinmatrixview3d(ar, v3d, NULL);
- Mat4MulMat4(vc->rv3d->persmat, vc->rv3d->viewmat, vc->rv3d->winmat);
+ mul_m4_m4m4(vc->rv3d->persmat, vc->rv3d->viewmat, vc->rv3d->winmat);
if(v3d->drawtype > OB_WIRE) {
v3d->zbuf= 0;
@@ -1610,7 +1615,7 @@ static int game_engine_exec(bContext *C, wmOperator *unused)
game_set_commmandline_options(&startscene->gm);
- if(rv3d->persp==RV3D_CAMOB && startscene->gm.framing.type == SCE_GAMEFRAMING_BARS) { /* Letterbox */
+ if(rv3d->persp==RV3D_CAMOB && startscene->gm.framing.type == SCE_GAMEFRAMING_BARS && startscene->gm.stereoflag != STEREO_DOME) { /* Letterbox */
rctf cam_framef;
calc_viewborder(startscene, ar, CTX_wm_view3d(C), &cam_framef);
cam_frame.xmin = cam_framef.xmin + ar->winrct.xmin;
@@ -1851,8 +1856,8 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
/* detect weather to start with Z locking */
upvec[0]=1.0f; upvec[1]=0.0f; upvec[2]=0.0f;
- Mat3CpyMat4(mat, fly->rv3d->viewinv);
- Mat3MulVecfl(mat, upvec);
+ copy_m3_m4(mat, fly->rv3d->viewinv);
+ mul_m3_v3(mat, upvec);
if (fabs(upvec[2]) < 0.1)
fly->zlock = 1;
upvec[0]=0; upvec[1]=0; upvec[2]=0;
@@ -1866,7 +1871,7 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
where_is_object(fly->scene, fly->v3d->camera);
VECCOPY(fly->rv3d->ofs, fly->v3d->camera->obmat[3]);
- VecMulf(fly->rv3d->ofs, -1.0f); /*flip the vector*/
+ mul_v3_fl(fly->rv3d->ofs, -1.0f); /*flip the vector*/
fly->rv3d->dist=0.0;
fly->rv3d->viewbut=0;
@@ -1884,8 +1889,8 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
fly->rv3d->dist= 0.0;
upvec[2]= fly->dist_backup; /*x and y are 0*/
- Mat3MulVecfl(mat, upvec);
- VecSubf(fly->rv3d->ofs, fly->rv3d->ofs, upvec);
+ mul_m3_v3(mat, upvec);
+ sub_v3_v3v3(fly->rv3d->ofs, fly->rv3d->ofs, upvec);
/*Done with correcting for the dist*/
}
@@ -1922,8 +1927,8 @@ static int flyEnd(bContext *C, FlyInfo *fly)
}
else if (fly->persp_backup==RV3D_CAMOB) { /* camera */
float mat3[3][3];
- Mat3CpyMat4(mat3, v3d->camera->obmat);
- Mat3ToCompatibleEul(mat3, v3d->camera->rot, fly->rot_backup);
+ copy_m3_m4(mat3, v3d->camera->obmat);
+ mat3_to_compatible_eul( v3d->camera->rot, fly->rot_backup,mat3);
DAG_id_flush_update(&v3d->camera->id, OB_RECALC_OB);
#if 0 //XXX2.5
@@ -1941,9 +1946,9 @@ static int flyEnd(bContext *C, FlyInfo *fly)
float mat[3][3];
upvec[0]= upvec[1]= 0;
upvec[2]= fly->dist_backup; /*x and y are 0*/
- Mat3CpyMat4(mat, rv3d->viewinv);
- Mat3MulVecfl(mat, upvec);
- VecAddf(rv3d->ofs, rv3d->ofs, upvec);
+ copy_m3_m4(mat, rv3d->viewinv);
+ mul_m3_v3(mat, upvec);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, upvec);
/*Done with correcting for the dist */
}
@@ -1962,7 +1967,7 @@ static int flyEnd(bContext *C, FlyInfo *fly)
void flyEvent(FlyInfo *fly, wmEvent *event)
{
- if (event->type == TIMER) {
+ if (event->type == TIMER && event->customdata == fly->timer) {
fly->redraw = 1;
}
else if (event->type == MOUSEMOVE) {
@@ -2176,7 +2181,7 @@ int flyApply(FlyInfo *fly)
if (fly->use_precision)
fly->speed= fly->speed * (1.0f-time_redraw_clamped);
- Mat3CpyMat4(mat, rv3d->viewinv);
+ copy_m3_m4(mat, rv3d->viewinv);
if (fly->pan_view==TRUE) {
/* pan only */
@@ -2189,8 +2194,8 @@ int flyApply(FlyInfo *fly)
dvec_tmp[1] *= 0.1;
}
- Mat3MulVecfl(mat, dvec_tmp);
- VecMulf(dvec_tmp, time_redraw*200.0 * fly->grid);
+ mul_m3_v3(mat, dvec_tmp);
+ mul_v3_fl(dvec_tmp, time_redraw*200.0 * fly->grid);
} else {
float roll; /* similar to the angle between the camera's up and the Z-up, but its very rough so just roll*/
@@ -2200,9 +2205,9 @@ int flyApply(FlyInfo *fly)
upvec[0]=1;
upvec[1]=0;
upvec[2]=0;
- Mat3MulVecfl(mat, upvec);
- VecRotToQuat( upvec, (float)moffset[1]*-time_redraw*20, tmp_quat); /* Rotate about the relative up vec */
- QuatMul(rv3d->viewquat, rv3d->viewquat, tmp_quat);
+ mul_m3_v3(mat, upvec);
+ axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1]*-time_redraw*20); /* Rotate about the relative up vec */
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
if (fly->xlock) fly->xlock = 2; /*check for rotation*/
if (fly->zlock) fly->zlock = 2;
@@ -2216,7 +2221,7 @@ int flyApply(FlyInfo *fly)
upvec[0]=0;
upvec[1]=1;
upvec[2]=0;
- Mat3MulVecfl(mat, upvec);
+ mul_m3_v3(mat, upvec);
if(upvec[2] < 0.0f)
moffset[0]= -moffset[0];
@@ -2230,11 +2235,11 @@ int flyApply(FlyInfo *fly)
upvec[0]=0;
upvec[1]=1;
upvec[2]=0;
- Mat3MulVecfl(mat, upvec);
+ mul_m3_v3(mat, upvec);
}
- VecRotToQuat( upvec, (float)moffset[0]*time_redraw*20, tmp_quat); /* Rotate about the relative up vec */
- QuatMul(rv3d->viewquat, rv3d->viewquat, tmp_quat);
+ axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0]*time_redraw*20); /* Rotate about the relative up vec */
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
if (fly->xlock) fly->xlock = 2;/*check for rotation*/
if (fly->zlock) fly->zlock = 2;
@@ -2244,7 +2249,7 @@ int flyApply(FlyInfo *fly)
upvec[0]=1;
upvec[1]=0;
upvec[2]=0;
- Mat3MulVecfl(mat, upvec);
+ mul_m3_v3(mat, upvec);
/*make sure we have some z rolling*/
if (fabs(upvec[2]) > 0.00001f) {
@@ -2253,9 +2258,9 @@ int flyApply(FlyInfo *fly)
upvec[1]=0;
upvec[2]=1;
- Mat3MulVecfl(mat, upvec);
- VecRotToQuat( upvec, roll*time_redraw_clamped*fly->zlock_momentum*0.1, tmp_quat); /* Rotate about the relative up vec */
- QuatMul(rv3d->viewquat, rv3d->viewquat, tmp_quat);
+ mul_m3_v3(mat, upvec);
+ axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum*0.1); /* Rotate about the relative up vec */
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
fly->zlock_momentum += 0.05f;
} else {
@@ -2268,7 +2273,7 @@ int flyApply(FlyInfo *fly)
upvec[0]=0;
upvec[1]=0;
upvec[2]=1;
- Mat3MulVecfl(mat, upvec);
+ mul_m3_v3(mat, upvec);
/*make sure we have some z rolling*/
if (fabs(upvec[2]) > 0.00001) {
roll= upvec[2] * -5;
@@ -2277,10 +2282,10 @@ int flyApply(FlyInfo *fly)
upvec[1]= 0.0f;
upvec[2]= 0.0f;
- Mat3MulVecfl(mat, upvec);
+ mul_m3_v3(mat, upvec);
- VecRotToQuat( upvec, roll*time_redraw_clamped*fly->xlock_momentum*0.1f, tmp_quat); /* Rotate about the relative up vec */
- QuatMul(rv3d->viewquat, rv3d->viewquat, tmp_quat);
+ axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->xlock_momentum*0.1f); /* Rotate about the relative up vec */
+ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
fly->xlock_momentum += 0.05f;
} else {
@@ -2297,14 +2302,14 @@ int flyApply(FlyInfo *fly)
/* move along the current axis */
dvec_tmp[fly->axis]= 1.0f;
- Mat3MulVecfl(mat, dvec_tmp);
+ mul_m3_v3(mat, dvec_tmp);
- VecMulf(dvec_tmp, fly->speed * time_redraw * 0.25f);
+ mul_v3_fl(dvec_tmp, fly->speed * time_redraw * 0.25f);
}
}
/* impose a directional lag */
- VecLerpf(dvec, dvec_tmp, fly->dvec_prev, (1.0f/(1.0f+(time_redraw*5.0f))));
+ interp_v3_v3v3(dvec, dvec_tmp, fly->dvec_prev, (1.0f/(1.0f+(time_redraw*5.0f))));
if (rv3d->persp==RV3D_CAMOB) {
if (v3d->camera->protectflag & OB_LOCK_LOCX)
@@ -2315,7 +2320,7 @@ int flyApply(FlyInfo *fly)
dvec[2] = 0.0;
}
- VecAddf(rv3d->ofs, rv3d->ofs, dvec);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, dvec);
#if 0 //XXX2.5
if (fly->zlock && fly->xlock)
headerprint("FlyKeys Speed:(+/- | Wheel), Upright Axis:X on/Z on, Slow:Shift, Direction:WASDRF, Ok:LMB, Pan:MMB, Cancel:RMB");
@@ -2338,7 +2343,7 @@ int flyApply(FlyInfo *fly)
{ //XXX - some reason setcameratoview3d doesnt copy, shouldnt not be needed!
VECCOPY(v3d->camera->loc, rv3d->ofs);
- VecNegf(v3d->camera->loc);
+ negate_v3(v3d->camera->loc);
}
rv3d->persp= RV3D_CAMOB;
@@ -2421,7 +2426,7 @@ static int fly_modal(bContext *C, wmOperator *op, wmEvent *event)
flyEvent(fly, event);
- if(event->type==TIMER)
+ if(event->type==TIMER && event->customdata == fly->timer)
flyApply(fly);
if(fly->redraw) {;
@@ -2466,11 +2471,11 @@ void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, f
else alignaxis[-axisidx-1]= -1.0;
VECCOPY(norm, vec);
- Normalize(norm);
+ normalize_v3(norm);
- angle= (float)acos(Inpf(alignaxis, norm));
- Crossf(axis, alignaxis, norm);
- VecRotToQuat(axis, -angle, new_quat);
+ angle= (float)acos(dot_v3v3(alignaxis, norm));
+ cross_v3_v3v3(axis, alignaxis, norm);
+ axis_angle_to_quat( new_quat,axis, -angle);
rv3d->view= 0;
diff --git a/source/blender/editors/transform/SConscript b/source/blender/editors/transform/SConscript
index b2dee8c3358..78945ff7d3a 100644
--- a/source/blender/editors/transform/SConscript
+++ b/source/blender/editors/transform/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.c')
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' ../../render/extern/include #/intern/guardedalloc'
+incs += ' ../../render/extern/include'
incs += ' ../../gpu ../../makesrna'
env.BlenderLib ( 'bf_editors_transform', sources, Split(incs), [], libtype=['core'], priority=[40] ) \ No newline at end of file
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 7467f7880af..ce7076c691f 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -106,7 +106,7 @@
#include "WM_types.h"
#include "WM_api.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_ghash.h"
@@ -129,17 +129,17 @@ void setTransformViewMatrices(TransInfo *t)
if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW) {
RegionView3D *rv3d = t->ar->regiondata;
- Mat4CpyMat4(t->viewmat, rv3d->viewmat);
- Mat4CpyMat4(t->viewinv, rv3d->viewinv);
- Mat4CpyMat4(t->persmat, rv3d->persmat);
- Mat4CpyMat4(t->persinv, rv3d->persinv);
+ copy_m4_m4(t->viewmat, rv3d->viewmat);
+ copy_m4_m4(t->viewinv, rv3d->viewinv);
+ copy_m4_m4(t->persmat, rv3d->persmat);
+ copy_m4_m4(t->persinv, rv3d->persinv);
t->persp = rv3d->persp;
}
else {
- Mat4One(t->viewmat);
- Mat4One(t->viewinv);
- Mat4One(t->persmat);
- Mat4One(t->persinv);
+ unit_m4(t->viewmat);
+ unit_m4(t->viewinv);
+ unit_m4(t->persmat);
+ unit_m4(t->persinv);
t->persp = RV3D_ORTHO;
}
@@ -507,8 +507,9 @@ static char *transform_to_undostr(TransInfo *t)
#define TFM_MODAL_TRANSLATE 3
#define TFM_MODAL_ROTATE 4
#define TFM_MODAL_RESIZE 5
-#define TFM_MODAL_SNAP_GEARS 6
-#define TFM_MODAL_SNAP_GEARS_OFF 7
+#define TFM_MODAL_SNAP_ON 6
+#define TFM_MODAL_SNAP_OFF 7
+#define TFM_MODAL_SNAP_TOGGLE 8
/* called in transform_ops.c, on each regeneration of keymaps */
void transform_modal_keymap(wmKeyConfig *keyconf)
@@ -519,8 +520,9 @@ void transform_modal_keymap(wmKeyConfig *keyconf)
{TFM_MODAL_TRANSLATE, "TRANSLATE", 0, "Translate", ""},
{TFM_MODAL_ROTATE, "ROTATE", 0, "Rotate", ""},
{TFM_MODAL_RESIZE, "RESIZE", 0, "Resize", ""},
- {TFM_MODAL_SNAP_GEARS, "SNAP_GEARS", 0, "Snap On", ""},
- {TFM_MODAL_SNAP_GEARS_OFF, "SNAP_GEARS_OFF", 0, "Snap Off", ""},
+ {TFM_MODAL_SNAP_ON, "SNAP_ON", 0, "Snap On", ""},
+ {TFM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap Off", ""},
+ {TFM_MODAL_SNAP_TOGGLE, "SNAP_TOGGLE", 0, "Snap Toggle", ""},
{0, NULL, 0, NULL, NULL}};
wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map");
@@ -532,7 +534,7 @@ void transform_modal_keymap(wmKeyConfig *keyconf)
/* items for modal map */
WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CANCEL);
- WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, TFM_MODAL_CONFIRM);
+ WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM);
WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM);
WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM);
@@ -540,8 +542,7 @@ void transform_modal_keymap(wmKeyConfig *keyconf)
WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, TFM_MODAL_ROTATE);
WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, TFM_MODAL_RESIZE);
- WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_GEARS);
- WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, TFM_MODAL_SNAP_GEARS_OFF);
+ WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_CLICK, KM_ANY, 0, TFM_MODAL_SNAP_TOGGLE);
/* assign map to operators */
WM_modalkeymap_assign(keymap, "TFM_OT_transform");
@@ -554,14 +555,16 @@ void transform_modal_keymap(wmKeyConfig *keyconf)
WM_modalkeymap_assign(keymap, "TFM_OT_shrink_fatten");
WM_modalkeymap_assign(keymap, "TFM_OT_tilt");
WM_modalkeymap_assign(keymap, "TFM_OT_trackball");
-
+ WM_modalkeymap_assign(keymap, "TFM_OT_mirror");
+ WM_modalkeymap_assign(keymap, "TFM_OT_edge_slide");
}
-void transformEvent(TransInfo *t, wmEvent *event)
+int transformEvent(TransInfo *t, wmEvent *event)
{
float mati[3][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}};
char cmode = constraintModeToChar(t);
+ int handled = 1;
t->redraw |= handleMouseInput(t, &t->mouse, event);
@@ -572,6 +575,10 @@ void transformEvent(TransInfo *t, wmEvent *event)
t->redraw = 1;
+ if (t->state == TRANS_STARTING) {
+ t->state = TRANS_RUNNING;
+ }
+
applyMouseInput(t, &t->mouse, t->mval, t->values);
}
@@ -584,7 +591,6 @@ void transformEvent(TransInfo *t, wmEvent *event)
case TFM_MODAL_CONFIRM:
t->state = TRANS_CONFIRM;
break;
-
case TFM_MODAL_TRANSLATE:
/* only switch when... */
if( ELEM3(t->mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL) ) {
@@ -624,14 +630,21 @@ void transformEvent(TransInfo *t, wmEvent *event)
}
break;
- case TFM_MODAL_SNAP_GEARS:
- t->modifiers |= MOD_SNAP_GEARS;
+ case TFM_MODAL_SNAP_ON:
+ t->modifiers |= MOD_SNAP;
+ t->redraw = 1;
+ break;
+ case TFM_MODAL_SNAP_OFF:
+ t->modifiers &= ~MOD_SNAP;
t->redraw = 1;
break;
- case TFM_MODAL_SNAP_GEARS_OFF:
- t->modifiers &= ~MOD_SNAP_GEARS;
+ case TFM_MODAL_SNAP_TOGGLE:
+ t->modifiers ^= MOD_SNAP;
t->redraw = 1;
break;
+ default:
+ handled = 0;
+ break;
}
}
/* else do non-mapped events */
@@ -641,12 +654,6 @@ void transformEvent(TransInfo *t, wmEvent *event)
t->state = TRANS_CANCEL;
break;
/* enforce redraw of transform when modifiers are used */
- case LEFTCTRLKEY:
- case RIGHTCTRLKEY:
- t->modifiers |= MOD_SNAP_GEARS;
- t->redraw = 1;
- break;
-
case LEFTSHIFTKEY:
case RIGHTSHIFTKEY:
t->modifiers |= MOD_CONSTRAINT_PLANE;
@@ -661,7 +668,7 @@ void transformEvent(TransInfo *t, wmEvent *event)
getmouseco_sc(mval);
BIF_selectOrientation();
calc_manipulator_stats(curarea);
- Mat3CpyMat4(t->spacemtx, G.vd->twmat);
+ copy_m3_m4(t->spacemtx, G.vd->twmat);
warp_pointer(mval[0], mval[1]);
#endif
}
@@ -895,6 +902,9 @@ void transformEvent(TransInfo *t, wmEvent *event)
// case NDOFMOTION:
// viewmoveNDOF(1);
// break;
+ default:
+ handled = 0;
+ break;
}
// Numerical input events
@@ -932,7 +942,9 @@ void transformEvent(TransInfo *t, wmEvent *event)
case NDOF_REFRESH:
t->redraw = 1;
break;
-
+ default:
+ handled = 0;
+ break;
}
// Snapping events
@@ -940,24 +952,14 @@ void transformEvent(TransInfo *t, wmEvent *event)
//arrows_move_cursor(event->type);
}
- else {
+ else if (event->val==KM_RELEASE) {
switch (event->type){
- case LEFTMOUSE:
- t->state = TRANS_CONFIRM;
- break;
case LEFTSHIFTKEY:
case RIGHTSHIFTKEY:
t->modifiers &= ~MOD_CONSTRAINT_PLANE;
t->redraw = 1;
break;
- case LEFTCTRLKEY:
- case RIGHTCTRLKEY:
- t->modifiers &= ~MOD_SNAP_GEARS;
- /* no redraw on release modifier keys! this makes sure you can assign the 'grid' still
- after releasing modifer key */
- //t->redraw = 1;
- break;
case MIDDLEMOUSE:
if ((t->flag & T_NO_CONSTRAINT)==0) {
t->modifiers &= ~MOD_CONSTRAINT_SELECT;
@@ -971,12 +973,27 @@ void transformEvent(TransInfo *t, wmEvent *event)
//// if (t->options & CTX_TWEAK)
// t->state = TRANS_CONFIRM;
// break;
+ default:
+ handled = 0;
+ break;
+ }
+
+ /* confirm transform if launch key is released after mouse move */
+ /* XXX Keyrepeat bug in Xorg fucks this up, will test when fixed */
+ if (event->type == LEFTMOUSE /*t->launch_event*/ && t->state != TRANS_STARTING)
+ {
+ t->state = TRANS_CONFIRM;
}
}
// Per transform event, if present
if (t->handleEvent)
t->redraw |= t->handleEvent(t, event);
+
+ if (handled || t->redraw)
+ return 0;
+ else
+ return OPERATOR_PASS_THROUGH;
}
int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float *vec)
@@ -1112,11 +1129,11 @@ void drawHelpline(const struct bContext *C, TransInfo *t)
VECCOPY(vecrot, t->center);
if(t->flag & T_EDIT) {
Object *ob= t->obedit;
- if(ob) Mat4MulVecfl(ob->obmat, vecrot);
+ if(ob) mul_m4_v3(ob->obmat, vecrot);
}
else if(t->flag & T_POSE) {
Object *ob=t->poseobj;
- if(ob) Mat4MulVecfl(ob->obmat, vecrot);
+ if(ob) mul_m4_v3(ob->obmat, vecrot);
}
projectFloatView(t, vecrot, cent); // no overflow in extreme cases
@@ -1280,28 +1297,30 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
}
// If modal, save settings back in scene if not set as operator argument
- if (t->flag & T_MODAL)
- {
+ if (t->flag & T_MODAL) {
+
/* save settings if not set in operator */
- if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional"))
- {
+ if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional")) {
ts->proportional = proportional;
}
- if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size"))
- {
+ if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size")) {
ts->proportional_size = t->prop_size;
}
- if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff"))
- {
+ if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) {
ts->prop_mode = t->prop_mode;
}
- if(t->spacetype == SPACE_VIEW3D)
- {
- if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation"))
- {
+ /* do we check for parameter? */
+ if (t->modifiers & MOD_SNAP) {
+ ts->snap_flag |= SCE_SNAP;
+ } else {
+ ts->snap_flag &= ~SCE_SNAP;
+ }
+
+ if(t->spacetype == SPACE_VIEW3D) {
+ if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation")) {
View3D *v3d = t->view;
v3d->twmode = t->current_orientation;
@@ -1348,12 +1367,14 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
/* added initialize, for external calls to set stuff in TransInfo, like undo string */
- t->state = TRANS_RUNNING;
+ t->state = TRANS_STARTING;
t->options = options;
t->mode = mode;
+ t->launch_event = event ? event->type : -1;
+
if (!initTransInfo(C, t, op, event)) // internal data, mouse, vectors
{
return 0;
@@ -1368,12 +1389,12 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
}
else if(t->spacetype == SPACE_IMAGE) {
- Mat3One(t->spacemtx);
+ unit_m3(t->spacemtx);
t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
}
else
- Mat3One(t->spacemtx);
+ unit_m3(t->spacemtx);
createTransData(C, t); // make TransData structs from selection
@@ -1557,7 +1578,7 @@ int transformEnd(bContext *C, TransInfo *t)
{
int exit_code = OPERATOR_RUNNING_MODAL;
- if (t->state != TRANS_RUNNING)
+ if (t->state != TRANS_STARTING && t->state != TRANS_RUNNING)
{
/* handle restoring objects */
if(t->state == TRANS_CANCEL)
@@ -1652,8 +1673,8 @@ static void protectedAxisAngleBits(short protectflag, float axis[3], float *angl
/* axis-angle get limited with euler... */
float eul[3], oldeul[3];
- AxisAngleToEulO(axis, *angle, eul, EULER_ORDER_DEFAULT);
- AxisAngleToEulO(oldAxis, oldAngle, oldeul, EULER_ORDER_DEFAULT);
+ axis_angle_to_eulO( eul, EULER_ORDER_DEFAULT,axis, *angle);
+ axis_angle_to_eulO( oldeul, EULER_ORDER_DEFAULT,oldAxis, oldAngle);
if (protectflag & OB_LOCK_ROTX)
eul[0]= oldeul[0];
@@ -1662,7 +1683,7 @@ static void protectedAxisAngleBits(short protectflag, float axis[3], float *angl
if (protectflag & OB_LOCK_ROTZ)
eul[2]= oldeul[2];
- EulOToAxisAngle(eul, EULER_ORDER_DEFAULT, axis, angle);
+ eulO_to_axis_angle( axis, angle,eul, EULER_ORDER_DEFAULT);
/* when converting to axis-angle, we need a special exception for the case when there is no axis */
if (IS_EQ(axis[0], axis[1]) && IS_EQ(axis[1], axis[2])) {
@@ -1695,8 +1716,8 @@ static void protectedQuaternionBits(short protectflag, float *quat, float *oldqu
float eul[3], oldeul[3], quat1[4];
QUATCOPY(quat1, quat);
- QuatToEul(quat, eul);
- QuatToEul(oldquat, oldeul);
+ quat_to_eul( eul,quat);
+ quat_to_eul( oldeul,oldquat);
if (protectflag & OB_LOCK_ROTX)
eul[0]= oldeul[0];
@@ -1705,11 +1726,11 @@ static void protectedQuaternionBits(short protectflag, float *quat, float *oldqu
if (protectflag & OB_LOCK_ROTZ)
eul[2]= oldeul[2];
- EulToQuat(eul, quat);
+ eul_to_quat( quat,eul);
/* quaternions flip w sign to accumulate rotations correctly */
if ( (quat1[0]<0.0f && quat[0]>0.0f) || (quat1[0]>0.0f && quat[0]<0.0f) ) {
- QuatMulf(quat, -1.0f);
+ mul_qt_fl(quat, -1.0f);
}
}
}
@@ -1728,7 +1749,7 @@ static void constraintTransLim(TransInfo *t, TransData *td)
* - current space should be local
*/
memset(&cob, 0, sizeof(bConstraintOb));
- Mat4One(cob.matrix);
+ unit_m4(cob.matrix);
VECCOPY(cob.matrix[3], td->loc);
/* Evaluate valid constraints */
@@ -1749,8 +1770,8 @@ static void constraintTransLim(TransInfo *t, TransData *td)
/* do space conversions */
if (con->ownspace == CONSTRAINT_SPACE_WORLD) {
/* just multiply by td->mtx (this should be ok) */
- Mat4CpyMat4(tmat, cob.matrix);
- Mat4MulMat34(cob.matrix, td->mtx, tmat);
+ copy_m4_m4(tmat, cob.matrix);
+ mul_m4_m3m4(cob.matrix, td->mtx, tmat);
}
else if (con->ownspace != CONSTRAINT_SPACE_LOCAL) {
/* skip... incompatable spacetype */
@@ -1763,8 +1784,8 @@ static void constraintTransLim(TransInfo *t, TransData *td)
/* convert spaces again */
if (con->ownspace == CONSTRAINT_SPACE_WORLD) {
/* just multiply by td->mtx (this should be ok) */
- Mat4CpyMat4(tmat, cob.matrix);
- Mat4MulMat34(cob.matrix, td->smtx, tmat);
+ copy_m4_m4(tmat, cob.matrix);
+ mul_m4_m3m4(cob.matrix, td->smtx, tmat);
}
}
}
@@ -1789,21 +1810,21 @@ static void constraintRotLim(TransInfo *t, TransData *td)
if (td->rotOrder == ROT_MODE_QUAT) {
/* quats */
if (td->ext)
- QuatToMat4(td->ext->quat, cob.matrix);
+ quat_to_mat4( cob.matrix,td->ext->quat);
else
return;
}
else if (td->rotOrder == ROT_MODE_AXISANGLE) {
/* axis angle */
if (td->ext)
- AxisAngleToMat4(&td->ext->quat[1], td->ext->quat[0], cob.matrix);
+ axis_angle_to_mat4( cob.matrix,&td->ext->quat[1], td->ext->quat[0]);
else
return;
}
else {
/* eulers */
if (td->ext)
- EulOToMat4(td->ext->rot, td->rotOrder, cob.matrix);
+ eulO_to_mat4( cob.matrix,td->ext->rot, td->rotOrder);
else
return;
}
@@ -1826,8 +1847,8 @@ static void constraintRotLim(TransInfo *t, TransData *td)
/* do space conversions */
if (con->ownspace == CONSTRAINT_SPACE_WORLD) {
/* just multiply by td->mtx (this should be ok) */
- Mat4CpyMat4(tmat, cob.matrix);
- Mat4MulMat34(cob.matrix, td->mtx, tmat);
+ copy_m4_m4(tmat, cob.matrix);
+ mul_m4_m3m4(cob.matrix, td->mtx, tmat);
}
else if (con->ownspace != CONSTRAINT_SPACE_LOCAL) {
/* skip... incompatable spacetype */
@@ -1840,8 +1861,8 @@ static void constraintRotLim(TransInfo *t, TransData *td)
/* convert spaces again */
if (con->ownspace == CONSTRAINT_SPACE_WORLD) {
/* just multiply by td->mtx (this should be ok) */
- Mat4CpyMat4(tmat, cob.matrix);
- Mat4MulMat34(cob.matrix, td->smtx, tmat);
+ copy_m4_m4(tmat, cob.matrix);
+ mul_m4_m3m4(cob.matrix, td->smtx, tmat);
}
}
}
@@ -1849,15 +1870,15 @@ static void constraintRotLim(TransInfo *t, TransData *td)
/* copy results from cob->matrix */
if (td->rotOrder == ROT_MODE_QUAT) {
/* quats */
- Mat4ToQuat(cob.matrix, td->ext->quat);
+ mat4_to_quat( td->ext->quat,cob.matrix);
}
else if (td->rotOrder == ROT_MODE_AXISANGLE) {
/* axis angle */
- Mat4ToAxisAngle(cob.matrix, &td->ext->quat[1], &td->ext->quat[0]);
+ mat4_to_axis_angle( &td->ext->quat[1], &td->ext->quat[0],cob.matrix);
}
else {
/* eulers */
- Mat4ToEulO(cob.matrix, td->ext->rot, td->rotOrder);
+ mat4_to_eulO( td->ext->rot, td->rotOrder,cob.matrix);
}
}
}
@@ -1883,7 +1904,7 @@ static void constraintSizeLim(TransInfo *t, TransData *td)
if (td->flag & TD_SINGLESIZE)
return;
- SizeToMat4(td->ext->size, cob.matrix);
+ size_to_mat4( cob.matrix,td->ext->size);
}
/* Evaluate valid constraints */
@@ -1904,8 +1925,8 @@ static void constraintSizeLim(TransInfo *t, TransData *td)
/* do space conversions */
if (con->ownspace == CONSTRAINT_SPACE_WORLD) {
/* just multiply by td->mtx (this should be ok) */
- Mat4CpyMat4(tmat, cob.matrix);
- Mat4MulMat34(cob.matrix, td->mtx, tmat);
+ copy_m4_m4(tmat, cob.matrix);
+ mul_m4_m3m4(cob.matrix, td->mtx, tmat);
}
else if (con->ownspace != CONSTRAINT_SPACE_LOCAL) {
/* skip... incompatable spacetype */
@@ -1918,8 +1939,8 @@ static void constraintSizeLim(TransInfo *t, TransData *td)
/* convert spaces again */
if (con->ownspace == CONSTRAINT_SPACE_WORLD) {
/* just multiply by td->mtx (this should be ok) */
- Mat4CpyMat4(tmat, cob.matrix);
- Mat4MulMat34(cob.matrix, td->smtx, tmat);
+ copy_m4_m4(tmat, cob.matrix);
+ mul_m4_m3m4(cob.matrix, td->smtx, tmat);
}
}
}
@@ -1934,7 +1955,7 @@ static void constraintSizeLim(TransInfo *t, TransData *td)
if (td->flag & TD_SINGLESIZE)
return;
- Mat4ToSize(cob.matrix, td->ext->size);
+ mat4_to_size( td->ext->size,cob.matrix);
}
}
}
@@ -1964,11 +1985,11 @@ void initWarp(TransInfo *t)
for(i = 0; i < t->total; i++) {
float center[3];
VECCOPY(center, t->data[i].center);
- Mat3MulVecfl(t->data[i].mtx, center);
- Mat4MulVecfl(t->viewmat, center);
- VecSubf(center, center, t->viewmat[3]);
+ mul_m3_v3(t->data[i].mtx, center);
+ mul_m4_v3(t->viewmat, center);
+ sub_v3_v3v3(center, center, t->viewmat[3]);
if (i)
- MinMax3(min, max, center);
+ minmax_v3_v3v3(min, max, center);
else {
VECCOPY(max, center);
VECCOPY(min, center);
@@ -2022,12 +2043,12 @@ int Warp(TransInfo *t, short mval[2])
VECCOPY(cursor, curs);
VECCOPY(gcursor, cursor);
if (t->flag & T_EDIT) {
- VecSubf(cursor, cursor, t->obedit->obmat[3]);
- VecSubf(gcursor, gcursor, t->obedit->obmat[3]);
- Mat3MulVecfl(t->data->smtx, gcursor);
+ sub_v3_v3v3(cursor, cursor, t->obedit->obmat[3]);
+ sub_v3_v3v3(gcursor, gcursor, t->obedit->obmat[3]);
+ mul_m3_v3(t->data->smtx, gcursor);
}
- Mat4MulVecfl(t->viewmat, cursor);
- VecSubf(cursor, cursor, t->viewmat[3]);
+ mul_m4_v3(t->viewmat, cursor);
+ sub_v3_v3v3(cursor, cursor, t->viewmat[3]);
/* amount of degrees for warp */
circumfac = 360.0f * t->values[0];
@@ -2065,9 +2086,9 @@ int Warp(TransInfo *t, short mval[2])
/* translate point to center, rotate in such a way that outline==distance */
VECCOPY(vec, td->iloc);
- Mat3MulVecfl(td->mtx, vec);
- Mat4MulVecfl(t->viewmat, vec);
- VecSubf(vec, vec, t->viewmat[3]);
+ mul_m3_v3(td->mtx, vec);
+ mul_m4_v3(t->viewmat, vec);
+ sub_v3_v3v3(vec, vec, t->viewmat[3]);
dist= vec[0]-cursor[0];
@@ -2082,13 +2103,13 @@ int Warp(TransInfo *t, short mval[2])
loc[1]= co*vec[1]+cursor[1];
loc[2]= vec[2];
- Mat4MulVecfl(t->viewinv, loc);
- VecSubf(loc, loc, t->viewinv[3]);
- Mat3MulVecfl(td->smtx, loc);
+ mul_m4_v3(t->viewinv, loc);
+ sub_v3_v3v3(loc, loc, t->viewinv[3]);
+ mul_m3_v3(td->smtx, loc);
- VecSubf(loc, loc, td->iloc);
- VecMulf(loc, td->factor);
- VecAddf(td->loc, td->iloc, loc);
+ sub_v3_v3v3(loc, loc, td->iloc);
+ mul_v3_fl(loc, td->factor);
+ add_v3_v3v3(td->loc, td->iloc, loc);
}
recalcData(t);
@@ -2151,8 +2172,8 @@ int Shear(TransInfo *t, short mval[2])
int i;
char str[50];
- Mat3CpyMat4(persmat, t->viewmat);
- Mat3Inv(persinv, persmat);
+ copy_m3_m4(persmat, t->viewmat);
+ invert_m3_m3(persinv, persmat);
value = 0.05f * t->values[0];
@@ -2173,7 +2194,7 @@ int Shear(TransInfo *t, short mval[2])
sprintf(str, "Shear: %.3f %s", value, t->proptext);
}
- Mat3One(smat);
+ unit_m3(smat);
// Custom data signals shear direction
if (t->customData == 0)
@@ -2181,8 +2202,8 @@ int Shear(TransInfo *t, short mval[2])
else
smat[0][1] = value;
- Mat3MulMat3(tmat, smat, persmat);
- Mat3MulMat3(totmat, persinv, tmat);
+ mul_m3_m3m3(tmat, smat, persmat);
+ mul_m3_m3m3(totmat, persinv, tmat);
for(i = 0 ; i < t->total; i++, td++) {
if (td->flag & TD_NOACTION)
@@ -2193,22 +2214,22 @@ int Shear(TransInfo *t, short mval[2])
if (t->obedit) {
float mat3[3][3];
- Mat3MulMat3(mat3, totmat, td->mtx);
- Mat3MulMat3(tmat, td->smtx, mat3);
+ mul_m3_m3m3(mat3, totmat, td->mtx);
+ mul_m3_m3m3(tmat, td->smtx, mat3);
}
else {
- Mat3CpyMat3(tmat, totmat);
+ copy_m3_m3(tmat, totmat);
}
- VecSubf(vec, td->center, t->center);
+ sub_v3_v3v3(vec, td->center, t->center);
- Mat3MulVecfl(tmat, vec);
+ mul_m3_v3(tmat, vec);
- VecAddf(vec, vec, t->center);
- VecSubf(vec, vec, td->center);
+ add_v3_v3v3(vec, vec, t->center);
+ sub_v3_v3v3(vec, vec, td->center);
- VecMulf(vec, td->factor);
+ mul_v3_fl(vec, td->factor);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
}
recalcData(t);
@@ -2281,12 +2302,12 @@ static void TransMat3ToSize( float mat[][3], float smat[][3], float *size)
{
float vec[3];
- VecCopyf(vec, mat[0]);
- size[0]= Normalize(vec);
- VecCopyf(vec, mat[1]);
- size[1]= Normalize(vec);
- VecCopyf(vec, mat[2]);
- size[2]= Normalize(vec);
+ copy_v3_v3(vec, mat[0]);
+ size[0]= normalize_v3(vec);
+ copy_v3_v3(vec, mat[1]);
+ size[1]= normalize_v3(vec);
+ copy_v3_v3(vec, mat[2]);
+ size[2]= normalize_v3(vec);
/* first tried with dotproduct... but the sign flip is crucial */
if( VECSIGNFLIP(mat[0], smat[0]) ) size[0]= -size[0];
@@ -2300,11 +2321,11 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
float vec[3];
if (t->flag & T_EDIT) {
- Mat3MulMat3(smat, mat, td->mtx);
- Mat3MulMat3(tmat, td->smtx, smat);
+ mul_m3_m3m3(smat, mat, td->mtx);
+ mul_m3_m3m3(tmat, td->smtx, smat);
}
else {
- Mat3CpyMat3(tmat, mat);
+ copy_m3_m3(tmat, mat);
}
if (t->con.applySize) {
@@ -2339,13 +2360,13 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
if (t->flag & (T_OBJECT|T_TEXTURE|T_POSE)) {
float obsizemat[3][3];
// Reorient the size mat to fit the oriented object.
- Mat3MulMat3(obsizemat, tmat, td->axismtx);
- //printmatrix3("obsizemat", obsizemat);
+ mul_m3_m3m3(obsizemat, tmat, td->axismtx);
+ //print_m3("obsizemat", obsizemat);
TransMat3ToSize(obsizemat, td->axismtx, fsize);
- //printvecf("fsize", fsize);
+ //print_v3("fsize", fsize);
}
else {
- Mat3ToSize(tmat, fsize);
+ mat3_to_size( fsize,tmat);
}
protectedSizeBits(td->protectflag, fsize);
@@ -2375,26 +2396,26 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
/* For individual element center, Editmode need to use iloc */
if (t->flag & T_POINTS)
- VecSubf(vec, td->iloc, center);
+ sub_v3_v3v3(vec, td->iloc, center);
else
- VecSubf(vec, td->center, center);
+ sub_v3_v3v3(vec, td->center, center);
- Mat3MulVecfl(tmat, vec);
+ mul_m3_v3(tmat, vec);
- VecAddf(vec, vec, center);
+ add_v3_v3v3(vec, vec, center);
if (t->flag & T_POINTS)
- VecSubf(vec, vec, td->iloc);
+ sub_v3_v3v3(vec, vec, td->iloc);
else
- VecSubf(vec, vec, td->center);
+ sub_v3_v3v3(vec, vec, td->center);
- VecMulf(vec, td->factor);
+ mul_v3_fl(vec, td->factor);
if (t->flag & (T_OBJECT|T_POSE)) {
- Mat3MulVecfl(td->smtx, vec);
+ mul_m3_v3(td->smtx, vec);
}
protectedTransBits(td->protectflag, vec);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
constraintTransLim(t, td);
}
@@ -2435,13 +2456,13 @@ int Resize(TransInfo *t, short mval[2])
VECCOPY(t->values, size);
- SizeToMat3(size, mat);
+ size_to_mat3( mat,size);
if (t->con.applySize) {
t->con.applySize(t, NULL, mat);
}
- Mat3CpyMat3(t->mat, mat); // used in manipulator
+ copy_m3_m3(t->mat, mat); // used in manipulator
headerResize(t, size, str);
@@ -2457,7 +2478,7 @@ int Resize(TransInfo *t, short mval[2])
/* evil hack - redo resize if cliping needed */
if (t->flag & T_CLIP_UV && clipUVTransform(t, size, 1)) {
- SizeToMat3(size, mat);
+ size_to_mat3( mat,size);
if (t->con.applySize)
t->con.applySize(t, NULL, mat);
@@ -2496,7 +2517,7 @@ void initToSphere(TransInfo *t)
// Calculate average radius
for(i = 0 ; i < t->total; i++, td++) {
- t->val += VecLenf(t->center, td->iloc);
+ t->val += len_v3v3(t->center, td->iloc);
}
t->val /= (float)t->total;
@@ -2543,15 +2564,15 @@ int ToSphere(TransInfo *t, short mval[2])
if (td->flag & TD_SKIP)
continue;
- VecSubf(vec, td->iloc, t->center);
+ sub_v3_v3v3(vec, td->iloc, t->center);
- radius = Normalize(vec);
+ radius = normalize_v3(vec);
tratio = ratio * td->factor;
- VecMulf(vec, radius * (1.0f - tratio) + t->val * tratio);
+ mul_v3_fl(vec, radius * (1.0f - tratio) + t->val * tratio);
- VecAddf(td->loc, t->center, vec);
+ add_v3_v3v3(td->loc, t->center, vec);
}
@@ -2604,25 +2625,25 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
}
if (t->flag & T_POINTS) {
- Mat3MulMat3(totmat, mat, td->mtx);
- Mat3MulMat3(smat, td->smtx, totmat);
+ mul_m3_m3m3(totmat, mat, td->mtx);
+ mul_m3_m3m3(smat, td->smtx, totmat);
- VecSubf(vec, td->iloc, center);
- Mat3MulVecfl(smat, vec);
+ sub_v3_v3v3(vec, td->iloc, center);
+ mul_m3_v3(smat, vec);
- VecAddf(td->loc, vec, center);
+ add_v3_v3v3(td->loc, vec, center);
- VecSubf(vec,td->loc,td->iloc);
+ sub_v3_v3v3(vec,td->loc,td->iloc);
protectedTransBits(td->protectflag, vec);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
if(td->flag & TD_USEQUAT) {
- Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
- Mat3ToQuat(fmat, quat); // Actual transform
+ mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
+ mat3_to_quat( quat,fmat); // Actual transform
if(td->ext->quat){
- QuatMul(td->ext->quat, quat, td->ext->iquat);
+ mul_qt_qtqt(td->ext->quat, quat, td->ext->iquat);
/* is there a reason not to have this here? -jahka */
protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
@@ -2645,28 +2666,28 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
float pmtx[3][3], imtx[3][3];
// Extract and invert armature object matrix
- Mat3CpyMat4(pmtx, t->poseobj->obmat);
- Mat3Inv(imtx, pmtx);
+ copy_m3_m4(pmtx, t->poseobj->obmat);
+ invert_m3_m3(imtx, pmtx);
if ((td->flag & TD_NO_LOC) == 0)
{
- VecSubf(vec, td->center, center);
+ sub_v3_v3v3(vec, td->center, center);
- Mat3MulVecfl(pmtx, vec); // To Global space
- Mat3MulVecfl(mat, vec); // Applying rotation
- Mat3MulVecfl(imtx, vec); // To Local space
+ mul_m3_v3(pmtx, vec); // To Global space
+ mul_m3_v3(mat, vec); // Applying rotation
+ mul_m3_v3(imtx, vec); // To Local space
- VecAddf(vec, vec, center);
+ add_v3_v3v3(vec, vec, center);
/* vec now is the location where the object has to be */
- VecSubf(vec, vec, td->center); // Translation needed from the initial location
+ sub_v3_v3v3(vec, vec, td->center); // Translation needed from the initial location
- Mat3MulVecfl(pmtx, vec); // To Global space
- Mat3MulVecfl(td->smtx, vec);// To Pose space
+ mul_m3_v3(pmtx, vec); // To Global space
+ mul_m3_v3(td->smtx, vec);// To Pose space
protectedTransBits(td->protectflag, vec);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
constraintTransLim(t, td);
}
@@ -2675,11 +2696,11 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
/* euler or quaternion/axis-angle? */
if (td->rotOrder == ROT_MODE_QUAT) {
- Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
+ mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
- Mat3ToQuat(fmat, quat); // Actual transform
+ mat3_to_quat( quat,fmat); // Actual transform
- QuatMul(td->ext->quat, quat, td->ext->iquat);
+ mul_qt_qtqt(td->ext->quat, quat, td->ext->iquat);
/* this function works on end result */
protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
@@ -2688,13 +2709,13 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
/* calculate effect based on quats */
float iquat[4], tquat[4];
- AxisAngleToQuat(iquat, td->ext->irotAxis, td->ext->irotAngle);
+ axis_angle_to_quat(iquat, td->ext->irotAxis, td->ext->irotAngle);
- Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
- Mat3ToQuat(fmat, quat); // Actual transform
- QuatMul(tquat, quat, iquat);
+ mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
+ mat3_to_quat( quat,fmat); // Actual transform
+ mul_qt_qtqt(tquat, quat, iquat);
- QuatToAxisAngle(tquat, td->ext->rotAxis, td->ext->rotAngle);
+ quat_to_axis_angle( td->ext->rotAxis, td->ext->rotAngle,tquat);
/* this function works on end result */
protectedAxisAngleBits(td->protectflag, td->ext->rotAxis, td->ext->rotAngle, td->ext->irotAxis, td->ext->irotAngle);
@@ -2702,17 +2723,17 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
else {
float eulmat[3][3];
- Mat3MulMat3(totmat, mat, td->mtx);
- Mat3MulMat3(smat, td->smtx, totmat);
+ mul_m3_m3m3(totmat, mat, td->mtx);
+ mul_m3_m3m3(smat, td->smtx, totmat);
/* calculate the total rotatation in eulers */
VECCOPY(eul, td->ext->irot);
- EulOToMat3(eul, td->rotOrder, eulmat);
+ eulO_to_mat3( eulmat,eul, td->rotOrder);
/* mat = transform, obmat = bone rotation */
- Mat3MulMat3(fmat, smat, eulmat);
+ mul_m3_m3m3(fmat, smat, eulmat);
- Mat3ToCompatibleEulO(fmat, eul, td->ext->rot, td->rotOrder);
+ mat3_to_compatible_eulO( eul, td->ext->rot, td->rotOrder,fmat);
/* and apply (to end result only) */
protectedRotateBits(td->protectflag, eul, td->ext->irot);
@@ -2726,16 +2747,16 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
if ((td->flag & TD_NO_LOC) == 0)
{
/* translation */
- VecSubf(vec, td->center, center);
- Mat3MulVecfl(mat, vec);
- VecAddf(vec, vec, center);
+ sub_v3_v3v3(vec, td->center, center);
+ mul_m3_v3(mat, vec);
+ add_v3_v3v3(vec, vec, center);
/* vec now is the location where the object has to be */
- VecSubf(vec, vec, td->center);
- Mat3MulVecfl(td->smtx, vec);
+ sub_v3_v3v3(vec, vec, td->center);
+ mul_m3_v3(td->smtx, vec);
protectedTransBits(td->protectflag, vec);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
}
@@ -2745,10 +2766,10 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
/* euler or quaternion? */
if ((td->rotOrder == ROT_MODE_QUAT) || (td->flag & TD_USEQUAT)) {
- Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
- Mat3ToQuat(fmat, quat); // Actual transform
+ mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
+ mat3_to_quat( quat,fmat); // Actual transform
- QuatMul(td->ext->quat, quat, td->ext->iquat);
+ mul_qt_qtqt(td->ext->quat, quat, td->ext->iquat);
/* this function works on end result */
protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
}
@@ -2756,13 +2777,13 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
/* calculate effect based on quats */
float iquat[4], tquat[4];
- AxisAngleToQuat(iquat, td->ext->irotAxis, td->ext->irotAngle);
+ axis_angle_to_quat(iquat, td->ext->irotAxis, td->ext->irotAngle);
- Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
- Mat3ToQuat(fmat, quat); // Actual transform
- QuatMul(tquat, quat, iquat);
+ mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
+ mat3_to_quat( quat,fmat); // Actual transform
+ mul_qt_qtqt(tquat, quat, iquat);
- QuatToAxisAngle(quat, td->ext->rotAxis, td->ext->rotAngle);
+ quat_to_axis_angle( td->ext->rotAxis, td->ext->rotAngle,quat);
/* this function works on end result */
protectedAxisAngleBits(td->protectflag, td->ext->rotAxis, td->ext->rotAngle, td->ext->irotAxis, td->ext->irotAngle);
@@ -2770,19 +2791,19 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
else {
float obmat[3][3];
- Mat3MulMat3(totmat, mat, td->mtx);
- Mat3MulMat3(smat, td->smtx, totmat);
+ mul_m3_m3m3(totmat, mat, td->mtx);
+ mul_m3_m3m3(smat, td->smtx, totmat);
/* calculate the total rotatation in eulers */
- VecAddf(eul, td->ext->irot, td->ext->drot); /* we have to correct for delta rot */
- EulOToMat3(eul, td->rotOrder, obmat);
+ add_v3_v3v3(eul, td->ext->irot, td->ext->drot); /* we have to correct for delta rot */
+ eulO_to_mat3( obmat,eul, td->rotOrder);
/* mat = transform, obmat = object rotation */
- Mat3MulMat3(fmat, smat, obmat);
+ mul_m3_m3m3(fmat, smat, obmat);
- Mat3ToCompatibleEulO(fmat, eul, td->ext->rot, td->rotOrder);
+ mat3_to_compatible_eulO( eul, td->ext->rot, td->rotOrder,fmat);
/* correct back for delta rot */
- VecSubf(eul, eul, td->ext->drot);
+ sub_v3_v3v3(eul, eul, td->ext->drot);
/* and apply */
protectedRotateBits(td->protectflag, eul, td->ext->irot);
@@ -2800,7 +2821,7 @@ static void applyRotation(TransInfo *t, float angle, float axis[3])
float mat[3][3];
int i;
- VecRotToMat3(axis, angle, mat);
+ vec_rot_to_mat3( mat,axis, angle);
for(i = 0 ; i < t->total; i++, td++) {
@@ -2812,10 +2833,10 @@ static void applyRotation(TransInfo *t, float angle, float axis[3])
if (t->con.applyRot) {
t->con.applyRot(t, td, axis, NULL);
- VecRotToMat3(axis, angle * td->factor, mat);
+ vec_rot_to_mat3( mat,axis, angle * td->factor);
}
else if (t->flag & T_PROP_EDIT) {
- VecRotToMat3(axis, angle * td->factor, mat);
+ vec_rot_to_mat3( mat,axis, angle * td->factor);
}
ElementRotation(t, td, mat, t->around);
@@ -2832,8 +2853,8 @@ int Rotation(TransInfo *t, short mval[2])
float mat[3][3];
VECCOPY(axis, t->viewinv[2]);
- VecMulf(axis, -1.0f);
- Normalize(axis);
+ mul_v3_fl(axis, -1.0f);
+ normalize_v3(axis);
final = t->values[0];
@@ -2869,11 +2890,11 @@ int Rotation(TransInfo *t, short mval[2])
sprintf(str, "Rot: %.2f%s %s", 180.0*final/M_PI, t->con.text, t->proptext);
}
- VecRotToMat3(axis, final, mat);
+ vec_rot_to_mat3( mat,axis, final);
// TRANSFORM_FIX_ME
// t->values[0] = final; // used in manipulator
-// Mat3CpyMat3(t->mat, mat); // used in manipulator
+// copy_m3_m3(t->mat, mat); // used in manipulator
applyRotation(t, final, axis);
@@ -2914,10 +2935,10 @@ static void applyTrackball(TransInfo *t, float axis1[3], float axis2[3], float a
float mat[3][3], smat[3][3], totmat[3][3];
int i;
- VecRotToMat3(axis1, angles[0], smat);
- VecRotToMat3(axis2, angles[1], totmat);
+ vec_rot_to_mat3( smat,axis1, angles[0]);
+ vec_rot_to_mat3( totmat,axis2, angles[1]);
- Mat3MulMat3(mat, smat, totmat);
+ mul_m3_m3m3(mat, smat, totmat);
for(i = 0 ; i < t->total; i++, td++) {
if (td->flag & TD_NOACTION)
@@ -2927,10 +2948,10 @@ static void applyTrackball(TransInfo *t, float axis1[3], float axis2[3], float a
continue;
if (t->flag & T_PROP_EDIT) {
- VecRotToMat3(axis1, td->factor * angles[0], smat);
- VecRotToMat3(axis2, td->factor * angles[1], totmat);
+ vec_rot_to_mat3( smat,axis1, td->factor * angles[0]);
+ vec_rot_to_mat3( totmat,axis2, td->factor * angles[1]);
- Mat3MulMat3(mat, smat, totmat);
+ mul_m3_m3m3(mat, smat, totmat);
}
ElementRotation(t, td, mat, t->around);
@@ -2946,8 +2967,8 @@ int Trackball(TransInfo *t, short mval[2])
VECCOPY(axis1, t->persinv[0]);
VECCOPY(axis2, t->persinv[1]);
- Normalize(axis1);
- Normalize(axis2);
+ normalize_v3(axis1);
+ normalize_v3(axis2);
phi[0] = t->values[0];
phi[1] = t->values[1];
@@ -2972,13 +2993,13 @@ int Trackball(TransInfo *t, short mval[2])
sprintf(str, "Trackball: %.2f %.2f %s", 180.0*phi[0]/M_PI, 180.0*phi[1]/M_PI, t->proptext);
}
- VecRotToMat3(axis1, phi[0], smat);
- VecRotToMat3(axis2, phi[1], totmat);
+ vec_rot_to_mat3( smat,axis1, phi[0]);
+ vec_rot_to_mat3( totmat,axis2, phi[1]);
- Mat3MulMat3(mat, smat, totmat);
+ mul_m3_m3m3(mat, smat, totmat);
// TRANSFORM_FIX_ME
- //Mat3CpyMat3(t->mat, mat); // used in manipulator
+ //copy_m3_m3(t->mat, mat); // used in manipulator
applyTrackball(t, axis1, axis2, phi);
@@ -3030,7 +3051,7 @@ static void headerTranslation(TransInfo *t, float vec[3], char *str) {
if (hasNumInput(&t->num)) {
outputNumInput(&(t->num), tvec);
- dist = VecLength(t->num.val);
+ dist = len_v3(t->num.val);
}
else {
float dvec[3];
@@ -3038,7 +3059,7 @@ static void headerTranslation(TransInfo *t, float vec[3], char *str) {
VECCOPY(dvec, vec);
applyAspectRatio(t, dvec);
- dist = VecLength(vec);
+ dist = len_v3(vec);
if(t->scene->unit.system) {
int i, do_split= t->scene->unit.flag & USER_UNIT_OPT_SPLIT ? 1:0;
@@ -3113,12 +3134,12 @@ static void applyTranslation(TransInfo *t, float vec[3]) {
float mat[3][3];
float angle;
- Crossf(axis, original_normal, t->tsnap.snapNormal);
- angle = saacos(Inpf(original_normal, t->tsnap.snapNormal));
+ cross_v3_v3v3(axis, original_normal, t->tsnap.snapNormal);
+ angle = saacos(dot_v3v3(original_normal, t->tsnap.snapNormal));
- AxisAngleToQuat(quat, axis, angle);
+ axis_angle_to_quat(quat, axis, angle);
- QuatToMat3(quat, mat);
+ quat_to_mat3( mat,quat);
ElementRotation(t, td, mat, V3D_LOCAL);
}
@@ -3126,7 +3147,7 @@ static void applyTranslation(TransInfo *t, float vec[3]) {
{
float mat[3][3];
- Mat3One(mat);
+ unit_m3(mat);
ElementRotation(t, td, mat, V3D_LOCAL);
}
@@ -3140,12 +3161,12 @@ static void applyTranslation(TransInfo *t, float vec[3]) {
VECCOPY(tvec, vec);
}
- Mat3MulVecfl(td->smtx, tvec);
- VecMulf(tvec, td->factor);
+ mul_m3_v3(td->smtx, tvec);
+ mul_v3_fl(tvec, td->factor);
protectedTransBits(td->protectflag, tvec);
- VecAddf(td->loc, td->iloc, tvec);
+ add_v3_v3v3(td->loc, td->iloc, tvec);
constraintTransLim(t, td);
}
@@ -3252,10 +3273,10 @@ int ShrinkFatten(TransInfo *t, short mval[2])
continue;
VECCOPY(vec, td->axismtx[2]);
- VecMulf(vec, distance);
- VecMulf(vec, td->factor);
+ mul_v3_fl(vec, distance);
+ mul_v3_fl(vec, td->factor);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
}
recalcData(t);
@@ -3462,23 +3483,23 @@ int PushPull(TransInfo *t, short mval[2])
if (td->flag & TD_SKIP)
continue;
- VecSubf(vec, t->center, td->center);
+ sub_v3_v3v3(vec, t->center, td->center);
if (t->con.applyRot && t->con.mode & CON_APPLY) {
t->con.applyRot(t, td, axis, NULL);
if (isLockConstraint(t)) {
float dvec[3];
- Projf(dvec, vec, axis);
- VecSubf(vec, vec, dvec);
+ project_v3_v3v3(dvec, vec, axis);
+ sub_v3_v3v3(vec, vec, dvec);
}
else {
- Projf(vec, vec, axis);
+ project_v3_v3v3(vec, vec, axis);
}
}
- Normalize(vec);
- VecMulf(vec, distance);
- VecMulf(vec, td->factor);
+ normalize_v3(vec);
+ mul_v3_fl(vec, distance);
+ mul_v3_fl(vec, td->factor);
- VecAddf(td->loc, td->iloc, vec);
+ add_v3_v3v3(td->loc, td->iloc, vec);
}
recalcData(t);
@@ -3791,8 +3812,8 @@ static void ElementBoneSize(TransInfo *t, TransData *td, float mat[3][3])
float tmat[3][3], smat[3][3], oldy;
float sizemat[3][3];
- Mat3MulMat3(smat, mat, td->mtx);
- Mat3MulMat3(tmat, td->smtx, smat);
+ mul_m3_m3m3(smat, mat, td->mtx);
+ mul_m3_m3m3(tmat, td->smtx, smat);
if (t->con.applySize) {
t->con.applySize(t, td, tmat);
@@ -3800,9 +3821,9 @@ static void ElementBoneSize(TransInfo *t, TransData *td, float mat[3][3])
/* we've tucked the scale in loc */
oldy= td->iloc[1];
- SizeToMat3(td->iloc, sizemat);
- Mat3MulMat3(tmat, tmat, sizemat);
- Mat3ToSize(tmat, td->loc);
+ size_to_mat3( sizemat,td->iloc);
+ mul_m3_m3m3(tmat, tmat, sizemat);
+ mat3_to_size( td->loc,tmat);
td->loc[1]= oldy;
}
@@ -3834,13 +3855,13 @@ int BoneSize(TransInfo *t, short mval[2])
constraintNumInput(t, size);
}
- SizeToMat3(size, mat);
+ size_to_mat3( mat,size);
if (t->con.applySize) {
t->con.applySize(t, NULL, mat);
}
- Mat3CpyMat3(t->mat, mat); // used in manipulator
+ copy_m3_m3(t->mat, mat); // used in manipulator
headerBoneSize(t, size, str);
@@ -3955,7 +3976,7 @@ static int createSlideVerts(TransInfo *t)
if (!v3d) {
/*ok, let's try to survive this*/
- Mat4One(projectMat);
+ unit_m4(projectMat);
} else {
view3d_get_object_project_mat(v3d, t->obedit, projectMat);
}
@@ -4248,12 +4269,12 @@ static int createSlideVerts(TransInfo *t)
}
if (ev == tempsv->up->v1) {
- VecSubf(vec, co, co2);
+ sub_v3_v3v3(vec, co, co2);
} else {
- VecSubf(vec, co2, co);
+ sub_v3_v3v3(vec, co2, co);
}
- VecAddf(start, start, vec);
+ add_v3_v3v3(start, start, vec);
if (v3d) {
view3d_project_float(t->ar, tempsv->down->v1->co, co, projectMat);
@@ -4261,12 +4282,12 @@ static int createSlideVerts(TransInfo *t)
}
if (ev == tempsv->down->v1) {
- VecSubf(vec, co2, co);
+ sub_v3_v3v3(vec, co2, co);
} else {
- VecSubf(vec, co, co2);
+ sub_v3_v3v3(vec, co, co2);
}
- VecAddf(end, end, vec);
+ add_v3_v3v3(end, end, vec);
totvec += 1.0f;
nearest = (EditVert*)look->link;
@@ -4278,12 +4299,12 @@ static int createSlideVerts(TransInfo *t)
look = look->next;
}
- VecAddf(start, start, end);
- VecMulf(start, 0.5*(1.0/totvec));
+ add_v3_v3v3(start, start, end);
+ mul_v3_fl(start, 0.5*(1.0/totvec));
VECCOPY(vec, start);
start[0] = t->mval[0];
start[1] = t->mval[1];
- VecAddf(end, start, vec);
+ add_v3_v3v3(end, start, vec);
sld->start[0] = (short) start[0];
sld->start[1] = (short) start[1];
@@ -4444,8 +4465,9 @@ void initEdgeSlide(TransInfo *t)
t->customFree = freeSlideVerts;
- initMouseInputMode(t, &t->mouse, INPUT_CUSTOM_RATIO);
+ /* set custom point first if you want value to be initialized by init */
setCustomPoints(t, &t->mouse, sld->end, sld->start);
+ initMouseInputMode(t, &t->mouse, INPUT_CUSTOM_RATIO);
t->idx_max = 0;
t->num.idx_max = 0;
@@ -4484,7 +4506,7 @@ int doEdgeSlide(TransInfo *t, float perc)
upVert = editedge_getOtherVert(tempsv->up, centerVert);
downVert = editedge_getOtherVert(tempsv->down, centerVert);
- len = MIN2(perc, VecLenf(upVert->co,downVert->co));
+ len = MIN2(perc, len_v3v3(upVert->co,downVert->co));
len = MAX2(len, 0);
//Adjust Edgeloop
@@ -4496,13 +4518,13 @@ int doEdgeSlide(TransInfo *t, float perc)
tempsv = BLI_ghash_lookup(vertgh,ev);
tempev = editedge_getOtherVert((perc>=0)?tempsv->up:tempsv->down, ev);
- VecLerpf(ev->co, tempsv->origvert.co, tempev->co, fabs(perc));
+ interp_v3_v3v3(ev->co, tempsv->origvert.co, tempev->co, fabs(perc));
if (uvlay_tot) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
- Vec2Lerpf(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc));
+ interp_v2_v2v2(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc));
fuv_link = suv->fuv_list;
while (fuv_link) {
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
@@ -4522,17 +4544,17 @@ int doEdgeSlide(TransInfo *t, float perc)
float newlen;
ev = look->link;
tempsv = BLI_ghash_lookup(vertgh,ev);
- newlen = (len / VecLenf(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co));
+ newlen = (len / len_v3v3(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co));
if(newlen > 1.0) {newlen = 1.0;}
if(newlen < 0.0) {newlen = 0.0;}
if(flip == 0) {
- VecLerpf(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen));
+ interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen));
if (uvlay_tot) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
/* dont do anything if no UVs */
for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
- Vec2Lerpf(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen));
+ interp_v2_v2v2(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen));
fuv_link = suv->fuv_list;
while (fuv_link) {
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
@@ -4542,14 +4564,14 @@ int doEdgeSlide(TransInfo *t, float perc)
}
}
} else{
- VecLerpf(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen));
+ interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen));
if (uvlay_tot) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
/* dont do anything if no UVs */
for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
- Vec2Lerpf(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen));
+ interp_v2_v2v2(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen));
fuv_link = suv->fuv_list;
while (fuv_link) {
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
@@ -4775,7 +4797,7 @@ int Mirror(TransInfo *t, short mval[2])
if (t->con.mode & CON_APPLY) {
size[0] = size[1] = size[2] = -1;
- SizeToMat3(size, mat);
+ size_to_mat3( mat,size);
if (t->con.applySize) {
t->con.applySize(t, NULL, mat);
@@ -4801,7 +4823,7 @@ int Mirror(TransInfo *t, short mval[2])
{
size[0] = size[1] = size[2] = 1;
- SizeToMat3(size, mat);
+ size_to_mat3( mat,size);
for(i = 0, td=t->data; i < t->total; i++, td++) {
if (td->flag & TD_NOACTION)
@@ -4864,9 +4886,9 @@ int Align(TransInfo *t, short mval[2])
}
}
- Mat3Inv(invmat, td->axismtx);
+ invert_m3_m3(invmat, td->axismtx);
- Mat3MulMat3(mat, t->spacemtx, invmat);
+ mul_m3_m3m3(mat, t->spacemtx, invmat);
ElementRotation(t, td, mat, t->around);
}
@@ -5082,7 +5104,7 @@ static void applyTimeTranslate(TransInfo *t, float sval)
AnimData *adt= (t->spacetype != SPACE_NLA) ? td->extra : NULL;
/* check if any need to apply nla-mapping */
- if (adt) {
+ if (adt && t->spacetype != SPACE_SEQ) {
deltax = t->values[0];
if (autosnap == SACTSNAP_STEP) {
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index bba3ae44ebc..4b7d24dc1fa 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -83,11 +83,13 @@ typedef struct NumInput {
*/
typedef struct TransSnap {
+ short mode;
short modePoint;
short modeTarget;
- short mode;
+ short modeSelect;
short align;
short project;
+ short peel;
short status;
float snapPoint[3]; /* snapping from this point */
float snapTarget[3]; /* to this point */
@@ -291,6 +293,7 @@ typedef struct TransInfo {
void (*customFree)(struct TransInfo *); /* if a special free function is needed */
/*************** NEW STUFF *********************/
+ short launch_event; /* event type used to launch transform */
short current_orientation;
@@ -326,9 +329,10 @@ typedef struct TransInfo {
#define NDOF_INIT 1
/* transinfo->state */
-#define TRANS_RUNNING 0
-#define TRANS_CONFIRM 1
-#define TRANS_CANCEL 2
+#define TRANS_STARTING 0
+#define TRANS_RUNNING 1
+#define TRANS_CONFIRM 2
+#define TRANS_CANCEL 3
/* transinfo->flag */
#define T_OBJECT (1 << 0)
@@ -369,7 +373,7 @@ typedef struct TransInfo {
/* TransInfo->modifiers */
#define MOD_CONSTRAINT_SELECT 0x01
#define MOD_PRECISION 0x02
-#define MOD_SNAP_GEARS 0x04
+#define MOD_SNAP 0x04
#define MOD_CONSTRAINT_PLANE 0x08
@@ -410,14 +414,9 @@ typedef struct TransInfo {
#define TD_MIRROR_EDGE (1 << 16) /* For editmode mirror, clamp to x = 0 */
/* transsnap->status */
-#define SNAP_ON 1
-#define SNAP_FORCED 2
-#define TARGET_INIT 4
-#define POINT_INIT 8
-
-/* transsnap->modePoint */
-#define SNAP_GRID 0
-#define SNAP_GEO 1
+#define SNAP_FORCED 1
+#define TARGET_INIT 2
+#define POINT_INIT 4
/* transsnap->modeTarget */
#define SNAP_CLOSEST 0
@@ -430,7 +429,7 @@ void TFM_OT_transform(struct wmOperatorType *ot);
int initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event, int mode);
void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op);
-void transformEvent(TransInfo *t, struct wmEvent *event);
+int transformEvent(TransInfo *t, struct wmEvent *event);
void transformApply(struct bContext *C, TransInfo *t);
int transformEnd(struct bContext *C, TransInfo *t);
@@ -535,7 +534,7 @@ void flushTransNodes(TransInfo *t);
void flushTransSeq(TransInfo *t);
/*********************** exported from transform_manipulator.c ********** */
-void gimbal_axis(struct Object *ob, float gmat[][3]);
+int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */
int calc_manipulator_stats(const struct bContext *C);
float get_drawsize(struct ARegion *ar, float *co);
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 7a6244b72b8..f59803924d5 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -73,7 +73,7 @@
#include "ED_image.h"
#include "ED_view3d.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
//#include "blendef.h"
//
@@ -157,7 +157,7 @@ void constraintNumInput(TransInfo *t, float vec[3])
static void postConstraintChecks(TransInfo *t, float vec[3], float pvec[3]) {
int i = 0;
- Mat3MulVecfl(t->con.imtx, vec);
+ mul_m3_v3(t->con.imtx, vec);
snapGrid(t, vec);
@@ -194,7 +194,7 @@ static void postConstraintChecks(TransInfo *t, float vec[3], float pvec[3]) {
pvec[i++] = vec[2];
}
- Mat3MulVecfl(t->con.mtx, vec);
+ mul_m3_v3(t->con.mtx, vec);
}
static void axisProjection(TransInfo *t, float axis[3], float in[3], float out[3]) {
@@ -206,16 +206,16 @@ static void axisProjection(TransInfo *t, float axis[3], float in[3], float out[3
/* For when view is parallel to constraint... will cause NaNs otherwise
So we take vertical motion in 3D space and apply it to the
constraint axis. Nice for camera grab + MMB */
- if(1.0f - fabs(Inpf(axis, t->viewinv[2])) < 0.000001f) {
- Projf(vec, in, t->viewinv[1]);
- factor = Inpf(t->viewinv[1], vec) * 2.0f;
+ if(1.0f - fabs(dot_v3v3(axis, t->viewinv[2])) < 0.000001f) {
+ project_v3_v3v3(vec, in, t->viewinv[1]);
+ factor = dot_v3v3(t->viewinv[1], vec) * 2.0f;
/* since camera distance is quite relative, use quadratic relationship. holding shift can compensate */
if(factor<0.0f) factor*= -factor;
else factor*= factor;
VECCOPY(out, axis);
- Normalize(out);
- VecMulf(out, -factor); /* -factor makes move down going backwards */
+ normalize_v3(out);
+ mul_v3_fl(out, -factor); /* -factor makes move down going backwards */
}
else {
float v[3], i1[3], i2[3];
@@ -224,32 +224,32 @@ static void axisProjection(TransInfo *t, float axis[3], float in[3], float out[3
float plane[3];
getViewVector(t, t->con.center, norm_center);
- Crossf(plane, norm_center, axis);
+ cross_v3_v3v3(plane, norm_center, axis);
- Projf(vec, in, plane);
- VecSubf(vec, in, vec);
+ project_v3_v3v3(vec, in, plane);
+ sub_v3_v3v3(vec, in, vec);
- VecAddf(v, vec, t->con.center);
+ add_v3_v3v3(v, vec, t->con.center);
getViewVector(t, v, norm);
/* give arbitrary large value if projection is impossible */
- factor = Inpf(axis, norm);
+ factor = dot_v3v3(axis, norm);
if (1 - fabs(factor) < 0.0002f) {
VECCOPY(out, axis);
if (factor > 0) {
- VecMulf(out, 1000000000);
+ mul_v3_fl(out, 1000000000);
} else {
- VecMulf(out, -1000000000);
+ mul_v3_fl(out, -1000000000);
}
} else {
- VecAddf(v2, t->con.center, axis);
- VecAddf(v4, v, norm);
+ add_v3_v3v3(v2, t->con.center, axis);
+ add_v3_v3v3(v4, v, norm);
- LineIntersectLine(t->con.center, v2, v, v4, i1, i2);
+ isect_line_line_v3(t->con.center, v2, v, v4, i1, i2);
- VecSubf(v, i2, v);
+ sub_v3_v3v3(v, i2, v);
- VecSubf(out, i1, t->con.center);
+ sub_v3_v3v3(out, i1, t->con.center);
}
}
}
@@ -257,21 +257,21 @@ static void axisProjection(TransInfo *t, float axis[3], float in[3], float out[3
static void planeProjection(TransInfo *t, float in[3], float out[3]) {
float vec[3], factor, norm[3];
- VecAddf(vec, in, t->con.center);
+ add_v3_v3v3(vec, in, t->con.center);
getViewVector(t, vec, norm);
- VecSubf(vec, out, in);
+ sub_v3_v3v3(vec, out, in);
- factor = Inpf(vec, norm);
+ factor = dot_v3v3(vec, norm);
if (fabs(factor) <= 0.001) {
return; /* prevent divide by zero */
}
- factor = Inpf(vec, vec) / factor;
+ factor = dot_v3v3(vec, vec) / factor;
VECCOPY(vec, norm);
- VecMulf(vec, factor);
+ mul_v3_fl(vec, factor);
- VecAddf(out, in, vec);
+ add_v3_v3v3(out, in, vec);
}
/*
@@ -287,10 +287,10 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo
{
VECCOPY(out, in);
if (!td && t->con.mode & CON_APPLY) {
- Mat3MulVecfl(t->con.pmtx, out);
+ mul_m3_v3(t->con.pmtx, out);
// With snap, a projection is alright, no need to correct for view alignment
- if ((t->tsnap.status & SNAP_ON) == 0) {
+ if (!(t->tsnap.mode != SCE_SNAP_MODE_INCREMENT && t->modifiers & MOD_SNAP)) {
if (getConstraintSpaceDimension(t) == 2) {
if (out[0] != 0.0f || out[1] != 0.0f || out[2] != 0.0f) {
planeProjection(t, in, out);
@@ -316,7 +316,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo
}
/*
- * Generic callback for object based spacial constraints applied to linear motion
+ * Generic callback for object based spatial constraints applied to linear motion
*
* At first, the following is applied to the first data in the array
* The IN vector in projected into the constrained space and then further
@@ -331,7 +331,7 @@ static void applyObjectConstraintVec(TransInfo *t, TransData *td, float in[3], f
VECCOPY(out, in);
if (t->con.mode & CON_APPLY) {
if (!td) {
- Mat3MulVecfl(t->con.pmtx, out);
+ mul_m3_v3(t->con.pmtx, out);
if (getConstraintSpaceDimension(t) == 2) {
if (out[0] != 0.0f || out[1] != 0.0f || out[2] != 0.0f) {
planeProjection(t, in, out);
@@ -367,7 +367,7 @@ static void applyObjectConstraintVec(TransInfo *t, TransData *td, float in[3], f
if (t->con.mode & CON_AXIS2) {
out[2] = in[i++];
}
- Mat3MulVecfl(td->axismtx, out);
+ mul_m3_v3(td->axismtx, out);
}
}
}
@@ -393,8 +393,8 @@ static void applyAxisConstraintSize(TransInfo *t, TransData *td, float smat[3][3
smat[2][2] = 1.0f;
}
- Mat3MulMat3(tmat, smat, t->con.imtx);
- Mat3MulMat3(smat, t->con.mtx, tmat);
+ mul_m3_m3m3(tmat, smat, t->con.imtx);
+ mul_m3_m3m3(smat, t->con.mtx, tmat);
}
}
@@ -410,7 +410,7 @@ static void applyObjectConstraintSize(TransInfo *t, TransData *td, float smat[3]
float tmat[3][3];
float imat[3][3];
- Mat3Inv(imat, td->axismtx);
+ invert_m3_m3(imat, td->axismtx);
if (!(t->con.mode & CON_AXIS0)) {
smat[0][0] = 1.0f;
@@ -422,8 +422,8 @@ static void applyObjectConstraintSize(TransInfo *t, TransData *td, float smat[3]
smat[2][2] = 1.0f;
}
- Mat3MulMat3(tmat, smat, imat);
- Mat3MulMat3(smat, td->axismtx, tmat);
+ mul_m3_m3m3(tmat, smat, imat);
+ mul_m3_m3m3(smat, td->axismtx, tmat);
}
}
@@ -462,7 +462,7 @@ static void applyAxisConstraintRot(TransInfo *t, TransData *td, float vec[3], fl
}
/* don't flip axis if asked to or if num input */
if (angle && (mode & CON_NOFLIP) == 0 && hasNumInput(&t->num) == 0) {
- if (Inpf(vec, t->viewinv[2]) > 0.0f) {
+ if (dot_v3v3(vec, t->viewinv[2]) > 0.0f) {
*angle = -(*angle);
}
}
@@ -508,7 +508,7 @@ static void applyObjectConstraintRot(TransInfo *t, TransData *td, float vec[3],
break;
}
if (angle && (mode & CON_NOFLIP) == 0 && hasNumInput(&t->num) == 0) {
- if (Inpf(vec, t->viewinv[2]) > 0.0f) {
+ if (dot_v3v3(vec, t->viewinv[2]) > 0.0f) {
*angle = -(*angle);
}
}
@@ -519,7 +519,7 @@ static void applyObjectConstraintRot(TransInfo *t, TransData *td, float vec[3],
void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[]) {
strncpy(t->con.text + 1, text, 48);
- Mat3CpyMat3(t->con.mtx, space);
+ copy_m3_m3(t->con.mtx, space);
t->con.mode = mode;
getConstraintMatrix(t);
@@ -535,7 +535,7 @@ void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[])
void setLocalConstraint(TransInfo *t, int mode, const char text[]) {
if (t->flag & T_EDIT) {
float obmat[3][3];
- Mat3CpyMat4(obmat, t->scene->obedit->obmat);
+ copy_m3_m4(obmat, t->scene->obedit->obmat);
setConstraint(t, obmat, mode, text);
}
else {
@@ -544,7 +544,7 @@ void setLocalConstraint(TransInfo *t, int mode, const char text[]) {
}
else {
strncpy(t->con.text + 1, text, 48);
- Mat3CpyMat3(t->con.mtx, t->data->axismtx);
+ copy_m3_m3(t->con.mtx, t->data->axismtx);
t->con.mode = mode;
getConstraintMatrix(t);
@@ -573,7 +573,7 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
{
float mtx[3][3];
sprintf(text, ftext, "global");
- Mat3One(mtx);
+ unit_m3(mtx);
setConstraint(t, mtx, mode, text);
}
break;
@@ -630,7 +630,7 @@ void drawConstraint(const struct bContext *C, TransInfo *t)
float vec[3];
char col2[3] = {255,255,255};
convertViewVec(t, vec, (short)(t->mval[0] - t->con.imval[0]), (short)(t->mval[1] - t->con.imval[1]));
- VecAddf(vec, vec, tc->center);
+ add_v3_v3v3(vec, vec, tc->center);
drawLine(t, tc->center, tc->mtx[0], 'x', 0);
drawLine(t, tc->center, tc->mtx[1], 'y', 0);
@@ -673,13 +673,13 @@ void drawPropCircle(const struct bContext *C, TransInfo *t)
if(t->spacetype == SPACE_VIEW3D && rv3d != NULL)
{
- Mat4CpyMat4(tmat, rv3d->viewmat);
- Mat4Invert(imat, tmat);
+ copy_m4_m4(tmat, rv3d->viewmat);
+ invert_m4_m4(imat, tmat);
}
else
{
- Mat4One(tmat);
- Mat4One(imat);
+ unit_m4(tmat);
+ unit_m4(imat);
}
glPushMatrix();
@@ -756,8 +756,8 @@ void stopConstraint(TransInfo *t) {
void getConstraintMatrix(TransInfo *t)
{
float mat[3][3];
- Mat3Inv(t->con.imtx, t->con.mtx);
- Mat3One(t->con.pmtx);
+ invert_m3_m3(t->con.imtx, t->con.mtx);
+ unit_m3(t->con.pmtx);
if (!(t->con.mode & CON_AXIS0)) {
t->con.pmtx[0][0] =
@@ -777,15 +777,15 @@ void getConstraintMatrix(TransInfo *t)
t->con.pmtx[2][2] = 0.0f;
}
- Mat3MulMat3(mat, t->con.pmtx, t->con.imtx);
- Mat3MulMat3(t->con.pmtx, t->con.mtx, mat);
+ mul_m3_m3m3(mat, t->con.pmtx, t->con.imtx);
+ mul_m3_m3m3(t->con.pmtx, t->con.mtx, mat);
}
/*------------------------- MMB Select -------------------------------*/
void initSelectConstraint(TransInfo *t, float mtx[3][3])
{
- Mat3CpyMat3(t->con.mtx, mtx);
+ copy_m3_m3(t->con.mtx, mtx);
t->con.mode |= CON_APPLY;
t->con.mode |= CON_SELECT;
@@ -852,24 +852,24 @@ static void setNearestAxis3d(TransInfo *t)
projecting them with window_to_3d_delta and then get the length of that vector.
*/
zfac= t->persmat[0][3]*t->center[0]+ t->persmat[1][3]*t->center[1]+ t->persmat[2][3]*t->center[2]+ t->persmat[3][3];
- zfac = VecLength(t->persinv[0]) * 2.0f/t->ar->winx * zfac * 30.0f;
+ zfac = len_v3(t->persinv[0]) * 2.0f/t->ar->winx * zfac * 30.0f;
for (i = 0; i<3; i++) {
VECCOPY(axis, t->con.mtx[i]);
- VecMulf(axis, zfac);
+ mul_v3_fl(axis, zfac);
/* now we can project to get window coordinate */
- VecAddf(axis, axis, t->con.center);
+ add_v3_v3v3(axis, axis, t->con.center);
projectIntView(t, axis, icoord);
axis[0] = (float)(icoord[0] - t->center2d[0]);
axis[1] = (float)(icoord[1] - t->center2d[1]);
axis[2] = 0.0f;
- if (Normalize(axis) != 0.0f) {
- Projf(proj, mvec, axis);
- VecSubf(axis, mvec, proj);
- len[i] = Normalize(axis);
+ if (normalize_v3(axis) != 0.0f) {
+ project_v3_v3v3(proj, mvec, axis);
+ sub_v3_v3v3(axis, mvec, proj);
+ len[i] = normalize_v3(axis);
}
else {
len[i] = 10000000000.0f;
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 85ebf725467..403d8449a67 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -135,7 +135,7 @@
//#include "BDR_editobject.h" // reset_slowparents()
//#include "BDR_gpencil.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -263,9 +263,9 @@ static void set_prop_dist(TransInfo *t, short with_dist)
for (i = 0, td= t->data; i < t->total; i++, td++) {
if(td->flag & TD_SELECTED) {
- VecSubf(vec, tob->center, td->center);
- Mat3MulVecfl(tob->mtx, vec);
- dist = Normalize(vec);
+ sub_v3_v3v3(vec, tob->center, td->center);
+ mul_m3_v3(tob->mtx, vec);
+ dist = normalize_v3(vec);
if (tob->rdist == -1.0f) {
tob->rdist = dist;
}
@@ -315,10 +315,10 @@ static void createTransTexspace(bContext *C, TransInfo *t)
VECCOPY(td->center, ob->obmat[3]);
td->ob = ob;
- Mat3CpyMat4(td->mtx, ob->obmat);
- Mat3CpyMat4(td->axismtx, ob->obmat);
- Mat3Ortho(td->axismtx);
- Mat3Inv(td->smtx, td->mtx);
+ copy_m3_m4(td->mtx, ob->obmat);
+ copy_m3_m4(td->axismtx, ob->obmat);
+ normalize_m3(td->axismtx);
+ invert_m3_m3(td->smtx, td->mtx);
if (give_obdata_texspace(ob, &texflag, &td->loc, &td->ext->size, &td->ext->rot)) {
*texflag &= ~AUTOSPACE;
@@ -358,14 +358,14 @@ static void createTransEdge(bContext *C, TransInfo *t) {
td= t->data= MEM_callocN(t->total * sizeof(TransData), "TransCrease");
- Mat3CpyMat4(mtx, t->obedit->obmat);
- Mat3Inv(smtx, mtx);
+ copy_m3_m4(mtx, t->obedit->obmat);
+ invert_m3_m3(smtx, mtx);
for(eed= em->edges.first; eed; eed= eed->next) {
if(eed->h==0 && (eed->f & SELECT || propmode)) {
/* need to set center for center calculations */
- VecAddf(td->center, eed->v1->co, eed->v2->co);
- VecMulf(td->center, 0.5f);
+ add_v3_v3v3(td->center, eed->v1->co, eed->v2->co);
+ mul_v3_fl(td->center, 0.5f);
td->loc= NULL;
if (eed->f & SELECT)
@@ -374,8 +374,8 @@ static void createTransEdge(bContext *C, TransInfo *t) {
td->flag= 0;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td->ext = NULL;
if (t->mode == TFM_BWEIGHT) {
@@ -460,7 +460,7 @@ static short apply_targetless_ik(Object *ob)
float offs_bone[4][4];
/* offs_bone = yoffs(b-1) + root(b) + bonemat(b) */
- Mat4CpyMat3(offs_bone, bone->bone_mat);
+ copy_m4_m3(offs_bone, bone->bone_mat);
/* The bone's root offset (is in the parent's coordinate system) */
VECCOPY(offs_bone[3], bone->head);
@@ -471,60 +471,60 @@ static short apply_targetless_ik(Object *ob)
/* pose_mat(b-1) * offs_bone */
if(parchan->bone->flag & BONE_HINGE) {
/* the rotation of the parent restposition */
- Mat4CpyMat4(rmat, parbone->arm_mat); /* rmat used as temp */
+ copy_m4_m4(rmat, parbone->arm_mat); /* rmat used as temp */
/* the location of actual parent transform */
VECCOPY(rmat[3], offs_bone[3]);
offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
- Mat4MulVecfl(parchan->parent->pose_mat, rmat[3]);
+ mul_m4_v3(parchan->parent->pose_mat, rmat[3]);
- Mat4MulMat4(tmat, offs_bone, rmat);
+ mul_m4_m4m4(tmat, offs_bone, rmat);
}
else if(parchan->bone->flag & BONE_NO_SCALE) {
- Mat4MulMat4(tmat, offs_bone, parchan->parent->pose_mat);
- Mat4Ortho(tmat);
+ mul_m4_m4m4(tmat, offs_bone, parchan->parent->pose_mat);
+ normalize_m4(tmat);
}
else
- Mat4MulMat4(tmat, offs_bone, parchan->parent->pose_mat);
+ mul_m4_m4m4(tmat, offs_bone, parchan->parent->pose_mat);
- Mat4Invert(imat, tmat);
+ invert_m4_m4(imat, tmat);
}
else {
- Mat4CpyMat3(tmat, bone->bone_mat);
+ copy_m4_m3(tmat, bone->bone_mat);
VECCOPY(tmat[3], bone->head);
- Mat4Invert(imat, tmat);
+ invert_m4_m4(imat, tmat);
}
/* result matrix */
- Mat4MulMat4(rmat, parchan->pose_mat, imat);
+ mul_m4_m4m4(rmat, parchan->pose_mat, imat);
/* apply and decompose, doesn't work for constraints or non-uniform scale well */
{
float rmat3[3][3], qrmat[3][3], imat[3][3], smat[3][3];
- Mat3CpyMat4(rmat3, rmat);
+ copy_m3_m4(rmat3, rmat);
/* rotation */
if (parchan->rotmode > 0)
- Mat3ToEulO(rmat3, parchan->eul, parchan->rotmode);
+ mat3_to_eulO( parchan->eul, parchan->rotmode,rmat3);
else if (parchan->rotmode == ROT_MODE_AXISANGLE)
- Mat3ToAxisAngle(rmat3, parchan->rotAxis, &pchan->rotAngle);
+ mat3_to_axis_angle( parchan->rotAxis, &pchan->rotAngle,rmat3);
else
- Mat3ToQuat(rmat3, parchan->quat);
+ mat3_to_quat( parchan->quat,rmat3);
/* for size, remove rotation */
/* causes problems with some constraints (so apply only if needed) */
if (data->flag & CONSTRAINT_IK_STRETCH) {
if (parchan->rotmode > 0)
- EulOToMat3(parchan->eul, parchan->rotmode, qrmat);
+ eulO_to_mat3( qrmat,parchan->eul, parchan->rotmode);
else if (parchan->rotmode == ROT_MODE_AXISANGLE)
- AxisAngleToMat3(parchan->rotAxis, parchan->rotAngle, qrmat);
+ axis_angle_to_mat3( qrmat,parchan->rotAxis, parchan->rotAngle);
else
- QuatToMat3(parchan->quat, qrmat);
+ quat_to_mat3( qrmat,parchan->quat);
- Mat3Inv(imat, qrmat);
- Mat3MulMat3(smat, rmat3, imat);
- Mat3ToSize(smat, parchan->size);
+ invert_m3_m3(imat, qrmat);
+ mul_m3_m3m3(smat, rmat3, imat);
+ mat3_to_size( parchan->size,smat);
}
/* causes problems with some constraints (e.g. childof), so disable this */
@@ -545,7 +545,7 @@ static short apply_targetless_ik(Object *ob)
static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, TransData *td)
{
Bone *bone= pchan->bone;
- float pmat[3][3], omat[3][3];
+ float pmat[3][3], omat[3][3], bmat[3][3];
float cmat[3][3], tmat[3][3];
float vec[3];
@@ -602,38 +602,43 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
/* proper way to get parent transform + own transform + constraints transform */
- Mat3CpyMat4(omat, ob->obmat);
+ copy_m3_m4(omat, ob->obmat);
+
+ if (t->mode==TFM_TRANSLATION && (pchan->bone->flag & BONE_NO_LOCAL_LOCATION))
+ unit_m3(bmat);
+ else
+ copy_m3_m3(bmat, pchan->bone->bone_mat);
if (pchan->parent) {
if(pchan->bone->flag & BONE_HINGE)
- Mat3CpyMat4(pmat, pchan->parent->bone->arm_mat);
+ copy_m3_m4(pmat, pchan->parent->bone->arm_mat);
else
- Mat3CpyMat4(pmat, pchan->parent->pose_mat);
+ copy_m3_m4(pmat, pchan->parent->pose_mat);
if (constraints_list_needinv(t, &pchan->constraints)) {
- Mat3CpyMat4(tmat, pchan->constinv);
- Mat3Inv(cmat, tmat);
- Mat3MulSerie(td->mtx, pchan->bone->bone_mat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args
+ copy_m3_m4(tmat, pchan->constinv);
+ invert_m3_m3(cmat, tmat);
+ mul_serie_m3(td->mtx, bmat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args
}
else
- Mat3MulSerie(td->mtx, pchan->bone->bone_mat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args
+ mul_serie_m3(td->mtx, bmat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args
}
else {
if (constraints_list_needinv(t, &pchan->constraints)) {
- Mat3CpyMat4(tmat, pchan->constinv);
- Mat3Inv(cmat, tmat);
- Mat3MulSerie(td->mtx, pchan->bone->bone_mat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args
+ copy_m3_m4(tmat, pchan->constinv);
+ invert_m3_m3(cmat, tmat);
+ mul_serie_m3(td->mtx, bmat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args
}
else
- Mat3MulMat3(td->mtx, omat, pchan->bone->bone_mat); // Mat3MulMat3 has swapped args!
+ mul_m3_m3m3(td->mtx, omat, bmat); // Mat3MulMat3 has swapped args!
}
- Mat3Inv(td->smtx, td->mtx);
+ invert_m3_m3(td->smtx, td->mtx);
/* for axismat we use bone's own transform */
- Mat3CpyMat4(pmat, pchan->pose_mat);
- Mat3MulMat3(td->axismtx, omat, pmat);
- Mat3Ortho(td->axismtx);
+ copy_m3_m4(pmat, pchan->pose_mat);
+ mul_m3_m3m3(td->axismtx, omat, pmat);
+ normalize_m3(td->axismtx);
if (t->mode==TFM_BONESIZE) {
bArmature *arm= t->poseobj->data;
@@ -666,8 +671,8 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
data->flag |= CONSTRAINT_IK_AUTO;
/* only object matrix correction */
- Mat3CpyMat3 (td->mtx, omat);
- Mat3Inv (td->smtx, td->mtx);
+ copy_m3_m3(td->mtx, omat);
+ invert_m3_m3(td->smtx, td->mtx);
}
}
@@ -878,8 +883,7 @@ static short pose_grab_with_ik_add(bPoseChannel *pchan)
}
}
- con = add_new_constraint(CONSTRAINT_TYPE_KINEMATIC);
- BLI_addtail(&pchan->constraints, con);
+ con = add_pose_constraint(NULL, pchan, "TempConstraint", CONSTRAINT_TYPE_KINEMATIC);
pchan->constflag |= (PCHAN_HAS_IK|PCHAN_HAS_TARGET); /* for draw, but also for detecting while pose solving */
data= con->data;
if (targetless) { /* if exists use values from last targetless IK-constraint as base */
@@ -1080,8 +1084,8 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
if (!t->total) return;
- Mat3CpyMat4(mtx, t->obedit->obmat);
- Mat3Inv(smtx, mtx);
+ copy_m3_m4(mtx, t->obedit->obmat);
+ invert_m3_m3(smtx, mtx);
td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransEditBone");
@@ -1100,8 +1104,8 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
VECCOPY (td->center, ebo->head);
td->flag= TD_SELECTED;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td->loc = NULL;
td->ext = NULL;
@@ -1115,8 +1119,8 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
VECCOPY (td->center, ebo->tail);
td->flag= TD_SELECTED;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td->loc = NULL;
td->ext = NULL;
@@ -1145,13 +1149,13 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
td->flag= TD_SELECTED;
/* use local bone matrix */
- VecSubf(delta, ebo->tail, ebo->head);
+ sub_v3_v3v3(delta, ebo->tail, ebo->head);
vec_roll_to_mat3(delta, ebo->roll, bonemat);
- Mat3MulMat3(td->mtx, mtx, bonemat);
- Mat3Inv(td->smtx, td->mtx);
+ mul_m3_m3m3(td->mtx, mtx, bonemat);
+ invert_m3_m3(td->smtx, td->mtx);
- Mat3CpyMat3(td->axismtx, td->mtx);
- Mat3Ortho(td->axismtx);
+ copy_m3_m3(td->axismtx, td->mtx);
+ normalize_m3(td->axismtx);
td->ext = NULL;
@@ -1185,10 +1189,10 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
if (ebo->flag & BONE_EDITMODE_LOCKED)
td->protectflag = OB_LOCK_LOC|OB_LOCK_ROT|OB_LOCK_SCALE;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
- VecSubf(delta, ebo->tail, ebo->head);
+ sub_v3_v3v3(delta, ebo->tail, ebo->head);
vec_roll_to_mat3(delta, ebo->roll, td->axismtx);
if ((ebo->flag & BONE_ROOTSEL) == 0)
@@ -1210,10 +1214,10 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
if (ebo->flag & BONE_EDITMODE_LOCKED)
td->protectflag = OB_LOCK_LOC|OB_LOCK_ROT|OB_LOCK_SCALE;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
- VecSubf(delta, ebo->tail, ebo->head);
+ sub_v3_v3v3(delta, ebo->tail, ebo->head);
vec_roll_to_mat3(delta, ebo->roll, td->axismtx);
td->extra = ebo; /* to fix roll */
@@ -1255,8 +1259,8 @@ static void createTransMBallVerts(bContext *C, TransInfo *t)
td = t->data= MEM_callocN(t->total*sizeof(TransData), "TransObData(MBall EditMode)");
tx = t->ext = MEM_callocN(t->total*sizeof(TransDataExtension), "MetaElement_TransExtension");
- Mat3CpyMat4(mtx, t->obedit->obmat);
- Mat3Inv(smtx, mtx);
+ copy_m3_m4(mtx, t->obedit->obmat);
+ invert_m3_m3(smtx, mtx);
for(ml= mb->editelems->first; ml; ml= ml->next) {
if(propmode || (ml->flag & SELECT)) {
@@ -1267,8 +1271,8 @@ static void createTransMBallVerts(bContext *C, TransInfo *t)
if(ml->flag & SELECT) td->flag= TD_SELECTED | TD_USEQUAT | TD_SINGLESIZE;
else td->flag= TD_USEQUAT;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td->ext = tx;
@@ -1311,7 +1315,7 @@ static void calc_distanceCurveVerts(TransData *head, TransData *tail) {
}
else if(td_near) {
float dist;
- dist = VecLenf(td_near->center, td->center);
+ dist = len_v3v3(td_near->center, td->center);
if (dist < (td-1)->dist) {
td->dist = (td-1)->dist;
}
@@ -1332,7 +1336,7 @@ static void calc_distanceCurveVerts(TransData *head, TransData *tail) {
}
else if(td_near) {
float dist;
- dist = VecLenf(td_near->center, td->center);
+ dist = len_v3v3(td_near->center, td->center);
if (td->flag & TD_NOTCONNECTED || dist < td->dist || (td+1)->dist < td->dist) {
td->flag &= ~TD_NOTCONNECTED;
if (dist < (td+1)->dist) {
@@ -1408,8 +1412,8 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
else t->total = countsel;
t->data= MEM_callocN(t->total*sizeof(TransData), "TransObData(Curve EditMode)");
- Mat3CpyMat4(mtx, t->obedit->obmat);
- Mat3Inv(smtx, mtx);
+ copy_m3_m4(mtx, t->obedit->obmat);
+ invert_m3_m3(smtx, mtx);
td = t->data;
for(nu= cu->editnurb->first; nu; nu= nu->next) {
@@ -1439,8 +1443,8 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
hdata = initTransDataCurveHandles(td, bezt);
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td++;
count++;
@@ -1466,8 +1470,8 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
td->val = NULL;
}
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
if ((bezt->f1&SELECT)==0 && (bezt->f3&SELECT)==0)
/* If the middle is selected but the sides arnt, this is needed */
@@ -1500,8 +1504,8 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
hdata = initTransDataCurveHandles(td, bezt);
}
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td++;
count++;
@@ -1542,8 +1546,8 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
td->ival = bp->alfa;
}
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td++;
count++;
@@ -1590,8 +1594,8 @@ static void createTransLatticeVerts(bContext *C, TransInfo *t)
else t->total = countsel;
t->data= MEM_callocN(t->total*sizeof(TransData), "TransObData(Lattice EditMode)");
- Mat3CpyMat4(mtx, t->obedit->obmat);
- Mat3Inv(smtx, mtx);
+ copy_m3_m4(mtx, t->obedit->obmat);
+ invert_m3_m3(smtx, mtx);
td = t->data;
bp = latt->def;
@@ -1604,8 +1608,8 @@ static void createTransLatticeVerts(bContext *C, TransInfo *t)
VECCOPY(td->center, td->loc);
if(bp->f1 & SELECT) td->flag= TD_SELECTED;
else td->flag= 0;
- Mat3CpyMat3(td->smtx, smtx);
- Mat3CpyMat3(td->mtx, mtx);
+ copy_m3_m3(td->smtx, smtx);
+ copy_m3_m3(td->mtx, mtx);
td->ext = NULL;
td->val = NULL;
@@ -1679,9 +1683,9 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
else
tx = t->ext = NULL;
- Mat4One(mat);
+ unit_m4(mat);
- Mat4Invert(ob->imat,ob->obmat);
+ invert_m4_m4(ob->imat,ob->obmat);
for(i=0, point=edit->points; i<edit->totpoint; i++, point++) {
TransData *head, *tail;
@@ -1695,7 +1699,7 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
for(k=0, key=point->keys; k<point->totkey; k++, key++) {
if(key->flag & PEK_USE_WCO) {
VECCOPY(key->world_co, key->co);
- Mat4MulVecfl(mat, key->world_co);
+ mul_m4_v3(mat, key->world_co);
td->loc = key->world_co;
}
else
@@ -1709,8 +1713,8 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
else if(!propmode)
td->flag |= TD_SKIP;
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
/* don't allow moving roots */
if(k==0 && pset->flag & PE_LOCK_FIRST && (!psys || !(psys->flag & PSYS_GLOBAL_HAIR)))
@@ -1764,15 +1768,15 @@ void flushTransParticles(TransInfo *t)
if(psys && !(psys->flag & PSYS_GLOBAL_HAIR)) {
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, psys->particles + i, mat);
- Mat4Invert(imat,mat);
+ invert_m4_m4(imat,mat);
for(k=0, key=point->keys; k<point->totkey; k++, key++) {
VECCOPY(co, key->world_co);
- Mat4MulVecfl(imat, co);
+ mul_m4_v3(imat, co);
/* optimization for proportional edit */
- if(!propmode || !FloatCompare(key->co, co, 0.0001f)) {
+ if(!propmode || !compare_v3v3(key->co, co, 0.0001f)) {
VECCOPY(key->co, co);
point->flag |= PEP_EDIT_RECALC;
}
@@ -1838,13 +1842,13 @@ static void editmesh_set_connectivity_distance(EditMesh *em, int total, float *v
if (v1->f2) {
if (v2->f2) {
float nvec[3];
- float len1 = VecLength(vec1);
- float len2 = VecLength(vec2);
+ float len1 = len_v3(vec1);
+ float len2 = len_v3(vec2);
float lenn;
/* for v2 if not selected */
if (v2->f2 != 2) {
- VecSubf(nvec, v2->co, E_NEAR(v1)->co);
- lenn = VecLength(nvec);
+ sub_v3_v3v3(nvec, v2->co, E_NEAR(v1)->co);
+ lenn = len_v3(nvec);
/* 1 < n < 2 */
if (lenn - len1 > THRESHOLD && len2 - lenn > THRESHOLD) {
VECCOPY(vec2, nvec);
@@ -1860,8 +1864,8 @@ static void editmesh_set_connectivity_distance(EditMesh *em, int total, float *v
}
/* for v1 if not selected */
if (v1->f2 != 2) {
- VecSubf(nvec, v1->co, E_NEAR(v2)->co);
- lenn = VecLength(nvec);
+ sub_v3_v3v3(nvec, v1->co, E_NEAR(v2)->co);
+ lenn = len_v3(nvec);
/* 2 < n < 1 */
if (lenn - len2 > THRESHOLD && len1 - lenn > THRESHOLD) {
VECCOPY(vec1, nvec);
@@ -1878,9 +1882,9 @@ static void editmesh_set_connectivity_distance(EditMesh *em, int total, float *v
}
else {
v2->f2 = 1;
- VecSubf(vec2, v2->co, E_NEAR(v1)->co);
+ sub_v3_v3v3(vec2, v2->co, E_NEAR(v1)->co);
/* 2 < 1 */
- if (VecLength(vec1) - VecLength(vec2) > THRESHOLD) {
+ if (len_v3(vec1) - len_v3(vec2) > THRESHOLD) {
VECCOPY(vec2, vec1);
}
E_NEAR(v2) = E_NEAR(v1);
@@ -1889,9 +1893,9 @@ static void editmesh_set_connectivity_distance(EditMesh *em, int total, float *v
}
else if (v2->f2) {
v1->f2 = 1;
- VecSubf(vec1, v1->co, E_NEAR(v2)->co);
+ sub_v3_v3v3(vec1, v1->co, E_NEAR(v2)->co);
/* 2 < 1 */
- if (VecLength(vec2) - VecLength(vec1) > THRESHOLD) {
+ if (len_v3(vec2) - len_v3(vec1) > THRESHOLD) {
VECCOPY(vec1, vec2);
}
E_NEAR(v1) = E_NEAR(v2);
@@ -2009,13 +2013,13 @@ static void set_crazy_vertex_quat(float *quat, float *v1, float *v2, float *v3,
TAN_MAKE_VEC(vecu, v1, v2);
TAN_MAKE_VEC(vecv, v1, v3);
- triatoquat(v1, vecu, vecv, q1);
+ tri_to_quat( q1,v1, vecu, vecv);
TAN_MAKE_VEC(vecu, def1, def2);
TAN_MAKE_VEC(vecv, def1, def3);
- triatoquat(def1, vecu, vecv, q2);
+ tri_to_quat( q2,def1, vecu, vecv);
- QuatSub(quat, q2, q1);
+ sub_qt_qtqt(quat, q2, q1);
}
#undef TAN_MAKE_VEC
@@ -2192,8 +2196,8 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
else t->total = countsel;
tob= t->data= MEM_callocN(t->total*sizeof(TransData), "TransObData(Mesh EditMode)");
- Mat3CpyMat4(mtx, t->obedit->obmat);
- Mat3Inv(smtx, mtx);
+ copy_m3_m4(mtx, t->obedit->obmat);
+ invert_m3_m3(smtx, mtx);
if(propmode) editmesh_set_connectivity_distance(em, t->total, vectors, nears);
@@ -2251,8 +2255,8 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
if (eve->f2) {
float vec[3];
VECCOPY(vec, E_VEC(eve));
- Mat3MulVecfl(mtx, vec);
- tob->dist= VecLength(vec);
+ mul_m3_v3(mtx, vec);
+ tob->dist= len_v3(vec);
}
else {
tob->flag |= TD_NOTCONNECTED;
@@ -2266,25 +2270,25 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
/* use both or either quat and defmat correction */
if(quats && eve->tmp.f) {
- QuatToMat3(eve->tmp.p, qmat);
+ quat_to_mat3( qmat,eve->tmp.p);
if(defmats)
- Mat3MulSerie(mat, mtx, qmat, defmats[a],
+ mul_serie_m3(mat, mtx, qmat, defmats[a],
NULL, NULL, NULL, NULL, NULL);
else
- Mat3MulMat3(mat, mtx, qmat);
+ mul_m3_m3m3(mat, mtx, qmat);
}
else
- Mat3MulMat3(mat, mtx, defmats[a]);
+ mul_m3_m3m3(mat, mtx, defmats[a]);
- Mat3Inv(imat, mat);
+ invert_m3_m3(imat, mat);
- Mat3CpyMat3(tob->smtx, imat);
- Mat3CpyMat3(tob->mtx, mat);
+ copy_m3_m3(tob->smtx, imat);
+ copy_m3_m3(tob->mtx, mat);
}
else {
- Mat3CpyMat3(tob->smtx, smtx);
- Mat3CpyMat3(tob->mtx, mtx);
+ copy_m3_m3(tob->smtx, smtx);
+ copy_m3_m3(tob->mtx, mtx);
}
/* Mirror? */
@@ -2459,8 +2463,8 @@ static void UVsToTransData(SpaceImage *sima, TransData *td, TransData2D *td2d, f
else {
td->dist= MAXFLOAT;
}
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
}
static void createTransUVs(bContext *C, TransInfo *t)
@@ -2755,8 +2759,8 @@ static void createTransNlaData(bContext *C, TransInfo *t)
td->flag |= TD_SELECTED;
td->dist= 0.0f;
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
}
else {
td->val= &tdn->h1[0];
@@ -2786,8 +2790,8 @@ static void createTransNlaData(bContext *C, TransInfo *t)
td->flag |= TD_SELECTED;
td->dist= 0.0f;
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
}
else {
td->val= &tdn->h2[0];
@@ -3351,8 +3355,8 @@ static void bezt_to_transdata (TransData *td, TransData2D *td2d, AnimData *adt,
if (intvals)
td->flag |= TD_INTVALUES;
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
}
static void createTransGraphEditData(bContext *C, TransInfo *t)
@@ -3986,8 +3990,8 @@ static TransData *SeqToTransData(TransInfo *t, TransData *td, TransData2D *td2d,
td->flag |= TD_SELECTED;
td->dist= 0.0;
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
/* Time Transform (extend) */
td->val= td2d->loc;
@@ -4200,8 +4204,8 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object *
short skip_invert = 0;
/* axismtx has the real orientation */
- Mat3CpyMat4(td->axismtx, ob->obmat);
- Mat3Ortho(td->axismtx);
+ copy_m3_m4(td->axismtx, ob->obmat);
+ normalize_m3(td->axismtx);
td->con= ob->constraints.first;
@@ -4280,7 +4284,7 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object *
VECCOPY(td->center, ob->obmat[3]);
- Mat4CpyMat4(td->ext->obmat, ob->obmat);
+ copy_m4_m4(td->ext->obmat, ob->obmat);
/* is there a need to set the global<->data space conversion matrices? */
if (ob->parent || constinv) {
@@ -4291,15 +4295,15 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object *
* done, as it doesn't work well.
*/
object_to_mat3(ob, obmtx);
- Mat3CpyMat4(totmat, ob->obmat);
- Mat3Inv(obinv, totmat);
- Mat3MulMat3(td->smtx, obmtx, obinv);
- Mat3Inv(td->mtx, td->smtx);
+ copy_m3_m4(totmat, ob->obmat);
+ invert_m3_m3(obinv, totmat);
+ mul_m3_m3m3(td->smtx, obmtx, obinv);
+ invert_m3_m3(td->mtx, td->smtx);
}
else {
/* no conversion to/from dataspace */
- Mat3One(td->smtx);
- Mat3One(td->mtx);
+ unit_m3(td->smtx);
+ unit_m3(td->mtx);
}
/* set active flag */
@@ -5152,8 +5156,8 @@ static void NodeToTransData(TransData *td, TransData2D *td2d, bNode *node)
td->flag |= TD_SELECTED;
td->dist= 0.0;
- Mat3One(td->mtx);
- Mat3One(td->smtx);
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
}
void createTransNodeData(bContext *C, TransInfo *t)
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 2e7cfd63836..8b7c4b7503b 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -100,7 +100,7 @@
//#include "BDR_unwrapper.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
@@ -131,20 +131,20 @@ void getViewVector(TransInfo *t, float coord[3], float vec[3])
p1[3] = 1.0f;
VECCOPY(p2, p1);
p2[3] = 1.0f;
- Mat4MulVec4fl(t->viewmat, p2);
+ mul_m4_v4(t->viewmat, p2);
p2[0] = 2.0f * p2[0];
p2[1] = 2.0f * p2[1];
p2[2] = 2.0f * p2[2];
- Mat4MulVec4fl(t->viewinv, p2);
+ mul_m4_v4(t->viewinv, p2);
- VecSubf(vec, p1, p2);
+ sub_v3_v3v3(vec, p1, p2);
}
else {
VECCOPY(vec, t->viewinv[2]);
}
- Normalize(vec);
+ normalize_v3(vec);
}
/* ************************** GENERICS **************************** */
@@ -181,9 +181,9 @@ static void clipMirrorModifier(TransInfo *t, Object *ob)
if (mmd->mirror_ob) {
float obinv[4][4];
- Mat4Invert(obinv, mmd->mirror_ob->obmat);
- Mat4MulMat4(mtx, ob->obmat, obinv);
- Mat4Invert(imtx, mtx);
+ invert_m4_m4(obinv, mmd->mirror_ob->obmat);
+ mul_m4_m4m4(mtx, ob->obmat, obinv);
+ invert_m4_m4(imtx, mtx);
}
for(i = 0 ; i < t->total; i++, td++) {
@@ -198,12 +198,12 @@ static void clipMirrorModifier(TransInfo *t, Object *ob)
if (td->flag & TD_SKIP)
continue;
- VecCopyf(loc, td->loc);
- VecCopyf(iloc, td->iloc);
+ copy_v3_v3(loc, td->loc);
+ copy_v3_v3(iloc, td->iloc);
if (mmd->mirror_ob) {
- VecMat4MulVecfl(loc, mtx, loc);
- VecMat4MulVecfl(iloc, mtx, iloc);
+ mul_v3_m4v3(loc, mtx, loc);
+ mul_v3_m4v3(iloc, mtx, iloc);
}
clip = 0;
@@ -231,9 +231,9 @@ static void clipMirrorModifier(TransInfo *t, Object *ob)
}
if (clip) {
if (mmd->mirror_ob) {
- VecMat4MulVecfl(loc, imtx, loc);
+ mul_v3_m4v3(loc, imtx, loc);
}
- VecCopyf(td->loc, loc);
+ copy_v3_v3(td->loc, loc);
}
}
}
@@ -692,7 +692,7 @@ void recalcData(TransInfo *t)
}
/* on extrude bones, oldlength==0.0f, so we scale radius of points */
- ebo->length= VecLenf(ebo->head, ebo->tail);
+ ebo->length= len_v3v3(ebo->head, ebo->tail);
if(ebo->oldlength==0.0f) {
ebo->rad_head= 0.25f*ebo->length;
ebo->rad_tail= 0.10f*ebo->length;
@@ -727,14 +727,14 @@ void recalcData(TransInfo *t)
if (t->mode != TFM_ROTATION)
{
- VecSubf(vec, ebo->tail, ebo->head);
- Normalize(vec);
- RotationBetweenVectorsToQuat(qrot, td->axismtx[1], vec);
- QuatMulVecf(qrot, up_axis);
+ sub_v3_v3v3(vec, ebo->tail, ebo->head);
+ normalize_v3(vec);
+ rotation_between_vecs_to_quat(qrot, td->axismtx[1], vec);
+ mul_qt_v3(qrot, up_axis);
}
else
{
- Mat3MulVecfl(t->mat, up_axis);
+ mul_m3_v3(t->mat, up_axis);
}
ebo->roll = ED_rollBoneToVector(ebo, up_axis);
@@ -835,11 +835,11 @@ void drawLine(TransInfo *t, float *center, float *dir, char axis, short options)
//if(t->obedit) glLoadMatrixf(t->obedit->obmat); // sets opengl viewing
- VecCopyf(v3, dir);
- VecMulf(v3, v3d->far);
+ copy_v3_v3(v3, dir);
+ mul_v3_fl(v3, v3d->far);
- VecSubf(v2, center, v3);
- VecAddf(v1, center, v3);
+ sub_v3_v3v3(v2, center, v3);
+ add_v3_v3v3(v1, center, v3);
if (options & DRAWLIGHT) {
col[0] = col[1] = col[2] = 220;
@@ -928,8 +928,13 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
t->center[1] =
t->center[2] = 0.0f;
- Mat3One(t->mat);
+ unit_m3(t->mat);
+ /* if there's an event, we're modal */
+ if (event) {
+ t->flag |= T_MODAL;
+ }
+
t->spacetype = sa->spacetype;
if(t->spacetype == SPACE_VIEW3D)
{
@@ -1010,11 +1015,15 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
}
else
{
- if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) {
- t->flag |= T_PROP_EDIT;
-
- if(ts->proportional == PROP_EDIT_CONNECTED)
- t->flag |= T_PROP_CONNECTED;
+ /* use settings from scene only if modal */
+ if (t->flag & T_MODAL)
+ {
+ if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) {
+ t->flag |= T_PROP_EDIT;
+
+ if(ts->proportional == PROP_EDIT_CONNECTED)
+ t->flag |= T_PROP_CONNECTED;
+ }
}
}
@@ -1048,7 +1057,6 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
t->options |= CTX_NO_PET;
}
-
setTransformViewMatrices(t);
initNumInput(&t->num);
initNDofInput(&t->ndof);
@@ -1155,7 +1163,7 @@ void restoreTransObjects(TransInfo *t)
restoreElement(td);
}
- Mat3One(t->mat);
+ unit_m3(t->mat);
recalcData(t);
}
@@ -1167,7 +1175,7 @@ void calculateCenter2D(TransInfo *t)
float vec[3];
VECCOPY(vec, t->center);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
projectIntView(t, vec, t->center2d);
}
else {
@@ -1187,10 +1195,10 @@ void calculateCenterCursor(TransInfo *t)
Object *ob = t->obedit?t->obedit:t->poseobj;
float mat[3][3], imat[3][3];
- VecSubf(t->center, t->center, ob->obmat[3]);
- Mat3CpyMat4(mat, ob->obmat);
- Mat3Inv(imat, mat);
- Mat3MulVecfl(imat, t->center);
+ sub_v3_v3v3(t->center, t->center, ob->obmat[3]);
+ copy_m3_m4(mat, ob->obmat);
+ invert_m3_m3(imat, mat);
+ mul_m3_v3(imat, t->center);
}
calculateCenter2D(t);
@@ -1234,7 +1242,7 @@ void calculateCenterMedian(TransInfo *t)
if (t->data[i].flag & TD_SELECTED) {
if (!(t->data[i].flag & TD_NOCENTER))
{
- VecAddf(partial, partial, t->data[i].center);
+ add_v3_v3v3(partial, partial, t->data[i].center);
total++;
}
}
@@ -1247,7 +1255,7 @@ void calculateCenterMedian(TransInfo *t)
}
}
if(i)
- VecMulf(partial, 1.0f / total);
+ mul_v3_fl(partial, 1.0f / total);
VECCOPY(t->center, partial);
calculateCenter2D(t);
@@ -1262,7 +1270,7 @@ void calculateCenterBound(TransInfo *t)
if (i) {
if (t->data[i].flag & TD_SELECTED) {
if (!(t->data[i].flag & TD_NOCENTER))
- MinMax3(min, max, t->data[i].center);
+ minmax_v3_v3v3(min, max, t->data[i].center);
}
else {
/*
@@ -1277,8 +1285,8 @@ void calculateCenterBound(TransInfo *t)
VECCOPY(min, t->data[i].center);
}
}
- VecAddf(t->center, min, max);
- VecMulf(t->center, 0.5);
+ add_v3_v3v3(t->center, min, max);
+ mul_v3_fl(t->center, 0.5);
calculateCenter2D(t);
}
@@ -1341,7 +1349,7 @@ void calculateCenter(TransInfo *t)
if(t->flag & (T_EDIT|T_POSE))
{
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, t->con.center);
+ mul_m4_v3(ob->obmat, t->con.center);
}
/* for panning from cameraview */
@@ -1358,7 +1366,7 @@ void calculateCenter(TransInfo *t)
float axis[3];
/* persinv is nasty, use viewinv instead, always right */
VECCOPY(axis, t->viewinv[2]);
- Normalize(axis);
+ normalize_v3(axis);
/* 6.0 = 6 grid units */
axis[0]= t->center[0]- 6.0f*axis[0];
@@ -1385,7 +1393,7 @@ void calculateCenter(TransInfo *t)
float vec[3];
VECCOPY(vec, t->center);
- Mat4MulVecfl(ob->obmat, vec);
+ mul_m4_v3(ob->obmat, vec);
initgrabz(t->ar->regiondata, vec[0], vec[1], vec[2]);
}
else {
@@ -1509,9 +1517,9 @@ float get_drawsize(ARegion *ar, float *co)
size= rv3d->persmat[0][3]*co[0]+ rv3d->persmat[1][3]*co[1]+ rv3d->persmat[2][3]*co[2]+ rv3d->persmat[3][3];
VECCOPY(vec, rv3d->persinv[0]);
- len1= Normalize(vec);
+ len1= normalize_v3(vec);
VECCOPY(vec, rv3d->persinv[1]);
- len2= Normalize(vec);
+ len2= normalize_v3(vec);
size*= 0.01f*(len1>len2?len1:len2);
diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c
index 83d4a314057..fbc7f0dd746 100644
--- a/source/blender/editors/transform/transform_input.c
+++ b/source/blender/editors/transform/transform_input.c
@@ -28,7 +28,7 @@
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "WM_types.h"
@@ -45,9 +45,9 @@ void InputVector(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
{
/* calculate the main translation and the precise one separate */
convertViewVec(t, dvec, (short)(mval[0] - mi->precision_mval[0]), (short)(mval[1] - mi->precision_mval[1]));
- VecMulf(dvec, 0.1f);
+ mul_v3_fl(dvec, 0.1f);
convertViewVec(t, vec, (short)(mi->precision_mval[0] - t->imval[0]), (short)(mi->precision_mval[1] - t->imval[1]));
- VecAddf(output, vec, dvec);
+ add_v3_v3v3(output, vec, dvec);
}
else
{
@@ -133,9 +133,9 @@ void InputHorizontalAbsolute(TransInfo *t, MouseInput *mi, short mval[2], float
float vec[3];
InputVector(t, mi, mval, vec);
- Projf(vec, vec, t->viewinv[0]);
+ project_v3_v3v3(vec, vec, t->viewinv[0]);
- output[0] = Inpf(t->viewinv[0], vec) * 2.0f;
+ output[0] = dot_v3v3(t->viewinv[0], vec) * 2.0f;
}
void InputVerticalRatio(TransInfo *t, MouseInput *mi, short mval[2], float output[3]) {
@@ -158,15 +158,21 @@ void InputVerticalAbsolute(TransInfo *t, MouseInput *mi, short mval[2], float ou
float vec[3];
InputVector(t, mi, mval, vec);
- Projf(vec, vec, t->viewinv[1]);
+ project_v3_v3v3(vec, vec, t->viewinv[1]);
- output[0] = Inpf(t->viewinv[1], vec) * 2.0f;
+ output[0] = dot_v3v3(t->viewinv[1], vec) * 2.0f;
}
void setCustomPoints(TransInfo *t, MouseInput *mi, short start[2], short end[2])
{
- short *data = mi->data;
+ short *data;
+
+ if (mi->data == NULL) {
+ mi->data = MEM_callocN(sizeof(short) * 4, "custom points");
+ }
+ data = mi->data;
+
data[0] = start[0];
data[1] = start[1];
data[2] = end[0];
@@ -180,28 +186,30 @@ void InputCustomRatio(TransInfo *t, MouseInput *mi, short mval[2], float output[
short *data = mi->data;
short dx, dy;
- dx = data[2] - data[0];
- dy = data[3] - data[1];
-
- length = (float)sqrtf(dx*dx + dy*dy);
-
- if (mi->precision) {
- /* deal with Shift key by adding motion / 10 to motion before shift press */
- short mdx, mdy;
- mdx = (mi->precision_mval[0] + (float)(mval[0] - mi->precision_mval[0]) / 10.0f) - data[2];
- mdy = (mi->precision_mval[1] + (float)(mval[1] - mi->precision_mval[1]) / 10.0f) - data[3];
+ if (data) {
+ dx = data[2] - data[0];
+ dy = data[3] - data[1];
- distance = (mdx*dx + mdy*dy) / length;
- }
- else {
- short mdx, mdy;
- mdx = mval[0] - data[2];
- mdy = mval[1] - data[3];
+ length = (float)sqrtf(dx*dx + dy*dy);
- distance = (mdx*dx + mdy*dy) / length;
- }
+ if (mi->precision) {
+ /* deal with Shift key by adding motion / 10 to motion before shift press */
+ short mdx, mdy;
+ mdx = (mi->precision_mval[0] + (float)(mval[0] - mi->precision_mval[0]) / 10.0f) - data[2];
+ mdy = (mi->precision_mval[1] + (float)(mval[1] - mi->precision_mval[1]) / 10.0f) - data[3];
+
+ distance = (mdx*dx + mdy*dy) / length;
+ }
+ else {
+ short mdx, mdy;
+ mdx = mval[0] - data[2];
+ mdy = mval[1] - data[3];
- output[0] = distance / length;
+ distance = (mdx*dx + mdy*dy) / length;
+ }
+
+ output[0] = distance / length;
+ }
}
void InputAngle(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
@@ -335,7 +343,6 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
case INPUT_CUSTOM_RATIO:
mi->apply = InputCustomRatio;
t->helpline = HLP_NONE;
- mi->data = MEM_callocN(sizeof(short) * 4, "custom points");
break;
case INPUT_NONE:
default:
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 86e83715da4..7530e015496 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -66,7 +66,7 @@
#include "BKE_pointcache.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BIF_gl.h"
@@ -116,8 +116,8 @@ static int is_mat4_flipped(float mat[][4])
{
float vec[3];
- Crossf(vec, mat[0], mat[1]);
- if( Inpf(vec, mat[2]) < 0.0 ) return 1;
+ cross_v3_v3v3(vec, mat[0], mat[1]);
+ if( dot_v3v3(vec, mat[2]) < 0.0 ) return 1;
return 0;
}
@@ -129,7 +129,7 @@ static void calc_tw_center(Scene *scene, float *co)
float *max= scene->twmax;
DO_MINMAX(co, min, max);
- VecAddf(twcent, twcent, co);
+ add_v3_v3v3(twcent, twcent, co);
}
static void protectflag_to_drawflags(short protectflag, short *drawflags)
@@ -182,60 +182,67 @@ static int test_rotmode_euler(short rotmode)
return (ELEM(rotmode, ROT_MODE_AXISANGLE, ROT_MODE_QUAT)) ? 0:1;
}
-void gimbal_axis(Object *ob, float gmat[][3])
+int gimbal_axis(Object *ob, float gmat[][3])
{
- if(ob->mode & OB_MODE_POSE)
- {
- bPoseChannel *pchan= get_active_posechannel(ob);
+ if (ob) {
+ if(ob->mode & OB_MODE_POSE)
+ {
+ bPoseChannel *pchan= get_active_posechannel(ob);
- if(pchan && test_rotmode_euler(pchan->rotmode)) {
- float mat[3][3], tmat[3][3], obmat[3][3];
+ if(pchan && test_rotmode_euler(pchan->rotmode)) {
+ float mat[3][3], tmat[3][3], obmat[3][3];
- EulToGimbalAxis(mat, pchan->eul, pchan->rotmode);
+ eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode);
- /* apply bone transformation */
- Mat3MulMat3(tmat, pchan->bone->bone_mat, mat);
-
- if (pchan->parent)
- {
- float parent_mat[3][3];
+ /* apply bone transformation */
+ mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat);
- Mat3CpyMat4(parent_mat, pchan->parent->pose_mat);
- Mat3MulMat3(mat, parent_mat, tmat);
+ if (pchan->parent)
+ {
+ float parent_mat[3][3];
- /* needed if object transformation isn't identity */
- Mat3CpyMat4(obmat, ob->obmat);
- Mat3MulMat3(gmat, obmat, mat);
- }
- else
- {
- /* needed if object transformation isn't identity */
- Mat3CpyMat4(obmat, ob->obmat);
- Mat3MulMat3(gmat, obmat, tmat);
- }
+ copy_m3_m4(parent_mat, pchan->parent->pose_mat);
+ mul_m3_m3m3(mat, parent_mat, tmat);
- Mat3Ortho(gmat);
+ /* needed if object transformation isn't identity */
+ copy_m3_m4(obmat, ob->obmat);
+ mul_m3_m3m3(gmat, obmat, mat);
+ }
+ else
+ {
+ /* needed if object transformation isn't identity */
+ copy_m3_m4(obmat, ob->obmat);
+ mul_m3_m3m3(gmat, obmat, tmat);
+ }
+
+ normalize_m3(gmat);
+ return 1;
+ }
}
- }
- else {
- if(test_rotmode_euler(ob->rotmode)) {
-
-
- if (ob->parent)
- {
- float parent_mat[3][3], amat[3][3];
+ else {
+ if(test_rotmode_euler(ob->rotmode)) {
+
- EulToGimbalAxis(amat, ob->rot, ob->rotmode);
- Mat3CpyMat4(parent_mat, ob->parent->obmat);
- Mat3Ortho(parent_mat);
- Mat3MulMat3(gmat, parent_mat, amat);
- }
- else
- {
- EulToGimbalAxis(gmat, ob->rot, ob->rotmode);
+ if (ob->parent)
+ {
+ float parent_mat[3][3], amat[3][3];
+
+ eulO_to_gimbal_axis(amat, ob->rot, ob->rotmode);
+ copy_m3_m4(parent_mat, ob->parent->obmat);
+ normalize_m3(parent_mat);
+ mul_m3_m3m3(gmat, parent_mat, amat);
+ return 1;
+ }
+ else
+ {
+ eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode);
+ return 1;
+ }
}
}
}
+
+ return 0;
}
@@ -254,7 +261,7 @@ int calc_manipulator_stats(const bContext *C)
int a, totsel= 0;
/* transform widget matrix */
- Mat4One(rv3d->twmat);
+ unit_m4(rv3d->twmat);
v3d->twdrawflag= 0xFFFF;
@@ -395,10 +402,10 @@ int calc_manipulator_stats(const bContext *C)
/* selection center */
if(totsel) {
- VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
- Mat4MulVecfl(obedit->obmat, scene->twcent);
- Mat4MulVecfl(obedit->obmat, scene->twmin);
- Mat4MulVecfl(obedit->obmat, scene->twmax);
+ mul_v3_fl(scene->twcent, 1.0f/(float)totsel); // centroid!
+ mul_m4_v3(obedit->obmat, scene->twcent);
+ mul_m4_v3(obedit->obmat, scene->twmin);
+ mul_m4_v3(obedit->obmat, scene->twmax);
}
}
else if(ob && (ob->mode & OB_MODE_POSE)) {
@@ -415,10 +422,10 @@ int calc_manipulator_stats(const bContext *C)
stats_pose(scene, v3d, pchan);
}
- VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
- Mat4MulVecfl(ob->obmat, scene->twcent);
- Mat4MulVecfl(ob->obmat, scene->twmin);
- Mat4MulVecfl(ob->obmat, scene->twmax);
+ mul_v3_fl(scene->twcent, 1.0f/(float)totsel); // centroid!
+ mul_m4_v3(ob->obmat, scene->twcent);
+ mul_m4_v3(ob->obmat, scene->twmin);
+ mul_m4_v3(ob->obmat, scene->twmax);
}
}
else if(ob && (ob->mode & (OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) {
@@ -445,7 +452,7 @@ int calc_manipulator_stats(const bContext *C)
/* selection center */
if(totsel)
- VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
+ mul_v3_fl(scene->twcent, 1.0f/(float)totsel); // centroid!
}
}
else {
@@ -466,7 +473,7 @@ int calc_manipulator_stats(const bContext *C)
/* selection center */
if(totsel) {
- VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
+ mul_v3_fl(scene->twcent, 1.0f/(float)totsel); // centroid!
}
}
@@ -481,37 +488,38 @@ int calc_manipulator_stats(const bContext *C)
case V3D_MANIP_GIMBAL:
{
float mat[3][3];
- Mat3One(mat);
- gimbal_axis(ob, mat);
- Mat4CpyMat3(rv3d->twmat, mat);
- break;
+ if (gimbal_axis(ob, mat)) {
+ copy_m4_m3(rv3d->twmat, mat);
+ break;
+ }
+ /* if not gimbal, fall through to normal */
}
case V3D_MANIP_NORMAL:
if(obedit || ob->mode & OB_MODE_POSE) {
float mat[3][3];
ED_getTransformOrientationMatrix(C, mat, (v3d->around == V3D_ACTIVE));
- Mat4CpyMat3(rv3d->twmat, mat);
+ copy_m4_m3(rv3d->twmat, mat);
break;
}
/* no break we define 'normal' as 'local' in Object mode */
case V3D_MANIP_LOCAL:
- Mat4CpyMat4(rv3d->twmat, ob->obmat);
- Mat4Ortho(rv3d->twmat);
+ copy_m4_m4(rv3d->twmat, ob->obmat);
+ normalize_m4(rv3d->twmat);
break;
case V3D_MANIP_VIEW:
{
float mat[3][3];
- Mat3CpyMat4(mat, rv3d->viewinv);
- Mat3Ortho(mat);
- Mat4CpyMat3(rv3d->twmat, mat);
+ copy_m3_m4(mat, rv3d->viewinv);
+ normalize_m3(mat);
+ copy_m4_m3(rv3d->twmat, mat);
}
break;
default: /* V3D_MANIP_CUSTOM */
{
float mat[3][3];
applyTransformOrientation(C, mat, NULL);
- Mat4CpyMat3(rv3d->twmat, mat);
+ copy_m4_m3(rv3d->twmat, mat);
break;
}
}
@@ -528,7 +536,7 @@ static float screen_aligned(RegionView3D *rv3d, float mat[][4])
float vec[3], size;
VECCOPY(vec, mat[0]);
- size= Normalize(vec);
+ size= normalize_v3(vec);
glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
@@ -709,8 +717,8 @@ static void preOrtho(int ortho, float twmat[][4], int axis)
{
if (ortho == 0) {
float omat[4][4];
- Mat4CpyMat4(omat, twmat);
- Mat4Orthogonal(omat, axis);
+ copy_m4_m4(omat, twmat);
+ orthogonalize_m4(omat, axis);
glPushMatrix();
wmMultMatrix(omat);
}
@@ -720,8 +728,8 @@ static void preOrthoFront(int ortho, float twmat[][4], int axis)
{
if (ortho == 0) {
float omat[4][4];
- Mat4CpyMat4(omat, twmat);
- Mat4Orthogonal(omat, axis);
+ copy_m4_m4(omat, twmat);
+ orthogonalize_m4(omat, axis);
glPushMatrix();
wmMultMatrix(omat);
glFrontFace( is_mat4_flipped(omat)?GL_CW:GL_CCW);
@@ -753,8 +761,8 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
glEnable(GL_BLEND);
/* we need both [4][4] transforms, t->mat seems to be premul, not post for mat[][4] */
- Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
-// XXX Mat4MulMat34(matt, t->mat, rv3d->twmat);
+ copy_m4_m4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+// XXX mul_m4_m3m4(matt, t->mat, rv3d->twmat);
/* Screen aligned view rot circle */
if(drawflags & MAN_ROT_V) {
@@ -766,7 +774,7 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
vec[0]= 0; // XXX (float)(t->con.imval[0] - t->center2d[0]);
vec[1]= 0; // XXX (float)(t->con.imval[1] - t->center2d[1]);
vec[2]= 0.0f;
- Normalize(vec);
+ normalize_v3(vec);
startphi= saacos( vec[1] );
if(vec[0]<0.0) startphi= -startphi;
@@ -788,16 +796,16 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
svec[2]= 0.0f;
/* screen aligned vec transform back to manipulator space */
- Mat3CpyMat4(ivmat, rv3d->viewinv);
- Mat3CpyMat4(tmat, rv3d->twmat);
- Mat3Inv(imat, tmat);
- Mat3MulMat3(tmat, imat, ivmat);
+ copy_m3_m4(ivmat, rv3d->viewinv);
+ copy_m3_m4(tmat, rv3d->twmat);
+ invert_m3_m3(imat, tmat);
+ mul_m3_m3m3(tmat, imat, ivmat);
- Mat3MulVecfl(tmat, svec); // tmat is used further on
- Normalize(svec);
+ mul_m3_v3(tmat, svec); // tmat is used further on
+ normalize_v3(svec);
}
- ortho = IsMat4Orthogonal(rv3d->twmat);
+ ortho = is_orthogonal_m4(rv3d->twmat);
if (ortho) {
wmMultMatrix(rv3d->twmat); // aligns with original widget
@@ -812,19 +820,19 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
/* correct for squeezed arc */
svec[0]+= tmat[2][0];
svec[1]+= tmat[2][1];
- Normalize(svec);
+ normalize_v3(svec);
startphi= (float)atan2(svec[0], svec[1]);
}
else startphi= 0.5f*(float)M_PI;
VECCOPY(vec, rv3d->twmat[0]); // use x axis to detect rotation
- Normalize(vec);
- Normalize(matt[0]);
- phi= saacos( Inpf(vec, matt[0]) );
+ normalize_v3(vec);
+ normalize_v3(matt[0]);
+ phi= saacos( dot_v3v3(vec, matt[0]) );
if(phi!=0.0) {
- Crossf(cross, vec, matt[0]); // results in z vector
- if(Inpf(cross, rv3d->twmat[2]) > 0.0) phi= -phi;
+ cross_v3_v3v3(cross, vec, matt[0]); // results in z vector
+ if(dot_v3v3(cross, rv3d->twmat[2]) > 0.0) phi= -phi;
gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*(phi)/M_PI);
}
@@ -838,19 +846,19 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
/* correct for squeezed arc */
svec[1]+= tmat[2][1];
svec[2]+= tmat[2][2];
- Normalize(svec);
+ normalize_v3(svec);
startphi= (float)(M_PI + atan2(svec[2], -svec[1]));
}
else startphi= 0.0f;
VECCOPY(vec, rv3d->twmat[1]); // use y axis to detect rotation
- Normalize(vec);
- Normalize(matt[1]);
- phi= saacos( Inpf(vec, matt[1]) );
+ normalize_v3(vec);
+ normalize_v3(matt[1]);
+ phi= saacos( dot_v3v3(vec, matt[1]) );
if(phi!=0.0) {
- Crossf(cross, vec, matt[1]); // results in x vector
- if(Inpf(cross, rv3d->twmat[0]) > 0.0) phi= -phi;
+ cross_v3_v3v3(cross, vec, matt[1]); // results in x vector
+ if(dot_v3v3(cross, rv3d->twmat[0]) > 0.0) phi= -phi;
glRotatef(90.0, 0.0, 1.0, 0.0);
gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI);
glRotatef(-90.0, 0.0, 1.0, 0.0);
@@ -866,19 +874,19 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
/* correct for squeezed arc */
svec[0]+= tmat[2][0];
svec[2]+= tmat[2][2];
- Normalize(svec);
+ normalize_v3(svec);
startphi= (float)(M_PI + atan2(-svec[0], svec[2]));
}
else startphi= (float)M_PI;
VECCOPY(vec, rv3d->twmat[2]); // use z axis to detect rotation
- Normalize(vec);
- Normalize(matt[2]);
- phi= saacos( Inpf(vec, matt[2]) );
+ normalize_v3(vec);
+ normalize_v3(matt[2]);
+ phi= saacos( dot_v3v3(vec, matt[2]) );
if(phi!=0.0) {
- Crossf(cross, vec, matt[2]); // results in y vector
- if(Inpf(cross, rv3d->twmat[1]) > 0.0) phi= -phi;
+ cross_v3_v3v3(cross, vec, matt[2]); // results in y vector
+ if(dot_v3v3(cross, rv3d->twmat[1]) > 0.0) phi= -phi;
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI);
glRotatef(90.0, 1.0, 0.0, 0.0);
@@ -911,14 +919,14 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
/* Init stuff */
glDisable(GL_DEPTH_TEST);
- Mat4One(unitmat);
+ unit_m4(unitmat);
qobj= gluNewQuadric();
gluQuadricDrawStyle(qobj, GLU_FILL);
/* prepare for screen aligned draw */
VECCOPY(vec, rv3d->twmat[0]);
- size= Normalize(vec);
+ size= normalize_v3(vec);
glPushMatrix();
glTranslatef(rv3d->twmat[3][0], rv3d->twmat[3][1], rv3d->twmat[3][2]);
@@ -958,8 +966,8 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
vec[0]= 0; // XXX (float)(t->imval[0] - t->center2d[0]);
vec[1]= 0; // XXX (float)(t->imval[1] - t->center2d[1]);
vec[2]= 0.0f;
- Normalize(vec);
- VecMulf(vec, 1.2f*size);
+ normalize_v3(vec);
+ mul_v3_fl(vec, 1.2f*size);
glBegin(GL_LINES);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3fv(vec);
@@ -969,12 +977,12 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
glPopMatrix();
- ortho = IsMat4Orthogonal(rv3d->twmat);
+ ortho = is_orthogonal_m4(rv3d->twmat);
/* apply the transform delta */
if(moving) {
- Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
- // XXX Mat4MulMat34(matt, t->mat, rv3d->twmat);
+ copy_m4_m4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ // XXX mul_m4_m3m4(matt, t->mat, rv3d->twmat);
if (ortho) {
wmMultMatrix(matt);
glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW);
@@ -1229,7 +1237,7 @@ static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving,
manipulator_setcolor(v3d, 'c', colcode);
glPushMatrix();
size= screen_aligned(rv3d, rv3d->twmat);
- Mat4One(unitmat);
+ unit_m4(unitmat);
drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat);
glPopMatrix();
@@ -1240,8 +1248,8 @@ static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving,
if(moving) {
float matt[4][4];
- Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
- // XXX Mat4MulMat34(matt, t->mat, rv3d->twmat);
+ copy_m4_m4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ // XXX mul_m4_m3m4(matt, t->mat, rv3d->twmat);
wmMultMatrix(matt);
glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW);
}
@@ -1347,7 +1355,7 @@ static void draw_manipulator_translate(View3D *v3d, RegionView3D *rv3d, int movi
manipulator_setcolor(v3d, 'c', colcode);
glPushMatrix();
size= screen_aligned(rv3d, rv3d->twmat);
- Mat4One(unitmat);
+ unit_m4(unitmat);
drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat);
glPopMatrix();
@@ -1420,7 +1428,7 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
/* Screen aligned view rot circle */
if(drawflags & MAN_ROT_V) {
float unitmat[4][4];
- Mat4One(unitmat);
+ unit_m4(unitmat);
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
UI_ThemeColor(TH_TRANSFORM);
@@ -1431,8 +1439,8 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
vec[0]= 0; // XXX (float)(t->imval[0] - t->center2d[0]);
vec[1]= 0; // XXX (float)(t->imval[1] - t->center2d[1]);
vec[2]= 0.0f;
- Normalize(vec);
- VecMulf(vec, 1.2f*size);
+ normalize_v3(vec);
+ mul_v3_fl(vec, 1.2f*size);
glBegin(GL_LINES);
glVertex3f(0.0, 0.0, 0.0);
glVertex3fv(vec);
@@ -1444,9 +1452,9 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
/* apply the transform delta */
if(moving) {
float matt[4][4];
- Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ copy_m4_m4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
// XXX if (t->flag & T_USES_MANIPULATOR) {
- // XXX Mat4MulMat34(matt, t->mat, rv3d->twmat);
+ // XXX mul_m4_m3m4(matt, t->mat, rv3d->twmat);
// XXX }
wmMultMatrix(matt);
}
@@ -1563,7 +1571,7 @@ void BIF_draw_manipulator(const bContext *C)
break;
}
- Mat4MulFloat3((float *)rv3d->twmat, get_manipulator_drawsize(ar));
+ mul_mat3_m4_fl(rv3d->twmat, get_manipulator_drawsize(ar));
}
if(v3d->twflag & V3D_DRAW_MANIPULATOR) {
@@ -1622,7 +1630,7 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho
rect.ymax= mval[1]+hotspot;
setwinmatrixview3d(ar, v3d, &rect);
- Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
+ mul_m4_m4m4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
glSelectBuffer( 64, buffer);
glRenderMode(GL_SELECT);
@@ -1644,7 +1652,7 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho
G.f &= ~G_PICKSEL;
setwinmatrixview3d(ar, v3d, NULL);
- Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
+ mul_m4_m4m4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
if(hits==1) return buffer[3];
else if(hits>1) {
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index 207cf4b9aee..1b8b331af62 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -32,7 +32,7 @@
#include "RNA_define.h"
#include "RNA_enum_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
#include "BKE_context.h"
@@ -84,6 +84,38 @@ TransformModeItem transform_modes[] =
{NULL, 0}
};
+static int snap_type_exec(bContext *C, wmOperator *op)
+{
+ ToolSettings *ts= CTX_data_tool_settings(C);
+
+ ts->snap_mode = RNA_enum_get(op->ptr,"type");
+
+ WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */
+
+ return OPERATOR_FINISHED;
+}
+
+void TFM_OT_snap_type(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Snap Type";
+ ot->description= "Set the snap element type.";
+ ot->idname= "TFM_OT_snap_type";
+
+ /* api callbacks */
+ ot->invoke= WM_menu_invoke;
+ ot->exec= snap_type_exec;
+
+ ot->poll= ED_operator_areaactive;
+
+ /* flags */
+ ot->flag= OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_enum(ot->srna, "type", snap_element_items, 0, "Type", "Set the snap element type");
+
+}
+
static int select_orientation_exec(bContext *C, wmOperator *op)
{
int orientation = RNA_enum_get(op->ptr, "orientation");
@@ -261,16 +293,16 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event)
TransInfo *t = op->customdata;
- transformEvent(t, event);
+ exit_code = transformEvent(t, event);
transformApply(C, t);
+ exit_code |= transformEnd(C, t);
- exit_code = transformEnd(C, t);
-
- if (exit_code != OPERATOR_RUNNING_MODAL)
+ if ((exit_code & OPERATOR_RUNNING_MODAL) == 0)
{
transformops_exit(C, op);
+ exit_code &= ~OPERATOR_PASS_THROUGH; /* preventively remove passthrough */
}
return exit_code;
@@ -293,6 +325,7 @@ static int transform_exec(bContext *C, wmOperator *op)
if (!transformops_data(C, op, NULL))
{
+ G.moving = 0;
return OPERATOR_CANCELLED;
}
@@ -313,6 +346,7 @@ static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
if (!transformops_data(C, op, event))
{
+ G.moving = 0;
return OPERATOR_CANCELLED;
}
@@ -320,13 +354,9 @@ static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event)
return transform_exec(C, op);
}
else {
- TransInfo *t = op->customdata;
-
/* add temp handler */
WM_event_add_modal_handler(C, op);
- t->flag |= T_MODAL; // XXX meh maybe somewhere else
-
op->flag |= OP_GRAB_POINTER; // XXX maybe we want this with the manipulator only?
return OPERATOR_RUNNING_MODAL;
}
@@ -339,16 +369,18 @@ void Properties_Proportional(struct wmOperatorType *ot)
RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100);
}
-void Properties_Snapping(struct wmOperatorType *ot, short align)
+void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align)
{
- RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", "");
- RNA_def_enum(ot->srna, "snap_mode", snap_mode_items, 0, "Mode", "");
- RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
+ RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", "");
- if (align)
- {
- RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
- RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX);
+ if (fullsnap) {
+ RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", "");
+ RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
+
+ if (align) {
+ RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
+ RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX);
+ }
}
}
@@ -385,7 +417,7 @@ void TFM_OT_translate(struct wmOperatorType *ot)
Properties_Constraints(ot);
- Properties_Snapping(ot, 1);
+ Properties_Snapping(ot, 1, 1);
}
void TFM_OT_resize(struct wmOperatorType *ot)
@@ -411,7 +443,7 @@ void TFM_OT_resize(struct wmOperatorType *ot)
Properties_Constraints(ot);
- Properties_Snapping(ot, 0);
+ Properties_Snapping(ot, 1, 0);
}
@@ -435,6 +467,8 @@ void TFM_OT_trackball(struct wmOperatorType *ot)
Properties_Proportional(ot);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
void TFM_OT_rotate(struct wmOperatorType *ot)
@@ -460,7 +494,7 @@ void TFM_OT_rotate(struct wmOperatorType *ot)
Properties_Constraints(ot);
- Properties_Snapping(ot, 0);
+ Properties_Snapping(ot, 1, 0);
}
void TFM_OT_tilt(struct wmOperatorType *ot)
@@ -488,6 +522,8 @@ void TFM_OT_tilt(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
Properties_Constraints(ot);
+
+ Properties_Snapping(ot, 0, 0);
}
void TFM_OT_warp(struct wmOperatorType *ot)
@@ -511,7 +547,9 @@ void TFM_OT_warp(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
- // XXX Shear axis?
+ Properties_Snapping(ot, 0, 0);
+
+ // XXX Warp axis?
// Properties_Constraints(ot);
}
@@ -536,6 +574,8 @@ void TFM_OT_shear(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+ Properties_Snapping(ot, 0, 0);
+
// XXX Shear axis?
// Properties_Constraints(ot);
}
@@ -560,6 +600,8 @@ void TFM_OT_shrink_fatten(struct wmOperatorType *ot)
Properties_Proportional(ot);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
void TFM_OT_tosphere(struct wmOperatorType *ot)
@@ -583,6 +625,8 @@ void TFM_OT_tosphere(struct wmOperatorType *ot)
Properties_Proportional(ot);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
void TFM_OT_mirror(struct wmOperatorType *ot)
@@ -622,6 +666,8 @@ void TFM_OT_edge_slide(struct wmOperatorType *ot)
RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
void TFM_OT_transform(struct wmOperatorType *ot)
@@ -698,6 +744,8 @@ void transform_operatortypes(void)
WM_operatortype_append(TFM_OT_select_orientation);
WM_operatortype_append(TFM_OT_create_orientation);
WM_operatortype_append(TFM_OT_delete_orientation);
+
+ WM_operatortype_append(TFM_OT_snap_type);
}
void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid)
@@ -735,6 +783,11 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke
km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0);
+ km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0);
+ RNA_string_set(km->ptr, "path", "scene.tool_settings.snap");
+
+ km = WM_keymap_add_item(keymap, "TFM_OT_snap_type", LEFTCTRLKEY, KM_CLICK, KM_SHIFT, 0);
+
break;
case SPACE_ACTION:
km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0);
@@ -806,6 +859,9 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke
km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0);
+
+ km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0);
+ RNA_string_set(km->ptr, "path", "scene.tool_settings.snap");
break;
default:
break;
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index 0cb2515828d..98067291e07 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -46,7 +46,7 @@
#include "BKE_context.h"
#include "BKE_report.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -160,8 +160,8 @@ TransformOrientation *createObjectSpace(bContext *C, ReportList *reports, char *
ob = base->object;
- Mat3CpyMat4(mat, ob->obmat);
- Mat3Ortho(mat);
+ copy_m3_m4(mat, ob->obmat);
+ normalize_m3(mat);
/* use object name if no name is given */
if (name[0] == 0)
@@ -246,20 +246,20 @@ int createSpaceNormal(float mat[3][3], float normal[3])
float tangent[3] = {0.0f, 0.0f, 1.0f};
VECCOPY(mat[2], normal);
- if (Normalize(mat[2]) == 0.0f) {
+ if (normalize_v3(mat[2]) == 0.0f) {
return 0; /* error return */
}
- Crossf(mat[0], mat[2], tangent);
- if (Inpf(mat[0], mat[0]) == 0.0f) {
+ cross_v3_v3v3(mat[0], mat[2], tangent);
+ if (dot_v3v3(mat[0], mat[0]) == 0.0f) {
tangent[0] = 1.0f;
tangent[1] = tangent[2] = 0.0f;
- Crossf(mat[0], tangent, mat[2]);
+ cross_v3_v3v3(mat[0], tangent, mat[2]);
}
- Crossf(mat[1], mat[2], mat[0]);
+ cross_v3_v3v3(mat[1], mat[2], mat[0]);
- Mat3Ortho(mat);
+ normalize_m3(mat);
return 1;
}
@@ -267,7 +267,7 @@ int createSpaceNormal(float mat[3][3], float normal[3])
int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3])
{
VECCOPY(mat[2], normal);
- if (Normalize(mat[2]) == 0.0f) {
+ if (normalize_v3(mat[2]) == 0.0f) {
return 0; /* error return */
}
@@ -277,14 +277,14 @@ int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3])
tangent[2] = 1;
}
- Crossf(mat[0], mat[2], tangent);
- if (Normalize(mat[0]) == 0.0f) {
+ cross_v3_v3v3(mat[0], mat[2], tangent);
+ if (normalize_v3(mat[0]) == 0.0f) {
return 0; /* error return */
}
- Crossf(mat[1], mat[2], mat[0]);
+ cross_v3_v3v3(mat[1], mat[2], mat[0]);
- Mat3Ortho(mat);
+ normalize_m3(mat);
return 1;
}
@@ -311,7 +311,7 @@ TransformOrientation* addMatrixSpace(bContext *C, float mat[3][3], char name[],
}
/* copy matrix into transform space */
- Mat3CpyMat3(ts->mat, mat);
+ copy_m3_m3(ts->mat, mat);
return ts;
}
@@ -479,7 +479,7 @@ void applyTransformOrientation(const bContext *C, float mat[3][3], char *name) {
if (name)
strcpy(name, ts->name);
- Mat3CpyMat3(mat, ts->mat);
+ copy_m3_m3(mat, ts->mat);
break;
}
}
@@ -522,10 +522,11 @@ void initTransformOrientation(bContext *C, TransInfo *t)
break;
case V3D_MANIP_GIMBAL:
- Mat3One(t->spacemtx);
- if(ob)
- gimbal_axis(ob, t->spacemtx);
- break;
+ unit_m3(t->spacemtx);
+ if (gimbal_axis(ob, t->spacemtx)) {
+ break;
+ }
+ /* no gimbal fallthrough to normal */
case V3D_MANIP_NORMAL:
if(obedit || (ob && ob->mode & OB_MODE_POSE)) {
strcpy(t->spacename, "normal");
@@ -537,10 +538,10 @@ void initTransformOrientation(bContext *C, TransInfo *t)
strcpy(t->spacename, "local");
if(ob) {
- Mat3CpyMat4(t->spacemtx, ob->obmat);
- Mat3Ortho(t->spacemtx);
+ copy_m3_m4(t->spacemtx, ob->obmat);
+ normalize_m3(t->spacemtx);
} else {
- Mat3One(t->spacemtx);
+ unit_m3(t->spacemtx);
}
break;
@@ -552,13 +553,13 @@ void initTransformOrientation(bContext *C, TransInfo *t)
float mat[3][3];
strcpy(t->spacename, "view");
- Mat3CpyMat4(mat, rv3d->viewinv);
- Mat3Ortho(mat);
- Mat3CpyMat3(t->spacemtx, mat);
+ copy_m3_m4(mat, rv3d->viewinv);
+ normalize_m3(mat);
+ copy_m3_m3(t->spacemtx, mat);
}
else
{
- Mat3One(t->spacemtx);
+ unit_m3(t->spacemtx);
}
break;
default: /* V3D_MANIP_CUSTOM */
@@ -584,10 +585,10 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
float imat[3][3], mat[3][3];
/* we need the transpose of the inverse for a normal... */
- Mat3CpyMat4(imat, ob->obmat);
+ copy_m3_m4(imat, ob->obmat);
- Mat3Inv(mat, imat);
- Mat3Transp(mat);
+ invert_m3_m3(mat, imat);
+ transpose_m3(mat);
ob= obedit;
@@ -629,7 +630,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
if(efa->f & SELECT)
{
VECADD(normal, normal, efa->n);
- VecSubf(vec, efa->v2->co, efa->v1->co);
+ sub_v3_v3v3(vec, efa->v2->co, efa->v1->co);
VECADD(plane, plane, vec);
}
}
@@ -653,9 +654,9 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
else {
v3 = eve;
- VecSubf(plane, v2->co, v1->co);
- VecSubf(cotangent, v3->co, v2->co);
- Crossf(normal, cotangent, plane);
+ sub_v3_v3v3(plane, v2->co, v1->co);
+ sub_v3_v3v3(cotangent, v3->co, v2->co);
+ cross_v3_v3v3(normal, cotangent, plane);
break;
}
}
@@ -668,7 +669,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
for(eed= em->edges.first; eed; eed= eed->next) {
if(eed->f & SELECT) {
- VecSubf(plane, eed->v2->co, eed->v1->co);
+ sub_v3_v3v3(plane, eed->v2->co, eed->v1->co);
break;
}
}
@@ -685,7 +686,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
/* use average vert normals as plane and edge vector as normal */
VECCOPY(plane, eed->v1->no);
VECADD(plane, plane, eed->v2->no);
- VecSubf(normal, eed->v2->co, eed->v1->co);
+ sub_v3_v3v3(normal, eed->v2->co, eed->v1->co);
break;
}
}
@@ -706,7 +707,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
VECCOPY(plane, v1->no);
VECADD(plane, plane, v2->no);
- VecSubf(normal, v2->co, v1->co);
+ sub_v3_v3v3(normal, v2->co, v1->co);
break;
}
}
@@ -731,10 +732,10 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
for (eve = em->verts.first; eve; eve = eve->next)
{
if ( eve->f & SELECT ) {
- VecAddf(normal, normal, eve->no);
+ add_v3_v3v3(normal, normal, eve->no);
}
}
- Normalize(normal);
+ normalize_v3(normal);
result = ORIENTATION_VERT;
}
}
@@ -758,21 +759,21 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
/* exception */
if ( (bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT )
{
- VecSubf(normal, bezt->vec[0], bezt->vec[2]);
+ sub_v3_v3v3(normal, bezt->vec[0], bezt->vec[2]);
}
else
{
if(bezt->f1)
{
- VecSubf(normal, bezt->vec[0], bezt->vec[1]);
+ sub_v3_v3v3(normal, bezt->vec[0], bezt->vec[1]);
}
if(bezt->f2)
{
- VecSubf(normal, bezt->vec[0], bezt->vec[2]);
+ sub_v3_v3v3(normal, bezt->vec[0], bezt->vec[2]);
}
if(bezt->f3)
{
- VecSubf(normal, bezt->vec[1], bezt->vec[2]);
+ sub_v3_v3v3(normal, bezt->vec[1], bezt->vec[2]);
}
}
bezt++;
@@ -813,12 +814,12 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
float mat[4][4];
/* Rotation of MetaElem is stored in quat */
- QuatToMat4(ml_sel->quat, mat);
+ quat_to_mat4( mat,ml_sel->quat);
VECCOPY(normal, mat[2]);
VECCOPY(plane, mat[1]);
- VecMulf(plane, -1.0);
+ mul_v3_fl(plane, -1.0);
result = ORIENTATION_NORMAL;
}
@@ -837,18 +838,18 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
{
float mat[3][3];
float vec[3];
- VecSubf(vec, ebone->tail, ebone->head);
- Normalize(vec);
- VecAddf(normal, normal, vec);
+ sub_v3_v3v3(vec, ebone->tail, ebone->head);
+ normalize_v3(vec);
+ add_v3_v3v3(normal, normal, vec);
vec_roll_to_mat3(vec, ebone->roll, mat);
- VecAddf(plane, plane, mat[2]);
+ add_v3_v3v3(plane, plane, mat[2]);
}
}
}
- Normalize(normal);
- Normalize(plane);
+ normalize_v3(normal);
+ normalize_v3(plane);
if (plane[0] != 0 || plane[1] != 0 || plane[2] != 0)
{
@@ -860,13 +861,13 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
/* Vectors from edges don't need the special transpose inverse multiplication */
if (result == ORIENTATION_EDGE)
{
- Mat4Mul3Vecfl(ob->obmat, normal);
- Mat4Mul3Vecfl(ob->obmat, plane);
+ mul_mat3_m4_v3(ob->obmat, normal);
+ mul_mat3_m4_v3(ob->obmat, plane);
}
else
{
- Mat3MulVecfl(mat, normal);
- Mat3MulVecfl(mat, plane);
+ mul_m3_v3(mat, normal);
+ mul_m3_v3(mat, plane);
}
}
else if(ob && (ob->mode & OB_MODE_POSE))
@@ -882,19 +883,19 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
/* use channels to get stats */
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
if (pchan->bone && pchan->bone->flag & BONE_TRANSFORM) {
- VecAddf(normal, normal, pchan->pose_mat[2]);
- VecAddf(plane, plane, pchan->pose_mat[1]);
+ add_v3_v3v3(normal, normal, pchan->pose_mat[2]);
+ add_v3_v3v3(plane, plane, pchan->pose_mat[1]);
}
}
- VecMulf(plane, -1.0);
+ mul_v3_fl(plane, -1.0);
/* we need the transpose of the inverse for a normal... */
- Mat3CpyMat4(imat, ob->obmat);
+ copy_m3_m4(imat, ob->obmat);
- Mat3Inv(mat, imat);
- Mat3Transp(mat);
- Mat3MulVecfl(mat, normal);
- Mat3MulVecfl(mat, plane);
+ invert_m3_m3(mat, imat);
+ transpose_m3(mat);
+ mul_m3_v3(mat, normal);
+ mul_m3_v3(mat, plane);
result = ORIENTATION_EDGE;
}
@@ -916,8 +917,10 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
}
}
- VECCOPY(normal, ob->obmat[2]);
- VECCOPY(plane, ob->obmat[1]);
+ if (ob) {
+ VECCOPY(normal, ob->obmat[2]);
+ VECCOPY(plane, ob->obmat[1]);
+ }
result = ORIENTATION_NORMAL;
}
@@ -963,6 +966,6 @@ void ED_getTransformOrientationMatrix(const bContext *C, float orientation_mat[]
if (type == ORIENTATION_NONE)
{
- Mat3One(orientation_mat);
+ unit_m3(orientation_mat);
}
}
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 1d26649fea2..d36b7c9b903 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -47,7 +47,7 @@
#include "RNA_access.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BLI_blenlib.h"
@@ -125,8 +125,8 @@ int BIF_snappingSupported(Object *obedit)
void drawSnapping(const struct bContext *C, TransInfo *t)
{
- if ((t->tsnap.status & (SNAP_ON|POINT_INIT|TARGET_INIT)) == (SNAP_ON|POINT_INIT|TARGET_INIT) &&
- (t->modifiers & MOD_SNAP_GEARS))
+ if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) &&
+ (t->modifiers & MOD_SNAP))
{
char col[4] = {1, 0, 1};
@@ -145,8 +145,8 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
size *= 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE);
- Mat4CpyMat4(tmat, rv3d->viewmat);
- Mat4Invert(imat, tmat);
+ copy_m4_m4(tmat, rv3d->viewmat);
+ invert_m4_m4(imat, tmat);
drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size, imat);
@@ -205,7 +205,8 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
int handleSnapping(TransInfo *t, wmEvent *event)
{
int status = 0;
-
+
+#if 0 // XXX need a proper selector for all snap mode
if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift)
{
/* toggle snap and reinit */
@@ -213,6 +214,7 @@ int handleSnapping(TransInfo *t, wmEvent *event)
initSnapping(t, NULL);
status = 1;
}
+#endif
return status;
}
@@ -220,7 +222,7 @@ int handleSnapping(TransInfo *t, wmEvent *event)
void applyProject(TransInfo *t)
{
/* XXX FLICKER IN OBJECT MODE */
- if ((t->tsnap.project) && (t->tsnap.status & SNAP_ON) && (t->modifiers & MOD_SNAP_GEARS))
+ if ((t->tsnap.project) && (t->modifiers & MOD_SNAP) && (t->modifiers & MOD_SNAP))
{
TransData *td = t->data;
float tvec[3];
@@ -229,7 +231,7 @@ void applyProject(TransInfo *t)
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob = t->obedit?t->obedit:t->poseobj;
- Mat4Invert(imat, ob->obmat);
+ invert_m4_m4(imat, ob->obmat);
}
for(i = 0 ; i < t->total; i++, td++) {
@@ -247,7 +249,7 @@ void applyProject(TransInfo *t)
if (t->flag & (T_EDIT|T_POSE))
{
Object *ob = t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, iloc);
+ mul_m4_v3(ob->obmat, iloc);
}
else if (t->flag & T_OBJECT)
{
@@ -256,17 +258,17 @@ void applyProject(TransInfo *t)
project_float(t->ar, iloc, mval);
- if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode))
+ if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeTarget))
{
// if(t->flag & (T_EDIT|T_POSE)) {
-// Mat4MulVecfl(imat, loc);
+// mul_m4_v3(imat, loc);
// }
//
- VecSubf(tvec, loc, iloc);
+ sub_v3_v3v3(tvec, loc, iloc);
- Mat3MulVecfl(td->smtx, tvec);
+ mul_m3_v3(td->smtx, tvec);
- VecAddf(td->loc, td->loc, tvec);
+ add_v3_v3v3(td->loc, td->loc, tvec);
}
//XXX constraintTransLim(t, td);
@@ -286,14 +288,14 @@ void applySnapping(TransInfo *t, float *vec)
t->tsnap.applySnap(t, vec);
}
- else if ((t->tsnap.status & SNAP_ON) &&
- (t->modifiers & MOD_SNAP_GEARS))
+ else if ((t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) &&
+ (t->modifiers & MOD_SNAP))
{
double current = PIL_check_seconds_timer();
// Time base quirky code to go around findnearest slowness
/* !TODO! add exception for object mode, no need to slow it down then */
- if (current - t->tsnap.last >= 0.1)
+ if (current - t->tsnap.last >= 0.01)
{
t->tsnap.calcSnap(t, vec);
t->tsnap.targetSnap(t);
@@ -310,9 +312,9 @@ void applySnapping(TransInfo *t, float *vec)
void resetSnapping(TransInfo *t)
{
t->tsnap.status = 0;
- t->tsnap.mode = 0;
t->tsnap.align = 0;
- t->tsnap.modePoint = 0;
+ t->tsnap.mode = 0;
+ t->tsnap.modeSelect = 0;
t->tsnap.modeTarget = 0;
t->tsnap.last = 0;
t->tsnap.applySnap = NULL;
@@ -331,7 +333,7 @@ int validSnappingNormal(TransInfo *t)
{
if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT))
{
- if (Inpf(t->tsnap.snapNormal, t->tsnap.snapNormal) > 0)
+ if (dot_v3v3(t->tsnap.snapNormal, t->tsnap.snapNormal) > 0)
{
return 1;
}
@@ -345,27 +347,34 @@ void initSnapping(TransInfo *t, wmOperator *op)
ToolSettings *ts = t->settings;
Object *obedit = t->obedit;
Scene *scene = t->scene;
- int snapping = 0;
- short snap_mode = t->settings->snap_target;
+ short snap_target = t->settings->snap_target;
resetSnapping(t);
+ /* if snap property exists */
if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_property_is_set(op->ptr, "snap"))
{
if (RNA_boolean_get(op->ptr, "snap"))
{
- snapping = 1;
- snap_mode = RNA_enum_get(op->ptr, "snap_mode");
+ t->modifiers |= MOD_SNAP;
+
+ if (RNA_property_is_set(op->ptr, "snap_target"))
+ {
+ snap_target = RNA_enum_get(op->ptr, "snap_target");
+ }
- t->tsnap.status |= SNAP_FORCED|POINT_INIT;
- RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint);
+ if (RNA_property_is_set(op->ptr, "snap_point"))
+ {
+ RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint);
+ t->tsnap.status |= SNAP_FORCED|POINT_INIT;
+ }
/* snap align only defined in specific cases */
if (RNA_struct_find_property(op->ptr, "snap_align"))
{
t->tsnap.align = RNA_boolean_get(op->ptr, "snap_align");
RNA_float_get_array(op->ptr, "snap_normal", t->tsnap.snapNormal);
- Normalize(t->tsnap.snapNormal);
+ normalize_v3(t->tsnap.snapNormal);
}
if (RNA_struct_find_property(op->ptr, "snap_project"))
@@ -374,11 +383,16 @@ void initSnapping(TransInfo *t, wmOperator *op)
}
}
}
- else
+ /* use scene defaults only when transform is modal */
+ else if (t->flag & T_MODAL)
{
- snapping = ((ts->snap_flag & SCE_SNAP) == SCE_SNAP);
+ if (ts->snap_flag & SCE_SNAP) {
+ t->modifiers |= MOD_SNAP;
+ }
+
t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE);
t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT);
+ t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT);
}
/* force project off when not supported */
@@ -387,55 +401,47 @@ void initSnapping(TransInfo *t, wmOperator *op)
t->tsnap.project = 0;
}
+ t->tsnap.mode = ts->snap_mode;
+
if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV
- (t->flag & T_CAMERA) == 0) { // Not with camera selected
- setSnappingCallback(t, snap_mode);
+ (t->flag & T_CAMERA) == 0) { // Not with camera selected in camera view
+ setSnappingCallback(t, snap_target);
/* Edit mode */
if (t->tsnap.applySnap != NULL && // A snapping function actually exist
- (snapping) && // Only if the snap flag is on
(obedit != NULL && ELEM3(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE)) ) // Temporary limited to edit mode meshes, armature, curves
{
- t->tsnap.status |= SNAP_ON;
- t->tsnap.modePoint = SNAP_GEO;
-
if (t->flag & T_PROP_EDIT)
{
- t->tsnap.mode = SNAP_NOT_OBEDIT;
+ t->tsnap.modeSelect = SNAP_NOT_OBEDIT;
}
else
{
- t->tsnap.mode = SNAP_ALL;
+ t->tsnap.modeSelect = SNAP_ALL;
}
}
/* Particles edit mode*/
else if (t->tsnap.applySnap != NULL && // A snapping function actually exist
- (snapping) && // Only if the snap flag is on
(obedit == NULL && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT ))
{
- t->tsnap.status |= SNAP_ON;
- t->tsnap.modePoint = SNAP_GEO;
- t->tsnap.mode = SNAP_ALL;
+ t->tsnap.modeSelect = SNAP_ALL;
}
/* Object mode */
else if (t->tsnap.applySnap != NULL && // A snapping function actually exist
- (snapping) && // Only if the snap flag is on
(obedit == NULL) ) // Object Mode
{
- t->tsnap.status |= SNAP_ON;
- t->tsnap.modePoint = SNAP_GEO;
- t->tsnap.mode = SNAP_NOT_SELECTED;
+ t->tsnap.modeSelect = SNAP_NOT_SELECTED;
}
else
{
/* Grid if snap is not possible */
- t->tsnap.modePoint = SNAP_GRID;
+ t->tsnap.mode = SCE_SNAP_MODE_INCREMENT;
}
}
else
{
/* Always grid outside of 3D view */
- t->tsnap.modePoint = SNAP_GRID;
+ t->tsnap.mode = SCE_SNAP_MODE_INCREMENT;
}
}
@@ -500,7 +506,7 @@ void setSnappingCallback(TransInfo *t, short snap_target)
void ApplySnapTranslation(TransInfo *t, float vec[3])
{
- VecSubf(vec, t->tsnap.snapPoint, t->tsnap.snapTarget);
+ sub_v3_v3v3(vec, t->tsnap.snapPoint, t->tsnap.snapTarget);
}
void ApplySnapRotation(TransInfo *t, float *vec)
@@ -527,7 +533,7 @@ void ApplySnapResize(TransInfo *t, float vec[3])
float TranslationBetween(TransInfo *t, float p1[3], float p2[3])
{
- return VecLenf(p1, p2);
+ return len_v3v3(p1, p2);
}
float RotationBetween(TransInfo *t, float p1[3], float p2[3])
@@ -537,11 +543,11 @@ float RotationBetween(TransInfo *t, float p1[3], float p2[3])
VECCOPY(center, t->center);
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, center);
+ mul_m4_v3(ob->obmat, center);
}
- VecSubf(start, p1, center);
- VecSubf(end, p2, center);
+ sub_v3_v3v3(start, p1, center);
+ sub_v3_v3v3(end, p2, center);
// Angle around a constraint axis (error prone, will need debug)
if (t->con.applyRot != NULL && (t->con.mode & CON_APPLY)) {
@@ -549,29 +555,29 @@ float RotationBetween(TransInfo *t, float p1[3], float p2[3])
t->con.applyRot(t, NULL, axis, NULL);
- Projf(tmp, end, axis);
- VecSubf(end, end, tmp);
+ project_v3_v3v3(tmp, end, axis);
+ sub_v3_v3v3(end, end, tmp);
- Projf(tmp, start, axis);
- VecSubf(start, start, tmp);
+ project_v3_v3v3(tmp, start, axis);
+ sub_v3_v3v3(start, start, tmp);
- Normalize(end);
- Normalize(start);
+ normalize_v3(end);
+ normalize_v3(start);
- Crossf(tmp, start, end);
+ cross_v3_v3v3(tmp, start, end);
- if (Inpf(tmp, axis) < 0.0)
- angle = -acos(Inpf(start, end));
+ if (dot_v3v3(tmp, axis) < 0.0)
+ angle = -acos(dot_v3v3(start, end));
else
- angle = acos(Inpf(start, end));
+ angle = acos(dot_v3v3(start, end));
}
else {
float mtx[3][3];
- Mat3CpyMat4(mtx, t->viewmat);
+ copy_m3_m4(mtx, t->viewmat);
- Mat3MulVecfl(mtx, end);
- Mat3MulVecfl(mtx, start);
+ mul_m3_v3(mtx, end);
+ mul_m3_v3(mtx, start);
angle = atan2(start[1],start[0]) - atan2(end[1],end[0]);
}
@@ -593,18 +599,18 @@ float ResizeBetween(TransInfo *t, float p1[3], float p2[3])
VECCOPY(center, t->center);
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, center);
+ mul_m4_v3(ob->obmat, center);
}
- VecSubf(d1, p1, center);
- VecSubf(d2, p2, center);
+ sub_v3_v3v3(d1, p1, center);
+ sub_v3_v3v3(d2, p2, center);
if (t->con.applyRot != NULL && (t->con.mode & CON_APPLY)) {
- Mat3MulVecfl(t->con.pmtx, d1);
- Mat3MulVecfl(t->con.pmtx, d2);
+ mul_m3_v3(t->con.pmtx, d1);
+ mul_m3_v3(t->con.pmtx, d2);
}
- return VecLength(d2) / VecLength(d1);
+ return len_v3(d2) / len_v3(d1);
}
/********************** CALC **************************/
@@ -627,7 +633,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
mval[0] = t->mval[0];
mval[1] = t->mval[1];
- if (t->settings->snap_mode == SCE_SNAP_MODE_VOLUME)
+ if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME)
{
ListBase depth_peels;
DepthPeel *p1, *p2;
@@ -685,8 +691,8 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
{
p2->flag = 1;
- VecAddf(vec, p1->p, p2->p);
- VecMulf(vec, 0.5f);
+ add_v3_v3v3(vec, p1->p, p2->p);
+ mul_v3_fl(vec, 0.5f);
}
else
{
@@ -700,7 +706,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
break;
}
- new_dist = VecLenf(last_p, vec);
+ new_dist = len_v3v3(last_p, vec);
if (new_dist < dist)
{
@@ -720,17 +726,17 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
}
else
{
- found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode);
+ found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeSelect);
}
if (found == 1)
{
float tangent[3];
- VecSubf(tangent, loc, t->tsnap.snapPoint);
+ sub_v3_v3v3(tangent, loc, t->tsnap.snapPoint);
tangent[2] = 0;
- if (Inpf(tangent, tangent) > 0)
+ if (dot_v3v3(tangent, tangent) > 0)
{
VECCOPY(t->tsnap.snapTangent, tangent);
}
@@ -759,7 +765,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
t->tsnap.snapPoint[0] *= aspx;
t->tsnap.snapPoint[1] *= aspy;
- Mat4MulVecfl(t->obedit->obmat, t->tsnap.snapPoint);
+ mul_m4_v3(t->obedit->obmat, t->tsnap.snapPoint);
t->tsnap.status |= POINT_INIT;
}
@@ -780,7 +786,7 @@ void TargetSnapCenter(TransInfo *t)
VECCOPY(t->tsnap.snapTarget, t->center);
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, t->tsnap.snapTarget);
+ mul_m4_v3(ob->obmat, t->tsnap.snapTarget);
}
t->tsnap.status |= TARGET_INIT;
@@ -811,7 +817,7 @@ void TargetSnapActive(TransInfo *t)
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, t->tsnap.snapTarget);
+ mul_m4_v3(ob->obmat, t->tsnap.snapTarget);
}
t->tsnap.status |= TARGET_INIT;
@@ -840,14 +846,14 @@ void TargetSnapMedian(TransInfo *t)
for(td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++)
{
- VecAddf(t->tsnap.snapTarget, t->tsnap.snapTarget, td->center);
+ add_v3_v3v3(t->tsnap.snapTarget, t->tsnap.snapTarget, td->center);
}
- VecMulf(t->tsnap.snapTarget, 1.0 / i);
+ mul_v3_fl(t->tsnap.snapTarget, 1.0 / i);
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, t->tsnap.snapTarget);
+ mul_m4_v3(ob->obmat, t->tsnap.snapTarget);
}
t->tsnap.status |= TARGET_INIT;
@@ -879,7 +885,7 @@ void TargetSnapClosest(TransInfo *t)
float dist;
VECCOPY(loc, bb->vec[j]);
- Mat4MulVecfl(td->ext->obmat, loc);
+ mul_m4_v3(td->ext->obmat, loc);
dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint);
@@ -922,7 +928,7 @@ void TargetSnapClosest(TransInfo *t)
if(t->flag & (T_EDIT|T_POSE)) {
Object *ob= t->obedit?t->obedit:t->poseobj;
- Mat4MulVecfl(ob->obmat, loc);
+ mul_m4_v3(ob->obmat, loc);
}
dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint);
@@ -947,7 +953,7 @@ int snapFace(ARegion *ar, float v1co[3], float v2co[3], float v3co[3], float *v4
int result;
int retval = 0;
- result = RayIntersectsTriangleThreshold(ray_start_local, ray_normal_local, v1co, v2co, v3co, &lambda, NULL, 0.001);
+ result = isect_ray_tri_threshold_v3(ray_start_local, ray_normal_local, v1co, v2co, v3co, &lambda, NULL, 0.001);
if (result) {
float location[3], normal[3];
@@ -957,19 +963,19 @@ int snapFace(ARegion *ar, float v1co[3], float v2co[3], float v3co[3], float *v4
int new_dist;
VECCOPY(intersect, ray_normal_local);
- VecMulf(intersect, lambda);
- VecAddf(intersect, intersect, ray_start_local);
+ mul_v3_fl(intersect, lambda);
+ add_v3_v3v3(intersect, intersect, ray_start_local);
VECCOPY(location, intersect);
if (v4co)
- CalcNormFloat4(v1co, v2co, v3co, v4co, normal);
+ normal_quad_v3( normal,v1co, v2co, v3co, v4co);
else
- CalcNormFloat(v1co, v2co, v3co, normal);
+ normal_tri_v3( normal,v1co, v2co, v3co);
- Mat4MulVecfl(obmat, location);
+ mul_m4_v3(obmat, location);
- new_depth = VecLenf(location, ray_start);
+ new_depth = len_v3v3(location, ray_start);
project_int(ar, location, screen_loc);
new_dist = abs(screen_loc[0] - (int)mval[0]) + abs(screen_loc[1] - (int)mval[1]);
@@ -982,8 +988,8 @@ int snapFace(ARegion *ar, float v1co[3], float v2co[3], float v3co[3], float *v4
VECCOPY(loc, location);
VECCOPY(no, normal);
- Mat3MulVecfl(timat, no);
- Normalize(no);
+ mul_m3_v3(timat, no);
+ normalize_v3(no);
*dist = new_dist;
}
@@ -999,10 +1005,10 @@ int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2n
int retval = 0;
VECCOPY(ray_end, ray_normal_local);
- VecMulf(ray_end, 2000);
- VecAddf(ray_end, ray_start_local, ray_end);
+ mul_v3_fl(ray_end, 2000);
+ add_v3_v3v3(ray_end, ray_start_local, ray_end);
- result = LineIntersectLine(v1co, v2co, ray_start_local, ray_end, intersect, dvec); /* dvec used but we don't care about result */
+ result = isect_line_line_v3(v1co, v2co, ray_start_local, ray_end, intersect, dvec); /* dvec used but we don't care about result */
if (result)
{
@@ -1010,12 +1016,12 @@ int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2n
float mul;
/* check for behind ray_start */
- VecSubf(dvec, intersect, ray_start_local);
+ sub_v3_v3v3(dvec, intersect, ray_start_local);
- VecSubf(edge_loc, v1co, v2co);
- VecSubf(vec, intersect, v2co);
+ sub_v3_v3v3(edge_loc, v1co, v2co);
+ sub_v3_v3v3(vec, intersect, v2co);
- mul = Inpf(vec, edge_loc) / Inpf(edge_loc, edge_loc);
+ mul = dot_v3v3(vec, edge_loc) / dot_v3v3(edge_loc, edge_loc);
if (mul > 1) {
mul = 1;
@@ -1026,7 +1032,7 @@ int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2n
VECCOPY(intersect, v2co);
}
- if (Inpf(ray_normal_local, dvec) > 0)
+ if (dot_v3v3(ray_normal_local, dvec) > 0)
{
float location[3];
float new_depth;
@@ -1035,9 +1041,9 @@ int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2n
VECCOPY(location, intersect);
- Mat4MulVecfl(obmat, location);
+ mul_m4_v3(obmat, location);
- new_depth = VecLenf(location, ray_start);
+ new_depth = len_v3v3(location, ray_start);
project_int(ar, location, screen_loc);
new_dist = abs(screen_loc[0] - (int)mval[0]) + abs(screen_loc[1] - (int)mval[1]);
@@ -1053,18 +1059,18 @@ int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2n
*depth = new_depth;
retval = 1;
- VecSubf(edge_loc, v1co, v2co);
- VecSubf(vec, intersect, v2co);
+ sub_v3_v3v3(edge_loc, v1co, v2co);
+ sub_v3_v3v3(vec, intersect, v2co);
- mul = Inpf(vec, edge_loc) / Inpf(edge_loc, edge_loc);
+ mul = dot_v3v3(vec, edge_loc) / dot_v3v3(edge_loc, edge_loc);
if (no)
{
- NormalShortToFloat(n1, v1no);
- NormalShortToFloat(n2, v2no);
- VecLerpf(no, n2, n1, mul);
- Mat3MulVecfl(timat, no);
- Normalize(no);
+ normal_short_to_float_v3(n1, v1no);
+ normal_short_to_float_v3(n2, v2no);
+ interp_v3_v3v3(no, n2, n1, mul);
+ mul_m3_v3(timat, no);
+ normalize_v3(no);
}
VECCOPY(loc, location);
@@ -1082,9 +1088,9 @@ int snapVertex(ARegion *ar, float vco[3], short vno[3], float mval[2], float ray
int retval = 0;
float dvec[3];
- VecSubf(dvec, vco, ray_start_local);
+ sub_v3_v3v3(dvec, vco, ray_start_local);
- if (Inpf(ray_normal_local, dvec) > 0)
+ if (dot_v3v3(ray_normal_local, dvec) > 0)
{
float location[3];
float new_depth;
@@ -1093,9 +1099,9 @@ int snapVertex(ARegion *ar, float vco[3], short vno[3], float mval[2], float ray
VECCOPY(location, vco);
- Mat4MulVecfl(obmat, location);
+ mul_m4_v3(obmat, location);
- new_depth = VecLenf(location, ray_start);
+ new_depth = len_v3v3(location, ray_start);
project_int(ar, location, screen_loc);
new_dist = abs(screen_loc[0] - (int)mval[0]) + abs(screen_loc[1] - (int)mval[1]);
@@ -1109,9 +1115,9 @@ int snapVertex(ARegion *ar, float vco[3], short vno[3], float mval[2], float ray
if (no)
{
- NormalShortToFloat(no, vno);
- Mat3MulVecfl(timat, no);
- Normalize(no);
+ normal_short_to_float_v3(no, vno);
+ mul_m3_v3(timat, no);
+ normalize_v3(no);
}
*dist = new_dist;
@@ -1127,13 +1133,13 @@ int snapArmature(short snap_mode, ARegion *ar, Object *ob, bArmature *arm, float
float ray_start_local[3], ray_normal_local[3];
int retval = 0;
- Mat4Invert(imat, obmat);
+ invert_m4_m4(imat, obmat);
VECCOPY(ray_start_local, ray_start);
VECCOPY(ray_normal_local, ray_normal);
- Mat4MulVecfl(imat, ray_start_local);
- Mat4Mul3Vecfl(imat, ray_normal_local);
+ mul_m4_v3(imat, ray_start_local);
+ mul_mat3_m4_v3(imat, ray_normal_local);
if(arm->edbo)
{
@@ -1198,16 +1204,16 @@ int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh *dm, E
float ray_start_local[3], ray_normal_local[3];
int test = 1;
- Mat4Invert(imat, obmat);
+ invert_m4_m4(imat, obmat);
- Mat3CpyMat4(timat, imat);
- Mat3Transp(timat);
+ copy_m3_m4(timat, imat);
+ transpose_m3(timat);
VECCOPY(ray_start_local, ray_start);
VECCOPY(ray_normal_local, ray_normal);
- Mat4MulVecfl(imat, ray_start_local);
- Mat4Mul3Vecfl(imat, ray_normal_local);
+ mul_m4_v3(imat, ray_start_local);
+ mul_mat3_m4_v3(imat, ray_normal_local);
/* If number of vert is more than an arbitrary limit,
@@ -1224,6 +1230,35 @@ int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh *dm, E
{
case SCE_SNAP_MODE_FACE:
{
+#if 1 // Added for durian
+ BVHTreeRayHit hit;
+ BVHTreeFromMesh treeData;
+
+ bvhtree_from_mesh_faces(&treeData, dm, 0.0f, 4, 6);
+
+ hit.index = -1;
+ hit.dist = *depth;
+
+ if(treeData.tree && BLI_bvhtree_ray_cast(treeData.tree, ray_start_local, ray_normal_local, 0.0f, &hit, treeData.raycast_callback, &treeData) != -1)
+ {
+ if(hit.dist<=*depth) {
+ *depth= hit.dist;
+ copy_v3_v3(loc, hit.co);
+ copy_v3_v3(no, hit.no);
+
+ /* back to worldspace */
+ mul_m4_v3(obmat, loc);
+ copy_v3_v3(no, hit.no);
+
+ mul_m3_v3(timat, no);
+ normalize_v3(no);
+
+ retval |= 1;
+ }
+ }
+ break;
+
+#else
MVert *verts = dm->getVertArray(dm);
MFace *faces = dm->getFaceArray(dm);
int *index_array = NULL;
@@ -1293,6 +1328,7 @@ int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh *dm, E
{
EM_free_index_arrays();
}
+#endif
break;
}
case SCE_SNAP_MODE_VERTEX:
@@ -1587,16 +1623,16 @@ int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4], float ray_sta
float ray_start_local[3], ray_normal_local[3];
int test = 1;
- Mat4Invert(imat, obmat);
+ invert_m4_m4(imat, obmat);
- Mat3CpyMat4(timat, imat);
- Mat3Transp(timat);
+ copy_m3_m4(timat, imat);
+ transpose_m3(timat);
VECCOPY(ray_start_local, ray_start);
VECCOPY(ray_normal_local, ray_normal);
- Mat4MulVecfl(imat, ray_start_local);
- Mat4Mul3Vecfl(imat, ray_normal_local);
+ mul_m4_v3(imat, ray_start_local);
+ mul_mat3_m4_v3(imat, ray_normal_local);
/* If number of vert is more than an arbitrary limit,
@@ -1618,7 +1654,7 @@ int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4], float ray_sta
int result;
- result = RayIntersectsTriangleThreshold(ray_start_local, ray_normal_local, verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, &lambda, NULL, 0.001);
+ result = isect_ray_tri_threshold_v3(ray_start_local, ray_normal_local, verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, &lambda, NULL, 0.001);
if (result) {
float location[3], normal[3];
@@ -1626,29 +1662,29 @@ int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4], float ray_sta
float new_depth;
VECCOPY(intersect, ray_normal_local);
- VecMulf(intersect, lambda);
- VecAddf(intersect, intersect, ray_start_local);
+ mul_v3_fl(intersect, lambda);
+ add_v3_v3v3(intersect, intersect, ray_start_local);
VECCOPY(location, intersect);
if (f->v4)
- CalcNormFloat4(verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, verts[f->v4].co, normal);
+ normal_quad_v3( normal,verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, verts[f->v4].co);
else
- CalcNormFloat(verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, normal);
+ normal_tri_v3( normal,verts[f->v1].co, verts[f->v2].co, verts[f->v3].co);
- Mat4MulVecfl(obmat, location);
+ mul_m4_v3(obmat, location);
- new_depth = VecLenf(location, ray_start);
+ new_depth = len_v3v3(location, ray_start);
- Mat3MulVecfl(timat, normal);
- Normalize(normal);
+ mul_m3_v3(timat, normal);
+ normalize_v3(normal);
addDepthPeel(depth_peels, new_depth, location, normal, ob);
}
if (f->v4 && result == 0)
{
- result = RayIntersectsTriangleThreshold(ray_start_local, ray_normal_local, verts[f->v3].co, verts[f->v4].co, verts[f->v1].co, &lambda, NULL, 0.001);
+ result = isect_ray_tri_threshold_v3(ray_start_local, ray_normal_local, verts[f->v3].co, verts[f->v4].co, verts[f->v1].co, &lambda, NULL, 0.001);
if (result) {
float location[3], normal[3];
@@ -1656,22 +1692,22 @@ int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4], float ray_sta
float new_depth;
VECCOPY(intersect, ray_normal_local);
- VecMulf(intersect, lambda);
- VecAddf(intersect, intersect, ray_start_local);
+ mul_v3_fl(intersect, lambda);
+ add_v3_v3v3(intersect, intersect, ray_start_local);
VECCOPY(location, intersect);
if (f->v4)
- CalcNormFloat4(verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, verts[f->v4].co, normal);
+ normal_quad_v3( normal,verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, verts[f->v4].co);
else
- CalcNormFloat(verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, normal);
+ normal_tri_v3( normal,verts[f->v1].co, verts[f->v2].co, verts[f->v3].co);
- Mat4MulVecfl(obmat, location);
+ mul_m4_v3(obmat, location);
- new_depth = VecLenf(location, ray_start);
+ new_depth = len_v3v3(location, ray_start);
- Mat3MulVecfl(timat, normal);
- Normalize(normal);
+ mul_m3_v3(timat, normal);
+ normalize_v3(normal);
addDepthPeel(depth_peels, new_depth, location, normal, ob);
}
@@ -1798,7 +1834,7 @@ void snapGrid(TransInfo *t, float *val) {
GearsType action;
// Only do something if using Snap to Grid
- if (t->tsnap.modePoint != SNAP_GRID)
+ if (t->tsnap.mode != SCE_SNAP_MODE_INCREMENT)
return;
if(t->mode==TFM_ROTATION || t->mode==TFM_WARP || t->mode==TFM_TILT || t->mode==TFM_TRACKBALL || t->mode==TFM_BONE_ROLL)
@@ -1809,10 +1845,10 @@ void snapGrid(TransInfo *t, float *val) {
invert = U.flag & USER_AUTOGRABGRID;
if(invert) {
- action = (t->modifiers & MOD_SNAP_GEARS) ? NO_GEARS: BIG_GEARS;
+ action = (t->modifiers & MOD_SNAP) ? NO_GEARS: BIG_GEARS;
}
else {
- action = (t->modifiers & MOD_SNAP_GEARS) ? BIG_GEARS : NO_GEARS;
+ action = (t->modifiers & MOD_SNAP) ? BIG_GEARS : NO_GEARS;
}
if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) {
diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index fbd12007c16..c5dccc14b03 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -42,7 +42,7 @@
#include "BKE_object.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_editVert.h"
#include "BIF_gl.h"
@@ -251,44 +251,44 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, EditMesh *em, MTFac
if(efa->v4) {
#if 0 /* Simple but slow, better reuse normalized vectors */
- uvang1 = RAD2DEG(Vec2Angle3(tf_uv[3], tf_uv[0], tf_uv[1]));
- ang1 = RAD2DEG(VecAngle3(efa->v4->co, efa->v1->co, efa->v2->co));
+ uvang1 = RAD2DEG(angle_v2v2v2(tf_uv[3], tf_uv[0], tf_uv[1]));
+ ang1 = RAD2DEG(angle_v3v3v3(efa->v4->co, efa->v1->co, efa->v2->co));
- uvang2 = RAD2DEG(Vec2Angle3(tf_uv[0], tf_uv[1], tf_uv[2]));
- ang2 = RAD2DEG(VecAngle3(efa->v1->co, efa->v2->co, efa->v3->co));
+ uvang2 = RAD2DEG(angle_v2v2v2(tf_uv[0], tf_uv[1], tf_uv[2]));
+ ang2 = RAD2DEG(angle_v3v3v3(efa->v1->co, efa->v2->co, efa->v3->co));
- uvang3 = RAD2DEG(Vec2Angle3(tf_uv[1], tf_uv[2], tf_uv[3]));
- ang3 = RAD2DEG(VecAngle3(efa->v2->co, efa->v3->co, efa->v4->co));
+ uvang3 = RAD2DEG(angle_v2v2v2(tf_uv[1], tf_uv[2], tf_uv[3]));
+ ang3 = RAD2DEG(angle_v3v3v3(efa->v2->co, efa->v3->co, efa->v4->co));
- uvang4 = RAD2DEG(Vec2Angle3(tf_uv[2], tf_uv[3], tf_uv[0]));
- ang4 = RAD2DEG(VecAngle3(efa->v3->co, efa->v4->co, efa->v1->co));
+ uvang4 = RAD2DEG(angle_v2v2v2(tf_uv[2], tf_uv[3], tf_uv[0]));
+ ang4 = RAD2DEG(angle_v3v3v3(efa->v3->co, efa->v4->co, efa->v1->co));
#endif
/* uv angles */
- VECSUB2D(av1, tf_uv[3], tf_uv[0]); Normalize2(av1);
- VECSUB2D(av2, tf_uv[0], tf_uv[1]); Normalize2(av2);
- VECSUB2D(av3, tf_uv[1], tf_uv[2]); Normalize2(av3);
- VECSUB2D(av4, tf_uv[2], tf_uv[3]); Normalize2(av4);
+ VECSUB2D(av1, tf_uv[3], tf_uv[0]); normalize_v2(av1);
+ VECSUB2D(av2, tf_uv[0], tf_uv[1]); normalize_v2(av2);
+ VECSUB2D(av3, tf_uv[1], tf_uv[2]); normalize_v2(av3);
+ VECSUB2D(av4, tf_uv[2], tf_uv[3]); normalize_v2(av4);
/* This is the correct angle however we are only comparing angles
- * uvang1 = 90-((NormalizedVecAngle2_2D(av1, av2) * 180.0/M_PI)-90);*/
- uvang1 = NormalizedVecAngle2_2D(av1, av2)*180.0/M_PI;
- uvang2 = NormalizedVecAngle2_2D(av2, av3)*180.0/M_PI;
- uvang3 = NormalizedVecAngle2_2D(av3, av4)*180.0/M_PI;
- uvang4 = NormalizedVecAngle2_2D(av4, av1)*180.0/M_PI;
+ * uvang1 = 90-((angle_normalized_v2v2(av1, av2) * 180.0/M_PI)-90);*/
+ uvang1 = angle_normalized_v2v2(av1, av2)*180.0/M_PI;
+ uvang2 = angle_normalized_v2v2(av2, av3)*180.0/M_PI;
+ uvang3 = angle_normalized_v2v2(av3, av4)*180.0/M_PI;
+ uvang4 = angle_normalized_v2v2(av4, av1)*180.0/M_PI;
/* 3d angles */
- VECSUB(av1, efa->v4->co, efa->v1->co); Normalize(av1);
- VECSUB(av2, efa->v1->co, efa->v2->co); Normalize(av2);
- VECSUB(av3, efa->v2->co, efa->v3->co); Normalize(av3);
- VECSUB(av4, efa->v3->co, efa->v4->co); Normalize(av4);
+ VECSUB(av1, efa->v4->co, efa->v1->co); normalize_v3(av1);
+ VECSUB(av2, efa->v1->co, efa->v2->co); normalize_v3(av2);
+ VECSUB(av3, efa->v2->co, efa->v3->co); normalize_v3(av3);
+ VECSUB(av4, efa->v3->co, efa->v4->co); normalize_v3(av4);
/* This is the correct angle however we are only comparing angles
- * ang1 = 90-((NormalizedVecAngle2(av1, av2) * 180.0/M_PI)-90);*/
- ang1 = NormalizedVecAngle2(av1, av2)*180.0/M_PI;
- ang2 = NormalizedVecAngle2(av2, av3)*180.0/M_PI;
- ang3 = NormalizedVecAngle2(av3, av4)*180.0/M_PI;
- ang4 = NormalizedVecAngle2(av4, av1)*180.0/M_PI;
+ * ang1 = 90-((angle_normalized_v3v3(av1, av2) * 180.0/M_PI)-90);*/
+ ang1 = angle_normalized_v3v3(av1, av2)*180.0/M_PI;
+ ang2 = angle_normalized_v3v3(av2, av3)*180.0/M_PI;
+ ang3 = angle_normalized_v3v3(av3, av4)*180.0/M_PI;
+ ang4 = angle_normalized_v3v3(av4, av1)*180.0/M_PI;
glBegin(GL_QUADS);
@@ -315,36 +315,36 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, EditMesh *em, MTFac
}
else {
#if 0 /* Simple but slow, better reuse normalized vectors */
- uvang1 = RAD2DEG(Vec2Angle3(tf_uv[2], tf_uv[0], tf_uv[1]));
- ang1 = RAD2DEG(VecAngle3(efa->v3->co, efa->v1->co, efa->v2->co));
+ uvang1 = RAD2DEG(angle_v2v2v2(tf_uv[2], tf_uv[0], tf_uv[1]));
+ ang1 = RAD2DEG(angle_v3v3v3(efa->v3->co, efa->v1->co, efa->v2->co));
- uvang2 = RAD2DEG(Vec2Angle3(tf_uv[0], tf_uv[1], tf_uv[2]));
- ang2 = RAD2DEG(VecAngle3(efa->v1->co, efa->v2->co, efa->v3->co));
+ uvang2 = RAD2DEG(angle_v2v2v2(tf_uv[0], tf_uv[1], tf_uv[2]));
+ ang2 = RAD2DEG(angle_v3v3v3(efa->v1->co, efa->v2->co, efa->v3->co));
uvang3 = M_PI-(uvang1+uvang2);
ang3 = M_PI-(ang1+ang2);
#endif
/* uv angles */
- VECSUB2D(av1, tf_uv[2], tf_uv[0]); Normalize2(av1);
- VECSUB2D(av2, tf_uv[0], tf_uv[1]); Normalize2(av2);
- VECSUB2D(av3, tf_uv[1], tf_uv[2]); Normalize2(av3);
+ VECSUB2D(av1, tf_uv[2], tf_uv[0]); normalize_v2(av1);
+ VECSUB2D(av2, tf_uv[0], tf_uv[1]); normalize_v2(av2);
+ VECSUB2D(av3, tf_uv[1], tf_uv[2]); normalize_v2(av3);
/* This is the correct angle however we are only comparing angles
- * uvang1 = 90-((NormalizedVecAngle2_2D(av1, av2) * 180.0/M_PI)-90); */
- uvang1 = NormalizedVecAngle2_2D(av1, av2)*180.0/M_PI;
- uvang2 = NormalizedVecAngle2_2D(av2, av3)*180.0/M_PI;
- uvang3 = NormalizedVecAngle2_2D(av3, av1)*180.0/M_PI;
+ * uvang1 = 90-((angle_normalized_v2v2(av1, av2) * 180.0/M_PI)-90); */
+ uvang1 = angle_normalized_v2v2(av1, av2)*180.0/M_PI;
+ uvang2 = angle_normalized_v2v2(av2, av3)*180.0/M_PI;
+ uvang3 = angle_normalized_v2v2(av3, av1)*180.0/M_PI;
/* 3d angles */
- VECSUB(av1, efa->v3->co, efa->v1->co); Normalize(av1);
- VECSUB(av2, efa->v1->co, efa->v2->co); Normalize(av2);
- VECSUB(av3, efa->v2->co, efa->v3->co); Normalize(av3);
+ VECSUB(av1, efa->v3->co, efa->v1->co); normalize_v3(av1);
+ VECSUB(av2, efa->v1->co, efa->v2->co); normalize_v3(av2);
+ VECSUB(av3, efa->v2->co, efa->v3->co); normalize_v3(av3);
/* This is the correct angle however we are only comparing angles
- * ang1 = 90-((NormalizedVecAngle2(av1, av2) * 180.0/M_PI)-90); */
- ang1 = NormalizedVecAngle2(av1, av2)*180.0/M_PI;
- ang2 = NormalizedVecAngle2(av2, av3)*180.0/M_PI;
- ang3 = NormalizedVecAngle2(av3, av1)*180.0/M_PI;
+ * ang1 = 90-((angle_normalized_v3v3(av1, av2) * 180.0/M_PI)-90); */
+ ang1 = angle_normalized_v3v3(av1, av2)*180.0/M_PI;
+ ang2 = angle_normalized_v3v3(av2, av3)*180.0/M_PI;
+ ang3 = angle_normalized_v3v3(av3, av1)*180.0/M_PI;
/* This simple makes the angles display worse then they really are ;)
* 1.0-pow((1.0-a), 2) */
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index f9a849798be..623ddaae188 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -41,7 +41,7 @@
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -359,9 +359,9 @@ void uv_center(float uv[][2], float cent[2], int quad)
float uv_area(float uv[][2], int quad)
{
if(quad)
- return AreaF2Dfl(uv[0], uv[1], uv[2]) + AreaF2Dfl(uv[0], uv[2], uv[3]);
+ return area_tri_v2(uv[0], uv[1], uv[2]) + area_tri_v2(uv[0], uv[2], uv[3]);
else
- return AreaF2Dfl(uv[0], uv[1], uv[2]);
+ return area_tri_v2(uv[0], uv[1], uv[2]);
}
void uv_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy)
@@ -473,7 +473,7 @@ static void find_nearest_uv_edge(Scene *scene, Image *ima, EditMesh *em, float c
nverts= efa->v4? 4: 3;
for(i=0; i<nverts; i++) {
- dist= PdistVL2Dfl(co, tf->uv[i], tf->uv[(i+1)%nverts]);
+ dist= dist_to_line_segment_v2(co, tf->uv[i], tf->uv[(i+1)%nverts]);
if(dist < mindist) {
hit->tf= tf;
@@ -534,8 +534,8 @@ static int nearest_uv_between(MTFace *tf, int nverts, int id, float co[2], float
m[0]= co[0]-uv[0];
m[1]= co[1]-uv[1];
- Vec2Subf(v1, tf->uv[id1], tf->uv[id]);
- Vec2Subf(v2, tf->uv[id2], tf->uv[id]);
+ sub_v2_v2v2(v1, tf->uv[id1], tf->uv[id]);
+ sub_v2_v2v2(v2, tf->uv[id2], tf->uv[id]);
/* m and v2 on same side of v-v1? */
c1= v1[0]*m[1] - v1[1]*m[0];
@@ -3144,6 +3144,9 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf)
/* cursor */
WM_keymap_add_item(keymap, "UV_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "UV_OT_tile_set", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
+
+ /* menus */
+ WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
ED_object_generic_keymap(keyconf, keymap, TRUE);
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 20f74085e52..85ccef5cd7d 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -2,7 +2,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_memarena.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_heap.h"
#include "BLI_boxpack2d.h"
@@ -333,8 +333,8 @@ static float p_vec_angle_cos(float *v1, float *v2, float *v3)
d2[1] = v3[1] - v2[1];
d2[2] = v3[2] - v2[2];
- Normalize(d1);
- Normalize(d2);
+ normalize_v3(d1);
+ normalize_v3(d2);
return d1[0]*d2[0] + d1[1]*d2[1] + d1[2]*d2[2];
}
@@ -382,7 +382,7 @@ static float p_face_area(PFace *f)
PEdge *e1 = f->edge, *e2 = e1->next, *e3 = e2->next;
PVert *v1 = e1->vert, *v2 = e2->vert, *v3 = e3->vert;
- return AreaT3Dfl(v1->co, v2->co, v3->co);
+ return area_tri_v3(v1->co, v2->co, v3->co);
}
static float p_area_signed(float *v1, float *v2, float *v3)
@@ -1099,7 +1099,7 @@ static PFace *p_face_add_fill(PChart *chart, PVert *v1, PVert *v2, PVert *v3)
static PBool p_quad_split_direction(PHandle *handle, float **co, PHashKey *vkeys)
{
- float fac= VecLenf(co[0], co[2]) - VecLenf(co[1], co[3]);
+ float fac= len_v3v3(co[0], co[2]) - len_v3v3(co[1], co[3]);
PBool dir = (fac <= 0.0f);
/* the face exists check is there because of a special case: when
@@ -1414,16 +1414,16 @@ static float p_vert_cotan(float *v1, float *v2, float *v3)
{
float a[3], b[3], c[3], clen;
- VecSubf(a, v2, v1);
- VecSubf(b, v3, v1);
- Crossf(c, a, b);
+ sub_v3_v3v3(a, v2, v1);
+ sub_v3_v3v3(b, v3, v1);
+ cross_v3_v3v3(c, a, b);
- clen = VecLength(c);
+ clen = len_v3(c);
if (clen == 0.0f)
return 0.0f;
- return Inpf(a, b)/clen;
+ return dot_v3v3(a, b)/clen;
}
static PBool p_vert_flipped_wheel_triangle(PVert *v)
@@ -1752,15 +1752,15 @@ static PBool p_collapse_normal_flipped(float *v1, float *v2, float *vold, float
{
float nold[3], nnew[3], sub1[3], sub2[3];
- VecSubf(sub1, vold, v1);
- VecSubf(sub2, vold, v2);
- Crossf(nold, sub1, sub2);
+ sub_v3_v3v3(sub1, vold, v1);
+ sub_v3_v3v3(sub2, vold, v2);
+ cross_v3_v3v3(nold, sub1, sub2);
- VecSubf(sub1, vnew, v1);
- VecSubf(sub2, vnew, v2);
- Crossf(nnew, sub1, sub2);
+ sub_v3_v3v3(sub1, vnew, v1);
+ sub_v3_v3v3(sub2, vnew, v2);
+ cross_v3_v3v3(nnew, sub1, sub2);
- return (Inpf(nold, nnew) <= 0.0f);
+ return (dot_v3v3(nold, nnew) <= 0.0f);
}
static PBool p_collapse_allowed_geometric(PEdge *edge, PEdge *pair)
@@ -1866,7 +1866,7 @@ static float p_collapse_cost(PEdge *edge, PEdge *pair)
oldf1 = (edge)? edge->face: NULL;
oldf2 = (pair)? pair->face: NULL;
- VecSubf(edgevec, keepv->co, oldv->co);
+ sub_v3_v3v3(edgevec, keepv->co, oldv->co);
e = oldv->edge;
do {
@@ -1878,16 +1878,16 @@ static float p_collapse_cost(PEdge *edge, PEdge *pair)
float tetrav2[3], tetrav3[3], c[3];
/* tetrahedron volume = (1/3!)*|a.(b x c)| */
- VecSubf(tetrav2, co1, oldv->co);
- VecSubf(tetrav3, co2, oldv->co);
- Crossf(c, tetrav2, tetrav3);
+ sub_v3_v3v3(tetrav2, co1, oldv->co);
+ sub_v3_v3v3(tetrav3, co2, oldv->co);
+ cross_v3_v3v3(c, tetrav2, tetrav3);
- volumecost += fabs(Inpf(edgevec, c)/6.0f);
+ volumecost += fabs(dot_v3v3(edgevec, c)/6.0f);
#if 0
- shapecost += Inpf(co1, keepv->co);
+ shapecost += dot_v3v3(co1, keepv->co);
if (p_wheel_edge_next(e) == NULL)
- shapecost += Inpf(co2, keepv->co);
+ shapecost += dot_v3v3(co2, keepv->co);
#endif
p_triangle_angles(oldv->co, co1, co2, &a1, &a2, &a3);
@@ -1915,10 +1915,10 @@ static float p_collapse_cost(PEdge *edge, PEdge *pair)
PVert *v1 = p_boundary_edge_prev(oldv->edge)->vert;
PVert *v2 = p_boundary_edge_next(oldv->edge)->vert;
- areacost = AreaT3Dfl(oldv->co, v1->co, v2->co);
+ areacost = area_tri_v3(oldv->co, v1->co, v2->co);
}
- elen = VecLength(edgevec);
+ elen = len_v3(edgevec);
weight = 1.0f; /* 0.2f */
cost = weight*volumecost*volumecost + elen*elen*areacost*areacost;
#if 0
@@ -2750,7 +2750,7 @@ static void p_chart_pin_positions(PChart *chart, PVert **pin1, PVert **pin2)
int diru, dirv, dirx, diry;
float sub[3];
- VecSubf(sub, (*pin1)->co, (*pin2)->co);
+ sub_v3_v3v3(sub, (*pin1)->co, (*pin2)->co);
sub[0] = fabs(sub[0]);
sub[1] = fabs(sub[1]);
sub[2] = fabs(sub[2]);
@@ -3185,35 +3185,35 @@ static float p_face_stretch(PFace *f)
w= 1.0f/(2.0f*area);
/* compute derivatives */
- VecCopyf(Ps, v1->co);
- VecMulf(Ps, (v2->uv[1] - v3->uv[1]));
+ copy_v3_v3(Ps, v1->co);
+ mul_v3_fl(Ps, (v2->uv[1] - v3->uv[1]));
- VecCopyf(tmp, v2->co);
- VecMulf(tmp, (v3->uv[1] - v1->uv[1]));
- VecAddf(Ps, Ps, tmp);
+ copy_v3_v3(tmp, v2->co);
+ mul_v3_fl(tmp, (v3->uv[1] - v1->uv[1]));
+ add_v3_v3v3(Ps, Ps, tmp);
- VecCopyf(tmp, v3->co);
- VecMulf(tmp, (v1->uv[1] - v2->uv[1]));
- VecAddf(Ps, Ps, tmp);
+ copy_v3_v3(tmp, v3->co);
+ mul_v3_fl(tmp, (v1->uv[1] - v2->uv[1]));
+ add_v3_v3v3(Ps, Ps, tmp);
- VecMulf(Ps, w);
+ mul_v3_fl(Ps, w);
- VecCopyf(Pt, v1->co);
- VecMulf(Pt, (v3->uv[0] - v2->uv[0]));
+ copy_v3_v3(Pt, v1->co);
+ mul_v3_fl(Pt, (v3->uv[0] - v2->uv[0]));
- VecCopyf(tmp, v2->co);
- VecMulf(tmp, (v1->uv[0] - v3->uv[0]));
- VecAddf(Pt, Pt, tmp);
+ copy_v3_v3(tmp, v2->co);
+ mul_v3_fl(tmp, (v1->uv[0] - v3->uv[0]));
+ add_v3_v3v3(Pt, Pt, tmp);
- VecCopyf(tmp, v3->co);
- VecMulf(tmp, (v2->uv[0] - v1->uv[0]));
- VecAddf(Pt, Pt, tmp);
+ copy_v3_v3(tmp, v3->co);
+ mul_v3_fl(tmp, (v2->uv[0] - v1->uv[0]));
+ add_v3_v3v3(Pt, Pt, tmp);
- VecMulf(Pt, w);
+ mul_v3_fl(Pt, w);
/* Sander Tensor */
- a= Inpf(Ps, Ps);
- c= Inpf(Pt, Pt);
+ a= dot_v3v3(Ps, Ps);
+ c= dot_v3v3(Pt, Pt);
T = sqrt(0.5f*(a + c));
if (f->flag & PFACE_FILLED)
@@ -3273,7 +3273,7 @@ static void p_chart_stretch_minimize(PChart *chart, RNG *rng)
low = 0;
stretch_low = orig_stretch;
- Vec2Addf(v->uv, orig_uv, dir);
+ add_v2_v2v2(v->uv, orig_uv, dir);
high = 1;
stretch = stretch_high = p_stretch_compute_vertex(v);
@@ -3296,7 +3296,7 @@ static void p_chart_stretch_minimize(PChart *chart, RNG *rng)
/* no luck, stretch has increased, reset to old values */
if(stretch >= orig_stretch)
- Vec2Copyf(v->uv, orig_uv);
+ copy_v2_v2(v->uv, orig_uv);
}
}
@@ -3404,7 +3404,7 @@ static float p_rectangle_area(float *p1, float *dir, float *p2, float *p3, float
if (!p_intersect_line_2d_dir(p3, dir, p4, orthodir, corner3))
return 1e10;
- return Vec2Lenf(corner1, corner2)*Vec2Lenf(corner2, corner3);
+ return len_v2v2(corner1, corner2)*len_v2v2(corner2, corner3);
}
static float p_chart_minimum_area_angle(PChart *chart)
@@ -3499,7 +3499,7 @@ static float p_chart_minimum_area_angle(PChart *chart)
p3 = points[idx[(mini+2)%4]];
p4 = points[idx[(mini+3)%4]];
- len = Vec2Lenf(p1->uv, p1n->uv);
+ len = len_v2v2(p1->uv, p1n->uv);
if (len > 0.0f) {
len = 1.0/len;
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index 29d9bb4864e..e5881415100 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -48,7 +48,7 @@
#include "BKE_mesh.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "BLI_editVert.h"
@@ -563,7 +563,7 @@ static void uv_map_transform_center(Scene *scene, View3D *v3d, float *result, Ob
if(efa->v4) DO_MINMAX(efa->v4->co, min, max);
}
}
- VecMidf(result, min, max);
+ mid_v3_v3v3(result, min, max);
break;
case V3D_CURSOR: /*cursor center*/
@@ -590,23 +590,23 @@ static void uv_map_rotation_matrix(float result[][4], RegionView3D *rv3d, Object
/* get rotation of the current view matrix */
if(rv3d)
- Mat4CpyMat4(viewmatrix, rv3d->viewmat);
+ copy_m4_m4(viewmatrix, rv3d->viewmat);
else
- Mat4One(viewmatrix);
+ unit_m4(viewmatrix);
/* but shifting */
for(k=0; k<4; k++)
viewmatrix[3][k] =0.0f;
/* get rotation of the current object matrix */
- Mat4CpyMat4(rotobj,ob->obmat);
+ copy_m4_m4(rotobj,ob->obmat);
/* but shifting */
for(k=0; k<4; k++)
rotobj[3][k] =0.0f;
- Mat4Clr(*rotup);
- Mat4Clr(*rotside);
+ zero_m4(rotup);
+ zero_m4(rotside);
/* compensate front/side.. against opengl x,y,z world definition */
/* this is "kanonen gegen spatzen", a few plus minus 1 will do here */
@@ -626,7 +626,7 @@ static void uv_map_rotation_matrix(float result[][4], RegionView3D *rv3d, Object
rotup[0][0]= (float)1.0f/radius;
/* calculate transforms*/
- Mat4MulSerie(result, rotup, rotside, viewmatrix, rotobj, NULL, NULL, NULL, NULL);
+ mul_serie_m4(result, rotup, rotside, viewmatrix, rotobj, NULL, NULL, NULL, NULL);
}
static void uv_map_transform(bContext *C, wmOperator *op, float center[3], float rotmat[4][4])
@@ -657,7 +657,7 @@ static void uv_map_transform(bContext *C, wmOperator *op, float center[3], float
/* be compatible to the "old" sphere/cylinder mode */
if(direction == ALIGN_TO_OBJECT)
- Mat4One(rotmat);
+ unit_m4(rotmat);
else
uv_map_rotation_matrix(rotmat, rv3d, obedit, upangledeg, sideangledeg, radius);
@@ -873,7 +873,7 @@ static void uv_from_view_bounds(float target[2], float source[3], float rotmat[4
{
float pv[3];
- Mat4MulVecfl(rotmat, pv);
+ mul_m4_v3(rotmat, pv);
/* ortho projection */
target[0] = -pv[0];
@@ -885,19 +885,19 @@ static void uv_from_view(ARegion *ar, float target[2], float source[3], float ro
RegionView3D *rv3d= ar->regiondata;
float pv[3], pv4[4], dx, dy, x= 0.0, y= 0.0;
- Mat4MulVecfl(rotmat, pv);
+ mul_m4_v3(rotmat, pv);
dx= ar->winx;
dy= ar->winy;
- VecCopyf(pv4, source);
+ copy_v3_v3(pv4, source);
pv4[3]= 1.0;
/* rotmat is the object matrix in this case */
- Mat4MulVec4fl(rotmat, pv4);
+ mul_m4_v4(rotmat, pv4);
/* almost project_short */
- Mat4MulVec4fl(rv3d->persmat, pv4);
+ mul_m4_v4(rv3d->persmat, pv4);
if(fabs(pv4[3]) > 0.00001) { /* avoid division by zero */
target[0] = dx/2.0 + (dx/2.0)*pv4[0]/pv4[3];
target[1] = dy/2.0 + (dy/2.0)*pv4[1]/pv4[3];
@@ -954,7 +954,7 @@ static int from_view_exec(bContext *C, wmOperator *op)
}
}
else {
- Mat4CpyMat4(rotmat, obedit->obmat);
+ copy_m4_m4(rotmat, obedit->obmat);
for(efa= em->faces.first; efa; efa= efa->next) {
if(efa->f & SELECT) {
@@ -1063,10 +1063,10 @@ static void uv_sphere_project(float target[2], float source[3], float center[3],
{
float pv[3];
- VecSubf(pv, source, center);
- Mat4MulVecfl(rotmat, pv);
+ sub_v3_v3v3(pv, source, center);
+ mul_m4_v3(rotmat, pv);
- spheremap(pv[0], pv[1], pv[2], &target[0], &target[1]);
+ map_to_sphere( &target[0], &target[1],pv[0], pv[1], pv[2]);
/* split line is always zero */
if(target[0] >= 1.0f)
@@ -1155,10 +1155,10 @@ static void uv_cylinder_project(float target[2], float source[3], float center[3
{
float pv[3];
- VecSubf(pv, source, center);
- Mat4MulVecfl(rotmat, pv);
+ sub_v3_v3v3(pv, source, center);
+ mul_m4_v3(rotmat, pv);
- tubemap(pv[0], pv[1], pv[2], &target[0], &target[1]);
+ map_to_tube( &target[0], &target[1],pv[0], pv[1], pv[2]);
/* split line is always zero */
if(target[0] >= 1.0f)
@@ -1248,7 +1248,7 @@ static int cube_project_exec(bContext *C, wmOperator *op)
for(efa= em->faces.first; efa; efa= efa->next) {
if(efa->f & SELECT) {
tf= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
- CalcNormFloat(efa->v1->co, efa->v2->co, efa->v3->co, no);
+ normal_tri_v3( no,efa->v1->co, efa->v2->co, efa->v3->co);
no[0]= fabs(no[0]);
no[1]= fabs(no[1]);
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
index f70cdaf8720..114dd1bc7e2 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
@@ -66,7 +66,7 @@ void BlenderFileLoader::insertShapeNode(ObjectRen *obr, int id)
// M allows to recover world coordinates from camera coordinates
// M => obr->ob->imat * obr->obmat (multiplication from left to right)
float M[4][4];
- Mat4MulMat4(M, obr->ob->imat, obr->ob->obmat);
+ mul_m4_m4m4(M, obr->ob->imat, obr->ob->obmat);
// We compute a normal per vertex and manages the smoothing of the shape:
// Lib3dsVector *normalL=(Lib3dsVector*)malloc(3*sizeof(Lib3dsVector)*mesh->faces);
@@ -128,7 +128,7 @@ void BlenderFileLoader::insertShapeNode(ObjectRen *obr, int id)
pvtmp[1] = obr->vertnodes[0].vert->co[1];
pvtmp[2] = obr->vertnodes[0].vert->co[2];
- Mat4MulVecfl( M, pvtmp);
+ mul_m4_v3( M, pvtmp);
minBBox[0] = pvtmp[0];
maxBBox[0] = pvtmp[0];
@@ -197,7 +197,7 @@ void BlenderFileLoader::insertShapeNode(ObjectRen *obr, int id)
//lib3ds_vector_transform(pv, M, mesh->pointL[f->points[i]].pos); //fills the cells of the pv array
for(j=0; j<3; j++)
pv[j] = fv[i]->co[j];
- Mat4MulVecfl( M, pv);
+ mul_m4_v3( M, pv);
for(j=0; j<3; j++) // we parse the xyz coordinates of the vertex i
{
@@ -234,8 +234,8 @@ void BlenderFileLoader::insertShapeNode(ObjectRen *obr, int id)
vec02[2] = pv_ptr[2][2] - pv_ptr[0][2];
float n[3];
- Crossf(n, vec01, vec02);
- Normalize(n);
+ cross_v3_v3v3(n, vec01, vec02);
+ normalize_v3(n);
for(i=0; i<3; ++i) {
for(j=0; j<3; ++j) {
@@ -277,7 +277,7 @@ void BlenderFileLoader::insertShapeNode(ObjectRen *obr, int id)
//lib3ds_vector_transform(pv, M, mesh->pointL[f->points[i]].pos); //fills the cells of the pv array
for(j=0; j<3; j++)
pv[j] = fv[i]->co[j];
- Mat4MulVecfl( M, pv);
+ mul_m4_v3( M, pv);
for(j=0; j<3; j++) // we parse the xyz coordinates of the vertex i
{
@@ -314,8 +314,8 @@ void BlenderFileLoader::insertShapeNode(ObjectRen *obr, int id)
vec02[2] = pv_ptr[2][2] - pv_ptr[0][2];
float n[3];
- Crossf(n, vec01, vec02);
- Normalize(n);
+ cross_v3_v3v3(n, vec01, vec02);
+ normalize_v3(n);
for(i=0; i<3; ++i) {
for(j=0; j<3; ++j) {
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
index e1a818b4a7f..8068eaf1bcf 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
@@ -24,7 +24,7 @@ extern "C" {
#include "BKE_mesh.h"
#include "BKE_scene.h"
- #include "BLI_arithb.h"
+ #include "BLI_math.h"
#ifdef __cplusplus
}
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 279596e5ad7..b6e523fca70 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -30,5 +30,7 @@ SET(INC
. ../blenlib ../blenkernel ../makesdna ../include
../../../extern/glew/include ../../../intern/guardedalloc ../../../intern/smoke/extern ../imbuf)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
BLENDERLIB(bf_gpu "${SRC}" "${INC}")
diff --git a/source/blender/gpu/SConscript b/source/blender/gpu/SConscript
index 7e700c177e4..98f57f336ab 100644
--- a/source/blender/gpu/SConscript
+++ b/source/blender/gpu/SConscript
@@ -3,9 +3,11 @@ Import ('env')
sources = env.Glob('intern/*.c')
+defs = [ 'GLEW_STATIC' ]
+
incs = '../blenlib ../blenkernel ../makesdna ../include'
incs += ' #/extern/glew/include #intern/guardedalloc #intern/smoke/extern ../imbuf .'
incs += ' ' + env['BF_OPENGL_INC']
-env.BlenderLib ( 'bf_gpu', sources, Split(incs), [], libtype=['core','player'], priority=[160,110] )
+env.BlenderLib ( 'bf_gpu', sources, Split(incs), defines = defs, libtype=['core','player'], priority=[160,110] )
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index 9e164f46e4c..a59c263055d 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -36,7 +36,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_meshdata_types.h"
@@ -545,9 +545,9 @@ void GPU_buffer_copy_normal( DerivedMesh *dm, float *varray, int *index, int *re
VECCOPY(&varray[start+6],&nors[i*3]);
}
if( mface[i].v4 )
- CalcNormFloat4(mvert[mface[i].v1].co, mvert[mface[i].v2].co, mvert[mface[i].v3].co, mvert[mface[i].v4].co, norm);
+ normal_quad_v3( norm,mvert[mface[i].v1].co, mvert[mface[i].v2].co, mvert[mface[i].v3].co, mvert[mface[i].v4].co);
else
- CalcNormFloat(mvert[mface[i].v1].co, mvert[mface[i].v2].co, mvert[mface[i].v3].co, norm);
+ normal_tri_v3( norm,mvert[mface[i].v1].co, mvert[mface[i].v2].co, mvert[mface[i].v3].co);
VECCOPY(&varray[start],norm);
VECCOPY(&varray[start+3],norm);
VECCOPY(&varray[start+6],norm);
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c
index 0650a0bfa19..3da83d557a3 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -54,7 +54,7 @@
#include "BKE_texture.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "GPU_extensions.h"
@@ -290,7 +290,7 @@ void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[][4], float v
GPU_shader_uniform_vector(shader, material->obmatloc, 16, 1, (float*)obmat);
}
if(material->builtins & GPU_INVERSE_OBJECT_MATRIX) {
- Mat4Invert(invmat, obmat);
+ invert_m4_m4(invmat, obmat);
GPU_shader_uniform_vector(shader, material->invobmatloc, 16, 1, (float*)invmat);
}
if(material->builtins & GPU_OBCOLOR) {
@@ -305,20 +305,20 @@ void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[][4], float v
if(material->dynproperty & DYN_LAMP_VEC) {
VECCOPY(lamp->dynvec, lamp->vec);
- Normalize(lamp->dynvec);
- VecNegf(lamp->dynvec);
- Mat4Mul3Vecfl(viewmat, lamp->dynvec);
+ normalize_v3(lamp->dynvec);
+ negate_v3(lamp->dynvec);
+ mul_mat3_m4_v3(viewmat, lamp->dynvec);
}
if(material->dynproperty & DYN_LAMP_CO) {
VECCOPY(lamp->dynco, lamp->co);
- Mat4MulVecfl(viewmat, lamp->dynco);
+ mul_m4_v3(viewmat, lamp->dynco);
}
if(material->dynproperty & DYN_LAMP_IMAT)
- Mat4MulMat4(lamp->dynimat, viewinv, lamp->imat);
+ mul_m4_m4m4(lamp->dynimat, viewinv, lamp->imat);
if(material->dynproperty & DYN_LAMP_PERSMAT)
- Mat4MulMat4(lamp->dynpersmat, viewinv, lamp->persmat);
+ mul_m4_m4m4(lamp->dynpersmat, viewinv, lamp->persmat);
}
GPU_pass_update_uniforms(material->pass);
@@ -782,7 +782,7 @@ static void material_lights(GPUShadeInput *shi, GPUShadeResult *shr)
Object *ob = dob->ob;
if(ob->type==OB_LAMP) {
- Mat4CpyMat4(ob->obmat, dob->mat);
+ copy_m4_m4(ob->obmat, dob->mat);
lamp = GPU_lamp_from_blender(shi->gpumat->scene, ob, base->object);
if(lamp)
@@ -1318,13 +1318,13 @@ void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4])
lamp->lay = lay;
- Mat4CpyMat4(mat, obmat);
- Mat4Ortho(mat);
+ copy_m4_m4(mat, obmat);
+ normalize_m4(mat);
VECCOPY(lamp->vec, mat[2]);
VECCOPY(lamp->co, mat[3]);
- Mat4CpyMat4(lamp->obmat, mat);
- Mat4Invert(lamp->imat, mat);
+ copy_m4_m4(lamp->obmat, mat);
+ invert_m4_m4(lamp->imat, mat);
}
void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy)
@@ -1388,7 +1388,7 @@ static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *l
pixsize= (lamp->d)/temp;
wsize= pixsize*0.5f*lamp->size;
- i_window(-wsize, wsize, -wsize, wsize, lamp->d, lamp->clipend, lamp->winmat);
+ perspective_m4( lamp->winmat,-wsize, wsize, -wsize, wsize, lamp->d, lamp->clipend);
}
static void gpu_lamp_shadow_free(GPULamp *lamp)
@@ -1489,16 +1489,16 @@ void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize
float rangemat[4][4], persmat[4][4];
/* initshadowbuf */
- Mat4Invert(lamp->viewmat, lamp->obmat);
- Normalize(lamp->viewmat[0]);
- Normalize(lamp->viewmat[1]);
- Normalize(lamp->viewmat[2]);
+ invert_m4_m4(lamp->viewmat, lamp->obmat);
+ normalize_v3(lamp->viewmat[0]);
+ normalize_v3(lamp->viewmat[1]);
+ normalize_v3(lamp->viewmat[2]);
/* makeshadowbuf */
- Mat4MulMat4(persmat, lamp->viewmat, lamp->winmat);
+ mul_m4_m4m4(persmat, lamp->viewmat, lamp->winmat);
/* opengl depth buffer is range 0.0..1.0 instead of -1.0..1.0 in blender */
- Mat4One(rangemat);
+ unit_m4(rangemat);
rangemat[0][0] = 0.5f;
rangemat[1][1] = 0.5f;
rangemat[2][2] = 0.5f;
@@ -1506,15 +1506,15 @@ void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize
rangemat[3][1] = 0.5f;
rangemat[3][2] = 0.5f;
- Mat4MulMat4(lamp->persmat, persmat, rangemat);
+ mul_m4_m4m4(lamp->persmat, persmat, rangemat);
/* opengl */
glDisable(GL_SCISSOR_TEST);
GPU_framebuffer_texture_bind(lamp->fb, lamp->tex);
/* set matrices */
- Mat4CpyMat4(viewmat, lamp->viewmat);
- Mat4CpyMat4(winmat, lamp->winmat);
+ copy_m4_m4(viewmat, lamp->viewmat);
+ copy_m4_m4(winmat, lamp->winmat);
*winsize = lamp->size;
}
diff --git a/source/blender/ikplugin/intern/ikplugin_api.c b/source/blender/ikplugin/intern/ikplugin_api.c
index f106302dbaf..c6ff6377f00 100644
--- a/source/blender/ikplugin/intern/ikplugin_api.c
+++ b/source/blender/ikplugin/intern/ikplugin_api.c
@@ -31,7 +31,7 @@
#include "BIK_api.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_armature.h"
#include "BKE_utildefines.h"
diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c
index 6eb1ef56094..e9378a7e12b 100644
--- a/source/blender/ikplugin/intern/iksolver_plugin.c
+++ b/source/blender/ikplugin/intern/iksolver_plugin.c
@@ -31,7 +31,7 @@
#include "BIK_api.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_armature.h"
#include "BKE_constraint.h"
@@ -179,10 +179,10 @@ static void make_dmats(bPoseChannel *pchan)
{
if (pchan->parent) {
float iR_parmat[4][4];
- Mat4Invert(iR_parmat, pchan->parent->pose_mat);
- Mat4MulMat4(pchan->chan_mat, pchan->pose_mat, iR_parmat); // delta mat
+ invert_m4_m4(iR_parmat, pchan->parent->pose_mat);
+ mul_m4_m4m4(pchan->chan_mat, pchan->pose_mat, iR_parmat); // delta mat
}
- else Mat4CpyMat4(pchan->chan_mat, pchan->pose_mat);
+ else copy_m4_m4(pchan->chan_mat, pchan->pose_mat);
}
/* applies IK matrix to pchan, IK is done separated */
@@ -192,19 +192,19 @@ static void where_is_ik_bone(bPoseChannel *pchan, float ik_mat[][3]) // nr = t
{
float vec[3], ikmat[4][4];
- Mat4CpyMat3(ikmat, ik_mat);
+ copy_m4_m3(ikmat, ik_mat);
if (pchan->parent)
- Mat4MulSerie(pchan->pose_mat, pchan->parent->pose_mat, pchan->chan_mat, ikmat, NULL, NULL, NULL, NULL, NULL);
+ mul_serie_m4(pchan->pose_mat, pchan->parent->pose_mat, pchan->chan_mat, ikmat, NULL, NULL, NULL, NULL, NULL);
else
- Mat4MulMat4(pchan->pose_mat, ikmat, pchan->chan_mat);
+ mul_m4_m4m4(pchan->pose_mat, ikmat, pchan->chan_mat);
/* calculate head */
VECCOPY(pchan->pose_head, pchan->pose_mat[3]);
/* calculate tail */
VECCOPY(vec, pchan->pose_mat[1]);
- VecMulf(vec, pchan->bone->length);
- VecAddf(pchan->pose_tail, pchan->pose_head, vec);
+ mul_v3_fl(vec, pchan->bone->length);
+ add_v3_v3v3(pchan->pose_tail, pchan->pose_head, vec);
pchan->flag |= POSE_DONE;
}
@@ -266,41 +266,41 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
IK_SetParent(seg, parent);
/* get the matrix that transforms from prevbone into this bone */
- Mat3CpyMat4(R_bonemat, pchan->pose_mat);
+ copy_m3_m4(R_bonemat, pchan->pose_mat);
/* gather transformations for this IK segment */
if (pchan->parent)
- Mat3CpyMat4(R_parmat, pchan->parent->pose_mat);
+ copy_m3_m4(R_parmat, pchan->parent->pose_mat);
else
- Mat3One(R_parmat);
+ unit_m3(R_parmat);
/* bone offset */
if (pchan->parent && (a > 0))
- VecSubf(start, pchan->pose_head, pchan->parent->pose_tail);
+ sub_v3_v3v3(start, pchan->pose_head, pchan->parent->pose_tail);
else
/* only root bone (a = 0) has no parent */
start[0]= start[1]= start[2]= 0.0f;
/* change length based on bone size */
- length= bone->length*VecLength(R_bonemat[1]);
+ length= bone->length*len_v3(R_bonemat[1]);
/* compute rest basis and its inverse */
- Mat3CpyMat3(rest_basis, bone->bone_mat);
- Mat3CpyMat3(irest_basis, bone->bone_mat);
- Mat3Transp(irest_basis);
+ copy_m3_m3(rest_basis, bone->bone_mat);
+ copy_m3_m3(irest_basis, bone->bone_mat);
+ transpose_m3(irest_basis);
/* compute basis with rest_basis removed */
- Mat3Inv(iR_parmat, R_parmat);
- Mat3MulMat3(full_basis, iR_parmat, R_bonemat);
- Mat3MulMat3(basis, irest_basis, full_basis);
+ invert_m3_m3(iR_parmat, R_parmat);
+ mul_m3_m3m3(full_basis, iR_parmat, R_bonemat);
+ mul_m3_m3m3(basis, irest_basis, full_basis);
/* basis must be pure rotation */
- Mat3Ortho(basis);
+ normalize_m3(basis);
/* transform offset into local bone space */
- Mat3Ortho(iR_parmat);
- Mat3MulVecfl(iR_parmat, start);
+ normalize_m3(iR_parmat);
+ mul_m3_v3(iR_parmat, start);
IK_SetTransform(seg, start, rest_basis, basis, length);
@@ -332,13 +332,13 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
/* transform goal by parent mat, so this rotation is not part of the
segment's basis. otherwise rotation limits do not work on the
local transform of the segment itself. */
- Mat4CpyMat4(rootmat, pchan->parent->pose_mat);
+ copy_m4_m4(rootmat, pchan->parent->pose_mat);
else
- Mat4One(rootmat);
+ unit_m4(rootmat);
VECCOPY(rootmat[3], pchan->pose_head);
- Mat4MulMat4 (imat, rootmat, ob->obmat);
- Mat4Invert (goalinv, imat);
+ mul_m4_m4m4(imat, rootmat, ob->obmat);
+ invert_m4_m4(goalinv, imat);
for (target=tree->targets.first; target; target=target->next) {
float polepos[3];
@@ -352,10 +352,10 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
get_constraint_target_matrix(scene, target->con, 0, CONSTRAINT_OBTYPE_OBJECT, ob, rootmat, 1.0);
/* and set and transform goal */
- Mat4MulMat4(goal, rootmat, goalinv);
+ mul_m4_m4m4(goal, rootmat, goalinv);
VECCOPY(goalpos, goal[3]);
- Mat3CpyMat4(goalrot, goal);
+ copy_m3_m4(goalrot, goal);
/* same for pole vector target */
if(data->poletar) {
@@ -366,7 +366,7 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
break;
}
else {
- Mat4MulMat4(goal, rootmat, goalinv);
+ mul_m4_m4m4(goal, rootmat, goalinv);
VECCOPY(polepos, goal[3]);
poleconstrain= 1;
@@ -392,9 +392,9 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
pchan= tree->pchan[target->tip];
/* end effector in world space */
- Mat4CpyMat4(end_pose, pchan->pose_mat);
+ copy_m4_m4(end_pose, pchan->pose_mat);
VECCOPY(end_pose[3], pchan->pose_tail);
- Mat4MulSerie(world_pose, goalinv, ob->obmat, end_pose, 0, 0, 0, 0, 0);
+ mul_serie_m4(world_pose, goalinv, ob->obmat, end_pose, 0, 0, 0, 0, 0);
/* blend position */
goalpos[0]= fac*goalpos[0] + mfac*world_pose[3][0];
@@ -402,10 +402,10 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
goalpos[2]= fac*goalpos[2] + mfac*world_pose[3][2];
/* blend rotation */
- Mat3ToQuat(goalrot, q1);
- Mat4ToQuat(world_pose, q2);
- QuatInterpol(q, q1, q2, mfac);
- QuatToMat3(q, goalrot);
+ mat3_to_quat( q1,goalrot);
+ mat4_to_quat( q2,world_pose);
+ interp_qt_qtqt(q, q1, q2, mfac);
+ quat_to_mat3( goalrot,q);
}
iktarget= iktree[target->tip];
@@ -449,7 +449,7 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
float trans[3], length;
IK_GetTranslationChange(iktree[a], trans);
- length= pchan->bone->length*VecLength(pchan->pose_mat[1]);
+ length= pchan->bone->length*len_v3(pchan->pose_mat[1]);
ikstretch[a]= (length == 0.0)? 1.0: (trans[1]+length)/length;
}
@@ -458,14 +458,14 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
stretch= (parentstretch == 0.0)? 1.0: ikstretch[a]/parentstretch;
- VecMulf(tree->basis_change[a][0], stretch);
- VecMulf(tree->basis_change[a][1], stretch);
- VecMulf(tree->basis_change[a][2], stretch);
+ mul_v3_fl(tree->basis_change[a][0], stretch);
+ mul_v3_fl(tree->basis_change[a][1], stretch);
+ mul_v3_fl(tree->basis_change[a][2], stretch);
}
if(resultblend && resultinf!=1.0f) {
- Mat3One(identity);
- Mat3BlendMat3(tree->basis_change[a], identity,
+ unit_m3(identity);
+ blend_m3_m3m3(tree->basis_change[a], identity,
tree->basis_change[a], resultinf);
}
diff --git a/source/blender/ikplugin/intern/itasc_plugin.cpp b/source/blender/ikplugin/intern/itasc_plugin.cpp
index 3dcb9e462b9..05de0a0775b 100644
--- a/source/blender/ikplugin/intern/itasc_plugin.cpp
+++ b/source/blender/ikplugin/intern/itasc_plugin.cpp
@@ -46,7 +46,7 @@
extern "C" {
#include "BIK_api.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_global.h"
#include "BKE_armature.h"
@@ -550,15 +550,15 @@ static bool target_callback(const iTaSC::Timestamp& timestamp, const iTaSC::Fram
if (pchan->parent) {
pchan = pchan->parent;
float chanmat[4][4];
- Mat4CpyMat4(chanmat, pchan->pose_mat);
+ copy_m4_m4(chanmat, pchan->pose_mat);
VECCOPY(chanmat[3], pchan->pose_tail);
- Mat4MulSerie(restmat, target->owner->obmat, chanmat, target->eeRest, NULL, NULL, NULL, NULL, NULL);
+ mul_serie_m4(restmat, target->owner->obmat, chanmat, target->eeRest, NULL, NULL, NULL, NULL, NULL);
}
else {
- Mat4MulMat4(restmat, target->eeRest, target->owner->obmat);
+ mul_m4_m4m4(restmat, target->eeRest, target->owner->obmat);
}
// blend the target
- Mat4BlendMat4(tarmat, restmat, tarmat, constraint->enforce);
+ blend_m4_m4m4(tarmat, restmat, tarmat, constraint->enforce);
}
next.setValue(&tarmat[0][0]);
return true;
@@ -577,15 +577,15 @@ static bool base_callback(const iTaSC::Timestamp& timestamp, const iTaSC::Frame&
if (pchan->parent) {
pchan = pchan->parent;
float chanmat[4][4];
- Mat4CpyMat4(chanmat, pchan->pose_mat);
+ copy_m4_m4(chanmat, pchan->pose_mat);
VECCOPY(chanmat[3], pchan->pose_tail);
// save the base as a frame too so that we can compute deformation
// after simulation
ikscene->baseFrame.setValue(&chanmat[0][0]);
- Mat4MulMat4(rootmat, chanmat, ikscene->blArmature->obmat);
+ mul_m4_m4m4(rootmat, chanmat, ikscene->blArmature->obmat);
}
else {
- Mat4CpyMat4(rootmat, ikscene->blArmature->obmat);
+ copy_m4_m4(rootmat, ikscene->blArmature->obmat);
ikscene->baseFrame = iTaSC::F_identity;
}
next.setValue(&rootmat[0][0]);
@@ -598,7 +598,7 @@ static bool base_callback(const iTaSC::Timestamp& timestamp, const iTaSC::Frame&
float mat[4][4]; // temp matrix
bKinematicConstraint* poledata = (bKinematicConstraint*)ikscene->polarConstraint->data;
- Mat4Invert(imat, rootmat);
+ invert_m4_m4(imat, rootmat);
// polar constraint imply only one target
IK_Target *iktarget = ikscene->targets[0];
// root channel from which we take the bone initial orientation
@@ -607,11 +607,11 @@ static bool base_callback(const iTaSC::Timestamp& timestamp, const iTaSC::Frame&
// get polar target matrix in world space
get_constraint_target_matrix(ikscene->blscene, ikscene->polarConstraint, 1, CONSTRAINT_OBTYPE_OBJECT, ikscene->blArmature, mat, 1.0);
// convert to armature space
- Mat4MulMat4(polemat, mat, imat);
+ mul_m4_m4m4(polemat, mat, imat);
// get the target in world space (was computed before as target object are defined before base object)
iktarget->target->getPose().getValue(mat[0]);
// convert to armature space
- Mat4MulMat4(goalmat, mat, imat);
+ mul_m4_m4m4(goalmat, mat, imat);
// take position of target, polar target, end effector, in armature space
KDL::Vector goalpos(goalmat[3]);
KDL::Vector polepos(polemat[3]);
@@ -787,16 +787,16 @@ static bool joint_callback(const iTaSC::Timestamp& timestamp, iTaSC::ConstraintV
if (chan->rotmode > 0) {
/* euler rotations (will cause gimble lock, but this can be alleviated a bit with rotation orders) */
- EulOToMat3(chan->eul, chan->rotmode, rmat);
+ eulO_to_mat3( rmat,chan->eul, chan->rotmode);
}
else if (chan->rotmode == ROT_MODE_AXISANGLE) {
/* axis-angle - stored in quaternion data, but not really that great for 3D-changing orientations */
- AxisAngleToMat3(&chan->quat[1], chan->quat[0], rmat);
+ axis_angle_to_mat3( rmat,&chan->quat[1], chan->quat[0]);
}
else {
/* quats are normalised before use to eliminate scaling issues */
- NormalQuat(chan->quat);
- QuatToMat3(chan->quat, rmat);
+ normalize_qt(chan->quat);
+ quat_to_mat3( rmat,chan->quat);
}
KDL::Rotation jointRot(
rmat[0][0], rmat[1][0], rmat[2][0],
@@ -977,26 +977,26 @@ static void convert_pose(IK_Scene *ikscene)
int a, joint;
// assume uniform scaling and take Y scale as general scale for the armature
- scale = VecLength(ikscene->blArmature->obmat[1]);
+ scale = len_v3(ikscene->blArmature->obmat[1]);
rot = &ikscene->jointArray(0);
for(joint=a=0, ikchan = ikscene->channels; a<ikscene->numchan && joint<ikscene->numjoint; ++a, ++ikchan) {
pchan= ikchan->pchan;
bone= pchan->bone;
if (pchan->parent) {
- Mat4One(bmat);
- Mat4MulMat43(bmat, pchan->parent->pose_mat, bone->bone_mat);
+ unit_m4(bmat);
+ mul_m4_m4m3(bmat, pchan->parent->pose_mat, bone->bone_mat);
} else {
- Mat4CpyMat4(bmat, bone->arm_mat);
+ copy_m4_m4(bmat, bone->arm_mat);
}
- Mat4Invert(rmat, bmat);
- Mat4MulMat4(bmat, pchan->pose_mat, rmat);
- Mat4Ortho(bmat);
+ invert_m4_m4(rmat, bmat);
+ mul_m4_m4m4(bmat, pchan->pose_mat, rmat);
+ normalize_m4(bmat);
boneRot.setValue(bmat[0]);
GetJointRotation(boneRot, ikchan->jointType, rot);
if (ikchan->jointType & IK_TRANSY) {
// compute actual length
- rot[ikchan->ndof-1] = VecLenf(pchan->pose_tail, pchan->pose_head) * scale;
+ rot[ikchan->ndof-1] = len_v3v3(pchan->pose_tail, pchan->pose_head) * scale;
}
rot += ikchan->ndof;
joint += ikchan->ndof;
@@ -1014,7 +1014,7 @@ static void rest_pose(IK_Scene *ikscene)
int a, joint;
// assume uniform scaling and take Y scale as general scale for the armature
- scale = VecLength(ikscene->blArmature->obmat[1]);
+ scale = len_v3(ikscene->blArmature->obmat[1]);
// rest pose is 0
KDL::SetToZero(ikscene->jointArray);
// except for transY joints
@@ -1103,7 +1103,7 @@ static IK_Scene* convert_tree(Scene *blscene, Object *ob, bPoseChannel *pchan)
std::vector<double> weights;
double weight[3];
// assume uniform scaling and take Y scale as general scale for the armature
- float scale = VecLength(ob->obmat[1]);
+ float scale = len_v3(ob->obmat[1]);
// build the array of joints corresponding to the IK chain
convert_channels(ikscene, tree);
if (ingame) {
@@ -1379,12 +1379,12 @@ static IK_Scene* convert_tree(Scene *blscene, Object *ob, bPoseChannel *pchan)
// it has a parent, get the pose matrix from it
float baseFrame[4][4];
pchan = pchan->parent;
- Mat4CpyMat4(baseFrame, pchan->bone->arm_mat);
+ copy_m4_m4(baseFrame, pchan->bone->arm_mat);
// move to the tail and scale to get rest pose of armature base
- VecCopyf(baseFrame[3], pchan->bone->arm_tail);
- Mat4Invert(invBaseFrame, baseFrame);
+ copy_v3_v3(baseFrame[3], pchan->bone->arm_tail);
+ invert_m4_m4(invBaseFrame, baseFrame);
} else {
- Mat4One(invBaseFrame);
+ unit_m4(invBaseFrame);
}
// finally add the constraint
for (t=0; t<ikscene->targets.size(); t++) {
@@ -1403,10 +1403,10 @@ static IK_Scene* convert_tree(Scene *blscene, Object *ob, bPoseChannel *pchan)
bonelen /= bonecnt;
// store the rest pose of the end effector to compute enforce target
- Mat4CpyMat4(mat, pchan->bone->arm_mat);
- VecCopyf(mat[3], pchan->bone->arm_tail);
+ copy_m4_m4(mat, pchan->bone->arm_mat);
+ copy_v3_v3(mat[3], pchan->bone->arm_tail);
// get the rest pose relative to the armature base
- Mat4MulMat4(iktarget->eeRest, mat, invBaseFrame);
+ mul_m4_m4m4(iktarget->eeRest, mat, invBaseFrame);
iktarget->eeBlend = (!ikscene->polarConstraint && condata->type==CONSTRAINT_IK_COPYPOSE) ? true : false;
// use target_callback to make sure the initPose includes enforce coefficient
target_callback(iTaSC::Timestamp(), iTaSC::F_identity, initPose, iktarget);
@@ -1660,13 +1660,13 @@ static void execute_scene(Scene* blscene, IK_Scene* ikscene, bItasc* ikparam, fl
VECCOPY(pchan->pose_tail, pchan->pose_mat[3]);
// shift to head
VECCOPY(yaxis, pchan->pose_mat[1]);
- VecMulf(yaxis, length);
- VecSubf(pchan->pose_mat[3], pchan->pose_mat[3], yaxis);
+ mul_v3_fl(yaxis, length);
+ sub_v3_v3v3(pchan->pose_mat[3], pchan->pose_mat[3], yaxis);
VECCOPY(pchan->pose_head, pchan->pose_mat[3]);
// add scale
- VecMulf(pchan->pose_mat[0], scale);
- VecMulf(pchan->pose_mat[1], scale);
- VecMulf(pchan->pose_mat[2], scale);
+ mul_v3_fl(pchan->pose_mat[0], scale);
+ mul_v3_fl(pchan->pose_mat[1], scale);
+ mul_v3_fl(pchan->pose_mat[2], scale);
}
if (i<ikscene->numchan) {
// big problem
diff --git a/source/blender/imbuf/intern/jp2.c b/source/blender/imbuf/intern/jp2.c
index 2583a155d6a..a6591adfff1 100644
--- a/source/blender/imbuf/intern/jp2.c
+++ b/source/blender/imbuf/intern/jp2.c
@@ -91,7 +91,7 @@ void info_callback(const char *msg, void *client_data) {
struct ImBuf *imb_jp2_decode(unsigned char *mem, int size, int flags)
{
struct ImBuf *ibuf = 0;
- int use_float = 0; /* for precissions higher then 8 use float */
+ int use_float = 0; /* for precision higher then 8 use float */
unsigned char *rect= NULL;
float *rect_float= NULL;
diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c
index 26434583118..5bcdd6c9670 100644
--- a/source/blender/imbuf/intern/util.c
+++ b/source/blender/imbuf/intern/util.c
@@ -384,6 +384,9 @@ int imb_get_anim_type(char * name) {
if(UTIL_DEBUG) printf("in getanimtype: %s\n", name);
#ifndef _WIN32
+# ifdef WITH_QUICKTIME
+ if (isqtime(name)) return (ANIM_QTIME);
+# endif
# ifdef WITH_FFMPEG
/* stat test below fails on large files > 4GB */
if (isffmpeg(name)) return (ANIM_FFMPEG);
@@ -394,9 +397,6 @@ int imb_get_anim_type(char * name) {
if (isavi(name)) return (ANIM_AVI);
if (ismovie(name)) return (ANIM_MOVIE);
-# ifdef WITH_QUICKTIME
- if (isqtime(name)) return (ANIM_QTIME);
-# endif
#else
if (ib_stat(name,&st) == -1) return(0);
if (((st.st_mode) & S_IFMT) != S_IFREG) return(0);
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h
index 7067c967da3..5f6d8ef375a 100644
--- a/source/blender/makesdna/DNA_action_types.h
+++ b/source/blender/makesdna/DNA_action_types.h
@@ -220,7 +220,7 @@ typedef enum ePchan_IkFlag {
typedef enum eRotationModes {
/* quaternion rotations (default, and for older Blender versions) */
ROT_MODE_QUAT = 0,
- /* euler rotations - keep in sync with enum in BLI_arithb.h */
+ /* euler rotations - keep in sync with enum in BLI_math.h */
ROT_MODE_EUL = 1, /* Blender 'default' (classic) - must be as 1 to sync with arithb defines */
ROT_MODE_XYZ = 1, /* Blender 'default' (classic) - must be as 1 to sync with arithb defines */
ROT_MODE_XZY,
@@ -446,6 +446,7 @@ typedef enum DOPESHEET_FILTERFLAG {
ADS_FILTER_NOPART = (1<<16),
ADS_FILTER_NOMBA = (1<<17),
ADS_FILTER_NOARM = (1<<18),
+ ADS_FILTER_NONTREE = (1<<19),
/* NLA-specific filters */
ADS_FILTER_NLA_NOACT = (1<<20), /* if the AnimData block has no NLA data, don't include to just show Action-line */
diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h
index 195d68d63ff..c6330861fd2 100644
--- a/source/blender/makesdna/DNA_anim_types.h
+++ b/source/blender/makesdna/DNA_anim_types.h
@@ -36,6 +36,7 @@ extern "C" {
#include "DNA_listBase.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
+#include "DNA_sound_types.h"
/* ************************************************ */
/* F-Curve DataTypes */
@@ -73,6 +74,7 @@ typedef enum eFModifier_Types {
FMODIFIER_TYPE_FILTER, /* unimplemented - for applying: fft, high/low pass filters, etc. */
FMODIFIER_TYPE_PYTHON,
FMODIFIER_TYPE_LIMITS,
+ FMODIFIER_TYPE_SOUND,
/* NOTE: all new modifiers must be added above this line */
FMODIFIER_NUM_TYPES
@@ -230,6 +232,25 @@ typedef enum eFMod_Noise_Modifications {
FCM_NOISE_MODIF_MULTIPLY, /* Multiply the curve by noise */
} eFMod_Noise_Modifications;
+/* sound modifier data */
+typedef struct FMod_Sound {
+ float strength;
+ float delay;
+
+ short modification;
+ short pad[3];
+
+ bSound *sound;
+} FMod_Sound;
+
+/* modification modes */
+typedef enum eFMod_Sound_Modifications {
+ FCM_SOUND_MODIF_REPLACE = 0, /* Modify existing curve, matching it's shape */
+ FCM_SOUND_MODIF_ADD, /* Add amplitude to the curve */
+ FCM_SOUND_MODIF_SUBTRACT, /* Subtract amplitude from the curve */
+ FCM_SOUND_MODIF_MULTIPLY, /* Multiply the curve by amplitude */
+} eFMod_Sound_Modifications;
+
/* Drivers -------------------------------------- */
/* Driver Target
diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h
index 7dd90a3cf13..ea549f9aeba 100644
--- a/source/blender/makesdna/DNA_armature_types.h
+++ b/source/blender/makesdna/DNA_armature_types.h
@@ -66,8 +66,9 @@ typedef struct Bone {
float rad_head, rad_tail; /* radius for head/tail sphere, defining deform as well, parent->rad_tip overrides rad_head*/
float size[3]; /* patch for upward compat, UNUSED! */
- short layer;
+ int layer; /* layers that bone appears on */
short segments; /* for B-bones */
+ short pad[3];
} Bone;
typedef struct bArmature {
@@ -78,8 +79,8 @@ typedef struct bArmature {
ListBase chainbase;
ListBase *edbo; /* editbone listbase, we use pointer so we can check state */
- Bone *act_bone;
- void *act_edbone;
+ Bone *act_bone; /* active bone (when not in editmode) */
+ void *act_edbone; /* active editbone (in editmode) */
void *sketch; /* sketch struct for etch-a-ton */
@@ -87,7 +88,10 @@ typedef struct bArmature {
int drawtype;
short deformflag;
short pathflag;
- short layer, layer_protected; /* for buttons to work, both variables in this order together */
+
+ int pad;
+
+ int layer, layer_protected; /* for buttons to work, both variables in this order together */
short ghostep, ghostsize; /* number of frames to ghosts to show, and step between them */
short ghosttype, pathsize; /* ghost drawing options and number of frames between points of path */
int ghostsf, ghostef; /* start and end frames of ghost-drawing range */
@@ -171,6 +175,7 @@ typedef enum eBone_Flag {
BONE_EDITMODE_LOCKED = (1<<19), /* bone transforms are locked in EditMode */
BONE_TRANSFORM_CHILD = (1<<20), /* Indicates that a parent is also being transformed */
BONE_UNSELECTABLE = (1<<21), /* bone cannot be selected */
+ BONE_NO_LOCAL_LOCATION = (1<<22), /* bone location is in armature space */
} eBone_Flag;
#endif
diff --git a/source/blender/makesdna/DNA_cloth_types.h b/source/blender/makesdna/DNA_cloth_types.h
index 9423e871c77..58f68d0a514 100644
--- a/source/blender/makesdna/DNA_cloth_types.h
+++ b/source/blender/makesdna/DNA_cloth_types.h
@@ -78,7 +78,7 @@ typedef struct ClothSimSettings
short vgroup_mass; /* optional vertexgroup name for assigning weight.*/
short vgroup_struct; /* vertex group for scaling structural stiffness */
short presets; /* used for presets on GUI */
- short pad;
+ short reset;
struct EffectorWeights *effector_weights;
} ClothSimSettings;
diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h
index 2b24b673185..0476d69544a 100644
--- a/source/blender/makesdna/DNA_constraint_types.h
+++ b/source/blender/makesdna/DNA_constraint_types.h
@@ -90,7 +90,7 @@ typedef struct bConstraintTarget {
short space; /* space that target should be evaluated in (overrides bConstraint->tarspace) */
short flag; /* runtime settings (for editor, etc.) */
short type; /* type of target (B_CONSTRAINT_OB_TYPE) */
- short rotOrder; /* rotation order for target (as defined in BLI_arithb.h) */
+ short rotOrder; /* rotation order for target (as defined in BLI_math.h) */
} bConstraintTarget;
/* bConstraintTarget -> flag */
@@ -377,7 +377,7 @@ typedef struct bShrinkwrapConstraint {
* - Do not ever change the order of these, or else files could get
* broken as their correct value cannot be resolved
*/
-typedef enum B_CONSTAINT_TYPES {
+typedef enum eBConstraint_Types {
CONSTRAINT_TYPE_NULL = 0, /* Invalid/legacy constraint */
CONSTRAINT_TYPE_CHILDOF, /* Unimplemented non longer :) - during constraints recode, Aligorith */
CONSTRAINT_TYPE_TRACKTO,
@@ -404,12 +404,12 @@ typedef enum B_CONSTAINT_TYPES {
/* NOTE: no constraints are allowed to be added after this */
NUM_CONSTRAINT_TYPES
-} B_CONSTRAINT_TYPES;
+} eBConstraint_Types;
/* bConstraint->flag */
/* flags 0x2 (1<<1) and 0x8 (1<<3) were used in past */
/* flag 0x20 (1<<5) was used to indicate that a constraint was evaluated using a 'local' hack for posebones only */
-typedef enum B_CONSTRAINT_FLAG {
+typedef enum eBConstraint_Flags {
/* expand for UI */
CONSTRAINT_EXPAND = (1<<0),
/* pre-check for illegal object name or bone name */
@@ -424,10 +424,10 @@ typedef enum B_CONSTRAINT_FLAG {
CONSTRAINT_PROXY_LOCAL = (1<<8),
/* indicates that constraint is temporarily disabled (only used in GE) */
CONSTRAINT_OFF = (1<<9)
-} B_CONSTRAINT_FLAG;
+} eBConstraint_Flags;
/* bConstraint->ownspace/tarspace */
-typedef enum B_CONSTRAINT_SPACETYPES {
+typedef enum eBConstraint_SpaceTypes {
/* default for all - worldspace */
CONSTRAINT_SPACE_WORLD = 0,
/* for objects (relative to parent/without parent influence),
@@ -440,13 +440,14 @@ typedef enum B_CONSTRAINT_SPACETYPES {
CONSTRAINT_SPACE_PARLOCAL, /* = 3 */
/* for files from between 2.43-2.46 (should have been parlocal) */
CONSTRAINT_SPACE_INVALID, /* = 4. do not exchange for anything! */
-} B_CONSTRAINT_SPACETYPES;
+} eBConstraint_SpaceTypes;
/* bConstraintChannel.flag */
-typedef enum B_CONSTRAINTCHANNEL_FLAG {
+// XXX depreceated... old AnimSys
+typedef enum eConstraintChannel_Flags {
CONSTRAINT_CHANNEL_SELECT = (1<<0),
CONSTRAINT_CHANNEL_PROTECTED = (1<<1)
-} B_CONSTRAINTCHANNEL_FLAG;
+} eConstraintChannel_Flags;
/* -------------------------------------- */
@@ -456,167 +457,221 @@ typedef enum B_CONSTRAINTCHANNEL_FLAG {
*/
/* bRotateLikeConstraint.flag */
-#define ROTLIKE_X 0x01
-#define ROTLIKE_Y 0x02
-#define ROTLIKE_Z 0x04
-#define ROTLIKE_X_INVERT 0x10
-#define ROTLIKE_Y_INVERT 0x20
-#define ROTLIKE_Z_INVERT 0x40
-#define ROTLIKE_OFFSET 0x80
+typedef enum eCopyRotation_Flags {
+ ROTLIKE_X = (1<<0),
+ ROTLIKE_Y = (1<<1),
+ ROTLIKE_Z = (1<<2),
+ ROTLIKE_X_INVERT = (1<<4),
+ ROTLIKE_Y_INVERT = (1<<5),
+ ROTLIKE_Z_INVERT = (1<<6),
+ ROTLIKE_OFFSET = (1<<7),
+} eCopyRotation_Flags;
/* bLocateLikeConstraint.flag */
-#define LOCLIKE_X 0x01
-#define LOCLIKE_Y 0x02
-#define LOCLIKE_Z 0x04
- /* LOCLIKE_TIP is a depreceated option... use headtail=1.0f instead */
-#define LOCLIKE_TIP 0x08
-#define LOCLIKE_X_INVERT 0x10
-#define LOCLIKE_Y_INVERT 0x20
-#define LOCLIKE_Z_INVERT 0x40
-#define LOCLIKE_OFFSET 0x80
+typedef enum eCopyLocation_Flags {
+ LOCLIKE_X = (1<<0),
+ LOCLIKE_Y = (1<<1),
+ LOCLIKE_Z = (1<<2),
+ /* LOCLIKE_TIP is a depreceated option... use headtail=1.0f instead */
+ LOCLIKE_TIP = (1<<3),
+ LOCLIKE_X_INVERT = (1<<4),
+ LOCLIKE_Y_INVERT = (1<<5),
+ LOCLIKE_Z_INVERT = (1<<6),
+ LOCLIKE_OFFSET = (1<<7),
+} eCopyLocation_Flags;
/* bSizeLikeConstraint.flag */
-#define SIZELIKE_X 0x01
-#define SIZELIKE_Y 0x02
-#define SIZELIKE_Z 0x04
-#define SIZELIKE_OFFSET 0x80
-
-/* Axis flags */
-#define LOCK_X 0x00
-#define LOCK_Y 0x01
-#define LOCK_Z 0x02
-
-#define UP_X 0x00
-#define UP_Y 0x01
-#define UP_Z 0x02
-
-#define TRACK_X 0x00
-#define TRACK_Y 0x01
-#define TRACK_Z 0x02
-#define TRACK_nX 0x03
-#define TRACK_nY 0x04
-#define TRACK_nZ 0x05
+typedef enum eCopyScale_Flags {
+ SIZELIKE_X = (1<<0),
+ SIZELIKE_Y = (1<<1),
+ SIZELIKE_Z = (1<<2),
+ SIZELIKE_OFFSET = (1<<3),
+} eCopyScale_Flags;
+
+/* Locked-Axis Values (Locked Track) */
+typedef enum eLockAxis_Modes {
+ LOCK_X = 0,
+ LOCK_Y,
+ LOCK_Z,
+} eLockAxis_Modes;
+
+/* Up-Axis Values (TrackTo and Locked Track) */
+typedef enum eUpAxis_Modes {
+ UP_X = 0,
+ UP_Y,
+ UP_Z,
+} eUpAxis_Modes;
+
+/* Tracking axis (TrackTo, Locked Track, Damped Track) */
+typedef enum eTrackToAxis_Modes {
+ TRACK_X = 0,
+ TRACK_Y,
+ TRACK_Z,
+ TRACK_nX,
+ TRACK_nY,
+ TRACK_nZ,
+} eTrackToAxis_Modes;
/* FollowPath flags */
-#define FOLLOWPATH_FOLLOW 0x01
-#define FOLLOWPATH_STATIC 0x02
-#define FOLLOWPATH_RADIUS 0x04
+typedef enum eFollowPath_Flags {
+ FOLLOWPATH_FOLLOW = (1<<0),
+ FOLLOWPATH_STATIC = (1<<1),
+ FOLLOWPATH_RADIUS = (1<<2),
+} eFollowPath_Flags;
/* bTrackToConstraint->flags */
-#define TARGET_Z_UP 0x01
-
-#define VOLUME_XZ 0x00
-#define VOLUME_X 0x01
-#define VOLUME_Z 0x02
-#define NO_VOLUME 0x03
-
-#define PLANE_X 0x00
-#define PLANE_Y 0x01
-#define PLANE_Z 0x02
+typedef enum eTrackTo_Flags {
+ TARGET_Z_UP = (1<<0),
+} eTrackTo_Flags;
+
+/* Strech To Constraint -> volmode */
+typedef enum eStretchTo_VolMode {
+ VOLUME_XZ = 0,
+ VOLUME_X,
+ VOLUME_Z,
+ NO_VOLUME,
+} eStretchTo_VolMode;
+
+/* Stretch To Constraint -> plane mode */
+typedef enum eStretchTo_PlaneMode {
+ PLANE_X = 0,
+ PLANE_Y,
+ PLANE_Z,
+} eStretchTo_PlaneMode;
/* Clamp-To Constraint ->flag */
-#define CLAMPTO_AUTO 0
-#define CLAMPTO_X 1
-#define CLAMPTO_Y 2
-#define CLAMPTO_Z 3
+typedef enum eClampTo_Modes {
+ CLAMPTO_AUTO = 0,
+ CLAMPTO_X,
+ CLAMPTO_Y,
+ CLAMPTO_Z,
+} eClampTo_Modes;
/* ClampTo Constraint ->flag2 */
-#define CLAMPTO_CYCLIC 1
+typedef enum eClampTo_Flags {
+ CLAMPTO_CYCLIC = (1<<0),
+} eClampTo_Flags;
/* bKinematicConstraint->flag */
-#define CONSTRAINT_IK_TIP 1
-#define CONSTRAINT_IK_ROT 2
+typedef enum eKinematic_Flags {
+ CONSTRAINT_IK_TIP = (1<<0),
+ CONSTRAINT_IK_ROT = (1<<1),
/* targetless */
-#define CONSTRAINT_IK_AUTO 4
+ CONSTRAINT_IK_AUTO = (1<<2),
/* autoik */
-#define CONSTRAINT_IK_TEMP 8
-#define CONSTRAINT_IK_STRETCH 16
-#define CONSTRAINT_IK_POS 32
-#define CONSTRAINT_IK_SETANGLE 64
-#define CONSTRAINT_IK_GETANGLE 128
+ CONSTRAINT_IK_TEMP = (1<<3),
+ CONSTRAINT_IK_STRETCH = (1<<4),
+ CONSTRAINT_IK_POS = (1<<5),
+ CONSTRAINT_IK_SETANGLE = (1<<6),
+ CONSTRAINT_IK_GETANGLE = (1<<7),
/* limit axis */
-#define CONSTRAINT_IK_NO_POS_X 256
-#define CONSTRAINT_IK_NO_POS_Y 512
-#define CONSTRAINT_IK_NO_POS_Z 1024
-#define CONSTRAINT_IK_NO_ROT_X 2048
-#define CONSTRAINT_IK_NO_ROT_Y 4096
-#define CONSTRAINT_IK_NO_ROT_Z 8192
+ CONSTRAINT_IK_NO_POS_X = (1<<8),
+ CONSTRAINT_IK_NO_POS_Y = (1<<9),
+ CONSTRAINT_IK_NO_POS_Z = (1<<10),
+ CONSTRAINT_IK_NO_ROT_X = (1<<11),
+ CONSTRAINT_IK_NO_ROT_Y = (1<<12),
+ CONSTRAINT_IK_NO_ROT_Z = (1<<13),
/* axis relative to target */
-#define CONSTRAINT_IK_TARGETAXIS 16384
+ CONSTRAINT_IK_TARGETAXIS = (1<<14),
+} eKinematic_Flags;
/* bSplineIKConstraint->flag */
+typedef enum eSplineIK_Flags {
/* chain has been attached to spline */
-#define CONSTRAINT_SPLINEIK_BOUND (1<<0)
+ CONSTRAINT_SPLINEIK_BOUND = (1<<0),
/* root of chain is not influenced by the constraint */
-#define CONSTRAINT_SPLINEIK_NO_ROOT (1<<1)
+ CONSTRAINT_SPLINEIK_NO_ROOT = (1<<1),
/* bones in the chain should not scale to fit the curve */
-#define CONSTRAINT_SPLINEIK_SCALE_LIMITED (1<<2)
+ CONSTRAINT_SPLINEIK_SCALE_LIMITED = (1<<2),
/* evenly distribute the bones along the path regardless of length */
-#define CONSTRAINT_SPLINEIK_EVENSPLITS (1<<3)
+ CONSTRAINT_SPLINEIK_EVENSPLITS = (1<<3),
+ /* don't adjust the x and z scaling of the bones by the curve radius */
+ CONSTRAINT_SPLINEIK_NO_CURVERAD = (1<<4),
+} eSplineIK_Flags;
/* bSplineIKConstraint->xzScaleMode */
+typedef enum eSplineIK_XZScaleModes {
/* no x/z scaling */
-#define CONSTRAINT_SPLINEIK_XZS_NONE 0
- /* bones in the chain should take their x/z scales from the curve radius */
-#define CONSTRAINT_SPLINEIK_XZS_RADIUS 1
+ CONSTRAINT_SPLINEIK_XZS_NONE = 0,
/* bones in the chain should take their x/z scales from the original scaling */
-#define CONSTRAINT_SPLINEIK_XZS_ORIGINAL 2
+ CONSTRAINT_SPLINEIK_XZS_ORIGINAL,
+ /* x/z scales are the inverse of the y-scale */
+ CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC,
+} eSplineIK_XZScaleModes;
/* MinMax (floor) flags */
-#define MINMAX_STICKY 0x01
-#define MINMAX_STUCK 0x02
-#define MINMAX_USEROT 0x04
-
-/* transform limiting constraints -> flag */
-#define LIMIT_XMIN 0x01
-#define LIMIT_XMAX 0x02
-#define LIMIT_YMIN 0x04
-#define LIMIT_YMAX 0x08
-#define LIMIT_ZMIN 0x10
-#define LIMIT_ZMAX 0x20
-
-#define LIMIT_XROT 0x01
-#define LIMIT_YROT 0x02
-#define LIMIT_ZROT 0x04
-
+typedef enum eFloor_Flags {
+ MINMAX_STICKY = (1<<0),
+ MINMAX_STUCK = (1<<1),
+ MINMAX_USEROT = (1<<2),
+} eFloor_Flags;
+
+/* transform limiting constraints -> flag2 */
+typedef enum eTransformLimits_Flags2 {
/* not used anymore - for older Limit Location constraints only */
-#define LIMIT_NOPARENT 0x01
+ LIMIT_NOPARENT = (1<<0),
/* for all Limit constraints - allow to be used during transform? */
-#define LIMIT_TRANSFORM 0x02
+ LIMIT_TRANSFORM = (1<<1),
+} eTransformLimits_Flags2;
+
+/* transform limiting constraints -> flag (own flags) */
+typedef enum eTransformLimits_Flags {
+ LIMIT_XMIN = (1<<0),
+ LIMIT_XMAX = (1<<1),
+ LIMIT_YMIN = (1<<2),
+ LIMIT_YMAX = (1<<3),
+ LIMIT_ZMIN = (1<<4),
+ LIMIT_ZMAX = (1<<5),
+} eTransformLimits_Flags;
+
+/* limit rotation constraint -> flag (own flags) */
+typedef enum eRotLimit_Flags {
+ LIMIT_XROT = (1<<0),
+ LIMIT_YROT = (1<<1),
+ LIMIT_ZROT = (1<<2),
+} eRotLimit_Flags;
/* distance limit constraint */
/* bDistLimitConstraint->flag */
-#define LIMITDIST_USESOFT (1<<0)
+typedef enum eDistLimit_Flag {
+ LIMITDIST_USESOFT = (1<<0),
+} eDistLimit_Flag;
/* bDistLimitConstraint->mode */
-#define LIMITDIST_INSIDE 0
-#define LIMITDIST_OUTSIDE 1
-#define LIMITDIST_ONSURFACE 2
+typedef enum eDistLimit_Modes {
+ LIMITDIST_INSIDE = 0,
+ LIMITDIST_OUTSIDE,
+ LIMITDIST_ONSURFACE,
+} eDistLimit_Modes;
/* python constraint -> flag */
-#define PYCON_USETARGETS 0x01
-#define PYCON_SCRIPTERROR 0x02
+typedef enum ePyConstraint_Flags {
+ PYCON_USETARGETS = (1<<0),
+ PYCON_SCRIPTERROR = (1<<1),
+} ePyConstraint_Flags;
/* ChildOf Constraint -> flag */
-#define CHILDOF_LOCX 0x001
-#define CHILDOF_LOCY 0x002
-#define CHILDOF_LOCZ 0x004
-#define CHILDOF_ROTX 0x008
-#define CHILDOF_ROTY 0x010
-#define CHILDOF_ROTZ 0x020
-#define CHILDOF_SIZEX 0x040
-#define CHILDOF_SIZEY 0x080
-#define CHILDOF_SIZEZ 0x100
+typedef enum eChildOf_Flags {
+ CHILDOF_LOCX = (1<<0),
+ CHILDOF_LOCY = (1<<1),
+ CHILDOF_LOCZ = (1<<2),
+ CHILDOF_ROTX = (1<<3),
+ CHILDOF_ROTY = (1<<4),
+ CHILDOF_ROTZ = (1<<5),
+ CHILDOF_SIZEX = (1<<6),
+ CHILDOF_SIZEY = (1<<7),
+ CHILDOF_SIZEZ = (1<<8),
+} eChildOf_Flags;
/* Rigid-Body Constraint */
#define CONSTRAINT_DRAW_PIVOT 0x40
-#define CONSTRAINT_DISABLE_LINKED_COLLISION 0x80
+#define CONSTRAINT_DISABLE_LINKED_COLLISION 0x80
/* important: these defines need to match up with PHY_DynamicTypes headerfile */
-#define CONSTRAINT_RB_BALL 1
-#define CONSTRAINT_RB_HINGE 2
-#define CONSTRAINT_RB_CONETWIST 4
-#define CONSTRAINT_RB_VEHICLE 11
-#define CONSTRAINT_RB_GENERIC6DOF 12
+#define CONSTRAINT_RB_BALL 1
+#define CONSTRAINT_RB_HINGE 2
+#define CONSTRAINT_RB_CONETWIST 4
+#define CONSTRAINT_RB_VEHICLE 11
+#define CONSTRAINT_RB_GENERIC6DOF 12
#endif
diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h
index 58c26f06e4c..cf3d713c690 100644
--- a/source/blender/makesdna/DNA_ipo_types.h
+++ b/source/blender/makesdna/DNA_ipo_types.h
@@ -275,6 +275,8 @@ typedef struct Ipo {
#define SEQ_TOTNAM 1
#define SEQ_FAC1 1
+#define SEQ_FAC_SPEED 2
+#define SEQ_FAC_OPACITY 3
/* ********* Curve (ID_CU) *********** */
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index fe6a5b050e3..040dc4dbd78 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -492,6 +492,9 @@ typedef struct BooleanModifierData {
#define MOD_MDEF_INVERT_VGROUP (1<<0)
#define MOD_MDEF_DYNAMIC_BIND (1<<1)
+#define MOD_MDEF_VOLUME 0
+#define MOD_MDEF_SURFACE 1
+
typedef struct MDefInfluence {
int vertex;
float weight;
@@ -508,7 +511,7 @@ typedef struct MeshDeformModifierData {
struct Object *object; /* mesh object */
char defgrp_name[32]; /* optional vertexgroup name */
- short gridsize, flag, pad[2];
+ short gridsize, flag, mode, pad;
/* variables filled in when bound */
float *bindweights, *bindcos; /* computed binding weights */
@@ -523,7 +526,8 @@ typedef struct MeshDeformModifierData {
float bindmat[4][4]; /* matrix of cage at binding time */
/* runtime */
- void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd,
+ void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm,
+ struct MeshDeformModifierData *mmd,
float *vertexcos, int totvert, float cagemat[][4]);
} MeshDeformModifierData;
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 73ff7432577..7ca8cea0763 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -40,6 +40,7 @@ struct bNodeLink;
struct bNodeType;
struct bNodeGroup;
struct AnimData;
+struct bGPdata;
struct uiBlock;
#define NODE_MAXSTR 32
@@ -109,7 +110,6 @@ typedef struct bNode {
struct bNode *next, *prev, *new_node;
char name[32];
- char username[32]; /* custom name defined by user */
short type, flag;
short done, level; /* both for dependency and sorting */
short lasty, menunr; /* lasty: check preview render status, menunr: browse ID blocks */
@@ -151,6 +151,7 @@ typedef struct bNode {
#define NODE_TEST 256
/* composite: don't do node but pass on buffer(s) */
#define NODE_MUTED 512
+#define NODE_CUSTOM_NAME 1024
typedef struct bNodeLink {
struct bNodeLink *next, *prev;
@@ -168,6 +169,8 @@ typedef struct bNodeTree {
ID id;
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
+ struct bGPdata *gpd; /* grease pencil data */
+
ListBase nodes, links;
bNodeStack *stack; /* stack is only while executing, no read/write in file */
@@ -177,6 +180,8 @@ typedef struct bNodeTree {
int stacksize; /* amount of elements in stack */
int cur_index; /* sockets in groups have unique identifiers, adding new sockets always
will increase this counter */
+ int flag, pad;
+
ListBase alltypes; /* type definitions */
struct bNodeType *owntype; /* for groups or dynamic trees, no read/write */
@@ -201,6 +206,9 @@ typedef struct bNodeTree {
#define NTREE_TYPE_INIT 1
#define NTREE_EXEC_INIT 2
+/* ntree->flag */
+#define NTREE_DS_EXPAND 1 /* for animation editors */
+
/* data structs, for node->storage */
/* this one has been replaced with ImageUser, keep it for do_versions() */
diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h
index 1376a08eb3e..adccf8893d4 100644
--- a/source/blender/makesdna/DNA_object_force.h
+++ b/source/blender/makesdna/DNA_object_force.h
@@ -301,6 +301,11 @@ typedef struct SoftBody {
struct ListBase ptcaches;
struct EffectorWeights *effector_weights;
+ /* reverse esimated obmatrix .. no need to store in blend file .. how ever who cares */
+ float lcom[3];
+ float lrot[3][3];
+ float lscale[3][3];
+ char pad4[4];
} SoftBody;
@@ -379,8 +384,9 @@ typedef struct SoftBody {
#define OB_SB_AERO_ANGLE 16384
/* sb->solverflags */
-#define SBSO_MONITOR 1
-#define SBSO_OLDERR 2
+#define SBSO_MONITOR 1
+#define SBSO_OLDERR 2
+#define SBSO_ESTIMATEIPO 4
/* sb->sbc_mode */
#define SBC_MODE_MANUAL 0
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 0de48c54fe2..81510ef96a3 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -391,6 +391,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_INT_EULER 0
#define PART_INT_MIDPOINT 1
#define PART_INT_RK4 2
+#define PART_INT_VERLET 3
/* part->rotmode */
#define PART_ROT_NOR 1
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 8554ddf7aa3..d5b26a36b85 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -78,7 +78,7 @@ typedef struct AviCodecData {
} AviCodecData;
typedef struct QuicktimeCodecData {
-
+ /*Old quicktime implementation compatibility fields, read only in 2.5 - deprecated*/
void *cdParms; /* codec/compressor options */
void *pad; /* padding */
@@ -87,6 +87,22 @@ typedef struct QuicktimeCodecData {
char qtcodecname[128];
} QuicktimeCodecData;
+
+typedef struct QuicktimeCodecSettings {
+ /* Codec settings detailed for 2.5 implementation*/
+ int codecType; /* Types defined in quicktime_export.h */
+ int codecSpatialQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+
+ /* Settings not available in current QTKit API */
+ int codec;
+ int codecFlags;
+ int colorDepth;
+ int codecTemporalQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+ int minSpatialQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+ int minTemporalQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+ int keyFrameRate;
+ int bitRate; /* bitrate in bps */
+} QuicktimeCodecSettings;
typedef struct FFMpegCodecData {
int type;
@@ -181,6 +197,7 @@ typedef struct RenderData {
struct AviCodecData *avicodecdata;
struct QuicktimeCodecData *qtcodecdata;
+ struct QuicktimeCodecSettings qtcodecsettings;
struct FFMpegCodecData ffcodecdata;
int cfra, sfra, efra; /* frames as in 'images' */
@@ -547,7 +564,6 @@ typedef struct Sculpt {
typedef struct VPaint {
Paint paint;
- float gamma, mul; /* should become part of struct Brush? */
short mode, flag;
int tot; /* allocation size of prev buffers */
unsigned int *vpaint_prev; /* previous mesh colors */
@@ -559,11 +575,10 @@ typedef struct VPaint {
/* VPaint flag */
#define VP_COLINDEX 1
#define VP_AREA 2
-#define VP_SOFT 4
+
#define VP_NORMALS 8
#define VP_SPRAY 16
// #define VP_MIRROR_X 32 // depricated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X)
-#define VP_HARD 64
#define VP_ONLYVGROUP 128
@@ -1003,10 +1018,11 @@ typedef struct Scene {
#define SCE_SNAP_TARGET_MEDIAN 2
#define SCE_SNAP_TARGET_ACTIVE 3
/* toolsettings->snap_mode */
-#define SCE_SNAP_MODE_VERTEX 0
-#define SCE_SNAP_MODE_EDGE 1
-#define SCE_SNAP_MODE_FACE 2
-#define SCE_SNAP_MODE_VOLUME 3
+#define SCE_SNAP_MODE_INCREMENT 0
+#define SCE_SNAP_MODE_VERTEX 1
+#define SCE_SNAP_MODE_EDGE 2
+#define SCE_SNAP_MODE_FACE 3
+#define SCE_SNAP_MODE_VOLUME 4
/* toolsettings->selectmode */
#define SCE_SELECT_VERTEX 1 /* for mesh */
diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h
index 6d455d20f59..3b8182b8759 100644
--- a/source/blender/makesdna/DNA_sequence_types.h
+++ b/source/blender/makesdna/DNA_sequence_types.h
@@ -132,7 +132,7 @@ typedef struct Sequence {
struct Sequence *next, *prev;
void *tmp; /* tmp var for copying, and tagging for linked selection */
void *lib; /* needed (to be like ipo), else it will raise libdata warnings, this should never be used */
- char name[24]; /* name, not set by default and dosnt need to be unique as with ID's */
+ char name[24]; /* SEQ_NAME_MAXSTR - name, set by default and needs to be unique, for RNA paths */
int flag, type; /*flags bitmap (see below) and the type of sequence*/
int len; /* the length of the contense of this strip - before handles are applied */
@@ -150,7 +150,8 @@ typedef struct Sequence {
struct Ipo *ipo; // xxx depreceated... old animation system
struct Scene *scene;
struct anim *anim;
- float facf0, facf1;
+ float effect_fader;
+ float speed_fader;
PluginSeq *plugin;
@@ -244,6 +245,7 @@ typedef struct SpeedControlVars {
#define SEQ_SPEED_COMPRESS_IPO_Y 4
/* ***************** SEQUENCE ****************** */
+#define SEQ_NAME_MAXSTR 24
/* seq->flag */
#define SEQ_LEFTSEL 2
@@ -266,6 +268,7 @@ typedef struct SpeedControlVars {
#define SEQ_USE_COLOR_BALANCE 262144
#define SEQ_USE_PROXY_CUSTOM_DIR 524288
#define SEQ_USE_PROXY_CUSTOM_FILE 2097152
+#define SEQ_USE_EFFECT_DEFAULT_FADE 4194304
/* deprecated, dont use a flag anymore*/
/*#define SEQ_ACTIVE 1048576*/
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index d2beab5daba..fd2e03e173e 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -853,6 +853,7 @@ enum {
#define SEQ_DRAW_COLOR_SEPERATED 4
#define SEQ_DRAW_SAFE_MARGINS 8
#define SEQ_DRAW_GPENCIL 16
+#define SEQ_NO_DRAW_CFRANUM 32
/* space types, moved from DNA_screen_types.h */
enum {
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index b70d3786eae..6e610b1c32d 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -414,7 +414,9 @@ extern UserDef U; /* from blenkernel blender.c */
#define USER_SHOW_FPS (1 << 21)
#define USER_MMB_PASTE (1 << 22)
#define USER_MENUFIXEDORDER (1 << 23)
-#define USER_CONTINUOUS_MOUSE (1 << 24)
+#define USER_CONTINUOUS_MOUSE (1 << 24)
+#define USER_ZOOM_INVERT (1 << 25)
+#define USER_ZOOM_DOLLY_HORIZ (1 << 26)
/* Auto-Keying mode */
/* AUTOKEY_ON is a bitflag */
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 422c56fe4c1..74d9fa59e50 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -97,6 +97,7 @@ typedef struct RegionView3D {
/* user defined clipping planes */
float clip[6][4];
+ float clip_local[6][4]; /* clip in object space, means we can test for clipping in editmode without first going into worldspace */
struct BoundBox *clipbb;
struct bGPdata *gpd; /* Grease-Pencil Data (annotation layers) */
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index 5cdd74c8262..1af1dd7a158 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -152,8 +152,10 @@ typedef struct wmWindow {
short cursor; /* current mouse cursor type */
short lastcursor; /* for temp waitcursor */
short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */
- int pad3;
+ short last_type; /* last event information, used for click */
+ short last_val;
+
struct wmEvent *eventstate; /* storage for event system */
struct wmSubWindow *curswin; /* internal for wm_subwindow.c only */
@@ -215,7 +217,7 @@ typedef struct wmOperatorType {
int (*poll)(struct bContext *);
/* optional panel for redo and repeat, autogenerated if not set */
- void (*ui)(struct bContext *, struct PointerRNA *, struct uiLayout *);
+ void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *);
/* rna for properties */
struct StructRNA *srna;
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index f32ad275960..af67d3d3d5a 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -60,9 +60,9 @@ extern StructRNA RNA_ArmatureSensor;
extern StructRNA RNA_ArrayModifier;
extern StructRNA RNA_BackgroundImage;
extern StructRNA RNA_BevelModifier;
-extern StructRNA RNA_BezierCurvePoint;
-extern StructRNA RNA_BlendTexture;
+extern StructRNA RNA_BezierSplinePoint;
extern StructRNA RNA_BlenderRNA;
+extern StructRNA RNA_BlendTexture;
extern StructRNA RNA_BoidRule;
extern StructRNA RNA_BoidRuleAverageSpeed;
extern StructRNA RNA_BoidRuleAvoid;
@@ -168,8 +168,8 @@ extern StructRNA RNA_CopyRotationConstraint;
extern StructRNA RNA_CopyScaleConstraint;
extern StructRNA RNA_Curve;
extern StructRNA RNA_CurveMap;
-extern StructRNA RNA_CurveMapPoint;
extern StructRNA RNA_CurveMapping;
+extern StructRNA RNA_CurveMapPoint;
extern StructRNA RNA_CurveModifier;
extern StructRNA RNA_CurvePoint;
extern StructRNA RNA_DampedTrackConstraint;
@@ -183,8 +183,8 @@ extern StructRNA RNA_DriverTarget;
extern StructRNA RNA_DupliObject;
extern StructRNA RNA_EdgeSplitModifier;
extern StructRNA RNA_EditBone;
-extern StructRNA RNA_EffectSequence;
extern StructRNA RNA_EffectorWeights;
+extern StructRNA RNA_EffectSequence;
extern StructRNA RNA_EnumProperty;
extern StructRNA RNA_EnumPropertyItem;
extern StructRNA RNA_EnvironmentMap;
@@ -194,6 +194,13 @@ extern StructRNA RNA_ExplodeModifier;
extern StructRNA RNA_ExpressionController;
extern StructRNA RNA_FCurve;
extern StructRNA RNA_FCurveSample;
+extern StructRNA RNA_FieldSettings;
+extern StructRNA RNA_FileSelectParams;
+extern StructRNA RNA_FloatProperty;
+extern StructRNA RNA_FloorConstraint;
+extern StructRNA RNA_FluidFluidSettings;
+extern StructRNA RNA_FluidSettings;
+extern StructRNA RNA_FluidSimulationModifier;
extern StructRNA RNA_FModifier;
extern StructRNA RNA_FModifierCycles;
extern StructRNA RNA_FModifierEnvelope;
@@ -203,20 +210,10 @@ extern StructRNA RNA_FModifierGenerator;
extern StructRNA RNA_FModifierLimits;
extern StructRNA RNA_FModifierNoise;
extern StructRNA RNA_FModifierPython;
-extern StructRNA RNA_FieldSettings;
-extern StructRNA RNA_FileSelectParams;
-extern StructRNA RNA_FloatProperty;
-extern StructRNA RNA_FloorConstraint;
-extern StructRNA RNA_FluidFluidSettings;
-extern StructRNA RNA_FluidSettings;
-extern StructRNA RNA_FluidSimulationModifier;
+extern StructRNA RNA_FModifierSound;
extern StructRNA RNA_FollowPathConstraint;
extern StructRNA RNA_FreestyleModuleSettings;
extern StructRNA RNA_Function;
-extern StructRNA RNA_GPencilFrame;
-extern StructRNA RNA_GPencilLayer;
-extern StructRNA RNA_GPencilStroke;
-extern StructRNA RNA_GPencilStrokePoint;
extern StructRNA RNA_GameBooleanProperty;
extern StructRNA RNA_GameFloatProperty;
extern StructRNA RNA_GameIntProperty;
@@ -226,6 +223,10 @@ extern StructRNA RNA_GameSoftBodySettings;
extern StructRNA RNA_GameStringProperty;
extern StructRNA RNA_GameTimerProperty;
extern StructRNA RNA_GlowSequence;
+extern StructRNA RNA_GPencilFrame;
+extern StructRNA RNA_GPencilLayer;
+extern StructRNA RNA_GPencilStroke;
+extern StructRNA RNA_GPencilStrokePoint;
extern StructRNA RNA_GreasePencil;
extern StructRNA RNA_Group;
extern StructRNA RNA_Header;
@@ -245,12 +246,12 @@ extern StructRNA RNA_IntProperty;
extern StructRNA RNA_Itasc;
extern StructRNA RNA_JoystickSensor;
extern StructRNA RNA_Key;
-extern StructRNA RNA_KeyConfig;
-extern StructRNA RNA_KeyMap;
-extern StructRNA RNA_KeyMapItem;
extern StructRNA RNA_KeyboardSensor;
+extern StructRNA RNA_KeyConfig;
extern StructRNA RNA_KeyingSet;
extern StructRNA RNA_KeyingSetPath;
+extern StructRNA RNA_KeyMap;
+extern StructRNA RNA_KeyMapItem;
extern StructRNA RNA_KinematicConstraint;
extern StructRNA RNA_Lamp;
extern StructRNA RNA_LampSkySettings;
@@ -310,11 +311,13 @@ extern StructRNA RNA_NearSensor;
extern StructRNA RNA_NlaStrip;
extern StructRNA RNA_NlaTrack;
extern StructRNA RNA_Node;
+extern StructRNA RNA_NodeSocket;
extern StructRNA RNA_NodeTree;
extern StructRNA RNA_NoiseTexture;
extern StructRNA RNA_NorController;
extern StructRNA RNA_Nurb;
extern StructRNA RNA_Object;
+extern StructRNA RNA_ObjectBase;
extern StructRNA RNA_ObstacleFluidSettings;
extern StructRNA RNA_Operator;
extern StructRNA RNA_OperatorFileListElement;
@@ -343,10 +346,10 @@ extern StructRNA RNA_PluginTexture;
extern StructRNA RNA_PointCache;
extern StructRNA RNA_PointDensity;
extern StructRNA RNA_PointDensityTexture;
-extern StructRNA RNA_PointLamp;
extern StructRNA RNA_PointerProperty;
+extern StructRNA RNA_PointLamp;
extern StructRNA RNA_Pose;
-extern StructRNA RNA_PoseChannel;
+extern StructRNA RNA_PoseBone;
extern StructRNA RNA_Property;
extern StructRNA RNA_PropertySensor;
extern StructRNA RNA_PythonConstraint;
@@ -359,6 +362,7 @@ extern StructRNA RNA_RenderEngine;
extern StructRNA RNA_RenderLayer;
extern StructRNA RNA_RenderPass;
extern StructRNA RNA_RenderResult;
+extern StructRNA RNA_RGBANodeSocket;
extern StructRNA RNA_RigidBodyJointConstraint;
extern StructRNA RNA_Scene;
extern StructRNA RNA_SceneGameData;
@@ -414,7 +418,6 @@ extern StructRNA RNA_SoftBodyModifier;
extern StructRNA RNA_SoftBodySettings;
extern StructRNA RNA_Sound;
extern StructRNA RNA_SoundSequence;
-extern StructRNA RNA_SplineIKConstraint;
extern StructRNA RNA_Space;
extern StructRNA RNA_Space3DView;
extern StructRNA RNA_SpaceConsole;
@@ -431,9 +434,10 @@ extern StructRNA RNA_SpaceProperties;
extern StructRNA RNA_SpaceSequenceEditor;
extern StructRNA RNA_SpaceTextEditor;
extern StructRNA RNA_SpaceTimeline;
-extern StructRNA RNA_SpaceUVEditor;
extern StructRNA RNA_SpaceUserPreferences;
+extern StructRNA RNA_SpaceUVEditor;
extern StructRNA RNA_SpeedControlSequence;
+extern StructRNA RNA_SplineIKConstraint;
extern StructRNA RNA_SpotLamp;
extern StructRNA RNA_StretchToConstraint;
extern StructRNA RNA_StringProperty;
@@ -506,8 +510,6 @@ extern StructRNA RNA_TransformConstraint;
extern StructRNA RNA_TransformSequence;
extern StructRNA RNA_UILayout;
extern StructRNA RNA_UIListItem;
-extern StructRNA RNA_UVProjectModifier;
-extern StructRNA RNA_UVProjector;
extern StructRNA RNA_UnitSettings;
extern StructRNA RNA_UnknownType;
extern StructRNA RNA_UserPreferences;
@@ -516,7 +518,11 @@ extern StructRNA RNA_UserPreferencesFilePaths;
extern StructRNA RNA_UserPreferencesSystem;
extern StructRNA RNA_UserPreferencesView;
extern StructRNA RNA_UserSolidLight;
+extern StructRNA RNA_UVProjectModifier;
+extern StructRNA RNA_UVProjector;
+extern StructRNA RNA_ValueNodeSocket;
extern StructRNA RNA_VectorFont;
+extern StructRNA RNA_VectorNodeSocket;
extern StructRNA RNA_VertexGroup;
extern StructRNA RNA_VertexGroupElement;
extern StructRNA RNA_VertexPaint;
@@ -579,6 +585,8 @@ void *RNA_struct_blender_type_get(StructRNA *srna);
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type);
struct IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create);
+int RNA_struct_idproperties_check(PointerRNA *ptr);
+
PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier);
const struct ListBase *RNA_struct_defined_properties(StructRNA *srna);
@@ -608,6 +616,7 @@ int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension);
int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]);
char RNA_property_array_item_char(PropertyRNA *prop, int index);
+int RNA_property_array_item_index(PropertyRNA *prop, char name);
int RNA_property_string_maxlength(PropertyRNA *prop);
@@ -633,6 +642,7 @@ int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRN
StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop);
+int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index);
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop);
@@ -679,7 +689,7 @@ int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr);
int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr);
int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr);
-PropertyRNA *RNA_property_collection_active(PropertyRNA *prop);
+int RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr);
/* efficient functions to set properties for arrays */
int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array);
@@ -710,7 +720,10 @@ char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop,
char *RNA_path_back(const char *path);
int RNA_path_resolve(PointerRNA *ptr, const char *path,
- PointerRNA *r_ptr, PropertyRNA **r_prop);
+ PointerRNA *r_ptr, PropertyRNA **r_prop);
+
+int RNA_path_resolve_full(PointerRNA *ptr, const char *path,
+ PointerRNA *r_ptr, PropertyRNA **r_prop, int *index);
char *RNA_path_from_ID_to_struct(PointerRNA *ptr);
char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop);
@@ -810,6 +823,7 @@ void RNA_collection_clear(PointerRNA *ptr, const char *name);
/* check if the idproperty exists, for operators */
int RNA_property_is_set(PointerRNA *ptr, const char *name);
+int RNA_property_is_idprop(PropertyRNA *prop);
/* python compatible string representation of this property, (must be freed!) */
char *RNA_property_as_string(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop);
diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h
index ed4a371b9c3..37abe44f128 100644
--- a/source/blender/makesrna/RNA_define.h
+++ b/source/blender/makesrna/RNA_define.h
@@ -155,6 +155,7 @@ void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive);
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *updatefunc);
void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable);
+void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable);
void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength);
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set);
@@ -163,8 +164,8 @@ void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item);
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set);
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *typef);
-void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *add, const char *remove);
-void RNA_def_property_collection_active(PropertyRNA *prop, PropertyRNA *prop_act);
+void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring);
+void RNA_def_property_srna(PropertyRNA *prop, const char *type);
/* Function */
diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h
index 318178d1522..b33dbe6f20d 100644
--- a/source/blender/makesrna/RNA_enum_types.h
+++ b/source/blender/makesrna/RNA_enum_types.h
@@ -38,7 +38,9 @@ extern EnumPropertyItem object_mode_items[];
extern EnumPropertyItem proportional_falloff_items[];
extern EnumPropertyItem proportional_editing_items[];
-extern EnumPropertyItem snap_mode_items[];
+extern EnumPropertyItem snap_target_items[];
+extern EnumPropertyItem snap_element_items[];
+extern EnumPropertyItem mesh_select_mode_items[];
extern EnumPropertyItem space_type_items[];
extern EnumPropertyItem region_type_items[];
extern EnumPropertyItem modifier_type_items[];
@@ -67,6 +69,8 @@ extern EnumPropertyItem object_type_items[];
extern EnumPropertyItem space_type_items[];
+extern EnumPropertyItem keymap_propvalue_items[];
+
struct bContext;
struct PointerRNA;
EnumPropertyItem *rna_TransformOrientation_itemf(struct bContext *C, struct PointerRNA *ptr, int *free);
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h
index 5e29827270f..ff01f76fe71 100644
--- a/source/blender/makesrna/RNA_types.h
+++ b/source/blender/makesrna/RNA_types.h
@@ -140,7 +140,7 @@ typedef enum PropertyFlag {
PROP_ANIMATEABLE = 1<<1,
/* icon */
- PROP_ICONS_CONSECUTIVE = 1<12,
+ PROP_ICONS_CONSECUTIVE = 1<<12,
/* hidden in the user interface */
PROP_HIDDEN = 1<<19,
diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript
index 72dc6be683c..4be35a9fe12 100644
--- a/source/blender/makesrna/SConscript
+++ b/source/blender/makesrna/SConscript
@@ -30,6 +30,7 @@ if env['WITH_BF_OGG']:
if env['WITH_BF_QUICKTIME']:
defs.append('WITH_QUICKTIME')
+ incs += ' ../quicktime'
if env['WITH_BF_LCMS']:
defs.append('WITH_LCMS')
diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt
index c9c02fbecde..113dfc51138 100644
--- a/source/blender/makesrna/intern/CMakeLists.txt
+++ b/source/blender/makesrna/intern/CMakeLists.txt
@@ -63,6 +63,7 @@ IF(WITH_DDS)
ENDIF(WITH_DDS)
IF(WITH_QUICKTIME)
+ SET(INC "${INC} ../../quicktime")
ADD_DEFINITIONS(-DWITH_QUICKTIME)
ENDIF(WITH_QUICKTIME)
diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript
index c63b63ce5f7..e5a08c9aeea 100644
--- a/source/blender/makesrna/intern/SConscript
+++ b/source/blender/makesrna/intern/SConscript
@@ -52,6 +52,7 @@ if env['WITH_BF_OGG']:
if env['WITH_BF_QUICKTIME']:
defs.append('WITH_QUICKTIME')
+ incs += ' ../../quicktime'
if env['WITH_BF_LCMS']:
defs.append('WITH_LCMS')
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c
index 6f1e61e6869..3d4e128c3ac 100644
--- a/source/blender/makesrna/intern/makesrna.c
+++ b/source/blender/makesrna/intern/makesrna.c
@@ -369,7 +369,7 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr
if(strcmp(manualfunc, "rna_iterator_listbase_get") == 0 ||
strcmp(manualfunc, "rna_iterator_array_get") == 0 ||
strcmp(manualfunc, "rna_iterator_array_dereference_get") == 0)
- fprintf(f, " return rna_pointer_inherit_refine(&iter->parent, &RNA_%s, %s(iter));\n", (cprop->type)? (char*)cprop->type: "UnknownType", manualfunc);
+ fprintf(f, " return rna_pointer_inherit_refine(&iter->parent, &RNA_%s, %s(iter));\n", (cprop->item_type)? (char*)cprop->item_type: "UnknownType", manualfunc);
else
fprintf(f, " return %s(iter);\n", manualfunc);
}
@@ -965,7 +965,7 @@ static void rna_def_property_funcs(FILE *f, StructRNA *srna, PropertyDefRNA *dp)
DefRNA.error= 1;
}
}
- if(!cprop->type) {
+ if(!cprop->item_type) {
fprintf(stderr, "rna_def_property_funcs: %s.%s, collection must have a struct type.\n", srna->identifier, prop->identifier);
DefRNA.error= 1;
}
@@ -1132,8 +1132,8 @@ static void rna_def_property_funcs_header_cpp(FILE *f, StructRNA *srna, Property
case PROP_COLLECTION: {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)dp->prop;
- if(cprop->type)
- fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", (char*)cprop->type, srna->identifier, prop->identifier);
+ if(cprop->item_type)
+ fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", (char*)cprop->item_type, srna->identifier, prop->identifier);
else
fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", "UnknownType", srna->identifier, prop->identifier);
break;
@@ -1357,8 +1357,8 @@ static void rna_auto_types()
else if(dp->prop->type== PROP_COLLECTION) {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)dp->prop;
- if(!cprop->type && !cprop->get && strcmp(dp->dnatype, "ListBase")==0)
- cprop->type= (StructRNA*)rna_find_type(dp->dnatype);
+ if(!cprop->item_type && !cprop->get && strcmp(dp->dnatype, "ListBase")==0)
+ cprop->item_type= (StructRNA*)rna_find_type(dp->dnatype);
}
}
}
@@ -1763,10 +1763,15 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
rna_print_c_string(f, prop->description); fprintf(f, ",\n\t");
fprintf(f, "%d,\n", prop->icon);
fprintf(f, "\t%s, %s|%s, %s, %d, {%d, %d, %d}, %d,\n", rna_property_typename(prop->type), rna_property_subtypename(prop->subtype), rna_property_subtype_unit(prop->subtype), rna_function_string(prop->getlength), prop->arraydimension, prop->arraylength[0], prop->arraylength[1], prop->arraylength[2], prop->totarraylength);
- fprintf(f, "\t%s, %d, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable));
+ fprintf(f, "\t%s, %d, %s, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable), rna_function_string(prop->itemeditable));
if(prop->flag & PROP_RAW_ACCESS) rna_set_raw_offset(f, srna, prop);
else fprintf(f, "\t0, 0");
+
+ /* our own type - collections/arrays only */
+ if(prop->srna) fprintf(f, ", &RNA_%s", (char*)prop->srna);
+ else fprintf(f, ", NULL");
+
fprintf(f, "},\n");
switch(prop->type) {
@@ -1830,13 +1835,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
case PROP_COLLECTION: {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
fprintf(f, "\t%s, %s, %s, %s, %s, %s, %s, ", rna_function_string(cprop->begin), rna_function_string(cprop->next), rna_function_string(cprop->end), rna_function_string(cprop->get), rna_function_string(cprop->length), rna_function_string(cprop->lookupint), rna_function_string(cprop->lookupstring));
- if(cprop->add) fprintf(f, "&rna_%s_%s_func, ", srna->identifier, (char*)cprop->add);
- else fprintf(f, "NULL, ");
- if(cprop->remove) fprintf(f, "&rna_%s_%s_func, ", srna->identifier, (char*)cprop->remove);
- else fprintf(f, "NULL, ");
- if(cprop->active) fprintf(f, "(PropertyRNA*)&rna_%s%s_%s, ", srna->identifier, strnest, cprop->active->identifier);
- else fprintf(f, "NULL, ");
- if(cprop->type) fprintf(f, "&RNA_%s\n", (char*)cprop->type);
+ if(cprop->item_type) fprintf(f, "&RNA_%s\n", (char*)cprop->item_type);
else fprintf(f, "NULL\n");
break;
}
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index 3de347cf80e..3bcdf373c43 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -31,6 +31,8 @@
#include "DNA_ID.h"
+#include "WM_types.h"
+
#include "rna_internal.h"
/* enum of ID-block types
@@ -53,7 +55,7 @@ EnumPropertyItem id_type_items[] = {
{ID_MA, "MATERIAL", ICON_MATERIAL_DATA, "Material", ""},
{ID_MB, "META", ICON_META_DATA, "MetaBall", ""},
{ID_ME, "MESH", ICON_MESH_DATA, "Mesh", ""},
- {ID_NT, "NODETREE", ICON_NODE, "NodeTree", ""},
+ {ID_NT, "NODETREE", ICON_NODETREE, "NodeTree", ""},
{ID_OB, "OBJECT", ICON_OBJECT_DATA, "Object", ""},
{ID_PA, "PARTICLE", ICON_PARTICLE_DATA, "Particle", ""},
{ID_SCE, "SCENE", ICON_SCENE_DATA, "Scene", ""},
@@ -301,6 +303,7 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name.");
RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set");
RNA_def_property_string_maxlength(prop, sizeof(((ID*)NULL)->name)-2);
+ RNA_def_property_update(prop, NC_ID|ND_ID_RENAME, NULL);
RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "users", PROP_INT, PROP_UNSIGNED);
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index 93e83492efa..6c0a3c57f65 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -24,6 +24,7 @@
#include <stdlib.h>
#include <string.h>
+#include <ctype.h>
#include "MEM_guardedalloc.h"
@@ -45,6 +46,11 @@
#include "RNA_define.h"
#include "RNA_types.h"
+/* flush updates */
+#include "DNA_object_types.h"
+#include "BKE_depsgraph.h"
+#include "WM_types.h"
+
#include "rna_internal.h"
/* Init/Exit */
@@ -185,6 +191,29 @@ PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *da
/* ID Properties */
+/* return a UI local ID prop definition for this prop */
+IDProperty *rna_idproperty_ui(PropertyRNA *prop)
+{
+ IDProperty *idprop;
+
+ for(idprop= ((IDProperty *)prop)->prev; idprop; idprop= idprop->prev) {
+ if (strcmp(RNA_IDP_UI, idprop->name)==0)
+ break;
+ }
+
+ if(idprop==NULL) {
+ for(idprop= ((IDProperty *)prop)->next; idprop; idprop= idprop->next) {
+ if (strcmp(RNA_IDP_UI, idprop->name)==0)
+ break;
+ }
+ }
+
+ if (idprop)
+ return IDP_GetPropertyFromGroup(idprop, ((IDProperty *)prop)->name);
+
+ return NULL;
+}
+
IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create)
{
StructRNA *type= ptr->type;
@@ -195,6 +224,12 @@ IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create)
return NULL;
}
+int RNA_struct_idproperties_check(PointerRNA *ptr)
+{
+ StructRNA *type= ptr->type;
+ return (type && type->idproperties) ? 1 : 0;
+}
+
static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name)
{
IDProperty *group= RNA_struct_idproperties(ptr, 0);
@@ -385,8 +420,19 @@ static const char *rna_ensure_property_description(PropertyRNA *prop)
{
if(prop->magic == RNA_MAGIC)
return prop->description;
- else
+ else {
+ /* attempt to get the local ID values */
+ IDProperty *idp_ui= rna_idproperty_ui(prop);
+
+ if(idp_ui) { /* TODO, type checking on ID props */
+
+ IDProperty *item= IDP_GetPropertyFromGroup(idp_ui, "description");
+ if(item)
+ return (char *)item->data.pointer ;
+ }
+
return ((IDProperty*)prop)->name; /* XXX - not correct */
+ }
}
static const char *rna_ensure_property_name(PropertyRNA *prop)
@@ -459,11 +505,21 @@ int RNA_struct_is_a(StructRNA *type, StructRNA *srna)
PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
{
- PropertyRNA *iterprop= RNA_struct_iterator_property(ptr->type);
- PointerRNA propptr;
+ if(identifier[0]=='[' && identifier[1]=='"') {
+ /* id prop lookup, not so common */
+ PropertyRNA *r_prop= NULL;
+ PointerRNA r_ptr; /* only support single level props */
+ if(RNA_path_resolve(ptr, identifier, &r_ptr, &r_prop) && r_ptr.type==ptr->type && r_ptr.data==ptr->data)
+ return r_prop;
+ }
+ else {
+ /* most common case */
+ PropertyRNA *iterprop= RNA_struct_iterator_property(ptr->type);
+ PointerRNA propptr;
- if(RNA_property_collection_lookup_string(ptr, iterprop, identifier, &propptr))
- return propptr.data;
+ if(RNA_property_collection_lookup_string(ptr, iterprop, identifier, &propptr))
+ return propptr.data;
+ }
return NULL;
}
@@ -639,14 +695,78 @@ char RNA_property_array_item_char(PropertyRNA *prop, int index)
return vectoritem[index];
else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_RGB))
return coloritem[index];
- else
- return '\0';
+
+ return '\0';
+}
+
+int RNA_property_array_item_index(PropertyRNA *prop, char name)
+{
+ PropertySubType subtype= rna_ensure_property(prop)->subtype;
+
+ name= toupper(name);
+
+ /* get index based on string name/alias */
+ /* maybe a function to find char index in string would be better than all the switches */
+ if (ELEM(subtype, PROP_QUATERNION, PROP_AXISANGLE)) {
+ switch (name) {
+ case 'W':
+ return 0;
+ case 'X':
+ return 1;
+ case 'Y':
+ return 2;
+ case 'Z':
+ return 3;
+ }
+ }
+ else if(ELEM6(subtype, PROP_TRANSLATION, PROP_DIRECTION, PROP_XYZ, PROP_EULER, PROP_VELOCITY, PROP_ACCELERATION)) {
+ switch (name) {
+ case 'X':
+ return 0;
+ case 'Y':
+ return 1;
+ case 'Z':
+ return 2;
+ case 'W':
+ return 3;
+ }
+ }
+ else if (ELEM(subtype, PROP_COLOR, PROP_RGB)) {
+ switch (name) {
+ case 'R':
+ return 0;
+ case 'G':
+ return 1;
+ case 'B':
+ return 2;
+ case 'A':
+ return 3;
+ }
+ }
+
+ return -1;
}
void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax)
{
IntPropertyRNA *iprop= (IntPropertyRNA*)rna_ensure_property(prop);
+ if(prop->magic != RNA_MAGIC) {
+ /* attempt to get the local ID values */
+ IDProperty *idp_ui= rna_idproperty_ui(prop);
+ IDProperty *item;
+
+ if(idp_ui) { /* TODO, type checking on ID props */
+ item= IDP_GetPropertyFromGroup(idp_ui, "min");
+ *hardmin= item ? item->data.val : INT_MIN;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "max");
+ *hardmax= item ? item->data.val : INT_MAX;
+
+ return;
+ }
+ }
+
if(iprop->range) {
iprop->range(ptr, hardmin, hardmax);
}
@@ -661,6 +781,25 @@ void RNA_property_int_ui_range(PointerRNA *ptr, PropertyRNA *prop, int *softmin,
IntPropertyRNA *iprop= (IntPropertyRNA*)rna_ensure_property(prop);
int hardmin, hardmax;
+ if(prop->magic != RNA_MAGIC) {
+ /* attempt to get the local ID values */
+ IDProperty *idp_ui= rna_idproperty_ui(prop);
+ IDProperty *item;
+
+ if(idp_ui) { /* TODO, type checking on ID props */
+ item= IDP_GetPropertyFromGroup(idp_ui, "soft_min");
+ *softmin= item ? item->data.val : INT_MIN;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "soft_max");
+ *softmax= item ? item->data.val : INT_MAX;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "step");
+ *step= item ? item->data.val : 1;
+
+ return;
+ }
+ }
+
if(iprop->range) {
iprop->range(ptr, &hardmin, &hardmax);
*softmin= MAX2(iprop->softmin, hardmin);
@@ -678,6 +817,22 @@ void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin
{
FloatPropertyRNA *fprop= (FloatPropertyRNA*)rna_ensure_property(prop);
+ if(prop->magic != RNA_MAGIC) {
+ /* attempt to get the local ID values */
+ IDProperty *idp_ui= rna_idproperty_ui(prop);
+ IDProperty *item;
+
+ if(idp_ui) { /* TODO, type checking on ID props */
+ item= IDP_GetPropertyFromGroup(idp_ui, "min");
+ *hardmin= item ? *(double*)&item->data.val : FLT_MIN;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "max");
+ *hardmax= item ? *(double*)&item->data.val : FLT_MAX;
+
+ return;
+ }
+ }
+
if(fprop->range) {
fprop->range(ptr, hardmin, hardmax);
}
@@ -692,6 +847,28 @@ void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *soft
FloatPropertyRNA *fprop= (FloatPropertyRNA*)rna_ensure_property(prop);
float hardmin, hardmax;
+ if(prop->magic != RNA_MAGIC) {
+ /* attempt to get the local ID values */
+ IDProperty *idp_ui= rna_idproperty_ui(prop);
+ IDProperty *item;
+
+ if(idp_ui) { /* TODO, type checking on ID props */
+ item= IDP_GetPropertyFromGroup(idp_ui, "soft_min");
+ *softmin= item ? *(double*)&item->data.val : FLT_MIN;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "soft_max");
+ *softmax= item ? *(double*)&item->data.val : FLT_MAX;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "step");
+ *step= item ? *(double*)&item->data.val : 1.0f;
+
+ item= IDP_GetPropertyFromGroup(idp_ui, "precision");
+ *precision= item ? *(double*)&item->data.val : 3.0f;
+
+ return;
+ }
+ }
+
if(fprop->range) {
fprop->range(ptr, &hardmin, &hardmax);
*softmin= MAX2(fprop->softmin, hardmin);
@@ -727,8 +904,8 @@ StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
else if(prop->type == PROP_COLLECTION) {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
- if(cprop->type)
- return cprop->type;
+ if(cprop->item_type)
+ return cprop->item_type;
}
return &RNA_UnknownType;
@@ -829,7 +1006,7 @@ const char *RNA_property_ui_name(PropertyRNA *prop)
const char *RNA_property_ui_description(PropertyRNA *prop)
{
- return rna_ensure_property(prop)->description;
+ return rna_ensure_property_description(prop);
}
int RNA_property_ui_icon(PropertyRNA *prop)
@@ -854,6 +1031,26 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop)
return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION));
}
+/* same as RNA_property_editable(), except this checks individual items in an array */
+int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+ ID *id;
+ int flag;
+
+ prop= rna_ensure_property(prop);
+
+ /* if there is no function to do this for a given index,
+ * just resort to doing this on the whole array
+ */
+ if (prop->itemeditable == NULL)
+ return RNA_property_editable(ptr, prop);
+
+ flag= prop->itemeditable(ptr, index);
+ id= ptr->id.data;
+
+ return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION));
+}
+
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop)
{
int flag;
@@ -880,12 +1077,21 @@ int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
{
+ int is_rna = (prop->magic == RNA_MAGIC);
prop= rna_ensure_property(prop);
- if(prop->update)
- prop->update(C, ptr);
- if(prop->noteflag)
- WM_event_add_notifier(C, prop->noteflag, ptr->id.data);
+ if(is_rna) {
+ if(prop->update)
+ prop->update(C, ptr);
+ if(prop->noteflag)
+ WM_event_add_notifier(C, prop->noteflag, ptr->id.data);
+ }
+ else {
+ /* WARNING! This is so property drivers update the display!
+ * not especially nice */
+ DAG_id_flush_update(ptr->id.data, OB_RECALC_OB);
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ }
}
/* Property Data */
@@ -1248,8 +1454,12 @@ void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const floa
int i;
if((idprop=rna_idproperty_check(&prop, ptr))) {
- if(prop->arraydimension == 0)
- IDP_Double(idprop)= values[0];
+ if(prop->arraydimension == 0) {
+ if(idprop->type == IDP_FLOAT)
+ IDP_Float(idprop)= values[0];
+ else
+ IDP_Double(idprop)= values[0];
+ }
else if(idprop->subtype == IDP_FLOAT) {
memcpy(IDP_Array(idprop), values, sizeof(float)*idprop->len);
}
@@ -1486,8 +1696,8 @@ static void rna_property_collection_get_idp(CollectionPropertyIterator *iter)
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)iter->prop;
iter->ptr.data= rna_iterator_array_get(iter);
- iter->ptr.type= cprop->type;
- rna_pointer_inherit_id(cprop->type, &iter->parent, &iter->ptr);
+ iter->ptr.type= cprop->item_type;
+ rna_pointer_inherit_id(cprop->item_type, &iter->parent, &iter->ptr);
}
void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, CollectionPropertyIterator *iter)
@@ -1567,7 +1777,7 @@ int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
{
IDProperty *idprop;
- CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
+// CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
if((idprop=rna_idproperty_check(&prop, ptr))) {
IDPropertyTemplate val = {0};
@@ -1593,6 +1803,9 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA
MEM_freeN(item);
}
}
+
+ /* py api calls directly */
+#if 0
else if(cprop->add){
if(!(cprop->add->flag & FUNC_USE_CONTEXT)) { /* XXX check for this somewhere else */
ParameterList params;
@@ -1603,13 +1816,14 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA
}
/*else
printf("RNA_property_collection_add %s.%s: not implemented for this property.\n", ptr->type->identifier, prop->identifier);*/
+#endif
if(r_ptr) {
if(idprop) {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
r_ptr->data= IDP_GetIndexArray(idprop, idprop->len-1);
- r_ptr->type= cprop->type;
+ r_ptr->type= cprop->item_type;
rna_pointer_inherit_id(NULL, ptr, r_ptr);
}
else
@@ -1620,7 +1834,7 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA
int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key)
{
IDProperty *idprop;
- CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
+// CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
if((idprop=rna_idproperty_check(&prop, ptr))) {
IDProperty tmp, *array;
@@ -1644,6 +1858,9 @@ int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key)
}
else if(prop->flag & PROP_IDPROPERTY)
return 1;
+
+ /* py api calls directly */
+#if 0
else if(cprop->remove){
if(!(cprop->remove->flag & FUNC_USE_CONTEXT)) { /* XXX check for this somewhere else */
ParameterList params;
@@ -1656,7 +1873,7 @@ int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key)
}
/*else
printf("RNA_property_collection_remove %s.%s: only supported for id properties.\n", ptr->type->identifier, prop->identifier);*/
-
+#endif
return 0;
}
@@ -1761,10 +1978,10 @@ int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, co
}
}
-PropertyRNA *RNA_property_collection_active(PropertyRNA *prop)
+int RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
{
- CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
- return cprop->active;
+ *r_ptr= *ptr;
+ return ((r_ptr->type = prop->srna) ? 1:0);
}
int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array)
@@ -2262,28 +2479,58 @@ static char *rna_path_token(const char **path, char *fixedbuf, int fixedlen, int
return buf;
}
+static int rna_token_strip_quotes(char *token)
+{
+ if(token[0]=='"') {
+ int len = strlen(token);
+ if (len >= 2 && token[len-1]=='"') {
+ /* strip away "" */
+ token[len-1]= '\0';
+ return 1;
+ }
+ }
+ return 0;
+}
+
/* Resolve the given RNA path to find the pointer+property indicated at the end of the path */
int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
{
+ return RNA_path_resolve_full(ptr, path, r_ptr, r_prop, NULL);
+}
+
+int RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *index)
+{
PropertyRNA *prop;
PointerRNA curptr, nextptr;
char fixedbuf[256], *token;
- int len, intkey;
+ int type, len, intkey;
prop= NULL;
curptr= *ptr;
- if(path==NULL)
+ if(path==NULL || *path=='\0')
return 0;
while(*path) {
+ int use_id_prop = (*path=='[') ? 1:0;
+ /* custom property lookup ?
+ * C.object["someprop"]
+ */
+
/* look up property name in current struct */
- token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 0);
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), use_id_prop);
if(!token)
return 0;
- prop= RNA_struct_find_property(&curptr, token);
+ if(use_id_prop) { /* look up property name in current struct */
+ IDProperty *group= RNA_struct_idproperties(&curptr, 0);
+ if(group && rna_token_strip_quotes(token))
+ prop= (PropertyRNA *)IDP_GetPropertyFromGroup(group, token+1);
+ }
+ else {
+ prop= RNA_struct_find_property(&curptr, token);
+ }
if(token != fixedbuf)
MEM_freeN(token);
@@ -2291,45 +2538,78 @@ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, Prope
if(!prop)
return 0;
+ type= RNA_property_type(prop);
+
/* now look up the value of this property if it is a pointer or
* collection, otherwise return the property rna so that the
* caller can read the value of the property itself */
- if(RNA_property_type(prop) == PROP_POINTER) {
+ switch (type) {
+ case PROP_POINTER:
nextptr= RNA_property_pointer_get(&curptr, prop);
if(nextptr.data)
curptr= nextptr;
else
return 0;
- }
- else if(RNA_property_type(prop) == PROP_COLLECTION && *path) {
- /* resolve the lookup with [] brackets */
- token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1);
- if(!token)
- return 0;
+ break;
+ case PROP_COLLECTION:
+ if(*path) {
+ /* resolve the lookup with [] brackets */
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1);
- len= strlen(token);
-
- /* check for "" to see if it is a string */
- if(len >= 2 && token[0] == '"' && token[len-1] == '"') {
- /* strip away "" */
- token[len-1]= 0;
- RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr);
- }
- else {
- /* otherwise do int lookup */
- intkey= atoi(token);
- RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr);
+ if(!token)
+ return 0;
+
+ len= strlen(token);
+
+ /* check for "" to see if it is a string */
+ if(rna_token_strip_quotes(token)) {
+ RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr);
+ }
+ else {
+ /* otherwise do int lookup */
+ intkey= atoi(token);
+ RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr);
+ }
+
+ if(token != fixedbuf)
+ MEM_freeN(token);
+
+ if(nextptr.data)
+ curptr= nextptr;
+ else
+ return 0;
}
- if(token != fixedbuf)
- MEM_freeN(token);
+ break;
+ default:
+ if (index==NULL)
+ break;
- if(nextptr.data)
- curptr= nextptr;
- else
- return 0;
+ *index= -1;
+
+ if (*path) {
+ if (*path=='[') {
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1);
+
+ /* check for "" to see if it is a string */
+ if(rna_token_strip_quotes(token)) {
+ *index= RNA_property_array_item_index(prop, *(token+1));
+ }
+ else {
+ /* otherwise do int lookup */
+ *index= atoi(token);
+ }
+ }
+ else {
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 0);
+ *index= RNA_property_array_item_index(prop, *token);
+ }
+
+ if(token != fixedbuf)
+ MEM_freeN(token);
+ }
}
}
@@ -2339,6 +2619,7 @@ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, Prope
return 1;
}
+
char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop, int intkey, const char *strkey)
{
DynStr *dynstr;
@@ -2473,6 +2754,7 @@ char *RNA_path_from_ID_to_struct(PointerRNA *ptr)
char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop)
{
+ int is_rna = (prop->magic == RNA_MAGIC);
const char *propname;
char *ptrpath, *path;
@@ -2485,12 +2767,16 @@ char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop)
propname= RNA_property_identifier(prop);
if(ptrpath) {
- path= BLI_sprintfN("%s.%s", ptrpath, propname);
+ path= BLI_sprintfN(is_rna ? "%s.%s":"%s[\"%s\"]", ptrpath, propname);
MEM_freeN(ptrpath);
}
- else
- path= BLI_strdup(propname);
-
+ else {
+ if(is_rna)
+ path= BLI_strdup(propname);
+ else
+ path= BLI_sprintfN("[\"%s\"]", propname);
+ }
+
return path;
}
@@ -2697,8 +2983,6 @@ int RNA_enum_id_from_value(EnumPropertyItem *item, int value, const char **ident
return 0;
}
-
-
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
{
PropertyRNA *prop= RNA_struct_find_property(ptr, name);
@@ -2843,6 +3127,11 @@ int RNA_property_is_set(PointerRNA *ptr, const char *name)
}
}
+int RNA_property_is_idprop(PropertyRNA *prop)
+{
+ return (prop->magic!=RNA_MAGIC);
+}
+
/* string representation of a property, python
* compatible but can be used for display too*/
char *RNA_pointer_as_string(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c
index 23a9c48710e..3e7638b3d51 100644
--- a/source/blender/makesrna/intern/rna_animation.c
+++ b/source/blender/makesrna/intern/rna_animation.c
@@ -78,6 +78,16 @@ static int rna_ksPath_id_editable(PointerRNA *ptr)
return (ksp->idtype)? PROP_EDITABLE : 0;
}
+static void rna_ksPath_id_type_set(PointerRNA *ptr, int value)
+{
+ KS_Path *data= (KS_Path*)(ptr->data);
+
+ /* set the driver type, then clear the id-block if the type is invalid */
+ data->idtype= value;
+ if ((data->id) && (GS(data->id->name) != data->idtype))
+ data->id= NULL;
+}
+
static void rna_ksPath_RnaPath_get(PointerRNA *ptr, char *value)
{
KS_Path *ksp= (KS_Path *)ptr->data;
@@ -179,6 +189,7 @@ static void rna_def_keyingset_path(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "idtype");
RNA_def_property_enum_items(prop, id_type_items);
RNA_def_property_enum_default(prop, ID_OB);
+ RNA_def_property_enum_funcs(prop, NULL, "rna_ksPath_id_type_set", NULL);
RNA_def_property_ui_text(prop, "ID Type", "Type of ID-block that can be used.");
/* Group */
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c
index 7d88745779d..4bea061758d 100644
--- a/source/blender/makesrna/intern/rna_armature.c
+++ b/source/blender/makesrna/intern/rna_armature.c
@@ -38,7 +38,7 @@
#ifdef RNA_RUNTIME
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
@@ -93,6 +93,15 @@ static void rna_Armature_act_edit_bone_set(PointerRNA *ptr, PointerRNA value)
}
}
+EditBone *rna_Armature_edit_bone_new(bArmature *arm, char *name)
+{
+ return ED_armature_edit_bone_add(arm, name);
+}
+
+void rna_Armature_edit_bone_remove(bArmature *arm, EditBone *ebone)
+{
+ ED_armature_edit_bone_remove(arm, ebone);
+}
static void rna_Armature_redraw_data(bContext *C, PointerRNA *ptr)
{
@@ -130,19 +139,19 @@ static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create)
return ebone->prop;
}
-static void rna_bone_layer_set(short *layer, const int *values)
+static void rna_bone_layer_set(int *layer, const int *values)
{
int i, tot= 0;
/* ensure we always have some layer selected */
- for(i=0; i<16; i++)
+ for(i=0; i<32; i++)
if(values[i])
tot++;
if(tot==0)
return;
- for(i=0; i<16; i++) {
+ for(i=0; i<32; i++) {
if(values[i]) *layer |= (1<<i);
else *layer &= ~(1<<i);
}
@@ -160,14 +169,14 @@ static void rna_Armature_layer_set(PointerRNA *ptr, const int *values)
int i, tot= 0;
/* ensure we always have some layer selected */
- for(i=0; i<20; i++)
+ for(i=0; i<32; i++)
if(values[i])
tot++;
if(tot==0)
return;
- for(i=0; i<20; i++) {
+ for(i=0; i<32; i++) {
if(values[i]) arm->layer |= (1<<i);
else arm->layer &= ~(1<<i);
}
@@ -227,28 +236,7 @@ static void rna_Bone_name_set(PointerRNA *ptr, const char *value)
ED_armature_bone_rename(arm, oldname, newname);
}
-static void rna_EditBone_layer_get(PointerRNA *ptr, int values[16])
-{
- EditBone *data= (EditBone*)(ptr->data);
- values[0]= ((data->layer & (1<<0)) != 0);
- values[1]= ((data->layer & (1<<1)) != 0);
- values[2]= ((data->layer & (1<<2)) != 0);
- values[3]= ((data->layer & (1<<3)) != 0);
- values[4]= ((data->layer & (1<<4)) != 0);
- values[5]= ((data->layer & (1<<5)) != 0);
- values[6]= ((data->layer & (1<<6)) != 0);
- values[7]= ((data->layer & (1<<7)) != 0);
- values[8]= ((data->layer & (1<<8)) != 0);
- values[9]= ((data->layer & (1<<9)) != 0);
- values[10]= ((data->layer & (1<<10)) != 0);
- values[11]= ((data->layer & (1<<11)) != 0);
- values[12]= ((data->layer & (1<<12)) != 0);
- values[13]= ((data->layer & (1<<13)) != 0);
- values[14]= ((data->layer & (1<<14)) != 0);
- values[15]= ((data->layer & (1<<15)) != 0);
-}
-
-static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[16])
+static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[])
{
EditBone *data= (EditBone*)(ptr->data);
rna_bone_layer_set(&data->layer, values);
@@ -396,8 +384,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
/* flags */
prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
- RNA_def_property_array(prop, 16);
- if(editbone) RNA_def_property_boolean_funcs(prop, "rna_EditBone_layer_get", "rna_EditBone_layer_set");
+ RNA_def_property_array(prop, 32);
+ if(editbone) RNA_def_property_boolean_funcs(prop, NULL, "rna_EditBone_layer_set");
else RNA_def_property_boolean_funcs(prop, NULL, "rna_Bone_layer_set");
RNA_def_property_ui_text(prop, "Layers", "Layers bone exists in");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
@@ -411,7 +399,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
prop= RNA_def_property(srna, "hinge", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_HINGE);
- RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone doesn't inherit rotation or scale from parent bone.");
+ RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone inherits rotation or scale from parent bone.");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
prop= RNA_def_property(srna, "multiply_vertexgroup_with_envelope", PROP_BOOLEAN, PROP_NONE);
@@ -428,6 +416,11 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
RNA_def_property_ui_text(prop, "Inherit Scale", "Bone inherits scaling from parent bone.");
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_SCALE);
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
+
+ prop= RNA_def_property(srna, "local_location", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Local Location", "Bone location is set in local space.");
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_LOCAL_LOCATION);
+ RNA_def_property_update(prop, 0, "rna_Armature_update_data");
prop= RNA_def_property(srna, "draw_wire", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_DRAWWIRE);
@@ -439,8 +432,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects.");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "selectable", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_UNSELECTABLE);
+ prop= RNA_def_property(srna, "restrict_select", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_UNSELECTABLE);
RNA_def_property_ui_text(prop, "Selectable", "Bone is able to be selected");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
@@ -610,6 +603,11 @@ static void rna_def_edit_bone(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Locked", "Bone is not able to be transformed when in Edit Mode.");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
+ prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_SELECTED);
+ RNA_def_property_ui_text(prop, "Selected", "");
+ RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
+
prop= RNA_def_property(srna, "head_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ROOTSEL);
RNA_def_property_ui_text(prop, "Head Selected", "");
@@ -623,10 +621,79 @@ static void rna_def_edit_bone(BlenderRNA *brna)
RNA_define_verify_sdna(1);
}
+
+/* armature.bones.* */
+static void rna_def_armature_bones(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+// FunctionRNA *func;
+// PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "ArmatureBones");
+ srna= RNA_def_struct(brna, "ArmatureBones", NULL);
+ RNA_def_struct_sdna(srna, "bArmature");
+ RNA_def_struct_ui_text(srna, "Armature Bones", "Collection of armature bones.");
+
+
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Bone");
+ RNA_def_property_pointer_sdna(prop, NULL, "act_bone");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active Bone", "Armatures active bone.");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_Armature_act_bone_set", NULL);
+
+ /* todo, redraw */
+// RNA_def_property_collection_active(prop, prop_act);
+}
+
+/* armature.bones.* */
+static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "ArmatureEditBones");
+ srna= RNA_def_struct(brna, "ArmatureEditBones", NULL);
+ RNA_def_struct_sdna(srna, "bArmature");
+ RNA_def_struct_ui_text(srna, "Armature EditBones", "Collection of armature edit bones.");
+
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "EditBone");
+ RNA_def_property_pointer_sdna(prop, NULL, "act_edbone");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active EditBone", "Armatures active edit bone.");
+ //RNA_def_property_update(prop, 0, "rna_Armature_act_editbone_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_Armature_act_edit_bone_set", NULL);
+
+ /* todo, redraw */
+// RNA_def_property_collection_active(prop, prop_act);
+
+ /* add target */
+ func= RNA_def_function(srna, "new", "rna_Armature_edit_bone_new");
+ RNA_def_function_ui_description(func, "Add a new bone.");
+ parm= RNA_def_string(func, "name", "Object", 0, "", "New name for the bone.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* return type */
+ parm= RNA_def_pointer(func, "bone", "EditBone", "", "Newly created edit bone.");
+ RNA_def_function_return(func, parm);
+
+ /* remove target */
+ func= RNA_def_function(srna, "remove", "rna_Armature_edit_bone_remove");
+ RNA_def_function_ui_description(func, "Remove an existing bone from the armature.");
+ /* target to remove*/
+ parm= RNA_def_pointer(func, "bone", "EditBone", "", "EditBone to remove.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
static void rna_def_armature(BlenderRNA *brna)
{
StructRNA *srna;
- PropertyRNA *prop, *prop_act;
+ PropertyRNA *prop;
static EnumPropertyItem prop_drawtype_items[] = {
{ARM_OCTA, "OCTAHEDRAL", 0, "Octahedral", "Display bones as octahedral shape (default)."},
@@ -663,44 +730,18 @@ static void rna_def_armature(BlenderRNA *brna)
/* Collections */
prop= RNA_def_property(srna, "bones", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "bonebase", NULL);
- RNA_def_property_collection_funcs(prop, 0, "rna_Armature_bones_next", 0, 0, 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, 0, "rna_Armature_bones_next", 0, 0, 0, 0, 0);
RNA_def_property_struct_type(prop, "Bone");
RNA_def_property_ui_text(prop, "Bones", "");
-
- { /* Collection active property */
- prop_act= RNA_def_property(srna, "bones_active", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop_act, "Bone");
- RNA_def_property_pointer_sdna(prop_act, NULL, "act_bone");
- RNA_def_property_flag(prop_act, PROP_EDITABLE);
- RNA_def_property_ui_text(prop_act, "Active Bone", "Armatures active bone.");
- RNA_def_property_pointer_funcs(prop_act, NULL, "rna_Armature_act_bone_set", NULL);
-
- /* todo, redraw */
- RNA_def_property_collection_active(prop, prop_act);
- }
+ rna_def_armature_bones(brna, prop);
prop= RNA_def_property(srna, "edit_bones", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "edbo", NULL);
RNA_def_property_struct_type(prop, "EditBone");
RNA_def_property_ui_text(prop, "Edit Bones", "");
-
- { /* Collection active property */
- prop_act= RNA_def_property(srna, "edit_bones_active", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop_act, "EditBone");
- RNA_def_property_pointer_sdna(prop_act, NULL, "act_edbone");
- RNA_def_property_flag(prop_act, PROP_EDITABLE);
- RNA_def_property_ui_text(prop_act, "Active EditBone", "Armatures active edit bone.");
- //RNA_def_property_update(prop_act, 0, "rna_Armature_act_editbone_update");
- RNA_def_property_pointer_funcs(prop_act, NULL, "rna_Armature_act_edit_bone_set", NULL);
- RNA_def_property_collection_active(prop, prop_act);
- }
+ rna_def_armature_edit_bones(brna, prop);
/* Enum values */
-// prop= RNA_def_property(srna, "rest_position", PROP_BOOLEAN, PROP_NONE);
-// RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_RESTPOS);
-// RNA_def_property_ui_text(prop, "Rest Position", "Show Armature in Rest Position. No posing possible.");
-// RNA_def_property_update(prop, 0, "rna_Armature_update_data");
-
prop= RNA_def_property(srna, "pose_position", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_pose_position_items);
@@ -734,7 +775,7 @@ static void rna_def_armature(BlenderRNA *brna)
/* layer */
prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
- RNA_def_property_array(prop, 16);
+ RNA_def_property_array(prop, 32);
RNA_def_property_ui_text(prop, "Visible Layers", "Armature layer visibility.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_Armature_layer_set");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Armature_redraw_data");
@@ -743,7 +784,7 @@ static void rna_def_armature(BlenderRNA *brna)
/* layer protection */
prop= RNA_def_property(srna, "layer_protection", PROP_BOOLEAN, PROP_LAYER);
RNA_def_property_boolean_sdna(prop, NULL, "layer_protected", 1);
- RNA_def_property_array(prop, 16);
+ RNA_def_property_array(prop, 32);
RNA_def_property_ui_text(prop, "Layer Proxy Protection", "Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo.");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c
index d78544634bc..0e298c1f6be 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -53,6 +53,18 @@ static void rna_cloth_update(bContext *C, PointerRNA *ptr)
WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
}
+static void rna_cloth_reset(bContext *C, PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ ClothSimSettings *settings = (ClothSimSettings*)ptr->data;
+
+ settings->reset = 1;
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+}
+
+
static void rna_ClothSettings_max_bend_set(struct PointerRNA *ptr, float value)
{
ClothSimSettings *settings = (ClothSimSettings*)ptr->data;
@@ -272,7 +284,7 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "structural_stiffness", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "structural");
- RNA_def_property_range(prop, 1.0f, 10000.0f);
+ RNA_def_property_range(prop, 0.0f, 10000.0f);
RNA_def_property_ui_text(prop, "Structural Stiffness", "Overall stiffness of structure.");
RNA_def_property_update(prop, 0, "rna_cloth_update");
@@ -311,6 +323,13 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Effector Weights", "");
+ prop= RNA_def_property(srna, "pre_roll", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "preroll");
+ RNA_def_property_range(prop, 0, 200);
+ RNA_def_property_ui_text(prop, "Pre Roll", "Simulation starts on this frame.");
+ RNA_def_property_update(prop, 0, "rna_cloth_reset");
+
+
/* unused */
/* unused still
@@ -338,12 +357,6 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Effector Wind Scale", ""); */
/* unused still
- prop= RNA_def_property(srna, "pre_roll", PROP_INT, PROP_NONE);
- RNA_def_property_int_sdna(prop, NULL, "preroll");
- RNA_def_property_range(prop, 10, 80;
- RNA_def_property_ui_text(prop, "Pre Roll", "Simulation starts on this frame."); */
-
- /* unused still
prop= RNA_def_property(srna, "tearing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_SIMSETTINGS_FLAG_TEARING);
RNA_def_property_ui_text(prop, "Tearing", "");*/
diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c
index 4cef6fa481f..2a97eb78382 100644
--- a/source/blender/makesrna/intern/rna_color.c
+++ b/source/blender/makesrna/intern/rna_color.c
@@ -212,7 +212,7 @@ static void rna_def_curvemapping(BlenderRNA *brna)
RNA_def_property_float_funcs(prop, NULL, NULL, "rna_CurveMapping_clipmaxy_range");
prop= RNA_def_property(srna, "curves", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_collection_funcs(prop, "rna_CurveMapping_curves_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_CurveMapping_curves_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_CurveMapping_curves_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_CurveMapping_curves_length", 0, 0);
RNA_def_property_struct_type(prop, "CurveMap");
RNA_def_property_ui_text(prop, "Curves", "");
diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c
index 7f7976c365f..de306e21756 100644
--- a/source/blender/makesrna/intern/rna_constraint.c
+++ b/source/blender/makesrna/intern/rna_constraint.c
@@ -40,31 +40,30 @@
EnumPropertyItem constraint_type_items[] ={
{0, "", 0, "Transform", ""},
- {CONSTRAINT_TYPE_TRANSFORM, "TRANSFORM", ICON_CONSTRAINT_DATA, "Transformation", ""},
{CONSTRAINT_TYPE_LOCLIKE, "COPY_LOCATION", ICON_CONSTRAINT_DATA, "Copy Location", ""},
{CONSTRAINT_TYPE_ROTLIKE, "COPY_ROTATION", ICON_CONSTRAINT_DATA, "Copy Rotation", ""},
{CONSTRAINT_TYPE_SIZELIKE, "COPY_SCALE", ICON_CONSTRAINT_DATA, "Copy Scale", ""},
+ {CONSTRAINT_TYPE_DISTLIMIT, "LIMIT_DISTANCE", ICON_CONSTRAINT_DATA, "Limit Distance", ""},
{CONSTRAINT_TYPE_LOCLIMIT, "LIMIT_LOCATION", ICON_CONSTRAINT_DATA, "Limit Location", ""},
{CONSTRAINT_TYPE_ROTLIMIT, "LIMIT_ROTATION", ICON_CONSTRAINT_DATA, "Limit Rotation", ""},
{CONSTRAINT_TYPE_SIZELIMIT, "LIMIT_SCALE", ICON_CONSTRAINT_DATA, "Limit Scale", ""},
- {CONSTRAINT_TYPE_DISTLIMIT, "LIMIT_DISTANCE", ICON_CONSTRAINT_DATA, "Limit Distance", ""},
+ {CONSTRAINT_TYPE_TRANSFORM, "TRANSFORM", ICON_CONSTRAINT_DATA, "Transformation", ""},
{0, "", 0, "Tracking", ""},
- {CONSTRAINT_TYPE_TRACKTO, "TRACK_TO", ICON_CONSTRAINT_DATA, "Track To", "Legacy tracking constraint prone to twisting artifacts"},
- {CONSTRAINT_TYPE_LOCKTRACK, "LOCKED_TRACK", ICON_CONSTRAINT_DATA, "Locked Track", "Tracking along a single axis"},
- {CONSTRAINT_TYPE_DAMPTRACK, "DAMPED_TRACK", ICON_CONSTRAINT_DATA, "Damped Track", "Tracking by taking the shortest path"},
{CONSTRAINT_TYPE_CLAMPTO, "CLAMP_TO", ICON_CONSTRAINT_DATA, "Clamp To", ""},
- {CONSTRAINT_TYPE_STRETCHTO, "STRETCH_TO",ICON_CONSTRAINT_DATA, "Stretch To", ""},
+ {CONSTRAINT_TYPE_DAMPTRACK, "DAMPED_TRACK", ICON_CONSTRAINT_DATA, "Damped Track", "Tracking by taking the shortest path"},
{CONSTRAINT_TYPE_KINEMATIC, "IK", ICON_CONSTRAINT_DATA, "Inverse Kinematics", ""},
+ {CONSTRAINT_TYPE_LOCKTRACK, "LOCKED_TRACK", ICON_CONSTRAINT_DATA, "Locked Track", "Tracking along a single axis"},
{CONSTRAINT_TYPE_SPLINEIK, "SPLINE_IK", ICON_CONSTRAINT_DATA, "Spline IK", ""},
+ {CONSTRAINT_TYPE_STRETCHTO, "STRETCH_TO",ICON_CONSTRAINT_DATA, "Stretch To", ""},
+ {CONSTRAINT_TYPE_TRACKTO, "TRACK_TO", ICON_CONSTRAINT_DATA, "Track To", "Legacy tracking constraint prone to twisting artifacts"},
{0, "", 0, "Relationship", ""},
+ {CONSTRAINT_TYPE_ACTION, "ACTION", ICON_CONSTRAINT_DATA, "Action", ""},
{CONSTRAINT_TYPE_CHILDOF, "CHILD_OF", ICON_CONSTRAINT_DATA, "Child Of", ""},
{CONSTRAINT_TYPE_MINMAX, "FLOOR", ICON_CONSTRAINT_DATA, "Floor", ""},
- {CONSTRAINT_TYPE_SHRINKWRAP, "SHRINKWRAP", ICON_CONSTRAINT_DATA, "Shrinkwrap", ""},
{CONSTRAINT_TYPE_FOLLOWPATH, "FOLLOW_PATH", ICON_CONSTRAINT_DATA, "Follow Path", ""},
{CONSTRAINT_TYPE_RIGIDBODYJOINT, "RIGID_BODY_JOINT", ICON_CONSTRAINT_DATA, "Rigid Body Joint", ""},
- {CONSTRAINT_TYPE_ACTION, "ACTION", ICON_CONSTRAINT_DATA, "Action", ""},
{CONSTRAINT_TYPE_PYTHON, "SCRIPT", ICON_CONSTRAINT_DATA, "Script", ""},
-
+ {CONSTRAINT_TYPE_SHRINKWRAP, "SHRINKWRAP", ICON_CONSTRAINT_DATA, "Shrinkwrap", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem space_pchan_items[] = {
@@ -93,6 +92,8 @@ EnumPropertyItem constraint_ik_axisref_items[] ={
#ifdef RNA_RUNTIME
+#include <stdio.h>
+
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
@@ -169,7 +170,7 @@ static void rna_Constraint_name_set(PointerRNA *ptr, const char *value)
/* make sure name is unique */
if (ptr->id.data) {
Object *ob= ptr->id.data;
- ListBase *list= get_active_constraints(ob);
+ ListBase *list = get_constraint_lb(ob, con, NULL);
/* if we have the list, check for unique name, otherwise give up */
if (list)
@@ -184,19 +185,17 @@ static char *rna_Constraint_path(PointerRNA *ptr)
{
Object *ob= ptr->id.data;
bConstraint *con= ptr->data;
- bPoseChannel *pchan= get_active_posechannel(ob);
- ListBase *actlist= get_active_constraints(ob);
- short inList = 0;
-
- /* check if constraint is in the given list */
- if (actlist)
- inList= (BLI_findindex(actlist, con) != -1);
+ bPoseChannel *pchan;
+ ListBase *lb = get_constraint_lb(ob, con, &pchan);
+
+ if(lb == NULL)
+ printf("rna_Constraint_path: internal error, constraint '%s' not found in object '%s'\n", con->name, ob->id.name);
+
+ if(pchan) {
+ return BLI_sprintfN("pose.bones[\"%s\"].constraints[\"%s\"]", pchan->name, con->name);
+ }
- /* if constraint is in the list, the list is for the active bone... */
- if ((inList) && (actlist != &ob->constraints) && (pchan))
- return BLI_sprintfN("pose.pose_channels[\"%s\"].constraints[\"%s\"]", pchan->name, con->name);
- else
- return BLI_sprintfN("constraints[\"%s\"]", con->name);
+ return BLI_sprintfN("constraints[\"%s\"]", con->name);
}
static void rna_Constraint_update(bContext *C, PointerRNA *ptr)
@@ -287,6 +286,34 @@ static void rna_ActionConstraint_minmax_range(PointerRNA *ptr, float *min, float
}
}
+static int rna_SplineIKConstraint_joint_bindings_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data;
+
+ if (ikData)
+ length[0]= ikData->numpoints;
+ else
+ length[0]= 256; /* for raw_access, untested */
+
+ return length[0];
+}
+
+static void rna_SplineIKConstraint_joint_bindings_get(PointerRNA *ptr, float *values)
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data;
+
+ memcpy(values, ikData->points, ikData->numpoints * sizeof(float));
+}
+
+static void rna_SplineIKConstraint_joint_bindings_set(PointerRNA *ptr, const float *values)
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data;
+
+ memcpy(ikData->points, values, ikData->numpoints * sizeof(float));
+}
#else
@@ -341,49 +368,49 @@ static void rna_def_constraint_childof(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Sub-Target", "");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "locationx", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_location_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCX);
RNA_def_property_ui_text(prop, "Location X", "Use X Location of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "locationy", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_location_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCY);
RNA_def_property_ui_text(prop, "Location Y", "Use Y Location of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "locationz", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_location_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCZ);
RNA_def_property_ui_text(prop, "Location Z", "Use Z Location of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "rotationx", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rotation_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTX);
RNA_def_property_ui_text(prop, "Rotation X", "Use X Rotation of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "rotationy", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rotation_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTY);
RNA_def_property_ui_text(prop, "Rotation Y", "Use Y Rotation of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "rotationz", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rotation_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTZ);
RNA_def_property_ui_text(prop, "Rotation Z", "Use Z Rotation of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "sizex", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_scale_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEX);
- RNA_def_property_ui_text(prop, "Size X", "Use X Scale of Parent.");
+ RNA_def_property_ui_text(prop, "Scale X", "Use X Scale of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "sizey", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_scale_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEY);
- RNA_def_property_ui_text(prop, "Size Y", "Use Y Scale of Parent.");
+ RNA_def_property_ui_text(prop, "Scale Y", "Use Y Scale of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "sizez", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_scale_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEZ);
- RNA_def_property_ui_text(prop, "Size Z", "Use Z Scale of Parent.");
+ RNA_def_property_ui_text(prop, "Scale Z", "Use Z Scale of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
@@ -480,7 +507,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the IK effect - 0 uses all bones.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "tail", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tail", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_TIP);
RNA_def_property_ui_text(prop, "Use Tail", "Include bone's tail as last element in chain.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -491,7 +518,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Axis Reference", "Constraint axis Lock options relative to Bone or Target reference");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "position", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_position", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_POS);
RNA_def_property_ui_text(prop, "Position", "Chain follows position of target.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -511,7 +538,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock Z Pos", "Constraint position along Z axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "rotation", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_ROT);
RNA_def_property_ui_text(prop, "Rotation", "Chain follows rotation of target.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -531,12 +558,12 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock Z Rot", "Constraint rotation along Z axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "targetless", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO);
- RNA_def_property_ui_text(prop, "Targetless", "Use targetless IK.");
+ prop= RNA_def_property(srna, "use_target", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO);
+ RNA_def_property_ui_text(prop, "Target", "Disable for targetless IK.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "stretch", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stretch", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_STRETCH);
RNA_def_property_ui_text(prop, "Stretch", "Enable IK Stretching.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -583,6 +610,12 @@ static void rna_def_constraint_track_to(BlenderRNA *brna)
srna= RNA_def_struct(brna, "TrackToConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Track To Constraint", "Aims the constrained object toward the target.");
+
+ prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, "bConstraint", "headtail");
+ RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
RNA_def_struct_sdna_from(srna, "bTrackToConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
@@ -634,19 +667,19 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Sub-Target", "");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "rotate_like_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_X);
- RNA_def_property_ui_text(prop, "Like X", "Copy the target's X rotation.");
+ RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X rotation.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "rotate_like_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Y);
- RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y rotation.");
+ RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y rotation.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "rotate_like_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Z);
- RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z rotation.");
+ RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z rotation.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE);
@@ -664,7 +697,7 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z rotation.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_OFFSET);
RNA_def_property_ui_text(prop, "Offset", "Add original rotation into copied rotation.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -697,19 +730,19 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Sub-Target", "");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "locate_like_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_X);
- RNA_def_property_ui_text(prop, "Like X", "Copy the target's X location.");
+ RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X location.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "locate_like_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Y);
- RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y location.");
+ RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y location.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "locate_like_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Z);
- RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z location.");
+ RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z location.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE);
@@ -727,7 +760,7 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z location.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_OFFSET);
RNA_def_property_ui_text(prop, "Offset", "Add original location into copied location.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -805,22 +838,22 @@ static void rna_def_constraint_size_like(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Sub-Target", "");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "size_like_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_X);
- RNA_def_property_ui_text(prop, "Like X", "Copy the target's X scale.");
+ RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X scale.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "size_like_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Y);
- RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y scale.");
+ RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y scale.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "size_like_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Z);
- RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z scale.");
+ RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z scale.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_OFFSET);
RNA_def_property_ui_text(prop, "Offset", "Add original scale into copied scale.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1034,6 +1067,12 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna)
srna= RNA_def_struct(brna, "StretchToConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Stretch To Constraint", "Stretches to meet the target object.");
+
+ prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, "bConstraint", "headtail");
+ RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
RNA_def_struct_sdna_from(srna, "bStretchToConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
@@ -1258,73 +1297,73 @@ static void rna_def_constraint_transform(BlenderRNA *brna)
prop= RNA_def_property(srna, "from_min_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_min[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "From Minimum X", "Bottom range of X axis source motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_min_y", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_min[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "From Minimum Y", "Bottom range of Y axis source motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_min_z", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_min[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "From Minimum Z", "Bottom range of Z axis source motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_max_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_max[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "From Maximum X", "Top range of X axis source motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_max_y", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_max[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "From Maximum Y", "Top range of Y axis source motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_max_z", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_max[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "From Maximum Z", "Top range of Z axis source motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_min_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_min[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "To Minimum X", "Bottom range of X axis destination motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_min_y", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_min[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "To Minimum Y", "Bottom range of Y axis destination motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_min_z", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_min[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "To Minimum Z", "Bottom range of Z axis destination motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_max_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_max[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "To Maximum X", "Top range of X axis destination motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_max_y", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_max[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "To Maximum Y", "Top range of Y axis destination motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_max_z", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_max[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
RNA_def_property_ui_text(prop, "To Maximum Z", "Top range of Z axis destination motion.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
@@ -1623,17 +1662,17 @@ static void rna_def_constraint_shrinkwrap(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Distance", "Distance to Target.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "axis_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS);
RNA_def_property_ui_text(prop, "Axis X", "Projection over X Axis");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "axis_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS);
RNA_def_property_ui_text(prop, "Axis Y", "Projection over Y Axis");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "axis_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS);
RNA_def_property_ui_text(prop, "Axis Z", "Projection over Z Axis");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1681,9 +1720,9 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem splineik_xz_scale_mode[] = {
- {CONSTRAINT_SPLINEIK_XZS_NONE, "NONE", 0, "None", "Don't scale the x and z axes, giving a volume preservation effect. (Default)"},
- {CONSTRAINT_SPLINEIK_XZS_RADIUS, "CURVE_RADIUS", 0, "Curve Radius", "Use the radius of the curve."},
- {CONSTRAINT_SPLINEIK_XZS_ORIGINAL, "ORIGINAL", 0, "Original", "Use the original scaling of the bones."},
+ {CONSTRAINT_SPLINEIK_XZS_NONE, "NONE", 0, "None", "Don't scale the X and Z axes (Default)"},
+ {CONSTRAINT_SPLINEIK_XZS_ORIGINAL, "BONE_ORIGINAL", 0, "Bone Original", "Use the original scaling of the bones."},
+ {CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC, "VOLUME_PRESERVE", 0, "Volume Preservation", "Scale of the X and Z axes is the inverse of the Y-Scale."},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "SplineIKConstraint", "Constraint");
@@ -1703,12 +1742,20 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the chain");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- // TODO: add access to the positions array to allow more flexible aligning?
+ /* direct access to bindings */
+ // NOTE: only to be used by experienced users
+ prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_array(prop, 32); // XXX this is the maximum value allowed
+ RNA_def_property_flag(prop, PROP_DYNAMIC);
+ RNA_def_property_dynamic_array_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get_length");
+ RNA_def_property_float_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get", "rna_SplineIKConstraint_joint_bindings_set", NULL);
+ RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
/* settings */
- prop= RNA_def_property(srna, "affect_root", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_NO_ROOT);
- RNA_def_property_ui_text(prop, "Affect Root", "Include the root joint in the calculations.");
+ prop= RNA_def_property(srna, "chain_offset", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_NO_ROOT);
+ RNA_def_property_ui_text(prop, "Chain Offset", "Offset the entire chain relative to the root joint.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "even_divisions", PROP_BOOLEAN, PROP_NONE);
@@ -1716,15 +1763,20 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Even Divisions", "Ignore the relative lengths of the bones when fitting to the curve.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "keep_max_length", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED);
- RNA_def_property_ui_text(prop, "Keep Max Length", "Maintain the maximum length of the chain when spline is stretched.");
+ prop= RNA_def_property(srna, "y_stretch", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED);
+ RNA_def_property_ui_text(prop, "Y Stretch", "Stretch the Y axis of the bones to fit the curve.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
+ prop= RNA_def_property(srna, "use_curve_radius", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_NO_CURVERAD);
+ RNA_def_property_ui_text(prop, "Use Curve Radius", "Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "xz_scaling_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "xzScaleMode");
RNA_def_property_enum_items(prop, splineik_xz_scale_mode);
- RNA_def_property_ui_text(prop, "XZ Scale Mode", "Method used for determining the scaling of the X and Z axes of the bone.");
+ RNA_def_property_ui_text(prop, "XZ Scale Mode", "Method used for determining the scaling of the X and Z axes of the bones.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index 2ebf47bac99..179bc8bcd7d 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -67,6 +67,8 @@ EnumPropertyItem beztriple_keyframe_type_items[] = {
#include "WM_api.h"
+#include "MEM_guardedalloc.h"
+
static StructRNA *rna_Curve_refine(PointerRNA *ptr)
{
Curve *cu= (Curve*)ptr->data;
@@ -210,7 +212,7 @@ static void rna_Nurb_type_set(PointerRNA *ptr, int value)
static void rna_BPoint_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
Nurb *nu= (Nurb*)ptr->data;
- rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint*), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL);
+ rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL);
}
static void rna_Curve_update_data(bContext *C, PointerRNA *ptr)
@@ -227,6 +229,38 @@ static void rna_Curve_update_deps(bContext *C, PointerRNA *ptr)
rna_Curve_update_data(C, ptr);
}
+/* name functions that ignore the first two ID characters */
+void rna_Curve_body_get(PointerRNA *ptr, char *value)
+{
+ Curve *cu= (Curve*)ptr->id.data;
+ strcpy(value, cu->str);
+}
+
+int rna_Curve_body_length(PointerRNA *ptr)
+{
+ Curve *cu= (Curve*)ptr->id.data;
+ return strlen(cu->str);
+}
+
+/* TODO - check UTF & python play nice */
+void rna_Curve_body_set(PointerRNA *ptr, const char *value)
+{
+ int len= strlen(value);
+ Curve *cu= (Curve*)ptr->id.data;
+
+ cu->pos = len;
+ cu->len = len;
+
+ if(cu->str) MEM_freeN(cu->str);
+ if(cu->strinfo) MEM_freeN(cu->strinfo);
+
+ cu->str = MEM_callocN(len + sizeof(wchar_t), "str");
+ cu->strinfo = MEM_callocN( (len+4) *sizeof(CharInfo), "strinfo"); /* don't know why this is +4, just duplicating load_editText() */
+
+ //wcs2utf8s(cu->str, value); // value is not wchar_t
+ BLI_strncpy(cu->str, value, len+1);
+}
+
static void rna_Nurb_update_handle_data(bContext *C, PointerRNA *ptr)
{
Nurb *nu= (Nurb*)ptr->data;
@@ -257,8 +291,6 @@ static void rna_Nurb_update_knot_v(bContext *C, PointerRNA *ptr)
rna_Curve_update_data(C, ptr);
}
-
-
#else
static void rna_def_bpoint(BlenderRNA *brna)
@@ -266,9 +298,9 @@ static void rna_def_bpoint(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "CurvePoint", NULL);
+ srna= RNA_def_struct(brna, "SplinePoint", NULL);
RNA_def_struct_sdna(srna, "BPoint");
- RNA_def_struct_ui_text(srna, "CurvePoint", "Curve point without handles.");
+ RNA_def_struct_ui_text(srna, "SplinePoint", "Spline point without handles.");
/* Boolean values */
prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
@@ -282,12 +314,17 @@ static void rna_def_bpoint(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* Vector value */
- prop= RNA_def_property(srna, "point", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_array(prop, 4);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 3);
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_ui_text(prop, "Point", "Point coordinates");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+ prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "vec[3]");
+ RNA_def_property_ui_text(prop, "Weight", "Nurbs weight");
+ RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
/* Number values */
prop= RNA_def_property(srna, "tilt", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "alfa");
@@ -295,7 +332,8 @@ static void rna_def_bpoint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Tilt", "Tilt in 3d View");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "weight_softbody", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "weight");
RNA_def_property_range(prop, 0.01f, 100.0f);
RNA_def_property_ui_text(prop, "Weight", "Softbody goal weight");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -313,7 +351,7 @@ static void rna_def_beztriple(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "BezierCurvePoint", NULL);
+ srna= RNA_def_struct(brna, "BezierSplinePoint", NULL);
RNA_def_struct_sdna(srna, "BezTriple");
RNA_def_struct_ui_text(srna, "Bezier Curve Point", "Bezier curve point with two handles.");
@@ -370,7 +408,7 @@ static void rna_def_beztriple(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "control_point", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_BezTriple_ctrlpoint_get", "rna_BezTriple_ctrlpoint_set", NULL);
RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point");
@@ -546,12 +584,13 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_ui_text(prop, "Object Font", "Use Blender Objects as font characters. Give font objects a common name followed by the character it represents, eg. familya, familyb etc, and turn on Verts Duplication");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "str", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "body", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "str");
- RNA_def_property_ui_text(prop, "String", "");
- RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set");
+ RNA_def_property_ui_text(prop, "Body Text", "contence of this text object");
+ RNA_def_property_string_funcs(prop, "rna_Curve_body_get", "rna_Curve_body_length", "rna_Curve_body_set");
RNA_def_property_string_maxlength(prop, 8192); /* note that originally str did not have a limit! */
RNA_def_struct_name_property(srna, prop);
+ RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* pointers */
prop= RNA_def_property(srna, "text_on_curve", PROP_POINTER, PROP_NONE);
@@ -855,12 +894,12 @@ static void rna_def_curve_nurb(BlenderRNA *brna)
prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "bp", NULL);
- RNA_def_property_struct_type(prop, "CurvePoint");
- RNA_def_property_collection_funcs(prop, "rna_BPoint_array_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_Nurb_length", 0, 0, 0, 0);
+ RNA_def_property_struct_type(prop, "SplinePoint");
+ RNA_def_property_collection_funcs(prop, "rna_BPoint_array_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_Nurb_length", 0, 0);
RNA_def_property_ui_text(prop, "Points", "Collection of points that make up this poly or nurbs spline.");
prop= RNA_def_property(srna, "bezier_points", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_struct_type(prop, "BezierCurvePoint");
+ RNA_def_property_struct_type(prop, "BezierSplinePoint");
RNA_def_property_collection_sdna(prop, NULL, "bezt", "pntsu");
RNA_def_property_ui_text(prop, "Bezier Points", "Collection of points for bezier curves only.");
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index 46c4a8af73a..9bf5afdac48 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -654,7 +654,7 @@ StructRNA *RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *
if(DefRNA.preprocess) {
RNA_def_property_struct_type(prop, "Property");
- RNA_def_property_collection_funcs(prop, "rna_builtin_properties_begin", "rna_builtin_properties_next", "rna_iterator_listbase_end", "rna_builtin_properties_get", 0, 0, "rna_builtin_properties_lookup_string", 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_builtin_properties_begin", "rna_builtin_properties_next", "rna_iterator_listbase_end", "rna_builtin_properties_get", 0, 0, "rna_builtin_properties_lookup_string");
}
else {
#ifdef RNA_RUNTIME
@@ -662,7 +662,7 @@ StructRNA *RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *
cprop->begin= rna_builtin_properties_begin;
cprop->next= rna_builtin_properties_next;
cprop->get= rna_builtin_properties_get;
- cprop->type= &RNA_Property;
+ cprop->item_type= &RNA_Property;
#endif
}
@@ -1158,7 +1158,7 @@ void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
}
case PROP_COLLECTION: {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
- cprop->type = (StructRNA*)type;
+ cprop->item_type = (StructRNA*)type;
break;
}
default:
@@ -1189,7 +1189,7 @@ void RNA_def_property_struct_runtime(PropertyRNA *prop, StructRNA *type)
}
case PROP_COLLECTION: {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
- cprop->type = type;
+ cprop->item_type = type;
break;
}
default:
@@ -1732,6 +1732,16 @@ void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable)
if(editable) prop->editable= (EditableFunc)editable;
}
+void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable)
+{
+ if(!DefRNA.preprocess) {
+ fprintf(stderr, "RNA_def_property_editable_array_func: only during preprocessing.\n");
+ return;
+ }
+
+ if(editable) prop->itemeditable= (ItemEditableFunc)editable;
+}
+
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
{
if(!DefRNA.preprocess) {
@@ -1926,7 +1936,7 @@ void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const ch
}
}
-void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *add, const char *remove)
+void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring)
{
StructRNA *srna= DefRNA.laststruct;
@@ -1946,8 +1956,6 @@ void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, con
if(length) cprop->length= (PropCollectionLengthFunc)length;
if(lookupint) cprop->lookupint= (PropCollectionLookupIntFunc)lookupint;
if(lookupstring) cprop->lookupstring= (PropCollectionLookupStringFunc)lookupstring;
- if(add) cprop->add= (FunctionRNA*)add;
- if(remove) cprop->remove= (FunctionRNA*)remove;
break;
}
default:
@@ -1957,24 +1965,9 @@ void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, con
}
}
-void RNA_def_property_collection_active(PropertyRNA *prop, PropertyRNA *prop_act)
+void RNA_def_property_srna(PropertyRNA *prop, const char *type)
{
- if(!DefRNA.preprocess) {
- fprintf(stderr, "RNA_def_property_collection_active: only during preprocessing.\n");
- return;
- }
-
- switch(prop->type) {
- case PROP_COLLECTION: {
- CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
- cprop->active= prop_act;
- break;
- }
- default:
- fprintf(stderr, "RNA_def_property_collection_active: %s.%s, type is not collection.\n", prop->identifier, prop_act->identifier);
- DefRNA.error= 1;
- break;
- }
+ prop->srna= (StructRNA*)type;
}
/* Compact definitions */
diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c
index cdaebb2a3db..88dfe358f98 100644
--- a/source/blender/makesrna/intern/rna_fcurve.c
+++ b/source/blender/makesrna/intern/rna_fcurve.c
@@ -34,6 +34,7 @@
#include "DNA_anim_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "DNA_sound_types.h"
#include "MEM_guardedalloc.h"
@@ -49,6 +50,7 @@ EnumPropertyItem fmodifier_type_items[] = {
{FMODIFIER_TYPE_FILTER, "FILTER", 0, "Filter", ""},
{FMODIFIER_TYPE_PYTHON, "PYTHON", 0, "Python", ""},
{FMODIFIER_TYPE_LIMITS, "LIMITS", 0, "Limits", ""},
+ {FMODIFIER_TYPE_SOUND, "SOUND", 0, "Sound", ""},
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -76,6 +78,8 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr)
return &RNA_FModifierPython;
case FMODIFIER_TYPE_LIMITS:
return &RNA_FModifierLimits;
+ case FMODIFIER_TYPE_SOUND:
+ return &RNA_FModifierSound;
default:
return &RNA_UnknownType;
}
@@ -85,16 +89,39 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr)
#include "BKE_fcurve.h"
#include "BKE_depsgraph.h"
+#include "BKE_animsys.h"
static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr)
{
ID *id= ptr->id.data;
+ ChannelDriver *driver= ptr->data;
+
+ driver->flag &= ~DRIVER_FLAG_INVALID;
// TODO: this really needs an update guard...
DAG_scene_sort(CTX_data_scene(C));
- DAG_id_flush_update(id, OB_RECALC_DATA);
+ DAG_id_flush_update(id, OB_RECALC_OB|OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_SCENE, id);
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C));
+}
+
+static void rna_DriverTarget_update_data(bContext *C, PointerRNA *ptr)
+{
+ PointerRNA driverptr;
+ ChannelDriver *driver;
+ FCurve *fcu;
+ AnimData *adt= BKE_animdata_from_id(ptr->id.data);
+
+ /* find the driver this belongs to and update it */
+ for(fcu=adt->drivers.first; fcu; fcu=fcu->next) {
+ driver= fcu->driver;
+
+ if(driver && BLI_findindex(&driver->targets, ptr->data) != -1) {
+ RNA_pointer_create(ptr->id.data, &RNA_Driver, driver, &driverptr);
+ rna_ChannelDriver_update_data(C, &driverptr);
+ return;
+ }
+ }
}
/* ----------- */
@@ -111,6 +138,16 @@ static int rna_DriverTarget_id_editable(PointerRNA *ptr)
return (dtar->idtype)? PROP_EDITABLE : 0;
}
+static void rna_DriverTarget_id_type_set(PointerRNA *ptr, int value)
+{
+ DriverTarget *data= (DriverTarget*)(ptr->data);
+
+ /* set the driver type, then clear the id-block if the type is invalid */
+ data->idtype= value;
+ if ((data->id) && (GS(data->id->name) != data->idtype))
+ data->id= NULL;
+}
+
static void rna_DriverTarget_RnaPath_get(PointerRNA *ptr, char *value)
{
DriverTarget *dtar= (DriverTarget *)ptr->data;
@@ -180,8 +217,93 @@ static void rna_FCurve_RnaPath_set(PointerRNA *ptr, const char *value)
fcu->rna_path= NULL;
}
-#else
+DriverTarget *rna_Driver_new_target(ChannelDriver *driver)
+{
+ return driver_add_new_target(driver);
+}
+
+void rna_Driver_remove_target(ChannelDriver *driver, DriverTarget *dtar)
+{
+ /* call the API function for this */
+ driver_free_target(driver, dtar);
+}
+
+
+static PointerRNA rna_FCurve_active_modifier_get(PointerRNA *ptr)
+{
+ FCurve *fcu= (FCurve*)ptr->data;
+ FModifier *fcm= find_active_fmodifier(&fcu->modifiers);
+ return rna_pointer_inherit_refine(ptr, &RNA_FModifier, fcm);
+}
+
+static void rna_FCurve_active_modifier_set(PointerRNA *ptr, PointerRNA value)
+{
+ FCurve *fcu= (FCurve*)ptr->data;
+ set_active_fmodifier(&fcu->modifiers, (FModifier *)value.data);
+}
+
+static FModifier *rna_FCurve_modifiers_new(FCurve *fcu, bContext *C, int type)
+{
+ return add_fmodifier(&fcu->modifiers, type);
+}
+
+static int rna_FCurve_modifiers_remove(FCurve *fcu, bContext *C, int index)
+{
+ return remove_fmodifier_index(&fcu->modifiers, index);
+}
+
+static void rna_FModifier_active_set(PointerRNA *ptr, int value)
+{
+ FModifier *fm= (FModifier*)ptr->data;
+
+ /* don't toggle, always switch on */
+ fm->flag |= FMODIFIER_FLAG_ACTIVE;
+}
+
+static void rna_FModifier_active_update(bContext *C, PointerRNA *ptr)
+{
+ FModifier *fm, *fmo= (FModifier*)ptr->data;
+
+ /* clear active state of other FModifiers in this list */
+ for (fm=fmo->prev; fm; fm=fm->prev)
+ {
+ fm->flag &= ~FMODIFIER_FLAG_ACTIVE;
+ }
+ for (fm=fmo->next; fm; fm=fm->next)
+ {
+ fm->flag &= ~FMODIFIER_FLAG_ACTIVE;
+ }
+
+}
+static int rna_FModifierGenerator_coefficients_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+ FModifier *fcm= (FModifier*)ptr->data;
+ FMod_Generator *gen= fcm->data;
+
+ if(gen)
+ length[0]= gen->arraysize;
+ else
+ length[0]= 100; /* for raw_access, untested */
+
+ return length[0];
+}
+
+static void rna_FModifierGenerator_coefficients_get(PointerRNA *ptr, float *values)
+{
+ FModifier *fcm= (FModifier*)ptr->data;
+ FMod_Generator *gen= fcm->data;
+ memcpy(values, gen->coefficients, gen->arraysize * sizeof(float));
+}
+
+static void rna_FModifierGenerator_coefficients_set(PointerRNA *ptr, const float *values)
+{
+ FModifier *fcm= (FModifier*)ptr->data;
+ FMod_Generator *gen= fcm->data;
+ memcpy(gen->coefficients, values, gen->arraysize * sizeof(float));
+}
+
+#else
static void rna_def_fmodifier_generator(BlenderRNA *brna)
{
@@ -217,10 +339,12 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
/* coefficients array */
- // FIXME: this is quite difficult to try to wrap
- //prop= RNA_def_property(srna, "coefficients", PROP_COLLECTION, PROP_NONE);
- //RNA_def_property_collection_funcs(prop, "rna_FModifierGenerator_coefficients_begin", "rna_FModifierGenerator_coefficients_next", "rna_FModifierGenerator_coefficients_end", "rna_iterator_array_get", "rna_FModifierGenerator_coefficients_length", 0, 0, 0, 0);
- //RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0).");
+ prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_array(prop, 32);
+ RNA_def_property_flag(prop, PROP_DYNAMIC);
+ RNA_def_property_dynamic_array_funcs(prop, "rna_FModifierGenerator_coefficients_get_length");
+ RNA_def_property_float_funcs(prop, "rna_FModifierGenerator_coefficients_get", "rna_FModifierGenerator_coefficients_set", NULL);
+ RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0).");
}
/* --------- */
@@ -491,6 +615,46 @@ static void rna_def_fmodifier_noise(BlenderRNA *brna)
/* --------- */
+static void rna_def_fmodifier_sound(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem prop_modification_items[] = {
+ {FCM_SOUND_MODIF_REPLACE, "REPLACE", 0, "Replace", ""},
+ {FCM_SOUND_MODIF_ADD, "ADD", 0, "Add", ""},
+ {FCM_SOUND_MODIF_SUBTRACT, "SUBTRACT", 0, "Subtract", ""},
+ {FCM_SOUND_MODIF_MULTIPLY, "MULTIPLY", 0, "Multiply", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "FModifierSound", "FModifier");
+ RNA_def_struct_ui_text(srna, "Sound F-Modifier", "Modifies an F-Curve based on the amplitudes in a sound.");
+ RNA_def_struct_sdna_from(srna, "FMod_Sound", "data");
+
+ prop= RNA_def_property(srna, "modification", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, prop_modification_items);
+ RNA_def_property_ui_text(prop, "Modification", "Method of modifying the existing F-Curve.");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "strength");
+ RNA_def_property_ui_text(prop, "Strength", "Amplitude of the sound - the amount that it modifies the underlying curve");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "delay", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "delay");
+ RNA_def_property_ui_text(prop, "delay", "The delay before the sound curve modification should start");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Sound");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this modifier.");
+
+}
+
+/* --------- */
+
static void rna_def_fmodifier(BlenderRNA *brna)
{
StructRNA *srna;
@@ -518,12 +682,13 @@ static void rna_def_fmodifier(BlenderRNA *brna)
prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_EXPANDED);
RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI.");
+ RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_MUTED);
RNA_def_property_ui_text(prop, "Muted", "F-Curve Modifier will not be evaluated.");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
+ RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1);
// XXX this is really an internal flag, but it may be useful for some tools to be able to access this...
prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE);
@@ -536,7 +701,9 @@ static void rna_def_fmodifier(BlenderRNA *brna)
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_ACTIVE);
RNA_def_property_ui_text(prop, "Active", "F-Curve Modifier is the one being edited ");
- RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_FModifier_active_set");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, "rna_FModifier_active_update");
+ RNA_def_property_ui_icon(prop, ICON_RADIOBUT_OFF, 1);
}
/* *********************** */
@@ -553,7 +720,7 @@ static void rna_def_drivertarget(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_struct_name_property(srna, prop);
RNA_def_property_ui_text(prop, "Name", "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
/* Target Properties - ID-block to Drive */
prop= RNA_def_property(srna, "id", PROP_POINTER, PROP_NONE);
@@ -561,25 +728,58 @@ static void rna_def_drivertarget(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_editable_func(prop, "rna_DriverTarget_id_editable");
RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_DriverTarget_id_typef");
- RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from (id_type property must be set first)");
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
prop= RNA_def_property(srna, "id_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "idtype");
RNA_def_property_enum_items(prop, id_type_items);
RNA_def_property_enum_default(prop, ID_OB);
+ RNA_def_property_enum_funcs(prop, NULL, "rna_DriverTarget_id_type_set", NULL);
RNA_def_property_ui_text(prop, "ID Type", "Type of ID-block that can be used.");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
/* Target Properties - Property to Drive */
prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_DriverTarget_RnaPath_get", "rna_DriverTarget_RnaPath_length", "rna_DriverTarget_RnaPath_set");
RNA_def_property_ui_text(prop, "RNA Path", "RNA Path (from Object) to property used");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE);
RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific property used (if applicable)");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
+}
+
+
+/* channeldriver.targets.* */
+static void rna_def_channeldriver_targets(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+// PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "ChannelDriverTargets");
+ srna= RNA_def_struct(brna, "ChannelDriverTargets", NULL);
+ RNA_def_struct_sdna(srna, "ChannelDriver");
+ RNA_def_struct_ui_text(srna, "ChannelDriver Targets", "Collection of channel driver Targets.");
+
+
+ /* add target */
+ func= RNA_def_function(srna, "new", "rna_Driver_new_target");
+ RNA_def_function_ui_description(func, "Add a new target for the driver.");
+ /* return type */
+ parm= RNA_def_pointer(func, "target", "DriverTarget", "", "Newly created Driver Target.");
+ RNA_def_function_return(func, parm);
+
+ /* remove target */
+ func= RNA_def_function(srna, "remove", "rna_Driver_remove_target");
+ RNA_def_function_ui_description(func, "Remove an existing target from the driver.");
+ /* target to remove*/
+ parm= RNA_def_pointer(func, "target", "DriverTarget", "", "Target to remove from the driver.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
}
static void rna_def_channeldriver(BlenderRNA *brna)
@@ -606,14 +806,14 @@ static void rna_def_channeldriver(BlenderRNA *brna)
/* String values */
prop= RNA_def_property(srna, "expression", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Expression", "Expression to use for Scripted Expression.");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data");
/* Collections */
prop= RNA_def_property(srna, "targets", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "targets", NULL);
- RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "add_target", "remove_target");
RNA_def_property_struct_type(prop, "DriverTarget");
RNA_def_property_ui_text(prop, "Target Variables", "Properties acting as targets for this driver.");
+ rna_def_channeldriver_targets(brna, prop);
/* Functions */
RNA_api_drivers(srna);
@@ -642,6 +842,50 @@ static void rna_def_fpoint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Point", "Point coordinates");
}
+static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ /* add modifiers */
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "FCurveModifiers");
+ srna= RNA_def_struct(brna, "FCurveModifiers", NULL);
+ RNA_def_struct_sdna(srna, "FCurve");
+ RNA_def_struct_ui_text(srna, "F-Curve Modifiers", "Collection of F-Curve Modifiers.");
+
+
+ /* Collection active property */
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "FModifier");
+ RNA_def_property_pointer_funcs(prop, "rna_FCurve_active_modifier_get", "rna_FCurve_active_modifier_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active fcurve modifier", "Active fcurve modifier.");
+
+ /* Constraint collection */
+ func= RNA_def_function(srna, "new", "rna_FCurve_modifiers_new");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Add a constraint to this object");
+ /* return type */
+ parm= RNA_def_pointer(func, "fmodifier", "FModifier", "", "New fmodifier.");
+ RNA_def_function_return(func, parm);
+ /* object to add */
+ parm= RNA_def_enum(func, "type", fmodifier_type_items, 1, "", "Constraint type to add.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ func= RNA_def_function(srna, "remove", "rna_FCurve_modifiers_remove");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Remove a modifier from this fcurve.");
+ /* return type */
+ parm= RNA_def_boolean(func, "success", 0, "Success", "Removed the constraint successfully.");
+ RNA_def_function_return(func, parm);
+ /* object to add */
+ parm= RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "", 0, INT_MAX);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
static void rna_def_fcurve(BlenderRNA *brna)
{
StructRNA *srna;
@@ -697,12 +941,14 @@ static void rna_def_fcurve(BlenderRNA *brna)
prop= RNA_def_property(srna, "keyframe_points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "bezt", "totvert");
- RNA_def_property_struct_type(prop, "BezierCurvePoint");
+ RNA_def_property_struct_type(prop, "BezierSplinePoint");
RNA_def_property_ui_text(prop, "Keyframes", "User-editable keyframes");
prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "FModifier");
RNA_def_property_ui_text(prop, "Modifiers", "Modifiers affecting the shape of the F-Curve.");
+
+ rna_def_fcurve_modifiers(brna, prop);
}
/* *********************** */
@@ -725,6 +971,7 @@ void RNA_def_fcurve(BlenderRNA *brna)
rna_def_fmodifier_python(brna);
rna_def_fmodifier_limits(brna);
rna_def_fmodifier_noise(brna);
+ rna_def_fmodifier_sound(brna);
}
diff --git a/source/blender/makesrna/intern/rna_fcurve_api.c b/source/blender/makesrna/intern/rna_fcurve_api.c
index 12ffb3e26fb..d066d4f63fb 100644
--- a/source/blender/makesrna/intern/rna_fcurve_api.c
+++ b/source/blender/makesrna/intern/rna_fcurve_api.c
@@ -43,48 +43,12 @@
#include "BKE_animsys.h"
#include "BKE_fcurve.h"
-DriverTarget *rna_Driver_add_target(ChannelDriver *driver, char *name)
-{
- DriverTarget *dtar= driver_add_new_target(driver);
-
- /* set the name if given */
- if (name && name[0]) {
- BLI_strncpy(dtar->name, name, 64);
- BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64);
- }
-
- /* return this target for the users to play with */
- return dtar;
-}
-
-void rna_Driver_remove_target(ChannelDriver *driver, DriverTarget *dtar)
-{
- /* call the API function for this */
- driver_free_target(driver, dtar);
-}
-
#else
void RNA_api_drivers(StructRNA *srna)
{
- FunctionRNA *func;
- PropertyRNA *parm;
-
- /* add target */
- func= RNA_def_function(srna, "add_target", "rna_Driver_add_target");
- RNA_def_function_ui_description(func, "Add a new target for the driver.");
- /* return type */
- parm= RNA_def_pointer(func, "target", "DriverTarget", "", "Newly created Driver Target.");
- RNA_def_function_return(func, parm);
- /* optional name parameter */
- parm= RNA_def_string(func, "name", "", 64, "Name", "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)");
-
- /* remove target */
- func= RNA_def_function(srna, "remove_target", "rna_Driver_remove_target");
- RNA_def_function_ui_description(func, "Remove an existing target from the driver.");
- /* target to remove*/
- parm= RNA_def_pointer(func, "target", "DriverTarget", "", "Target to remove from the driver.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
+// FunctionRNA *func;
+// PropertyRNA *parm;
}
#endif
diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c
index dddc2062f07..a05485986d1 100644
--- a/source/blender/makesrna/intern/rna_group.c
+++ b/source/blender/makesrna/intern/rna_group.c
@@ -33,6 +33,14 @@
#ifdef RNA_RUNTIME
+#include "DNA_scene_types.h"
+#include "DNA_object_types.h"
+
+#include "BKE_group.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
static PointerRNA rna_Group_objects_get(CollectionPropertyIterator *iter)
{
ListBaseIterator *internal= iter->internal;
@@ -41,8 +49,60 @@ static PointerRNA rna_Group_objects_get(CollectionPropertyIterator *iter)
return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, ((GroupObject*)internal->link)->ob);
}
+static void rna_Group_objects_link(Group *group, bContext *C, ReportList *reports, Object *object)
+{
+ if(!add_to_group(group, object, CTX_data_scene(C), NULL)) {
+ BKE_reportf(reports, RPT_ERROR, "Object \"%s\" already in group \"%s\".", object->id.name+2, group->id.name+2);
+ return;
+ }
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id);
+}
+
+static void rna_Group_objects_unlink(Group *group, bContext *C, ReportList *reports, Object *object)
+{
+ if(!rem_from_group(group, object, CTX_data_scene(C), NULL)) {
+ BKE_reportf(reports, RPT_ERROR, "Object \"%s\" not in group \"%s\".", object->id.name+2, group->id.name+2);
+ return;
+ }
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id);
+}
+
#else
+/* group.objects */
+static void rna_def_group_objects(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+// PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "GroupObjects");
+ srna= RNA_def_struct(brna, "GroupObjects", NULL);
+ RNA_def_struct_sdna(srna, "Group");
+ RNA_def_struct_ui_text(srna, "Group Objects", "Collection of group objects.");
+
+ /* add object */
+ func= RNA_def_function(srna, "link", "rna_Group_objects_link");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Add this object to a group");
+ /* object to add */
+ parm= RNA_def_pointer(func, "object", "Object", "", "Object to add.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ /* remove object */
+ func= RNA_def_function(srna, "unlink", "rna_Group_objects_unlink");
+ RNA_def_function_ui_description(func, "Remove this object to a group");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ /* object to remove */
+ parm= RNA_def_pointer(func, "object", "Object", "", "Object to remove.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
+
void RNA_def_group(BlenderRNA *brna)
{
StructRNA *srna;
@@ -56,17 +116,21 @@ void RNA_def_group(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "dupli_ofs");
RNA_def_property_ui_text(prop, "Dupli Offset", "Offset from the center to use when instancing as DupliGroup.");
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 4);
-
+
+ prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER);
+ RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
+ RNA_def_property_array(prop, 20);
+ RNA_def_property_ui_text(prop, "Dupli Layers", "Layers visible when this groups is instanced as a dupli.");
+
+
prop= RNA_def_property(srna, "objects", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "gobject", NULL);
RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Objects", "A collection of this groups objects.");
- RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_Group_objects_get", 0, 0, 0, 0, 0);
-
- prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER);
- RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
- RNA_def_property_array(prop, 20);
- RNA_def_property_ui_text(prop, "Dupli Layers", "Layers visible when this groups is instanced as a dupli.");
+ RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_Group_objects_get", 0, 0, 0);
+
+ rna_def_group_objects(brna, prop);
+
}
#endif
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index d90b4f17c85..64af7e07fd5 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -213,6 +213,7 @@ void RNA_api_main(struct StructRNA *srna);
void RNA_api_material(StructRNA *srna);
void RNA_api_mesh(struct StructRNA *srna);
void RNA_api_object(struct StructRNA *srna);
+void RNA_api_pose_channel(struct StructRNA *srna);
void RNA_api_scene(struct StructRNA *srna);
void RNA_api_text(struct StructRNA *srna);
void RNA_api_ui_layout(struct StructRNA *srna);
diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h
index 434e4ee6fe9..8a35f831c96 100644
--- a/source/blender/makesrna/intern/rna_internal_types.h
+++ b/source/blender/makesrna/intern/rna_internal_types.h
@@ -47,10 +47,15 @@ struct GHash;
#define RNA_MAX_ARRAY_DIMENSION 3
+
+/* store local properties here */
+#define RNA_IDP_UI "_RNA_UI"
+
/* Function Callbacks */
typedef void (*UpdateFunc)(struct bContext *C, struct PointerRNA *ptr);
typedef int (*EditableFunc)(struct PointerRNA *ptr);
+typedef int (*ItemEditableFunc)(struct PointerRNA *ptr, int index);
typedef struct IDProperty* (*IDPropertiesFunc)(struct PointerRNA *ptr, int create);
typedef struct StructRNA *(*StructRefineFunc)(struct PointerRNA *ptr);
typedef char *(*StructPathFunc)(struct PointerRNA *ptr);
@@ -148,12 +153,19 @@ struct PropertyRNA {
UpdateFunc update;
int noteflag;
- /* callback for testing if editable/evaluated */
+ /* callback for testing if editable */
EditableFunc editable;
+ /* callback for testing if array-item editable (if applicable) */
+ ItemEditableFunc itemeditable;
/* raw access */
int rawoffset;
RawPropertyType rawtype;
+
+ /* This is used for accessing props/functions of this property
+ * any property can have this but should only be used for collections and arrays
+ * since python will convert int/bool/pointer's */
+ struct StructRNA *srna; /* attributes attached directly to this collection */
};
/* Property Types */
@@ -255,11 +267,8 @@ typedef struct CollectionPropertyRNA {
PropCollectionLengthFunc length; /* optional */
PropCollectionLookupIntFunc lookupint; /* optional */
PropCollectionLookupStringFunc lookupstring; /* optional */
- FunctionRNA *add, *remove;
- PropertyRNA *active;
-
- struct StructRNA *type;
+ struct StructRNA *item_type; /* the type of this item */
} CollectionPropertyRNA;
diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c
index ca36da5d03b..49dd96241cd 100644
--- a/source/blender/makesrna/intern/rna_key.c
+++ b/source/blender/makesrna/intern/rna_key.c
@@ -434,7 +434,7 @@ static void rna_def_keyblock(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "data", "totelem");
RNA_def_property_struct_type(prop, "UnknownType");
RNA_def_property_ui_text(prop, "Data", "");
- RNA_def_property_collection_funcs(prop, "rna_ShapeKey_data_begin", 0, 0, "rna_ShapeKey_data_get", "rna_ShapeKey_data_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_ShapeKey_data_begin", 0, 0, "rna_ShapeKey_data_get", "rna_ShapeKey_data_length", 0, 0);
}
static void rna_def_key(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c
index 1f7eee4d2d8..aff38ebdd74 100644
--- a/source/blender/makesrna/intern/rna_lattice.c
+++ b/source/blender/makesrna/intern/rna_lattice.c
@@ -183,7 +183,7 @@ static void rna_def_latticepoint(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_collection_funcs(prop, "rna_LatticePoint_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_LatticePoint_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
RNA_def_property_struct_type(prop, "VertexGroupElement");
RNA_def_property_ui_text(prop, "Groups", "Weights for the vertex groups this point is member of.");
}
@@ -254,7 +254,7 @@ static void rna_def_lattice(BlenderRNA *brna)
prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "LatticePoint");
- RNA_def_property_collection_funcs(prop, "rna_Lattice_points_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Lattice_points_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Points", "Points of the lattice.");
}
diff --git a/source/blender/makesrna/intern/rna_main.c b/source/blender/makesrna/intern/rna_main.c
index 910a15890cb..82988a06af9 100644
--- a/source/blender/makesrna/intern/rna_main.c
+++ b/source/blender/makesrna/intern/rna_main.c
@@ -129,11 +129,13 @@ static void rna_Main_camera_begin(CollectionPropertyIterator *iter, PointerRNA *
rna_iterator_listbase_begin(iter, &bmain->camera, NULL);
}
+#if 0
static void rna_Main_key_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
Main *bmain= (Main*)ptr->data;
rna_iterator_listbase_begin(iter, &bmain->key, NULL);
}
+#endif
static void rna_Main_world_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
@@ -238,35 +240,35 @@ void RNA_def_main(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- const char *lists[][7]= {
- {"cameras", "Camera", "rna_Main_camera_begin", "Cameras", "Camera datablocks.", NULL, NULL},
- {"scenes", "Scene", "rna_Main_scene_begin", "Scenes", "Scene datablocks.", NULL, NULL},
- {"objects", "Object", "rna_Main_object_begin", "Objects", "Object datablocks.", NULL, NULL},
- {"materials", "Material", "rna_Main_mat_begin", "Materials", "Material datablocks.", NULL, NULL},
- {"nodegroups", "NodeTree", "rna_Main_nodetree_begin", "Node Groups", "Node group datablocks.", NULL, NULL},
- {"meshes", "Mesh", "rna_Main_mesh_begin", "Meshes", "Mesh datablocks.", "add_mesh", "remove_mesh"},
- {"lamps", "Lamp", "rna_Main_lamp_begin", "Lamps", "Lamp datablocks.", NULL, NULL},
- {"libraries", "Library", "rna_Main_library_begin", "Libraries", "Library datablocks.", NULL, NULL},
- {"screens", "Screen", "rna_Main_screen_begin", "Screens", "Screen datablocks.", NULL, NULL},
- {"windowmanagers", "WindowManager", "rna_Main_wm_begin", "Window Managers", "Window manager datablocks.", NULL, NULL},
- {"images", "Image", "rna_Main_image_begin", "Images", "Image datablocks.", NULL, NULL},
- {"lattices", "Lattice", "rna_Main_latt_begin", "Lattices", "Lattice datablocks.", NULL, NULL},
- {"curves", "Curve", "rna_Main_curve_begin", "Curves", "Curve datablocks.", NULL, NULL} ,
- {"metaballs", "MetaBall", "rna_Main_mball_begin", "Metaballs", "Metaball datablocks.", NULL, NULL},
- {"vfonts", "VectorFont", "rna_Main_vfont_begin", "Vector Fonts", "Vector font datablocks.", NULL, NULL},
- {"textures", "Texture", "rna_Main_tex_begin", "Textures", "Texture datablocks.", NULL, NULL},
- {"brushes", "Brush", "rna_Main_brush_begin", "Brushes", "Brush datablocks.", NULL, NULL},
- {"worlds", "World", "rna_Main_world_begin", "Worlds", "World datablocks.", NULL, NULL},
- {"groups", "Group", "rna_Main_group_begin", "Groups", "Group datablocks.", NULL, NULL},
- {"keys", "Key", "rna_Main_key_begin", "Keys", "Key datablocks.", NULL, NULL},
- {"scripts", "ID", "rna_Main_script_begin", "Scripts", "Script datablocks (DEPRECATED).", NULL, NULL},
- {"texts", "Text", "rna_Main_text_begin", "Texts", "Text datablocks.", NULL, NULL},
- {"sounds", "Sound", "rna_Main_sound_begin", "Sounds", "Sound datablocks.", NULL, NULL},
- {"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks.", NULL, NULL},
- {"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks.", NULL, NULL},
- {"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks.", NULL, NULL},
- {"gpencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks.", NULL, NULL},
- {NULL, NULL, NULL, NULL, NULL, NULL, NULL}};
+ const char *lists[][5]= {
+ {"cameras", "Camera", "rna_Main_camera_begin", "Cameras", "Camera datablocks."},
+ {"scenes", "Scene", "rna_Main_scene_begin", "Scenes", "Scene datablocks."},
+ {"objects", "Object", "rna_Main_object_begin", "Objects", "Object datablocks."},
+ {"materials", "Material", "rna_Main_mat_begin", "Materials", "Material datablocks."},
+ {"nodegroups", "NodeTree", "rna_Main_nodetree_begin", "Node Groups", "Node group datablocks."},
+ {"meshes", "Mesh", "rna_Main_mesh_begin", "Meshes", "Mesh datablocks."}, // "add_mesh", "remove_mesh"
+ {"lamps", "Lamp", "rna_Main_lamp_begin", "Lamps", "Lamp datablocks."},
+ {"libraries", "Library", "rna_Main_library_begin", "Libraries", "Library datablocks."},
+ {"screens", "Screen", "rna_Main_screen_begin", "Screens", "Screen datablocks."},
+ {"windowmanagers", "WindowManager", "rna_Main_wm_begin", "Window Managers", "Window manager datablocks."},
+ {"images", "Image", "rna_Main_image_begin", "Images", "Image datablocks."},
+ {"lattices", "Lattice", "rna_Main_latt_begin", "Lattices", "Lattice datablocks."},
+ {"curves", "Curve", "rna_Main_curve_begin", "Curves", "Curve datablocks."} ,
+ {"metaballs", "MetaBall", "rna_Main_mball_begin", "Metaballs", "Metaball datablocks."},
+ {"vfonts", "VectorFont", "rna_Main_vfont_begin", "Vector Fonts", "Vector font datablocks."},
+ {"textures", "Texture", "rna_Main_tex_begin", "Textures", "Texture datablocks."},
+ {"brushes", "Brush", "rna_Main_brush_begin", "Brushes", "Brush datablocks."},
+ {"worlds", "World", "rna_Main_world_begin", "Worlds", "World datablocks."},
+ {"groups", "Group", "rna_Main_group_begin", "Groups", "Group datablocks."},
+/* {"keys", "Key", "rna_Main_key_begin", "Keys", "Key datablocks."}, */
+ {"scripts", "ID", "rna_Main_script_begin", "Scripts", "Script datablocks (DEPRECATED)."},
+ {"texts", "Text", "rna_Main_text_begin", "Texts", "Text datablocks."},
+ {"sounds", "Sound", "rna_Main_sound_begin", "Sounds", "Sound datablocks."},
+ {"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks."},
+ {"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks."},
+ {"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks."},
+ {"gpencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks."},
+ {NULL, NULL, NULL, NULL, NULL}};
int i;
srna= RNA_def_struct(brna, "Main", NULL);
@@ -283,7 +285,7 @@ void RNA_def_main(BlenderRNA *brna)
{
prop= RNA_def_property(srna, lists[i][0], PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, lists[i][1]);
- RNA_def_property_collection_funcs(prop, lists[i][2], "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0, lists[i][5], lists[i][6]);
+ RNA_def_property_collection_funcs(prop, lists[i][2], "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_ui_text(prop, lists[i][3], lists[i][4]);
}
diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c
index e311cad4568..5ff8bffe715 100644
--- a/source/blender/makesrna/intern/rna_material.c
+++ b/source/blender/makesrna/intern/rna_material.c
@@ -1437,7 +1437,7 @@ static void rna_def_material_physics(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Material Physics", "Physics settings for a Material datablock.");
prop= RNA_def_property(srna, "align_to_normal", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FH_NOR);
+ RNA_def_property_boolean_sdna(prop, NULL, "dynamode", MA_FH_NOR);
RNA_def_property_ui_text(prop, "Align to Normal", "Align dynamic game objects along the surface normal, when inside the physics distance area");
prop= RNA_def_property(srna, "friction", PROP_FLOAT, PROP_NONE);
@@ -1748,7 +1748,7 @@ void rna_def_mtex_common(StructRNA *srna, const char *begin, const char *activeg
/* mtex */
prop= RNA_def_property(srna, "textures", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, structname);
- RNA_def_property_collection_funcs(prop, begin, "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_dereference_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, begin, "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_dereference_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Textures", "Texture slots defining the mapping and influence of textures.");
prop= RNA_def_property(srna, "active_texture", PROP_POINTER, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index b02b6d8bba3..bacd7fc2b72 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -39,7 +39,7 @@
#include "DNA_scene_types.h"
#include "BLI_editVert.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_customdata.h"
#include "BKE_depsgraph.h"
@@ -123,9 +123,9 @@ static void rna_MeshFace_normal_get(PointerRNA *ptr, float *values)
MFace *mface= (MFace*)ptr->data;
if(mface->v4)
- CalcNormFloat4(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, me->mvert[mface->v4].co, values);
+ normal_quad_v3( values,me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, me->mvert[mface->v4].co);
else
- CalcNormFloat(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, values);
+ normal_tri_v3( values,me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co);
}
static float rna_MeshFace_area_get(PointerRNA *ptr)
@@ -134,9 +134,9 @@ static float rna_MeshFace_area_get(PointerRNA *ptr)
MFace *mface= (MFace*)ptr->data;
if(mface->v4)
- return AreaQ3Dfl(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, me->mvert[mface->v4].co);
+ return area_quad_v3(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, me->mvert[mface->v4].co);
else
- return AreaT3Dfl(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co);
+ return area_tri_v3(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co);
}
/* notice red and blue are swapped */
@@ -268,6 +268,15 @@ static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render)
else return (n == CustomData_get_active_layer_index(fdata, type));
}
+static int rna_CustomDataLayer_clone_get(PointerRNA *ptr, int type, int render)
+{
+ Mesh *me= (Mesh*)ptr->id.data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
+
+ return (n == CustomData_get_clone_layer_index(fdata, type));
+}
+
static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render)
{
Mesh *me= (Mesh*)ptr->id.data;
@@ -281,6 +290,18 @@ static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type,
else CustomData_set_layer_active_index(fdata, type, n);
}
+static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, int value, int type, int render)
+{
+ Mesh *me= (Mesh*)ptr->id.data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
+
+ if(value == 0)
+ return;
+
+ CustomData_set_layer_clone_index(fdata, type, n);
+}
+
static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data)
{
CustomDataLayer *layer= (CustomDataLayer*)data;
@@ -309,6 +330,16 @@ static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
}
+static PointerRNA rna_Mesh_clone_uv_texture_get(PointerRNA *ptr)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ int index= CustomData_get_clone_layer_index(fdata, CD_MTFACE);
+ CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
+
+ return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
+}
+
static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
{
Mesh *me= (Mesh*)ptr->data;
@@ -325,6 +356,22 @@ static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
}
}
+static void rna_Mesh_clone_uv_texture_set(PointerRNA *ptr, PointerRNA value)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ CustomDataLayer *cdl;
+ int a;
+
+ for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
+ if(value.data == cdl) {
+ CustomData_set_layer_clone_index(fdata, CD_MTFACE, a);
+ mesh_update_customdata_pointers(me);
+ return;
+ }
+ }
+}
+
static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
{
Mesh *me= (Mesh*)ptr->data;
@@ -332,6 +379,13 @@ static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
return CustomData_get_active_layer(fdata, CD_MTFACE);
}
+static int rna_Mesh_clone_uv_texture_index_get(PointerRNA *ptr)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ return CustomData_get_clone_layer(fdata, CD_MTFACE);
+}
+
static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
{
Mesh *me= (Mesh*)ptr->data;
@@ -341,6 +395,15 @@ static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
mesh_update_customdata_pointers(me);
}
+static void rna_Mesh_clone_uv_texture_index_set(PointerRNA *ptr, int value)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+
+ CustomData_set_layer_clone(fdata, CD_MTFACE, value);
+ mesh_update_customdata_pointers(me);
+}
+
static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max)
{
Mesh *me= (Mesh*)ptr->data;
@@ -480,6 +543,11 @@ static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr)
return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 0);
}
+static int rna_MeshTextureFaceLayer_clone_get(PointerRNA *ptr)
+{
+ return rna_CustomDataLayer_clone_get(ptr, CD_MTFACE, 0);
+}
+
static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value)
{
rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 1);
@@ -490,6 +558,11 @@ static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value)
rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 0);
}
+static void rna_MeshTextureFaceLayer_clone_set(PointerRNA *ptr, int value)
+{
+ rna_CustomDataLayer_clone_set(ptr, value, CD_MTFACE, 0);
+}
+
static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value)
{
Mesh *me= (Mesh*)ptr->id.data;
@@ -936,7 +1009,7 @@ static void rna_def_mvert(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_collection_funcs(prop, "rna_MeshVertex_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_MeshVertex_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
RNA_def_property_struct_type(prop, "VertexGroupElement");
RNA_def_property_ui_text(prop, "Groups", "Weights for the vertex groups this vertex is member of.");
@@ -1108,10 +1181,16 @@ static void rna_def_mtface(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+ prop= RNA_def_property(srna, "active_clone", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "active_clone", 0);
+ RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_clone_get", "rna_MeshTextureFaceLayer_clone_set");
+ RNA_def_property_ui_text(prop, "Active Clone", "Sets the layer as active for cloning");
+ RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MeshTextureFace");
RNA_def_property_ui_text(prop, "Data", "");
- RNA_def_property_collection_funcs(prop, "rna_MeshTextureFaceLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshTextureFaceLayer_data_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_MeshTextureFaceLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshTextureFaceLayer_data_length", 0, 0);
srna= RNA_def_struct(brna, "MeshTextureFace", NULL);
RNA_def_struct_sdna(srna, "MTFace");
@@ -1283,7 +1362,7 @@ static void rna_def_mcol(BlenderRNA *brna)
prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MeshColor");
RNA_def_property_ui_text(prop, "Data", "");
- RNA_def_property_collection_funcs(prop, "rna_MeshColorLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshColorLayer_data_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_MeshColorLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshColorLayer_data_length", 0, 0);
srna= RNA_def_struct(brna, "MeshColor", NULL);
RNA_def_struct_sdna(srna, "MCol");
@@ -1338,7 +1417,7 @@ static void rna_def_mproperties(BlenderRNA *brna)
prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MeshFloatProperty");
RNA_def_property_ui_text(prop, "Data", "");
- RNA_def_property_collection_funcs(prop, "rna_MeshFloatPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshFloatPropertyLayer_data_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_MeshFloatPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshFloatPropertyLayer_data_length", 0, 0);
srna= RNA_def_struct(brna, "MeshFloatProperty", NULL);
RNA_def_struct_sdna(srna, "MFloatProperty");
@@ -1364,7 +1443,7 @@ static void rna_def_mproperties(BlenderRNA *brna)
prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MeshIntProperty");
RNA_def_property_ui_text(prop, "Data", "");
- RNA_def_property_collection_funcs(prop, "rna_MeshIntPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshIntPropertyLayer_data_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_MeshIntPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshIntPropertyLayer_data_length", 0, 0);
srna= RNA_def_struct(brna, "MeshIntProperty", NULL);
RNA_def_struct_sdna(srna, "MIntProperty");
@@ -1390,7 +1469,7 @@ static void rna_def_mproperties(BlenderRNA *brna)
prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MeshStringProperty");
RNA_def_property_ui_text(prop, "Data", "");
- RNA_def_property_collection_funcs(prop, "rna_MeshStringPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshStringPropertyLayer_data_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_MeshStringPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshStringPropertyLayer_data_length", 0, 0);
srna= RNA_def_struct(brna, "MeshStringProperty", NULL);
RNA_def_struct_sdna(srna, "MStringProperty");
@@ -1476,7 +1555,7 @@ static void rna_def_mesh(BlenderRNA *brna)
/* UV textures */
prop= RNA_def_property(srna, "uv_textures", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
- RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_textures_begin", 0, 0, 0, "rna_Mesh_uv_textures_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_textures_begin", 0, 0, 0, "rna_Mesh_uv_textures_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
RNA_def_property_ui_text(prop, "UV Textures", "");
@@ -1492,11 +1571,23 @@ static void rna_def_mesh(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active UV Texture Index", "Active UV texture index.");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+ prop= RNA_def_property(srna, "clone_uv_texture", PROP_POINTER, PROP_UNSIGNED);
+ RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
+ RNA_def_property_pointer_funcs(prop, "rna_Mesh_clone_uv_texture_get", "rna_Mesh_clone_uv_texture_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Clone UV Texture", "UV texture to be used as cloning source.");
+ RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
+ prop= RNA_def_property(srna, "clone_uv_texture_index", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_funcs(prop, "rna_Mesh_clone_uv_texture_index_get", "rna_Mesh_clone_uv_texture_index_set", "rna_Mesh_active_uv_texture_index_range");
+ RNA_def_property_ui_text(prop, "Clone UV Texture Index", "Clone UV texture index.");
+ RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
/* Vertex colors */
prop= RNA_def_property(srna, "vertex_colors", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
- RNA_def_property_collection_funcs(prop, "rna_Mesh_vertex_colors_begin", 0, 0, 0, "rna_Mesh_vertex_colors_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_vertex_colors_begin", 0, 0, 0, "rna_Mesh_vertex_colors_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshColorLayer");
RNA_def_property_ui_text(prop, "Vertex Colors", "");
@@ -1514,19 +1605,19 @@ static void rna_def_mesh(BlenderRNA *brna)
prop= RNA_def_property(srna, "float_layers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
- RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", 0, 0, 0, "rna_Mesh_float_layers_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", 0, 0, 0, "rna_Mesh_float_layers_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshFloatPropertyLayer");
RNA_def_property_ui_text(prop, "Float Property Layers", "");
prop= RNA_def_property(srna, "int_layers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
- RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", 0, 0, 0, "rna_Mesh_int_layers_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", 0, 0, 0, "rna_Mesh_int_layers_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshIntPropertyLayer");
RNA_def_property_ui_text(prop, "Int Property Layers", "");
prop= RNA_def_property(srna, "string_layers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
- RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", 0, 0, 0, "rna_Mesh_string_layers_length", 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", 0, 0, 0, "rna_Mesh_string_layers_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshStringPropertyLayer");
RNA_def_property_ui_text(prop, "String Property Layers", "");
@@ -1636,7 +1727,8 @@ static void rna_def_mesh(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_paint_mask", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "editflag", ME_EDIT_PAINT_MASK);
RNA_def_property_ui_text(prop, "Paint Mask", "Face selection masking for painting");
-
+ RNA_def_property_ui_icon(prop, ICON_FACESEL_HLT, 0);
+ RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
rna_def_texmat_common(srna, "rna_Mesh_texspace_editable");
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 93972894ef1..a86d889d6cf 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -216,8 +216,17 @@ static void rna_Smoke_set_type(bContext *C, PointerRNA *ptr)
smokeModifier_free(smd); // XXX TODO: completely free all 3 pointers
smokeModifier_createType(smd); // create regarding of selected type
- if(smd->type & MOD_SMOKE_TYPE_DOMAIN)
- ob->dt = OB_WIRE;
+ switch (smd->type) {
+ case MOD_SMOKE_TYPE_DOMAIN:
+ ob->dt = OB_WIRE;
+ break;
+ case MOD_SMOKE_TYPE_FLOW:
+ case MOD_SMOKE_TYPE_COLL:
+ case 0:
+ default:
+ ob->dt = OB_SHADED;
+ break;
+ }
// update dependancy since a domain - other type switch could have happened
rna_Modifier_dependency_update(C, ptr);
@@ -507,7 +516,7 @@ static void rna_def_modifier_subsurf(BlenderRNA *brna)
prop= RNA_def_property(srna, "subsurf_uv", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_SubsurfUv);
- RNA_def_property_ui_text(prop, "Subsurf UV", "Use subsurf to subdivide UVs.");
+ RNA_def_property_ui_text(prop, "Subdivide UVs", "Use subsurf to subdivide UVs.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
@@ -669,7 +678,7 @@ static void rna_def_modifier_mirror(BlenderRNA *brna)
prop= RNA_def_property(srna, "merge_limit", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "tolerance");
RNA_def_property_range(prop, 0, FLT_MAX);
- RNA_def_property_ui_range(prop, 0, 1, 10, 3);
+ RNA_def_property_ui_range(prop, 0, 1, 0.01, 6);
RNA_def_property_ui_text(prop, "Merge Limit", "Distance from axis within which mirrored vertices are merged.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1224,7 +1233,7 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna)
prop= RNA_def_property(srna, "projectors", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "UVProjector");
- RNA_def_property_collection_funcs(prop, "rna_UVProject_projectors_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_UVProject_projectors_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Projectors", "");
prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
@@ -1388,6 +1397,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
+ static EnumPropertyItem prop_mode_items[] = {
+ {0, "VOLUME", 0, "Volume", "Bind to volume inside cage mesh."},
+ {1, "SURFACE", 0, "Surface", "Bind to surface of cage mesh."},
+ {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "MeshDeformModifier", "Modifier");
RNA_def_struct_ui_text(srna, "MeshDeform Modifier", "Mesh deformation modifier to deform with other meshes.");
@@ -1427,6 +1440,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dynamic", "Recompute binding dynamically on top of other deformers (slower and more memory consuming.)");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
+ prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, prop_mode_items);
+ RNA_def_property_ui_text(prop, "Mode", "Method of binding vertices are bound to cage mesh.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
static void rna_def_modifier_particlesystem(BlenderRNA *brna)
@@ -1843,9 +1860,9 @@ static void rna_def_modifier_mask(BlenderRNA *brna)
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MaskModifier_vgroup_set");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "inverse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MASK_INV);
- RNA_def_property_ui_text(prop, "Inverse", "Use vertices that are not part of region defined.");
+ RNA_def_property_ui_text(prop, "Invert", "Use vertices that are not part of region defined.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index e5b8ce3be0b..1aec395b43f 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -36,90 +36,13 @@
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
+#include "BKE_animsys.h"
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_image.h"
#include "BKE_texture.h"
-static EnumPropertyItem node_blend_type_items[] = {
- { 0, "MIX", 0, "Mix", ""},
- { 1, "ADD", 0, "Add", ""},
- { 3, "SUBTRACT", 0, "Subtract", ""},
- { 2, "MULTIPLY", 0, "Multiply", ""},
- { 4, "SCREEN", 0, "Screen", ""},
- { 9, "OVERLAY", 0, "Overlay", ""},
- { 5, "DIVIDE", 0, "Divide", ""},
- { 6, "DIFFERENCE", 0, "Difference", ""},
- { 7, "DARKEN", 0, "Darken", ""},
- { 8, "LIGHTEN", 0, "Lighten", ""},
- {10, "DODGE", 0, "Dodge", ""},
- {11, "BURN", 0, "Burn", ""},
- {15, "COLOR", 0, "Color", ""},
- {14, "VALUE", 0, "Value", ""},
- {13, "SATURATION", 0, "Saturation", ""},
- {12, "HUE", 0, "Hue", ""},
- {16, "SOFT_LIGHT", 0, "Soft Light", ""},
- {17, "LINEAR_LIGHT", 0, "Linear Light",""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem node_flip_items[] = {
- {0, "X", 0, "Flip X", ""},
- {1, "Y", 0, "Flip Y", ""},
- {2, "XY", 0, "Flip X & Y", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem node_math_items[] = {
- { 0, "ADD", 0, "Add", ""},
- { 1, "SUBTRACT", 0, "Subtract", ""},
- { 2, "MULTIPLY", 0, "Multiply", ""},
- { 3, "DIVIDE", 0, "Divide", ""},
- { 4, "SINE", 0, "Sine", ""},
- { 5, "COSINE", 0, "Cosine", ""},
- { 6, "TANGENT", 0, "Tangent", ""},
- { 7, "ARCSINE", 0, "Arcsine", ""},
- { 8, "ARCCOSINE", 0, "Arccosine", ""},
- { 9, "ARCTANGENT", 0, "Arctangent", ""},
- {10, "POWER", 0, "Power", ""},
- {11, "LOGARITHM", 0, "Logarithm", ""},
- {12, "MINIMUM", 0, "Minimum", ""},
- {13, "MAXIMUM", 0, "Maximum", ""},
- {14, "ROUND", 0, "Round", ""},
- {15, "LESS_THAN", 0, "Less Than", ""},
- {16, "GREATER_THAN", 0, "Greater Than", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem node_vec_math_items[] = {
- {0, "ADD", 0, "Add", ""},
- {1, "SUBTRACT", 0, "Subtract", ""},
- {2, "AVERAGE", 0, "Average", ""},
- {3, "DOT_PRODUCT", 0, "Dot Product", ""},
- {4, "CROSS_PRODUCT", 0, "Cross Product", ""},
- {5, "NORMALIZE", 0, "Normalize", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem node_filter_items[] = {
- {0, "SOFTEN", 0, "Soften", ""},
- {1, "SHARPEN", 0, "Sharpen", ""},
- {2, "LAPLACE", 0, "Laplace", ""},
- {3, "SOBEL", 0, "Sobel", ""},
- {4, "PREWITT", 0, "Prewitt", ""},
- {5, "KIRSCH", 0, "Kirsch", ""},
- {6, "SHADOW", 0, "Shadow", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem prop_image_layer_items[] = {
- { 0, "PLACEHOLDER", 0, "Placeholder", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem prop_scene_layer_items[] = {
- { 0, "PLACEHOLDER", 0, "Placeholder", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem prop_tri_channel_items[] = {
- { 1, "R", 0, "R", ""},
- { 2, "G", 0, "G", ""},
- { 3, "B", 0, "B", ""},
- {0, NULL, 0, NULL, NULL}};
+#include "WM_types.h"
#ifdef RNA_RUNTIME
@@ -145,13 +68,47 @@ static StructRNA *rna_Node_refine(struct PointerRNA *ptr)
}
}
+static StructRNA *rna_NodeSocketType_refine(struct PointerRNA *ptr)
+{
+ bNodeSocket *ns= (bNodeSocket*)ptr->data;
+
+ switch(ns->type) {
+ case SOCK_VALUE:
+ return &RNA_ValueNodeSocket;
+ case SOCK_VECTOR:
+ return &RNA_VectorNodeSocket;
+ case SOCK_RGBA:
+ return &RNA_RGBANodeSocket;
+ default:
+ return &RNA_UnknownType;
+ }
+}
+
static char *rna_Node_path(PointerRNA *ptr)
{
- bNodeTree *ntree= (bNodeTree*)ptr->id.data;
bNode *node= (bNode*)ptr->data;
- int index = BLI_findindex(&ntree->nodes, node);
+
+ return BLI_sprintfN("nodes[\"%s\"]", node->name);
+}
+
+static char *rna_NodeSocket_path(PointerRNA *ptr)
+{
+ bNodeTree *ntree= (bNodeTree*)ptr->id.data;
+ bNodeSocket *sock= (bNodeSocket*)ptr->data;
+ bNode *node;
+ int socketindex;
+
+ if (!nodeFindNode(ntree, sock, &node, NULL)) return NULL;
+
+ socketindex = BLI_findindex(&node->inputs, sock);
+ if (socketindex != -1)
+ return BLI_sprintfN("nodes[\"%s\"].inputs[%d]", node->name, socketindex);
+
+ socketindex = BLI_findindex(&node->outputs, sock);
+ if (socketindex != -1)
+ return BLI_sprintfN("nodes[\"%s\"].outputs[%d]", node->name, socketindex);
- return BLI_sprintfN("nodes[%d]", index);
+ return NULL;
}
static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
@@ -192,68 +149,119 @@ static void rna_Matte_t2_set(PointerRNA *ptr, float value)
chroma->t2 = value;
}
-static void rna_Node_update(bContext *C, PointerRNA *ptr)
+static void node_update(bContext *C, bNodeTree *ntree, bNode *node)
{
Main *bmain= CTX_data_main(C);
- bNodeTree *ntree= (bNodeTree*)ptr->id.data;
- bNode *node= (bNode*)ptr->data;
Material *ma;
Tex *tex;
Scene *sce;
-
+
/* look through all datablocks, to support groups */
for(ma=bmain->mat.first; ma; ma=ma->id.next)
if(ma->nodetree && ma->use_nodes && has_nodetree(ma->nodetree, ntree))
ED_node_changed_update(&ma->id, node);
-
+
for(tex=bmain->tex.first; tex; tex=tex->id.next)
if(tex->nodetree && tex->use_nodes && has_nodetree(tex->nodetree, ntree))
ED_node_changed_update(&tex->id, node);
-
+
for(sce=bmain->scene.first; sce; sce=sce->id.next)
if(sce->nodetree && sce->use_nodes && has_nodetree(sce->nodetree, ntree))
ED_node_changed_update(&sce->id, node);
}
+static void rna_Node_update(bContext *C, PointerRNA *ptr)
+{
+ bNodeTree *ntree= (bNodeTree*)ptr->id.data;
+ bNode *node= (bNode*)ptr->data;
+
+ node_update(C, ntree, node);
+}
+
static void rna_Node_update_name(bContext *C, PointerRNA *ptr)
{
+ bNodeTree *ntree= (bNodeTree*)ptr->id.data;
+ bNode *node= (bNode*)ptr->data;
+ char oldname[32];
+
+ /* make a copy of the old name first */
+ BLI_strncpy(oldname, node->name, sizeof(oldname));
+
+ nodeUniqueName(ntree, node);
+ node->flag |= NODE_CUSTOM_NAME;
+
+ /* fix all the animation data which may link to this */
+ BKE_all_animdata_fix_paths_rename("nodes", oldname, node->name);
+
+ node_update(C, ntree, node);
+}
+
+/* this should be done at display time! if no custom names are set */
+#if 0
+static void rna_Node_update_username(bContext *C, PointerRNA *ptr)
+{
bNode *node= (bNode*)ptr->data;
const char *name;
- if(node->id) {
- BLI_strncpy(node->name, node->id->name+2, NODE_MAXSTR);
- }
- else {
- switch(node->typeinfo->type) {
- case SH_NODE_MIX_RGB:
- case CMP_NODE_MIX_RGB:
- case TEX_NODE_MIX_RGB:
- if(RNA_enum_name(node_blend_type_items, node->custom1, &name))
- BLI_strncpy(node->name, name, NODE_MAXSTR);
- break;
- case CMP_NODE_FILTER:
- if(RNA_enum_name(node_filter_items, node->custom1, &name))
- BLI_strncpy(node->name, name, NODE_MAXSTR);
- break;
- case CMP_NODE_FLIP:
- if(RNA_enum_name(node_flip_items, node->custom1, &name))
- BLI_strncpy(node->name, name, NODE_MAXSTR);
- break;
- case SH_NODE_MATH:
- case CMP_NODE_MATH:
- case TEX_NODE_MATH:
- if(RNA_enum_name(node_math_items, node->custom1, &name))
- BLI_strncpy(node->name, name, NODE_MAXSTR);
- break;
- case SH_NODE_VECT_MATH:
- if(RNA_enum_name(node_vec_math_items, node->custom1, &name))
- BLI_strncpy(node->name, name, NODE_MAXSTR);
- break;
+
+ /*
+ if (!node->username[0]) {
+ if(node->id) {
+ BLI_strncpy(node->username, node->id->name+2, NODE_MAXSTR);
+ }
+ else {
+
+ switch(node->typeinfo->type) {
+ case SH_NODE_MIX_RGB:
+ case CMP_NODE_MIX_RGB:
+ case TEX_NODE_MIX_RGB:
+ if(RNA_enum_name(node_blend_type_items, node->custom1, &name))
+ BLI_strncpy(node->username, name, NODE_MAXSTR);
+ break;
+ case CMP_NODE_FILTER:
+ if(RNA_enum_name(node_filter_items, node->custom1, &name))
+ BLI_strncpy(node->username, name, NODE_MAXSTR);
+ break;
+ case CMP_NODE_FLIP:
+ if(RNA_enum_name(node_flip_items, node->custom1, &name))
+ BLI_strncpy(node->username, name, NODE_MAXSTR);
+ break;
+ case SH_NODE_MATH:
+ case CMP_NODE_MATH:
+ case TEX_NODE_MATH:
+ if(RNA_enum_name(node_math_items, node->custom1, &name))
+ BLI_strncpy(node->username, name, NODE_MAXSTR);
+ break;
+ case SH_NODE_VECT_MATH:
+ if(RNA_enum_name(node_vec_math_items, node->custom1, &name))
+ BLI_strncpy(node->username, name, NODE_MAXSTR);
+ break;
+ }
+ */
}
}
rna_Node_update(C, ptr);
}
+#endif
+
+static void rna_NodeSocket_update(bContext *C, PointerRNA *ptr)
+{
+ bNodeTree *ntree= (bNodeTree*)ptr->id.data;
+ bNodeSocket *sock= (bNodeSocket*)ptr->data;
+ bNode *node;
+
+ if (nodeFindNode(ntree, sock, &node, NULL))
+ node_update(C, ntree, node);
+}
+
+static void rna_NodeSocket_defvalue_range(PointerRNA *ptr, float *min, float *max)
+{
+ bNodeSocket *sock= (bNodeSocket*)ptr->data;
+
+ *min = sock->ns.min;
+ *max = sock->ns.max;
+}
static void rna_Node_mapping_update(bContext *C, PointerRNA *ptr)
{
@@ -276,29 +284,18 @@ static void rna_Node_image_layer_update(bContext *C, PointerRNA *ptr)
rna_Node_update(C, ptr);
}
-static void rna_Node_scene_layer_update(bContext *C, PointerRNA *ptr)
-{
- bNode *node= (bNode*)ptr->data;
- Image *ima = (Image *)node->id;
- ImageUser *iuser= node->storage;
-
- BKE_image_multilayer_index(ima->rr, iuser);
-
- rna_Node_update(C, ptr);
-}
-
-
static EnumPropertyItem *renderresult_layers_add_enum(RenderLayer *rl)
{
EnumPropertyItem *item= NULL;
EnumPropertyItem tmp = {0, "", 0, "", ""};
int i=0, totitem=0;
- for (rl; rl; rl=rl->next) {
+ while (rl) {
tmp.identifier = rl->name;
tmp.name= rl->name;
tmp.value = i++;
RNA_enum_item_add(&item, &totitem, &tmp);
+ rl=rl->next;
}
RNA_enum_item_end(&item, &totitem);
@@ -328,7 +325,6 @@ static EnumPropertyItem *rna_Node_scene_layer_itemf(bContext *C, PointerRNA *ptr
bNode *node= (bNode*)ptr->data;
Scene *sce = (Scene *)node->id;
EnumPropertyItem *item= NULL;
- EnumPropertyItem tmp = {0, "", 0, "", ""};
RenderLayer *rl;
if (!sce) return NULL;
@@ -394,6 +390,87 @@ static EnumPropertyItem *rna_Node_channel_itemf(bContext *C, PointerRNA *ptr, in
#else
+static EnumPropertyItem prop_image_layer_items[] = {
+{ 0, "PLACEHOLDER", 0, "Placeholder", ""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem prop_scene_layer_items[] = {
+{ 0, "PLACEHOLDER", 0, "Placeholder", ""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem prop_tri_channel_items[] = {
+{ 1, "R", 0, "R", ""},
+{ 2, "G", 0, "G", ""},
+{ 3, "B", 0, "B", ""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem node_blend_type_items[] = {
+{ 0, "MIX", 0, "Mix", ""},
+{ 1, "ADD", 0, "Add", ""},
+{ 3, "SUBTRACT", 0, "Subtract", ""},
+{ 2, "MULTIPLY", 0, "Multiply", ""},
+{ 4, "SCREEN", 0, "Screen", ""},
+{ 9, "OVERLAY", 0, "Overlay", ""},
+{ 5, "DIVIDE", 0, "Divide", ""},
+{ 6, "DIFFERENCE", 0, "Difference", ""},
+{ 7, "DARKEN", 0, "Darken", ""},
+{ 8, "LIGHTEN", 0, "Lighten", ""},
+{10, "DODGE", 0, "Dodge", ""},
+{11, "BURN", 0, "Burn", ""},
+{15, "COLOR", 0, "Color", ""},
+{14, "VALUE", 0, "Value", ""},
+{13, "SATURATION", 0, "Saturation", ""},
+{12, "HUE", 0, "Hue", ""},
+{16, "SOFT_LIGHT", 0, "Soft Light", ""},
+{17, "LINEAR_LIGHT", 0, "Linear Light",""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem node_flip_items[] = {
+{0, "X", 0, "Flip X", ""},
+{1, "Y", 0, "Flip Y", ""},
+{2, "XY", 0, "Flip X & Y", ""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem node_math_items[] = {
+{ 0, "ADD", 0, "Add", ""},
+{ 1, "SUBTRACT", 0, "Subtract", ""},
+{ 2, "MULTIPLY", 0, "Multiply", ""},
+{ 3, "DIVIDE", 0, "Divide", ""},
+{ 4, "SINE", 0, "Sine", ""},
+{ 5, "COSINE", 0, "Cosine", ""},
+{ 6, "TANGENT", 0, "Tangent", ""},
+{ 7, "ARCSINE", 0, "Arcsine", ""},
+{ 8, "ARCCOSINE", 0, "Arccosine", ""},
+{ 9, "ARCTANGENT", 0, "Arctangent", ""},
+{10, "POWER", 0, "Power", ""},
+{11, "LOGARITHM", 0, "Logarithm", ""},
+{12, "MINIMUM", 0, "Minimum", ""},
+{13, "MAXIMUM", 0, "Maximum", ""},
+{14, "ROUND", 0, "Round", ""},
+{15, "LESS_THAN", 0, "Less Than", ""},
+{16, "GREATER_THAN", 0, "Greater Than", ""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem node_vec_math_items[] = {
+{0, "ADD", 0, "Add", ""},
+{1, "SUBTRACT", 0, "Subtract", ""},
+{2, "AVERAGE", 0, "Average", ""},
+{3, "DOT_PRODUCT", 0, "Dot Product", ""},
+{4, "CROSS_PRODUCT", 0, "Cross Product", ""},
+{5, "NORMALIZE", 0, "Normalize", ""},
+{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem node_filter_items[] = {
+{0, "SOFTEN", 0, "Soften", ""},
+{1, "SHARPEN", 0, "Sharpen", ""},
+{2, "LAPLACE", 0, "Laplace", ""},
+{3, "SOBEL", 0, "Sobel", ""},
+{4, "PREWITT", 0, "Prewitt", ""},
+{5, "KIRSCH", 0, "Kirsch", ""},
+{6, "SHADOW", 0, "Shadow", ""},
+{0, NULL, 0, NULL, NULL}};
+
+
#define MaxNodes 1000
enum
@@ -418,15 +495,9 @@ typedef struct NodeInfo
static NodeInfo nodes[MaxNodes];
-static void reg_node(
- int ID,
- int category,
- const char *enum_name,
- const char *struct_name,
- const char *base_name,
- const char *ui_name,
- const char *ui_desc
-){
+static void reg_node(int ID, int category, const char *enum_name, const char *struct_name,
+ const char *base_name, const char *ui_name, const char *ui_desc)
+{
NodeInfo *ni = nodes + ID;
ni->defined = 1;
@@ -513,7 +584,7 @@ static void def_math(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, node_math_items);
RNA_def_property_ui_text(prop, "Operation", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_vector_math(StructRNA *srna)
@@ -524,7 +595,7 @@ static void def_vector_math(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, node_vec_math_items);
RNA_def_property_ui_text(prop, "Operation", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_rgb_curve(StructRNA *srna)
@@ -535,7 +606,7 @@ static void def_rgb_curve(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "CurveMapping");
RNA_def_property_ui_text(prop, "Mapping", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_vector_curve(StructRNA *srna)
@@ -546,7 +617,7 @@ static void def_vector_curve(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "CurveMapping");
RNA_def_property_ui_text(prop, "Mapping", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_time(StructRNA *srna)
@@ -557,17 +628,17 @@ static void def_time(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "CurveMapping");
RNA_def_property_ui_text(prop, "Curve", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "start", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom1");
RNA_def_property_ui_text(prop, "Start Frame", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "end", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom2");
RNA_def_property_ui_text(prop, "End Frame", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_colorramp(StructRNA *srna)
@@ -578,7 +649,7 @@ static void def_colorramp(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "ColorRamp");
RNA_def_property_ui_text(prop, "Color Ramp", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_mix_rgb(StructRNA *srna)
@@ -589,12 +660,12 @@ static void def_mix_rgb(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, node_blend_type_items);
RNA_def_property_ui_text(prop, "Blend Type", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1);
RNA_def_property_ui_text(prop, "Alpha", "Include alpha of second input in this operation");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_texture(StructRNA *srna)
@@ -606,12 +677,12 @@ static void def_texture(StructRNA *srna)
RNA_def_property_struct_type(prop, "Texture");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Texture", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "node_output", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom1");
RNA_def_property_ui_text(prop, "Node Output", "For node-based textures, which output node to use");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
@@ -626,22 +697,22 @@ static void def_sh_material(StructRNA *srna)
RNA_def_property_struct_type(prop, "Material");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Material", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "diffuse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_DIFF);
RNA_def_property_ui_text(prop, "Diffuse", "Material Node outputs Diffuse");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "specular", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_SPEC);
RNA_def_property_ui_text(prop, "Specular", "Material Node outputs Specular");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "invert_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_NEG);
RNA_def_property_ui_text(prop, "Invert Normal", "Material Node uses inverted normal");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_sh_mapping(StructRNA *srna)
@@ -654,41 +725,41 @@ static void def_sh_mapping(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "loc");
RNA_def_property_ui_text(prop, "Location", "Location offset for the input coordinate");
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
- RNA_def_property_update(prop, 0, "rna_Node_mapping_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_mapping_update");
prop= RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
RNA_def_property_float_sdna(prop, NULL, "rot");
RNA_def_property_ui_text(prop, "Rotation", "Rotation offset for the input coordinate");
RNA_def_property_ui_range(prop, -360.f, 360.f, 1.f, 2);
- RNA_def_property_update(prop, 0, "rna_Node_mapping_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_mapping_update");
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "size");
RNA_def_property_ui_text(prop, "Scale", "Scale adjustment for the input coordinate");
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
- RNA_def_property_update(prop, 0, "rna_Node_mapping_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_mapping_update");
prop = RNA_def_property(srna, "clamp_minimum", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
RNA_def_property_ui_text(prop, "Clamp Minimum", "Clamp the output coordinate to a minimum value");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_ui_text(prop, "Minimum", "Minimum value to clamp coordinate to");
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "clamp_maximum", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
RNA_def_property_ui_text(prop, "Clamp Maximum", "Clamp the output coordinate to a maximum value");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_ui_text(prop, "Maximum", "Maximum value to clamp coordinate to");
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_sh_geometry(StructRNA *srna)
@@ -700,12 +771,12 @@ static void def_sh_geometry(StructRNA *srna)
prop = RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "uvname");
RNA_def_property_ui_text(prop, "UV Layer", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "color_layer", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "colname");
RNA_def_property_ui_text(prop, "Vertex Color Layer", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
@@ -719,7 +790,7 @@ static void def_cmp_alpha_over(StructRNA *srna)
prop = RNA_def_property(srna, "convert_premul", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
RNA_def_property_ui_text(prop, "Convert Premul", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
RNA_def_struct_sdna_from(srna, "NodeTwoFloats", "storage");
@@ -727,7 +798,7 @@ static void def_cmp_alpha_over(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "x");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Premul", "Mix Factor");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_hue_saturation(StructRNA *srna)
@@ -740,19 +811,19 @@ static void def_cmp_hue_saturation(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "hue");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Hue", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "sat", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sat");
RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Saturation", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "val", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "val");
RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Value", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_blur(StructRNA *srna)
@@ -776,52 +847,52 @@ static void def_cmp_blur(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "sizex");
RNA_def_property_range(prop, 0, 256);
RNA_def_property_ui_text(prop, "Size X", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "sizey", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sizey");
RNA_def_property_range(prop, 0, 256);
RNA_def_property_ui_text(prop, "Size Y", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "relative", 1);
RNA_def_property_ui_text(prop, "Relative", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fac");
RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Factor", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "factor_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "percentx");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Relative Size X", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "factor_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "percenty");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Relative Size Y", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "filter_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "filtertype");
RNA_def_property_enum_items(prop, filter_type_items);
RNA_def_property_ui_text(prop, "Filter Type", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "bokeh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bokeh", 1);
RNA_def_property_ui_text(prop, "Bokeh", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "gamma", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gamma", 1);
RNA_def_property_ui_text(prop, "Gamma", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
@@ -833,7 +904,7 @@ static void def_cmp_filter(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, node_filter_items);
RNA_def_property_ui_text(prop, "Filter Type", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_map_value(StructRNA *srna)
@@ -847,38 +918,38 @@ static void def_cmp_map_value(StructRNA *srna)
RNA_def_property_array(prop, 1);
RNA_def_property_range(prop, -1000.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Offset", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "size");
RNA_def_property_array(prop, 1);
RNA_def_property_range(prop, -1000.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Size", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
RNA_def_property_ui_text(prop, "Use Minimum", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
RNA_def_property_ui_text(prop, "Use Maximum", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_array(prop, 1);
RNA_def_property_range(prop, -1000.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Minimum", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_array(prop, 1);
RNA_def_property_range(prop, -1000.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Maximum", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_vector_blur(StructRNA *srna)
@@ -890,27 +961,27 @@ static void def_cmp_vector_blur(StructRNA *srna)
prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "samples");
RNA_def_property_ui_text(prop, "Samples", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "min_speed", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "minspeed");
RNA_def_property_ui_text(prop, "Min Speed", "Minimum speed for a pixel to be blurred; used to separate background from foreground");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "max_speed", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "maxspeed");
RNA_def_property_ui_text(prop, "Max Speed", "Maximum speed, or zero for none");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fac");
RNA_def_property_ui_text(prop, "Blur Factor", "Scaling factor for motion vectors; actually 'shutter speed' in frames");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "curved", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "curved", 1);
RNA_def_property_ui_text(prop, "Curved", "Interpolate between frames in a bezier curve, rather than linearly");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_levels(StructRNA *srna)
@@ -929,7 +1000,7 @@ static void def_cmp_levels(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, channel_items);
RNA_def_property_ui_text(prop, "Channel", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_image(StructRNA *srna)
@@ -950,7 +1021,7 @@ static void def_cmp_image(StructRNA *srna)
RNA_def_property_struct_type(prop, "Image");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Image", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
RNA_def_struct_sdna_from(srna, "ImageUser", "storage");
@@ -958,36 +1029,36 @@ static void def_cmp_image(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "frames");
RNA_def_property_range(prop, 1, MAXFRAMEF);
RNA_def_property_ui_text(prop, "Frames", "Number of images used in animation");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "start", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sfra");
RNA_def_property_range(prop, 1, MAXFRAMEF);
RNA_def_property_ui_text(prop, "Start Frame", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "offset", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "offset");
RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF);
RNA_def_property_ui_text(prop, "Offset", "Offsets the number of the frame to use in the animation");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "cyclic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "cycl", 1);
RNA_def_property_ui_text(prop, "Cyclic", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "auto_refresh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_ANIM_ALWAYS);
RNA_def_property_ui_text(prop, "Auto-Refresh", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop= RNA_def_property(srna, "layer", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "layer");
RNA_def_property_enum_items(prop, prop_image_layer_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Node_image_layer_itemf");
RNA_def_property_ui_text(prop, "Layer", "");
- RNA_def_property_update(prop, 0, "rna_Node_image_layer_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_image_layer_update");
}
static void def_cmp_render_layers(StructRNA *srna)
@@ -999,20 +1070,20 @@ static void def_cmp_render_layers(StructRNA *srna)
RNA_def_property_struct_type(prop, "Scene");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Scene", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop= RNA_def_property(srna, "layer", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, prop_scene_layer_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Node_scene_layer_itemf");
RNA_def_property_ui_text(prop, "Layer", "");
- RNA_def_property_update(prop, 0, "rna_Node_scene_layer_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
/* TODO: comments indicate this might be a hack */
prop = RNA_def_property(srna, "re_render", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1);
RNA_def_property_ui_text(prop, "Re-render", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_output_file(StructRNA *srna)
@@ -1045,37 +1116,42 @@ static void def_cmp_output_file(StructRNA *srna)
prop = RNA_def_property(srna, "filename", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "name");
RNA_def_property_ui_text(prop, "Filename", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "image_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "imtype");
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Image Type", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "exr_half", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_HALF);
RNA_def_property_ui_text(prop, "Half", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "exr_codec", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "codec");
RNA_def_property_enum_items(prop, openexr_codec_items);
RNA_def_property_ui_text(prop, "Codec", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "quality", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "quality");
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Quality", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "start_frame", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sfra");
RNA_def_property_range(prop, MINFRAMEF, MAXFRAMEF);
RNA_def_property_ui_text(prop, "Start Frame", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "end_frame", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "efra");
RNA_def_property_range(prop, MINFRAMEF, MAXFRAMEF);
RNA_def_property_ui_text(prop, "End Frame", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_dilate_erode(StructRNA *srna)
@@ -1086,7 +1162,7 @@ static void def_cmp_dilate_erode(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "custom2");
RNA_def_property_range(prop, -100, 100);
RNA_def_property_ui_text(prop, "Distance", "Distance to grow/shrink (number of iterations)");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_scale(StructRNA *srna)
@@ -1103,7 +1179,7 @@ static void def_cmp_scale(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, space_items);
RNA_def_property_ui_text(prop, "Space", "Coordinate space to scale relative to");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_diff_matte(StructRNA *srna)
@@ -1117,14 +1193,14 @@ static void def_cmp_diff_matte(StructRNA *srna)
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Tolerance", "Color distances below this threshold are keyed.");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t2");
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Falloff", "Color distances below this additional threshold are partially keyed.");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_color_matte(StructRNA *srna)
@@ -1137,19 +1213,19 @@ static void def_cmp_color_matte(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "t1");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "H", "Hue tolerance for colors to be considered a keying color");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "s", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t2");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "S", "Saturation Tolerance for the color");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "v", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t3");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "V", "Value Tolerance for the color");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_distance_matte(StructRNA *srna)
@@ -1163,14 +1239,14 @@ static void def_cmp_distance_matte(StructRNA *srna)
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Tolerance", "Color distances below this threshold are keyed.");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t2");
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Falloff", "Color distances below this additional threshold are partially keyed.");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_color_spill(StructRNA *srna)
@@ -1187,7 +1263,7 @@ static void def_cmp_color_spill(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, channel_items);
RNA_def_property_ui_text(prop, "Channel", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
@@ -1195,7 +1271,7 @@ static void def_cmp_color_spill(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "t1");
RNA_def_property_range(prop, 0.0f, 0.5f);
RNA_def_property_ui_text(prop, "Amount", "How much the selected channel is affected by");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_luma_matte(StructRNA *srna)
@@ -1209,14 +1285,14 @@ static void def_cmp_luma_matte(StructRNA *srna)
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t2");
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_chroma_matte(StructRNA *srna)
@@ -1230,32 +1306,32 @@ static void def_cmp_chroma_matte(StructRNA *srna)
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL);
RNA_def_property_range(prop, 1.0f, 80.0f);
RNA_def_property_ui_text(prop, "Acceptance", "Tolerance for a color to be considered a keying color");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "cutoff", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t2");
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL);
RNA_def_property_range(prop, 0.0f, 30.0f);
RNA_def_property_ui_text(prop, "Cutoff", "Tolerance below which colors will be considered as exact matches");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "lift", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fsize");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Lift", "Alpha lift");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "gain", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fstrength");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Gain", "Alpha gain");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "shadow_adjust", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t3");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Shadow Adjust", "Adjusts the brightness of any shadows captured");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_channel_matte(StructRNA *srna)
@@ -1273,7 +1349,7 @@ static void def_cmp_channel_matte(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, color_space_items);
RNA_def_property_ui_text(prop, "Color Space", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop= RNA_def_property(srna, "channel", PROP_ENUM, PROP_NONE);
@@ -1281,7 +1357,7 @@ static void def_cmp_channel_matte(StructRNA *srna)
RNA_def_property_enum_items(prop, prop_tri_channel_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Node_channel_itemf");
RNA_def_property_ui_text(prop, "Channel", "Channel used to determine matte");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
@@ -1290,14 +1366,14 @@ static void def_cmp_channel_matte(StructRNA *srna)
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t2");
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_flip(StructRNA *srna)
@@ -1308,7 +1384,7 @@ static void def_cmp_flip(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, node_flip_items);
RNA_def_property_ui_text(prop, "Axis", "");
- RNA_def_property_update(prop, 0, "rna_Node_update_name");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_splitviewer(StructRNA *srna)
@@ -1324,13 +1400,13 @@ static void def_cmp_splitviewer(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom2");
RNA_def_property_enum_items(prop, axis_items);
RNA_def_property_ui_text(prop, "Axis", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "factor", PROP_INT, PROP_FACTOR);
RNA_def_property_int_sdna(prop, NULL, "custom1");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Factor", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_id_mask(StructRNA *srna)
@@ -1341,7 +1417,7 @@ static void def_cmp_id_mask(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "custom1");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "Index", "Pass index number to convert to alpha");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_map_uv(StructRNA *srna)
@@ -1352,7 +1428,7 @@ static void def_cmp_map_uv(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "custom1");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Alpha", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_defocus(StructRNA *srna)
@@ -1375,60 +1451,60 @@ static void def_cmp_defocus(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "bktype");
RNA_def_property_enum_items(prop, bokeh_items);
RNA_def_property_ui_text(prop, "Bokeh Type", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
/* TODO: angle in degrees */
prop = RNA_def_property(srna, "angle", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "rotation");
RNA_def_property_range(prop, 0, 90);
RNA_def_property_ui_text(prop, "Angle", "Bokeh shape rotation offset in degrees");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "gamma_correction", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gamco", 1);
RNA_def_property_ui_text(prop, "Gamma Correction", "Enable gamma correction before and after main process");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
/* TODO */
prop = RNA_def_property(srna, "f_stop", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fstop");
RNA_def_property_range(prop, 0.0f, 128.0f);
RNA_def_property_ui_text(prop, "fStop", "Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "max_blur", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxblur");
RNA_def_property_range(prop, 0.0f, 10000.0f);
RNA_def_property_ui_text(prop, "Max Blur", "blur limit, maximum CoC radius, 0=no limit");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "bthresh");
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Threshold", "CoC radius threshold, prevents background bleed on in-focus midground, 0=off");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "preview", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "preview", 1);
RNA_def_property_ui_text(prop, "Preview", "Enable sampling mode, useful for preview when using low samplecounts");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "samples");
RNA_def_property_range(prop, 16, 256);
RNA_def_property_ui_text(prop, "Samples", "Number of samples (16=grainy, higher=less noise)");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "use_zbuffer", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "no_zbuf", 1);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "no_zbuf", 1);
RNA_def_property_ui_text(prop, "Use Z-Buffer", "Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node)");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "z_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "scale");
RNA_def_property_range(prop, 0.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Z-Scale", "Scales the Z input when not using a zbuffer, controls maximum blur designated by the color white or input value 1");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_invert(StructRNA *srna)
@@ -1438,12 +1514,12 @@ static void def_cmp_invert(StructRNA *srna)
prop = RNA_def_property(srna, "rgb", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", CMP_CHAN_RGB);
RNA_def_property_ui_text(prop, "RGB", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", CMP_CHAN_A);
RNA_def_property_ui_text(prop, "Alpha", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_crop(StructRNA *srna)
@@ -1453,7 +1529,7 @@ static void def_cmp_crop(StructRNA *srna)
prop = RNA_def_property(srna, "crop_size", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
RNA_def_property_ui_text(prop, "Crop Image Size", "Whether to crop the size of the input image");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
RNA_def_struct_sdna_from(srna, "NodeTwoXYs", "storage");
@@ -1461,25 +1537,25 @@ static void def_cmp_crop(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "x1");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "X1", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "x2", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "x2");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "X2", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "y1", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "y1");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "Y1", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "y2", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "y2");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "Y2", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_dblur(StructRNA *srna)
@@ -1492,48 +1568,48 @@ static void def_cmp_dblur(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "iter");
RNA_def_property_range(prop, 1, 32);
RNA_def_property_ui_text(prop, "Iterations", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "wrap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "wrap", 1);
RNA_def_property_ui_text(prop, "Wrap", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "center_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "center_x");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Center X", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "center_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "center_y");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Center Y", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "distance");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Distance", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "angle");
RNA_def_property_range(prop, 0.0f, 360.0f);
RNA_def_property_ui_text(prop, "Angle", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "spin", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "spin");
RNA_def_property_range(prop, -360.0f, 360.0f);
RNA_def_property_ui_text(prop, "Spin", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "zoom", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zoom");
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Zoom", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_bilateral_blur(StructRNA *srna)
@@ -1546,19 +1622,19 @@ static void def_cmp_bilateral_blur(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "iter");
RNA_def_property_range(prop, 1, 128);
RNA_def_property_ui_text(prop, "Iterations", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "sigma_color", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sigma_color");
RNA_def_property_range(prop, 0.01f, 3.0f);
RNA_def_property_ui_text(prop, "Color Sigma", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "sigma_space", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sigma_space");
RNA_def_property_range(prop, 0.01f, 30.0f);
RNA_def_property_ui_text(prop, "Space Sigma", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_premul_key(StructRNA *srna)
@@ -1574,7 +1650,7 @@ static void def_cmp_premul_key(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Mapping", "Conversion between premultiplied alpha and key alpha");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
@@ -1601,66 +1677,66 @@ static void def_cmp_glare(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Glare Type", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "quality", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "quality");
RNA_def_property_enum_items(prop, quality_items);
RNA_def_property_ui_text(prop, "Quality", "If not set to high quality, the effect will be applied to a low-res copy of the source image");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "iter");
RNA_def_property_range(prop, 2, 5);
RNA_def_property_ui_text(prop, "Iterations", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "color_modulation", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "colmod");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Color Modulation", "Amount of Color Modulation, modulates colors of streaks and ghosts for a spectral dispersion effect");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "mix", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mix");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Mix", "-1 is original image only, 0 is exact 50/50 mix, 1 is processed image only");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "threshold");
RNA_def_property_range(prop, 0.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Threshold", "The glare filter will only be applied to pixels brighter than this value");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "streaks", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "angle");
RNA_def_property_range(prop, 2, 16);
RNA_def_property_ui_text(prop, "Streaks", "Total number of streaks");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "angle_offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "angle_ofs");
RNA_def_property_range(prop, 0.0f, 180.0f);
RNA_def_property_ui_text(prop, "Angle Offset", "Streak angle offset in degrees");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "fade", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fade");
RNA_def_property_range(prop, 0.75f, 1.0f);
RNA_def_property_ui_text(prop, "Fade", "Streak fade-out factor");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "rotate_45", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "angle", 1);
RNA_def_property_ui_text(prop, "Rotate 45", "Simple star filter: add 45 degree rotation offset");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "size");
RNA_def_property_range(prop, 6, 9);
RNA_def_property_ui_text(prop, "Size", "Glow/glare size (not actual size; relative to initial size of bright area of pixels)");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
/* TODO */
}
@@ -1680,49 +1756,49 @@ static void def_cmp_tonemap(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Tonemap Type", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "key", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "key");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Key", "The value the average luminance is mapped to");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "offset");
RNA_def_property_range(prop, 0.001f, 10.0f);
RNA_def_property_ui_text(prop, "Offset", "Normally always 1, but can be used as an extra control to alter the brightness curve");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "gamma");
RNA_def_property_range(prop, 0.001f, 3.0f);
RNA_def_property_ui_text(prop, "Gamma", "If not used, set to 1");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "intensity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "f");
RNA_def_property_range(prop, -8.0f, 8.0f);
RNA_def_property_ui_text(prop, "Intensity", "If less than zero, darkens image; otherwise, makes it brighter");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "contrast", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "m");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Contrast", "Set to 0 to use estimate from input image");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "adaptation", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "a");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Adaptation", "If 0, global; if 1, based on pixel intensity");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "correction", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "c");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Color Correction", "If 0, same for all channels; if 1, each independent");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_cmp_lensdist(StructRNA *srna)
@@ -1734,17 +1810,17 @@ static void def_cmp_lensdist(StructRNA *srna)
prop = RNA_def_property(srna, "projector", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "proj", 1);
RNA_def_property_ui_text(prop, "Projector", "Enable/disable projector mode. Effect is applied in horizontal direction only.");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "jitter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "jit", 1);
RNA_def_property_ui_text(prop, "Jitter", "Enable/disable jittering; faster, but also noisier");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "fit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "fit", 1);
RNA_def_property_ui_text(prop, "Fit", "For positive distortion factor only: scale image such that black areas are not visible");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
@@ -1760,18 +1836,27 @@ static void def_tex_output(StructRNA *srna)
prop = RNA_def_property(srna, "output_name", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "name");
RNA_def_property_ui_text(prop, "Output Name", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
static void def_tex_image(StructRNA *srna)
{
PropertyRNA *prop;
+ prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "id");
+ RNA_def_property_struct_type(prop, "Image");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Image", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+
+ /* is this supposed to be exposed? not sure..
prop = RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "ImageUser");
RNA_def_property_ui_text(prop, "Settings", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+ */
}
static void def_tex_bricks(StructRNA *srna)
@@ -1782,25 +1867,25 @@ static void def_tex_bricks(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "custom3");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Offset Amount", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "offset_frequency", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom1");
RNA_def_property_range(prop, 2, 99);
RNA_def_property_ui_text(prop, "Offset Frequency", "Offset every N rows");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "squash", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "custom4");
RNA_def_property_range(prop, 0.0f, 99.0f);
RNA_def_property_ui_text(prop, "Squash Amount", "");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "squash_frequency", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom2");
RNA_def_property_range(prop, 2, 99);
RNA_def_property_ui_text(prop, "Squash Frequency", "Squash every N rows");
- RNA_def_property_update(prop, 0, "rna_Node_update");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
}
/* -------------------------------------------------------------------------- */
@@ -1861,6 +1946,91 @@ static void rna_def_texture_node(BlenderRNA *brna)
/* -------------------------------------------------------------------------- */
+static void rna_def_node_socket(BlenderRNA *brna)
+{
+ StructRNA *srna;
+
+ srna = RNA_def_struct(brna, "NodeSocket", NULL);
+ RNA_def_struct_ui_text(srna, "Node Socket", "Input or output socket of a node");
+ RNA_def_struct_refine_func(srna, "rna_NodeSocketType_refine");
+ RNA_def_struct_sdna(srna, "bNodeSocket");
+ RNA_def_struct_ui_icon(srna, ICON_PLUG);
+ RNA_def_struct_path_func(srna, "rna_NodeSocket_path");
+
+}
+
+static void rna_def_node_socket_value(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "ValueNodeSocket", NULL);
+ RNA_def_struct_ui_text(srna, "Value Node Socket", "Input or output socket of a node");
+ RNA_def_struct_sdna(srna, "bNodeSocket");
+ RNA_def_struct_ui_icon(srna, ICON_PLUG);
+ RNA_def_struct_path_func(srna, "rna_NodeSocket_path");
+
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "Socket name.");
+ RNA_def_struct_name_property(srna, prop);
+
+ prop = RNA_def_property(srna, "default_value", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "ns.vec");
+ RNA_def_property_array(prop, 1);
+ RNA_def_property_ui_text(prop, "Default Value", "Default value of the socket when no link is attached.");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_NodeSocket_update");
+ RNA_def_property_float_funcs(prop, NULL, NULL, "rna_NodeSocket_defvalue_range");
+}
+
+static void rna_def_node_socket_vector(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "VectorNodeSocket", NULL);
+ RNA_def_struct_ui_text(srna, "Vector Node Socket", "Input or output socket of a node");
+ RNA_def_struct_sdna(srna, "bNodeSocket");
+ RNA_def_struct_ui_icon(srna, ICON_PLUG);
+ RNA_def_struct_path_func(srna, "rna_NodeSocket_path");
+
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "Socket name.");
+ RNA_def_struct_name_property(srna, prop);
+
+ prop = RNA_def_property(srna, "default_value", PROP_FLOAT, PROP_XYZ);
+ RNA_def_property_float_sdna(prop, NULL, "ns.vec");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Default Value", "Default value of the socket when no link is attached.");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_NodeSocket_update");
+ RNA_def_property_float_funcs(prop, NULL, NULL, "rna_NodeSocket_defvalue_range");
+}
+
+static void rna_def_node_socket_rgba(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "RGBANodeSocket", NULL);
+ RNA_def_struct_ui_text(srna, "RGBA Node Socket", "Input or output socket of a node");
+ RNA_def_struct_sdna(srna, "bNodeSocket");
+ RNA_def_struct_ui_icon(srna, ICON_PLUG);
+ RNA_def_struct_path_func(srna, "rna_NodeSocket_path");
+
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "Socket name.");
+ RNA_def_struct_name_property(srna, prop);
+
+ prop = RNA_def_property(srna, "default_value", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_float_sdna(prop, NULL, "ns.vec");
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Default Value", "Default value of the socket when no link is attached.");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_NodeSocket_update");
+ RNA_def_property_float_funcs(prop, NULL, NULL, "rna_NodeSocket_defvalue_range");
+}
+
static void rna_def_node(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1869,6 +2039,7 @@ static void rna_def_node(BlenderRNA *brna)
srna = RNA_def_struct(brna, "Node", NULL);
RNA_def_struct_ui_text(srna, "Node", "Node in a node tree.");
RNA_def_struct_sdna(srna, "bNode");
+ RNA_def_struct_ui_icon(srna, ICON_NODE);
RNA_def_struct_refine_func(srna, "rna_Node_refine");
RNA_def_struct_path_func(srna, "rna_Node_path");
@@ -1877,10 +2048,22 @@ static void rna_def_node(BlenderRNA *brna)
RNA_def_property_array(prop, 2);
RNA_def_property_range(prop, -10000.0f, 10000.0f);
RNA_def_property_ui_text(prop, "Location", "");
+ RNA_def_property_update(prop, NC_NODE, "rna_Node_update");
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Node name.");
RNA_def_struct_name_property(srna, prop);
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update_name");
+
+ prop = RNA_def_property(srna, "inputs", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_collection_sdna(prop, NULL, "inputs", NULL);
+ RNA_def_property_struct_type(prop, "NodeSocket");
+ RNA_def_property_ui_text(prop, "Inputs", "");
+
+ prop = RNA_def_property(srna, "outputs", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_collection_sdna(prop, NULL, "outputs", NULL);
+ RNA_def_property_struct_type(prop, "NodeSocket");
+ RNA_def_property_ui_text(prop, "Outputs", "");
}
static void rna_def_nodetree(BlenderRNA *brna)
@@ -1891,14 +2074,23 @@ static void rna_def_nodetree(BlenderRNA *brna)
srna = RNA_def_struct(brna, "NodeTree", "ID");
RNA_def_struct_ui_text(srna, "Node Tree", "Node tree consisting of linked nodes used for materials, textures and compositing.");
RNA_def_struct_sdna(srna, "bNodeTree");
- RNA_def_struct_ui_icon(srna, ICON_NODE);
+ RNA_def_struct_ui_icon(srna, ICON_NODETREE);
+ /* AnimData */
rna_def_animdata_common(srna);
-
+
+ /* Nodes Collection */
prop = RNA_def_property(srna, "nodes", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "nodes", NULL);
RNA_def_property_struct_type(prop, "Node");
RNA_def_property_ui_text(prop, "Nodes", "");
+
+ /* Grease Pencil */
+ prop= RNA_def_property(srna, "grease_pencil", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "gpd");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_struct_type(prop, "GreasePencil");
+ RNA_def_property_ui_text(prop, "Grease Pencil Data", "Grease Pencil datablock");
}
static void define_specific_node(BlenderRNA *brna, int id, void (*func)(StructRNA*))
@@ -1913,6 +2105,10 @@ void RNA_def_nodetree(BlenderRNA *brna)
{
init();
rna_def_nodetree(brna);
+ rna_def_node_socket(brna);
+ rna_def_node_socket_value(brna);
+ rna_def_node_socket_vector(brna);
+ rna_def_node_socket_rgba(brna);
rna_def_node(brna);
rna_def_shader_node(brna);
rna_def_compositor_node(brna);
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index a5ec30bd624..9b5e0e0a659 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -28,6 +28,7 @@
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_types.h"
+#include "RNA_enum_types.h"
#include "rna_internal.h"
@@ -83,12 +84,14 @@ EnumPropertyItem object_type_items[] = {
#ifdef RNA_RUNTIME
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_key_types.h"
+#include "DNA_constraint_types.h"
#include "BKE_armature.h"
#include "BKE_bullet.h"
+#include "BKE_constraint.h"
#include "BKE_context.h"
#include "BKE_curve.h"
#include "BKE_depsgraph.h"
@@ -508,7 +511,7 @@ static void rna_Object_rotation_axis_angle_get(PointerRNA *ptr, float *value)
/* for now, assume that rotation mode is axis-angle */
value[0]= ob->rotAngle;
- VecCopyf(&value[1], ob->rotAxis);
+ copy_v3_v3(&value[1], ob->rotAxis);
}
/* rotation - axis-angle */
@@ -518,7 +521,7 @@ static void rna_Object_rotation_axis_angle_set(PointerRNA *ptr, const float *val
/* for now, assume that rotation mode is axis-angle */
ob->rotAngle= value[0];
- VecCopyf(ob->rotAxis, (float *)&value[1]);
+ copy_v3_v3(ob->rotAxis, (float *)&value[1]);
// TODO: validate axis?
}
@@ -543,7 +546,7 @@ static void rna_Object_dimensions_get(PointerRNA *ptr, float *value)
if (bb) {
float scale[3];
- Mat4ToSize(ob->obmat, scale);
+ mat4_to_size( scale,ob->obmat);
value[0] = fabs(scale[0]) * (bb->vec[4][0] - bb->vec[0][0]);
value[1] = fabs(scale[1]) * (bb->vec[2][1] - bb->vec[0][1]);
@@ -562,7 +565,7 @@ static void rna_Object_dimensions_set(PointerRNA *ptr, const float *value)
if (bb) {
float scale[3], len[3];
- Mat4ToSize(ob->obmat, scale);
+ mat4_to_size( scale,ob->obmat);
len[0] = bb->vec[4][0] - bb->vec[0][0];
len[1] = bb->vec[2][1] - bb->vec[0][1];
@@ -574,6 +577,71 @@ static void rna_Object_dimensions_set(PointerRNA *ptr, const float *value)
}
}
+static int rna_Object_location_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_LOCX))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_LOCY))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_LOCZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_Object_scale_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_SCALEX))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_SCALEY))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_SCALEZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_Object_rotation_euler_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_Object_rotation_4d_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only consider locks if locking components individually... */
+ if (ob->protectflag & OB_LOCK_ROT4D) {
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_ROTW))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 3) && (ob->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ }
+
+ return PROP_EDITABLE;
+}
+
static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr)
{
@@ -859,6 +927,46 @@ static PointerRNA rna_Object_collision_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_CollisionSettings, ob->pd);
}
+static PointerRNA rna_Object_active_constraint_get(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ bConstraint *con= constraints_get_active(&ob->constraints);
+ return rna_pointer_inherit_refine(ptr, &RNA_Constraint, con);
+}
+
+static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value)
+{
+ Object *ob= (Object*)ptr->id.data;
+ constraints_set_active(&ob->constraints, (bConstraint *)value.data);
+}
+
+static bConstraint *rna_Object_constraint_new(Object *object, bContext *C, int type)
+{
+ WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object);
+ return add_ob_constraint(object, NULL, type);
+}
+
+static int rna_Object_constraint_remove(Object *object, bContext *C, int index)
+{
+ int ok = remove_constraint_index(&object->constraints, index);
+ if(ok) {
+ ED_object_constraint_set_active(object, NULL);
+ WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, object);
+ }
+
+ return ok;
+}
+
+static ModifierData *rna_Object_modifier_new(Object *object, bContext *C, ReportList *reports, char *name, int type)
+{
+ return ED_object_modifier_add(reports, CTX_data_scene(C), object, name, type);
+}
+
+static void rna_Object_modifier_remove(Object *object, bContext *C, ReportList *reports, ModifierData *md)
+{
+ ED_object_modifier_remove(reports, CTX_data_scene(C), object, md);
+}
+
#else
static void rna_def_vertex_group(BlenderRNA *brna)
@@ -1127,6 +1235,98 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Debug State", "Print state debug info in the game engine.");
}
+static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "ObjectConstraints");
+ srna= RNA_def_struct(brna, "ObjectConstraints", NULL);
+ RNA_def_struct_sdna(srna, "Object");
+ RNA_def_struct_ui_text(srna, "Object Constraints", "Collection of object constraints.");
+
+
+ /* Collection active property */
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Constraint");
+ RNA_def_property_pointer_funcs(prop, "rna_Object_active_constraint_get", "rna_Object_active_constraint_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active Constraint", "Active Object constraint.");
+
+
+ /* Constraint collection */
+ func= RNA_def_function(srna, "new", "rna_Object_constraint_new");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Add a new constraint to this object");
+ /* return type */
+ parm= RNA_def_pointer(func, "constraint", "Constraint", "", "New constraint.");
+ RNA_def_function_return(func, parm);
+ /* object to add */
+ parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ func= RNA_def_function(srna, "remove", "rna_Object_constraint_remove");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Remove a constraint from this object.");
+ /* return type */
+ parm= RNA_def_boolean(func, "success", 0, "Success", "Removed the constraint successfully.");
+ RNA_def_function_return(func, parm);
+ /* object to add */
+ parm= RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "", 0, INT_MAX);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
+/* armature.bones.* */
+static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "ObjectModifiers");
+ srna= RNA_def_struct(brna, "ObjectModifiers", NULL);
+ RNA_def_struct_sdna(srna, "Object");
+ RNA_def_struct_ui_text(srna, "Object Modifiers", "Collection of object modifiers.");
+
+#if 0
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "EditBone");
+ RNA_def_property_pointer_sdna(prop, NULL, "act_edbone");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active EditBone", "Armatures active edit bone.");
+ //RNA_def_property_update(prop, 0, "rna_Armature_act_editbone_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_Armature_act_edit_bone_set", NULL);
+
+ /* todo, redraw */
+// RNA_def_property_collection_active(prop, prop_act);
+#endif
+
+ /* add target */
+ func= RNA_def_function(srna, "new", "rna_Object_modifier_new");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Add a new bone.");
+ parm= RNA_def_string(func, "name", "Name", 0, "", "New name for the bone.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* modifier to add */
+ parm= RNA_def_enum(func, "type", modifier_type_items, 1, "", "Modifier type to add.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* return type */
+ parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Newly created modifier.");
+ RNA_def_function_return(func, parm);
+
+ /* remove target */
+ func= RNA_def_function(srna, "remove", "rna_Object_modifier_remove");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Remove an existing modifier from the object.");
+ /* target to remove*/
+ parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Modifier to remove.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
static void rna_def_object(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1175,7 +1375,7 @@ static void rna_def_object(BlenderRNA *brna)
{OB_BOUNDBOX, "BOUNDS", 0, "Bounds", ""},
{OB_WIRE, "WIRE", 0, "Wire", ""},
{OB_SOLID, "SOLID", 0, "Solid", ""},
- {OB_SHADED, "SHADED", 0, "Shaded", ""},
+ // disabled {OB_SHADED, "SHADED", 0, "Shaded", ""},
{OB_TEXTURE, "TEXTURED", 0, "Textured", ""},
{0, NULL, 0, NULL, NULL}};
@@ -1301,7 +1501,7 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "materials", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "mat", "totcol");
RNA_def_property_struct_type(prop, "MaterialSlot");
- RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, "rna_iterator_array_get", 0, 0, 0, 0, 0); /* don't dereference pointer! */
+ RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, "rna_iterator_array_get", 0, 0, 0); /* don't dereference pointer! */
RNA_def_property_ui_text(prop, "Materials", "Material slots in the object.");
prop= RNA_def_property(srna, "active_material", PROP_POINTER, PROP_NONE);
@@ -1320,11 +1520,13 @@ static void rna_def_object(BlenderRNA *brna)
/* transform */
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "loc");
+ RNA_def_property_editable_array_func(prop, "rna_Object_location_editable");
RNA_def_property_ui_text(prop, "Location", "Location of the object.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION);
RNA_def_property_float_sdna(prop, NULL, "quat");
+ RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
@@ -1334,11 +1536,13 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE);
RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too...
RNA_def_property_float_funcs(prop, "rna_Object_rotation_axis_angle_get", "rna_Object_rotation_axis_angle_set", NULL);
+ RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER);
RNA_def_property_float_sdna(prop, NULL, "rot");
+ RNA_def_property_editable_array_func(prop, "rna_Object_rotation_euler_editable");
RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
@@ -1351,6 +1555,7 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "size");
+ RNA_def_property_editable_array_func(prop, "rna_Object_scale_editable");
RNA_def_property_ui_text(prop, "Scale", "Scaling of the object.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
@@ -1428,10 +1633,13 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Constraint");
RNA_def_property_ui_text(prop, "Constraints", "Constraints of the object.");
+// RNA_def_property_collection_funcs(prop, 0, 0, 0, 0, 0, 0, 0, "constraints__add", "constraints__remove");
+ rna_def_object_constraints(brna, prop);
prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Modifier");
RNA_def_property_ui_text(prop, "Modifiers", "Modifiers affecting the geometric data of the Object.");
+ rna_def_object_modifiers(brna, prop);
/* game engine */
prop= RNA_def_property(srna, "game", PROP_POINTER, PROP_NONE);
@@ -1721,6 +1929,7 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "active_shape_key_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "shapenr");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); // XXX this is really unpredictable...
RNA_def_property_int_funcs(prop, "rna_Object_active_shape_key_index_get", "rna_Object_active_shape_key_index_set", "rna_Object_active_shape_key_index_range");
RNA_def_property_ui_text(prop, "Active Shape Key Index", "Current shape key index.");
RNA_def_property_update(prop, 0, "rna_Object_active_shape_update");
@@ -1763,7 +1972,7 @@ static void rna_def_base(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "Base", NULL);
+ srna= RNA_def_struct(brna, "ObjectBase", NULL);
RNA_def_struct_sdna(srna, "Base");
RNA_def_struct_ui_text(srna, "Object Base", "An objects instance in a scene.");
RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA);
diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c
index 098604c1eab..827e0cc60d9 100644
--- a/source/blender/makesrna/intern/rna_object_api.c
+++ b/source/blender/makesrna/intern/rna_object_api.c
@@ -57,13 +57,14 @@
#include "BKE_font.h"
#include "BKE_mball.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_mesh_types.h"
#include "DNA_scene_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_curve_types.h"
#include "DNA_modifier_types.h"
+#include "DNA_constraint_types.h"
#include "MEM_guardedalloc.h"
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index d6239d92911..c601622fcc3 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -485,7 +485,7 @@ static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr)
if(!md) {
if(pd && (pd->shape == PFIELD_SHAPE_SURFACE) && ELEM(pd->forcefield,PFIELD_GUIDE,PFIELD_TEXTURE)==0)
if(ELEM4(ob->type, OB_MESH, OB_SURF, OB_FONT, OB_CURVE))
- ED_object_modifier_add(NULL, scene, ob, eModifierType_Surface);
+ ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Surface);
}
else {
if(!pd || pd->shape != PFIELD_SHAPE_SURFACE)
@@ -620,7 +620,7 @@ static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr
/* add/remove modifier as needed */
if(ob->pd->deflect && !md)
- ED_object_modifier_add(NULL, scene, ob, eModifierType_Collision);
+ ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Collision);
else if(!ob->pd->deflect && md)
ED_object_modifier_remove(NULL, scene, ob, md);
@@ -756,7 +756,7 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change");
prop= RNA_def_property(srna, "point_cache_list", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_collection_funcs(prop, "rna_Cache_list_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Cache_list_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_struct_type(prop, "PointCache");
RNA_def_property_ui_text(prop, "Point Cache List", "Point cache list");
@@ -984,18 +984,18 @@ static void rna_def_field(BlenderRNA *brna)
static EnumPropertyItem field_type_items[] = {
{0, "NONE", 0, "None", ""},
- {PFIELD_FORCE, "FORCE", 0, "Force", ""},
- {PFIELD_WIND, "WIND", 0, "Wind", ""},
- {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""},
- {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""},
- {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""},
- {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""},
- {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""},
- {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""},
- {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""},
- {PFIELD_BOID, "BOID", 0, "Boid", ""},
- {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""},
- {PFIELD_DRAG, "DRAG", 0, "Drag", ""},
+ {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""},
+ {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""},
+ {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""},
+ {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""},
+ {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""},
+ {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""},
+ {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""},
+ {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""},
+ {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""},
+ {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""},
+ {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""},
+ {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem falloff_items[] = {
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index ad73f279b45..6ddec53c28d 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -105,7 +105,7 @@ EnumPropertyItem part_hair_ren_as_items[] = {
#include "BKE_particle.h"
#include "BKE_pointcache.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_listbase.h"
/* property update functions */
@@ -917,6 +917,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
static EnumPropertyItem integrator_type_items[] = {
{PART_INT_EULER, "EULER", 0, "Euler", ""},
+ {PART_INT_VERLET, "VERLET", 0, "Verlet", ""},
{PART_INT_MIDPOINT, "MIDPOINT", 0, "Midpoint", ""},
{PART_INT_RK4, "RK4", 0, "RK4", ""},
{0, NULL, 0, NULL, NULL}
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 584c971951a..8a4aadcba57 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -27,6 +27,7 @@
#include "RNA_define.h"
#include "RNA_types.h"
+#include "RNA_enum_types.h"
#include "rna_internal.h"
@@ -43,11 +44,12 @@
#include "BIK_api.h"
#include "BKE_action.h"
#include "BKE_armature.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_userdef_types.h"
#include "BKE_context.h"
+#include "BKE_constraint.h"
#include "BKE_depsgraph.h"
#include "BKE_idprop.h"
@@ -72,9 +74,9 @@ static void rna_Pose_IK_update(bContext *C, PointerRNA *ptr)
BIK_clear_data(ob->pose);
}
-static char *rna_PoseChannel_path(PointerRNA *ptr)
+static char *rna_PoseBone_path(PointerRNA *ptr)
{
- return BLI_sprintfN("pose.pose_channels[\"%s\"]", ((bPoseChannel*)ptr->data)->name);
+ return BLI_sprintfN("pose.bones[\"%s\"]", ((bPoseChannel*)ptr->data)->name);
}
static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value)
@@ -112,13 +114,13 @@ static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value)
}
}
-static IDProperty *rna_PoseChannel_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_PoseBone_idproperties(PointerRNA *ptr, int create)
{
bPoseChannel *pchan= ptr->data;
if(create && !pchan->prop) {
IDPropertyTemplate val = {0};
- pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseChannel group");
+ pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseBone group");
}
return pchan->prop;
@@ -163,7 +165,7 @@ static void rna_PoseChannel_rotation_axis_angle_get(PointerRNA *ptr, float *valu
/* for now, assume that rotation mode is axis-angle */
value[0]= pchan->rotAngle;
- VecCopyf(&value[1], pchan->rotAxis);
+ copy_v3_v3(&value[1], pchan->rotAxis);
}
/* rotation - axis-angle */
@@ -173,7 +175,7 @@ static void rna_PoseChannel_rotation_axis_angle_set(PointerRNA *ptr, const float
/* for now, assume that rotation mode is axis-angle */
pchan->rotAngle= value[0];
- VecCopyf(pchan->rotAxis, (float *)&value[1]);
+ copy_v3_v3(pchan->rotAxis, (float *)&value[1]);
// TODO: validate axis?
}
@@ -414,6 +416,100 @@ static void rna_pose_pgroup_name_set(PointerRNA *ptr, const char *value, char *r
}
#endif
+static PointerRNA rna_PoseChannel_active_constraint_get(PointerRNA *ptr)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+ bConstraint *con= constraints_get_active(&pchan->constraints);
+ return rna_pointer_inherit_refine(ptr, &RNA_Constraint, con);
+}
+
+static void rna_PoseChannel_active_constraint_set(PointerRNA *ptr, PointerRNA value)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+ constraints_set_active(&pchan->constraints, (bConstraint *)value.data);
+}
+
+static bConstraint *rna_PoseChannel_constraints_new(bPoseChannel *pchan, bContext *C, int type)
+{
+ //WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object);
+ // TODO, pass object also
+ // TODO, new pose bones don't have updated draw flags
+ return add_pose_constraint(NULL, pchan, NULL, type);
+}
+
+static int rna_PoseChannel_constraints_remove(bPoseChannel *pchan, bContext *C, int index)
+{
+ // TODO
+ //ED_object_constraint_set_active(object, NULL);
+ //WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, object);
+ return remove_constraint_index(&pchan->constraints, index);
+}
+
+static int rna_PoseChannel_location_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_LOCX))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_LOCY))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_LOCZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_PoseChannel_scale_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_SCALEX))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_SCALEY))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_SCALEZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_PoseChannel_rotation_euler_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_PoseChannel_rotation_4d_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only consider locks if locking components individually... */
+ if (pchan->protectflag & OB_LOCK_ROT4D) {
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTW))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 3) && (pchan->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ }
+
+ return PROP_EDITABLE;
+}
+
#else
static void rna_def_bone_group(BlenderRNA *brna)
@@ -486,6 +582,50 @@ static EnumPropertyItem prop_solver_items[] = {
{ITASC_SOLVER_DLS, "DLS", 0, "DLS", "Damped Least Square with Numerical Filtering"},
{0, NULL, 0, NULL, NULL}};
+
+static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "PoseBoneConstraints");
+ srna= RNA_def_struct(brna, "PoseBoneConstraints", NULL);
+ RNA_def_struct_sdna(srna, "bPoseChannel");
+ RNA_def_struct_ui_text(srna, "PoseBone Constraints", "Collection of pose bone constraints.");
+
+ /* Collection active property */
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Constraint");
+ RNA_def_property_pointer_funcs(prop, "rna_PoseChannel_active_constraint_get", "rna_PoseChannel_active_constraint_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active Constraint", "Active PoseChannel constraint.");
+
+
+ /* Constraint collection */
+ func= RNA_def_function(srna, "new", "rna_PoseChannel_constraints_new");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Add a constraint to this object");
+ /* return type */
+ parm= RNA_def_pointer(func, "constraint", "Constraint", "", "New constraint.");
+ RNA_def_function_return(func, parm);
+ /* constraint to add */
+ parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ func= RNA_def_function(srna, "remove", "rna_PoseChannel_constraints_remove");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Remove a constraint from this object.");
+ /* return type */
+ parm= RNA_def_boolean(func, "success", 0, "Success", "Removed the constraint successfully.");
+ RNA_def_function_return(func, parm);
+ /* object to add */
+ parm= RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "", 0, INT_MAX);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
static void rna_def_pose_channel(BlenderRNA *brna)
{
// XXX: this RNA enum define is currently duplicated for objects, since there is some text here which is not applicable
@@ -503,16 +643,18 @@ static void rna_def_pose_channel(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "PoseChannel", NULL);
+ srna= RNA_def_struct(brna, "PoseBone", NULL);
RNA_def_struct_sdna(srna, "bPoseChannel");
- RNA_def_struct_ui_text(srna, "Pose Channel", "Channel defining pose data for a bone in a Pose.");
- RNA_def_struct_path_func(srna, "rna_PoseChannel_path");
- RNA_def_struct_idproperties_func(srna, "rna_PoseChannel_idproperties");
+ RNA_def_struct_ui_text(srna, "Pose Bone", "Channel defining pose data for a bone in a Pose.");
+ RNA_def_struct_path_func(srna, "rna_PoseBone_path");
+ RNA_def_struct_idproperties_func(srna, "rna_PoseBone_idproperties");
/* Bone Constraints */
prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Constraint");
- RNA_def_property_ui_text(prop, "Constraints", "Constraints that act on this PoseChannel.");
+ RNA_def_property_ui_text(prop, "Constraints", "Constraints that act on this PoseChannel.");
+
+ rna_def_pose_channel_constraints(brna, prop);
/* Name + Selection Status */
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
@@ -542,31 +684,34 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "Bone");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Bone", "Bone associated with this Pose Channel.");
+ RNA_def_property_ui_text(prop, "Bone", "Bone associated with this PoseBone.");
prop= RNA_def_property(srna, "parent", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "PoseChannel");
+ RNA_def_property_struct_type(prop, "PoseBone");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Parent", "Parent of this pose channel.");
+ RNA_def_property_ui_text(prop, "Parent", "Parent of this pose bone.");
prop= RNA_def_property(srna, "child", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "PoseChannel");
+ RNA_def_property_struct_type(prop, "PoseBone");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Child", "Child of this pose channel.");
+ RNA_def_property_ui_text(prop, "Child", "Child of this pose bone.");
/* Transformation settings */
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "loc");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_location_editable");
RNA_def_property_ui_text(prop, "Location", "");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "size");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_scale_editable");
RNA_def_property_ui_text(prop, "Scale", "");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION);
RNA_def_property_float_sdna(prop, NULL, "quat");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
@@ -576,11 +721,13 @@ static void rna_def_pose_channel(BlenderRNA *brna)
prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE);
RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too...
RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", "rna_PoseChannel_rotation_axis_angle_set", NULL);
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER);
RNA_def_property_float_sdna(prop, NULL, "eul");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_euler_editable");
RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
@@ -598,7 +745,7 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Channel Matrix", "4x4 matrix, before constraints.");
- prop= RNA_def_property(srna, "pose_matrix", PROP_FLOAT, PROP_MATRIX);
+ prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX);
RNA_def_property_float_sdna(prop, NULL, "pose_mat");
RNA_def_property_array(prop, 16);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -612,11 +759,13 @@ static void rna_def_pose_channel(BlenderRNA *brna)
*/
/* Head/Tail Coordinates (in Pose Space) - Automatically calculated... */
- prop= RNA_def_property(srna, "pose_head", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "head", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "pose_head");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Pose Head Position", "Location of head of the channel's bone.");
- prop= RNA_def_property(srna, "pose_tail", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "tail", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "pose_tail");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Pose Tail Position", "Location of tail of the channel's bone.");
@@ -791,6 +940,8 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Lock Scale", "Lock editing of scale in the interface.");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
+
+ RNA_api_pose_channel(srna);
}
static void rna_def_pose_itasc(BlenderRNA *brna)
@@ -918,10 +1069,10 @@ static void rna_def_pose(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Pose", "A collection of pose channels, including settings for animating bones.");
/* pose channels */
- prop= RNA_def_property(srna, "pose_channels", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "bones", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "chanbase", NULL);
- RNA_def_property_struct_type(prop, "PoseChannel");
- RNA_def_property_ui_text(prop, "Pose Channels", "Individual pose channels for the armature.");
+ RNA_def_property_struct_type(prop, "PoseBone");
+ RNA_def_property_ui_text(prop, "Pose Bones", "Individual pose bones for the armature.");
/* bone groups */
prop= RNA_def_property(srna, "bone_groups", PROP_COLLECTION, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_pose_api.c b/source/blender/makesrna/intern/rna_pose_api.c
index 40bb131b3f9..d044a0f7f51 100644
--- a/source/blender/makesrna/intern/rna_pose_api.c
+++ b/source/blender/makesrna/intern/rna_pose_api.c
@@ -43,14 +43,21 @@
/* #include "DNA_anim_types.h" */
#include "DNA_action_types.h" /* bPose */
+
#else
void RNA_api_pose(StructRNA *srna)
{
/* FunctionRNA *func; */
/* PropertyRNA *parm; */
+}
+void RNA_api_pose_channel(StructRNA *srna)
+{
+// FunctionRNA *func;
+// PropertyRNA *parm;
}
+
#endif
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 3505253b60f..5a80db74c38 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -307,7 +307,7 @@ static void rna_def_render_result(BlenderRNA *brna)
prop= RNA_def_property(srna, "layers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "RenderLayer");
- RNA_def_property_collection_funcs(prop, "rna_RenderResult_layers_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_RenderResult_layers_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_define_verify_sdna(1);
}
@@ -333,7 +333,7 @@ static void rna_def_render_layer(BlenderRNA *brna)
prop= RNA_def_property(srna, "passes", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "RenderPass");
- RNA_def_property_collection_funcs(prop, "rna_RenderLayer_passes_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_RenderLayer_passes_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
prop= RNA_def_property(srna, "rect", PROP_FLOAT, PROP_NONE);
RNA_def_property_flag(prop, PROP_DYNAMIC);
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index 31aecbb8a76..f8adb1a79d8 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -283,7 +283,6 @@ PointerRNA rna_builtin_properties_lookup_string(PointerRNA *ptr, const char *key
{
StructRNA *srna;
PropertyRNA *prop;
- IDProperty *group, *idp;
PointerRNA propptr;
memset(&propptr, 0, sizeof(propptr));
@@ -309,7 +308,13 @@ PointerRNA rna_builtin_properties_lookup_string(PointerRNA *ptr, const char *key
}
} while((srna=srna->base));
+ /* this was used pre 2.5beta0, now ID property access uses python's
+ * getitem style access
+ * - ob["foo"] rather then ob.foo */
+#if 0
if(ptr->data) {
+ IDProperty *group, *idp;
+
group= RNA_struct_idproperties(ptr, 0);
if(group) {
@@ -322,7 +327,7 @@ PointerRNA rna_builtin_properties_lookup_string(PointerRNA *ptr, const char *key
}
}
}
-
+#endif
return propptr;
}
@@ -406,6 +411,13 @@ static int rna_Property_subtype_get(PointerRNA *ptr)
return prop->subtype;
}
+static PointerRNA rna_Property_srna_get(PointerRNA *ptr)
+{
+ PropertyRNA *prop= (PropertyRNA*)ptr->data;
+ rna_idproperty_check(&prop, ptr);
+ return rna_pointer_inherit_refine(ptr, &RNA_Struct, prop->srna);
+}
+
static int rna_Property_unit_get(PointerRNA *ptr)
{
PropertyRNA *prop= (PropertyRNA*)ptr->data;
@@ -416,7 +428,12 @@ static int rna_Property_unit_get(PointerRNA *ptr)
static int rna_Property_editable_get(PointerRNA *ptr)
{
PropertyRNA *prop= (PropertyRNA*)ptr->data;
- return RNA_property_editable(ptr, prop);
+
+ /* dont use this becaure it will call functions that check the internal
+ * data for introspection we only need to know if it can be edited so the
+ * flag is better for this */
+// return RNA_property_editable(ptr, prop);
+ return prop->flag & PROP_EDITABLE ? 1:0;
}
static int rna_Property_use_return_get(PointerRNA *ptr)
@@ -715,7 +732,7 @@ static PointerRNA rna_CollectionProperty_fixed_type_get(PointerRNA *ptr)
{
PropertyRNA *prop= (PropertyRNA*)ptr->data;
rna_idproperty_check(&prop, ptr);
- return rna_pointer_inherit_refine(ptr, &RNA_Struct, ((CollectionPropertyRNA*)prop)->type);
+ return rna_pointer_inherit_refine(ptr, &RNA_Struct, ((CollectionPropertyRNA*)prop)->item_type);
}
/* Function */
@@ -812,13 +829,13 @@ static void rna_def_struct(BlenderRNA *brna)
prop= RNA_def_property(srna, "properties", PROP_COLLECTION, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Property");
- RNA_def_property_collection_funcs(prop, "rna_Struct_properties_begin", "rna_Struct_properties_next", "rna_iterator_listbase_end", "rna_Struct_properties_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Struct_properties_begin", "rna_Struct_properties_next", "rna_iterator_listbase_end", "rna_Struct_properties_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Properties", "Properties in the struct.");
prop= RNA_def_property(srna, "functions", PROP_COLLECTION, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Function");
- RNA_def_property_collection_funcs(prop, "rna_Struct_functions_begin", "rna_Struct_functions_next", "rna_iterator_listbase_end", "rna_Struct_functions_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Struct_functions_begin", "rna_Struct_functions_next", "rna_iterator_listbase_end", "rna_Struct_functions_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Functions", "");
}
@@ -900,6 +917,12 @@ static void rna_def_property(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, "rna_Property_subtype_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Subtype", "Semantic interpretation of the property.");
+ prop= RNA_def_property(srna, "srna", PROP_POINTER, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_struct_type(prop, "Struct");
+ RNA_def_property_pointer_funcs(prop, "rna_Property_srna_get", NULL, NULL);
+ RNA_def_property_ui_text(prop, "Base", "Struct definition used for properties assigned to this item.");
+
prop= RNA_def_property(srna, "unit", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, unit_items);
@@ -950,7 +973,7 @@ static void rna_def_function(BlenderRNA *brna)
prop= RNA_def_property(srna, "parameters", PROP_COLLECTION, PROP_NONE);
/*RNA_def_property_clear_flag(prop, PROP_EDITABLE);*/
RNA_def_property_struct_type(prop, "Property");
- RNA_def_property_collection_funcs(prop, "rna_Function_parameters_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_Function_parameters_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Parameters", "Parameters for the function.");
prop= RNA_def_property(srna, "registered", PROP_BOOLEAN, PROP_NONE);
@@ -1088,7 +1111,7 @@ static void rna_def_enum_property(BlenderRNA *brna, StructRNA *srna)
prop= RNA_def_property(srna, "items", PROP_COLLECTION, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "EnumPropertyItem");
- RNA_def_property_collection_funcs(prop, "rna_EnumProperty_items_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_EnumProperty_items_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Items", "Possible values for the property.");
srna= RNA_def_struct(brna, "EnumPropertyItem", NULL);
@@ -1188,7 +1211,7 @@ void RNA_def_rna(BlenderRNA *brna)
prop= RNA_def_property(srna, "structs", PROP_COLLECTION, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Struct");
- RNA_def_property_collection_funcs(prop, "rna_BlenderRNA_structs_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, "rna_BlenderRNA_structs_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Structs", "");
}
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index e8c8861e2f9..f02cba1397c 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -35,6 +35,10 @@
/* Include for Bake Options */
#include "RE_pipeline.h"
+#ifdef WITH_QUICKTIME
+#include "quicktime_export.h"
+#endif
+
#ifdef WITH_FFMPEG
#include "BKE_writeffmpeg.h"
#include <libavcodec/avcodec.h>
@@ -44,7 +48,7 @@
#include "WM_types.h"
-EnumPropertyItem snap_mode_items[] = {
+EnumPropertyItem snap_target_items[] = {
{SCE_SNAP_TARGET_CLOSEST, "CLOSEST", 0, "Closest", "Snap closest point onto target."},
{SCE_SNAP_TARGET_CENTER, "CENTER", 0, "Center", "Snap center onto target."},
{SCE_SNAP_TARGET_MEDIAN, "MEDIAN", 0, "Median", "Snap median onto target."},
@@ -52,20 +56,34 @@ EnumPropertyItem snap_mode_items[] = {
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem proportional_falloff_items[] ={
- {PROP_SMOOTH, "SMOOTH", 0, "Smooth", ""},
- {PROP_SPHERE, "SPHERE", 0, "Sphere", ""},
- {PROP_ROOT, "ROOT", 0, "Root", ""},
- {PROP_SHARP, "SHARP", 0, "Sharp", ""},
- {PROP_LIN, "LINEAR", 0, "Linear", ""},
- {PROP_CONST, "CONSTANT", 0, "Constant", ""},
- {PROP_RANDOM, "RANDOM", 0, "Random", ""},
+ {PROP_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
+ {PROP_SPHERE, "SPHERE", ICON_SPHERECURVE, "Sphere", ""},
+ {PROP_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""},
+ {PROP_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
+ {PROP_LIN, "LINEAR", ICON_LINCURVE, "Linear", ""},
+ {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", ""},
+ {PROP_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem proportional_editing_items[] = {
- {PROP_EDIT_OFF, "DISABLED", 0, "Disable", ""},
- {PROP_EDIT_ON, "ENABLED", 0, "Enable", ""},
- {PROP_EDIT_CONNECTED, "CONNECTED", 0, "Connected", ""},
+ {PROP_EDIT_OFF, "DISABLED", ICON_PROP_OFF, "Disable", ""},
+ {PROP_EDIT_ON, "ENABLED", ICON_PROP_ON, "Enable", ""},
+ {PROP_EDIT_CONNECTED, "CONNECTED", ICON_PROP_CON, "Connected", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+EnumPropertyItem mesh_select_mode_items[] = {
+ {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."},
+ {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."},
+ {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."},
+ {0, NULL, 0, NULL, NULL}};
+
+EnumPropertyItem snap_element_items[] = {
+ {SCE_SNAP_MODE_INCREMENT, "INCREMENT", ICON_SNAP_INCREMENT, "Increment", "Snap to increments of grid."},
+ {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."},
+ {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."},
+ {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."},
+ {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."},
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -80,12 +98,14 @@ EnumPropertyItem proportional_editing_items[] = {
#include "BKE_node.h"
#include "BKE_pointcache.h"
#include "BKE_scene.h"
+#include "BKE_depsgraph.h"
#include "BLI_threads.h"
#include "ED_info.h"
#include "ED_node.h"
#include "ED_view3d.h"
+#include "ED_object.h"
#include "RE_pipeline.h"
@@ -97,6 +117,34 @@ static PointerRNA rna_Scene_objects_get(CollectionPropertyIterator *iter)
return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, ((Base*)internal->link)->object);
}
+static void rna_Scene_link_object(Scene *sce, ReportList *reports, Object *ob)
+{
+ Base *base= object_in_scene(ob, sce);
+ if (base) {
+ BKE_report(reports, RPT_ERROR, "Object is already in this scene.");
+ return;
+ }
+ base= scene_add_base(sce, ob);
+ ob->id.us++;
+
+ /* this is similar to what object_add_type and add_object do */
+ ob->lay= base->lay= sce->lay;
+ ob->recalc |= OB_RECALC;
+
+ DAG_scene_sort(sce);
+}
+
+static void rna_Scene_unlink_object(Scene *sce, ReportList *reports, Object *ob)
+{
+ Base *base= object_in_scene(ob, sce);
+ if (!base) {
+ BKE_report(reports, RPT_ERROR, "Object is not in this scene.");
+ return;
+ }
+ /* as long as ED_base_object_free_and_unlink calls free_libblock_us, we don't have to decrement ob->id.us */
+ ED_base_object_free_and_unlink(sce, base);
+}
+
static void rna_Scene_skgen_etch_template_set(PointerRNA *ptr, PointerRNA value)
{
ToolSettings *ts = (ToolSettings*)ptr->data;
@@ -320,6 +368,9 @@ static void rna_SceneRenderData_file_format_set(PointerRNA *ptr, int value)
#ifdef WITH_FFMPEG
ffmpeg_verify_image_type(rd);
#endif
+#ifdef WITH_QUICKTIME
+ quicktime_verify_image_type(rd);
+#endif
}
void rna_SceneRenderData_jpeg2k_preset_update(RenderData *rd)
@@ -524,19 +575,6 @@ static void rna_def_tool_settings(BlenderRNA *brna)
{UV_SELECT_ISLAND, "ISLAND", ICON_UV_ISLANDSEL, "Island", "Island selection mode."},
{0, NULL, 0, NULL, NULL}};
- static EnumPropertyItem mesh_select_mode_items[] = {
- {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."},
- {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."},
- {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."},
- {0, NULL, 0, NULL, NULL}};
-
- static EnumPropertyItem snap_element_items[] = {
- {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."},
- {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."},
- {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."},
- {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."},
- {0, NULL, 0, NULL, NULL}};
-
static EnumPropertyItem auto_key_items[] = {
{AUTOKEY_MODE_NORMAL, "ADD_REPLACE_KEYS", 0, "Add & Replace", ""},
{AUTOKEY_MODE_EDITKEYS, "REPLACE_KEYS", 0, "Replace", ""},
@@ -610,33 +648,39 @@ static void rna_def_tool_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP);
- RNA_def_property_ui_text(prop, "Snap", "Snap while Ctrl is held during transform.");
- RNA_def_property_ui_icon(prop, ICON_SNAP_GEAR, 1);
+ RNA_def_property_ui_text(prop, "Snap", "Snap during transform.");
+ RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1);
+ RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_ROTATE);
RNA_def_property_ui_text(prop, "Snap Align Rotation", "Align rotation with the snapping target.");
RNA_def_property_ui_icon(prop, ICON_SNAP_NORMAL, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
prop= RNA_def_property(srna, "snap_element", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "snap_mode");
RNA_def_property_enum_items(prop, snap_element_items);
RNA_def_property_ui_text(prop, "Snap Element", "Type of element to snap to.");
+ RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
- prop= RNA_def_property(srna, "snap_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "snap_target", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "snap_target");
- RNA_def_property_enum_items(prop, snap_mode_items);
- RNA_def_property_ui_text(prop, "Snap Mode", "Which part to snap onto the target.");
+ RNA_def_property_enum_items(prop, snap_target_items);
+ RNA_def_property_ui_text(prop, "Snap Target", "Which part to snap onto the target.");
+ RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PEEL_OBJECT);
RNA_def_property_ui_text(prop, "Snap Peel Object", "Consider objects as whole when finding volume center.");
RNA_def_property_ui_icon(prop, ICON_SNAP_PEEL_OBJECT, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
prop= RNA_def_property(srna, "snap_project", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PROJECT);
RNA_def_property_ui_text(prop, "Project Individual Elements", "DOC_BROKEN");
RNA_def_property_ui_icon(prop, ICON_RETOPO, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
/* Auto Keying */
prop= RNA_def_property(srna, "enable_auto_key", PROP_BOOLEAN, PROP_NONE);
@@ -1079,20 +1123,18 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem stereo_modes_items[] ={
-// {STEREO_NOSTEREO, "NO_STEREO", 0, "No Stereo", ""},
{STEREO_QUADBUFFERED, "QUADBUFFERED", 0, "Quad-Buffer", ""},
{STEREO_ABOVEBELOW, "ABOVEBELOW", 0, "Above-Below", ""},
{STEREO_INTERLACED, "INTERLACED", 0, "Interlaced", ""},
{STEREO_ANAGLYPH, "ANAGLYPH", 0, "Anaglyph", ""},
{STEREO_SIDEBYSIDE, "SIDEBYSIDE", 0, "Side-by-side", ""},
{STEREO_VINTERLACE, "VINTERLACE", 0, "Vinterlace", ""},
-// {STEREO_DOME, "DOME", 0, "Dome", ""},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem stereo_items[] ={
- {STEREO_NOSTEREO, "NONE", 0, "None", ""},
- {STEREO_ENABLED, "STEREO", 0, "Stereo", ""},
- {STEREO_DOME, "DOME", 0, "Dome", ""},
+ {STEREO_NOSTEREO, "NONE", 0, "None", "Disable Stereo and Dome environments"},
+ {STEREO_ENABLED, "STEREO", 0, "Stereo", "Enable Stereo environment"},
+ {STEREO_DOME, "DOME", 0, "Dome", "Enable Dome environment"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem physics_engine_items[] = {
@@ -1155,7 +1197,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "framing_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "framing.col");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "", "");
+ RNA_def_property_ui_text(prop, "Framing Color", "Set colour of the bars");
RNA_def_property_update(prop, NC_SCENE, NULL);
/* Stereo */
@@ -1168,14 +1210,14 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "stereo_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stereomode");
RNA_def_property_enum_items(prop, stereo_modes_items);
- RNA_def_property_ui_text(prop, "Stereo Mode", "");
+ RNA_def_property_ui_text(prop, "Stereo Mode", "Stereographic techniques");
RNA_def_property_update(prop, NC_SCENE, NULL);
/* Dome */
prop= RNA_def_property(srna, "dome_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "dome.mode");
RNA_def_property_enum_items(prop, dome_modes_items);
- RNA_def_property_ui_text(prop, "Dome Mode", "");
+ RNA_def_property_ui_text(prop, "Dome Mode", "Dome physical configurations");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "dome_tesselation", PROP_INT, PROP_NONE);
@@ -1485,7 +1527,11 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
{R_AVICODEC, "AVICODEC", ICON_FILE_MOVIE, "AVI Codec", ""},
#endif
#ifdef WITH_QUICKTIME
+# ifdef USE_QTKIT
+ {R_QUICKTIME, "QUICKTIME_QTKIT", ICON_FILE_MOVIE, "QuickTime", ""},
+# else
{R_QUICKTIME, "QUICKTIME", ICON_FILE_MOVIE, "QuickTime", ""},
+# endif
#endif
#ifdef __sgi
{R_MOVIE, "MOVIE", ICON_FILE_MOVIE, "Movie", ""},
@@ -1532,6 +1578,23 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
{16, "16", 0, "16", "16 bit color channels"},
{0, NULL, 0, NULL, NULL}};
#endif
+
+#ifdef WITH_QUICKTIME
+ static EnumPropertyItem quicktime_codec_type_items[] = {
+ {QT_CODECTYPE_RAW, "RAW", 0, "Uncompressed", ""},
+ {QT_CODECTYPE_JPEG, "JPEG", 0, "JPEG", ""},
+ {QT_CODECTYPE_MJPEGA, "MJPEG_A", 0, "M-JPEG A", ""},
+ {QT_CODECTYPE_MJPEGB, "MJPEG_B", 0, "M-JPEG B", ""},
+ {QT_CODECTYPE_DVCPAL, "DVCPAL", 0, "DV PAL", ""},
+ {QT_CODECTYPE_DVCNTSC, "DVCNTSC", 0, "DV/DVCPRO NTSC", ""},
+ {QT_CODECTYPE_DVCPROHD720p, "DVCPROHD720P", 0, "DVCPRO HD 720p"},
+ {QT_CODECTYPE_DVCPROHD1080i50, "DVCPROHD1080I50", 0, "DVCPRO HD 1080i50"},
+ {QT_CODECTYPE_DVCPROHD1080i60, "DVCPROHD1080I60", 0, "DVCPRO HD 1080i60"},
+ {QT_CODECTYPE_MPEG4, "MPEG4", 0, "MPEG4", ""},
+ {QT_CODECTYPE_H263, "H263", 0, "H.263", ""},
+ {QT_CODECTYPE_H264, "H264", 0, "H.264", ""},
+ {0, NULL, 0, NULL, NULL}};
+#endif
#ifdef WITH_FFMPEG
static EnumPropertyItem ffmpeg_format_items[] = {
@@ -1636,7 +1699,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
/* JPEG and AVI JPEG */
- prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "quality", PROP_INT, PROP_PERCENTAGE);
RNA_def_property_int_sdna(prop, NULL, "quality");
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Quality", "Quality of JPEG images, AVI Jpeg and SGI movies.");
@@ -1722,6 +1785,22 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
#endif
+#ifdef WITH_QUICKTIME
+ /* QuickTime */
+
+ prop= RNA_def_property(srna, "quicktime_codec_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "qtcodecsettings.codecType");
+ RNA_def_property_enum_items(prop, quicktime_codec_type_items);
+ RNA_def_property_ui_text(prop, "Codec", "QuickTime codec type");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_PERCENTAGE);
+ RNA_def_property_int_sdna(prop, NULL, "qtcodecsettings.codecSpatialQuality");
+ RNA_def_property_range(prop, 0, 100);
+ RNA_def_property_ui_text(prop, "Spatial quality", "Intra-frame spatial quality level");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+#endif
+
#ifdef WITH_FFMPEG
/* FFMPEG Video*/
@@ -2249,11 +2328,71 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Game Engine", "Current rendering engine is a game engine.");
}
+
+/* scene.objects */
+static void rna_def_scene_objects(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "SceneObjects");
+ srna= RNA_def_struct(brna, "SceneObjects", NULL);
+ RNA_def_struct_sdna(srna, "Scene");
+ RNA_def_struct_ui_text(srna, "Scene Objects", "Collection of scene objects.");
+
+ func= RNA_def_function(srna, "link", "rna_Scene_link_object");
+ RNA_def_function_ui_description(func, "Link object to scene.");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ parm= RNA_def_pointer(func, "object", "Object", "", "Object to add to scene.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ func= RNA_def_function(srna, "unlink", "rna_Scene_unlink_object");
+ RNA_def_function_ui_description(func, "Unlink object from scene.");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ parm= RNA_def_pointer(func, "object", "Object", "", "Object to remove from scene.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_pointer_funcs(prop, "rna_Scene_active_object_get", "rna_Scene_active_object_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active Object", "Active object for this scene.");
+ /* Could call: ED_base_object_activate(C, scene->basact);
+ * but would be a bad level call and it seems the notifier is enough */
+ RNA_def_property_update(prop, NC_SCENE|ND_OB_ACTIVE, NULL);
+}
+
+
+/* scene.bases.* */
+static void rna_def_scene_bases(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+// FunctionRNA *func;
+// PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "SceneBases");
+ srna= RNA_def_struct(brna, "SceneBases", NULL);
+ RNA_def_struct_sdna(srna, "Scene");
+ RNA_def_struct_ui_text(srna, "Scene Bases", "Collection of scene bases.");
+
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ObjectBase");
+ RNA_def_property_pointer_sdna(prop, NULL, "basact");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active Base", "Active object base in the scene.");
+ RNA_def_property_update(prop, NC_SCENE|ND_OB_ACTIVE, NULL);
+}
+
void RNA_def_scene(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
- PropertyRNA *prop_act;
+// PropertyRNA *prop_act;
FunctionRNA *func;
static EnumPropertyItem audio_distance_model_items[] = {
@@ -2280,7 +2419,6 @@ void RNA_def_scene(BlenderRNA *brna)
prop= RNA_def_property(srna, "set", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "set");
RNA_def_property_struct_type(prop, "Scene");
- //RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_set_set", NULL);
RNA_def_property_ui_text(prop, "Set Scene", "Background set scene.");
@@ -2299,37 +2437,16 @@ void RNA_def_scene(BlenderRNA *brna)
/* Bases/Objects */
prop= RNA_def_property(srna, "bases", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "base", NULL);
- RNA_def_property_struct_type(prop, "Base");
+ RNA_def_property_struct_type(prop, "ObjectBase");
RNA_def_property_ui_text(prop, "Bases", "");
-
- { /* Collection active property */
- prop_act= RNA_def_property(srna, "base_active", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop_act, "Base");
- RNA_def_property_pointer_sdna(prop_act, NULL, "basact");
- RNA_def_property_flag(prop_act, PROP_EDITABLE);
- RNA_def_property_ui_text(prop_act, "Active Base", "Active object in the scene.");
- RNA_def_property_update(prop_act, NC_SCENE|ND_OB_ACTIVE, NULL);
- RNA_def_property_collection_active(prop, prop_act);
- }
+ rna_def_scene_bases(brna, prop);
prop= RNA_def_property(srna, "objects", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "base", NULL);
RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Objects", "");
- RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_Scene_objects_get", 0, 0, 0, 0, 0);
-
- { /* Collection active property */
- prop_act= RNA_def_property(srna, "objects_active", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop_act, "Object");
- RNA_def_property_pointer_funcs(prop_act, "rna_Scene_active_object_get", "rna_Scene_active_object_set", NULL);
- RNA_def_property_flag(prop_act, PROP_EDITABLE);
- RNA_def_property_ui_text(prop_act, "Object", "Object to use as projector transform.");
- /* Could call: ED_base_object_activate(C, scene->basact);
- * but would be a bad level call and it seems the notifier is enough */
- RNA_def_property_update(prop_act, NC_SCENE|ND_OB_ACTIVE, NULL);
-
- RNA_def_property_collection_active(prop, prop_act);
- }
+ RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_Scene_objects_get", 0, 0, 0);
+ rna_def_scene_objects(brna, prop);
/* Layers */
prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
@@ -2486,7 +2603,7 @@ void RNA_def_scene(BlenderRNA *brna)
prop= RNA_def_property(srna, "sync_audio", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_SYNC);
- RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor.");
+ RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor for realtime playback.");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "scrub_audio", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c
index 40f2db6d4a4..89e9c2ee5ca 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -44,44 +44,17 @@
#include "BKE_depsgraph.h"
#include "ED_object.h"
+#include "ED_anim_api.h"
#include "WM_api.h"
-static void rna_Scene_add_object(Scene *sce, ReportList *reports, Object *ob)
+static void rna_Scene_set_frame(Scene *scene, bContext *C, int frame)
{
- Base *base= object_in_scene(ob, sce);
- if (base) {
- BKE_report(reports, RPT_ERROR, "Object is already in this scene.");
- return;
- }
- base= scene_add_base(sce, ob);
- ob->id.us++;
-
- /* this is similar to what object_add_type and add_object do */
- ob->lay= base->lay= sce->lay;
- ob->recalc |= OB_RECALC;
-
- DAG_scene_sort(sce);
-}
-
-static void rna_Scene_remove_object(Scene *sce, ReportList *reports, Object *ob)
-{
- Base *base= object_in_scene(ob, sce);
- if (!base) {
- BKE_report(reports, RPT_ERROR, "Object is not in this scene.");
- return;
- }
- /* as long as ED_base_object_free_and_unlink calls free_libblock_us, we don't have to decrement ob->id.us */
- ED_base_object_free_and_unlink(sce, base);
-}
+ scene->r.cfra= frame;
+ CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME);
+ scene_update_for_newframe(scene, (1<<20) - 1);
-static void rna_Scene_set_frame(Scene *sce, bContext *C, int frame)
-{
- sce->r.cfra= frame;
- CLAMP(sce->r.cfra, MINAFRAME, MAXFRAME);
- scene_update_for_newframe(sce, (1<<20) - 1);
-
- WM_event_add_notifier(C, NC_SCENE|ND_FRAME, sce);
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
}
static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports,
@@ -118,18 +91,6 @@ void RNA_api_scene(StructRNA *srna)
FunctionRNA *func;
PropertyRNA *parm;
- func= RNA_def_function(srna, "add_object", "rna_Scene_add_object");
- RNA_def_function_ui_description(func, "Add object to scene.");
- RNA_def_function_flag(func, FUNC_USE_REPORTS);
- parm= RNA_def_pointer(func, "object", "Object", "", "Object to add to scene.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
-
- func= RNA_def_function(srna, "remove_object", "rna_Scene_remove_object");
- RNA_def_function_ui_description(func, "Remove object from scene.");
- RNA_def_function_flag(func, FUNC_USE_REPORTS);
- parm= RNA_def_pointer(func, "object", "Object", "", "Object to remove from scene.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
-
func= RNA_def_function(srna, "set_frame", "rna_Scene_set_frame");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
RNA_def_function_ui_description(func, "Set scene frame updating all objects immediately.");
diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c
index 004c57eedfc..79a5d3d5cd1 100644
--- a/source/blender/makesrna/intern/rna_screen.c
+++ b/source/blender/makesrna/intern/rna_screen.c
@@ -148,6 +148,16 @@ static void rna_def_region(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "swinid");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Region ID", "Uniqute ID for this region.");
+
+ prop= RNA_def_property(srna, "width", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "winx");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Width", "Region width.");
+
+ prop= RNA_def_property(srna, "height", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "winy");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Height", "Region height.");
}
static void rna_def_screen(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index 481abc983c2..6cfd38ba26e 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -142,6 +142,21 @@ static int rna_ParticleEdit_hair_get(PointerRNA *ptr)
return (edit && edit->psys);
}
+
+static void rna_Paint_active_brush_index_set(PointerRNA *ptr, int value)
+{
+ Paint *p= ptr->data;
+ CLAMP(value, 0, p->brush_count-1);
+ p->active_brush_index= value;
+}
+
+static void rna_Paint_active_brush_index_range(PointerRNA *ptr, int *min, int *max)
+{
+ Paint *p= ptr->data;
+ *min= 0;
+ *max= MAX2(p->brush_count-1, 0);
+}
+
#else
static void rna_def_paint(BlenderRNA *brna)
@@ -158,11 +173,13 @@ static void rna_def_paint(BlenderRNA *brna)
"rna_iterator_array_next",
"rna_iterator_array_end",
"rna_iterator_array_dereference_get",
- "rna_Paint_brushes_length", 0, 0, 0, 0);
+ "rna_Paint_brushes_length", 0, 0);
RNA_def_property_ui_text(prop, "Brushes", "Brushes selected for this paint mode.");
prop= RNA_def_property(srna, "active_brush_index", PROP_INT, PROP_NONE);
- RNA_def_property_range(prop, 0, INT_MAX);
+ RNA_def_property_int_funcs(prop, NULL, "rna_Paint_active_brush_index_set", "rna_Paint_active_brush_index_range");
+ RNA_def_property_range(prop, 0, INT_MAX);
+ RNA_def_property_update(prop, NC_BRUSH|NA_EDITED, NULL);
/* Fake property to get active brush directly, rather than integer index */
prop= RNA_def_property(srna, "brush", PROP_POINTER, PROP_NONE);
@@ -170,6 +187,7 @@ static void rna_def_paint(BlenderRNA *brna)
RNA_def_property_pointer_funcs(prop, "rna_Paint_active_brush_get", "rna_Paint_active_brush_set", NULL);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Brush", "Active paint brush.");
+ RNA_def_property_update(prop, NC_BRUSH|NA_EDITED, NULL);
}
static void rna_def_sculpt(BlenderRNA *brna)
@@ -238,11 +256,7 @@ static void rna_def_vertex_paint(BlenderRNA *brna)
prop= RNA_def_property(srna, "all_faces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_AREA);
RNA_def_property_ui_text(prop, "All Faces", "Paint on all faces inside brush.");
-
- prop= RNA_def_property(srna, "vertex_dist", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_SOFT);
- RNA_def_property_ui_text(prop, "Vertex Dist", "Use distances to vertices (instead of paint entire faces).");
-
+
prop= RNA_def_property(srna, "normals", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_NORMALS);
RNA_def_property_ui_text(prop, "Normals", "Applies the vertex normal before painting.");
@@ -250,14 +264,6 @@ static void rna_def_vertex_paint(BlenderRNA *brna)
prop= RNA_def_property(srna, "spray", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_SPRAY);
RNA_def_property_ui_text(prop, "Spray", "Keep applying paint effect while holding mouse.");
-
- prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_NONE);
- RNA_def_property_range(prop, 0.1f, 5.0f);
- RNA_def_property_ui_text(prop, "Gamma", "Vertex paint Gamma.");
-
- prop= RNA_def_property(srna, "mul", PROP_FLOAT, PROP_NONE);
- RNA_def_property_range(prop, 0.1f, 50.0f);
- RNA_def_property_ui_text(prop, "Mul", "Vertex paint Mul.");
}
static void rna_def_image_paint(BlenderRNA *brna)
@@ -335,9 +341,9 @@ static void rna_def_particle_edit(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem select_mode_items[] = {
- {SCE_SELECT_PATH, "PATH", ICON_EDGESEL, "Path", ""}, // XXX icon
- {SCE_SELECT_POINT, "POINT", ICON_VERTEXSEL, "Point", ""}, // XXX icon
- {SCE_SELECT_END, "END", ICON_FACESEL, "End", "E"}, // XXX icon
+ {SCE_SELECT_PATH, "PATH", ICON_PARTICLE_PATH, "Path", "Path edit mode"},
+ {SCE_SELECT_POINT, "POINT", ICON_PARTICLE_POINT, "Point", "Point select mode"},
+ {SCE_SELECT_END, "TIP", ICON_PARTICLE_TIP, "Tip", "Tip select mode"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem puff_mode[] = {
@@ -374,7 +380,7 @@ static void rna_def_particle_edit(BlenderRNA *brna)
RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode");
RNA_def_property_enum_items(prop, select_mode_items);
RNA_def_property_ui_text(prop, "Selection Mode", "Particle select and display mode.");
- RNA_def_property_update(prop, NC_OBJECT, "rna_ParticleEdit_update");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_update");
prop= RNA_def_property(srna, "keep_lengths", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_KEEP_LENGTHS);
diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c
index 8bbffa4425a..2e31facfd19 100644
--- a/source/blender/makesrna/intern/rna_sequence.c
+++ b/source/blender/makesrna/intern/rna_sequence.c
@@ -42,16 +42,6 @@
#ifdef RNA_RUNTIME
-static int rna_SequenceEditor_name_length(PointerRNA *ptr)
-{
- return strlen("Sequence Editor");
-}
-
-static void rna_SequenceEditor_name_get(PointerRNA *ptr, char *str)
-{
- strcpy(str, "Sequence Editor");
-}
-
static void rna_SequenceEditor_start_frame_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
@@ -176,8 +166,10 @@ static int rna_Sequence_name_length(PointerRNA *ptr)
static void rna_Sequence_name_set(PointerRNA *ptr, const char *value)
{
+ Scene *sce= (Scene*)ptr->id.data;
Sequence *seq= (Sequence*)ptr->data;
BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2);
+ seqUniqueName(&sce->ed->seqbase, seq);
}
static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr)
@@ -230,16 +222,11 @@ static char *rna_Sequence_path(PointerRNA *ptr)
*/
if (seq->name+2)
return BLI_sprintfN("sequence_editor.sequences[\"%s\"]", seq->name+2);
- else {
- /* compromise for the frequent sitation when strips don't have names... */
- Scene *sce= (Scene*)ptr->id.data;
- Editing *ed= seq_give_editing(sce, FALSE);
-
- return BLI_sprintfN("sequence_editor.sequences[%d]", BLI_findindex(&ed->seqbase, seq));
- }
+ else
+ return BLI_strdup("");
}
-static PointerRNA rna_SequenceEdtior_meta_stack_get(CollectionPropertyIterator *iter)
+static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator *iter)
{
ListBaseIterator *internal= iter->internal;
MetaStack *ms= (MetaStack*)internal->link;
@@ -545,6 +532,23 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Blend Opacity", "");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_float_sdna(prop, NULL, "effect_fader");
+ RNA_def_property_ui_text(prop, "Effect fader position", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+
+ prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE);
+ RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the builtin default (usually make transition as long as effect strip).");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+
+
+ prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "speed_fader");
+ RNA_def_property_ui_text(prop, "Speed effect fader position", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+
/* functions */
func= RNA_def_function(srna, "getStripElem", "give_stripelem");
RNA_def_function_ui_description(func, "Return the strip element from a given frame or None.");
@@ -563,12 +567,6 @@ static void rna_def_editor(BlenderRNA *brna)
RNA_def_struct_ui_icon(srna, ICON_SEQUENCE);
RNA_def_struct_sdna(srna, "Editing");
- prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
- RNA_def_property_string_funcs(prop, "rna_SequenceEditor_name_get", "rna_SequenceEditor_name_length", NULL);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Name", "");
- RNA_def_struct_name_property(srna, prop);
-
prop= RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
RNA_def_property_struct_type(prop, "Sequence");
@@ -578,7 +576,7 @@ static void rna_def_editor(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "metastack", NULL);
RNA_def_property_struct_type(prop, "Sequence");
RNA_def_property_ui_text(prop, "Meta Stack", "Meta strip stack, last is currently edited meta strip.");
- RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEdtior_meta_stack_get", 0, 0, 0, 0, 0);
+ RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEditor_meta_stack_get", 0, 0, 0);
prop= RNA_def_property(srna, "active_strip", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "act_seq");
@@ -645,7 +643,7 @@ static void rna_def_filter_video(StructRNA *srna)
RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_translation_set");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
-
+
prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->transform");
RNA_def_property_ui_text(prop, "Transform", "");
@@ -751,7 +749,9 @@ static void rna_def_scene(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "Sequence");
prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
rna_def_filter_video(srna);
rna_def_proxy(srna);
@@ -797,7 +797,7 @@ static void rna_def_sound(BlenderRNA *brna)
prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "Sound");
- RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence (RAM audio only).");
+ RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence.");
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name");
@@ -807,8 +807,16 @@ static void rna_def_sound(BlenderRNA *brna)
prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->dir");
RNA_def_property_ui_text(prop, "Directory", "");
-
+
rna_def_input(srna);
+
+ RNA_def_struct_sdna_from(srna, "SoundHandle", "sound_handle");
+
+ prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "volume");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Volume", "Playback volume of the sound");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
}
static void rna_def_effect(BlenderRNA *brna)
@@ -1054,6 +1062,7 @@ static void rna_def_speed_control(BlenderRNA *brna)
prop= RNA_def_property(srna, "global_speed", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "globalSpeed");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */
RNA_def_property_ui_text(prop, "Global Speed", "");
RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0);
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index c77dabe5e4d..ea695880526 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -202,6 +202,31 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i
return item;
}
+/* Space 3D View */
+static void rna_Space3DView_lock_camera_and_layers_set(PointerRNA *ptr, int value)
+{
+ View3D *v3d= (View3D*)(ptr->data);
+ bScreen *sc= (bScreen*)ptr->id.data;
+
+ v3d->scenelock = value;
+
+ if(value) {
+ int bit;
+ v3d->lay= sc->scene->lay;
+ /* seek for layact */
+ bit= 0;
+ while(bit<32) {
+ if(v3d->lay & (1<<bit)) {
+ v3d->layact= 1<<bit;
+ break;
+ }
+ bit++;
+ }
+ v3d->camera= sc->scene->camera;
+ }
+}
+
+
/* Space Image Editor */
static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr)
@@ -418,6 +443,9 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr)
/* set action */
adt->action= saction->action;
id_us_plus(&adt->action->id);
+
+ /* force depsgraph flush too */
+ DAG_id_flush_update(&obact->id, OB_RECALC_OB|OB_RECALC_DATA);
}
}
@@ -638,11 +666,11 @@ static void rna_def_space_3dview(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem pivot_items[] = {
- {V3D_CENTER, "BOUNDING_BOX_CENTER", 0, "Bounding Box Center", ""},
- {V3D_CURSOR, "CURSOR", 0, "3D Cursor", ""},
- {V3D_LOCAL, "INDIVIDUAL_CENTERS", 0, "Individual Centers", ""},
- {V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""},
- {V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""},
+ {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""},
+ {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", ""},
+ {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECOLLECTION, "Individual Centers", ""},
+ {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECENTER, "Median Point", ""},
+ {V3D_ACTIVE, "ACTIVE_ELEMENT", ICON_ROTACTIVE, "Active Element", ""},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Space3DView", "Space");
@@ -656,10 +684,16 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "lock_object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_pointer_sdna(prop, NULL, "ob_centre");
RNA_def_property_ui_text(prop, "Lock Object", "3D View center is locked to this object's position");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+ prop= RNA_def_property(srna, "lock_bone", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "ob_centre_bone");
+ RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to this bone's position");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
prop= RNA_def_property(srna, "background_image", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "bgpic");
RNA_def_property_ui_text(prop, "Background Image", "Image and settings to display in the 3D View background");
@@ -750,6 +784,12 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+ prop= RNA_def_property(srna, "occlude_geometry", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ZBUF_SELECT);
+ RNA_def_property_ui_text(prop, "Occlude Geometry", "Limit selection to visible (clipped with depth buffer)");
+ RNA_def_property_ui_icon(prop, ICON_ORTHO, 0);
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
prop= RNA_def_property(srna, "display_background_image", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, NULL, "rna_View3D_display_background_image_set");
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPIC);
@@ -765,26 +805,31 @@ static void rna_def_space_3dview(BlenderRNA *brna)
prop= RNA_def_property(srna, "pivot_point_align", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ALIGN);
RNA_def_property_ui_text(prop, "Align", "Manipulate object centers only.");
+ RNA_def_property_ui_icon(prop, ICON_ALIGN, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "manipulator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_USE_MANIPULATOR);
RNA_def_property_ui_text(prop, "Manipulator", "Use a 3D manipulator widget for controlling transforms.");
+ RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "manipulator_translate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_TRANSLATE);
RNA_def_property_ui_text(prop, "Manipulator Translate", "Use the manipulator for movement transformations.");
+ RNA_def_property_ui_icon(prop, ICON_MAN_TRANS, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "manipulator_rotate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_ROTATE);
RNA_def_property_ui_text(prop, "Manipulator Rotate", "Use the manipulator for rotation transformations.");
+ RNA_def_property_ui_icon(prop, ICON_MAN_ROT, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "manipulator_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_SCALE);
RNA_def_property_ui_text(prop, "Manipulator Scale", "Use the manipulator for scale transformations.");
+ RNA_def_property_ui_icon(prop, ICON_MAN_SCALE, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE);
@@ -813,6 +858,18 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, "RegionView3D", "viewlock", RV3D_BOXCLIP);
RNA_def_property_ui_text(prop, "Clip", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
+ prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set");
+ RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Lock the active camera and layers to scene.");
+ RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1);
+
+ prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1);
+ RNA_def_property_array(prop, 20);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Used Layers", "Layers that contain something.");
}
static void rna_def_space_buttons(BlenderRNA *brna)
@@ -991,6 +1048,11 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
/* flag's */
+ prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SEQ_NO_DRAW_CFRANUM);
+ RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
+
prop= RNA_def_property(srna, "draw_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAWFRAMES);
RNA_def_property_ui_text(prop, "Draw Frames", "Draw frames rather then seconds.");
@@ -1153,7 +1215,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceDopeSheetEditor_action_set", NULL);
RNA_def_property_ui_text(prop, "Action", "Action displayed and edited in this space.");
- RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_action_update");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, "rna_SpaceDopeSheetEditor_action_update");
/* mode */
prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_text.c b/source/blender/makesrna/intern/rna_text.c
index 8c9b2b58887..bed686ed360 100644
--- a/source/blender/makesrna/intern/rna_text.c
+++ b/source/blender/makesrna/intern/rna_text.c
@@ -194,6 +194,10 @@ static void rna_def_text(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Memory", "Text file is in memory, without a corresponding file on disk.");
+ prop= RNA_def_property(srna, "use_module", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_ISSCRIPT);
+ RNA_def_property_ui_text(prop, "Register", "Register this text as a module on loading.");
+
prop= RNA_def_property(srna, "lines", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "TextLine");
RNA_def_property_ui_text(prop, "Lines", "Lines of text.");
diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index 44e7d0f68d0..ceb78d8cddf 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -71,36 +71,36 @@ static StructRNA *rna_Texture_refine(struct PointerRNA *ptr)
Tex *tex= (Tex*)ptr->data;
switch(tex->type) {
+ case TEX_BLEND:
+ return &RNA_BlendTexture;
case TEX_CLOUDS:
return &RNA_CloudsTexture;
- case TEX_WOOD:
- return &RNA_WoodTexture;
- case TEX_MARBLE:
- return &RNA_MarbleTexture;
+ case TEX_DISTNOISE:
+ return &RNA_DistortedNoiseTexture;
+ case TEX_ENVMAP:
+ return &RNA_EnvironmentMapTexture;
+ case TEX_IMAGE:
+ return &RNA_ImageTexture;
case TEX_MAGIC:
return &RNA_MagicTexture;
- case TEX_BLEND:
- return &RNA_BlendTexture;
- case TEX_STUCCI:
- return &RNA_StucciTexture;
+ case TEX_MARBLE:
+ return &RNA_MarbleTexture;
+ case TEX_MUSGRAVE:
+ return &RNA_MusgraveTexture;
case TEX_NOISE:
return &RNA_NoiseTexture;
- case TEX_IMAGE:
- return &RNA_ImageTexture;
case TEX_PLUGIN:
return &RNA_PluginTexture;
- case TEX_ENVMAP:
- return &RNA_EnvironmentMapTexture;
- case TEX_MUSGRAVE:
- return &RNA_MusgraveTexture;
- case TEX_VORONOI:
- return &RNA_VoronoiTexture;
- case TEX_DISTNOISE:
- return &RNA_DistortedNoiseTexture;
case TEX_POINTDENSITY:
return &RNA_PointDensityTexture;
+ case TEX_STUCCI:
+ return &RNA_StucciTexture;
+ case TEX_VORONOI:
+ return &RNA_VoronoiTexture;
case TEX_VOXELDATA:
return &RNA_VoxelDataTexture;
+ case TEX_WOOD:
+ return &RNA_WoodTexture;
default:
return &RNA_Texture;
}
@@ -1780,21 +1780,21 @@ static void rna_def_texture(BlenderRNA *brna)
static EnumPropertyItem prop_type_items[] = {
{0, "NONE", 0, "None", ""},
- {TEX_PLUGIN, "PLUGIN", ICON_PLUGIN, "Plugin", ""},
- {TEX_IMAGE, "IMAGE", ICON_IMAGE_DATA, "Image or Movie", ""},
- {TEX_ENVMAP, "ENVIRONMENT_MAP", ICON_IMAGE_DATA, "Environment Map", ""},
+ {TEX_BLEND, "BLEND", ICON_TEXTURE, "Blend", ""},
{TEX_CLOUDS, "CLOUDS", ICON_TEXTURE, "Clouds", ""},
- {TEX_WOOD, "WOOD", ICON_TEXTURE, "Wood", ""},
- {TEX_MARBLE, "MARBLE", ICON_TEXTURE, "Marble", ""},
+ {TEX_DISTNOISE, "DISTORTED_NOISE", ICON_TEXTURE, "Distorted Noise", ""},
+ {TEX_ENVMAP, "ENVIRONMENT_MAP", ICON_IMAGE_DATA, "Environment Map", ""},
+ {TEX_IMAGE, "IMAGE", ICON_IMAGE_DATA, "Image or Movie", ""},
{TEX_MAGIC, "MAGIC", ICON_TEXTURE, "Magic", ""},
- {TEX_BLEND, "BLEND", ICON_TEXTURE, "Blend", ""},
- {TEX_STUCCI, "STUCCI", ICON_TEXTURE, "Stucci", ""},
- {TEX_NOISE, "NOISE", ICON_TEXTURE, "Noise", ""},
+ {TEX_MARBLE, "MARBLE", ICON_TEXTURE, "Marble", ""},
{TEX_MUSGRAVE, "MUSGRAVE", ICON_TEXTURE, "Musgrave", ""},
- {TEX_VORONOI, "VORONOI", ICON_TEXTURE, "Voronoi", ""},
- {TEX_DISTNOISE, "DISTORTED_NOISE", ICON_TEXTURE, "Distorted Noise", ""},
+ {TEX_NOISE, "NOISE", ICON_TEXTURE, "Noise", ""},
+ {TEX_PLUGIN, "PLUGIN", ICON_PLUGIN, "Plugin", ""},
{TEX_POINTDENSITY, "POINT_DENSITY", ICON_TEXTURE, "Point Density", ""},
+ {TEX_STUCCI, "STUCCI", ICON_TEXTURE, "Stucci", ""},
+ {TEX_VORONOI, "VORONOI", ICON_TEXTURE, "Voronoi", ""},
{TEX_VOXELDATA, "VOXEL_DATA", ICON_TEXTURE, "Voxel Data", ""},
+ {TEX_WOOD, "WOOD", ICON_TEXTURE, "Wood", ""},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Texture", "ID");
diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c
index ad4557f76a1..e15cc130899 100644
--- a/source/blender/makesrna/intern/rna_ui_api.c
+++ b/source/blender/makesrna/intern/rna_ui_api.c
@@ -37,24 +37,29 @@
#ifdef RNA_RUNTIME
-static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event)
+static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event, int index)
{
+ PropertyRNA *prop= RNA_struct_find_property(ptr, propname);
int flag= 0;
+ if(!prop) {
+ printf("rna_uiItemR: property not found: %s\n", propname);
+ return;
+ }
+
flag |= (slider)? UI_ITEM_R_SLIDER: 0;
flag |= (expand)? UI_ITEM_R_EXPAND: 0;
flag |= (toggle)? UI_ITEM_R_TOGGLE: 0;
flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0;
flag |= (event)? UI_ITEM_R_EVENT: 0;
flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0;
-
- uiItemR(layout, name, icon, ptr, propname, flag);
+
+ uiItemFullR(layout, name, icon, ptr, prop, index, 0, flag);
}
-static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname, int properties)
+static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname)
{
- int flag= (properties)? UI_ITEM_O_RETURN_PROPS: 0;
- return uiItemFullO(layout, name, icon, opname, NULL, uiLayoutGetOperatorContext(layout), flag);
+ return uiItemFullO(layout, name, icon, opname, NULL, uiLayoutGetOperatorContext(layout), UI_ITEM_O_RETURN_PROPS);
}
#else
@@ -142,7 +147,7 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_float(func, "percentage", 0.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
/* items */
- func= RNA_def_function(srna, "itemR", "rna_uiItemR");
+ func= RNA_def_function(srna, "prop", "rna_uiItemR");
api_ui_item_common(func);
api_ui_item_rna_common(func);
RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
@@ -151,21 +156,22 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text.");
RNA_def_boolean(func, "event", 0, "", "Use button to input key events.");
RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers.");
+ RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */
- func= RNA_def_function(srna, "items_enumR", "uiItemsEnumR");
+ func= RNA_def_function(srna, "props_enum", "uiItemsEnumR");
api_ui_item_rna_common(func);
- func= RNA_def_function(srna, "item_menu_enumR", "uiItemMenuEnumR");
+ func= RNA_def_function(srna, "prop_menu_enum", "uiItemMenuEnumR");
api_ui_item_common(func);
api_ui_item_rna_common(func);
- func= RNA_def_function(srna, "item_enumR", "uiItemEnumR_string");
+ func= RNA_def_function(srna, "prop_enum", "uiItemEnumR_string");
api_ui_item_common(func);
api_ui_item_rna_common(func);
parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "item_pointerR", "uiItemPointerR");
+ func= RNA_def_function(srna, "prop_object", "uiItemPointerR");
api_ui_item_common(func);
api_ui_item_rna_common(func);
parm= RNA_def_pointer(func, "search_data", "AnyType", "", "Data from which to take collection to search in.");
@@ -173,69 +179,68 @@ void RNA_api_ui_layout(StructRNA *srna)
parm= RNA_def_string(func, "search_property", "", 0, "", "Identifier of search collection property.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "itemO", "rna_uiItemO");
+ func= RNA_def_function(srna, "operator", "rna_uiItemO");
api_ui_item_op_common(func);
- parm= RNA_def_boolean(func, "properties", 0, "Properties", "Return operator properties to fill in manually.");
- parm= RNA_def_pointer(func, "return_properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true.");
+ parm= RNA_def_pointer(func, "properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true.");
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
RNA_def_function_return(func, parm);
- func= RNA_def_function(srna, "item_enumO", "uiItemEnumO_string");
+/* func= RNA_def_function(srna, "operator_enum", "uiItemEnumO_string");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_flag(parm, PROP_REQUIRED); */
- func= RNA_def_function(srna, "items_enumO", "uiItemsEnumO");
+ func= RNA_def_function(srna, "operator_enums", "uiItemsEnumO");
parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "item_menu_enumO", "uiItemMenuEnumO");
+ func= RNA_def_function(srna, "operator_menu_enum", "uiItemMenuEnumO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "item_booleanO", "uiItemBooleanO");
+/* func= RNA_def_function(srna, "operator_boolean", "uiItemBooleanO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_boolean(func, "value", 0, "", "Value of the property to call the operator with.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_flag(parm, PROP_REQUIRED); */
- func= RNA_def_function(srna, "item_intO", "uiItemIntO");
+/* func= RNA_def_function(srna, "operator_int", "uiItemIntO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_int(func, "value", 0, INT_MIN, INT_MAX, "", "Value of the property to call the operator with.", INT_MIN, INT_MAX);
- RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_flag(parm, PROP_REQUIRED); */
- func= RNA_def_function(srna, "item_floatO", "uiItemFloatO");
+/* func= RNA_def_function(srna, "operator_float", "uiItemFloatO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_float(func, "value", 0, -FLT_MAX, FLT_MAX, "", "Value of the property to call the operator with.", -FLT_MAX, FLT_MAX);
- RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_flag(parm, PROP_REQUIRED); */
- func= RNA_def_function(srna, "item_stringO", "uiItemStringO");
+/* func= RNA_def_function(srna, "operator_string", "uiItemStringO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "value", "", 0, "", "Value of the property to call the operator with.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_flag(parm, PROP_REQUIRED); */
- func= RNA_def_function(srna, "itemL", "uiItemL");
+ func= RNA_def_function(srna, "label", "uiItemL");
api_ui_item_common(func);
- func= RNA_def_function(srna, "itemM", "uiItemM");
+ func= RNA_def_function(srna, "menu", "uiItemM");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
api_ui_item_common(func);
parm= RNA_def_string(func, "menu", "", 0, "", "Identifier of the menu.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "itemS", "uiItemS");
+ func= RNA_def_function(srna, "separator", "uiItemS");
/* context */
func= RNA_def_function(srna, "set_context_pointer", "uiLayoutSetContextPointer");
@@ -305,6 +310,12 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "template_layers", "uiTemplateLayers");
api_ui_item_rna_common(func);
+ parm= RNA_def_pointer(func, "used_layers_data", "AnyType", "", "Data from which to take property.");
+ RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
+ parm= RNA_def_string(func, "used_layers_property", "", 0, "", "Identifier of property in data.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_int(func, "active_layer", 0, 0, INT_MAX, "Active Layer", "", 0, INT_MAX);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet");
api_ui_item_rna_common(func);
@@ -344,9 +355,11 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "template_header_3D", "uiTemplateHeader3D");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
- func= RNA_def_function(srna, "view3d_select_faceselmenu", "uiTemplate_view3d_select_faceselmenu");
- RNA_def_function_flag(func, FUNC_USE_CONTEXT);
-}
+
+ func= RNA_def_function(srna, "introspect", "uiLayoutIntrospect");
+ parm= RNA_def_string(func, "string", "", 1024*1024, "Descr", "DESCR");
+ RNA_def_function_return(func, parm);
+}
#endif
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index a54e1b84709..9f7d897d09c 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -46,6 +46,7 @@
#include "BKE_DerivedMesh.h"
#include "BKE_depsgraph.h"
#include "DNA_object_types.h"
+// #include "GPU_draw.h"
static void rna_userdef_update(bContext *C, PointerRNA *ptr)
{
@@ -151,6 +152,15 @@ static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr)
rna_userdef_update(C, ptr);
}
+// XXX - todo, this is not accessible from here and it only works when the userprefs are in the same window.
+// extern int GPU_default_lights(void);
+static void rna_UserDef_viewport_lights_update(bContext *C, PointerRNA *ptr)
+{
+ // GPU_default_lights();
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+ rna_userdef_update(C, ptr);
+}
+
static void rna_userdef_autosave_update(bContext *C, PointerRNA *ptr)
{
WM_autosave_init(C);
@@ -491,22 +501,22 @@ static void rna_def_userdef_theme_spaces_main(StructRNA *srna, int spacetype)
/* window */
prop= RNA_def_property(srna, "back", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Window Back", "");
+ RNA_def_property_ui_text(prop, "Window Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "title", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Window Title", "");
+ RNA_def_property_ui_text(prop, "Title", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "text", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Window Text", "");
+ RNA_def_property_ui_text(prop, "Text", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "text_hi", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Window Text Highlight", "");
+ RNA_def_property_ui_text(prop, "Text Highlight", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
/* header */
@@ -526,48 +536,48 @@ static void rna_def_userdef_theme_spaces_main(StructRNA *srna, int spacetype)
RNA_def_property_update(prop, 0, "rna_userdef_update");
/* buttons */
- if(! ELEM(spacetype, SPACE_BUTS, SPACE_OUTLINER)) {
- prop= RNA_def_property(srna, "button", PROP_FLOAT, PROP_COLOR);
- RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Button Back", "");
- RNA_def_property_update(prop, 0, "rna_userdef_update");
-
- prop= RNA_def_property(srna, "button_title", PROP_FLOAT, PROP_COLOR);
- RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Button Title", "");
- RNA_def_property_update(prop, 0, "rna_userdef_update");
-
- prop= RNA_def_property(srna, "button_text", PROP_FLOAT, PROP_COLOR);
- RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Button Text", "");
- RNA_def_property_update(prop, 0, "rna_userdef_update");
-
- prop= RNA_def_property(srna, "button_text_hi", PROP_FLOAT, PROP_COLOR);
- RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Button Text Highlight", "");
- RNA_def_property_update(prop, 0, "rna_userdef_update");
- }
+// if(! ELEM(spacetype, SPACE_BUTS, SPACE_OUTLINER)) {
+ prop= RNA_def_property(srna, "button", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Region Background", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ prop= RNA_def_property(srna, "button_title", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Region Text Titles", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ prop= RNA_def_property(srna, "button_text", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Region Text", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ prop= RNA_def_property(srna, "button_text_hi", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Region Text Highlight", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+// }
/* list/channels */
if(ELEM5(spacetype, SPACE_IPO, SPACE_ACTION, SPACE_NLA, SPACE_NODE, SPACE_FILE)) {
prop= RNA_def_property(srna, "list", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "List Back", "");
+ RNA_def_property_ui_text(prop, "Source List", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "list_title", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "List Title", "");
+ RNA_def_property_ui_text(prop, "Source List Title", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "list_text", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "List Text", "");
+ RNA_def_property_ui_text(prop, "Source List Text", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "list_text_hi", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "List Text Highlight", "");
+ RNA_def_property_ui_text(prop, "Source List Text Highlight", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
}
}
@@ -1369,7 +1379,7 @@ static void rna_def_userdef_theme_space_nla(BlenderRNA *brna)
prop= RNA_def_property(srna, "strips", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "strip");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "strips", "");
+ RNA_def_property_ui_text(prop, "Strips", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "strips_selected", PROP_FLOAT, PROP_COLOR);
@@ -1424,21 +1434,22 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
static EnumPropertyItem active_theme_group[] = {
{0, "USER_INTERFACE", ICON_UI, "User Interface", ""},
- {1, "VIEW_3D", ICON_VIEW3D, "View 3D", ""},
- {2, "GRAPH_EDITOR", ICON_IPO, "Graph Editor", ""},
- {3, "FILE_BROWSER", ICON_FILESEL, "File Browser", ""},
- {4, "NLA_EDITOR", ICON_NLA, "NLA Editor", ""},
- {5, "DOPESHEET_EDITOR", ICON_ACTION, "Dopesheet Editor", ""},
- {6, "IMAGE_EDITOR", ICON_IMAGE_COL, "Image Editor", ""},
- {7, "SEQUENCE_EDITOR", ICON_SEQUENCE, "Sequence Editor", ""},
- {8, "PROPERTIES", ICON_BUTS, "Properties", ""},
- {9, "TEXT_EDITOR", ICON_TEXT, "Text Editor", ""},
- {10, "TIMELINE", ICON_TIME, "Timeline", ""},
- {11, "NODE_EDITOR", ICON_NODE, "Node Editor", ""},
- {12, "LOGIC_EDITOR", ICON_LOGIC, "Logic Editor", ""},
- {13, "OUTLINER", ICON_OOPS, "Outliner", ""},
- {14, "INFO", ICON_INFO, "Info", ""},
- {15, "USER_PREFERENCES", ICON_PREFERENCES, "User Preferences", ""},
+ {1, "VIEW_3D", ICON_VIEW3D, "3D View", ""},
+ {2, "TIMELINE", ICON_TIME, "Timeline", ""},
+ {3, "GRAPH_EDITOR", ICON_IPO, "Graph Editor", ""},
+ {4, "DOPESHEET_EDITOR", ICON_ACTION, "Dopesheet", ""},
+ {5, "NLA_EDITOR", ICON_NLA, "NLA Editor", ""},
+ {6, "IMAGE_EDITOR", ICON_IMAGE_COL, "UV/Image Editor", ""},
+ {7, "SEQUENCE_EDITOR", ICON_SEQUENCE, "Video Sequence Editor", ""},
+ {8, "TEXT_EDITOR", ICON_TEXT, "Text Editor", ""},
+ {9, "NODE_EDITOR", ICON_NODETREE, "Node Editor", ""},
+ {10, "LOGIC_EDITOR", ICON_LOGIC, "Logic Editor", ""},
+ {11, "PROPERTIES", ICON_BUTS, "Properties", ""},
+ {12, "OUTLINER", ICON_OOPS, "Outliner", ""},
+ {14, "USER_PREFERENCES", ICON_PREFERENCES, "User Preferences", ""},
+ {15, "INFO", ICON_INFO, "Info", ""},
+ {16, "FILE_BROWSER", ICON_FILESEL, "File Browser", ""},
+ {17, "CONSOLE", ICON_CONSOLE, "Console", ""},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Theme", NULL);
@@ -1595,21 +1606,25 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna)
prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", 1);
RNA_def_property_ui_text(prop, "Enabled", "Enable this OpenGL light in solid draw mode.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
prop= RNA_def_property(srna, "direction", PROP_FLOAT, PROP_DIRECTION);
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Direction", "The direction that the OpenGL light is shining.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
prop= RNA_def_property(srna, "diffuse_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "col");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Diffuse Color", "The diffuse color of the OpenGL light.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
prop= RNA_def_property(srna, "specular_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "spec");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Specular Color", "The color of the lights specular highlight.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
}
static void rna_def_userdef_view(BlenderRNA *brna)
@@ -2159,10 +2174,6 @@ static void rna_def_userdef_system(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_DONT_DOSCRIPTLINKS);
RNA_def_property_ui_text(prop, "Auto Run Python Scripts", "Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source).");
- prop= RNA_def_property(srna, "emulate_numpad", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD);
- RNA_def_property_ui_text(prop, "Emulate Numpad", "Causes the 1 to 0 keys to act as the numpad (useful for laptops).");
-
prop= RNA_def_property(srna, "prefetch_frames", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "prefetchframes");
RNA_def_property_range(prop, 0, 500);
@@ -2271,26 +2282,21 @@ static void rna_def_userdef_input(BlenderRNA *brna)
{USER_TRACKBALL, "TRACKBALL", 0, "Trackball", "Use trackball style rotation in the viewport."},
{0, NULL, 0, NULL, NULL}};
- static EnumPropertyItem middle_mouse_mouse_items[] = {
- {0, "PAN", 0, "Pan", "Use the middle mouse button for panning the viewport."},
- {USER_VIEWMOVE, "ROTATE", 0, "Rotate", "Use the middle mouse button for rotation the viewport."},
- {0, NULL, 0, NULL, NULL}};
-
static EnumPropertyItem view_zoom_styles[] = {
{USER_ZOOM_CONT, "CONTINUE", 0, "Continue", "Old style zoom, continues while moving mouse up or down."},
{USER_ZOOM_DOLLY, "DOLLY", 0, "Dolly", "Zooms in and out based on vertical mouse movement."},
{USER_ZOOM_SCALE, "SCALE", 0, "Scale", "Zooms in and out like scaling the view, mouse movements relative to center."},
{0, NULL, 0, NULL, NULL}};
+
+ static EnumPropertyItem view_zoom_axes[] = {
+ {0, "VERTICAL", 0, "Vertical", "Zooms in and out based on vertical mouse movement."},
+ {USER_ZOOM_DOLLY_HORIZ, "HORIZONTAL", 0, "Horizontal", "Zooms in and out based on horizontal mouse movement."},
+ {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "UserPreferencesInput", NULL);
RNA_def_struct_sdna(srna, "UserDef");
RNA_def_struct_nested(brna, srna, "UserPreferences");
RNA_def_struct_ui_text(srna, "Input", "Settings for input devices.");
-
- prop= RNA_def_property(srna, "middle_mouse", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
- RNA_def_property_enum_items(prop, middle_mouse_mouse_items);
- RNA_def_property_ui_text(prop, "Middle Mouse", "Use the middle mouse button to pan or zoom the view.");
prop= RNA_def_property(srna, "select_mouse", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
@@ -2302,6 +2308,15 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_enum_items(prop, view_zoom_styles);
RNA_def_property_ui_text(prop, "Viewport Zoom Style", "Which style to use for viewport scaling.");
+ prop= RNA_def_property(srna, "zoom_axis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "uiflag");
+ RNA_def_property_enum_items(prop, view_zoom_axes);
+ RNA_def_property_ui_text(prop, "Zoom Axis", "Axis of mouse movement to zoom in or out on.");
+
+ prop= RNA_def_property(srna, "invert_zoom_direction", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_INVERT);
+ RNA_def_property_ui_text(prop, "Invert Zoom Direction", "Invert the axis of mouse movement for zooming");
+
prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, view_rotation_items);
@@ -2309,7 +2324,7 @@ static void rna_def_userdef_input(BlenderRNA *brna)
prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE);
- RNA_def_property_ui_text(prop, "Continuous Grab", "Experimental option to allow moving the mouse outside the view");
+ RNA_def_property_ui_text(prop, "Continuous Grab", "Allow moving the mouse outside the view on some manipulations (transform, ui control drag).");
prop= RNA_def_property(srna, "ndof_pan_speed", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ndof_pan");
@@ -2325,6 +2340,10 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE);
RNA_def_property_boolean_funcs(prop, NULL, "rna_userdef_emulate_set");
RNA_def_property_ui_text(prop, "Emulate 3 Button Mouse", "Emulates Middle Mouse with Alt+LeftMouse (doesnt work with Left Mouse Select option.)");
+
+ prop= RNA_def_property(srna, "emulate_numpad", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD);
+ RNA_def_property_ui_text(prop, "Emulate Numpad", "Causes the 1 to 0 keys to act as the numpad (useful for laptops).");
}
static void rna_def_userdef_filepaths(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 39c4c340b97..de872b41335 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -42,6 +42,7 @@ EnumPropertyItem event_keymouse_value_items[] = {
{KM_ANY, "ANY", 0, "Any", ""},
{KM_PRESS, "PRESS", 0, "Press", ""},
{KM_RELEASE, "RELEASE", 0, "Release", ""},
+ {KM_CLICK, "CLICK", 0, "Click", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem event_tweak_value_items[]= {
@@ -61,6 +62,7 @@ EnumPropertyItem event_value_items[] = {
{KM_NOTHING, "NOTHING", 0, "Nothing", ""},
{KM_PRESS, "PRESS", 0, "Press", ""},
{KM_RELEASE, "RELEASE", 0, "Release", ""},
+ {KM_CLICK, "CLICK", 0, "Click", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem event_tweak_type_items[]= {
@@ -230,6 +232,17 @@ EnumPropertyItem event_type_items[] = {
{TIMER2, "TIMER2", 0, "Timer 2", ""},
{0, NULL, 0, NULL, NULL}};
+EnumPropertyItem keymap_propvalue_items[] = {
+ {0, "NONE", 0, "", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+EnumPropertyItem keymap_modifiers_items[] = {
+ {KM_ANY, "ANY", 0, "Any", ""},
+ {0, "NONE", 0, "None", ""},
+ {1, "FIRST", 0, "First", ""},
+ {2, "SECOND", 0, "Second", ""},
+ {0, NULL, 0, NULL, NULL}};
+
#define KMI_TYPE_KEYBOARD 0
#define KMI_TYPE_MOUSE 1
#define KMI_TYPE_TWEAK 2
@@ -291,7 +304,7 @@ static int rna_Operator_name_length(PointerRNA *ptr)
static PointerRNA rna_Operator_properties_get(PointerRNA *ptr)
{
wmOperator *op= (wmOperator*)ptr->data;
- return rna_pointer_inherit_refine(ptr, &RNA_OperatorProperties, op->properties);
+ return rna_pointer_inherit_refine(ptr, op->type->srna, op->properties);
}
@@ -403,6 +416,73 @@ static EnumPropertyItem *rna_KeyMapItem_value_itemf(bContext *C, PointerRNA *ptr
else return event_value_items;
}
+static EnumPropertyItem *rna_KeyMapItem_propvalue_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ wmKeyConfig *kc;
+ wmKeyMap *km;
+
+ /* check user keymaps */
+ for(km=U.keymaps.first; km; km=km->next) {
+ wmKeyMapItem *ki;
+ for (ki=km->items.first; ki; ki=ki->next) {
+ if (ki == ptr->data) {
+ if (!km->modal_items) {
+ if (!WM_keymap_user_init(wm, km)) {
+ return keymap_propvalue_items; /* ERROR */
+ }
+ }
+
+ return km->modal_items;
+ }
+ }
+ }
+
+ for(kc=wm->keyconfigs.first; kc; kc=kc->next) {
+ for(km=kc->keymaps.first; km; km=km->next) {
+ /* only check if it's a modal keymap */
+ if (km->modal_items) {
+ wmKeyMapItem *ki;
+ for (ki=km->items.first; ki; ki=ki->next) {
+ if (ki == ptr->data) {
+ return km->modal_items;
+ }
+ }
+ }
+ }
+ }
+
+
+ return keymap_propvalue_items; /* ERROR */
+}
+
+static int rna_KeyMapItem_any_getf(PointerRNA *ptr)
+{
+ wmKeyMapItem *kmi = (wmKeyMapItem*)ptr->data;
+
+ if (kmi->shift == KM_ANY &&
+ kmi->ctrl == KM_ANY &&
+ kmi->alt == KM_ANY &&
+ kmi->oskey == KM_ANY)
+
+ return 1;
+ else
+ return 0;
+}
+
+static void rna_KeyMapItem_any_setf(PointerRNA *ptr, int value)
+{
+ wmKeyMapItem *kmi = (wmKeyMapItem*)ptr->data;
+
+ if(value) {
+ kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= KM_ANY;
+ }
+ else {
+ kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= 0;
+ }
+}
+
+
static PointerRNA rna_WindowManager_active_keyconfig_get(PointerRNA *ptr)
{
wmWindowManager *wm= ptr->data;
@@ -734,6 +814,10 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_USER);
RNA_def_property_ui_text(prop, "User Defined", "Keymap is defined by the user.");
+ prop= RNA_def_property(srna, "modal", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_MODAL);
+ RNA_def_property_ui_text(prop, "Modal Keymap", "Indicates that a keymap is used for translate modal events for an operator.");
+
RNA_api_keymap(srna);
/* KeyMapItem */
@@ -770,20 +854,32 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_KeyMapItem_value_itemf");
RNA_def_property_ui_text(prop, "Value", "");
+ prop= RNA_def_property(srna, "any", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_any_getf", "rna_KeyMapItem_any_setf");
+ RNA_def_property_ui_text(prop, "Any", "Any modifier keys pressed.");
+
prop= RNA_def_property(srna, "shift", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shift", 0);
+// RNA_def_property_enum_sdna(prop, NULL, "shift");
+// RNA_def_property_enum_items(prop, keymap_modifiers_items);
RNA_def_property_ui_text(prop, "Shift", "Shift key pressed.");
prop= RNA_def_property(srna, "ctrl", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ctrl", 0);
+// RNA_def_property_enum_sdna(prop, NULL, "ctrl");
+// RNA_def_property_enum_items(prop, keymap_modifiers_items);
RNA_def_property_ui_text(prop, "Ctrl", "Control key pressed.");
prop= RNA_def_property(srna, "alt", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "alt", 0);
+// RNA_def_property_enum_sdna(prop, NULL, "alt");
+// RNA_def_property_enum_items(prop, keymap_modifiers_items);
RNA_def_property_ui_text(prop, "Alt", "Alt key pressed.");
prop= RNA_def_property(srna, "oskey", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "oskey", 0);
+// RNA_def_property_enum_sdna(prop, NULL, "oskey");
+// RNA_def_property_enum_items(prop, keymap_modifiers_items);
RNA_def_property_ui_text(prop, "OS Key", "Operating system key pressed.");
prop= RNA_def_property(srna, "key_modifier", PROP_ENUM, PROP_NONE);
@@ -795,6 +891,12 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED);
RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface.");
+ prop= RNA_def_property(srna, "propvalue", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "propvalue");
+ RNA_def_property_enum_items(prop, keymap_propvalue_items);
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_KeyMapItem_propvalue_itemf");
+ RNA_def_property_ui_text(prop, "Property Value", "The value this event translates to in a modal keymap.");
+
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE);
RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item.");
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index 59605054804..62c4fe642a1 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -43,15 +43,79 @@
#include "WM_api.h"
#include "WM_types.h"
-static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, char *idname, int type, int value, int shift, int ctrl, int alt, int oskey, int keymodifier)
+static wmKeyMap *rna_keymap_add(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid, int modal)
{
+ if (modal == 0) {
+ return WM_keymap_find(keyconf, idname, spaceid, regionid);
+ } else {
+ return WM_modalkeymap_add(keyconf, idname, NULL); /* items will be lazy init */
+ }
+}
+
+static wmKeyMap *rna_keymap_active(wmKeyMap *km, bContext *C)
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ return WM_keymap_active(wm, km);
+}
+
+
+static wmKeyMapItem *rna_KeyMap_add_modal_item(wmKeyMap *km, bContext *C, ReportList *reports, char* propvalue_str, int type, int value, int any, int shift, int ctrl, int alt, int oskey, int keymodifier)
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ int modifier= 0;
+ int propvalue = 0;
+
+ /* only modal maps */
+ if ((km->flag & KEYMAP_MODAL) == 0) {
+ BKE_report(reports, RPT_ERROR, "Not a modal keymap.");
+ return NULL;
+ }
+
+ if (!km->modal_items) {
+ if(!WM_keymap_user_init(wm, km)) {
+ BKE_report(reports, RPT_ERROR, "User defined keymap doesn't correspond to a system keymap.");
+ return NULL;
+ }
+ }
+
+ if (!km->modal_items) {
+ BKE_report(reports, RPT_ERROR, "No property values defined.");
+ return NULL;
+ }
+
+
+ if(RNA_enum_value_from_id(km->modal_items, propvalue_str, &propvalue)==0) {
+ BKE_report(reports, RPT_WARNING, "Property value not in enumeration.");
+ }
+
+ if(shift) modifier |= KM_SHIFT;
+ if(ctrl) modifier |= KM_CTRL;
+ if(alt) modifier |= KM_ALT;
+ if(oskey) modifier |= KM_OSKEY;
+
+ if(any) modifier = KM_ANY;
+
+ return WM_modalkeymap_add_item(km, type, value, modifier, keymodifier, propvalue);
+}
+
+static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char *idname, int type, int any, int value, int shift, int ctrl, int alt, int oskey, int keymodifier)
+{
+// wmWindowManager *wm = CTX_wm_manager(C);
int modifier= 0;
+ /* only on non-modal maps */
+ if (km->flag & KEYMAP_MODAL) {
+ BKE_report(reports, RPT_ERROR, "Not a non-modal keymap.");
+ return NULL;
+ }
+
if(shift) modifier |= KM_SHIFT;
if(ctrl) modifier |= KM_CTRL;
if(alt) modifier |= KM_ALT;
if(oskey) modifier |= KM_OSKEY;
+ if(any) modifier = KM_ANY;
+
return WM_keymap_add_item(km, idname, type, value, modifier, keymodifier);
}
@@ -90,11 +154,12 @@ void RNA_api_keyconfig(StructRNA *srna)
FunctionRNA *func;
PropertyRNA *parm;
- func= RNA_def_function(srna, "add_keymap", "WM_keymap_find");
+ func= RNA_def_function(srna, "add_keymap", "rna_keymap_add");
parm= RNA_def_string(func, "name", "", 0, "Name", "");
RNA_def_property_flag(parm, PROP_REQUIRED);
RNA_def_enum(func, "space_type", space_type_items, SPACE_EMPTY, "Space Type", "");
RNA_def_enum(func, "region_type", region_type_items, RGN_TYPE_WINDOW, "Region Type", "");
+ RNA_def_boolean(func, "modal", 0, "Modal", "");
parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Added key map.");
RNA_def_function_return(func, parm);
}
@@ -105,12 +170,31 @@ void RNA_api_keymap(StructRNA *srna)
PropertyRNA *parm;
func= RNA_def_function(srna, "add_item", "rna_KeyMap_add_item");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm= RNA_def_string(func, "idname", "", 0, "Operator Identifier", "");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_enum(func, "type", event_type_items, 0, "Type", "");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_enum(func, "value", event_value_items, 0, "Value", "");
RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_boolean(func, "any", 0, "Any", "");
+ RNA_def_boolean(func, "shift", 0, "Shift", "");
+ RNA_def_boolean(func, "ctrl", 0, "Ctrl", "");
+ RNA_def_boolean(func, "alt", 0, "Alt", "");
+ RNA_def_boolean(func, "oskey", 0, "OS Key", "");
+ RNA_def_enum(func, "key_modifier", event_type_items, 0, "Key Modifier", "");
+ parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", "Added key map item.");
+ RNA_def_function_return(func, parm);
+
+ func= RNA_def_function(srna, "add_modal_item", "rna_KeyMap_add_modal_item");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ parm= RNA_def_string(func, "propvalue", "", 0, "Property Value", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_enum(func, "type", event_type_items, 0, "Type", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_enum(func, "value", event_value_items, 0, "Value", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_boolean(func, "any", 0, "Any", "");
RNA_def_boolean(func, "shift", 0, "Shift", "");
RNA_def_boolean(func, "ctrl", 0, "Ctrl", "");
RNA_def_boolean(func, "alt", 0, "Alt", "");
@@ -119,6 +203,11 @@ void RNA_api_keymap(StructRNA *srna)
parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", "Added key map item.");
RNA_def_function_return(func, parm);
+ func= RNA_def_function(srna, "active", "rna_keymap_active");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Active key map.");
+ RNA_def_function_return(func, parm);
+
func= RNA_def_function(srna, "remove_item", "WM_keymap_remove_item");
parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", "");
RNA_def_property_flag(parm, PROP_REQUIRED);
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_levels.c b/source/blender/nodes/intern/CMP_nodes/CMP_levels.c
index f0e314793ed..9f845727ddd 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_levels.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_levels.c
@@ -50,7 +50,7 @@ static void rgb_tobw(float r, float g, float b, float* out)
static void fill_bins(bNode* node, CompBuf* in, int* bins)
{
float value[4];
- int ivalue;
+ int ivalue=0;
int x,y;
/*fill bins */
diff --git a/source/blender/nodes/intern/CMP_util.h b/source/blender/nodes/intern/CMP_util.h
index bb08a448bf4..6f37a876169 100644
--- a/source/blender/nodes/intern/CMP_util.h
+++ b/source/blender/nodes/intern/CMP_util.h
@@ -60,7 +60,7 @@
#include "../CMP_node.h"
#include "node_util.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
#include "BLI_threads.h"
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_camera.c b/source/blender/nodes/intern/SHD_nodes/SHD_camera.c
index 20136d75540..91dc1c7ceb5 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_camera.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_camera.c
@@ -45,7 +45,7 @@ static void node_shader_exec_camera(void *data, bNode *node, bNodeStack **in, bN
VECCOPY(out[0]->vec, shi->co); /* get view vector */
out[1]->vec[0]= fabs(shi->co[2]); /* get view z-depth */
- out[2]->vec[0]= Normalize(out[0]->vec); /* get view distance */
+ out[2]->vec[0]= normalize_v3(out[0]->vec); /* get view distance */
}
}
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_curves.c b/source/blender/nodes/intern/SHD_nodes/SHD_curves.c
index 511a6a6566d..c4f1dba57d3 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_curves.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_curves.c
@@ -106,7 +106,7 @@ static void node_shader_exec_curve_rgb(void *data, bNode *node, bNodeStack **in,
nodestack_get_vec(vec, SOCK_VECTOR, in[1]);
curvemapping_evaluateRGBF(node->storage, out[0]->vec, vec);
if(in[0]->vec[0] != 1.0f) {
- VecLerpf(out[0]->vec, vec, out[0]->vec, *in[0]->vec);
+ interp_v3_v3v3(out[0]->vec, vec, out[0]->vec, *in[0]->vec);
}
}
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_mapping.c b/source/blender/nodes/intern/SHD_nodes/SHD_mapping.c
index c081929a2fc..987525f52b6 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_mapping.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_mapping.c
@@ -49,7 +49,7 @@ static void node_shader_exec_mapping(void *data, bNode *node, bNodeStack **in, b
/* stack order input: vector */
/* stack order output: vector */
nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- Mat4MulVecfl(texmap->mat, vec);
+ mul_m4_v3(texmap->mat, vec);
if(texmap->flag & TEXMAP_CLIP_MIN) {
if(vec[0]<texmap->min[0]) vec[0]= texmap->min[0];
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_material.c b/source/blender/nodes/intern/SHD_nodes/SHD_material.c
index 69c2c0a345c..551958d190d 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_material.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_material.c
@@ -101,7 +101,7 @@ static void node_shader_exec_material(void *data, bNode *node, bNodeStack **in,
/* retrieve normal */
if(in[MAT_IN_NORMAL]->hasinput) {
nodestack_get_vec(shi->vn, SOCK_VECTOR, in[MAT_IN_NORMAL]);
- Normalize(shi->vn);
+ normalize_v3(shi->vn);
}
else
VECCOPY(shi->vn, shi->vno);
@@ -138,7 +138,7 @@ static void node_shader_exec_material(void *data, bNode *node, bNodeStack **in,
if(node->custom1 & SH_NODE_MAT_DIFF) {
VECCOPY(col, shrnode.combined);
if(!(node->custom1 & SH_NODE_MAT_SPEC)) {
- VecSubf(col, col, shrnode.spec);
+ sub_v3_v3v3(col, col, shrnode.spec);
}
}
else if(node->custom1 & SH_NODE_MAT_SPEC) {
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c b/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c
index 8a73a318f70..b377dbd2e03 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c
@@ -70,7 +70,7 @@ static void node_shader_exec_vect_math(void *data, bNode *node, bNodeStack **in,
out[0]->vec[1]= vec1[1] + vec2[1];
out[0]->vec[2]= vec1[2] + vec2[2];
- out[1]->vec[0] = Normalize( out[0]->vec );
+ out[1]->vec[0] = normalize_v3( out[0]->vec );
}
else if(node->custom1 == 3) { /* Dot product */
out[1]->vec[0]= (vec1[0] * vec2[0]) + (vec1[1] * vec2[1]) + (vec1[2] * vec2[2]);
@@ -80,7 +80,7 @@ static void node_shader_exec_vect_math(void *data, bNode *node, bNodeStack **in,
out[0]->vec[1]= (vec1[2] * vec2[0]) - (vec1[0] * vec2[2]);
out[0]->vec[2]= (vec1[0] * vec2[1]) - (vec1[1] * vec2[0]);
- out[1]->vec[0] = Normalize( out[0]->vec );
+ out[1]->vec[0] = normalize_v3( out[0]->vec );
}
else if(node->custom1 == 5) { /* Normalize */
if(in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */
@@ -94,7 +94,7 @@ static void node_shader_exec_vect_math(void *data, bNode *node, bNodeStack **in,
out[0]->vec[2]= vec2[2];
}
- out[1]->vec[0] = Normalize( out[0]->vec );
+ out[1]->vec[0] = normalize_v3( out[0]->vec );
}
}
diff --git a/source/blender/nodes/intern/SHD_util.h b/source/blender/nodes/intern/SHD_util.h
index a6fe5f4e9cc..76d5eb79490 100644
--- a/source/blender/nodes/intern/SHD_util.h
+++ b/source/blender/nodes/intern/SHD_util.h
@@ -58,7 +58,7 @@
#include "../SHD_node.h"
#include "node_util.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
#include "BLI_threads.h"
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_distance.c b/source/blender/nodes/intern/TEX_nodes/TEX_distance.c
index 297fc02939d..5355b3f0fff 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_distance.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_distance.c
@@ -27,7 +27,7 @@
*/
#include <math.h>
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "../TEX_util.h"
static bNodeSocketType inputs[]= {
@@ -48,7 +48,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
tex_input_vec(coord1, in[0], p, thread);
tex_input_vec(coord2, in[1], p, thread);
- *out = VecLenf(coord2, coord1);
+ *out = len_v3v3(coord2, coord1);
}
static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_rotate.c b/source/blender/nodes/intern/TEX_nodes/TEX_rotate.c
index 2184d32fcf2..1f550e32135 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_rotate.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_rotate.c
@@ -65,19 +65,19 @@ static void colorfn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
if(magsq == 0) magsq = 1;
- ndx = Inpf(coord, ax);
+ ndx = dot_v3v3(coord, ax);
para[0] = ax[0] * ndx * (1 - cos_a);
para[1] = ax[1] * ndx * (1 - cos_a);
para[2] = ax[2] * ndx * (1 - cos_a);
- VecSubf(perp, coord, para);
+ sub_v3_v3v3(perp, coord, para);
perp[0] = coord[0] * cos_a;
perp[1] = coord[1] * cos_a;
perp[2] = coord[2] * cos_a;
- Crossf(cp, ax, coord);
+ cross_v3_v3v3(cp, ax, coord);
cp[0] = cp[0] * sin_a;
cp[1] = cp[1] * sin_a;
diff --git a/source/blender/nodes/intern/TEX_util.h b/source/blender/nodes/intern/TEX_util.h
index 14e2773414a..e0bb907b0db 100644
--- a/source/blender/nodes/intern/TEX_util.h
+++ b/source/blender/nodes/intern/TEX_util.h
@@ -57,7 +57,7 @@
#include "../SHD_node.h"
#include "node_util.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
#include "BLI_threads.h"
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h
index acb45790ed2..a055060ed07 100644
--- a/source/blender/python/BPY_extern.h
+++ b/source/blender/python/BPY_extern.h
@@ -49,6 +49,7 @@ struct bConstraintTarget; /* DNA_constraint_types.h*/
struct Script; /* DNA_screen_types.h */
struct BPyMenu;
struct bContext;
+struct bContextDataResult;
struct ReportList;
#ifdef __cplusplus
@@ -71,74 +72,73 @@ extern "C" {
This is necassary to avoid blender buttons storing invalid pointers to freed
python data.*/
- void BPy_Set_DrawButtonsList(void *list);
- void BPy_Free_DrawButtonsList(void);
-
+// void BPy_Set_DrawButtonsList(void *list);
+// void BPy_Free_DrawButtonsList(void);
+//
void BPY_pyconstraint_eval(struct bPythonConstraint *con, struct bConstraintOb *cob, struct ListBase *targets);
- void BPY_pyconstraint_settings(void *arg1, void *arg2);
+// void BPY_pyconstraint_settings(void *arg1, void *arg2);
void BPY_pyconstraint_target(struct bPythonConstraint *con, struct bConstraintTarget *ct);
void BPY_pyconstraint_update(struct Object *owner, struct bConstraint *con);
int BPY_is_pyconstraint(struct Text *text);
- void BPY_free_pyconstraint_links(struct Text *text);
-
+// void BPY_free_pyconstraint_links(struct Text *text);
+//
void BPY_start_python( int argc, char **argv );
void BPY_end_python( void );
- void BPY_post_start_python( void );
- void init_syspath( int first_time );
- void syspath_append( char *dir );
- void BPY_rebuild_syspath( void );
- int BPY_path_update( void );
-
- int BPY_Err_getLinenumber( void );
- const char *BPY_Err_getFilename( void );
-
- int BPY_txt_do_python_Text( struct Text *text );
- int BPY_menu_do_python( short menutype, int event );
- int BPY_menu_do_shortcut( short menutype, unsigned short key, unsigned short modifiers );
- int BPY_menu_invoke( struct BPyMenu *pym, short menutype );
+// void init_syspath( int first_time );
+// void syspath_append( char *dir );
+// void BPY_rebuild_syspath( void );
+// int BPY_path_update( void );
+//
+// int BPY_Err_getLinenumber( void );
+// const char *BPY_Err_getFilename( void );
+//
+// int BPY_txt_do_python_Text( struct Text *text );
+// int BPY_menu_do_python( short menutype, int event );
+// int BPY_menu_do_shortcut( short menutype, unsigned short key, unsigned short modifiers );
+// int BPY_menu_invoke( struct BPyMenu *pym, short menutype );
/* 2.5 UI Scripts */
int BPY_run_python_script( struct bContext *C, const char *filename, struct Text *text, struct ReportList *reports ); // 2.5 working
int BPY_run_script_space_draw(const struct bContext *C, struct SpaceScript * sc); // 2.5 working
- void BPY_run_ui_scripts(struct bContext *C, int reload);
// int BPY_run_script_space_listener(struct bContext *C, struct SpaceScript * sc, struct ARegion *ar, struct wmNotifier *wmn); // 2.5 working
void BPY_update_modules( void ); // XXX - annoying, need this for pointers that get out of date
-
-
-
- int BPY_run_script(struct Script *script);
+//
+ int BPY_context_get(struct bContext *C, const char *member, struct bContextDataResult *result);
+//
+// int BPY_run_script(struct Script *script);
void BPY_free_compiled_text( struct Text *text );
-
- int BPY_has_onload_script( void );
-
- int BPY_is_spacehandler(struct Text *text, char spacetype);
- int BPY_del_spacehandler(struct Text *text, struct ScrArea *sa);
- int BPY_add_spacehandler(struct Text *txt, struct ScrArea *sa,char spacetype);
- int BPY_has_spacehandler(struct Text *text, struct ScrArea *sa);
- void BPY_screen_free_spacehandlers(struct bScreen *sc);
- int BPY_do_spacehandlers(struct ScrArea *sa, unsigned short event,
- short eventValue, unsigned short space_event);
-
- void BPY_pydriver_update(void);
+//
+// int BPY_has_onload_script( void );
+//
+// int BPY_is_spacehandler(struct Text *text, char spacetype);
+// int BPY_del_spacehandler(struct Text *text, struct ScrArea *sa);
+// int BPY_add_spacehandler(struct Text *txt, struct ScrArea *sa,char spacetype);
+// int BPY_has_spacehandler(struct Text *text, struct ScrArea *sa);
+// void BPY_screen_free_spacehandlers(struct bScreen *sc);
+// int BPY_do_spacehandlers(struct ScrArea *sa, unsigned short event,
+// short eventValue, unsigned short space_event);
+//
+// void BPY_pydriver_update(void);
float BPY_pydriver_eval(struct ChannelDriver *driver);
-
+//
int BPY_button_eval(struct bContext *C, char *expr, double *value);
/* format importer hook */
int BPY_call_importloader( char *name );
-
- void BPY_spacescript_do_pywin_draw( struct SpaceScript *sc );
- void BPY_spacescript_do_pywin_event( struct SpaceScript *sc,
- unsigned short event, short val, char ascii );
- void BPY_clear_script( struct Script *script );
- void BPY_free_finished_script( struct Script *script );
- void BPY_scripts_clear_pyobjects( void );
-
- void error_pyscript( void );
- void BPY_DECREF(void *pyob_ptr); /* Py_DECREF() */
-
+//
+// void BPY_spacescript_do_pywin_draw( struct SpaceScript *sc );
+// void BPY_spacescript_do_pywin_event( struct SpaceScript *sc,
+// unsigned short event, short val, char ascii );
+// void BPY_clear_script( struct Script *script );
+// void BPY_free_finished_script( struct Script *script );
+// void BPY_scripts_clear_pyobjects( void );
+//
+// void error_pyscript( void );
+// void BPY_DECREF(void *pyob_ptr); /* Py_DECREF() */
+ void BPY_set_context(struct bContext *C);
/* void BPY_Err_Handle(struct Text *text); */
/* int BPY_spacetext_is_pywin(struct SpaceText *st); */
+ void BPY_load_user_modules(struct bContext *C);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/blender/python/epy_doc_gen.py b/source/blender/python/epy_doc_gen.py
index b0126a0b9a0..f16c7504cb2 100644
--- a/source/blender/python/epy_doc_gen.py
+++ b/source/blender/python/epy_doc_gen.py
@@ -194,7 +194,15 @@ def write_func(rna, ident, out, func_type):
if rna_prop_type=='pointer':
rna_prop_type_refine = "L{%s}" % rna_prop.fixed_type.identifier
else:
- rna_prop_type_refine = rna_prop_type
+ # Collections/Arrays can have a srna type
+ rna_prop_srna_type = rna_prop.srna
+ if rna_prop_srna_type:
+ print(rna_prop_srna_type.identifier)
+ rna_prop_type_refine = "L{%s}" % rna_prop_srna_type.identifier
+ else:
+ rna_prop_type_refine = rna_prop_type
+
+ del rna_prop_srna_type
try: length = rna_prop.array_length
@@ -373,6 +381,13 @@ def rna2epy(BASEPATH):
if rna_prop_type=='collection': collection_str = 'Collection of '
else: collection_str = ''
+
+ # some collections have a srna for their own properties
+ # TODO - arrays, however this isnt used yet
+ rna_prop_srna_type = rna_prop.srna
+ if rna_prop_srna_type:
+ collection_str = "L{%s} %s" % (rna_prop_srna_type.identifier, collection_str)
+ del rna_prop_srna_type
try: rna_prop_ptr = rna_prop.fixed_type
except: rna_prop_ptr = None
@@ -530,12 +545,11 @@ def rna2epy(BASEPATH):
if rna_id_ignore(rna_prop_identifier): continue
if rna_prop_identifier in rna_base_prop_keys: continue
- try: rna_prop_ptr = rna_prop.fixed_type
- except: rna_prop_ptr = None
-
- # Does this property point to me?
- if rna_prop_ptr:
- rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_prop_identifier) )
+
+ for rna_prop_ptr in (getattr(rna_prop, "fixed_type", None), getattr(rna_prop, "srna", None)):
+ # Does this property point to me?
+ if rna_prop_ptr:
+ rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_prop_identifier) )
for rna_func in rna_struct.functions:
for rna_prop_identifier, rna_prop in rna_func.parameters.items():
diff --git a/source/blender/python/generic/Geometry.c b/source/blender/python/generic/Geometry.c
index f7b7ee866f0..0d59df6ceca 100644
--- a/source/blender/python/generic/Geometry.c
+++ b/source/blender/python/generic/Geometry.c
@@ -30,7 +30,7 @@
#include "Geometry.h"
/* - Not needed for now though other geometry functions will probably need them
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
*/
@@ -42,10 +42,10 @@
#include "BKE_utildefines.h"
#include "BKE_curve.h"
#include "BLI_boxpack2d.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#define SWAP_FLOAT(a,b,tmp) tmp=a; a=b; b=tmp
-#define eul 0.000001
+#define eps 0.000001
/*-- forward declarations -- */
static PyObject *M_Geometry_PolyFill( PyObject * self, PyObject * polyLineSeq );
@@ -252,18 +252,18 @@ static PyObject *M_Geometry_LineIntersect2D( PyObject * self, PyObject * args )
Py_RETURN_NONE;
}
/* Make sure the hoz/vert line comes first. */
- if (fabs(b1x - b2x) < eul || fabs(b1y - b2y) < eul) {
+ if (fabs(b1x - b2x) < eps || fabs(b1y - b2y) < eps) {
SWAP_FLOAT(a1x, b1x, xi); /*abuse xi*/
SWAP_FLOAT(a1y, b1y, xi);
SWAP_FLOAT(a2x, b2x, xi);
SWAP_FLOAT(a2y, b2y, xi);
}
- if (fabs(a1x-a2x) < eul) { /* verticle line */
- if (fabs(b1x-b2x) < eul){ /*verticle second line */
+ if (fabs(a1x-a2x) < eps) { /* verticle line */
+ if (fabs(b1x-b2x) < eps){ /*verticle second line */
Py_RETURN_NONE; /* 2 verticle lines dont intersect. */
}
- else if (fabs(b1y-b2y) < eul) {
+ else if (fabs(b1y-b2y) < eps) {
/*X of vert, Y of hoz. no calculation needed */
newvec[0]= a1x;
newvec[1]= b1y;
@@ -280,8 +280,8 @@ static PyObject *M_Geometry_LineIntersect2D( PyObject * self, PyObject * args )
newvec[0]= a1x;
newvec[1]= yi;
return newVectorObject(newvec, 2, Py_NEW, NULL);
- } else if (fabs(a2y-a1y) < eul) { /* hoz line1 */
- if (fabs(b2y-b1y) < eul) { /*hoz line2*/
+ } else if (fabs(a2y-a1y) < eps) { /* hoz line1 */
+ if (fabs(b2y-b1y) < eps) { /*hoz line2*/
Py_RETURN_NONE; /*2 hoz lines dont intersect*/
}
@@ -346,7 +346,7 @@ static PyObject *M_Geometry_ClosestPointOnLine( PyObject * self, PyObject * args
else { l2[2]=0.0; VECCOPY2D(l2, line_2->vec) }
/* do the calculation */
- lambda = lambda_cp_line_ex(pt_in, l1, l2, pt_out);
+ lambda = closest_to_line_v3( pt_out,pt_in, l1, l2);
ret = PyTuple_New(2);
PyTuple_SET_ITEM( ret, 0, newVectorObject(pt_out, 3, Py_NEW, NULL) );
@@ -371,7 +371,7 @@ static PyObject *M_Geometry_PointInTriangle2D( PyObject * self, PyObject * args
if(!BaseMath_ReadCallback(pt_vec) || !BaseMath_ReadCallback(tri_p1) || !BaseMath_ReadCallback(tri_p2) || !BaseMath_ReadCallback(tri_p3))
return NULL;
- return PyLong_FromLong(IsectPT2Df(pt_vec->vec, tri_p1->vec, tri_p2->vec, tri_p3->vec));
+ return PyLong_FromLong(isect_point_tri_v2(pt_vec->vec, tri_p1->vec, tri_p2->vec, tri_p3->vec));
}
static PyObject *M_Geometry_PointInQuad2D( PyObject * self, PyObject * args )
@@ -392,7 +392,7 @@ static PyObject *M_Geometry_PointInQuad2D( PyObject * self, PyObject * args )
if(!BaseMath_ReadCallback(pt_vec) || !BaseMath_ReadCallback(quad_p1) || !BaseMath_ReadCallback(quad_p2) || !BaseMath_ReadCallback(quad_p3) || !BaseMath_ReadCallback(quad_p4))
return NULL;
- return PyLong_FromLong(IsectPQ2Df(pt_vec->vec, quad_p1->vec, quad_p2->vec, quad_p3->vec, quad_p4->vec));
+ return PyLong_FromLong(isect_point_quad_v2(pt_vec->vec, quad_p1->vec, quad_p2->vec, quad_p3->vec, quad_p4->vec));
}
static int boxPack_FromPyObject(PyObject * value, boxPack **boxarray )
diff --git a/source/blender/python/generic/IDProp.c b/source/blender/python/generic/IDProp.c
new file mode 100644
index 00000000000..b3679c8f4a2
--- /dev/null
+++ b/source/blender/python/generic/IDProp.c
@@ -0,0 +1,1026 @@
+/**
+ * $Id: IDProp.c
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Contributor(s): Joseph Eagar, Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include "DNA_ID.h"
+
+#include "BKE_idprop.h"
+
+#include "IDProp.h"
+// #include "gen_utils.h"
+
+#include "MEM_guardedalloc.h"
+
+#define BSTR_EQ(a, b) (*(a) == *(b) && !strcmp(a, b))
+
+/*** Function to wrap ID properties ***/
+PyObject *BPy_Wrap_IDProperty(ID *id, IDProperty *prop, IDProperty *parent);
+
+extern PyTypeObject IDArray_Type;
+extern PyTypeObject IDGroup_Iter_Type;
+
+/*********************** ID Property Main Wrapper Stuff ***************/
+
+PyObject *IDGroup_repr( BPy_IDProperty *self )
+{
+ return PyUnicode_FromFormat( "<bpy ID property from \"%s\">", self->id->name);
+}
+
+extern PyTypeObject IDGroup_Type;
+
+PyObject *BPy_IDGroup_WrapData( ID *id, IDProperty *prop )
+{
+ switch ( prop->type ) {
+ case IDP_STRING:
+ return PyUnicode_FromString( prop->data.pointer );
+ case IDP_INT:
+ return PyLong_FromLong( (long)prop->data.val );
+ case IDP_FLOAT:
+ return PyFloat_FromDouble( (double)(*(float*)(&prop->data.val)) );
+ case IDP_DOUBLE:
+ return PyFloat_FromDouble( (*(double*)(&prop->data.val)) );
+ case IDP_GROUP:
+ /*blegh*/
+ {
+ BPy_IDProperty *group = PyObject_New(BPy_IDProperty, &IDGroup_Type);
+ group->id = id;
+ group->prop = prop;
+ return (PyObject*) group;
+ }
+ case IDP_ARRAY:
+ {
+ BPy_IDProperty *array = PyObject_New(BPy_IDProperty, &IDArray_Type);
+ array->id = id;
+ array->prop = prop;
+ return (PyObject*) array;
+ }
+ }
+ Py_RETURN_NONE;
+}
+
+int BPy_IDGroup_SetData(BPy_IDProperty *self, IDProperty *prop, PyObject *value)
+{
+ switch (prop->type) {
+ case IDP_STRING:
+ {
+ char *st;
+ if (!PyUnicode_Check(value)) {
+ PyErr_SetString(PyExc_TypeError, "expected a string!");
+ return -1;
+ }
+
+ st = _PyUnicode_AsString(value);
+ IDP_ResizeArray(prop, strlen(st)+1);
+ strcpy(prop->data.pointer, st);
+ return 0;
+ }
+
+ case IDP_INT:
+ {
+ int ivalue= PyLong_AsSsize_t(value);
+ if (ivalue==-1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "expected an int type");
+ return -1;
+ }
+ prop->data.val = ivalue;
+ break;
+ }
+ case IDP_FLOAT:
+ {
+ float fvalue= (float)PyFloat_AsDouble(value);
+ if (fvalue==-1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "expected a float");
+ return -1;
+ }
+ *(float*)&self->prop->data.val = fvalue;
+ break;
+ }
+ case IDP_DOUBLE:
+ {
+ double dvalue= PyFloat_AsDouble(value);
+ if (dvalue==-1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "expected a float");
+ return -1;
+ }
+ *(double*)&self->prop->data.val = dvalue;
+ break;
+ }
+ default:
+ PyErr_SetString(PyExc_AttributeError, "attempt to set read-only attribute!");
+ return -1;
+ }
+ return 0;
+}
+
+PyObject *BPy_IDGroup_GetName(BPy_IDProperty *self, void *bleh)
+{
+ return PyUnicode_FromString(self->prop->name);
+}
+
+static int BPy_IDGroup_SetName(BPy_IDProperty *self, PyObject *value, void *bleh)
+{
+ char *st;
+ if (!PyUnicode_Check(value)) {
+ PyErr_SetString(PyExc_TypeError, "expected a string!");
+ return -1;
+ }
+
+ st = _PyUnicode_AsString(value);
+ if (strlen(st) >= MAX_IDPROP_NAME) {
+ PyErr_SetString(PyExc_TypeError, "string length cannot exceed 31 characters!");
+ return -1;
+ }
+
+ strcpy(self->prop->name, st);
+ return 0;
+}
+
+#if 0
+static PyObject *BPy_IDGroup_GetType(BPy_IDProperty *self)
+{
+ return PyLong_FromSsize_t(self->prop->type);
+}
+#endif
+
+static PyGetSetDef BPy_IDGroup_getseters[] = {
+ {"name",
+ (getter)BPy_IDGroup_GetName, (setter)BPy_IDGroup_SetName,
+ "The name of this Group.",
+ NULL},
+ {NULL, NULL, NULL, NULL, NULL}
+};
+
+static Py_ssize_t BPy_IDGroup_Map_Len(BPy_IDProperty *self)
+{
+ if (self->prop->type != IDP_GROUP) {
+ PyErr_SetString( PyExc_TypeError, "len() of unsized object");
+ return -1;
+ }
+
+ return self->prop->len;
+}
+
+static PyObject *BPy_IDGroup_Map_GetItem(BPy_IDProperty *self, PyObject *item)
+{
+ IDProperty *idprop;
+ char *name;
+
+ if (self->prop->type != IDP_GROUP) {
+ PyErr_SetString( PyExc_TypeError, "unsubscriptable object");
+ return NULL;
+ }
+
+ name= _PyUnicode_AsString(item);
+
+ if (name == NULL) {
+ PyErr_SetString( PyExc_TypeError, "only strings are allowed as keys of ID properties");
+ return NULL;
+ }
+
+ idprop= IDP_GetPropertyFromGroup(self->prop, name);
+
+ if(idprop==NULL) {
+ PyErr_SetString( PyExc_KeyError, "key not in subgroup dict");
+ return NULL;
+ }
+
+ return BPy_IDGroup_WrapData(self->id, idprop);
+
+}
+
+/*returns NULL on success, error string on failure*/
+char *BPy_IDProperty_Map_ValidateAndCreate(char *name, IDProperty *group, PyObject *ob)
+{
+ IDProperty *prop = NULL;
+ IDPropertyTemplate val = {0};
+
+ if(strlen(name) >= sizeof(group->name))
+ return "the length of IDProperty names is limited to 31 characters";
+
+ if (PyFloat_Check(ob)) {
+ val.d = PyFloat_AsDouble(ob);
+ prop = IDP_New(IDP_DOUBLE, val, name);
+ } else if (PyLong_Check(ob)) {
+ val.i = (int) PyLong_AsSsize_t(ob);
+ prop = IDP_New(IDP_INT, val, name);
+ } else if (PyUnicode_Check(ob)) {
+ val.str = _PyUnicode_AsString(ob);
+ prop = IDP_New(IDP_STRING, val, name);
+ } else if (PySequence_Check(ob)) {
+ PyObject *item;
+ int i;
+
+ /*validate sequence and derive type.
+ we assume IDP_INT unless we hit a float
+ number; then we assume it's */
+ val.array.type = IDP_INT;
+ val.array.len = PySequence_Length(ob);
+ for (i=0; i<val.array.len; i++) {
+ item = PySequence_GetItem(ob, i);
+ if (PyFloat_Check(item)) val.array.type = IDP_DOUBLE;
+ else if (!PyLong_Check(item)) {
+ Py_XDECREF(item);
+ return "only floats and ints are allowed in ID property arrays";
+ }
+ Py_XDECREF(item);
+ }
+
+ prop = IDP_New(IDP_ARRAY, val, name);
+ for (i=0; i<val.array.len; i++) {
+ item = PySequence_GetItem(ob, i);
+ if (val.array.type == IDP_INT) {
+ ((int*)prop->data.pointer)[i] = (int)PyLong_AsSsize_t(item);
+ } else {
+ ((double*)prop->data.pointer)[i] = (float)PyFloat_AsDouble(item);
+ }
+ }
+ } else if (PyMapping_Check(ob)) {
+ PyObject *keys, *vals, *key, *pval;
+ int i, len;
+ /*yay! we get into recursive stuff now!*/
+ keys = PyMapping_Keys(ob);
+ vals = PyMapping_Values(ob);
+
+ /*we allocate the group first; if we hit any invalid data,
+ we can delete it easily enough.*/
+ prop = IDP_New(IDP_GROUP, val, name);
+ len = PyMapping_Length(ob);
+ for (i=0; i<len; i++) {
+ key = PySequence_GetItem(keys, i);
+ pval = PySequence_GetItem(vals, i);
+ if (!PyUnicode_Check(key)) {
+ IDP_FreeProperty(prop);
+ MEM_freeN(prop);
+ Py_XDECREF(keys);
+ Py_XDECREF(vals);
+ Py_XDECREF(key);
+ Py_XDECREF(pval);
+ return "invalid element in subgroup dict template!";
+ }
+ if (BPy_IDProperty_Map_ValidateAndCreate(_PyUnicode_AsString(key), prop, pval)) {
+ IDP_FreeProperty(prop);
+ MEM_freeN(prop);
+ Py_XDECREF(keys);
+ Py_XDECREF(vals);
+ Py_XDECREF(key);
+ Py_XDECREF(pval);
+ return "invalid element in subgroup dict template!";
+ }
+ Py_XDECREF(key);
+ Py_XDECREF(pval);
+ }
+ Py_XDECREF(keys);
+ Py_XDECREF(vals);
+ } else return "invalid property value";
+
+ IDP_ReplaceInGroup(group, prop);
+ return NULL;
+}
+
+int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val)
+{
+ if (prop->type != IDP_GROUP) {
+ PyErr_SetString( PyExc_TypeError, "unsubscriptable object");
+ return -1;
+ }
+
+ if (val == NULL) { /* del idprop[key] */
+ IDProperty *pkey = IDP_GetPropertyFromGroup(prop, _PyUnicode_AsString(key));
+ if (pkey) {
+ IDP_RemFromGroup(prop, pkey);
+ IDP_FreeProperty(pkey);
+ MEM_freeN(pkey);
+ return 0;
+ } else {
+ PyErr_SetString( PyExc_KeyError, "property not found in group" );
+ return -1;
+ }
+ }
+ else {
+ char *err;
+
+ if (!PyUnicode_Check(key)) {
+ PyErr_SetString( PyExc_TypeError, "only strings are allowed as subgroup keys" );
+ return -1;
+ }
+
+ err = BPy_IDProperty_Map_ValidateAndCreate(_PyUnicode_AsString(key), prop, val);
+ if (err) {
+ PyErr_SetString( PyExc_KeyError, err );
+ return -1;
+ }
+
+ return 0;
+ }
+}
+
+static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject *val)
+{
+ return BPy_Wrap_SetMapItem(self->prop, key, val);
+}
+
+static PyObject *BPy_IDGroup_SpawnIterator(BPy_IDProperty *self)
+{
+ BPy_IDGroup_Iter *iter = PyObject_New(BPy_IDGroup_Iter, &IDGroup_Iter_Type);
+ iter->group = self;
+ iter->mode = IDPROP_ITER_KEYS;
+ iter->cur = self->prop->data.group.first;
+ Py_XINCREF(iter);
+ return (PyObject*) iter;
+}
+
+static PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop)
+{
+ switch (prop->type) {
+ case IDP_STRING:
+ return PyUnicode_FromString(prop->data.pointer);
+ break;
+ case IDP_FLOAT:
+ return PyFloat_FromDouble(*((float*)&prop->data.val));
+ break;
+ case IDP_DOUBLE:
+ return PyFloat_FromDouble(*((double*)&prop->data.val));
+ break;
+ case IDP_INT:
+ return PyLong_FromSsize_t( prop->data.val );
+ break;
+ case IDP_ARRAY:
+ {
+ PyObject *seq = PyList_New(prop->len);
+ int i;
+
+ if (!seq) {
+ PyErr_SetString( PyExc_RuntimeError, "PyList_New() failed" );
+ return NULL;
+ }
+
+ for (i=0; i<prop->len; i++) {
+ if (prop->subtype == IDP_FLOAT) {
+ PyList_SET_ITEM(seq, i,
+ PyFloat_FromDouble(((float*)prop->data.pointer)[i]));
+ } else if (prop->subtype == IDP_DOUBLE) {
+ PyList_SET_ITEM(seq, i,
+ PyFloat_FromDouble(((double*)prop->data.pointer)[i]));
+ } else {
+ PyList_SET_ITEM(seq, i,
+ PyLong_FromLong(((int*)prop->data.pointer)[i]));
+ }
+ }
+ return seq;
+ }
+ case IDP_GROUP:
+ {
+ PyObject *dict = PyDict_New(), *wrap;
+ IDProperty *loop;
+
+ if (!dict) {
+ PyErr_SetString( PyExc_RuntimeError, "PyDict_New() failed" );
+ return NULL;
+ }
+
+ for (loop=prop->data.group.first; loop; loop=loop->next) {
+ wrap = BPy_IDGroup_MapDataToPy(loop);
+ if (!wrap) {
+ PyErr_SetString( PyExc_RuntimeError, "BPy_IDGroup_MapDataToPy() failed" );
+ return NULL;
+ }
+
+ PyDict_SetItemString(dict, loop->name, wrap);
+ }
+ return dict;
+ }
+ }
+
+ PyErr_SetString( PyExc_RuntimeError, "eek!! a property exists with a bad type code!!!" );
+ return NULL;
+}
+
+static PyObject *BPy_IDGroup_Pop(BPy_IDProperty *self, PyObject *value)
+{
+ IDProperty *idprop;
+ PyObject *pyform;
+ char *name = _PyUnicode_AsString(value);
+
+ if (!name) {
+ PyErr_SetString( PyExc_TypeError, "pop expected at least 1 argument, got 0" );
+ return NULL;
+ }
+
+ idprop= IDP_GetPropertyFromGroup(self->prop, name);
+
+ if(idprop) {
+ pyform = BPy_IDGroup_MapDataToPy(idprop);
+
+ if (!pyform) {
+ /*ok something bad happened with the pyobject,
+ so don't remove the prop from the group. if pyform is
+ NULL, then it already should have raised an exception.*/
+ return NULL;
+ }
+
+ IDP_RemFromGroup(self->prop, idprop);
+ return pyform;
+ }
+
+ PyErr_SetString( PyExc_KeyError, "item not in group" );
+ return NULL;
+}
+
+static PyObject *BPy_IDGroup_IterItems(BPy_IDProperty *self)
+{
+ BPy_IDGroup_Iter *iter = PyObject_New(BPy_IDGroup_Iter, &IDGroup_Iter_Type);
+ iter->group = self;
+ iter->mode = IDPROP_ITER_ITEMS;
+ iter->cur = self->prop->data.group.first;
+ Py_XINCREF(iter);
+ return (PyObject*) iter;
+}
+
+/* utility function */
+static void BPy_IDGroup_CorrectListLen(IDProperty *prop, PyObject *seq, int len)
+{
+ int j;
+
+ printf("ID Property Error found and corrected in BPy_IDGroup_GetKeys/Values/Items!\n");
+
+ /*fill rest of list with valid references to None*/
+ for (j=len; j<prop->len; j++) {
+ Py_INCREF(Py_None);
+ PyList_SET_ITEM(seq, j, Py_None);
+ }
+
+ /*set correct group length*/
+ prop->len = len;
+}
+
+PyObject *BPy_Wrap_GetKeys(IDProperty *prop)
+{
+ PyObject *seq = PyList_New(prop->len);
+ IDProperty *loop;
+ int i;
+
+ for (i=0, loop=prop->data.group.first; loop; loop=loop->next, i++)
+ PyList_SET_ITEM(seq, i, PyUnicode_FromString(loop->name));
+
+ if (i != prop->len) {
+ BPy_IDGroup_CorrectListLen(prop, seq, i);
+ Py_DECREF(seq); /*free the list*/
+ /*call self again*/
+ return BPy_Wrap_GetKeys(prop);
+ }
+
+ return seq;
+}
+
+PyObject *BPy_Wrap_GetValues(ID *id, IDProperty *prop)
+{
+ PyObject *seq = PyList_New(prop->len);
+ IDProperty *loop;
+ int i;
+
+ for (i=0, loop=prop->data.group.first; loop; loop=loop->next, i++) {
+ PyList_SET_ITEM(seq, i, BPy_IDGroup_WrapData(id, loop));
+ }
+
+ if (i != prop->len) {
+ BPy_IDGroup_CorrectListLen(prop, seq, i);
+ Py_DECREF(seq); /*free the list*/
+ /*call self again*/
+ return BPy_Wrap_GetValues(id, prop);
+ }
+
+ return seq;
+}
+
+PyObject *BPy_Wrap_GetItems(ID *id, IDProperty *prop)
+{
+ PyObject *seq = PyList_New(prop->len);
+ IDProperty *loop;
+ int i;
+
+ for (i=0, loop=prop->data.group.first; loop; loop=loop->next, i++) {
+ PyObject *item= PyTuple_New(2);
+ PyTuple_SET_ITEM(item, 0, PyUnicode_FromString(loop->name));
+ PyTuple_SET_ITEM(item, 1, BPy_IDGroup_WrapData(id, loop));
+ PyList_SET_ITEM(seq, i, item);
+ }
+
+ if (i != prop->len) {
+ BPy_IDGroup_CorrectListLen(prop, seq, i);
+ Py_DECREF(seq); /*free the list*/
+ /*call self again*/
+ return BPy_Wrap_GetItems(id, prop);
+ }
+
+ return seq;
+}
+
+
+static PyObject *BPy_IDGroup_GetKeys(BPy_IDProperty *self)
+{
+ return BPy_Wrap_GetKeys(self->prop);
+}
+
+static PyObject *BPy_IDGroup_GetValues(BPy_IDProperty *self)
+{
+ return BPy_Wrap_GetValues(self->id, self->prop);
+}
+
+static PyObject *BPy_IDGroup_GetItems(BPy_IDProperty *self)
+{
+ return BPy_Wrap_GetItems(self->id, self->prop);
+}
+
+static int BPy_IDGroup_Contains(BPy_IDProperty *self, PyObject *value)
+{
+ char *name = _PyUnicode_AsString(value);
+
+ if (!name) {
+ PyErr_SetString( PyExc_TypeError, "expected a string");
+ return -1;
+ }
+
+ return IDP_GetPropertyFromGroup(self->prop, name) ? 1:0;
+}
+
+static PyObject *BPy_IDGroup_Update(BPy_IDProperty *self, PyObject *value)
+{
+ PyObject *pkey, *pval;
+ Py_ssize_t i=0;
+
+ if (!PyDict_Check(value)) {
+ PyErr_SetString( PyExc_TypeError, "expected an object derived from dict.");
+ return NULL;
+ }
+
+ while (PyDict_Next(value, &i, &pkey, &pval)) {
+ BPy_IDGroup_Map_SetItem(self, pkey, pval);
+ if (PyErr_Occurred()) return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+static PyObject *BPy_IDGroup_ConvertToPy(BPy_IDProperty *self)
+{
+ return BPy_IDGroup_MapDataToPy(self->prop);
+}
+
+
+/* Matches python dict.get(key, [default]) */
+PyObject* BPy_IDGroup_Get(BPy_IDProperty *self, PyObject *args)
+{
+ IDProperty *idprop;
+ char *key;
+ PyObject* def = Py_None;
+
+ if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
+ return NULL;
+
+ idprop= IDP_GetPropertyFromGroup(self->prop, key);
+ if (idprop) {
+ PyObject* pyobj = BPy_IDGroup_WrapData(self->id, idprop);
+ if (pyobj)
+ return pyobj;
+ }
+
+ Py_INCREF(def);
+ return def;
+}
+
+static struct PyMethodDef BPy_IDGroup_methods[] = {
+ {"pop", (PyCFunction)BPy_IDGroup_Pop, METH_O,
+ "pop an item from the group; raises KeyError if the item doesn't exist."},
+ {"iteritems", (PyCFunction)BPy_IDGroup_IterItems, METH_NOARGS,
+ "iterate through the items in the dict; behaves like dictionary method iteritems."},
+ {"keys", (PyCFunction)BPy_IDGroup_GetKeys, METH_NOARGS,
+ "get the keys associated with this group as a list of strings."},
+ {"values", (PyCFunction)BPy_IDGroup_GetValues, METH_NOARGS,
+ "get the values associated with this group."},
+ {"items", (PyCFunction)BPy_IDGroup_GetItems, METH_NOARGS,
+ "get the items associated with this group."},
+ {"update", (PyCFunction)BPy_IDGroup_Update, METH_O,
+ "updates the values in the group with the values of another or a dict."},
+ {"get", (PyCFunction)BPy_IDGroup_Get, METH_VARARGS,
+ "idprop.get(k[,d]) -> idprop[k] if k in idprop, else d. d defaults to None."},
+ {"convert_to_pyobject", (PyCFunction)BPy_IDGroup_ConvertToPy, METH_NOARGS,
+ "return a purely python version of the group."},
+ {0, NULL, 0, NULL}
+};
+
+static PySequenceMethods BPy_IDGroup_Seq = {
+ (lenfunc) BPy_IDGroup_Map_Len, /* lenfunc sq_length */
+ 0, /* binaryfunc sq_concat */
+ 0, /* ssizeargfunc sq_repeat */
+ 0, /* ssizeargfunc sq_item */ /* TODO - setting this will allow PySequence_Check to return True */
+ 0, /* intintargfunc ***was_sq_slice*** */
+ 0, /* intobjargproc sq_ass_item */
+ 0, /* ssizeobjargproc ***was_sq_ass_slice*** */
+ (objobjproc) BPy_IDGroup_Contains, /* objobjproc sq_contains */
+ 0, /* binaryfunc sq_inplace_concat */
+ 0, /* ssizeargfunc sq_inplace_repeat */
+};
+
+PyMappingMethods BPy_IDGroup_Mapping = {
+ (lenfunc)BPy_IDGroup_Map_Len, /*inquiry mp_length */
+ (binaryfunc)BPy_IDGroup_Map_GetItem, /*binaryfunc mp_subscript */
+ (objobjargproc)BPy_IDGroup_Map_SetItem, /*objobjargproc mp_ass_subscript */
+};
+
+PyTypeObject IDGroup_Type = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ /* For printing, in format "<module>.<name>" */
+ "Blender IDProperty", /* char *tp_name; */
+ sizeof( BPy_IDProperty ), /* int tp_basicsize; */
+ 0, /* tp_itemsize; For allocation */
+
+ /* Methods to implement standard operations */
+
+ NULL, /* destructor tp_dealloc; */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
+ NULL, /* cmpfunc tp_compare; */
+ ( reprfunc ) IDGroup_repr, /* reprfunc tp_repr; */
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ &BPy_IDGroup_Seq, /* PySequenceMethods *tp_as_sequence; */
+ &BPy_IDGroup_Mapping, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ (getiterfunc)BPy_IDGroup_SpawnIterator, /* getiterfunc tp_iter; */
+ NULL, /* iternextfunc tp_iternext; */
+ /*** Attribute descriptor and subclassing stuff ***/
+ BPy_IDGroup_methods, /* struct PyMethodDef *tp_methods; */
+ NULL, /* struct PyMemberDef *tp_members; */
+ BPy_IDGroup_getseters, /* struct PyGetSetDef *tp_getset; */
+};
+
+/*********** Main external wrapping function *******/
+PyObject *BPy_Wrap_IDProperty(ID *id, IDProperty *prop, IDProperty *parent)
+{
+ BPy_IDProperty *wrap = PyObject_New(BPy_IDProperty, &IDGroup_Type);
+ wrap->prop = prop;
+ wrap->parent = parent;
+ wrap->id = id;
+ //wrap->destroy = 0;
+ return (PyObject*) wrap;
+}
+
+
+/********Array Wrapper********/
+
+static PyObject *IDArray_repr(BPy_IDArray *self)
+{
+ return PyUnicode_FromString("(ID Array)");
+}
+
+
+static PyObject *BPy_IDArray_GetType(BPy_IDArray *self)
+{
+ return PyLong_FromSsize_t( self->prop->subtype );
+}
+
+static PyObject *BPy_IDArray_GetLen(BPy_IDArray *self)
+{
+ return PyLong_FromSsize_t( self->prop->len );
+}
+
+static PyGetSetDef BPy_IDArray_getseters[] = {
+ {"len",
+ (getter)BPy_IDArray_GetLen, (setter)NULL,
+ "The length of the array, can also be gotten with len(array).",
+ NULL},
+ {"type",
+ (getter)BPy_IDArray_GetType, (setter)NULL,
+ "The type of the data in the array, is an ant.",
+ NULL},
+ {NULL, NULL, NULL, NULL, NULL},
+};
+
+static PyObject *BPy_IDArray_ConvertToPy(BPy_IDArray *self)
+{
+ return BPy_IDGroup_MapDataToPy(self->prop);
+}
+
+static PyMethodDef BPy_IDArray_methods[] = {
+ {"convert_to_pyobject", (PyCFunction)BPy_IDArray_ConvertToPy, METH_NOARGS,
+ "return a purely python version of the group."},
+ {0, NULL, 0, NULL}
+};
+
+static int BPy_IDArray_Len(BPy_IDArray *self)
+{
+ return self->prop->len;
+}
+
+static PyObject *BPy_IDArray_GetItem(BPy_IDArray *self, int index)
+{
+ if (index < 0 || index >= self->prop->len) {
+ PyErr_SetString( PyExc_IndexError, "index out of range!");
+ return NULL;
+ }
+
+ switch (self->prop->subtype) {
+ case IDP_FLOAT:
+ return PyFloat_FromDouble( (double)(((float*)self->prop->data.pointer)[index]));
+ break;
+ case IDP_DOUBLE:
+ return PyFloat_FromDouble( (((double*)self->prop->data.pointer)[index]));
+ break;
+ case IDP_INT:
+ return PyLong_FromLong( (long)((int*)self->prop->data.pointer)[index] );
+ break;
+ }
+
+ PyErr_SetString( PyExc_RuntimeError, "invalid/corrupt array type!");
+ return NULL;
+}
+
+static int BPy_IDArray_SetItem(BPy_IDArray *self, int index, PyObject *value)
+{
+ int i;
+ float f;
+ double d;
+
+ if (index < 0 || index >= self->prop->len) {
+ PyErr_SetString( PyExc_RuntimeError, "index out of range!");
+ return -1;
+ }
+
+ switch (self->prop->subtype) {
+ case IDP_FLOAT:
+ f= (float)PyFloat_AsDouble(value);
+ if (f==-1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "expected a float");
+ return -1;
+ }
+ ((float*)self->prop->data.pointer)[index] = f;
+ break;
+ case IDP_DOUBLE:
+ d= PyFloat_AsDouble(value);
+ if (d==-1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "expected a float");
+ return -1;
+ }
+ ((double*)self->prop->data.pointer)[index] = d;
+ break;
+ case IDP_INT:
+ i= PyLong_AsSsize_t(value);
+ if (i==-1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "expected an int type");
+ return -1;
+ }
+
+ ((int*)self->prop->data.pointer)[index] = i;
+ break;
+ }
+ return 0;
+}
+
+static PySequenceMethods BPy_IDArray_Seq = {
+ (lenfunc) BPy_IDArray_Len, /* inquiry sq_length */
+ 0, /* binaryfunc sq_concat */
+ 0, /* intargfunc sq_repeat */
+ (ssizeargfunc)BPy_IDArray_GetItem, /* intargfunc sq_item */
+ 0, /* intintargfunc sq_slice */
+ (ssizeobjargproc)BPy_IDArray_SetItem, /* intobjargproc sq_ass_item */
+ 0, /* intintobjargproc sq_ass_slice */
+ 0, /* objobjproc sq_contains */
+ /* Added in release 2.0 */
+ 0, /* binaryfunc sq_inplace_concat */
+ 0, /* intargfunc sq_inplace_repeat */
+};
+
+PyTypeObject IDArray_Type = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ /* For printing, in format "<module>.<name>" */
+ "Blender IDArray", /* char *tp_name; */
+ sizeof( BPy_IDArray ), /* int tp_basicsize; */
+ 0, /* tp_itemsize; For allocation */
+
+ /* Methods to implement standard operations */
+
+ NULL, /* destructor tp_dealloc; */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
+ NULL, /* cmpfunc tp_compare; */
+ ( reprfunc ) IDArray_repr, /* reprfunc tp_repr; */
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ &BPy_IDArray_Seq, /* PySequenceMethods *tp_as_sequence; */
+ NULL, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ NULL, /* getiterfunc tp_iter; */
+ NULL, /* iternextfunc tp_iternext; */
+
+ /*** Attribute descriptor and subclassing stuff ***/
+ BPy_IDArray_methods, /* struct PyMethodDef *tp_methods; */
+ NULL, /* struct PyMemberDef *tp_members; */
+ BPy_IDArray_getseters, /* struct PyGetSetDef *tp_getset; */
+ NULL, /* struct _typeobject *tp_base; */
+ NULL, /* PyObject *tp_dict; */
+ NULL, /* descrgetfunc tp_descr_get; */
+ NULL, /* descrsetfunc tp_descr_set; */
+ 0, /* long tp_dictoffset; */
+ NULL, /* initproc tp_init; */
+ NULL, /* allocfunc tp_alloc; */
+ NULL, /* newfunc tp_new; */
+ /* Low-level free-memory routine */
+ NULL, /* freefunc tp_free; */
+ /* For PyObject_IS_GC */
+ NULL, /* inquiry tp_is_gc; */
+ NULL, /* PyObject *tp_bases; */
+ /* method resolution order */
+ NULL, /* PyObject *tp_mro; */
+ NULL, /* PyObject *tp_cache; */
+ NULL, /* PyObject *tp_subclasses; */
+ NULL, /* PyObject *tp_weaklist; */
+ NULL
+};
+
+/*********** ID Property Group iterator ********/
+
+static PyObject *IDGroup_Iter_iterself(PyObject *self)
+{
+ Py_XINCREF(self);
+ return self;
+}
+
+static PyObject *IDGroup_Iter_repr(BPy_IDGroup_Iter *self)
+{
+ return PyUnicode_FromString("(ID Property Group)");
+}
+
+static PyObject *BPy_Group_Iter_Next(BPy_IDGroup_Iter *self)
+{
+ IDProperty *cur=NULL;
+ PyObject *ret;
+
+ if (self->cur) {
+ cur = self->cur;
+ self->cur = self->cur->next;
+ if (self->mode == IDPROP_ITER_ITEMS) {
+ ret = PyTuple_New(2);
+ PyTuple_SET_ITEM(ret, 0, PyUnicode_FromString(cur->name));
+ PyTuple_SET_ITEM(ret, 1, BPy_IDGroup_WrapData(self->group->id, cur));
+ return ret;
+ } else {
+ return PyUnicode_FromString(cur->name);
+ }
+ } else {
+ PyErr_SetString( PyExc_StopIteration, "iterator at end" );
+ return NULL;
+ }
+}
+
+PyTypeObject IDGroup_Iter_Type = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ /* For printing, in format "<module>.<name>" */
+ "Blender IDGroup_Iter", /* char *tp_name; */
+ sizeof( BPy_IDGroup_Iter ), /* int tp_basicsize; */
+ 0, /* tp_itemsize; For allocation */
+
+ /* Methods to implement standard operations */
+
+ NULL, /* destructor tp_dealloc; */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
+ NULL, /* cmpfunc tp_compare; */
+ ( reprfunc ) IDGroup_Iter_repr, /* reprfunc tp_repr; */
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ NULL, /* PySequenceMethods *tp_as_sequence; */
+ NULL, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ IDGroup_Iter_iterself, /* getiterfunc tp_iter; */
+ (iternextfunc) BPy_Group_Iter_Next, /* iternextfunc tp_iternext; */
+};
+
+void IDProp_Init_Types(void)
+{
+ PyType_Ready( &IDGroup_Type );
+ PyType_Ready( &IDGroup_Iter_Type );
+ PyType_Ready( &IDArray_Type );
+}
diff --git a/source/blender/python/generic/IDProp.h b/source/blender/python/generic/IDProp.h
new file mode 100644
index 00000000000..044abf82329
--- /dev/null
+++ b/source/blender/python/generic/IDProp.h
@@ -0,0 +1,64 @@
+/**
+ * $Id: IDProp.h
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Contributor(s): Joseph Eagar, Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <Python.h>
+
+struct ID;
+struct IDProperty;
+struct BPy_IDGroup_Iter;
+
+typedef struct BPy_IDProperty {
+ PyObject_VAR_HEAD
+ struct ID *id;
+ struct IDProperty *prop, *parent;
+ PyObject *data_wrap;
+} BPy_IDProperty;
+
+typedef struct BPy_IDArray {
+ PyObject_VAR_HEAD
+ struct ID *id;
+ struct IDProperty *prop;
+} BPy_IDArray;
+
+typedef struct BPy_IDGroup_Iter {
+ PyObject_VAR_HEAD
+ BPy_IDProperty *group;
+ struct IDProperty *cur;
+ int mode;
+} BPy_IDGroup_Iter;
+
+PyObject *BPy_Wrap_IDProperty(struct ID *id, struct IDProperty *prop, struct IDProperty *parent);
+PyObject *BPy_Wrap_GetKeys(IDProperty *prop);
+PyObject *BPy_Wrap_GetValues(ID *id, IDProperty *prop);
+PyObject *BPy_Wrap_GetItems(ID *id, IDProperty *prop);
+int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val);
+
+
+PyObject *BPy_IDGroup_WrapData( ID *id, IDProperty *prop );
+char *BPy_IDProperty_Map_ValidateAndCreate(char *name, IDProperty *group, PyObject *ob);
+
+void IDProp_Init_Types(void);
+
+#define IDPROP_ITER_KEYS 0
+#define IDPROP_ITER_ITEMS 1
diff --git a/source/blender/python/generic/Mathutils.c b/source/blender/python/generic/Mathutils.c
index 431f1987383..b44d6450145 100644
--- a/source/blender/python/generic/Mathutils.c
+++ b/source/blender/python/generic/Mathutils.c
@@ -29,7 +29,7 @@
#include "Mathutils.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "PIL_time.h"
#include "BLI_rand.h"
#include "BKE_utildefines.h"
@@ -437,7 +437,7 @@ static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args)
mat[8] = 1.0f;
} else if((strcmp(axis, "r") == 0) || (strcmp(axis, "R") == 0)) {
//arbitrary rotation
- AxisAngleToMat3(vec->vec, angle, (float (*)[3])mat);
+ axis_angle_to_mat3( (float (*)[3])mat,vec->vec, angle);
} else {
PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): unrecognizable axis of rotation type - expected x,y,z or r\n");
@@ -477,7 +477,7 @@ static PyObject *M_Mathutils_TranslationMatrix(PyObject * self, VectorObject * v
return NULL;
//create a identity matrix and add translation
- Mat4One((float(*)[4]) mat);
+ unit_m4((float(*)[4]) mat);
mat[12] = vec->vec[0];
mat[13] = vec->vec[1];
mat[14] = vec->vec[2];
@@ -762,7 +762,7 @@ static PyObject *M_Mathutils_DifferenceQuats(PyObject * self, PyObject * args)
for(x = 0; x < 4; x++) {
tempQuat[x] /= (float)(dot * dot);
}
- QuatMul(quat, tempQuat, quatV->quat);
+ mul_qt_qtqt(quat, tempQuat, quatV->quat);
return newQuaternionObject(quat, Py_NEW, NULL);
}
//----------------------------------Mathutils.Slerp() ------------------
@@ -853,19 +853,19 @@ static PyObject *M_Mathutils_Intersect( PyObject * self, PyObject * args )
VECCOPY(v3, vec3->vec);
VECCOPY(dir, ray->vec);
- Normalize(dir);
+ normalize_v3(dir);
VECCOPY(orig, ray_off->vec);
/* find vectors for two edges sharing v1 */
- VecSubf(e1, v2, v1);
- VecSubf(e2, v3, v1);
+ sub_v3_v3v3(e1, v2, v1);
+ sub_v3_v3v3(e2, v3, v1);
/* begin calculating determinant - also used to calculated U parameter */
- Crossf(pvec, dir, e2);
+ cross_v3_v3v3(pvec, dir, e2);
/* if determinant is near zero, ray lies in plane of triangle */
- det = Inpf(e1, pvec);
+ det = dot_v3v3(e1, pvec);
if (det > -0.000001 && det < 0.000001) {
Py_RETURN_NONE;
@@ -874,29 +874,29 @@ static PyObject *M_Mathutils_Intersect( PyObject * self, PyObject * args )
inv_det = 1.0f / det;
/* calculate distance from v1 to ray origin */
- VecSubf(tvec, orig, v1);
+ sub_v3_v3v3(tvec, orig, v1);
/* calculate U parameter and test bounds */
- u = Inpf(tvec, pvec) * inv_det;
+ u = dot_v3v3(tvec, pvec) * inv_det;
if (clip && (u < 0.0f || u > 1.0f)) {
Py_RETURN_NONE;
}
/* prepare to test the V parameter */
- Crossf(qvec, tvec, e1);
+ cross_v3_v3v3(qvec, tvec, e1);
/* calculate V parameter and test bounds */
- v = Inpf(dir, qvec) * inv_det;
+ v = dot_v3v3(dir, qvec) * inv_det;
if (clip && (v < 0.0f || u + v > 1.0f)) {
Py_RETURN_NONE;
}
/* calculate t, ray intersects triangle */
- t = Inpf(e2, qvec) * inv_det;
+ t = dot_v3v3(e2, qvec) * inv_det;
- VecMulf(dir, t);
- VecAddf(pvec, orig, dir);
+ mul_v3_fl(dir, t);
+ add_v3_v3v3(pvec, orig, dir);
return newVectorObject(pvec, 3, Py_NEW, NULL);
}
@@ -947,7 +947,7 @@ static PyObject *M_Mathutils_LineIntersect( PyObject * self, PyObject * args )
v4[2] = 0.0f;
}
- result = LineIntersectLine(v1, v2, v3, v4, i1, i2);
+ result = isect_line_line_v3(v1, v2, v3, v4, i1, i2);
if (result == 0) {
/* colinear */
@@ -1000,22 +1000,22 @@ static PyObject *M_Mathutils_QuadNormal( PyObject * self, PyObject * args )
VECCOPY(v4, vec4->vec);
/* find vectors for two edges sharing v2 */
- VecSubf(e1, v1, v2);
- VecSubf(e2, v3, v2);
+ sub_v3_v3v3(e1, v1, v2);
+ sub_v3_v3v3(e2, v3, v2);
- Crossf(n1, e2, e1);
- Normalize(n1);
+ cross_v3_v3v3(n1, e2, e1);
+ normalize_v3(n1);
/* find vectors for two edges sharing v4 */
- VecSubf(e1, v3, v4);
- VecSubf(e2, v1, v4);
+ sub_v3_v3v3(e1, v3, v4);
+ sub_v3_v3v3(e2, v1, v4);
- Crossf(n2, e2, e1);
- Normalize(n2);
+ cross_v3_v3v3(n2, e2, e1);
+ normalize_v3(n2);
/* adding and averaging the normals of both triangles */
- VecAddf(n1, n2, n1);
- Normalize(n1);
+ add_v3_v3v3(n1, n2, n1);
+ normalize_v3(n1);
return newVectorObject(n1, 3, Py_NEW, NULL);
}
@@ -1047,11 +1047,11 @@ static PyObject *M_Mathutils_TriangleNormal( PyObject * self, PyObject * args )
VECCOPY(v3, vec3->vec);
/* find vectors for two edges sharing v2 */
- VecSubf(e1, v1, v2);
- VecSubf(e2, v3, v2);
+ sub_v3_v3v3(e1, v1, v2);
+ sub_v3_v3v3(e2, v3, v2);
- Crossf(n, e2, e1);
- Normalize(n);
+ cross_v3_v3v3(n, e2, e1);
+ normalize_v3(n);
return newVectorObject(n, 3, Py_NEW, NULL);
}
@@ -1082,7 +1082,7 @@ static PyObject *M_Mathutils_TriangleArea( PyObject * self, PyObject * args )
VECCOPY(v2, vec2->vec);
VECCOPY(v3, vec3->vec);
- return PyFloat_FromDouble( AreaT3Dfl(v1, v2, v3) );
+ return PyFloat_FromDouble( area_tri_v3(v1, v2, v3) );
}
else if (vec1->size == 2) {
v1[0] = vec1->vec[0];
@@ -1094,7 +1094,7 @@ static PyObject *M_Mathutils_TriangleArea( PyObject * self, PyObject * args )
v3[0] = vec3->vec[0];
v3[1] = vec3->vec[1];
- return PyFloat_FromDouble( AreaF2Dfl(v1, v2, v3) );
+ return PyFloat_FromDouble( area_tri_v2(v1, v2, v3) );
}
else {
PyErr_SetString( PyExc_TypeError, "only 2D,3D vectors are supported\n" );
diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c
index 05c846b16f5..d3b8b19693f 100644
--- a/source/blender/python/generic/bpy_internal_import.c
+++ b/source/blender/python/generic/bpy_internal_import.c
@@ -54,12 +54,35 @@ void bpy_import_main_set(struct Main *maggie)
bpy_import_main= maggie;
}
+PyObject *bpy_text_import( Text *text )
+{
+ char *buf = NULL;
+ char modulename[24];
+ int len;
-PyObject *bpy_text_import( char *name, int *found )
+ if( !text->compiled ) {
+ buf = txt_to_buf( text );
+ text->compiled = Py_CompileString( buf, text->id.name+2, Py_file_input );
+ MEM_freeN( buf );
+
+ if( PyErr_Occurred( ) ) {
+ PyErr_Print( );
+ PyErr_Clear( );
+ PySys_SetObject("last_traceback", NULL);
+ free_compiled_text( text );
+ return NULL;
+ }
+ }
+
+ len= strlen(text->id.name+2) - 3;
+ strncpy(modulename, text->id.name+2, len);
+ return PyImport_ExecCodeModule(modulename, text->compiled);
+}
+
+PyObject *bpy_text_import_name( char *name, int *found )
{
Text *text;
char txtname[22]; /* 21+NULL */
- char *buf = NULL;
int namelen = strlen( name );
//XXX Main *maggie= bpy_import_main ? bpy_import_main:G.main;
Main *maggie= bpy_import_main;
@@ -86,21 +109,7 @@ PyObject *bpy_text_import( char *name, int *found )
else
*found = 1;
- if( !text->compiled ) {
- buf = txt_to_buf( text );
- text->compiled = Py_CompileString( buf, text->id.name+2, Py_file_input );
- MEM_freeN( buf );
-
- if( PyErr_Occurred( ) ) {
- PyErr_Print( );
- PyErr_Clear( );
- PySys_SetObject("last_traceback", NULL);
- free_compiled_text( text );
- return NULL;
- }
- }
-
- return PyImport_ExecCodeModule( name, text->compiled );
+ return bpy_text_import(text);
}
@@ -195,7 +204,7 @@ static PyObject *blender_import( PyObject * self, PyObject * args, PyObject * k
PyErr_Fetch( &exception, &err, &tb ); /* get the python error incase we cant import as blender text either */
/* importing from existing modules failed, see if we have this module as blender text */
- newmodule = bpy_text_import( name, &found );
+ newmodule = bpy_text_import_name( name, &found );
if( newmodule ) {/* found module as blender text, ignore above exception */
PyErr_Clear( );
diff --git a/source/blender/python/generic/bpy_internal_import.h b/source/blender/python/generic/bpy_internal_import.h
index 4e761fe8da0..0eee6361aab 100644
--- a/source/blender/python/generic/bpy_internal_import.h
+++ b/source/blender/python/generic/bpy_internal_import.h
@@ -44,7 +44,10 @@
#include "compile.h" /* for the PyCodeObject */
#include "eval.h" /* for PyEval_EvalCode */
-PyObject* bpy_text_import( char *name, int *found );
+struct Text;
+
+PyObject* bpy_text_import( struct Text *text );
+PyObject* bpy_text_import_name( char *name, int *found );
PyObject* bpy_text_reimport( PyObject *module, int *found );
/* void bpy_text_clear_modules( int clear_all );*/ /* Clear user modules */
extern PyMethodDef bpy_import_meth[];
diff --git a/source/blender/python/generic/euler.c b/source/blender/python/generic/euler.c
index 73fcaeb457b..f6f2e337211 100644
--- a/source/blender/python/generic/euler.c
+++ b/source/blender/python/generic/euler.c
@@ -28,7 +28,7 @@
#include "Mathutils.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
@@ -123,9 +123,9 @@ static PyObject *Euler_ToQuat(EulerObject * self)
for(x = 0; x < 3; x++) {
eul[x] = self->eul[x] * ((float)Py_PI / 180);
}
- EulToQuat(eul, quat);
+ eul_to_quat( quat,eul);
#else
- EulToQuat(self->eul, quat);
+ eul_to_quat( quat,self->eul);
#endif
return newQuaternionObject(quat, Py_NEW, NULL);
@@ -147,10 +147,10 @@ static PyObject *Euler_ToMatrix(EulerObject * self)
for(x = 0; x < 3; x++) {
eul[x] = self->eul[x] * ((float)Py_PI / 180);
}
- EulToMat3(eul, (float (*)[3]) mat);
+ eul_to_mat3( (float (*)[3]) mat,eul);
}
#else
- EulToMat3(self->eul, (float (*)[3]) mat);
+ eul_to_mat3( (float (*)[3]) mat,self->eul);
#endif
return newMatrixObject(mat, 3, 3 , Py_NEW, NULL);
}
@@ -261,7 +261,7 @@ static PyObject *Euler_Rotate(EulerObject * self, PyObject *args)
}
}
#endif
- euler_rot(self->eul, angle, *axis);
+ rotate_eul(self->eul, *axis, angle);
#ifdef USE_MATHUTILS_DEG
{
diff --git a/source/blender/python/generic/matrix.c b/source/blender/python/generic/matrix.c
index 16ae3501b93..a1ef4b53615 100644
--- a/source/blender/python/generic/matrix.c
+++ b/source/blender/python/generic/matrix.c
@@ -28,7 +28,7 @@
#include "Mathutils.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
static PyObject *column_vector_multiplication(MatrixObject * mat, VectorObject* vec); /* utility func */
@@ -229,9 +229,9 @@ static PyObject *Matrix_toQuat(MatrixObject * self)
return NULL;
}
if(self->colSize == 3){
- Mat3ToQuat((float (*)[3])*self->matrix, quat);
+ mat3_to_quat( quat,(float (*)[3])*self->matrix);
}else{
- Mat4ToQuat((float (*)[4])*self->matrix, quat);
+ mat4_to_quat( quat,(float (*)[4])*self->matrix);
}
return newQuaternionObject(quat, Py_NEW, NULL);
@@ -266,14 +266,14 @@ PyObject *Matrix_toEuler(MatrixObject * self, PyObject *args)
/*must be 3-4 cols, 3-4 rows, square matrix*/
if(self->colSize ==3 && self->rowSize ==3) {
- if(eul_compat) Mat3ToCompatibleEul((float (*)[3])*self->matrix, eul, eul_compatf);
- else Mat3ToEul((float (*)[3])*self->matrix, eul);
+ if(eul_compat) mat3_to_compatible_eul( eul, eul_compatf,(float (*)[3])*self->matrix);
+ else mat3_to_eul( eul,(float (*)[3])*self->matrix);
}else if (self->colSize ==4 && self->rowSize ==4) {
float tempmat3[3][3];
- Mat3CpyMat4(tempmat3, (float (*)[4])*self->matrix);
- Mat3ToEul(tempmat3, eul);
- if(eul_compat) Mat3ToCompatibleEul(tempmat3, eul, eul_compatf);
- else Mat3ToEul(tempmat3, eul);
+ copy_m3_m4(tempmat3, (float (*)[4])*self->matrix);
+ mat3_to_eul( eul,tempmat3);
+ if(eul_compat) mat3_to_compatible_eul( eul, eul_compatf,tempmat3);
+ else mat3_to_eul( eul,tempmat3);
}else {
PyErr_SetString(PyExc_AttributeError, "Matrix.toEuler(): inappropriate matrix size - expects 3x3 or 4x4 matrix\n");
@@ -400,18 +400,18 @@ PyObject *Matrix_scalePart(MatrixObject * self)
/*must be 3-4 cols, 3-4 rows, square matrix*/
if(self->colSize == 4 && self->rowSize == 4)
- Mat3CpyMat4(mat, (float (*)[4])*self->matrix);
+ copy_m3_m4(mat, (float (*)[4])*self->matrix);
else if(self->colSize == 3 && self->rowSize == 3)
- Mat3CpyMat3(mat, (float (*)[3])*self->matrix);
+ copy_m3_m3(mat, (float (*)[3])*self->matrix);
else {
PyErr_SetString(PyExc_AttributeError, "Matrix.scalePart(): inappropriate matrix size - expects 3x3 or 4x4 matrix\n");
return NULL;
}
/* functionality copied from editobject.c apply_obmat */
- Mat3ToEul(mat, rot);
- EulToMat3(rot, tmat);
- Mat3Inv(imat, tmat);
- Mat3MulMat3(tmat, imat, mat);
+ mat3_to_eul( rot,mat);
+ eul_to_mat3( tmat,rot);
+ invert_m3_m3(imat, tmat);
+ mul_m3_m3m3(tmat, imat, mat);
scale[0]= tmat[0][0];
scale[1]= tmat[1][1];
@@ -449,9 +449,9 @@ PyObject *Matrix_Invert(MatrixObject * self)
mat[2] = -self->matrix[1][0];
mat[3] = self->matrix[0][0];
} else if(self->rowSize == 3) {
- Mat3Adj((float (*)[3]) mat,(float (*)[3]) *self->matrix);
+ adjoint_m3_m3((float (*)[3]) mat,(float (*)[3]) *self->matrix);
} else if(self->rowSize == 4) {
- Mat4Adj((float (*)[4]) mat, (float (*)[4]) *self->matrix);
+ adjoint_m4_m4((float (*)[4]) mat, (float (*)[4]) *self->matrix);
}
/*divide by determinate*/
for(x = 0; x < (self->rowSize * self->colSize); x++) {
@@ -491,16 +491,16 @@ PyObject *Matrix_Determinant(MatrixObject * self)
}
if(self->rowSize == 2) {
- det = Det2x2(self->matrix[0][0], self->matrix[0][1],
+ det = determinant_m2(self->matrix[0][0], self->matrix[0][1],
self->matrix[1][0], self->matrix[1][1]);
} else if(self->rowSize == 3) {
- det = Det3x3(self->matrix[0][0], self->matrix[0][1],
+ det = determinant_m3(self->matrix[0][0], self->matrix[0][1],
self->matrix[0][2], self->matrix[1][0],
self->matrix[1][1], self->matrix[1][2],
self->matrix[2][0], self->matrix[2][1],
self->matrix[2][2]);
} else {
- det = Det4x4((float (*)[4]) *self->matrix);
+ det = determinant_m4((float (*)[4]) *self->matrix);
}
return PyFloat_FromDouble( (double) det );
@@ -523,9 +523,9 @@ PyObject *Matrix_Transpose(MatrixObject * self)
self->matrix[1][0] = self->matrix[0][1];
self->matrix[0][1] = t;
} else if(self->rowSize == 3) {
- Mat3Transp((float (*)[3])*self->matrix);
+ transpose_m3((float (*)[3])*self->matrix);
} else {
- Mat4Transp((float (*)[4])*self->matrix);
+ transpose_m4((float (*)[4])*self->matrix);
}
BaseMath_WriteCallback(self);
@@ -568,9 +568,9 @@ PyObject *Matrix_Identity(MatrixObject * self)
self->matrix[1][0] = 0.0f;
self->matrix[1][1] = 1.0f;
} else if(self->rowSize == 3) {
- Mat3One((float (*)[3]) *self->matrix);
+ unit_m3((float (*)[3]) *self->matrix);
} else {
- Mat4One((float (*)[4]) *self->matrix);
+ unit_m4((float (*)[4]) *self->matrix);
}
if(!BaseMath_WriteCallback(self))
diff --git a/source/blender/python/generic/quat.c b/source/blender/python/generic/quat.c
index 7e12fe7925a..2ee78235224 100644
--- a/source/blender/python/generic/quat.c
+++ b/source/blender/python/generic/quat.c
@@ -28,7 +28,7 @@
#include "Mathutils.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
@@ -152,9 +152,9 @@ static PyObject *Quaternion_new(PyTypeObject *type, PyObject *args, PyObject *kw
if(size == 3) //calculate the quat based on axis/angle
#ifdef USE_MATHUTILS_DEG
- AxisAngleToQuat(quat, quat, angle * (Py_PI / 180));
+ axis_angle_to_quat(quat, quat, angle * (Py_PI / 180));
#else
- AxisAngleToQuat(quat, quat, angle);
+ axis_angle_to_quat(quat, quat, angle);
#endif
return newQuaternionObject(quat, Py_NEW, NULL);
@@ -180,7 +180,7 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
if(!BaseMath_ReadCallback(eul_compat))
return NULL;
- QuatToMat3(self->quat, mat);
+ quat_to_mat3( mat,self->quat);
#ifdef USE_MATHUTILS_DEG
{
@@ -190,14 +190,14 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
for(x = 0; x < 3; x++) {
eul_compatf[x] = eul_compat->eul[x] * ((float)Py_PI / 180);
}
- Mat3ToCompatibleEul(mat, eul, eul_compatf);
+ mat3_to_compatible_eul( eul, eul_compatf,mat);
}
#else
- Mat3ToCompatibleEul(mat, eul, eul_compat->eul);
+ mat3_to_compatible_eul( eul, eul_compat->eul,mat);
#endif
}
else {
- QuatToEul(self->quat, eul);
+ quat_to_eul( eul,self->quat);
}
#ifdef USE_MATHUTILS_DEG
@@ -220,7 +220,7 @@ static PyObject *Quaternion_ToMatrix(QuaternionObject * self)
if(!BaseMath_ReadCallback(self))
return NULL;
- QuatToMat3(self->quat, (float (*)[3]) mat);
+ quat_to_mat3( (float (*)[3]) mat,self->quat);
return newMatrixObject(mat, 3, 3, Py_NEW, NULL);
}
@@ -238,7 +238,7 @@ static PyObject *Quaternion_Cross(QuaternionObject * self, QuaternionObject * va
if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value))
return NULL;
- QuatMul(quat, self->quat, value->quat);
+ mul_qt_qtqt(quat, self->quat, value->quat);
return newQuaternionObject(quat, Py_NEW, NULL);
}
@@ -254,7 +254,7 @@ static PyObject *Quaternion_Dot(QuaternionObject * self, QuaternionObject * valu
if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value))
return NULL;
- return PyFloat_FromDouble(QuatDot(self->quat, value->quat));
+ return PyFloat_FromDouble(dot_qtqt(self->quat, value->quat));
}
//----------------------------Quaternion.normalize()----------------
@@ -264,7 +264,7 @@ static PyObject *Quaternion_Normalize(QuaternionObject * self)
if(!BaseMath_ReadCallback(self))
return NULL;
- NormalQuat(self->quat);
+ normalize_qt(self->quat);
BaseMath_WriteCallback(self);
Py_INCREF(self);
@@ -277,7 +277,7 @@ static PyObject *Quaternion_Inverse(QuaternionObject * self)
if(!BaseMath_ReadCallback(self))
return NULL;
- QuatInv(self->quat);
+ invert_qt(self->quat);
BaseMath_WriteCallback(self);
Py_INCREF(self);
@@ -290,7 +290,7 @@ static PyObject *Quaternion_Identity(QuaternionObject * self)
if(!BaseMath_ReadCallback(self))
return NULL;
- QuatOne(self->quat);
+ unit_qt(self->quat);
BaseMath_WriteCallback(self);
Py_INCREF(self);
@@ -303,7 +303,7 @@ static PyObject *Quaternion_Negate(QuaternionObject * self)
if(!BaseMath_ReadCallback(self))
return NULL;
- QuatMulf(self->quat, -1.0f);
+ mul_qt_fl(self->quat, -1.0f);
BaseMath_WriteCallback(self);
Py_INCREF(self);
@@ -316,7 +316,7 @@ static PyObject *Quaternion_Conjugate(QuaternionObject * self)
if(!BaseMath_ReadCallback(self))
return NULL;
- QuatConj(self->quat);
+ conjugate_qt(self->quat);
BaseMath_WriteCallback(self);
Py_INCREF(self);
@@ -525,7 +525,7 @@ static PyObject *Quaternion_add(PyObject * q1, PyObject * q2)
if(!BaseMath_ReadCallback(quat1) || !BaseMath_ReadCallback(quat2))
return NULL;
- QuatAdd(quat, quat1->quat, quat2->quat, 1.0f);
+ add_qt_qtqt(quat, quat1->quat, quat2->quat, 1.0f);
return newQuaternionObject(quat, Py_NEW, NULL);
}
//------------------------obj - obj------------------------------
@@ -573,7 +573,7 @@ static PyObject *Quaternion_mul(PyObject * q1, PyObject * q2)
}
if(quat1 && quat2) { /* QUAT*QUAT (dot product) */
- return PyFloat_FromDouble(QuatDot(quat1->quat, quat2->quat));
+ return PyFloat_FromDouble(dot_qtqt(quat1->quat, quat2->quat));
}
/* the only case this can happen (for a supported type is "FLOAT*QUAT" ) */
@@ -581,7 +581,7 @@ static PyObject *Quaternion_mul(PyObject * q1, PyObject * q2)
scalar= PyFloat_AsDouble(q1);
if ((scalar == -1.0 && PyErr_Occurred())==0) { /* FLOAT*QUAT */
QUATCOPY(quat, quat2->quat);
- QuatMulf(quat, scalar);
+ mul_qt_fl(quat, scalar);
return newQuaternionObject(quat, Py_NEW, NULL);
}
PyErr_SetString(PyExc_TypeError, "Quaternion multiplication: val * quat, val is not an acceptable type");
@@ -600,7 +600,7 @@ static PyObject *Quaternion_mul(PyObject * q1, PyObject * q2)
scalar= PyFloat_AsDouble(q2);
if ((scalar == -1.0 && PyErr_Occurred())==0) { /* QUAT*FLOAT */
QUATCOPY(quat, quat1->quat);
- QuatMulf(quat, scalar);
+ mul_qt_fl(quat, scalar);
return newQuaternionObject(quat, Py_NEW, NULL);
}
}
@@ -669,7 +669,7 @@ static int Quaternion_setAxis( QuaternionObject * self, PyObject * value, void *
static PyObject *Quaternion_getMagnitude( QuaternionObject * self, void *type )
{
- return PyFloat_FromDouble(sqrt(QuatDot(self->quat, self->quat)));
+ return PyFloat_FromDouble(sqrt(dot_qtqt(self->quat, self->quat)));
}
static PyObject *Quaternion_getAngle( QuaternionObject * self, void *type )
@@ -692,7 +692,7 @@ static PyObject *Quaternion_getAxisVec( QuaternionObject * self, void *type )
for(i = 0; i < 3; i++)
vec[i] = (float)(self->quat[i + 1] / mag);
- Normalize(vec);
+ normalize_v3(vec);
//If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations
if( EXPP_FloatsAreEqual(vec[0], 0.0f, 10) &&
EXPP_FloatsAreEqual(vec[1], 0.0f, 10) &&
@@ -820,7 +820,7 @@ PyObject *newQuaternionObject(float *quat, int type, PyTypeObject *base_type)
}else if (type == Py_NEW){
self->quat = PyMem_Malloc(4 * sizeof(float));
if(!quat) { //new empty
- QuatOne(self->quat);
+ unit_qt(self->quat);
}else{
QUATCOPY(self->quat, quat);
}
diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c
index 0ce7b83e653..b3e54ac2250 100644
--- a/source/blender/python/generic/vector.c
+++ b/source/blender/python/generic/vector.c
@@ -29,7 +29,7 @@
#include "BLI_blenlib.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#define MAX_DIMENSIONS 4
/* Swizzle axes get packed into a single value that is used as a closure. Each
@@ -347,7 +347,7 @@ static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args )
vec[1] = -self->vec[1];
vec[2] = -self->vec[2];
- vectoquat(vec, track, up, quat);
+ vec_to_quat( quat,vec, track, up);
return newQuaternionObject(quat, Py_NEW, NULL);
}
@@ -379,7 +379,7 @@ static PyObject *Vector_Reflect( VectorObject * self, VectorObject * value )
if (self->size > 2) vec[2] = self->vec[2];
else vec[2] = 0.0;
- VecReflect(reflect, vec, mirror);
+ reflect_v3_v3v3(reflect, vec, mirror);
return newVectorObject(reflect, self->size, Py_NEW, NULL);
}
@@ -402,7 +402,7 @@ static PyObject *Vector_Cross( VectorObject * self, VectorObject * value )
return NULL;
vecCross = (VectorObject *)newVectorObject(NULL, 3, Py_NEW, NULL);
- Crossf(vecCross->vec, self->vec, value->vec);
+ cross_v3_v3v3(vecCross->vec, self->vec, value->vec);
return (PyObject *)vecCross;
}
@@ -626,36 +626,30 @@ static PyObject *Vector_add(PyObject * v1, PyObject * v2)
static PyObject *Vector_iadd(PyObject * v1, PyObject * v2)
{
int i;
-
VectorObject *vec1 = NULL, *vec2 = NULL;
+
+ if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) {
+ PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n");
+ return NULL;
+ }
+ vec1 = (VectorObject*)v1;
+ vec2 = (VectorObject*)v2;
- if VectorObject_Check(v1)
- vec1= (VectorObject *)v1;
-
- if VectorObject_Check(v2)
- vec2= (VectorObject *)v2;
-
- /* make sure v1 is always the vector */
- if (vec1 && vec2 ) {
-
- if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2))
- return NULL;
-
- /*VECTOR + VECTOR*/
- if(vec1->size != vec2->size) {
- PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n");
- return NULL;
- }
- for(i = 0; i < vec1->size; i++) {
- vec1->vec[i] += vec2->vec[i];
- }
- Py_INCREF( v1 );
- return v1;
+ if(vec1->size != vec2->size) {
+ PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n");
+ return NULL;
}
+ if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2))
+ return NULL;
+
+ for(i = 0; i < vec1->size; i++) {
+ vec1->vec[i] = vec1->vec[i] + vec2->vec[i];
+ }
+
BaseMath_WriteCallback(vec1);
- PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n");
- return NULL;
+ Py_INCREF( v1 );
+ return v1;
}
/*------------------------obj - obj------------------------------
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index bf616ba2a03..a690c20cde5 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -64,6 +64,8 @@
#include "BKE_fcurve.h"
#include "BKE_text.h"
#include "BKE_context.h"
+#include "BKE_global.h"
+#include "BKE_main.h"
#include "BPY_extern.h"
@@ -75,6 +77,7 @@
#include "../generic/Mathutils.h"
#include "../generic/Geometry.h"
#include "../generic/BGL.h"
+#include "../generic/IDProp.h"
/* for internal use, when starting and ending python scripts */
@@ -177,7 +180,7 @@ static BPy_StructRNA *bpy_context_module= NULL; /* for fast access */
static void bpy_init_modules( void )
{
PyObject *mod;
-
+
/* Needs to be first since this dir is needed for future modules */
char *modpath= BLI_gethome_folder("scripts/modules", BLI_GETHOME_ALL);
if(modpath) {
@@ -187,10 +190,18 @@ static void bpy_init_modules( void )
Py_DECREF(py_modpath);
}
- mod = PyModule_New("bpy");
+ /* stand alone utility modules not related to blender directly */
+ Geometry_Init();
+ Mathutils_Init();
+ BGL_Init();
+ IDProp_Init_Types();
+ Freestyle_Init();
+
+
+ mod = PyModule_New("_bpy");
/* add the module so we can import it */
- PyDict_SetItemString(PySys_GetObject("modules"), "bpy", mod);
+ PyDict_SetItemString(PySys_GetObject("modules"), "_bpy", mod);
Py_DECREF(mod);
/* run first, initializes rna types */
@@ -202,7 +213,7 @@ static void bpy_init_modules( void )
bpy_import_test("bpy_types");
/* PyModule_AddObject( mod, "doc", BPY_rna_doc() ); */
PyModule_AddObject( mod, "props", BPY_rna_props() );
- PyModule_AddObject( mod, "__ops__", BPY_operator_module() ); /* ops is now a python module that does the conversion from SOME_OT_foo -> some.foo */
+ PyModule_AddObject( mod, "ops", BPY_operator_module() ); /* ops is now a python module that does the conversion from SOME_OT_foo -> some.foo */
PyModule_AddObject( mod, "ui", BPY_ui_module() ); // XXX very experimental, consider this a test, especially PyCObject is not meant to be permanent
@@ -215,17 +226,8 @@ static void bpy_init_modules( void )
PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module);
}
- /* stand alone utility modules not related to blender directly */
- Geometry_Init();
- Mathutils_Init();
- BGL_Init();
- Freestyle_Init();
-
- /* add our own modules dir */
- {
- bpy_import_test("bpy_ops"); /* adds its self to bpy.ops */
- bpy_import_test("bpy_utils"); /* adds its self to bpy.sys */
- }
+ /* add our own modules dir, this is a python package */
+ bpy_import_test("bpy");
}
void BPY_update_modules( void )
@@ -244,34 +246,24 @@ void BPY_update_modules( void )
/*****************************************************************************
* Description: This function creates a new Python dictionary object.
*****************************************************************************/
-static PyObject *CreateGlobalDictionary( bContext *C )
+static PyObject *CreateGlobalDictionary( bContext *C, const char *filename )
{
PyObject *mod;
+ PyObject *item;
PyObject *dict = PyDict_New( );
- PyObject *item = PyUnicode_FromString( "__main__" );
PyDict_SetItemString( dict, "__builtins__", PyEval_GetBuiltins( ) );
+
+ item = PyUnicode_FromString( "__main__" );
PyDict_SetItemString( dict, "__name__", item );
Py_DECREF(item);
- // XXX - put somewhere more logical
- {
- PyMethodDef *ml;
- static PyMethodDef bpy_prop_meths[] = {
- {"FloatProperty", (PyCFunction)BPy_FloatProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {"IntProperty", (PyCFunction)BPy_IntProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {"BoolProperty", (PyCFunction)BPy_BoolProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {"StringProperty", (PyCFunction)BPy_StringProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {"EnumProperty", (PyCFunction)BPy_EnumProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {"PointerProperty", (PyCFunction)BPy_PointerProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {"CollectionProperty", (PyCFunction)BPy_CollectionProperty, METH_VARARGS|METH_KEYWORDS, ""},
- {NULL, NULL, 0, NULL}
- };
-
- for(ml = bpy_prop_meths; ml->ml_name; ml++) {
- PyDict_SetItemString( dict, ml->ml_name, PyCFunction_New(ml, NULL));
- }
+ /* __file__ only for nice UI'ness */
+ if(filename) {
+ PyObject *item = PyUnicode_FromString( filename );
+ PyDict_SetItemString( dict, "__file__", item );
+ Py_DECREF(item);
}
-
+
/* add bpy to global namespace */
mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0);
PyDict_SetItemString( dict, "bpy", mod );
@@ -305,6 +297,13 @@ void BPY_start_python_path(void)
}
+
+void BPY_set_context(bContext *C)
+{
+ BPy_SetContext(C);
+}
+
+/* call BPY_set_context first */
void BPY_start_python( int argc, char **argv )
{
PyThreadState *py_tstate = NULL;
@@ -340,11 +339,6 @@ void BPY_start_python( int argc, char **argv )
PyObject *d = PyEval_GetBuiltins( );
PyDict_SetItemString(d, "reload", item=PyCFunction_New(bpy_reload_meth, NULL)); Py_DECREF(item);
PyDict_SetItemString(d, "__import__", item=PyCFunction_New(bpy_import_meth, NULL)); Py_DECREF(item);
-
- /* a bit nasty but this prevents help() and input() from locking blender
- * Ideally we could have some way for the console to replace sys.stdin but
- * python would lock blender while waiting for a return value, not easy :| */
- PySys_SetObject("stdin", Py_None);
}
pyrna_alloc_types();
@@ -399,7 +393,7 @@ int BPY_run_python_script( bContext *C, const char *fn, struct Text *text, struc
bpy_context_set(C, &gilstate);
- py_dict = CreateGlobalDictionary(C);
+ py_dict = CreateGlobalDictionary(C, text?text->id.name+2:fn);
if (text) {
@@ -419,24 +413,32 @@ int BPY_run_python_script( bContext *C, const char *fn, struct Text *text, struc
py_result = PyEval_EvalCode( text->compiled, py_dict, py_dict );
} else {
-#if 0
- char *pystring;
- pystring= malloc(strlen(fn) + 32);
- pystring[0]= '\0';
- sprintf(pystring, "exec(open(r'%s').read())", fn);
- py_result = PyRun_String( pystring, Py_file_input, py_dict, py_dict );
- free(pystring);
-#else
FILE *fp= fopen(fn, "r");
if(fp) {
+#ifdef _WIN32
+ /* Previously we used PyRun_File to run directly the code on a FILE
+ * object, but as written in the Python/C API Ref Manual, chapter 2,
+ * 'FILE structs for different C libraries can be different and
+ * incompatible'.
+ * So now we load the script file data to a buffer */
+ char *pystring;
+
+ fclose(fp);
+
+ pystring= malloc(strlen(fn) + 32);
+ pystring[0]= '\0';
+ sprintf(pystring, "exec(open(r'%s').read())", fn);
+ py_result = PyRun_String( pystring, Py_file_input, py_dict, py_dict );
+ free(pystring);
+#else
py_result = PyRun_File(fp, fn, Py_file_input, py_dict, py_dict);
fclose(fp);
+#endif
}
else {
PyErr_Format(PyExc_SystemError, "Python file \"%s\" could not be opened: %s", fn, strerror(errno));
py_result= NULL;
}
-#endif
}
if (!py_result) {
@@ -594,117 +596,6 @@ int BPY_run_python_script_space(const char *modulename, const char *func)
#include "PIL_time.h"
#endif
-/* for use by BPY_run_ui_scripts only */
-static int bpy_import_module(char *modname, int reload)
-{
- PyObject *mod= PyImport_ImportModuleLevel(modname, NULL, NULL, NULL, 0);
- if (mod) {
- if (reload) {
- PyObject *mod_orig= mod;
- mod= PyImport_ReloadModule(mod);
- Py_DECREF(mod_orig);
- }
- }
-
- if(mod) {
- Py_DECREF(mod); /* could be NULL from reloading */
- return 0;
- } else {
- return -1;
- }
-}
-
-/* XXX this is temporary, need a proper script registration system for 2.5 */
-void BPY_run_ui_scripts(bContext *C, int reload)
-{
-#ifdef TIME_REGISTRATION
- double time = PIL_check_seconds_timer();
-#endif
- DIR *dir;
- struct dirent *de;
- char *file_extension;
- char *dirname;
- char path[FILE_MAX];
- char *dirs[] = {"scripts/ui", "scripts/op", "scripts/io", NULL};
- int path_flags[] = {BLI_GETHOME_LOCAL|BLI_GETHOME_SYSTEM, BLI_GETHOME_USER}; /* SYSTEM / NON-SYSTEM */
- int a, err, flag_iter;
-
- PyGILState_STATE gilstate;
- PyObject *sys_path;
-
- bpy_context_set(C, &gilstate);
-
- sys_path= PySys_GetObject("path"); /* borrow */
- PyList_Insert(sys_path, 0, Py_None); /* place holder, resizes the list */
-
- /* Scan system scripts first, then local/user */
- for(flag_iter=0; flag_iter < sizeof(path_flags)/sizeof(int); flag_iter++) {
-
- for(a=0; dirs[a]; a++) {
- dirname= BLI_gethome_folder(dirs[a], path_flags[flag_iter]);
-
- if(!dirname)
- continue;
-
- dir = opendir(dirname);
-
- if(!dir)
- continue;
-
- /* set the first dir in the sys.path for fast importing of modules */
- PyList_SetItem(sys_path, 0, PyUnicode_FromString(dirname)); /* steals the ref */
-
- while((de = readdir(dir)) != NULL) {
- /* We could stat the file but easier just to let python
- * import it and complain if theres a problem */
- err = 0;
-
- if (de->d_name[0] == '.') {
- /* do nothing, probably .svn */
- }
- else if ((file_extension = strstr(de->d_name, ".py"))) {
- /* normal py files? */
- if(file_extension && file_extension[3] == '\0') {
- de->d_name[(file_extension - de->d_name)] = '\0';
- err= bpy_import_module(de->d_name, reload);
- }
- }
-#ifndef __linux__
- else if( BLI_join_dirfile(path, dirname, de->d_name), S_ISDIR(BLI_exist(path))) {
-#else
- else if(de->d_type==DT_DIR) {
- BLI_join_dirfile(path, dirname, de->d_name);
-#endif
- /* support packages */
- BLI_join_dirfile(path, path, "__init__.py");
-
- if(BLI_exists(path)) {
- err= bpy_import_module(de->d_name, reload);
- }
- }
-
- if(err==-1) {
- BPy_errors_to_report(NULL);
- fprintf(stderr, "unable to import %s/%s\n", dirname, de->d_name);
- }
- }
-
- closedir(dir);
- }
- }
-
- PyList_SetSlice(sys_path, 0, 1, NULL); /* remove the first item */
-
- bpy_context_clear(C, &gilstate);
-
-#ifdef TIME_REGISTRATION
- printf("script time %f\n", (PIL_check_seconds_timer()-time));
-#endif
-
- /* reset the timer so as not to take loading into the stats */
- bpy_timer_count = 0;
-}
-
/* ****************************************** */
/* Drivers - PyExpression Evaluation */
@@ -911,7 +802,7 @@ int BPY_button_eval(bContext *C, char *expr, double *value)
bpy_context_set(C, &gilstate);
- dict= CreateGlobalDictionary(C);
+ dict= CreateGlobalDictionary(C, NULL);
/* import some modules: builtins,math*/
PyDict_SetItemString(dict, "__builtins__", PyEval_GetBuiltins());
@@ -967,9 +858,30 @@ int BPY_button_eval(bContext *C, char *expr, double *value)
return error_ret;
}
+void BPY_load_user_modules(bContext *C)
+{
+ PyGILState_STATE gilstate;
+ Text *text;
+
+ bpy_context_set(C, &gilstate);
+
+ for(text=CTX_data_main(C)->text.first; text; text= text->id.next) {
+ if(text->flags & TXT_ISSCRIPT && BLI_testextensie(text->id.name+2, ".py")) {
+ PyObject *module= bpy_text_import(text);
+ if (module==NULL) {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
+ Py_DECREF(module);
+ }
+ }
+ }
+ bpy_context_clear(C, &gilstate);
+}
-int bpy_context_get(bContext *C, const char *member, bContextDataResult *result)
+int BPY_context_get(bContext *C, const char *member, bContextDataResult *result)
{
PyObject *pyctx= (PyObject *)CTX_py_dict_get(C);
PyObject *item= PyDict_GetItemString(pyctx, member);
@@ -1022,8 +934,11 @@ int bpy_context_get(bContext *C, const char *member, bContextDataResult *result)
}
if(done==0) {
- if (item) printf("Context '%s' not found\n", member);
- else printf("Context '%s' not a valid type\n", member);
+ if (item) printf("Context '%s' not a valid type\n", member);
+ else printf("Context '%s' not found\n", member);
+ }
+ else if (G.f & G_DEBUG) {
+ printf("Context '%s' found\n", member);
}
return done;
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index 1ae0a40ce16..6ae63f2ab65 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -57,13 +57,13 @@ static PyObject *pyop_call( PyObject * self, PyObject * args)
// XXX Todo, work out a better solution for passing on context, could make a tuple from self and pack the name and Context into it...
bContext *C = BPy_GetContext();
- if (!PyArg_ParseTuple(args, "sO|O!i:bpy.__ops__.call", &opname, &context_dict, &PyDict_Type, &kw, &context))
+ if (!PyArg_ParseTuple(args, "sO|O!i:_bpy.ops.call", &opname, &context_dict, &PyDict_Type, &kw, &context))
return NULL;
ot= WM_operatortype_find(opname, TRUE);
if (ot == NULL) {
- PyErr_Format( PyExc_SystemError, "bpy.__ops__.call: operator \"%s\"could not be found", opname);
+ PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator \"%s\"could not be found", opname);
return NULL;
}
@@ -76,7 +76,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args)
Py_XINCREF(context_dict); /* so we done loose it */
if(WM_operator_poll((bContext*)C, ot) == FALSE) {
- PyErr_SetString( PyExc_SystemError, "bpy.__ops__.call: operator poll() function failed, context is incorrect");
+ PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator %.200s.poll() function failed, context is incorrect", opname);
error_val= -1;
}
else {
@@ -153,18 +153,18 @@ static PyObject *pyop_as_string( PyObject * self, PyObject * args)
int all_args = 1;
int error_val= 0;
- char *buf;
+ char *buf = NULL;
PyObject *pybuf;
bContext *C = BPy_GetContext();
- if (!PyArg_ParseTuple(args, "s|O!i:bpy.__ops__.as_string", &opname, &PyDict_Type, &kw, &all_args))
+ if (!PyArg_ParseTuple(args, "s|O!i:_bpy.ops.as_string", &opname, &PyDict_Type, &kw, &all_args))
return NULL;
ot= WM_operatortype_find(opname, TRUE);
if (ot == NULL) {
- PyErr_Format( PyExc_SystemError, "bpy.__ops__.as_string: operator \"%s\"could not be found", opname);
+ PyErr_Format( PyExc_SystemError, "_bpy.ops.as_string: operator \"%s\"could not be found", opname);
return NULL;
}
@@ -217,12 +217,12 @@ static PyObject *pyop_getrna(PyObject *self, PyObject *value)
BPy_StructRNA *pyrna= NULL;
if(opname==NULL) {
- PyErr_SetString(PyExc_TypeError, "bpy.__ops__.get_rna() expects a string argument");
+ PyErr_SetString(PyExc_TypeError, "_bpy.ops.get_rna() expects a string argument");
return NULL;
}
ot= WM_operatortype_find(opname, TRUE);
if(ot==NULL) {
- PyErr_Format(PyExc_KeyError, "bpy.__ops__.get_rna(\"%s\") not found", opname);
+ PyErr_Format(PyExc_KeyError, "_bpy.ops.get_rna(\"%s\") not found", opname);
return NULL;
}
@@ -230,7 +230,9 @@ static PyObject *pyop_getrna(PyObject *self, PyObject *value)
//RNA_pointer_create(NULL, &RNA_Struct, ot->srna, &ptr);
/* XXX - should call WM_operator_properties_free */
- WM_operator_properties_create(&ptr, ot->idname);
+ WM_operator_properties_create_ptr(&ptr, ot);
+
+
pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
pyrna->freeptr= TRUE;
return (PyObject *)pyrna;
@@ -245,8 +247,8 @@ PyObject *BPY_operator_module( void )
static PyMethodDef pyop_add_meth = {"add", (PyCFunction) PYOP_wrap_add, METH_O, NULL};
static PyMethodDef pyop_remove_meth = {"remove", (PyCFunction) PYOP_wrap_remove, METH_O, NULL};
- PyObject *submodule = PyModule_New("bpy.__ops__");
- PyDict_SetItemString(PySys_GetObject("modules"), "bpy.__ops__", submodule);
+ PyObject *submodule = PyModule_New("_bpy.ops");
+ PyDict_SetItemString(PySys_GetObject("modules"), "_bpy.ops", submodule);
PyModule_AddObject( submodule, "call", PyCFunction_New(&pyop_call_meth, NULL) );
PyModule_AddObject( submodule, "as_string",PyCFunction_New(&pyop_as_string_meth,NULL) );
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index 95ffd3e1121..ff49d381dd1 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -32,6 +32,7 @@
#include "MEM_guardedalloc.h"
#include "WM_api.h"
#include "WM_types.h"
+#include "UI_interface.h"
#include "ED_screen.h"
#include "RNA_define.h"
@@ -78,10 +79,11 @@ static struct BPY_flag_def pyop_ret_flags[] = {
#define PYOP_EXEC 1
#define PYOP_INVOKE 2
#define PYOP_POLL 3
+#define PYOP_DRAW 4
extern void BPY_update_modules( void ); //XXX temp solution
-static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event)
+static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event, uiLayout *layout)
{
PyObject *py_class = ot->pyop_data;
PyObject *args;
@@ -89,7 +91,6 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
int ret_flag= (mode==PYOP_POLL ? 0:OPERATOR_CANCELLED);
PointerRNA ptr_context;
PointerRNA ptr_operator;
- PointerRNA ptr_event;
PyGILState_STATE gilstate;
@@ -105,31 +106,18 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
py_class_instance = PyObject_Call(py_class, args, NULL);
Py_DECREF(args);
- if (py_class_instance) { /* Initializing the class worked, now run its invoke function */
- PyObject *class_dict= PyObject_GetAttrString(py_class_instance, "__dict__");
-
- /* Assign instance attributes from operator properties */
- if(op) {
- const char *arg_name;
-
- RNA_STRUCT_BEGIN(op->ptr, prop) {
- arg_name= RNA_property_identifier(prop);
-
- if (strcmp(arg_name, "rna_type")==0) continue;
-
- item = pyrna_prop_to_py(op->ptr, prop);
- PyDict_SetItemString(class_dict, arg_name, item);
- Py_DECREF(item);
- }
- RNA_STRUCT_END;
- }
-
+ if (py_class_instance==NULL) { /* Initializing the class worked, now run its invoke function */
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context);
-
+
if (mode==PYOP_INVOKE) {
+ PointerRNA ptr_event;
item= PyObject_GetAttrString(py_class, "invoke");
args = PyTuple_New(3);
-
+
RNA_pointer_create(NULL, &RNA_Event, event, &ptr_event);
// PyTuple_SET_ITEM "steals" object reference, it is
@@ -148,17 +136,42 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
args = PyTuple_New(2);
PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context));
}
+ else if (mode==PYOP_DRAW) {
+ PointerRNA ptr_layout;
+ item= PyObject_GetAttrString(py_class, "draw");
+ args = PyTuple_New(2);
+
+ RNA_pointer_create(NULL, &RNA_UILayout, layout, &ptr_layout);
+
+ // PyTuple_SET_ITEM "steals" object reference, it is
+ // an object passed shouldn't be DECREF'ed
+ PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context));
+#if 0
+ PyTuple_SET_ITEM(args, 2, pyrna_struct_CreatePyObject(&ptr_layout));
+#else
+ {
+ /* mimic panels */
+ PyObject *py_layout= pyrna_struct_CreatePyObject(&ptr_layout);
+ PyObject *pyname= PyUnicode_FromString("layout");
+
+ if(PyObject_GenericSetAttr(py_class_instance, pyname, py_layout)) {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
+ Py_DECREF(py_layout);
+ }
+
+ Py_DECREF(pyname);
+ }
+#endif
+ }
PyTuple_SET_ITEM(args, 0, py_class_instance);
-
+
ret = PyObject_Call(item, args, NULL);
-
+
Py_DECREF(args);
Py_DECREF(item);
- Py_DECREF(class_dict);
- }
- else {
- PyErr_Print();
- PyErr_Clear();
}
if (ret == NULL) { /* covers py_class_instance failing too */
@@ -168,21 +181,18 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
else {
if (mode==PYOP_POLL) {
if (PyBool_Check(ret) == 0) {
- PyErr_SetString(PyExc_ValueError, "Python poll function return value ");
- if(op)
- BPy_errors_to_report(op->reports);
+ PyErr_Format(PyExc_ValueError, "Python operator '%s.poll', did not return a bool value", ot->idname);
+ BPy_errors_to_report(op ? op->reports:NULL); /* prints and clears if NULL given */
}
else {
ret_flag= ret==Py_True ? 1:0;
}
-
+ } else if(mode==PYOP_DRAW) {
+ /* pass */
} else if (BPY_flag_from_seq(pyop_ret_flags, ret, &ret_flag) == -1) {
/* the returned value could not be converted into a flag */
- if(op) {
- fprintf(stderr, "error using return value from \"%s\"\n", op->idname); // for some reason the error raised doesnt include file:line... this helps
- BPy_errors_to_report(op->reports);
- }
-
+ PyErr_Format(PyExc_ValueError, "Python operator, error using return value from \"%s\"\n", ot->idname);
+ BPy_errors_to_report(op ? op->reports:NULL);
ret_flag = OPERATOR_CANCELLED;
}
/* there is no need to copy the py keyword dict modified by
@@ -232,17 +242,22 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
static int PYTHON_OT_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event);
+ return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event, NULL);
}
static int PYTHON_OT_execute(bContext *C, wmOperator *op)
{
- return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL);
+ return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL, NULL);
}
static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot)
{
- return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL);
+ return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL, NULL);
+}
+
+static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout)
+{
+ PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout);
}
void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
@@ -279,6 +294,8 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
ot->exec= PYTHON_OT_execute;
if (PyObject_HasAttrString(py_class, "poll"))
ot->pyop_poll= PYTHON_OT_poll;
+ if (PyObject_HasAttrString(py_class, "draw"))
+ ot->ui= PYTHON_OT_draw;
ot->pyop_data= userdata;
@@ -308,9 +325,16 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
*/
item= ((PyTypeObject*)py_class)->tp_dict;
if(item) {
+ /* only call this so pyrna_deferred_register_props gives a useful error
+ * WM_operatortype_append_ptr will call RNA_def_struct_identifier
+ * later */
+ RNA_def_struct_identifier(ot->srna, ot->idname);
+
if(pyrna_deferred_register_props(ot->srna, item)!=0) {
+ /* failed to register operator props */
PyErr_Print();
PyErr_Clear();
+
}
}
else {
@@ -336,12 +360,17 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
{"execute", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
{"invoke", 'f', 3, -1, BPY_CLASS_ATTR_OPTIONAL},
{"poll", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
+ {"draw", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
{NULL, 0, 0, 0}
};
// in python would be...
//PyObject *optype = PyObject_GetAttrString(PyObject_GetAttrString(PyDict_GetItemString(PyEval_GetGlobals(), "bpy"), "types"), "Operator");
- base_class = PyObject_GetAttrStringArgs(PyDict_GetItemString(PyEval_GetGlobals(), "bpy"), 2, "types", "Operator");
+
+ //PyObject bpy_mod= PyDict_GetItemString(PyEval_GetGlobals(), "bpy");
+ PyObject *bpy_mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0);
+ base_class = PyObject_GetAttrStringArgs(bpy_mod, 2, "types", "Operator");
+ Py_DECREF(bpy_mod);
if(BPY_class_validate("Operator", py_class, base_class, pyop_class_attr_values, NULL) < 0) {
return NULL; /* BPY_class_validate sets the error */
@@ -414,6 +443,3 @@ PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value)
Py_RETURN_NONE;
}
-
-
-
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index bcc12eb4502..fd5e1ddf75c 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -39,6 +39,9 @@
#include "BKE_global.h" /* evil G.* */
#include "BKE_report.h"
+#include "BKE_animsys.h"
+#include "BKE_fcurve.h"
+
/* only for keyframing */
#include "DNA_scene_types.h"
#include "DNA_anim_types.h"
@@ -48,6 +51,7 @@
#ifdef USE_MATHUTILS
#include "../generic/Mathutils.h" /* so we can have mathutils callbacks */
+#include "../generic/IDProp.h" /* for IDprop lookups */
/* bpyrna vector/euler/quat callbacks */
static int mathutils_rna_array_cb_index= -1; /* index for our callbacks */
@@ -139,18 +143,20 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
PyObject *ret= NULL;
#ifdef USE_MATHUTILS
- int type, subtype, totdim;
+ int subtype, totdim;
int len;
+ /* disallow dynamic sized arrays to be wrapped since the size could change
+ * to a size mathutils does not support */
+ if ((RNA_property_type(prop) != PROP_FLOAT) || (RNA_property_flag(prop) & PROP_DYNAMIC))
+ return NULL;
+
len= RNA_property_array_length(ptr, prop);
- type= RNA_property_type(prop);
subtype= RNA_property_subtype(prop);
totdim= RNA_property_array_dimension(ptr, prop, NULL);
- if (type != PROP_FLOAT) return NULL;
-
if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) {
- ret = pyrna_prop_CreatePyObject(ptr, prop);
+ ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */
switch(RNA_property_subtype(prop)) {
case PROP_TRANSLATION:
@@ -273,7 +279,7 @@ static PyObject *pyrna_prop_richcmp(PyObject *a, PyObject *b, int op)
}
/*----------------------repr--------------------------------------------*/
-static PyObject *pyrna_struct_repr( BPy_StructRNA * self )
+static PyObject *pyrna_struct_repr( BPy_StructRNA *self )
{
PyObject *pyob;
char *name;
@@ -289,7 +295,7 @@ static PyObject *pyrna_struct_repr( BPy_StructRNA * self )
return PyUnicode_FromFormat( "[BPy_StructRNA \"%.200s\"]", RNA_struct_identifier(self->ptr.type));
}
-static PyObject *pyrna_prop_repr( BPy_PropertyRNA * self )
+static PyObject *pyrna_prop_repr( BPy_PropertyRNA *self )
{
PyObject *pyob;
PointerRNA ptr;
@@ -310,13 +316,13 @@ static PyObject *pyrna_prop_repr( BPy_PropertyRNA * self )
return PyUnicode_FromFormat( "[BPy_PropertyRNA \"%.200s\" -> \"%.200s\"]", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop));
}
-static long pyrna_struct_hash( BPy_StructRNA * self )
+static long pyrna_struct_hash( BPy_StructRNA *self )
{
return (long)self->ptr.data;
}
/* use our own dealloc so we can free a property if we use one */
-static void pyrna_struct_dealloc( BPy_StructRNA * self )
+static void pyrna_struct_dealloc( BPy_StructRNA *self )
{
if (self->freeptr && self->ptr.data) {
IDP_FreeProperty(self->ptr.data);
@@ -419,10 +425,19 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
ret = PyUnicode_FromString( item->identifier );
}
else {
+ char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, FALSE);
+
/* prefer not fail silently incase of api errors, maybe disable it later */
- char error_str[128];
- sprintf(error_str, "RNA Warning: Current value \"%d\" matches no enum", val);
+ printf("RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'\n", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
+
+#if 0 // gives python decoding errors while generating docs :(
+ char error_str[256];
+ snprintf(error_str, sizeof(error_str), "RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
PyErr_Warn(PyExc_RuntimeWarning, error_str);
+#endif
+
+ if(ptr_name)
+ MEM_freeN(ptr_name);
ret = PyUnicode_FromString( "" );
}
@@ -517,9 +532,9 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const cha
return error_val;
}
-static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw);
+static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw);
-PyObject *pyrna_func_to_py(BPy_StructRNA *pyrna, FunctionRNA *func)
+PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func)
{
static PyMethodDef func_meth = {"<generic rna function>", (PyCFunction)pyrna_func_call, METH_VARARGS|METH_KEYWORDS, "python rna function"};
PyObject *self;
@@ -581,9 +596,16 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
switch (type) {
case PROP_BOOLEAN:
{
- int param = PyObject_IsTrue( value );
+ int param;
+ /* prefer not to have an exception here
+ * however so many poll functions return None or a valid Object.
+ * its a hassle to convert these into a bool before returning, */
+ if(RNA_property_flag(prop) & PROP_RETURN)
+ param = PyObject_IsTrue( value );
+ else
+ param = PyLong_AsSsize_t( value );
- if( param < 0 ) {
+ if( param < 0 || param > 1) {
PyErr_Format(PyExc_TypeError, "%.200s expected True/False or 0/1", error_prefix);
return -1;
} else {
@@ -595,7 +617,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
case PROP_INT:
{
int param = PyLong_AsSsize_t(value);
- if (PyErr_Occurred()) {
+ if (param==-1 && PyErr_Occurred()) {
PyErr_Format(PyExc_TypeError, "%.200s expected an int type", error_prefix);
return -1;
} else {
@@ -671,7 +693,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
PyErr_Format(PyExc_TypeError, "%.200s expected a %.200s type", error_prefix, RNA_struct_identifier(ptype));
return -1;
} else if((flag & PROP_NEVER_NULL) && value == Py_None) {
- PyErr_Format(PyExc_TypeError, "property can't be assigned a None value");
+ PyErr_Format(PyExc_TypeError, "%.200s does not suppory a 'None' assignment %.200s type", error_prefix, RNA_struct_identifier(ptype));
return -1;
} else {
BPy_StructRNA *param= (BPy_StructRNA*)value;
@@ -803,9 +825,9 @@ static int pyrna_py_to_prop_index(BPy_PropertyRNA *self, int index, PyObject *va
switch (type) {
case PROP_BOOLEAN:
{
- int param = PyObject_IsTrue( value );
+ int param = PyLong_AsSsize_t( value );
- if( param < 0 ) {
+ if( param < 0 || param > 1) {
PyErr_SetString(PyExc_TypeError, "expected True/False or 0/1");
ret = -1;
} else {
@@ -816,7 +838,7 @@ static int pyrna_py_to_prop_index(BPy_PropertyRNA *self, int index, PyObject *va
case PROP_INT:
{
int param = PyLong_AsSsize_t(value);
- if (PyErr_Occurred()) {
+ if (param==-1 && PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError, "expected an int type");
ret = -1;
} else {
@@ -854,7 +876,7 @@ static int pyrna_prop_array_length(BPy_PropertyRNA *self)
return RNA_property_array_length(&self->ptr, self->prop);
}
-static Py_ssize_t pyrna_prop_len( BPy_PropertyRNA * self )
+static Py_ssize_t pyrna_prop_len( BPy_PropertyRNA *self )
{
Py_ssize_t len;
@@ -871,7 +893,7 @@ static Py_ssize_t pyrna_prop_len( BPy_PropertyRNA * self )
}
/* internal use only */
-static PyObject *prop_subscript_collection_int(BPy_PropertyRNA * self, int keynum)
+static PyObject *prop_subscript_collection_int(BPy_PropertyRNA *self, int keynum)
{
PointerRNA newptr;
@@ -884,7 +906,7 @@ static PyObject *prop_subscript_collection_int(BPy_PropertyRNA * self, int keynu
return NULL;
}
-static PyObject *prop_subscript_array_int(BPy_PropertyRNA * self, int keynum)
+static PyObject *prop_subscript_array_int(BPy_PropertyRNA *self, int keynum)
{
int len= pyrna_prop_array_length(self);
@@ -897,7 +919,7 @@ static PyObject *prop_subscript_array_int(BPy_PropertyRNA * self, int keynum)
return NULL;
}
-static PyObject *prop_subscript_collection_str(BPy_PropertyRNA * self, char *keyname)
+static PyObject *prop_subscript_collection_str(BPy_PropertyRNA *self, char *keyname)
{
PointerRNA newptr;
if(RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
@@ -906,9 +928,9 @@ static PyObject *prop_subscript_collection_str(BPy_PropertyRNA * self, char *key
PyErr_Format(PyExc_KeyError, "key \"%.200s\" not found", keyname);
return NULL;
}
-/* static PyObject *prop_subscript_array_str(BPy_PropertyRNA * self, char *keyname) */
+/* static PyObject *prop_subscript_array_str(BPy_PropertyRNA *self, char *keyname) */
-static PyObject *prop_subscript_collection_slice(BPy_PropertyRNA * self, int start, int stop)
+static PyObject *prop_subscript_collection_slice(BPy_PropertyRNA *self, int start, int stop)
{
PointerRNA newptr;
PyObject *list = PyList_New(stop - start);
@@ -930,7 +952,7 @@ static PyObject *prop_subscript_collection_slice(BPy_PropertyRNA * self, int sta
return list;
}
-static PyObject *prop_subscript_array_slice(BPy_PropertyRNA * self, int start, int stop)
+static PyObject *prop_subscript_array_slice(BPy_PropertyRNA *self, int start, int stop)
{
PyObject *list = PyList_New(stop - start);
int count;
@@ -943,7 +965,7 @@ static PyObject *prop_subscript_array_slice(BPy_PropertyRNA * self, int start, i
return list;
}
-static PyObject *prop_subscript_collection(BPy_PropertyRNA * self, PyObject *key)
+static PyObject *prop_subscript_collection(BPy_PropertyRNA *self, PyObject *key)
{
if (PyUnicode_Check(key)) {
return prop_subscript_collection_str(self, _PyUnicode_AsString(key));
@@ -979,7 +1001,7 @@ static PyObject *prop_subscript_collection(BPy_PropertyRNA * self, PyObject *key
}
}
-static PyObject *prop_subscript_array(BPy_PropertyRNA * self, PyObject *key)
+static PyObject *prop_subscript_array(BPy_PropertyRNA *self, PyObject *key)
{
/*if (PyUnicode_Check(key)) {
return prop_subscript_array_str(self, _PyUnicode_AsString(key));
@@ -1014,7 +1036,7 @@ static PyObject *prop_subscript_array(BPy_PropertyRNA * self, PyObject *key)
}
}
-static PyObject *pyrna_prop_subscript( BPy_PropertyRNA * self, PyObject *key )
+static PyObject *pyrna_prop_subscript( BPy_PropertyRNA *self, PyObject *key )
{
if (RNA_property_type(self->prop) == PROP_COLLECTION) {
return prop_subscript_collection(self, key);
@@ -1026,7 +1048,7 @@ static PyObject *pyrna_prop_subscript( BPy_PropertyRNA * self, PyObject *key )
return NULL;
}
-static int prop_subscript_ass_array_slice(BPy_PropertyRNA * self, int begin, int end, PyObject *value)
+static int prop_subscript_ass_array_slice(BPy_PropertyRNA *self, int begin, int end, PyObject *value)
{
int count;
@@ -1043,7 +1065,7 @@ static int prop_subscript_ass_array_slice(BPy_PropertyRNA * self, int begin, int
return 0;
}
-static int prop_subscript_ass_array_int(BPy_PropertyRNA * self, int keynum, PyObject *value)
+static int prop_subscript_ass_array_int(BPy_PropertyRNA *self, int keynum, PyObject *value)
{
int len= pyrna_prop_array_length(self);
@@ -1056,7 +1078,7 @@ static int prop_subscript_ass_array_int(BPy_PropertyRNA * self, int keynum, PyOb
return -1;
}
-static int pyrna_prop_ass_subscript( BPy_PropertyRNA * self, PyObject *key, PyObject *value )
+static int pyrna_prop_ass_subscript( BPy_PropertyRNA *self, PyObject *key, PyObject *value )
{
/* char *keyname = NULL; */ /* not supported yet */
@@ -1109,29 +1131,52 @@ static PyMappingMethods pyrna_prop_as_mapping = {
( objobjargproc ) pyrna_prop_ass_subscript, /* mp_ass_subscript */
};
-static int pyrna_prop_contains(BPy_PropertyRNA * self, PyObject *value)
+static int pyrna_prop_contains(BPy_PropertyRNA *self, PyObject *value)
{
PointerRNA newptr; /* not used, just so RNA_property_collection_lookup_string runs */
char *keyname = _PyUnicode_AsString(value);
-
+
if(keyname==NULL) {
PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, key must be a string type");
return -1;
}
-
+
if (RNA_property_type(self->prop) != PROP_COLLECTION) {
PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, is only valid for collection types");
return -1;
}
-
-
+
+
if (RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
return 1;
-
+
return 0;
}
-static PyObject *pyrna_prop_item(BPy_PropertyRNA * self, Py_ssize_t index)
+static int pyrna_struct_contains(BPy_StructRNA *self, PyObject *value)
+{
+ IDProperty *group;
+ char *name = _PyUnicode_AsString(value);
+
+ if (!name) {
+ PyErr_SetString( PyExc_TypeError, "expected a string");
+ return -1;
+ }
+
+ if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
+ return -1;
+ }
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+
+ if(!group)
+ return 0;
+
+ return IDP_GetPropertyFromGroup(group, name) ? 1:0;
+}
+
+static PyObject *pyrna_prop_item(BPy_PropertyRNA *self, Py_ssize_t index)
{
/* reuse subscript functions */
if (RNA_property_type(self->prop) == PROP_COLLECTION) {
@@ -1155,8 +1200,121 @@ static PySequenceMethods pyrna_prop_as_sequence = {
(objobjproc)pyrna_prop_contains, /* sq_contains */
};
+static PySequenceMethods pyrna_struct_as_sequence = {
+ NULL, /* Cant set the len otherwise it can evaluate as false */
+ NULL, /* sq_concat */
+ NULL, /* sq_repeat */
+ NULL, /* sq_item */ /* Only set this so PySequence_Check() returns True */
+ NULL, /* sq_slice */
+ NULL, /* sq_ass_item */
+ NULL, /* sq_ass_slice */
+ (objobjproc)pyrna_struct_contains, /* sq_contains */
+};
-static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA * self, PyObject *args)
+static PyObject *pyrna_struct_subscript( BPy_StructRNA *self, PyObject *key )
+{
+ /* mostly copied from BPy_IDGroup_Map_GetItem */
+ IDProperty *group, *idprop;
+ char *name= _PyUnicode_AsString(key);
+
+ if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties");
+ return NULL;
+ }
+
+ if(name==NULL) {
+ PyErr_SetString( PyExc_TypeError, "only strings are allowed as keys of ID properties");
+ return NULL;
+ }
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+
+ if(group==NULL) {
+ PyErr_Format( PyExc_KeyError, "key \"%s\" not found", name);
+ return NULL;
+ }
+
+ idprop= IDP_GetPropertyFromGroup(group, name);
+
+ if(idprop==NULL) {
+ PyErr_Format( PyExc_KeyError, "key \"%s\" not found", name);
+ return NULL;
+ }
+
+ return BPy_IDGroup_WrapData(self->ptr.id.data, idprop);
+}
+
+static int pyrna_struct_ass_subscript( BPy_StructRNA *self, PyObject *key, PyObject *value )
+{
+ IDProperty *group= RNA_struct_idproperties(&self->ptr, 1);
+
+ if(group==NULL) {
+ PyErr_SetString(PyExc_TypeError, "id properties not supported for this type");
+ return -1;
+ }
+
+ return BPy_Wrap_SetMapItem(group, key, value);
+}
+
+static PyMappingMethods pyrna_struct_as_mapping = {
+ ( lenfunc ) NULL, /* mp_length */
+ ( binaryfunc ) pyrna_struct_subscript, /* mp_subscript */
+ ( objobjargproc ) pyrna_struct_ass_subscript, /* mp_ass_subscript */
+};
+
+static PyObject *pyrna_struct_keys(BPy_PropertyRNA *self)
+{
+ IDProperty *group;
+
+ if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
+ return NULL;
+ }
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+
+ if(group==NULL)
+ return PyList_New(0);
+
+ return BPy_Wrap_GetKeys(group);
+}
+
+static PyObject *pyrna_struct_items(BPy_PropertyRNA *self)
+{
+ IDProperty *group;
+
+ if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
+ return NULL;
+ }
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+
+ if(group==NULL)
+ return PyList_New(0);
+
+ return BPy_Wrap_GetItems(self->ptr.id.data, group);
+}
+
+
+static PyObject *pyrna_struct_values(BPy_PropertyRNA *self)
+{
+ IDProperty *group;
+
+ if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
+ return NULL;
+ }
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+
+ if(group==NULL)
+ return PyList_New(0);
+
+ return BPy_Wrap_GetValues(self->ptr.id.data, group);
+}
+
+static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA *self, PyObject *args)
{
char *path, *path_full;
int index= -1; /* default to all */
@@ -1198,12 +1356,12 @@ static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA * self, PyObject *ar
}
-static PyObject *pyrna_struct_driver_add(BPy_StructRNA * self, PyObject *args)
+static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args)
{
char *path, *path_full;
int index= -1; /* default to all */
PropertyRNA *prop;
- PyObject *result;
+ PyObject *ret;
if (!PyArg_ParseTuple(args, "s|i:driver_add", &path, &index))
return NULL;
@@ -1232,14 +1390,41 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA * self, PyObject *args)
return NULL;
}
- result= PyBool_FromLong( ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON));
+ if(ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)) {
+ ID *id= self->ptr.id.data;
+ AnimData *adt= BKE_animdata_from_id(id);
+ FCurve *fcu;
+
+ PointerRNA tptr;
+ PyObject *item;
+
+ if(index == -1) { /* all, use a list */
+ int i= 0;
+ ret= PyList_New(0);
+ while((fcu= list_find_fcurve(&adt->drivers, path_full, i++))) {
+ RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr);
+ item= pyrna_struct_CreatePyObject(&tptr);
+ PyList_Append(ret, item);
+ Py_DECREF(item);
+ }
+ }
+ else {
+ fcu= list_find_fcurve(&adt->drivers, path_full, index);
+ RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr);
+ ret= pyrna_struct_CreatePyObject(&tptr);
+ }
+ }
+ else {
+ ret= Py_None;
+ Py_INCREF(ret);
+ }
+
MEM_freeN(path_full);
- return result;
+ return ret;
}
-
-static PyObject *pyrna_struct_is_property_set(BPy_StructRNA * self, PyObject *args)
+static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args)
{
char *name;
@@ -1249,7 +1434,7 @@ static PyObject *pyrna_struct_is_property_set(BPy_StructRNA * self, PyObject *ar
return PyBool_FromLong(RNA_property_is_set(&self->ptr, name));
}
-static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA * self, PyObject *args)
+static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA *self, PyObject *args)
{
PropertyRNA *prop;
char *name;
@@ -1264,76 +1449,161 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA * self, PyObject
return PyBool_FromLong(hidden);
}
-static PyObject *pyrna_struct_dir(BPy_StructRNA * self)
+static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *value)
+{
+ char *path= _PyUnicode_AsString(value);
+ PointerRNA r_ptr;
+ PropertyRNA *r_prop;
+
+ if(path==NULL) {
+ PyErr_SetString( PyExc_TypeError, "items() is only valid for collection types" );
+ return NULL;
+ }
+
+ if (RNA_path_resolve(&self->ptr, path, &r_ptr, &r_prop))
+ return pyrna_prop_CreatePyObject(&r_ptr, r_prop);
+
+ Py_RETURN_NONE;
+}
+
+static PyObject *pyrna_struct_path_to_id(BPy_StructRNA *self, PyObject *args)
+{
+ char *name= NULL;
+ char *path;
+ PropertyRNA *prop;
+ PyObject *ret;
+
+ if (!PyArg_ParseTuple(args, "|s:path_to_id", &name))
+ return NULL;
+
+ if(name) {
+ prop= RNA_struct_find_property(&self->ptr, name);
+ if(prop==NULL) {
+ PyErr_Format(PyExc_TypeError, "path_to_id(\"%.200s\") not found", name);
+ return NULL;
+ }
+
+ path= RNA_path_from_ID_to_property(&self->ptr, prop);
+ }
+ else {
+ path= RNA_path_from_ID_to_struct(&self->ptr);
+ }
+
+ if(path==NULL) {
+ if(name) PyErr_Format(PyExc_TypeError, "%.200s.path_to_id(\"%s\") found but does not support path creation", RNA_struct_identifier(self->ptr.type), name);
+ else PyErr_Format(PyExc_TypeError, "%.200s.path_to_id() does not support path creation for this type", name);
+ return NULL;
+ }
+
+ ret= PyUnicode_FromString(path);
+ MEM_freeN(path);
+
+ return ret;
+}
+
+static PyObject *pyrna_prop_path_to_id(BPy_PropertyRNA *self)
+{
+ char *path;
+ PropertyRNA *prop = self->prop;
+ PyObject *ret;
+
+ path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
+
+ if(path==NULL) {
+ PyErr_Format(PyExc_TypeError, "%.200s.%.200s.path_to_id() does not support path creation for this type", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(prop));
+ return NULL;
+ }
+
+ ret= PyUnicode_FromString(path);
+ MEM_freeN(path);
+
+ return ret;
+}
+
+static void pyrna_dir_members_py(PyObject *list, PyObject *self)
+{
+ PyObject *dict;
+ PyObject **dict_ptr;
+ PyObject *list_tmp;
+
+ dict_ptr= _PyObject_GetDictPtr((PyObject *)self);
+
+ if(dict_ptr && (dict=*dict_ptr)) {
+ list_tmp = PyDict_Keys(dict);
+ PyList_SetSlice(list, INT_MAX, INT_MAX, list_tmp);
+ Py_DECREF(list_tmp);
+ }
+
+ dict= ((PyTypeObject *)Py_TYPE(self))->tp_dict;
+ if(dict) {
+ list_tmp = PyDict_Keys(dict);
+ PyList_SetSlice(list, INT_MAX, INT_MAX, list_tmp);
+ Py_DECREF(list_tmp);
+ }
+}
+
+static void pyrna_dir_members_rna(PyObject *list, PointerRNA *ptr)
{
- PyObject *ret, *dict;
PyObject *pystring;
-
+ const char *idname;
+
/* for looping over attrs and funcs */
+ PointerRNA tptr;
PropertyRNA *iterprop;
-
- /* Include this incase this instance is a subtype of a python class
- * In these instances we may want to return a function or variable provided by the subtype
- * */
- if (BPy_StructRNA_CheckExact(self)) {
- ret = PyList_New(0);
- } else {
- pystring = PyUnicode_FromString("__dict__");
- dict = PyObject_GenericGetAttr((PyObject *)self, pystring);
- Py_DECREF(pystring);
+ {
+ RNA_pointer_create(NULL, &RNA_Struct, ptr->type, &tptr);
+ iterprop= RNA_struct_find_property(&tptr, "functions");
- if (dict==NULL) {
- PyErr_Clear();
- ret = PyList_New(0);
- }
- else {
- ret = PyDict_Keys(dict);
- Py_DECREF(dict);
+ RNA_PROP_BEGIN(&tptr, itemptr, iterprop) {
+ idname= RNA_function_identifier(itemptr.data);
+
+ pystring = PyUnicode_FromString(idname);
+ PyList_Append(list, pystring);
+ Py_DECREF(pystring);
}
+ RNA_PROP_END;
}
-
- /* Collect RNA items*/
+
{
/*
* Collect RNA attributes
*/
char name[256], *nameptr;
- iterprop= RNA_struct_iterator_property(self->ptr.type);
+ iterprop= RNA_struct_iterator_property(ptr->type);
- RNA_PROP_BEGIN(&self->ptr, itemptr, iterprop) {
+ RNA_PROP_BEGIN(ptr, itemptr, iterprop) {
nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name));
if(nameptr) {
pystring = PyUnicode_FromString(nameptr);
- PyList_Append(ret, pystring);
+ PyList_Append(list, pystring);
Py_DECREF(pystring);
-
+
if(name != nameptr)
MEM_freeN(nameptr);
}
}
RNA_PROP_END;
}
-
-
- {
- /*
- * Collect RNA function items
- */
- PointerRNA tptr;
+}
- RNA_pointer_create(NULL, &RNA_Struct, self->ptr.type, &tptr);
- iterprop= RNA_struct_find_property(&tptr, "functions");
- RNA_PROP_BEGIN(&tptr, itemptr, iterprop) {
- pystring = PyUnicode_FromString(RNA_function_identifier(itemptr.data));
- PyList_Append(ret, pystring);
- Py_DECREF(pystring);
- }
- RNA_PROP_END;
- }
+static PyObject *pyrna_struct_dir(BPy_StructRNA *self)
+{
+ PyObject *ret;
+ PyObject *pystring;
+
+ /* Include this incase this instance is a subtype of a python class
+ * In these instances we may want to return a function or variable provided by the subtype
+ * */
+ ret = PyList_New(0);
+
+ if (!BPy_StructRNA_CheckExact(self))
+ pyrna_dir_members_py(ret, (PyObject *)self);
+
+ pyrna_dir_members_rna(ret, &self->ptr);
if(self->ptr.type == &RNA_Context) {
ListBase lb = CTX_data_dir_get(self->ptr.data);
@@ -1349,7 +1619,7 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA * self)
}
/* Hard coded names */
- {
+ if(self->ptr.id.data) {
pystring = PyUnicode_FromString("id_data");
PyList_Append(ret, pystring);
Py_DECREF(pystring);
@@ -1358,45 +1628,65 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA * self)
return ret;
}
-
//---------------getattr--------------------------------------------
-static PyObject *pyrna_struct_getattro( BPy_StructRNA * self, PyObject *pyname )
+static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname )
{
char *name = _PyUnicode_AsString(pyname);
PyObject *ret;
PropertyRNA *prop;
FunctionRNA *func;
- if ((prop = RNA_struct_find_property(&self->ptr, name))) {
+ if(name[0]=='_') { // rna can't start with a "_", so for __dict__ and similar we can skip using rna lookups
+ /* annoying exception, maybe we need to have different types for this... */
+ if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idproperties_check(&self->ptr)) {
+ PyErr_SetString(PyExc_AttributeError, "StructRNA - no __getitem__ support for this type");
+ ret = NULL;
+ }
+ else {
+ ret = PyObject_GenericGetAttr((PyObject *)self, pyname);
+ }
+ }
+ else if ((prop = RNA_struct_find_property(&self->ptr, name))) {
ret = pyrna_prop_to_py(&self->ptr, prop);
}
else if ((func = RNA_struct_find_function(&self->ptr, name))) {
- ret = pyrna_func_to_py(self, func);
+ ret = pyrna_func_to_py((BPy_DummyPointerRNA *)self, func);
}
else if (self->ptr.type == &RNA_Context) {
PointerRNA newptr;
ListBase newlb;
+ int done;
- CTX_data_get(self->ptr.data, name, &newptr, &newlb);
+ done= CTX_data_get(self->ptr.data, name, &newptr, &newlb);
- if (newptr.data) {
- ret = pyrna_struct_CreatePyObject(&newptr);
- }
- else if (newlb.first) {
- CollectionPointerLink *link;
- PyObject *linkptr;
+ if(done==1) { /* found */
+ if (newptr.data) {
+ ret = pyrna_struct_CreatePyObject(&newptr);
+ }
+ else if (newlb.first) {
+ CollectionPointerLink *link;
+ PyObject *linkptr;
- ret = PyList_New(0);
+ ret = PyList_New(0);
- for(link=newlb.first; link; link=link->next) {
- linkptr= pyrna_struct_CreatePyObject(&link->ptr);
- PyList_Append(ret, linkptr);
- Py_DECREF(linkptr);
+ for(link=newlb.first; link; link=link->next) {
+ linkptr= pyrna_struct_CreatePyObject(&link->ptr);
+ PyList_Append(ret, linkptr);
+ Py_DECREF(linkptr);
+ }
+ }
+ else {
+ ret = Py_None;
+ Py_INCREF(ret);
}
}
- else {
- ret = Py_None;
- Py_INCREF(ret);
+ else if (done==-1) { /* found but not set */
+ ret = Py_None;
+ Py_INCREF(ret);
+ }
+ else { /* not found in the context */
+ /* lookup the subclass. raise an error if its not found */
+ ret = PyObject_GenericGetAttr((PyObject *)self, pyname);
}
BLI_freelistN(&newlb);
@@ -1405,10 +1695,11 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA * self, PyObject *pyname )
if(self->ptr.id.data) {
PointerRNA id_ptr;
RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr);
- return pyrna_struct_CreatePyObject(&id_ptr);
+ ret = pyrna_struct_CreatePyObject(&id_ptr);
}
else {
- Py_RETURN_NONE;
+ ret = Py_None;
+ Py_INCREF(ret);
}
}
else {
@@ -1429,8 +1720,19 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA * self, PyObject *pyname )
return ret;
}
+#if 0
+static int pyrna_struct_pydict_contains(PyObject *self, PyObject *pyname)
+{
+ PyObject *dict= *(_PyObject_GetDictPtr((PyObject *)self));
+ if (dict==NULL) /* unlikely */
+ return 0;
+
+ return PyDict_Contains(dict, pyname);
+}
+#endif
+
//--------------- setattr-------------------------------------------
-static int pyrna_struct_setattro( BPy_StructRNA * self, PyObject *pyname, PyObject * value )
+static int pyrna_struct_setattro( BPy_StructRNA *self, PyObject *pyname, PyObject *value )
{
char *name = _PyUnicode_AsString(pyname);
PropertyRNA *prop = RNA_struct_find_property(&self->ptr, name);
@@ -1438,11 +1740,13 @@ static int pyrna_struct_setattro( BPy_StructRNA * self, PyObject *pyname, PyObje
if (prop==NULL) {
// XXX - This currently allows anything to be assigned to an rna prop, need to see how this should be used
// but for now it makes porting scripts confusing since it fails silently.
-#if 0
- if (!BPy_StructRNA_CheckExact(self) && PyObject_GenericSetAttr((PyObject *)self, pyname, value) >= 0) {
+ // edit: allowing this for setting classes internal attributes.
+ // edit: allow this for any attribute that alredy exists as a python attr
+ if ( (name[0]=='_' /* || pyrna_struct_pydict_contains(self, pyname) */ ) &&
+ !BPy_StructRNA_CheckExact(self) &&
+ PyObject_GenericSetAttr((PyObject *)self, pyname, value) >= 0) {
return 0;
} else
-#endif
{
PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name);
return -1;
@@ -1455,57 +1759,127 @@ static int pyrna_struct_setattro( BPy_StructRNA * self, PyObject *pyname, PyObje
}
/* pyrna_py_to_prop sets its own exceptions */
- return pyrna_py_to_prop(&self->ptr, prop, NULL, value, "StructRNA - Attribute (setattr):");
+ return pyrna_py_to_prop(&self->ptr, prop, NULL, value, "StructRNA - item.attr = val:");
+}
+
+static PyObject *pyrna_prop_dir(BPy_PropertyRNA *self)
+{
+ PyObject *ret;
+ PointerRNA r_ptr;
+
+ /* Include this incase this instance is a subtype of a python class
+ * In these instances we may want to return a function or variable provided by the subtype
+ * */
+ ret = PyList_New(0);
+
+ if (!BPy_PropertyRNA_CheckExact(self))
+ pyrna_dir_members_py(ret, (PyObject *)self);
+
+ if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr))
+ pyrna_dir_members_rna(ret, &r_ptr);
+
+ return ret;
}
-static PyObject *pyrna_prop_getattro( BPy_PropertyRNA * self, PyObject *pyname )
+
+static PyObject *pyrna_prop_getattro( BPy_PropertyRNA *self, PyObject *pyname )
{
char *name = _PyUnicode_AsString(pyname);
- if(strcmp(name, "active")==0) {
- PropertyRNA *prop_act;
+ if(name[0] != '_') {
+ if (RNA_property_type(self->prop) == PROP_COLLECTION) {
+ PyObject *ret;
+ PropertyRNA *prop;
+ FunctionRNA *func;
- if (RNA_property_type(self->prop) != PROP_COLLECTION) {
- PyErr_SetString( PyExc_TypeError, "this BPy_PropertyRNA object is not a collection");
- return NULL;
- }
+ PointerRNA r_ptr;
+ if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
+ if ((prop = RNA_struct_find_property(&r_ptr, name))) {
+ ret = pyrna_prop_to_py(&r_ptr, prop);
- prop_act= RNA_property_collection_active(self->prop);
- if (prop_act==NULL) {
- PyErr_SetString( PyExc_TypeError, "collection has no active");
- return NULL;
- }
+ return ret;
+ }
+ else if ((func = RNA_struct_find_function(&r_ptr, name))) {
+ PyObject *self_collection= pyrna_struct_CreatePyObject(&r_ptr);
+ ret = pyrna_func_to_py((BPy_DummyPointerRNA *)self_collection, func);
+ Py_DECREF(self_collection);
- return pyrna_prop_to_py(&self->ptr, prop_act);
+ return ret;
+ }
+ }
+ }
}
+ /* The error raised here will be displayed */
return PyObject_GenericGetAttr((PyObject *)self, pyname);
}
//--------------- setattr-------------------------------------------
-static int pyrna_prop_setattro( BPy_PropertyRNA * self, PyObject *pyname, PyObject * value )
+static int pyrna_prop_setattro( BPy_PropertyRNA *self, PyObject *pyname, PyObject *value )
{
char *name = _PyUnicode_AsString(pyname);
- if(strcmp(name, "active")==0) {
- PropertyRNA *prop_act;
+ PropertyRNA *prop;
- if (RNA_property_type(self->prop) != PROP_COLLECTION) {
- PyErr_SetString( PyExc_TypeError, "this BPy_PropertyRNA object is not a collection");
- return -1;
+ if (RNA_property_type(self->prop) == PROP_COLLECTION) {
+ PointerRNA r_ptr;
+ if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
+ if ((prop = RNA_struct_find_property(&r_ptr, name))) {
+ /* pyrna_py_to_prop sets its own exceptions */
+ return pyrna_py_to_prop(&r_ptr, prop, NULL, value, "BPy_PropertyRNA - Attribute (setattr):");
+ }
}
+ }
- prop_act= RNA_property_collection_active(self->prop);
- if (prop_act==NULL) {
- PyErr_SetString( PyExc_TypeError, "collection has no active");
- return -1;
- }
+ PyErr_Format( PyExc_AttributeError, "BPy_PropertyRNA - Attribute \"%.200s\" not found", name);
+ return -1;
+}
+
+/* odd case, we need to be able return a python method from a tp_getset */
+static PyObject *pyrna_prop_add(BPy_PropertyRNA *self)
+{
+ PointerRNA r_ptr;
+
+ RNA_property_collection_add(&self->ptr, self->prop, &r_ptr);
+ if(!r_ptr.data) {
+ PyErr_SetString( PyExc_TypeError, "add() not supported for this collection");
+ return NULL;
+ }
+ else {
+ return pyrna_struct_CreatePyObject(&r_ptr);
+ }
+}
+
+static PyObject *pyrna_prop_remove(BPy_PropertyRNA *self, PyObject *value)
+{
+ PyObject *ret;
+ int key= PyLong_AsSsize_t(value);
- return pyrna_py_to_prop(&self->ptr, prop_act, NULL, value, "StructRNA - Attribute (setattr):");
+ if (key==-1 && PyErr_Occurred()) {
+ PyErr_SetString( PyExc_TypeError, "remove() expected one int argument");
+ return NULL;
}
- return PyObject_GenericSetAttr((PyObject *)self, pyname, value);
+ if(!RNA_property_collection_remove(&self->ptr, self->prop, key)) {
+ PyErr_SetString( PyExc_TypeError, "remove() not supported for this collection");
+ return NULL;
+ }
+
+ ret = Py_None;
+ Py_INCREF(ret);
+
+ return ret;
}
+/*****************************************************************************/
+/* Python attributes get/set structure: */
+/*****************************************************************************/
+#if 0
+static PyGetSetDef pyrna_prop_getseters[] = {
+ {"active", (getter)pyrna_prop_get_active, (setter)pyrna_prop_set_active, "", NULL},
+ {NULL,NULL,NULL,NULL,NULL} /* Sentinel */
+};
+#endif
+
static PyObject *pyrna_prop_keys(BPy_PropertyRNA *self)
{
PyObject *ret;
@@ -1601,55 +1975,49 @@ static PyObject *pyrna_prop_values(BPy_PropertyRNA *self)
return ret;
}
-static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args)
+static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args)
{
- PointerRNA newptr;
-
+ IDProperty *group, *idprop;
+
char *key;
PyObject* def = Py_None;
if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
return NULL;
-
- if(RNA_property_collection_lookup_string(&self->ptr, self->prop, key, &newptr))
- return pyrna_struct_CreatePyObject(&newptr);
-
- Py_INCREF(def);
- return def;
-}
-
-static PyObject *pyrna_prop_add(BPy_PropertyRNA *self, PyObject *args)
-{
- PointerRNA newptr;
-
- RNA_property_collection_add(&self->ptr, self->prop, &newptr);
- if(!newptr.data) {
- PyErr_SetString( PyExc_TypeError, "add() not supported for this collection");
+ /* mostly copied from BPy_IDGroup_Map_GetItem */
+ if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties");
return NULL;
}
- else {
- return pyrna_struct_CreatePyObject(&newptr);
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+ if(group) {
+ idprop= IDP_GetPropertyFromGroup(group, key);
+
+ if(idprop)
+ return BPy_IDGroup_WrapData(self->ptr.id.data, idprop);
}
+
+ Py_INCREF(def);
+ return def;
}
-static PyObject *pyrna_prop_remove(BPy_PropertyRNA *self, PyObject *args)
+static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args)
{
- PyObject *ret;
- int key= 0;
-
- if (!PyArg_ParseTuple(args, "i:remove", &key))
- return NULL;
+ PointerRNA newptr;
+
+ char *key;
+ PyObject* def = Py_None;
- if(!RNA_property_collection_remove(&self->ptr, self->prop, key)) {
- PyErr_SetString( PyExc_TypeError, "remove() not supported for this collection");
+ if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
return NULL;
- }
-
- ret = Py_None;
- Py_INCREF(ret);
-
- return ret;
+
+ if(RNA_property_collection_lookup_string(&self->ptr, self->prop, key, &newptr))
+ return pyrna_struct_CreatePyObject(&newptr);
+
+ Py_INCREF(def);
+ return def;
}
static void foreach_attr_type( BPy_PropertyRNA *self, char *attr,
@@ -1745,7 +2113,7 @@ static int foreach_compat_buffer(RawPropertyType raw_type, int attr_signed, cons
static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
{
PyObject *item = NULL;
- int i=0, ok, buffer_is_compat;
+ int i=0, ok=0, buffer_is_compat;
void *array= NULL;
/* get/set both take the same args currently */
@@ -1922,12 +2290,20 @@ PyObject *pyrna_prop_iter(BPy_PropertyRNA *self)
static struct PyMethodDef pyrna_struct_methods[] = {
+ /* only for PointerRNA's with ID'props */
+ {"keys", (PyCFunction)pyrna_struct_keys, METH_NOARGS, NULL},
+ {"values", (PyCFunction)pyrna_struct_values, METH_NOARGS, NULL},
+ {"items", (PyCFunction)pyrna_struct_items, METH_NOARGS, NULL},
+
+ {"get", (PyCFunction)pyrna_struct_get, METH_VARARGS, NULL},
+
/* maybe this become and ID function */
{"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL},
{"driver_add", (PyCFunction)pyrna_struct_driver_add, METH_VARARGS, NULL},
{"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, NULL},
{"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, NULL},
-
+ {"path_resolve", (PyCFunction)pyrna_struct_path_resolve, METH_O, NULL},
+ {"path_to_id", (PyCFunction)pyrna_struct_path_to_id, METH_VARARGS, NULL},
{"__dir__", (PyCFunction)pyrna_struct_dir, METH_NOARGS, NULL},
{NULL, NULL, 0, NULL}
};
@@ -1939,12 +2315,17 @@ static struct PyMethodDef pyrna_prop_methods[] = {
{"get", (PyCFunction)pyrna_prop_get, METH_VARARGS, NULL},
- {"add", (PyCFunction)pyrna_prop_add, METH_VARARGS, NULL},
- {"remove", (PyCFunction)pyrna_prop_remove, METH_VARARGS, NULL},
+ /* moved into a getset */
+ {"add", (PyCFunction)pyrna_prop_add, METH_NOARGS, NULL},
+ {"remove", (PyCFunction)pyrna_prop_remove, METH_O, NULL},
+
+ /* almost the same as the srna function */
+ {"path_to_id", (PyCFunction)pyrna_prop_path_to_id, METH_NOARGS, NULL},
/* array accessor function */
{"foreach_get", (PyCFunction)pyrna_prop_foreach_get, METH_VARARGS, NULL},
{"foreach_set", (PyCFunction)pyrna_prop_foreach_set, METH_VARARGS, NULL},
+ {"__dir__", (PyCFunction)pyrna_prop_dir, METH_NOARGS, NULL},
{NULL, NULL, 0, NULL}
};
@@ -2070,8 +2451,11 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data)
if(RNA_struct_is_ID(type)) {
RNA_id_pointer_create(*(void**)data, &newptr);
} else {
- /* XXX this is missing the ID part! */
- RNA_pointer_create(NULL, type, *(void**)data, &newptr);
+ /* note: this is taken from the function's ID pointer
+ * and will break if a function returns a pointer from
+ * another ID block, watch this! - it should at least be
+ * easy to debug since they are all ID's */
+ RNA_pointer_create(ptr->id.data, type, *(void**)data, &newptr);
}
}
@@ -2109,9 +2493,10 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data)
return ret;
}
-static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw)
+static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
{
- PointerRNA *self_ptr= &(((BPy_StructRNA *)PyTuple_GET_ITEM(self, 0))->ptr);
+ /* Note, both BPy_StructRNA and BPy_PropertyRNA can be used here */
+ PointerRNA *self_ptr= &(((BPy_DummyPointerRNA *)PyTuple_GET_ITEM(self, 0))->ptr);
FunctionRNA *self_func= PyCObject_AsVoidPtr(PyTuple_GET_ITEM(self, 1));
PointerRNA funcptr;
@@ -2134,8 +2519,10 @@ static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw)
return NULL;
}
- /* setup */
- RNA_pointer_create(NULL, &RNA_Function, self_func, &funcptr);
+ /* include the ID pointer for pyrna_param_to_py() so we can include the
+ * ID pointer on return values, this only works when returned values have
+ * the same ID as the functions. */
+ RNA_pointer_create(self_ptr->id.data, &RNA_Function, self_func, &funcptr);
pret= RNA_function_return(self_func);
args_len= PyTuple_GET_SIZE(args);
@@ -2328,8 +2715,8 @@ PyTypeObject pyrna_struct_Type = {
/* Method suites for standard classes */
NULL, /* PyNumberMethods *tp_as_number; */
- NULL, /* PySequenceMethods *tp_as_sequence; */
- NULL, /* PyMappingMethods *tp_as_mapping; */
+ &pyrna_struct_as_sequence, /* PySequenceMethods *tp_as_sequence; */
+ &pyrna_struct_as_mapping, /* PyMappingMethods *tp_as_mapping; */
/* More standard operations (here for binary compatibility) */
@@ -2449,7 +2836,7 @@ PyTypeObject pyrna_prop_Type = {
/*** Attribute descriptor and subclassing stuff ***/
pyrna_prop_methods, /* struct PyMethodDef *tp_methods; */
NULL, /* struct PyMemberDef *tp_members; */
- NULL, /* struct PyGetSetDef *tp_getset; */
+ NULL /*pyrna_prop_getseters*/, /* struct PyGetSetDef *tp_getset; */
NULL, /* struct _typeobject *tp_base; */
NULL, /* PyObject *tp_dict; */
NULL, /* descrgetfunc tp_descr_get; */
@@ -2790,7 +3177,7 @@ PyObject *BPY_rna_doc( void )
/* pyrna_basetype_* - BPy_BaseTypeRNA is just a BPy_PropertyRNA struct with a differnt type
* the self->ptr and self->prop are always set to the "structs" collection */
//---------------getattr--------------------------------------------
-static PyObject *pyrna_basetype_getattro( BPy_BaseTypeRNA * self, PyObject *pyname )
+static PyObject *pyrna_basetype_getattro( BPy_BaseTypeRNA *self, PyObject *pyname )
{
PointerRNA newptr;
PyObject *ret;
@@ -2976,12 +3363,8 @@ static PyObject *bpy_prop_deferred_return(void *func, PyObject *kw)
PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "name", "description", "default", NULL};
- char *id=NULL, *name="", *description="";
- int def=0;
- PropertyRNA *prop;
StructRNA *srna;
-
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -2992,11 +3375,16 @@ PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
+ static char *kwlist[] = {"attr", "name", "description", "default", "hidden", NULL};
+ char *id=NULL, *name="", *description="";
+ int def=0, hidden=0;
+ PropertyRNA *prop;
- if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssi:BoolProperty", kwlist, &id, &name, &description, &def))
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssii:BoolProperty", kwlist, &id, &name, &description, &def, &hidden))
return NULL;
prop= RNA_def_boolean(srna, id, def, name, description);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
Py_RETURN_NONE;
}
@@ -3007,12 +3395,8 @@ PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw)
PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "name", "description", "min", "max", "soft_min", "soft_max", "default", NULL};
- char *id=NULL, *name="", *description="";
- int min=INT_MIN, max=INT_MAX, soft_min=INT_MIN, soft_max=INT_MAX, def=0;
- PropertyRNA *prop;
StructRNA *srna;
-
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -3023,11 +3407,18 @@ PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
+ static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "hidden", NULL};
+ char *id=NULL, *name="", *description="";
+ int min=INT_MIN, max=INT_MAX, soft_min=INT_MIN, soft_max=INT_MAX, step=1, def=0;
+ int hidden=0;
+ PropertyRNA *prop;
- if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssiiiii:IntProperty", kwlist, &id, &name, &description, &min, &max, &soft_min, &soft_max, &def))
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssiiiiiii:IntProperty", kwlist, &id, &name, &description, &def, &min, &max, &soft_min, &soft_max, &step, &hidden))
return NULL;
prop= RNA_def_int(srna, id, def, min, max, name, description, soft_min, soft_max);
+ RNA_def_property_ui_range(prop, min, max, step, 0);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
Py_RETURN_NONE;
}
@@ -3038,12 +3429,8 @@ PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw)
PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "name", "description", "min", "max", "soft_min", "soft_max", "default", NULL};
- char *id=NULL, *name="", *description="";
- float min=-FLT_MAX, max=FLT_MAX, soft_min=-FLT_MAX, soft_max=FLT_MAX, def=0.0f;
- PropertyRNA *prop;
StructRNA *srna;
-
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -3054,11 +3441,18 @@ PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
+ static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "precision", "hidden", NULL};
+ char *id=NULL, *name="", *description="";
+ float min=-FLT_MAX, max=FLT_MAX, soft_min=-FLT_MAX, soft_max=FLT_MAX, step=3, def=0.0f;
+ int precision= 1, hidden=0;
+ PropertyRNA *prop;
- if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssfffff:FloatProperty", kwlist, &id, &name, &description, &min, &max, &soft_min, &soft_max, &def))
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssffffffii:FloatProperty", kwlist, &id, &name, &description, &def, &min, &max, &soft_min, &soft_max, &step, &precision, &hidden))
return NULL;
prop= RNA_def_float(srna, id, def, min, max, name, description, soft_min, soft_max);
+ RNA_def_property_ui_range(prop, min, max, step, precision);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
Py_RETURN_NONE;
}
@@ -3069,12 +3463,8 @@ PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw)
PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "name", "description", "maxlen", "default", NULL};
- char *id=NULL, *name="", *description="", *def="";
- int maxlen=0;
- PropertyRNA *prop;
StructRNA *srna;
-
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -3085,11 +3475,16 @@ PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
+ static char *kwlist[] = {"attr", "name", "description", "default", "maxlen", "hidden", NULL};
+ char *id=NULL, *name="", *description="", *def="";
+ int maxlen=0, hidden=0;
+ PropertyRNA *prop;
- if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssis:StringProperty", kwlist, &id, &name, &description, &maxlen, &def))
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s|sssii:StringProperty", kwlist, &id, &name, &description, &def, &maxlen, &hidden))
return NULL;
prop= RNA_def_string(srna, id, def, maxlen, name, description);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
Py_RETURN_NONE;
}
@@ -3146,14 +3541,8 @@ static EnumPropertyItem *enum_items_from_py(PyObject *value, const char *def, in
PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "items", "name", "description", "default", NULL};
- char *id=NULL, *name="", *description="", *def="";
- int defvalue=0;
- PyObject *items= Py_None;
- EnumPropertyItem *eitems;
- PropertyRNA *prop;
StructRNA *srna;
-
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -3164,8 +3553,14 @@ PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
-
- if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|sss:EnumProperty", kwlist, &id, &items, &name, &description, &def))
+ static char *kwlist[] = {"attr", "items", "name", "description", "default", "hidden", NULL};
+ char *id=NULL, *name="", *description="", *def="";
+ int defvalue=0, hidden=0;
+ PyObject *items= Py_None;
+ EnumPropertyItem *eitems;
+ PropertyRNA *prop;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|sssi:EnumProperty", kwlist, &id, &items, &name, &description, &def, &hidden))
return NULL;
eitems= enum_items_from_py(items, def, &defvalue);
@@ -3173,6 +3568,7 @@ PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL;
prop= RNA_def_enum(srna, id, eitems, defvalue, name, description);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
MEM_freeN(eitems);
@@ -3203,12 +3599,8 @@ static StructRNA *pointer_type_from_py(PyObject *value)
PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "type", "name", "description", NULL};
- char *id=NULL, *name="", *description="";
- PropertyRNA *prop;
- StructRNA *srna, *ptype;
- PyObject *type= Py_None;
-
+ StructRNA *srna;
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -3219,8 +3611,14 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
-
- if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ss:PointerProperty", kwlist, &id, &type, &name, &description))
+ static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL};
+ char *id=NULL, *name="", *description="";
+ int hidden= 0;
+ PropertyRNA *prop;
+ StructRNA *ptype;
+ PyObject *type= Py_None;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ssi:PointerProperty", kwlist, &id, &type, &name, &description, &hidden))
return NULL;
ptype= pointer_type_from_py(type);
@@ -3228,6 +3626,7 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL;
prop= RNA_def_pointer_runtime(srna, id, ptype, name, description);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
Py_RETURN_NONE;
}
@@ -3239,12 +3638,8 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw)
PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw)
{
- static char *kwlist[] = {"attr", "type", "name", "description", NULL};
- char *id=NULL, *name="", *description="";
- PropertyRNA *prop;
- StructRNA *srna, *ptype;
- PyObject *type= Py_None;
-
+ StructRNA *srna;
+
if (PyTuple_Size(args) > 0) {
PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
return NULL;
@@ -3255,8 +3650,14 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* self's type was compatible but error getting the srna */
}
else if(srna) {
-
- if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ss:CollectionProperty", kwlist, &id, &type, &name, &description))
+ static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL};
+ char *id=NULL, *name="", *description="";
+ int hidden= 0;
+ PropertyRNA *prop;
+ StructRNA *ptype;
+ PyObject *type= Py_None;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ssi:CollectionProperty", kwlist, &id, &type, &name, &description, &hidden))
return NULL;
ptype= pointer_type_from_py(type);
@@ -3264,6 +3665,7 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL;
prop= RNA_def_collection_runtime(srna, id, ptype, name, description);
+ if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN);
RNA_def_property_duplicate_pointers(prop);
Py_RETURN_NONE;
}
@@ -3273,57 +3675,85 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw)
return NULL;
}
-int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
+
+static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key, PyObject *dummy_args)
{
- PyObject *dummy_args, *item, *key;
- Py_ssize_t pos = 0;
+ /* We only care about results from C which
+ * are for sure types, save some time with error */
+ if(PyTuple_CheckExact(item) && PyTuple_GET_SIZE(item)==2) {
- dummy_args = PyTuple_New(0);
-
- while (PyDict_Next(class_dict, &pos, &key, &item)) {
PyObject *py_func_ptr, *py_kw, *py_srna_cobject, *py_ret;
- /* We only care about results from C which
- * are for sure types, save some time with error */
- if(PyTuple_CheckExact(item)) {
- if(PyArg_ParseTuple(item, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) {
- PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *);
- pyfunc = PyCObject_AsVoidPtr(py_func_ptr);
- py_srna_cobject = PyCObject_FromVoidPtr(srna, NULL);
+ if(PyArg_ParseTuple(item, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) {
- /* not 100% nice :/, modifies the dict passed, should be ok */
- PyDict_SetItemString(py_kw, "attr", key);
+ PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *);
- py_ret = pyfunc(py_srna_cobject, dummy_args, py_kw);
- Py_DECREF(py_srna_cobject);
+ pyfunc = PyCObject_AsVoidPtr(py_func_ptr);
+ py_srna_cobject = PyCObject_FromVoidPtr(srna, NULL);
- if(py_ret) {
- Py_DECREF(py_ret);
- }
- else {
- PyErr_Print();
- PyErr_Clear();
+ /* not 100% nice :/, modifies the dict passed, should be ok */
+ PyDict_SetItemString(py_kw, "attr", key);
- PyLineSpit();
+ py_ret = pyfunc(py_srna_cobject, dummy_args, py_kw);
+ Py_DECREF(py_srna_cobject);
- PyErr_Format(PyExc_ValueError, "StructRNA \"%.200s\" registration error: %.200s could not run\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key));
- Py_DECREF(dummy_args);
- return -1;
- }
+ if(py_ret) {
+ Py_DECREF(py_ret);
}
else {
- /* Since this is a class dict, ignore args that can't be passed */
-
- /* for testing only */
- /* PyObSpit("Why doesn't this work??", item);
- PyErr_Print(); */
+ PyErr_Print();
PyErr_Clear();
+ PyErr_Format(PyExc_ValueError, "StructRNA \"%.200s\" registration error: %.200s could not register\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key));
+ Py_DECREF(dummy_args);
+ return -1;
}
}
+ else {
+ /* Since this is a class dict, ignore args that can't be passed */
+
+ /* for testing only */
+ /* PyObSpit("Why doesn't this work??", item);
+ PyErr_Print(); */
+ PyErr_Clear();
+ }
+ }
+
+ return 0;
+}
+
+int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
+{
+ PyObject *item, *key;
+ PyObject *order;
+ PyObject *dummy_args;
+ Py_ssize_t pos = 0;
+ int ret;
+
+ dummy_args = PyTuple_New(0);
+
+ order= PyDict_GetItemString(class_dict, "order");
+
+ if(order && PyList_Check(order)) {
+ for(pos= 0; pos<PyList_GET_SIZE(order); pos++) {
+ key= PyList_GET_ITEM(order, pos);
+ item= PyDict_GetItem(class_dict, key);
+ ret= deferred_register_prop(srna, item, key, dummy_args);
+ if(ret==-1)
+ break;
+ }
+ }
+ else {
+ while (PyDict_Next(class_dict, &pos, &key, &item)) {
+ ret= deferred_register_prop(srna, item, key, dummy_args);
+
+ if(ret==-1)
+ break;
+ }
}
Py_DECREF(dummy_args);
+
return 0;
}
@@ -3507,7 +3937,7 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par
pret= RNA_function_return(func);
RNA_pointer_create(NULL, &RNA_Function, func, &funcptr);
- args = PyTuple_New(rna_function_arg_count(func));
+ args = PyTuple_New(rna_function_arg_count(func)); /* first arg is included in 'item' */
PyTuple_SET_ITEM(args, 0, py_class_instance);
RNA_parameter_list_begin(parms, &iter);
@@ -3532,7 +3962,8 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par
Py_DECREF(args);
}
else {
- Py_DECREF(py_class_instance);
+ PyErr_Print();
+ PyErr_Clear();
PyErr_Format(PyExc_TypeError, "could not find function %.200s in %.200s to execute callback.", RNA_function_identifier(func), RNA_struct_identifier(ptr->type));
err= -1;
}
diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h
index fe38ddb6bd9..0e40bf7258c 100644
--- a/source/blender/python/intern/bpy_rna.h
+++ b/source/blender/python/intern/bpy_rna.h
@@ -39,11 +39,9 @@ extern PyTypeObject pyrna_prop_Type;
#define BPy_PropertyRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_prop_Type)
typedef struct {
- void * _a;
- void * _b;
- PyTypeObject *py_type;
-} BPy_StructFakeType;
-
+ PyObject_HEAD /* required python macro */
+ PointerRNA ptr;
+} BPy_DummyPointerRNA;
typedef struct {
PyObject_HEAD /* required python macro */
diff --git a/source/blender/python/intern/bpy_ui.c b/source/blender/python/intern/bpy_ui.c
index f03a83bee9c..ab50ebd8bd5 100644
--- a/source/blender/python/intern/bpy_ui.c
+++ b/source/blender/python/intern/bpy_ui.c
@@ -48,7 +48,7 @@ static struct PyMethodDef ui_methods[] = {
static struct PyModuleDef ui_module = {
PyModuleDef_HEAD_INIT,
- "bpy.ui",
+ "_bpy.ui",
"",
-1,/* multiple "initialization" just copies the module dict. */
ui_methods,
diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c
index 86407e0c818..cd53ba9c069 100644
--- a/source/blender/python/intern/bpy_util.c
+++ b/source/blender/python/intern/bpy_util.c
@@ -162,12 +162,15 @@ void BPY_getFileAndNum(char **filename, int *lineno)
getframe = PySys_GetObject("_getframe"); // borrowed
if (getframe==NULL) {
+ PyErr_Clear();
return;
}
frame = PyObject_CallObject(getframe, NULL);
- if (frame==NULL)
+ if (frame==NULL) {
+ PyErr_Clear();
return;
+ }
if (filename) {
co_filename= PyObject_GetAttrStringArgs(frame, 1, "f_code", "co_filename");
@@ -413,6 +416,7 @@ int BPy_reports_to_error(ReportList *reports)
int BPy_errors_to_report(ReportList *reports)
{
PyObject *pystring;
+ PyObject *pystring_format= NULL; // workaround, see below
char *cstring;
char *filename;
@@ -436,14 +440,23 @@ int BPy_errors_to_report(ReportList *reports)
}
BPY_getFileAndNum(&filename, &lineno);
+ if(filename==NULL)
+ filename= "<unknown location>";
cstring= _PyUnicode_AsString(pystring);
-
+
+#if 0 // ARG!. workaround for a bug in blenders use of vsnprintf
BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno);
+#else
+ pystring_format= PyUnicode_FromFormat("%s\nlocation:%s:%d\n", cstring, filename, lineno);
+ cstring= _PyUnicode_AsString(pystring_format);
+ BKE_report(reports, RPT_ERROR, cstring);
+#endif
fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing
Py_DECREF(pystring);
+ Py_DECREF(pystring_format); // workaround
return 1;
}
diff --git a/source/blender/python/intern/stubs.c b/source/blender/python/intern/stubs.c
index 94bdb6ba6ab..303fd84ee60 100644
--- a/source/blender/python/intern/stubs.c
+++ b/source/blender/python/intern/stubs.c
@@ -27,7 +27,6 @@
*/
/* python, will come back */
-void BPY_post_start_python() {}
//void BPY_run_python_script() {}
//void BPY_start_python() {}
void BPY_call_importloader() {}
diff --git a/source/blender/quicktime/CMakeLists.txt b/source/blender/quicktime/CMakeLists.txt
index ac503bb62cb..14589ca4c5b 100644
--- a/source/blender/quicktime/CMakeLists.txt
+++ b/source/blender/quicktime/CMakeLists.txt
@@ -24,7 +24,11 @@
#
# ***** END GPL LICENSE BLOCK *****
-SET(SRC apple/quicktime_import.c apple/quicktime_export.c)
+IF(USE_QTKIT)
+ SET(SRC apple/qtkit_import.m apple/qtkit_export.m)
+ELSE(USE_QTKIT)
+ SET(SRC apple/quicktime_import.c apple/quicktime_export.c)
+ENDIF(USE_QTKIT)
SET(INC
.
diff --git a/source/blender/quicktime/SConscript b/source/blender/quicktime/SConscript
index 10e88a8f461..1f9847d7854 100644
--- a/source/blender/quicktime/SConscript
+++ b/source/blender/quicktime/SConscript
@@ -1,9 +1,15 @@
#!/usr/bin/python
Import ('env')
-source_files = ['apple/quicktime_import.c',
+
+if env['USE_QTKIT']:
+ source_files = ['apple/qtkit_import.m',
+ 'apple/qtkit_export.m']
+else:
+ source_files = ['apple/quicktime_import.c',
'apple/quicktime_export.c']
+
incs = ['.',
'../quicktime',
'../makesdna',
diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m
new file mode 100644
index 00000000000..6788c22d9a1
--- /dev/null
+++ b/source/blender/quicktime/apple/qtkit_export.m
@@ -0,0 +1,275 @@
+/**
+ * $Id$
+ *
+ * qtkit_export.m
+ *
+ * Code to create QuickTime Movies with Blender
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * The Original Code is written by Rob Haarsma (phase)
+ *
+ * Contributor(s): Stefan Gartner (sgefant)
+ * Damien Plisson 11/2009
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifdef WITH_QUICKTIME
+#if defined(_WIN32) || defined(__APPLE__)
+
+#include <stdio.h>
+#include <string.h>
+
+#include "DNA_scene_types.h"
+
+#include "BKE_global.h"
+#include "BKE_scene.h"
+
+#include "BLI_blenlib.h"
+
+#include "BLO_sys_types.h"
+
+#include "IMB_imbuf.h"
+#include "IMB_imbuf_types.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "quicktime_import.h"
+#include "quicktime_export.h"
+
+
+#ifdef __APPLE__
+/* evil */
+#ifndef __AIFF__
+#define __AIFF__
+#endif
+#import <Cocoa/Cocoa.h>
+#import <QTKit/QTKit.h>
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
+#error OSX 10.5 minimum is needed for QTKit
+#endif
+
+#endif /* __APPLE__ */
+
+typedef struct QuicktimeExport {
+ QTMovie *movie;
+
+ NSString *filename;
+
+ QTTime frameDuration;
+ NSDictionary *frameAttributes;
+} QuicktimeExport;
+
+static struct QuicktimeExport *qtexport;
+
+
+static NSString *stringWithCodecType(int codecType) {
+ switch (codecType) {
+ case QT_CODECTYPE_RAW:
+ return @"raw ";
+ case QT_CODECTYPE_MJPEGA:
+ return @"mjpa";
+ case QT_CODECTYPE_MJPEGB:
+ return @"mjpb";
+ case QT_CODECTYPE_DVCPAL:
+ return @"dvcp";
+ case QT_CODECTYPE_DVCNTSC:
+ return @"dvc ";
+ case QT_CODECTYPE_MPEG4:
+ return @"mp4v";
+ case QT_CODECTYPE_H263:
+ return @"h263";
+ case QT_CODECTYPE_H264:
+ return @"avc1";
+ case QT_CODECTYPE_DVCPROHD720p:
+ return @"dvhp";
+ case QT_CODECTYPE_DVCPROHD1080i50:
+ return @"dvh5";
+ case QT_CODECTYPE_DVCPROHD1080i60:
+ return @"dvh6";
+
+ case QT_CODECTYPE_JPEG:
+ default:
+ return @"jpeg";
+ }
+}
+
+void makeqtstring (RenderData *rd, char *string) {
+ char txt[64];
+
+ strcpy(string, rd->pic);
+ BLI_convertstringcode(string, G.sce);
+
+ BLI_make_existing_file(string);
+
+ if (BLI_strcasecmp(string + strlen(string) - 4, ".mov")) {
+ sprintf(txt, "%04d_%04d.mov", (rd->sfra) , (rd->efra) );
+ strcat(string, txt);
+ }
+}
+
+
+void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty)
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSError *error;
+ char name[2048];
+
+
+ if (G.afbreek != 1) {
+
+ if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport");
+
+ [QTMovie enterQTKitOnThread];
+
+ /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */
+ if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) {
+ G.afbreek = 1;
+ fprintf(stderr, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later");
+ }
+ else {
+ makeqtstring(rd, name);
+ qtexport->filename = [NSString stringWithCString:name
+ encoding:[NSString defaultCStringEncoding]];
+ qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->filename error:&error];
+
+ if(qtexport->movie == nil) {
+ G.afbreek = 1;
+ NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]);
+ [QTMovie exitQTKitOnThread];
+ } else {
+ [qtexport->movie retain];
+ [qtexport->filename retain];
+ [qtexport->movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
+ [qtexport->movie setAttribute:@"Made with Blender" forKey:QTMovieCopyrightAttribute];
+
+ qtexport->frameDuration = QTMakeTime(rd->frs_sec_base*1000, rd->frs_sec*1000);
+
+ /* specifying the codec attributes : try to retrieve them from render data first*/
+ if (rd->qtcodecsettings.codecType) {
+ qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
+ stringWithCodecType(rd->qtcodecsettings.codecType),
+ QTAddImageCodecType,
+ [NSNumber numberWithLong:((rd->qtcodecsettings.codecSpatialQuality)*codecLosslessQuality)/100],
+ QTAddImageCodecQuality,
+ nil];
+ }
+ else {
+ qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:@"jpeg",
+ QTAddImageCodecType,
+ [NSNumber numberWithLong:codecHighQuality],
+ QTAddImageCodecQuality,
+ nil];
+ }
+ [qtexport->frameAttributes retain];
+ }
+ }
+ }
+
+ [pool drain];
+}
+
+
+void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty)
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSBitmapImageRep *blBitmapFormatImage;
+ NSImage *frameImage;
+ unsigned char *from_Ptr,*to_Ptr;
+ int y,from_i,to_i;
+
+
+ /* Create bitmap image rep in blender format (32bit RGBA) */
+ blBitmapFormatImage = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
+ pixelsWide:rectx
+ pixelsHigh:recty
+ bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:NO
+ colorSpaceName:NSCalibratedRGBColorSpace
+ bitmapFormat:NSAlphaNonpremultipliedBitmapFormat
+ bytesPerRow:rectx*4
+ bitsPerPixel:32];
+ if (!blBitmapFormatImage) {
+ [pool drain];
+ return;
+ }
+
+ from_Ptr = (unsigned char*)pixels;
+ to_Ptr = (unsigned char*)[blBitmapFormatImage bitmapData];
+ for (y = 0; y < recty; y++) {
+ to_i = (recty-y-1)*rectx;
+ from_i = y*rectx;
+ memcpy(to_Ptr+4*to_i, from_Ptr+4*from_i, 4*rectx);
+ }
+
+ frameImage = [[NSImage alloc] initWithSize:NSMakeSize(rectx, recty)];
+ [frameImage addRepresentation:blBitmapFormatImage];
+
+ /* Add the image to the movie clip */
+ [qtexport->movie addImage:frameImage
+ forDuration:qtexport->frameDuration
+ withAttributes:qtexport->frameAttributes];
+
+ [blBitmapFormatImage release];
+ [frameImage release];
+ [pool drain];
+}
+
+
+void end_qt(void)
+{
+ if (qtexport->movie) {
+ /* Flush update of the movie file */
+ [qtexport->movie updateMovieFile];
+
+ [qtexport->movie invalidate];
+
+ /* Clean up movie structure */
+ [qtexport->filename release];
+ [qtexport->frameAttributes release];
+ [qtexport->movie release];
+ }
+
+ [QTMovie exitQTKitOnThread];
+
+ if(qtexport) {
+ MEM_freeN(qtexport);
+ qtexport = NULL;
+ }
+}
+
+
+void free_qtcomponentdata(void) {
+}
+
+void quicktime_verify_image_type(RenderData *rd)
+{
+ if (rd->imtype == R_QUICKTIME) {
+ if ((rd->qtcodecsettings.codecType<= 0) ||
+ (rd->qtcodecsettings.codecSpatialQuality <0) ||
+ (rd->qtcodecsettings.codecSpatialQuality > 100)) {
+
+ rd->qtcodecsettings.codecType = QT_CODECTYPE_JPEG;
+ rd->qtcodecsettings.codecSpatialQuality = (codecHighQuality*100)/codecLosslessQuality;
+ }
+ }
+}
+
+#endif /* _WIN32 || __APPLE__ */
+#endif /* WITH_QUICKTIME */
+
diff --git a/source/blender/quicktime/apple/qtkit_import.m b/source/blender/quicktime/apple/qtkit_import.m
new file mode 100644
index 00000000000..500ee13330d
--- /dev/null
+++ b/source/blender/quicktime/apple/qtkit_import.m
@@ -0,0 +1,529 @@
+/**
+ * $Id$
+ *
+ * qtkit_import.m
+ *
+ * Code to use Quicktime to load images/movies as texture.
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * The Original Code is written by Rob Haarsma (phase)
+ *
+ * Contributor(s): Stefan Gartner (sgefant)
+ * Damien Plisson 11/2009
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifdef WITH_QUICKTIME
+
+#include "IMB_anim.h"
+#include "BLO_sys_types.h"
+#include "BKE_global.h"
+#include "BLI_dynstr.h"
+
+#import <Cocoa/Cocoa.h>
+#import <QTKit/QTKit.h>
+
+#include "quicktime_import.h"
+#include "quicktime_export.h"
+
+// quicktime structure definition
+// this structure is part of the anim struct
+
+typedef struct _QuicktimeMovie {
+ QTMovie *movie;
+ QTMedia *media;
+
+ long durationTime;
+ long durationScale;
+ long framecount;
+
+
+ ImBuf *ibuf;
+
+ long previousPosition;
+
+} QuicktimeMovie;
+
+
+#define QTIME_DEBUG 0
+
+
+void quicktime_init(void)
+{
+ G.have_quicktime = TRUE;
+}
+
+
+void quicktime_exit(void)
+{
+ if(G.have_quicktime) {
+ free_qtcomponentdata();
+ }
+}
+
+
+int anim_is_quicktime (char *name)
+{
+ NSAutoreleasePool *pool;
+
+ // dont let quicktime movie import handle these
+ if( BLI_testextensie(name, ".swf") ||
+ BLI_testextensie(name, ".txt") ||
+ BLI_testextensie(name, ".mpg") ||
+ BLI_testextensie(name, ".avi") || // wouldnt be appropriate ;)
+ BLI_testextensie(name, ".tga") ||
+ BLI_testextensie(name, ".png") ||
+ BLI_testextensie(name, ".bmp") ||
+ BLI_testextensie(name, ".jpg") ||
+ BLI_testextensie(name, ".wav") ||
+ BLI_testextensie(name, ".zip") ||
+ BLI_testextensie(name, ".mp3")) return 0;
+
+ if(QTIME_DEBUG) printf("qt: checking as movie: %s\n", name);
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ if([QTMovie canInitWithFile:[NSString stringWithCString:name
+ encoding:[NSString defaultCStringEncoding]]])
+ {
+ [pool drain];
+ return true;
+ }
+ else
+ {
+ [pool drain];
+ return false;
+ }
+}
+
+
+void free_anim_quicktime (struct anim *anim) {
+ if (anim == NULL) return;
+ if (anim->qtime == NULL) return;
+
+ if(anim->qtime->ibuf)
+ IMB_freeImBuf(anim->qtime->ibuf);
+
+ [anim->qtime->media release];
+ [anim->qtime->movie release];
+
+ if(anim->qtime) MEM_freeN (anim->qtime);
+
+ anim->qtime = NULL;
+
+ anim->duration = 0;
+}
+
+static ImBuf * nsImageToiBuf(NSImage *sourceImage, int width, int height)
+{
+ ImBuf *ibuf = NULL;
+ uchar *rasterRGB = NULL;
+ uchar *rasterRGBA = NULL;
+ uchar *toIBuf = NULL;
+ int x, y, to_i, from_i;
+ NSSize bitmapSize;
+ NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA,*bitmapImage;
+ NSEnumerator *enumerator;
+ NSImageRep *representation;
+
+ ibuf = IMB_allocImBuf (width, height, 32, IB_rect, 0);
+ if (!ibuf) {
+ if(QTIME_DEBUG) printf("quicktime_import: could not allocate memory for the " \
+ "image.\n");
+ return NULL;
+ }
+
+ /*Get the bitmap of the image*/
+ enumerator = [[sourceImage representations] objectEnumerator];
+ while (representation = [enumerator nextObject]) {
+ if ([representation isKindOfClass:[NSBitmapImageRep class]]) {
+ bitmapImage = (NSBitmapImageRep *)representation;
+ break;
+ }
+ }
+
+ if (([bitmapImage bitsPerPixel] == 32) && (([bitmapImage bitmapFormat] & 0x5) == 0)
+ && ![bitmapImage isPlanar]) {
+ /* Try a fast copy if the image is a meshed RGBA 32bit bitmap*/
+ toIBuf = (uchar*)ibuf->rect;
+ rasterRGB = (uchar*)[bitmapImage bitmapData];
+ for (y = 0; y < height; y++) {
+ to_i = (height-y-1)*width;
+ from_i = y*width;
+ memcpy(toIBuf+4*to_i, rasterRGB+4*from_i, 4*width);
+ }
+ }
+ else {
+
+ bitmapSize.width = width;
+ bitmapSize.height = height;
+
+ /* Tell cocoa image resolution is same as current system one */
+ [bitmapImage setSize:bitmapSize];
+
+ /* Convert the image in a RGBA 32bit format */
+ /* As Core Graphics does not support contextes with non premutliplied alpha,
+ we need to get alpha key values in a separate batch */
+
+ /* First get RGB values w/o Alpha to avoid pre-multiplication, 32bit but last byte is unused */
+ blBitmapFormatImageRGB = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
+ pixelsWide:width
+ pixelsHigh:height
+ bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO
+ colorSpaceName:NSCalibratedRGBColorSpace
+ bitmapFormat:0
+ bytesPerRow:4*width
+ bitsPerPixel:32/*RGB format padded to 32bits*/];
+
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:blBitmapFormatImageRGB]];
+ [bitmapImage draw];
+ [NSGraphicsContext restoreGraphicsState];
+
+ rasterRGB = (uchar*)[blBitmapFormatImageRGB bitmapData];
+ if (rasterRGB == NULL) {
+ [bitmapImage release];
+ [blBitmapFormatImageRGB release];
+ return NULL;
+ }
+
+ /* Then get Alpha values by getting the RGBA image (that is premultiplied btw) */
+ blBitmapFormatImageRGBA = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
+ pixelsWide:width
+ pixelsHigh:height
+ bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:NO
+ colorSpaceName:NSCalibratedRGBColorSpace
+ bitmapFormat:0
+ bytesPerRow:4*width
+ bitsPerPixel:32/* RGBA */];
+
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:blBitmapFormatImageRGBA]];
+ [bitmapImage draw];
+ [NSGraphicsContext restoreGraphicsState];
+
+ rasterRGBA = (uchar*)[blBitmapFormatImageRGBA bitmapData];
+ if (rasterRGBA == NULL) {
+ [bitmapImage release];
+ [blBitmapFormatImageRGB release];
+ [blBitmapFormatImageRGBA release];
+ return NULL;
+ }
+
+ /*Copy the image to ibuf, flipping it vertically*/
+ toIBuf = (uchar*)ibuf->rect;
+ for (y = 0; y < height; y++) {
+ for (x = 0; x < width; x++) {
+ to_i = (height-y-1)*width + x;
+ from_i = y*width + x;
+
+ toIBuf[4*to_i] = rasterRGB[4*from_i]; /* R */
+ toIBuf[4*to_i+1] = rasterRGB[4*from_i+1]; /* G */
+ toIBuf[4*to_i+2] = rasterRGB[4*from_i+2]; /* B */
+ toIBuf[4*to_i+3] = rasterRGBA[4*from_i+3]; /* A */
+ }
+ }
+
+ [blBitmapFormatImageRGB release];
+ [blBitmapFormatImageRGBA release];
+ }
+
+ return ibuf;
+}
+
+ImBuf * qtime_fetchibuf (struct anim *anim, int position)
+{
+ NSImage *frameImage;
+ QTTime time;
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ ImBuf *ibuf;
+
+ if (anim == NULL) {
+ return (NULL);
+ }
+
+ if (position == anim->qtime->previousPosition+1) { //Optimize sequential read
+ [anim->qtime->movie stepForward];
+ frameImage = [anim->qtime->movie currentFrameImage];
+ anim->qtime->previousPosition++;
+ }
+ else {
+ time.timeScale = anim->qtime->durationScale;
+ time.timeValue = (anim->qtime->durationTime * position) / anim->qtime->framecount;
+
+ [anim->qtime->movie setCurrentTime:time];
+ frameImage = [anim->qtime->movie currentFrameImage];
+
+ anim->qtime->previousPosition = position;
+ }
+
+ if (frameImage == nil) {
+ if(QTIME_DEBUG) printf ("Error reading frame from Quicktime");
+ [pool drain];
+ return NULL;
+ }
+
+ ibuf = nsImageToiBuf(frameImage,anim->x, anim->y);
+ [pool drain];
+ return ibuf;
+}
+
+
+int startquicktime (struct anim *anim)
+{
+ NSAutoreleasePool *pool;
+ NSArray* videoTracks;
+ NSSize frameSize;
+ QTTime qtTimeDuration;
+ NSDictionary *attributes;
+
+ anim->qtime = MEM_callocN (sizeof(QuicktimeMovie),"animqt");
+
+ if (anim->qtime == NULL) {
+ if(QTIME_DEBUG) printf("Can't alloc qtime: %s\n", anim->name);
+ return -1;
+ }
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ attributes = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSString stringWithCString:anim->name
+ encoding:[NSString defaultCStringEncoding]], QTMovieFileNameAttribute,
+ [NSNumber numberWithBool:NO], QTMovieEditableAttribute,
+ nil];
+
+ anim->qtime->movie = [QTMovie movieWithAttributes:attributes error:NULL];
+
+ if (!anim->qtime->movie) {
+ if(QTIME_DEBUG) printf("qt: bad movie %s\n", anim->name);
+ MEM_freeN(anim->qtime);
+ if(QTIME_DEBUG) printf("qt: can't load %s\n", anim->name);
+ [pool drain];
+ return -1;
+ }
+ [anim->qtime->movie retain];
+
+ // sets Media and Track!
+
+ videoTracks = [anim->qtime->movie tracksOfMediaType:QTMediaTypeVideo];
+
+ if([videoTracks count] == 0) {
+ if(QTIME_DEBUG) printf("qt: no video tracks for movie %s\n", anim->name);
+ [anim->qtime->movie release];
+ MEM_freeN(anim->qtime);
+ if(QTIME_DEBUG) printf("qt: can't load %s\n", anim->name);
+ [pool drain];
+ return -1;
+ }
+
+ anim->qtime->media = [[videoTracks objectAtIndex:0] media];
+ [anim->qtime->media retain];
+
+
+ frameSize = [[anim->qtime->movie attributeForKey:QTMovieNaturalSizeAttribute] sizeValue];
+ anim->x = frameSize.width;
+ anim->y = frameSize.height;
+
+ if(anim->x == 0 && anim->y == 0) {
+ if(QTIME_DEBUG) printf("qt: error, no dimensions\n");
+ free_anim_quicktime(anim);
+ [pool drain];
+ return -1;
+ }
+
+ anim->qtime->ibuf = IMB_allocImBuf (anim->x, anim->y, 32, IB_rect, 0);
+
+ qtTimeDuration = [[anim->qtime->media attributeForKey:QTMediaDurationAttribute] QTTimeValue];
+ anim->qtime->durationTime = qtTimeDuration.timeValue;
+ anim->qtime->durationScale = qtTimeDuration.timeScale;
+
+ anim->qtime->framecount = [[anim->qtime->media attributeForKey:QTMediaSampleCountAttribute] longValue];
+ anim->qtime->previousPosition = -2; //Force seeking for first read
+
+ //fill blender's anim struct
+
+ anim->duration = anim->qtime->framecount;
+ anim->params = 0;
+
+ anim->interlacing = 0;
+ anim->orientation = 0;
+ anim->framesize = anim->x * anim->y * 4;
+
+ anim->curposition = 0;
+
+ [pool drain];
+
+ return 0;
+}
+
+int imb_is_a_quicktime (char *name)
+{
+ NSImage *image;
+ int result;
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+ // dont let quicktime image import handle these
+ if( BLI_testextensie(name, ".swf") ||
+ BLI_testextensie(name, ".txt") ||
+ BLI_testextensie(name, ".mpg") ||
+ BLI_testextensie(name, ".wav") ||
+ BLI_testextensie(name, ".mov") || // not as image, doesn't work
+ BLI_testextensie(name, ".avi") ||
+ BLI_testextensie(name, ".mp3")) return 0;
+
+
+ image = [NSImage alloc];
+ if ([image initWithContentsOfFile:[NSString stringWithUTF8String:name]])
+ result = true;
+ else
+ result = false;
+
+ [image release];
+ [pool drain];
+ return result;
+}
+
+ImBuf *imb_quicktime_decode(unsigned char *mem, int size, int flags)
+{
+ struct ImBuf *ibuf = NULL;
+ NSSize bitmapSize;
+ uchar *rasterRGB = NULL;
+ uchar *rasterRGBA = NULL;
+ uchar *toIBuf = NULL;
+ int x, y, to_i, from_i;
+ NSData *data;
+ NSBitmapImageRep *bitmapImage;
+ NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA;
+ NSAutoreleasePool *pool;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ data = [NSData dataWithBytes:mem length:size];
+ bitmapImage = [[NSBitmapImageRep alloc] initWithData:data];
+
+ if (!bitmapImage) {
+ fprintf(stderr, "imb_cocoaLoadImage: error loading image\n");
+ [pool drain];
+ return NULL;
+ }
+
+ bitmapSize.width = [bitmapImage pixelsWide];
+ bitmapSize.height = [bitmapImage pixelsHigh];
+
+ /* Tell cocoa image resolution is same as current system one */
+ [bitmapImage setSize:bitmapSize];
+
+ /* allocate the image buffer */
+ ibuf = IMB_allocImBuf(bitmapSize.width, bitmapSize.height, 32/*RGBA*/, 0, 0);
+ if (!ibuf) {
+ fprintf(stderr,
+ "imb_cocoaLoadImage: could not allocate memory for the " \
+ "image.\n");
+ [bitmapImage release];
+ [pool drain];
+ return NULL;
+ }
+
+ /* read in the image data */
+ if (!(flags & IB_test)) {
+
+ /* allocate memory for the ibuf->rect */
+ imb_addrectImBuf(ibuf);
+
+ /* Convert the image in a RGBA 32bit format */
+ /* As Core Graphics does not support contextes with non premutliplied alpha,
+ we need to get alpha key values in a separate batch */
+
+ /* First get RGB values w/o Alpha to avoid pre-multiplication, 32bit but last byte is unused */
+ blBitmapFormatImageRGB = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
+ pixelsWide:bitmapSize.width
+ pixelsHigh:bitmapSize.height
+ bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO
+ colorSpaceName:NSCalibratedRGBColorSpace
+ bitmapFormat:0
+ bytesPerRow:4*bitmapSize.width
+ bitsPerPixel:32/*RGB format padded to 32bits*/];
+
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:blBitmapFormatImageRGB]];
+ [bitmapImage draw];
+ [NSGraphicsContext restoreGraphicsState];
+
+ rasterRGB = (uchar*)[blBitmapFormatImageRGB bitmapData];
+ if (rasterRGB == NULL) {
+ [bitmapImage release];
+ [blBitmapFormatImageRGB release];
+ [pool drain];
+ return NULL;
+ }
+
+ /* Then get Alpha values by getting the RGBA image (that is premultiplied btw) */
+ blBitmapFormatImageRGBA = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
+ pixelsWide:bitmapSize.width
+ pixelsHigh:bitmapSize.height
+ bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:NO
+ colorSpaceName:NSCalibratedRGBColorSpace
+ bitmapFormat:0
+ bytesPerRow:4*bitmapSize.width
+ bitsPerPixel:32/* RGBA */];
+
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:blBitmapFormatImageRGBA]];
+ [bitmapImage draw];
+ [NSGraphicsContext restoreGraphicsState];
+
+ rasterRGBA = (uchar*)[blBitmapFormatImageRGBA bitmapData];
+ if (rasterRGBA == NULL) {
+ [bitmapImage release];
+ [blBitmapFormatImageRGB release];
+ [blBitmapFormatImageRGBA release];
+ [pool drain];
+ return NULL;
+ }
+
+ /*Copy the image to ibuf, flipping it vertically*/
+ toIBuf = (uchar*)ibuf->rect;
+ for (x = 0; x < bitmapSize.width; x++) {
+ for (y = 0; y < bitmapSize.height; y++) {
+ to_i = (bitmapSize.height-y-1)*bitmapSize.width + x;
+ from_i = y*bitmapSize.width + x;
+
+ toIBuf[4*to_i] = rasterRGB[4*from_i]; /* R */
+ toIBuf[4*to_i+1] = rasterRGB[4*from_i+1]; /* G */
+ toIBuf[4*to_i+2] = rasterRGB[4*from_i+2]; /* B */
+ toIBuf[4*to_i+3] = rasterRGBA[4*from_i+3]; /* A */
+ }
+ }
+
+ [blBitmapFormatImageRGB release];
+ [blBitmapFormatImageRGBA release];
+ }
+
+ /* release the cocoa objects */
+ [bitmapImage release];
+ [pool drain];
+
+ if (ENDIAN_ORDER == B_ENDIAN) IMB_convert_rgba_to_abgr(ibuf);
+
+ /* return successfully */
+ return (ibuf);
+}
+
+
+#endif /* WITH_QUICKTIME */
+
diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c
index a2727963032..851b3c5b245 100644
--- a/source/blender/quicktime/apple/quicktime_export.c
+++ b/source/blender/quicktime/apple/quicktime_export.c
@@ -165,8 +165,6 @@ static OSErr QT_SaveCodecSettingsToScene(RenderData *rd)
qcd->cdSize = mySize;
GetCodecInfo (&ci, qtdata->gSpatialSettings.codecType, 0);
- CopyPascalStringToC(ci.typeName, str);
- sprintf(qcd->qtcodecname, "Codec: %s", str);
} else {
printf("Quicktime: QT_SaveCodecSettingsToScene failed\n");
}
@@ -599,6 +597,18 @@ static void check_renderbutton_framerate(RenderData *rd)
}
}
+void quicktime_verify_image_type(RenderData *rd)
+{
+ if (rd->imtype == R_QUICKTIME) {
+ if ((rd->qtcodecsettings.codecType<= 0) ||
+ (rd->qtcodecsettings.codecSpatialQuality <0) ||
+ (rd->qtcodecsettings.codecSpatialQuality > 100)) {
+
+ rd->qtcodecsettings.codecType = QT_CODECTYPE_JPEG;
+ rd->qtcodecsettings.codecSpatialQuality = (codecHighQuality*100)/codecLosslessQuality;
+ }
+ }
+}
int get_qtcodec_settings(RenderData *rd)
{
@@ -620,12 +630,13 @@ int get_qtcodec_settings(RenderData *rd)
check_renderbutton_framerate(rd);
} else {
// configure the standard image compression dialog box
- // set some default settings
+ // set some default settings: codec=jpeg, quality = max
+ qtdata->gSpatialSettings.codecType = kJPEGCodecType;
qtdata->gSpatialSettings.codec = anyCodec;
- qtdata->gSpatialSettings.spatialQuality = codecMaxQuality;
- qtdata->gTemporalSettings.temporalQuality = codecMaxQuality;
+ qtdata->gSpatialSettings.spatialQuality = codecHighQuality;
+ qtdata->gTemporalSettings.temporalQuality = codecHighQuality;
qtdata->gTemporalSettings.keyFrameRate = 25;
- qtdata->aDataRateSetting.dataRate = 90 * 1024;
+ qtdata->aDataRateSetting.dataRate = 5 * 1024 * 1024;
err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
CheckError(err, "SCSetInfo1 error");
@@ -637,6 +648,8 @@ int get_qtcodec_settings(RenderData *rd)
check_renderbutton_framerate(rd);
+ /* Remove this dialog box pop up as this function is called from the render thread
+ Anyway, all config should be done inside blender ui before starting render.
// put up the dialog box - it needs to be called from the main thread
err = SCRequestSequenceSettings(qtdata->theComponent);
@@ -648,7 +661,7 @@ int get_qtcodec_settings(RenderData *rd)
// get user selected data
SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
- SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
+ SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);*/
QT_SaveCodecSettingsToScene(rd);
diff --git a/source/blender/quicktime/apple/quicktime_import.c b/source/blender/quicktime/apple/quicktime_import.c
index 1f3071f114c..571da92a292 100644
--- a/source/blender/quicktime/apple/quicktime_import.c
+++ b/source/blender/quicktime/apple/quicktime_import.c
@@ -52,12 +52,38 @@
#include "quicktime_import.h"
#include "quicktime_export.h"
-
#define RECT_WIDTH(r) (r.right-r.left)
#define RECT_HEIGHT(r) (r.bottom-r.top)
#define QTIME_DEBUG 0
+typedef struct _QuicktimeMovie {
+
+ GWorldPtr offscreenGWorld;
+ PixMapHandle offscreenPixMap;
+ Movie movie;
+ Rect movieBounds;
+ short movieRefNum;
+ short movieResId;
+ int movWidth, movHeight;
+
+
+ int framecount;
+
+
+ ImBuf *ibuf;
+
+
+ TimeValue *frameIndex;
+ Media theMedia;
+ Track theTrack;
+ long trackIndex;
+ short depth;
+
+ int have_gw; //ugly
+} QuicktimeMovie;
+
+
void quicktime_init(void)
{
diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h
index 4afcebab7bd..7972c826190 100644
--- a/source/blender/quicktime/quicktime_export.h
+++ b/source/blender/quicktime/quicktime_export.h
@@ -33,14 +33,30 @@
#define __AIFF__
+/* Quicktime codec types defines */
+#define QT_CODECTYPE_JPEG 1
+#define QT_CODECTYPE_MJPEGA 2
+#define QT_CODECTYPE_MJPEGB 3
+#define QT_CODECTYPE_DVCPAL 4
+#define QT_CODECTYPE_DVCNTSC 5
+#define QT_CODECTYPE_MPEG4 6
+#define QT_CODECTYPE_H263 7
+#define QT_CODECTYPE_H264 8
+#define QT_CODECTYPE_RAW 9
+#define QT_CODECTYPE_DVCPROHD720p 10
+#define QT_CODECTYPE_DVCPROHD1080i50 11
+#define QT_CODECTYPE_DVCPROHD1080i60 12
+
// quicktime movie output functions
struct RenderData;
+struct Scene;
void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty); //for movie handle (BKE writeavi.c now)
void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty);
void end_qt(void);
-int get_qtcodec_settings(struct RenderData *rd); //for buttons.c
+void quicktime_verify_image_type(struct RenderData *rd); //used by RNA for defaults values init, if needed
+
void free_qtcomponentdata(void);
void makeqtstring(struct RenderData *rd, char *string); //for playanim.c
diff --git a/source/blender/quicktime/quicktime_import.h b/source/blender/quicktime/quicktime_import.h
index 1444827e12e..6dea5956195 100644
--- a/source/blender/quicktime/quicktime_import.h
+++ b/source/blender/quicktime/quicktime_import.h
@@ -42,6 +42,7 @@
#include "../imbuf/IMB_imbuf.h"
#include "../imbuf/IMB_imbuf_types.h"
+#ifndef USE_QTKIT
#ifndef __MOVIES__
#ifdef _WIN32
#include <Movies.h>
@@ -50,7 +51,8 @@
#import <Carbon/Carbon.h>
#include <QuickTime/Movies.h>
#endif
-#endif
+#endif //__MOVIES__
+#endif //USE_QTKIT
#ifdef _WIN32
#ifndef __FIXMATH__
@@ -58,31 +60,6 @@
#endif /* __FIXMATH__ */
#endif /* _WIN32 _ */
-// quicktime structure definition
-// this structure is part of the anim struct
-
-typedef struct _QuicktimeMovie {
- GWorldPtr offscreenGWorld;
- PixMapHandle offscreenPixMap;
-
- Movie movie;
- short movieRefNum;
- short movieResId;
- int movWidth, movHeight;
- Rect movieBounds;
-
- int framecount;
-
- TimeValue *frameIndex;
- ImBuf *ibuf;
-
- Media theMedia;
- Track theTrack;
- long trackIndex;
- short depth;
-
- int have_gw; //ugly
-} QuicktimeMovie;
char *get_valid_qtname(char *name);
diff --git a/source/blender/render/CMakeLists.txt b/source/blender/render/CMakeLists.txt
index 236f5d7de7f..66f0a327e81 100644
--- a/source/blender/render/CMakeLists.txt
+++ b/source/blender/render/CMakeLists.txt
@@ -48,10 +48,10 @@ IF(WITH_QUICKTIME)
ENDIF(WITH_QUICKTIME)
IF(APPLE)
- IF((CMAKE_OSX_ARCHITECTURES MATCHES "i386") OR (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64"))
+ IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386" OR CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mfpmath=sse")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mfpmath=sse")
- ENDIF((CMAKE_OSX_ARCHITECTURES MATCHES "i386") OR (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64"))
+ ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386" OR CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
ENDIF(APPLE)
#TODO
diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript
index 0a1bd1b5598..d0cff4c1761 100644
--- a/source/blender/render/SConscript
+++ b/source/blender/render/SConscript
@@ -31,8 +31,11 @@ if env['WITH_BF_OPENEXR']:
defs.append('WITH_OPENEXR')
if env['OURPLATFORM'] == 'linux2':
- cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread']
- cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread']
+# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no
+# cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread']
+# cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread']
+ cflags = env['CCFLAGS']
+ cxxflags = env['CXXFLAGS']
incs += ' ../../../extern/binreloc/include'
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
diff --git a/source/blender/render/intern/raytrace/rayobject.cpp b/source/blender/render/intern/raytrace/rayobject.cpp
index 8aff7a38317..869405e0fbc 100644
--- a/source/blender/render/intern/raytrace/rayobject.cpp
+++ b/source/blender/render/intern/raytrace/rayobject.cpp
@@ -29,7 +29,7 @@
#include <assert.h>
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "DNA_material_types.h"
#include "RE_raytrace.h"
@@ -170,8 +170,8 @@ static inline int rayface_check_cullface(RayFace *face, Isect *is)
float nor[3];
/* don't intersect if the ray faces along the face normal */
- if(face->quad) CalcNormFloat4(face->v1, face->v2, face->v3, face->v4, nor);
- else CalcNormFloat(face->v1, face->v2, face->v3, nor);
+ if(face->quad) normal_quad_v3( nor,face->v1, face->v2, face->v3, face->v4);
+ else normal_tri_v3( nor,face->v1, face->v2, face->v3);
return (INPR(nor, is->vec) < 0);
}
@@ -376,7 +376,7 @@ int RE_rayobject_raycast(RayObject *r, Isect *isec)
RE_RC_COUNT(isec->raycounter->raycast.test);
/* Setup vars used on raycast */
- isec->dist = VecLength(isec->vec);
+ isec->dist = len_v3(isec->vec);
for(i=0; i<3; i++)
{
@@ -435,11 +435,11 @@ int RE_rayobject_intersect(RayObject *r, Isect *i)
if(face->ob->transform_primitives)
{
- Mat4MulVecfl(face->ob->mat, nface.v1);
- Mat4MulVecfl(face->ob->mat, nface.v2);
- Mat4MulVecfl(face->ob->mat, nface.v3);
+ mul_m4_v3(face->ob->mat, nface.v1);
+ mul_m4_v3(face->ob->mat, nface.v2);
+ mul_m4_v3(face->ob->mat, nface.v3);
if(RE_rayface_isQuad(&nface))
- Mat4MulVecfl(face->ob->mat, nface.v4);
+ mul_m4_v3(face->ob->mat, nface.v4);
}
return intersect_rayface(r, &nface, i);
diff --git a/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp b/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
index a16499d4f91..09026929829 100644
--- a/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
+++ b/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
@@ -33,7 +33,7 @@
#include "rayobject_rtbuild.h"
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_utildefines.h"
static bool selected_node(RTBuilder::Object *node)
diff --git a/source/blender/render/intern/raytrace/rayobject_vbvh.cpp b/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
index 11f04c04141..4a2a56fa8ef 100644
--- a/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
+++ b/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
@@ -38,7 +38,7 @@ int tot_hints = 0;
#include "BLI_memarena.h"
#include "MEM_guardedalloc.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "reorganize.h"
#include "bvh.h"
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 072083e58a7..f9d32f9c541 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -35,7 +35,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
#include "BLI_memarena.h"
@@ -191,8 +191,8 @@ void RE_make_stars(Render *re, Scene *scenev3d, void (*initfunc)(void),
if (re) re->flag |= R_HALO;
else stargrid *= 1.0; /* then it draws fewer */
- if(re) Mat4Invert(mat, re->viewmat);
- else Mat4One(mat);
+ if(re) invert_m4_m4(mat, re->viewmat);
+ else unit_m4(mat);
/* BOUNDING BOX CALCULATION
* bbox goes from z = loc_near_var | loc_far_var,
@@ -240,7 +240,7 @@ void RE_make_stars(Render *re, Scene *scenev3d, void (*initfunc)(void),
done++;
}
else {
- Mat4MulVecfl(re->viewmat, vec);
+ mul_m4_v3(re->viewmat, vec);
/* in vec are global coordinates
* calculate distance to camera
@@ -372,7 +372,7 @@ static int check_vnormal(float *n, float *veno)
static void calc_edge_stress_add(float *accum, VertRen *v1, VertRen *v2)
{
- float len= VecLenf(v1->co, v2->co)/VecLenf(v1->orco, v2->orco);
+ float len= len_v3v3(v1->co, v2->co)/len_v3v3(v1->orco, v2->orco);
float *acc;
acc= accum + 2*v1->index;
@@ -459,11 +459,11 @@ static void calc_tangent_vector(ObjectRen *obr, VertexTangent **vtangents, MemAr
}
else if(v1->orco) {
uv1= uv[0]; uv2= uv[1]; uv3= uv[2]; uv4= uv[3];
- spheremap(v1->orco[0], v1->orco[1], v1->orco[2], &uv[0][0], &uv[0][1]);
- spheremap(v2->orco[0], v2->orco[1], v2->orco[2], &uv[1][0], &uv[1][1]);
- spheremap(v3->orco[0], v3->orco[1], v3->orco[2], &uv[2][0], &uv[2][1]);
+ map_to_sphere( &uv[0][0], &uv[0][1],v1->orco[0], v1->orco[1], v1->orco[2]);
+ map_to_sphere( &uv[1][0], &uv[1][1],v2->orco[0], v2->orco[1], v2->orco[2]);
+ map_to_sphere( &uv[2][0], &uv[2][1],v3->orco[0], v3->orco[1], v3->orco[2]);
if(v4)
- spheremap(v4->orco[0], v4->orco[1], v4->orco[2], &uv[3][0], &uv[3][1]);
+ map_to_sphere( &uv[3][0], &uv[3][1],v4->orco[0], v4->orco[1], v4->orco[2]);
}
else return;
@@ -539,23 +539,23 @@ static void calc_vertexnormals(Render *re, ObjectRen *obr, int do_tangent, int d
if(re->flag & R_GLOB_NOPUNOFLIP)
vlr->flag |= R_NOPUNOFLIP;
- VecSubf(n1, v2->co, v1->co);
- Normalize(n1);
- VecSubf(n2, v3->co, v2->co);
- Normalize(n2);
+ sub_v3_v3v3(n1, v2->co, v1->co);
+ normalize_v3(n1);
+ sub_v3_v3v3(n2, v3->co, v2->co);
+ normalize_v3(n2);
if(v4==NULL) {
- VecSubf(n3, v1->co, v3->co);
- Normalize(n3);
+ sub_v3_v3v3(n3, v1->co, v3->co);
+ normalize_v3(n3);
fac1= saacos(-n1[0]*n3[0]-n1[1]*n3[1]-n1[2]*n3[2]);
fac2= saacos(-n1[0]*n2[0]-n1[1]*n2[1]-n1[2]*n2[2]);
fac3= saacos(-n2[0]*n3[0]-n2[1]*n3[1]-n2[2]*n3[2]);
}
else {
- VecSubf(n3, v4->co, v3->co);
- Normalize(n3);
- VecSubf(n4, v1->co, v4->co);
- Normalize(n4);
+ sub_v3_v3v3(n3, v4->co, v3->co);
+ normalize_v3(n3);
+ sub_v3_v3v3(n4, v1->co, v4->co);
+ normalize_v3(n4);
fac1= saacos(-n4[0]*n1[0]-n4[1]*n1[1]-n4[2]*n1[2]);
fac2= saacos(-n1[0]*n2[0]-n1[1]*n2[1]-n1[2]*n2[2]);
@@ -622,17 +622,17 @@ static void calc_vertexnormals(Render *re, ObjectRen *obr, int do_tangent, int d
vtang= find_vertex_tangent(vtangents[v1->index], tface->uv[0]);
VECCOPY(ftang, vtang);
- Normalize(ftang);
+ normalize_v3(ftang);
vtang= find_vertex_tangent(vtangents[v2->index], tface->uv[1]);
VECCOPY(ftang+3, vtang);
- Normalize(ftang+3);
+ normalize_v3(ftang+3);
vtang= find_vertex_tangent(vtangents[v3->index], tface->uv[2]);
VECCOPY(ftang+6, vtang);
- Normalize(ftang+6);
+ normalize_v3(ftang+6);
if(v4) {
vtang= find_vertex_tangent(vtangents[v4->index], tface->uv[3]);
VECCOPY(ftang+9, vtang);
- Normalize(ftang+9);
+ normalize_v3(ftang+9);
}
}
}
@@ -641,7 +641,7 @@ static void calc_vertexnormals(Render *re, ObjectRen *obr, int do_tangent, int d
/* normalize vertex normals */
for(a=0; a<obr->totvert; a++) {
VertRen *ver= RE_findOrAddVert(obr, a);
- Normalize(ver->n);
+ normalize_v3(ver->n);
if(do_tangent) {
float *tav= RE_vertren_get_tangent(obr, ver, 0);
if (tav) {
@@ -650,7 +650,7 @@ static void calc_vertexnormals(Render *re, ObjectRen *obr, int do_tangent, int d
tav[0] -= ver->n[0]*tdn;
tav[1] -= ver->n[1]*tdn;
tav[2] -= ver->n[2]*tdn;
- Normalize(tav);
+ normalize_v3(tav);
}
}
}
@@ -829,7 +829,7 @@ static void autosmooth(Render *re, ObjectRen *obr, float mat[][4], int degr)
/* rotate vertices and calculate normal of faces */
for(a=0; a<obr->totvert; a++) {
ver= RE_findOrAddVert(obr, a);
- Mat4MulVecfl(mat, ver->co);
+ mul_m4_v3(mat, ver->co);
}
for(a=0; a<obr->totvlak; a++) {
vlr= RE_findOrAddVlak(obr, a);
@@ -837,9 +837,9 @@ static void autosmooth(Render *re, ObjectRen *obr, float mat[][4], int degr)
/* skip wire faces */
if(vlr->v2 != vlr->v3) {
if(vlr->v4)
- CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_quad_v3( vlr->n,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
else
- CalcNormFloat(vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
}
}
}
@@ -982,9 +982,9 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, Par
int flag, i;
static int second=0;
- VecSubf(nor, vec, vec1);
- Normalize(nor); // nor needed as tangent
- Crossf(cross, vec, nor);
+ sub_v3_v3v3(nor, vec, vec1);
+ normalize_v3(nor); // nor needed as tangent
+ cross_v3_v3v3(cross, vec, nor);
/* turn cross in pixelsize */
w= vec[2]*re->winmat[2][3] + re->winmat[3][3];
@@ -1006,19 +1006,19 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, Par
/* use actual Blender units for strand width and fall back to minimum width */
if(ma->mode & MA_STR_B_UNITS){
- crosslen= VecLength(cross);
+ crosslen= len_v3(cross);
w= 2.0f*crosslen*ma->strand_min/w;
if(width < w)
width= w;
/*cross is the radius of the strand so we want it to be half of full width */
- VecMulf(cross,0.5/crosslen);
+ mul_v3_fl(cross,0.5/crosslen);
}
else
width/=w;
- VecMulf(cross, width);
+ mul_v3_fl(cross, width);
}
else width= 1.0f;
@@ -1041,30 +1041,30 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, Par
vlr->v4= RE_findOrAddVert(obr, obr->totvert++);
VECCOPY(vlr->v1->co, vec);
- VecAddf(vlr->v1->co, vlr->v1->co, cross);
+ add_v3_v3v3(vlr->v1->co, vlr->v1->co, cross);
VECCOPY(vlr->v1->n, nor);
vlr->v1->orco= sd->orco;
vlr->v1->accum= -1.0f; // accum abuse for strand texco
VECCOPY(vlr->v2->co, vec);
- VecSubf(vlr->v2->co, vlr->v2->co, cross);
+ sub_v3_v3v3(vlr->v2->co, vlr->v2->co, cross);
VECCOPY(vlr->v2->n, nor);
vlr->v2->orco= sd->orco;
vlr->v2->accum= vlr->v1->accum;
VECCOPY(vlr->v4->co, vec1);
- VecAddf(vlr->v4->co, vlr->v4->co, cross);
+ add_v3_v3v3(vlr->v4->co, vlr->v4->co, cross);
VECCOPY(vlr->v4->n, nor);
vlr->v4->orco= sd->orco;
vlr->v4->accum= 1.0f; // accum abuse for strand texco
VECCOPY(vlr->v3->co, vec1);
- VecSubf(vlr->v3->co, vlr->v3->co, cross);
+ sub_v3_v3v3(vlr->v3->co, vlr->v3->co, cross);
VECCOPY(vlr->v3->n, nor);
vlr->v3->orco= sd->orco;
vlr->v3->accum= vlr->v4->accum;
- CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_quad_v3( vlr->n,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
vlr->mat= ma;
vlr->ec= ME_V2V3;
@@ -1115,13 +1115,13 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, Par
v2= RE_findOrAddVert(obr, obr->totvert++);
VECCOPY(v1->co, vec);
- VecAddf(v1->co, v1->co, cross);
+ add_v3_v3v3(v1->co, v1->co, cross);
VECCOPY(v1->n, nor);
v1->orco= sd->orco;
v1->accum= -1.0f; // accum abuse for strand texco
VECCOPY(v2->co, vec);
- VecSubf(v2->co, v2->co, cross);
+ sub_v3_v3v3(v2->co, v2->co, cross);
VECCOPY(v2->n, nor);
v2->orco= sd->orco;
v2->accum= v1->accum;
@@ -1149,15 +1149,15 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, Par
}
else if(sd->adapt){
float dvec[3],pvec[3];
- VecSubf(dvec,avec,vec);
- Projf(pvec,dvec,vec);
- VecSubf(dvec,dvec,pvec);
+ sub_v3_v3v3(dvec,avec,vec);
+ project_v3_v3v3(pvec,dvec,vec);
+ sub_v3_v3v3(dvec,dvec,pvec);
w= vec[2]*re->winmat[2][3] + re->winmat[3][3];
dx= re->winx*dvec[0]*re->winmat[0][0]/w;
dy= re->winy*dvec[1]*re->winmat[1][1]/w;
w= sqrt(dx*dx + dy*dy);
- if(Inpf(anor,nor)<sd->adapt_angle && w>sd->adapt_pix){
+ if(dot_v3v3(anor,nor)<sd->adapt_angle && w>sd->adapt_pix){
vlr= RE_findOrAddVlak(obr, obr->totvlak++);
vlr->flag= flag;
vlr->v1= v1;
@@ -1177,18 +1177,18 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, Par
}
VECCOPY(vlr->v4->co, vec);
- VecAddf(vlr->v4->co, vlr->v4->co, cross);
+ add_v3_v3v3(vlr->v4->co, vlr->v4->co, cross);
VECCOPY(vlr->v4->n, nor);
vlr->v4->orco= sd->orco;
vlr->v4->accum= -1.0f + 2.0f*sd->time; // accum abuse for strand texco
VECCOPY(vlr->v3->co, vec);
- VecSubf(vlr->v3->co, vlr->v3->co, cross);
+ sub_v3_v3v3(vlr->v3->co, vlr->v3->co, cross);
VECCOPY(vlr->v3->n, nor);
vlr->v3->orco= sd->orco;
vlr->v3->accum= vlr->v4->accum;
- CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_quad_v3( vlr->n,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
vlr->mat= ma;
vlr->ec= ME_V2V3;
@@ -1244,8 +1244,8 @@ static void static_particle_wire(ObjectRen *obr, Material *ma, float *vec, float
VECCOPY(vlr->v1->co, vec);
VECCOPY(vlr->v2->co, vec1);
- VecSubf(vlr->n, vec, vec1);
- Normalize(vlr->n);
+ sub_v3_v3v3(vlr->n, vec, vec1);
+ normalize_v3(vlr->n);
VECCOPY(vlr->v1->n, vlr->n);
VECCOPY(vlr->v2->n, vlr->n);
@@ -1267,8 +1267,8 @@ static void static_particle_wire(ObjectRen *obr, Material *ma, float *vec, float
v1= vlr->v2; // cycle
VECCOPY(v1->co, vec);
- VecSubf(vlr->n, vec, vec1);
- Normalize(vlr->n);
+ sub_v3_v3v3(vlr->n, vec, vec1);
+ normalize_v3(vlr->n);
VECCOPY(v1->n, vlr->n);
vlr->mat= ma;
@@ -1307,21 +1307,21 @@ static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, Particl
VECADD(vlr->v1->co, bb_center, xvec);
VECADD(vlr->v1->co, vlr->v1->co, yvec);
- Mat4MulVecfl(re->viewmat, vlr->v1->co);
+ mul_m4_v3(re->viewmat, vlr->v1->co);
VECSUB(vlr->v2->co, bb_center, xvec);
VECADD(vlr->v2->co, vlr->v2->co, yvec);
- Mat4MulVecfl(re->viewmat, vlr->v2->co);
+ mul_m4_v3(re->viewmat, vlr->v2->co);
VECSUB(vlr->v3->co, bb_center, xvec);
VECSUB(vlr->v3->co, vlr->v3->co, yvec);
- Mat4MulVecfl(re->viewmat, vlr->v3->co);
+ mul_m4_v3(re->viewmat, vlr->v3->co);
VECADD(vlr->v4->co, bb_center, xvec);
VECSUB(vlr->v4->co, vlr->v4->co, yvec);
- Mat4MulVecfl(re->viewmat, vlr->v4->co);
+ mul_m4_v3(re->viewmat, vlr->v4->co);
- CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_quad_v3( vlr->n,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
VECCOPY(vlr->v1->n,vlr->n);
VECCOPY(vlr->v2->n,vlr->n);
VECCOPY(vlr->v3->n,vlr->n);
@@ -1352,10 +1352,10 @@ static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, Particl
axis2[(bb->align + 2) % 3] = 1.0f;
if(bb->lock == 0) {
zvec[bb->align] = 0.0f;
- Normalize(zvec);
+ normalize_v3(zvec);
}
- time = saacos(Inpf(zvec, axis1)) / (float)M_PI;
- if(Inpf(zvec, axis2) < 0.0f)
+ time = saacos(dot_v3v3(zvec, axis1)) / (float)M_PI;
+ if(dot_v3v3(zvec, axis2) < 0.0f)
time = 1.0f - time / 2.0f;
else
time = time / 2.0f;
@@ -1419,7 +1419,7 @@ static void particle_normal_ren(short ren_as, ParticleSettings *part, Render *re
VECCOPY(loc, state->co);
if(ren_as != PART_DRAW_BB)
- Mat4MulVecfl(re->viewmat, loc);
+ mul_m4_v3(re->viewmat, loc);
switch(ren_as) {
case PART_DRAW_LINE:
@@ -1428,11 +1428,11 @@ static void particle_normal_ren(short ren_as, ParticleSettings *part, Render *re
sd->size = hasize;
VECCOPY(vel, state->vel);
- Mat4Mul3Vecfl(re->viewmat, vel);
- Normalize(vel);
+ mul_mat3_m4_v3(re->viewmat, vel);
+ normalize_v3(vel);
if(part->draw & PART_DRAW_VEL_LENGTH)
- VecMulf(vel, VecLength(state->vel));
+ mul_v3_fl(vel, len_v3(state->vel));
VECADDFAC(loc0, loc, vel, -part->draw_line[0]);
VECADDFAC(loc1, loc, vel, part->draw_line[1]);
@@ -1651,10 +1651,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
// }
/* 2.5 setup matrices */
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat); /* need to be that way, for imat texture */
- Mat3CpyMat4(nmat, ob->imat);
- Mat3Transp(nmat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat); /* need to be that way, for imat texture */
+ copy_m3_m4(nmat, ob->imat);
+ transpose_m3(nmat);
/* 2.6 setup strand rendering */
if(part->ren_as == PART_DRAW_PATH && psys->pathcache){
@@ -1677,7 +1677,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
strandbuf= RE_addStrandBuffer(obr, (totpart+totchild)*(path_nbr+1));
strandbuf->ma= ma;
strandbuf->lay= ob->lay;
- Mat4CpyMat4(strandbuf->winmat, re->winmat);
+ copy_m4_m4(strandbuf->winmat, re->winmat);
strandbuf->winx= re->winx;
strandbuf->winy= re->winy;
strandbuf->maxdepth= 2;
@@ -1861,7 +1861,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
/* surface normal shading setup */
if(ma->mode_l & MA_STR_SURFDIFF) {
- Mat3MulVecfl(nmat, nor);
+ mul_m3_v3(nmat, nor);
sd.surfnor= nor;
}
else
@@ -1916,7 +1916,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
curlen= 0.0f;
for(k=1; k<=path_nbr; k++)
if(k<=max_k)
- strandlen += VecLenf((cache+k-1)->co, (cache+k)->co);
+ strandlen += len_v3v3((cache+k-1)->co, (cache+k)->co);
}
if(path_nbr) {
@@ -1930,11 +1930,11 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
continue;
if(k > 0)
- curlen += VecLenf((cache+k-1)->co, (cache+k)->co);
+ curlen += len_v3v3((cache+k-1)->co, (cache+k)->co);
time= curlen/strandlen;
VECCOPY(loc,state.co);
- Mat4MulVecfl(re->viewmat,loc);
+ mul_m4_v3(re->viewmat,loc);
if(strandbuf) {
VECCOPY(svert->co, loc);
@@ -1985,7 +1985,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
psys_get_particle_on_path(&sim,a,&state,1);
if(psys->parent)
- Mat4MulVecfl(psys->parent->obmat, state.co);
+ mul_m4_v3(psys->parent->obmat, state.co);
if(part->ren_as == PART_DRAW_BB) {
bb.random = random;
@@ -2005,7 +2005,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
continue;
if(psys->parent)
- Mat4MulVecfl(psys->parent->obmat, state.co);
+ mul_m4_v3(psys->parent->obmat, state.co);
if(part->ren_as == PART_DRAW_BB) {
bb.random = random;
@@ -2076,8 +2076,8 @@ static void make_render_halos(Render *re, ObjectRen *obr, Mesh *me, int totvert,
float vec[3], hasize, mat[4][4], imat[3][3];
int a, ok, seed= ma->seed1;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat3CpyMat4(imat, ob->imat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ copy_m3_m4(imat, ob->imat);
re->flag |= R_HALO;
@@ -2088,7 +2088,7 @@ static void make_render_halos(Render *re, ObjectRen *obr, Mesh *me, int totvert,
hasize= ma->hasize;
VECCOPY(vec, mvert->co);
- Mat4MulVecfl(mat, vec);
+ mul_m4_v3(mat, vec);
if(ma->mode & MA_HALOPUNO) {
xn= mvert->no[0];
@@ -2099,10 +2099,10 @@ static void make_render_halos(Render *re, ObjectRen *obr, Mesh *me, int totvert,
nor[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
nor[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
nor[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn;
- Normalize(nor);
+ normalize_v3(nor);
VECCOPY(view, vec);
- Normalize(view);
+ normalize_v3(view);
zn= nor[0]*view[0]+nor[1]*view[1]+nor[2]*view[2];
if(zn>=0.0) hasize= 0.0;
@@ -2183,7 +2183,7 @@ static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, Ve
VECCOPY(shi->vn, vr->n);
if(mat)
- Mat4MulVecfl(mat, shi->co);
+ mul_m4_v3(mat, shi->co);
if(imat) {
shi->vn[0]= imat[0][0]*vr->n[0]+imat[0][1]*vr->n[1]+imat[0][2]*vr->n[2];
@@ -2221,7 +2221,7 @@ static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, Ve
}
if (texco & TEXCO_GLOB) {
VECCOPY(shi->gl, shi->co);
- Mat4MulVecfl(re->viewinv, shi->gl);
+ mul_m4_v3(re->viewinv, shi->gl);
}
if (texco & TEXCO_NORM) {
VECCOPY(shi->orn, shi->vn);
@@ -2242,7 +2242,7 @@ static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, Ve
displace[2]= shi->displace[2] * scale[2];
if(mat)
- Mat3MulVecfl(imat, displace);
+ mul_m3_v3(imat, displace);
/* 0.5 could become button once? */
vr->co[0] += displace[0];
@@ -2306,10 +2306,10 @@ static void displace_render_face(Render *re, ObjectRen *obr, VlakRen *vlr, float
/* Recalculate the face normal - if flipped before, flip now */
if(vlr->v4) {
- CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_quad_v3( vlr->n,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
}
else {
- CalcNormFloat(vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
}
}
@@ -2325,7 +2325,7 @@ static void do_displacement(Render *re, ObjectRen *obr, float mat[][4], float im
/* Object Size with parenting */
obt=obr->ob;
while(obt){
- VecAddf(temp, obt->size, obt->dsize);
+ add_v3_v3v3(temp, obt->size, obt->dsize);
scale[0]*=temp[0]; scale[1]*=temp[1]; scale[2]*=temp[2];
obt=obt->parent;
}
@@ -2362,9 +2362,9 @@ static void init_render_mball(Render *re, ObjectRen *obr)
if (ob!=find_basis_mball(re->scene, ob))
return;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
- Mat3CpyMat4(imat, ob->imat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
+ copy_m3_m4(imat, ob->imat);
ma= give_render_material(re, ob, 1);
@@ -2385,7 +2385,7 @@ static void init_render_mball(Render *re, ObjectRen *obr)
ver= RE_findOrAddVert(obr, obr->totvert++);
VECCOPY(ver->co, data);
- Mat4MulVecfl(mat, ver->co);
+ mul_m4_v3(mat, ver->co);
/* render normals are inverted */
xn= -nors[0];
@@ -2396,8 +2396,8 @@ static void init_render_mball(Render *re, ObjectRen *obr)
ver->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
ver->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
ver->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn;
- Normalize(ver->n);
- //if(ob->transflag & OB_NEG_SCALE) VecMulf(ver->n. -1.0);
+ normalize_v3(ver->n);
+ //if(ob->transflag & OB_NEG_SCALE) mul_v3_fl(ver->n. -1.0);
if(need_orco) ver->orco= orco;
}
@@ -2412,9 +2412,9 @@ static void init_render_mball(Render *re, ObjectRen *obr)
vlr->v4= 0;
if(ob->transflag & OB_NEG_SCALE)
- CalcNormFloat(vlr->v1->co, vlr->v2->co, vlr->v3->co, vlr->n);
+ normal_tri_v3( vlr->n,vlr->v1->co, vlr->v2->co, vlr->v3->co);
else
- CalcNormFloat(vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
vlr->mat= ma;
vlr->flag= ME_SMOOTH+R_NOPUNOFLIP;
@@ -2429,9 +2429,9 @@ static void init_render_mball(Render *re, ObjectRen *obr)
vlr1->v2= vlr1->v3;
vlr1->v3= RE_findOrAddVert(obr, index[3]);
if(ob->transflag & OB_NEG_SCALE)
- CalcNormFloat(vlr1->v1->co, vlr1->v2->co, vlr1->v3->co, vlr1->n);
+ normal_tri_v3( vlr1->n,vlr1->v1->co, vlr1->v2->co, vlr1->v3->co);
else
- CalcNormFloat(vlr1->v3->co, vlr1->v2->co, vlr1->v1->co, vlr1->n);
+ normal_tri_v3( vlr1->n,vlr1->v3->co, vlr1->v2->co, vlr1->v1->co);
}
}
@@ -2469,7 +2469,7 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
if(orco) {
v1->orco= orco; orco+= 3; orcoret++;
}
- Mat4MulVecfl(mat, v1->co);
+ mul_m4_v3(mat, v1->co);
for (v = 1; v < sizev; v++) {
ver= RE_findOrAddVert(obr, obr->totvert++);
@@ -2477,7 +2477,7 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
if(orco) {
ver->orco= orco; orco+= 3; orcoret++;
}
- Mat4MulVecfl(mat, ver->co);
+ mul_m4_v3(mat, ver->co);
}
/* if V-cyclic, add extra vertices at end of the row */
if (dl->flag & DL_CYCL_U) {
@@ -2525,7 +2525,7 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
vlr= RE_findOrAddVlak(obr, obr->totvlak++);
vlr->v1= v1; vlr->v2= v2; vlr->v3= v3; vlr->v4= v4;
- CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, n1);
+ normal_quad_v3( n1,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
VECCOPY(vlr->n, n1);
@@ -2536,10 +2536,10 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
vlr->flag |= R_NOPUNOFLIP;
}
- VecAddf(v1->n, v1->n, n1);
- VecAddf(v2->n, v2->n, n1);
- VecAddf(v3->n, v3->n, n1);
- VecAddf(v4->n, v4->n, n1);
+ add_v3_v3v3(v1->n, v1->n, n1);
+ add_v3_v3v3(v2->n, v2->n, n1);
+ add_v3_v3v3(v3->n, v3->n, n1);
+ add_v3_v3v3(v4->n, v4->n, n1);
p1++; p2++; p3++; p4++;
}
@@ -2553,10 +2553,10 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
/* optimize! :*/
vlr= RE_findOrAddVlak(obr, UVTOINDEX(sizeu - 1, v));
vlr1= RE_findOrAddVlak(obr, UVTOINDEX(0, v));
- VecAddf(vlr1->v1->n, vlr1->v1->n, vlr->n);
- VecAddf(vlr1->v2->n, vlr1->v2->n, vlr->n);
- VecAddf(vlr->v3->n, vlr->v3->n, vlr1->n);
- VecAddf(vlr->v4->n, vlr->v4->n, vlr1->n);
+ add_v3_v3v3(vlr1->v1->n, vlr1->v1->n, vlr->n);
+ add_v3_v3v3(vlr1->v2->n, vlr1->v2->n, vlr->n);
+ add_v3_v3v3(vlr->v3->n, vlr->v3->n, vlr1->n);
+ add_v3_v3v3(vlr->v4->n, vlr->v4->n, vlr1->n);
}
}
if (dl->flag & DL_CYCL_U) {
@@ -2566,10 +2566,10 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
/* optimize! :*/
vlr= RE_findOrAddVlak(obr, UVTOINDEX(u, 0));
vlr1= RE_findOrAddVlak(obr, UVTOINDEX(u, sizev-1));
- VecAddf(vlr1->v2->n, vlr1->v2->n, vlr->n);
- VecAddf(vlr1->v3->n, vlr1->v3->n, vlr->n);
- VecAddf(vlr->v1->n, vlr->v1->n, vlr1->n);
- VecAddf(vlr->v4->n, vlr->v4->n, vlr1->n);
+ add_v3_v3v3(vlr1->v2->n, vlr1->v2->n, vlr->n);
+ add_v3_v3v3(vlr1->v3->n, vlr1->v3->n, vlr->n);
+ add_v3_v3v3(vlr->v1->n, vlr->v1->n, vlr1->n);
+ add_v3_v3v3(vlr->v4->n, vlr->v4->n, vlr1->n);
}
}
/* last vertex is an extra case:
@@ -2593,11 +2593,11 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
{
vlr= RE_findOrAddVlak(obr, UVTOINDEX(sizeu - 1, sizev - 1)); /* (m,n) */
vlr1= RE_findOrAddVlak(obr, UVTOINDEX(0,0)); /* (0,0) */
- VecAddf(n1, vlr->n, vlr1->n);
+ add_v3_v3v3(n1, vlr->n, vlr1->n);
vlr2= RE_findOrAddVlak(obr, UVTOINDEX(0, sizev-1)); /* (0,n) */
- VecAddf(n1, n1, vlr2->n);
+ add_v3_v3v3(n1, n1, vlr2->n);
vlr3= RE_findOrAddVlak(obr, UVTOINDEX(sizeu-1, 0)); /* (m,0) */
- VecAddf(n1, n1, vlr3->n);
+ add_v3_v3v3(n1, n1, vlr3->n);
VECCOPY(vlr->v3->n, n1);
VECCOPY(vlr1->v1->n, n1);
VECCOPY(vlr2->v2->n, n1);
@@ -2605,7 +2605,7 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar,
}
for(a = startvert; a < obr->totvert; a++) {
ver= RE_findOrAddVert(obr, a);
- Normalize(ver->n);
+ normalize_v3(ver->n);
}
@@ -2627,8 +2627,8 @@ static void init_render_surf(Render *re, ObjectRen *obr)
nu= cu->nurb.first;
if(nu==0) return;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
/* material array */
totmat= ob->totcol+1;
@@ -2688,8 +2688,8 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
dl= cu->disp.first;
if(cu->disp.first==NULL) return;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
/* material array */
totmat= ob->totcol+1;
@@ -2715,7 +2715,7 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
n[0]= ob->imat[0][2];
n[1]= ob->imat[1][2];
n[2]= ob->imat[2][2];
- Normalize(n);
+ normalize_v3(n);
for(a=0; a<dl->nr; a++, data+=3) {
ver= RE_findOrAddVert(obr, obr->totvert++);
@@ -2731,7 +2731,7 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
ver->flag = 0;
}
- Mat4MulVecfl(mat, ver->co);
+ mul_m4_v3(mat, ver->co);
if (orco) {
ver->orco = orco;
@@ -2783,7 +2783,7 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
ver= RE_findOrAddVert(obr, obr->totvert++);
VECCOPY(ver->co, fp);
- Mat4MulVecfl(mat, ver->co);
+ mul_m4_v3(mat, ver->co);
fp+= 3;
if (orco) {
@@ -2824,9 +2824,9 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
*/
if(frontside)
- CalcNormFloat(vlr->v2->co, vlr->v3->co, vlr->v4->co, vlr->n);
+ normal_tri_v3( vlr->n,vlr->v2->co, vlr->v3->co, vlr->v4->co);
else
- CalcNormFloat(vlr->v1->co, vlr->v2->co, vlr->v3->co, vlr->n);
+ normal_tri_v3( vlr->n,vlr->v1->co, vlr->v2->co, vlr->v3->co);
vlr->mat= matar[ dl->col ];
@@ -2847,14 +2847,14 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
for(a= startvlak; a<obr->totvlak; a++) {
vlr= RE_findOrAddVlak(obr, a);
- VecAddf(vlr->v1->n, vlr->v1->n, vlr->n);
- VecAddf(vlr->v3->n, vlr->v3->n, vlr->n);
- VecAddf(vlr->v2->n, vlr->v2->n, vlr->n);
- VecAddf(vlr->v4->n, vlr->v4->n, vlr->n);
+ add_v3_v3v3(vlr->v1->n, vlr->v1->n, vlr->n);
+ add_v3_v3v3(vlr->v3->n, vlr->v3->n, vlr->n);
+ add_v3_v3v3(vlr->v2->n, vlr->v2->n, vlr->n);
+ add_v3_v3v3(vlr->v4->n, vlr->v4->n, vlr->n);
}
for(a=startvert; a<obr->totvert; a++) {
ver= RE_findOrAddVert(obr, a);
- len= Normalize(ver->n);
+ len= normalize_v3(ver->n);
if(len==0.0) ver->flag= 1; /* flag abuse, its only used in zbuf now */
else ver->flag= 0;
}
@@ -3080,9 +3080,9 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
me= ob->data;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
- Mat3CpyMat4(imat, ob->imat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
+ copy_m3_m4(imat, ob->imat);
if(me->totvert==0)
return;
@@ -3163,7 +3163,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
ver= RE_findOrAddVert(obr, obr->totvert++);
VECCOPY(ver->co, mvert->co);
if(do_autosmooth==0) /* autosmooth on original unrotated data to prevent differences between frames */
- Mat4MulVecfl(mat, ver->co);
+ mul_m4_v3(mat, ver->co);
if(orco) {
ver->orco= orco;
@@ -3236,15 +3236,15 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
MVert *mv= me->mvert;
if(vlr->v4)
- len= CalcNormFloat4( mv[mf->v4].co, mv[mf->v3].co, mv[mf->v2].co, mv[mf->v1].co, vlr->n);
+ len= normal_quad_v3( vlr->n, mv[mf->v4].co, mv[mf->v3].co, mv[mf->v2].co, mv[mf->v1].co);
else
- len= CalcNormFloat(mv[mf->v3].co, mv[mf->v2].co, mv[mf->v1].co, vlr->n);
+ len= normal_tri_v3( vlr->n,mv[mf->v3].co, mv[mf->v2].co, mv[mf->v1].co);
}
else {
if(vlr->v4)
- len= CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ len= normal_quad_v3( vlr->n,vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co);
else
- len= CalcNormFloat(vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+ len= normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
}
vlr->mat= ma;
@@ -3318,7 +3318,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
vlr->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
vlr->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
vlr->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn;
- Normalize(vlr->n);
+ normalize_v3(vlr->n);
vlr->mat= ma;
vlr->flag= 0;
@@ -3384,13 +3384,13 @@ static void initshadowbuf(Render *re, LampRen *lar, float mat[][4])
shb->soft= lar->soft;
shb->shadhalostep= lar->shadhalostep;
- Mat4Ortho(mat);
- Mat4Invert(shb->winmat, mat); /* winmat is temp */
+ normalize_m4(mat);
+ invert_m4_m4(shb->winmat, mat); /* winmat is temp */
/* matrix: combination of inverse view and lampmat */
/* calculate again: the ortho-render has no correct viewinv */
- Mat4Invert(viewinv, re->viewmat);
- Mat4MulMat4(shb->viewmat, viewinv, shb->winmat);
+ invert_m4_m4(viewinv, re->viewmat);
+ mul_m4_m4m4(shb->viewmat, viewinv, shb->winmat);
/* projection */
shb->d= lar->clipsta;
@@ -3469,11 +3469,11 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
BLI_addtail(&re->lampren, lar);
go->lampren= lar;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
- Mat3CpyMat4(lar->mat, mat);
- Mat3CpyMat4(lar->imat, ob->imat);
+ copy_m3_m4(lar->mat, mat);
+ copy_m3_m4(lar->imat, ob->imat);
lar->bufsize = la->bufsize;
lar->samp = la->samp;
@@ -3498,7 +3498,7 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
lar->vec[0]= -mat[2][0];
lar->vec[1]= -mat[2][1];
lar->vec[2]= -mat[2][2];
- Normalize(lar->vec);
+ normalize_v3(lar->vec);
lar->co[0]= mat[3][0];
lar->co[1]= mat[3][1];
lar->co[2]= mat[3][2];
@@ -3577,7 +3577,7 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
lar->sunsky->effect_type = la->sun_effect_type;
VECCOPY(vec,ob->obmat[2]);
- Normalize(vec);
+ normalize_v3(vec);
InitSunSky(lar->sunsky, la->atm_turbidity, vec, la->horizon_brightness,
la->spread, la->sun_brightness, la->sun_size, la->backscattered_light,
@@ -3607,9 +3607,9 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
if(lar->type==LA_SPOT) {
- Normalize(lar->imat[0]);
- Normalize(lar->imat[1]);
- Normalize(lar->imat[2]);
+ normalize_v3(lar->imat[0]);
+ normalize_v3(lar->imat[1]);
+ normalize_v3(lar->imat[2]);
xn= saacos(lar->spotsi);
xn= sin(xn)/cos(xn);
@@ -3630,7 +3630,7 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
lar->sh_invcampos[0]= -lar->co[0];
lar->sh_invcampos[1]= -lar->co[1];
lar->sh_invcampos[2]= -lar->co[2];
- Mat3MulVecfl(lar->imat, lar->sh_invcampos);
+ mul_m3_v3(lar->imat, lar->sh_invcampos);
/* z factor, for a normalized volume */
angle= saacos(lar->spotsi);
@@ -3677,7 +3677,7 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
else if (la->type==LA_SPOT && (lar->mode & LA_SHAD_BUF) ) {
/* Per lamp, one shadow buffer is made. */
lar->bufflag= la->bufflag;
- Mat4CpyMat4(mat, ob->obmat);
+ copy_m4_m4(mat, ob->obmat);
initshadowbuf(re, lar, mat); // mat is altered
}
@@ -3792,8 +3792,8 @@ void init_render_world(Render *re)
cp[3]= 1;
VECCOPY(re->grvec, re->viewmat[2]);
- Normalize(re->grvec);
- Mat3CpyMat4(re->imat, re->viewinv);
+ normalize_v3(re->grvec);
+ copy_m3_m4(re->imat, re->viewinv);
for(a=0; a<MAX_MTEX; a++)
if(re->wrld.mtex[a] && re->wrld.mtex[a]->tex) re->wrld.skytype |= WO_SKYTEX;
@@ -3946,8 +3946,8 @@ static void split_quads(ObjectRen *obr, int dir)
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);
+ normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
+ normal_tri_v3( vlr1->n,vlr1->v3->co, vlr1->v2->co, vlr1->v1->co);
}
/* clear the flag when not divided */
else vlr->flag &= ~R_DIVIDE_24;
@@ -4011,8 +4011,8 @@ static void check_non_flat_quads(ObjectRen *obr)
/* 1---2 1---2 0 = orig face, 1 = new face */
/* render normals are inverted in render! we calculate normal of single tria here */
- flen= CalcNormFloat(vlr->v4->co, vlr->v3->co, vlr->v1->co, nor);
- if(flen==0.0) CalcNormFloat(vlr->v4->co, vlr->v2->co, vlr->v1->co, nor);
+ flen= normal_tri_v3( nor,vlr->v4->co, vlr->v3->co, vlr->v1->co);
+ if(flen==0.0) normal_tri_v3( nor,vlr->v4->co, vlr->v2->co, vlr->v1->co);
xn= nor[0]*vlr->n[0] + nor[1]*vlr->n[1] + nor[2]*vlr->n[2];
@@ -4024,10 +4024,10 @@ static void check_non_flat_quads(ObjectRen *obr)
vlr1->flag |= R_FACE_SPLIT;
/* split direction based on vnorms */
- CalcNormFloat(vlr->v1->co, vlr->v2->co, vlr->v3->co, nor);
+ normal_tri_v3( nor,vlr->v1->co, vlr->v2->co, vlr->v3->co);
d1= nor[0]*vlr->v1->n[0] + nor[1]*vlr->v1->n[1] + nor[2]*vlr->v1->n[2];
- CalcNormFloat(vlr->v2->co, vlr->v3->co, vlr->v4->co, nor);
+ normal_tri_v3( nor,vlr->v2->co, vlr->v3->co, vlr->v4->co);
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;
@@ -4053,8 +4053,8 @@ static void check_non_flat_quads(ObjectRen *obr)
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);
+ normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
+ normal_tri_v3( vlr1->n,vlr1->v3->co, vlr1->v2->co, vlr1->v1->co);
}
/* clear the flag when not divided */
else vlr->flag &= ~R_DIVIDE_24;
@@ -4143,8 +4143,8 @@ static void find_dupli_instances(Render *re, ObjectRen *obr)
float imat[4][4], obmat[4][4], obimat[4][4], nmat[3][3];
int first = 1;
- Mat4MulMat4(obmat, obr->obmat, re->viewmat);
- Mat4Invert(imat, obmat);
+ mul_m4_m4m4(obmat, obr->obmat, re->viewmat);
+ invert_m4_m4(imat, obmat);
/* for objects instanced by dupliverts/faces/particles, we go over the
* list of instances to find ones that instance obr, and setup their
@@ -4155,12 +4155,12 @@ static void find_dupli_instances(Render *re, ObjectRen *obr)
/* compute difference between object matrix and
* object matrix with dupli transform, in viewspace */
- Mat4CpyMat4(obimat, obi->mat);
- Mat4MulMat4(obi->mat, imat, obimat);
+ copy_m4_m4(obimat, obi->mat);
+ mul_m4_m4m4(obi->mat, imat, obimat);
- Mat3CpyMat4(nmat, obi->mat);
- Mat3Inv(obi->nmat, nmat);
- Mat3Transp(obi->nmat);
+ copy_m3_m4(nmat, obi->mat);
+ invert_m3_m3(obi->nmat, nmat);
+ transpose_m3(obi->nmat);
if(!first) {
re->totvert += obr->totvert;
@@ -4178,19 +4178,19 @@ static void assign_dupligroup_dupli(Render *re, ObjectInstanceRen *obi, ObjectRe
{
float imat[4][4], obmat[4][4], obimat[4][4], nmat[3][3];
- Mat4MulMat4(obmat, obr->obmat, re->viewmat);
- Mat4Invert(imat, obmat);
+ mul_m4_m4m4(obmat, obr->obmat, re->viewmat);
+ invert_m4_m4(imat, obmat);
obi->obr= obr;
/* compute difference between object matrix and
* object matrix with dupli transform, in viewspace */
- Mat4CpyMat4(obimat, obi->mat);
- Mat4MulMat4(obi->mat, imat, obimat);
+ copy_m4_m4(obimat, obi->mat);
+ mul_m4_m4m4(obi->mat, imat, obimat);
- Mat3CpyMat4(nmat, obi->mat);
- Mat3Inv(obi->nmat, nmat);
- Mat3Transp(obi->nmat);
+ copy_m3_m4(nmat, obi->mat);
+ invert_m3_m3(obi->nmat, nmat);
+ transpose_m3(obi->nmat);
re->totvert += obr->totvert;
re->totvlak += obr->totvlak;
@@ -4253,8 +4253,8 @@ static void set_dupli_tex_mat(Render *re, ObjectInstanceRen *obi, DupliObject *d
float imat[4][4];
obi->duplitexmat= BLI_memarena_alloc(re->memArena, sizeof(float)*4*4);
- Mat4Invert(imat, dob->mat);
- Mat4MulSerie(obi->duplitexmat, re->viewmat, dob->omat, imat, re->viewinv, 0, 0, 0, 0);
+ invert_m4_m4(imat, dob->mat);
+ mul_serie_m4(obi->duplitexmat, re->viewmat, dob->omat, imat, re->viewinv, 0, 0, 0, 0);
}
}
@@ -4325,7 +4325,7 @@ static void add_render_object(Render *re, Object *ob, Object *par, DupliObject *
obr= RE_addRenderObject(re, ob, par, index, 0, ob->lay);
if((dob && !dob->animated) || (ob->transflag & OB_RENDER_DUPLI)) {
obr->flag |= R_INSTANCEABLE;
- Mat4CpyMat4(obr->obmat, ob->obmat);
+ copy_m4_m4(obr->obmat, ob->obmat);
}
if(obr->lay & vectorlay)
obr->flag |= R_NEED_VECTORS;
@@ -4353,7 +4353,7 @@ static void add_render_object(Render *re, Object *ob, Object *par, DupliObject *
obr= RE_addRenderObject(re, ob, par, index, psysindex, ob->lay);
if((dob && !dob->animated) || (ob->transflag & OB_RENDER_DUPLI)) {
obr->flag |= R_INSTANCEABLE;
- Mat4CpyMat4(obr->obmat, ob->obmat);
+ copy_m4_m4(obr->obmat, ob->obmat);
}
if(obr->lay & vectorlay)
obr->flag |= R_NEED_VECTORS;
@@ -4384,8 +4384,8 @@ static void init_render_object(Render *re, Object *ob, Object *par, DupliObject
else if(render_object_type(ob->type))
add_render_object(re, ob, par, dob, timeoffset, vectorlay);
else {
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
}
time= PIL_check_seconds_timer();
@@ -4492,7 +4492,7 @@ void RE_Database_Free(Render *re)
}
}
-static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object *actob)
+static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob)
{
/* override not showing object when duplis are used with particles */
if(ob->transflag & OB_DUPLIPARTS)
@@ -4500,6 +4500,10 @@ static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object
else if((ob->transflag & OB_DUPLI) && !(ob->transflag & OB_DUPLIFRAMES))
return 0;
+ /* don't add non-basic meta objects, ends up having renderobjects with no geometry */
+ if (ob!=find_basis_mball(re->scene, ob))
+ return 0;
+
if(nolamps && (ob->type==OB_LAMP))
return 0;
@@ -4605,7 +4609,7 @@ static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, in
if(ob->flag & OB_DONE) {
if(ob->transflag & OB_RENDER_DUPLI) {
- if(allow_render_object(ob, nolamps, onlyselected, actob)) {
+ if(allow_render_object(re, ob, nolamps, onlyselected, actob)) {
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
ob->transflag &= ~OB_RENDER_DUPLI;
@@ -4635,8 +4639,8 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
for(SETLOOPER(re->scene, base)) {
ob= base->object;
/* imat objects has to be done here, since displace can have texture using Object map-input */
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
/* each object should only be rendered once */
ob->flag &= ~OB_DONE;
ob->transflag &= ~OB_RENDER_DUPLI;
@@ -4659,7 +4663,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
/* OB_RENDER_DUPLI means instances for it were already created, now
* it still needs to create the ObjectRen containing the data */
if(ob->transflag & OB_RENDER_DUPLI) {
- if(allow_render_object(ob, nolamps, onlyselected, actob)) {
+ if(allow_render_object(re, ob, nolamps, onlyselected, actob)) {
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
ob->transflag &= ~OB_RENDER_DUPLI;
}
@@ -4681,7 +4685,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
for(dob= lb->first; dob; dob= dob->next) {
Object *obd= dob->ob;
- Mat4CpyMat4(obd->obmat, dob->mat);
+ copy_m4_m4(obd->obmat, dob->mat);
/* group duplis need to set ob matrices correct, for deform. so no_draw is part handled */
if(!(obd->transflag & OB_RENDER_DUPLI) && dob->no_draw)
@@ -4693,7 +4697,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
if(obd->type==OB_MBALL)
continue;
- if(!allow_render_object(obd, nolamps, onlyselected, actob))
+ if(!allow_render_object(re, obd, nolamps, onlyselected, actob))
continue;
if(allow_render_dupli_instance(re, dob, obd)) {
@@ -4706,7 +4710,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
* this is a duplivert/face/particle, or it is a non-animated object in
* a dupligroup that has already been created before */
if(dob->type != OB_DUPLIGROUP || (obr=find_dupligroup_dupli(re, obd, 0))) {
- Mat4MulMat4(mat, dob->mat, re->viewmat);
+ mul_m4_m4m4(mat, dob->mat, re->viewmat);
obi= RE_addRenderInstance(re, NULL, obd, ob, dob->index, 0, mat, obd->lay);
/* fill in instance variables for texturing */
@@ -4763,10 +4767,10 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
}
free_object_duplilist(lb);
- if(allow_render_object(ob, nolamps, onlyselected, actob))
+ if(allow_render_object(re, ob, nolamps, onlyselected, actob))
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
}
- else if(allow_render_object(ob, nolamps, onlyselected, actob))
+ else if(allow_render_object(re, ob, nolamps, onlyselected, actob))
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
}
@@ -4782,8 +4786,8 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
if(redoimat) {
for(SETLOOPER(re->scene, base)) {
ob= base->object;
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
- Mat4Invert(ob->imat, mat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
+ invert_m4_m4(ob->imat, mat);
}
}
@@ -4827,8 +4831,8 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view)
/* if no camera, viewmat should have been set! */
if(use_camera_view && re->scene->camera) {
- Mat4Ortho(re->scene->camera->obmat);
- Mat4Invert(mat, re->scene->camera->obmat);
+ normalize_m4(re->scene->camera->obmat);
+ invert_m4_m4(mat, re->scene->camera->obmat);
RE_SetView(re, mat);
re->scene->camera->recalc= OB_RECALC_OB; /* force correct matrix for scaled cameras */
}
@@ -4948,7 +4952,7 @@ void RE_DataBase_ApplyWindow(Render *re)
void RE_DataBase_GetView(Render *re, float mat[][4])
{
- Mat4CpyMat4(mat, re->viewmat);
+ copy_m4_m4(mat, re->viewmat);
}
/* ------------------------------------------------------------------------- */
@@ -4982,8 +4986,8 @@ static void database_fromscene_vectors(Render *re, Scene *scene, int timeoffset)
/* if no camera, viewmat should have been set! */
if(re->scene->camera) {
- Mat4Ortho(re->scene->camera->obmat);
- Mat4Invert(mat, re->scene->camera->obmat);
+ normalize_m4(re->scene->camera->obmat);
+ invert_m4_m4(mat, re->scene->camera->obmat);
RE_SetView(re, mat);
}
@@ -5091,9 +5095,9 @@ static float *calculate_strandsurface_speedvectors(Render *re, ObjectInstanceRen
if(mesh->co && mesh->prevco && mesh->nextco) {
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(winmat, obi->mat, re->winmat);
+ mul_m4_m4m4(winmat, obi->mat, re->winmat);
else
- Mat4CpyMat4(winmat, re->winmat);
+ copy_m4_m4(winmat, re->winmat);
winspeed= MEM_callocN(sizeof(float)*4*mesh->totvert, "StrandSurfWin");
@@ -5128,9 +5132,9 @@ static void calculate_speedvectors(Render *re, ObjectInstanceRen *obi, float *ve
int a, *face, *index;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(winmat, obi->mat, re->winmat);
+ mul_m4_m4m4(winmat, obi->mat, re->winmat);
else
- Mat4CpyMat4(winmat, re->winmat);
+ copy_m4_m4(winmat, re->winmat);
if(obr->vertnodes) {
for(a=0; a<obr->totvert; a++, vectors+=2) {
@@ -5168,7 +5172,7 @@ static void calculate_speedvectors(Render *re, ObjectInstanceRen *obi, float *ve
co3= mesh->co[face[2]];
co4= (face[3])? mesh->co[face[3]]: NULL;
- InterpWeightsQ3Dfl(co1, co2, co3, co4, strand->vert->co, w);
+ interp_weights_face_v3( w,co1, co2, co3, co4, strand->vert->co);
speed[0]= speed[1]= speed[2]= speed[3]= 0.0f;
QUATADDFAC(speed, speed, winspeed[face[0]], w[0]);
@@ -5208,8 +5212,8 @@ static int load_fluidsimspeedvectors(Render *re, ObjectInstanceRen *obi, float *
else
return 0;
- Mat4CpyMat4(mat, re->viewmat);
- Mat4Invert(imat, mat);
+ copy_m4_m4(mat, re->viewmat);
+ invert_m4_m4(imat, mat);
/* set first vertex OK */
if(!fss->meshSurfNormals) return 0;
@@ -5222,9 +5226,9 @@ static int load_fluidsimspeedvectors(Render *re, ObjectInstanceRen *obi, float *
velarray = (float *)fss->meshSurfNormals;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(winmat, obi->mat, re->winmat);
+ mul_m4_m4m4(winmat, obi->mat, re->winmat);
else
- Mat4CpyMat4(winmat, re->winmat);
+ copy_m4_m4(winmat, re->winmat);
/* (bad) HACK calculate average velocity */
/* better solution would be fixing getVelocityAt() in intern/elbeem/intern/solver_util.cpp
@@ -5312,9 +5316,9 @@ static void copy_dbase_object_vectors(Render *re, ListBase *lb)
vec= obilb->vectors= MEM_mallocN(2*sizeof(float)*totvector, "vector array");
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(winmat, obi->mat, re->winmat);
+ mul_m4_m4m4(winmat, obi->mat, re->winmat);
else
- Mat4CpyMat4(winmat, re->winmat);
+ copy_m4_m4(winmat, re->winmat);
for(a=0; a<obr->totvert; a++, vec+=2) {
if((a & 255)==0) ver= obr->vertnodes[a>>8].vert;
@@ -5513,12 +5517,12 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
/* if no camera, set unit */
if(re->scene->camera) {
- Mat4Ortho(re->scene->camera->obmat);
- Mat4Invert(mat, re->scene->camera->obmat);
+ normalize_m4(re->scene->camera->obmat);
+ invert_m4_m4(mat, re->scene->camera->obmat);
RE_SetView(re, mat);
}
else {
- Mat4One(mat);
+ unit_m4(mat);
RE_SetView(re, mat);
}
@@ -5601,8 +5605,8 @@ void RE_make_sticky(Scene *scene, View3D *v3d)
RE_SetCamera(re, scene->camera);
/* and set view matrix */
- Mat4Ortho(scene->camera->obmat);
- Mat4Invert(mat, scene->camera->obmat);
+ normalize_m4(scene->camera->obmat);
+ invert_m4_m4(mat, scene->camera->obmat);
RE_SetView(re, mat);
for(base= FIRSTBASE; base; base= base->next) {
@@ -5618,12 +5622,12 @@ void RE_make_sticky(Scene *scene, View3D *v3d)
CD_CALLOC, NULL, me->totvert);
where_is_object(scene, ob);
- Mat4MulMat4(mat, ob->obmat, re->viewmat);
+ mul_m4_m4m4(mat, ob->obmat, re->viewmat);
ms= me->msticky;
for(a=0; a<me->totvert; a++, ms++, mvert++) {
VECCOPY(ho, mvert->co);
- Mat4MulVecfl(mat, ho);
+ mul_m4_v3(mat, ho);
projectverto(ho, re->winmat, ho);
ms->co[0]= ho[0]/ho[3];
ms->co[1]= ho[1]/ho[3];
diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c
index b5774d11799..323eb6a9500 100644
--- a/source/blender/render/intern/source/envmap.c
+++ b/source/blender/render/intern/source/envmap.c
@@ -31,7 +31,7 @@
/* external modules: */
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_threads.h"
@@ -211,9 +211,9 @@ static void envmap_transmatrix(float mat[][4], int part)
eul[2]= -M_PI/2.0;
}
- Mat4CpyMat4(tmat, mat);
- EulToMat4(eul, rotmat);
- Mat4MulSerie(mat, tmat, rotmat,
+ copy_m4_m4(tmat, mat);
+ eul_to_mat4( rotmat,eul);
+ mul_serie_m4(mat, tmat, rotmat,
0, 0, 0,
0, 0, 0);
}
@@ -231,28 +231,28 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode)
int a;
if(mode==0) {
- Mat4Invert(tmat, mat);
- Mat3CpyMat4(imat, tmat);
+ invert_m4_m4(tmat, mat);
+ copy_m3_m4(imat, tmat);
}
else {
- Mat4CpyMat4(tmat, mat);
- Mat3CpyMat4(imat, mat);
+ copy_m4_m4(tmat, mat);
+ copy_m3_m4(imat, mat);
}
for(obi=re->instancetable.first; obi; obi=obi->next) {
/* append or set matrix depending on dupli */
if(obi->flag & R_DUPLI_TRANSFORMED) {
- Mat4CpyMat4(tmpmat, obi->mat);
- Mat4MulMat4(obi->mat, tmpmat, tmat);
+ copy_m4_m4(tmpmat, obi->mat);
+ mul_m4_m4m4(obi->mat, tmpmat, tmat);
}
else if(mode==1)
- Mat4CpyMat4(obi->mat, tmat);
+ copy_m4_m4(obi->mat, tmat);
else
- Mat4One(obi->mat);
+ unit_m4(obi->mat);
- Mat3CpyMat4(cmat, obi->mat);
- Mat3Inv(obi->nmat, cmat);
- Mat3Transp(obi->nmat);
+ copy_m3_m4(cmat, obi->mat);
+ invert_m3_m3(obi->nmat, cmat);
+ transpose_m3(obi->nmat);
/* indicate the renderer has to use transform matrices */
if(mode==0)
@@ -267,7 +267,7 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode)
if((a & 255)==0) har= obr->bloha[a>>8];
else har++;
- Mat4MulVecfl(tmat, har->co);
+ mul_m4_v3(tmat, har->co);
}
}
@@ -277,25 +277,25 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode)
/* removed here some horrible code of someone in NaN who tried to fix
prototypes... just solved by introducing a correct cmat[3][3] instead
of using smat. this works, check square spots in reflections (ton) */
- Mat3CpyMat3(cmat, lar->imat);
- Mat3MulMat3(lar->imat, cmat, imat);
+ copy_m3_m3(cmat, lar->imat);
+ mul_m3_m3m3(lar->imat, cmat, imat);
- Mat3MulVecfl(imat, lar->vec);
- Mat4MulVecfl(tmat, lar->co);
+ mul_m3_v3(imat, lar->vec);
+ mul_m4_v3(tmat, lar->co);
lar->sh_invcampos[0]= -lar->co[0];
lar->sh_invcampos[1]= -lar->co[1];
lar->sh_invcampos[2]= -lar->co[2];
- Mat3MulVecfl(lar->imat, lar->sh_invcampos);
+ mul_m3_v3(lar->imat, lar->sh_invcampos);
lar->sh_invcampos[2]*= lar->sh_zfac;
if(lar->shb) {
if(mode==1) {
- Mat4Invert(pmat, mat);
- Mat4MulMat4(smat, pmat, lar->shb->viewmat);
- Mat4MulMat4(lar->shb->persmat, smat, lar->shb->winmat);
+ invert_m4_m4(pmat, mat);
+ mul_m4_m4m4(smat, pmat, lar->shb->viewmat);
+ mul_m4_m4m4(lar->shb->persmat, smat, lar->shb->winmat);
}
- else Mat4MulMat4(lar->shb->persmat, lar->shb->viewmat, lar->shb->winmat);
+ else mul_m4_m4m4(lar->shb->persmat, lar->shb->viewmat, lar->shb->winmat);
}
}
@@ -373,8 +373,8 @@ static void env_set_imats(Render *re)
base= re->scene->base.first;
while(base) {
- Mat4MulMat4(mat, base->object->obmat, re->viewmat);
- Mat4Invert(base->object->imat, mat);
+ mul_m4_m4m4(mat, base->object->obmat, re->viewmat);
+ invert_m4_m4(base->object->imat, mat);
base= base->next;
}
@@ -393,18 +393,18 @@ static void render_envmap(Render *re, EnvMap *env)
short part;
/* need a recalc: ortho-render has no correct viewinv */
- Mat4Invert(oldviewinv, re->viewmat);
+ invert_m4_m4(oldviewinv, re->viewmat);
envre= envmap_render_copy(re, env);
/* precalc orthmat for object */
- Mat4CpyMat4(orthmat, env->object->obmat);
- Mat4Ortho(orthmat);
+ copy_m4_m4(orthmat, env->object->obmat);
+ normalize_m4(orthmat);
/* need imat later for texture imat */
- Mat4MulMat4(mat, orthmat, re->viewmat);
- Mat4Invert(tmat, mat);
- Mat3CpyMat4(env->obimat, tmat);
+ mul_m4_m4m4(mat, orthmat, re->viewmat);
+ invert_m4_m4(tmat, mat);
+ copy_m3_m4(env->obimat, tmat);
for(part=0; part<6; part++) {
if(env->type==ENV_PLANE && part!=1)
@@ -412,17 +412,17 @@ static void render_envmap(Render *re, EnvMap *env)
re->display_clear(re->dch, envre->result);
- Mat4CpyMat4(tmat, orthmat);
+ copy_m4_m4(tmat, orthmat);
envmap_transmatrix(tmat, part);
- Mat4Invert(mat, tmat);
+ invert_m4_m4(mat, tmat);
/* mat now is the camera 'viewmat' */
- Mat4CpyMat4(envre->viewmat, mat);
- Mat4CpyMat4(envre->viewinv, tmat);
+ copy_m4_m4(envre->viewmat, mat);
+ copy_m4_m4(envre->viewinv, tmat);
/* we have to correct for the already rotated vertexcoords */
- Mat4MulMat4(tmat, oldviewinv, envre->viewmat);
- Mat4Invert(env->imat, tmat);
+ mul_m4_m4m4(tmat, oldviewinv, envre->viewmat);
+ invert_m4_m4(env->imat, tmat);
env_rotate_scene(envre, tmat, 1);
init_render_world(envre);
@@ -503,13 +503,13 @@ void make_envmaps(Render *re)
float orthmat[4][4], mat[4][4], tmat[4][4];
/* precalc orthmat for object */
- Mat4CpyMat4(orthmat, env->object->obmat);
- Mat4Ortho(orthmat);
+ copy_m4_m4(orthmat, env->object->obmat);
+ normalize_m4(orthmat);
/* need imat later for texture imat */
- Mat4MulMat4(mat, orthmat, re->viewmat);
- Mat4Invert(tmat, mat);
- Mat3CpyMat4(env->obimat, tmat);
+ mul_m4_m4m4(mat, orthmat, re->viewmat);
+ invert_m4_m4(tmat, mat);
+ copy_m3_m4(env->obimat, tmat);
}
else {
@@ -678,20 +678,20 @@ int envmaptex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex, TexRe
/* rotate to envmap space, if object is set */
VECCOPY(vec, texvec);
- if(env->object) Mat3MulVecfl(env->obimat, vec);
- else Mat4Mul3Vecfl(R.viewinv, vec);
+ if(env->object) mul_m3_v3(env->obimat, vec);
+ else mul_mat3_m4_v3(R.viewinv, vec);
face= envcube_isect(env, vec, sco);
ibuf= env->cube[face];
if(osatex) {
if(env->object) {
- Mat3MulVecfl(env->obimat, dxt);
- Mat3MulVecfl(env->obimat, dyt);
+ mul_m3_v3(env->obimat, dxt);
+ mul_m3_v3(env->obimat, dyt);
}
else {
- Mat4Mul3Vecfl(R.viewinv, dxt);
- Mat4Mul3Vecfl(R.viewinv, dyt);
+ mul_mat3_m4_v3(R.viewinv, dxt);
+ mul_mat3_m4_v3(R.viewinv, dyt);
}
set_dxtdyt(dxts, dyts, dxt, dyt, face);
imagewraposa(tex, NULL, ibuf, sco, dxts, dyts, texres);
@@ -703,9 +703,9 @@ int envmaptex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex, TexRe
texr1.nor= texr2.nor= NULL;
- VecAddf(vec, vec, dxt);
+ add_v3_v3v3(vec, vec, dxt);
face1= envcube_isect(env, vec, sco);
- VecSubf(vec, vec, dxt);
+ sub_v3_v3v3(vec, vec, dxt);
if(face!=face1) {
ibuf= env->cube[face1];
@@ -716,9 +716,9 @@ int envmaptex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex, TexRe
/* here was the nasty bug! results were not zero-ed. FPE! */
- VecAddf(vec, vec, dyt);
+ add_v3_v3v3(vec, vec, dyt);
face1= envcube_isect(env, vec, sco);
- VecSubf(vec, vec, dyt);
+ sub_v3_v3v3(vec, vec, dyt);
if(face!=face1) {
ibuf= env->cube[face1];
diff --git a/source/blender/render/intern/source/imagetexture.c b/source/blender/render/intern/source/imagetexture.c
index 01131f09b96..3d46fdfaaee 100644
--- a/source/blender/render/intern/source/imagetexture.c
+++ b/source/blender/render/intern/source/imagetexture.c
@@ -48,7 +48,7 @@
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_threads.h"
diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c
index d388e81a745..abff8bf2655 100644
--- a/source/blender/render/intern/source/initrender.c
+++ b/source/blender/render/intern/source/initrender.c
@@ -37,7 +37,7 @@
#include "PIL_time.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_jitter.h"
@@ -562,7 +562,7 @@ void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, flo
{
re->r.cfra= frame;
RE_SetCamera(re, camera);
- Mat4CpyMat4(mat, re->winmat);
+ copy_m4_m4(mat, re->winmat);
}
/* ~~~~~~~~~~~~~~~~ part (tile) calculus ~~~~~~~~~~~~~~~~~~~~~~ */
diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c
index a15377a8c6d..f62668b84c0 100644
--- a/source/blender/render/intern/source/occlusion.c
+++ b/source/blender/render/intern/source/occlusion.c
@@ -36,7 +36,7 @@
#include "DNA_material_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_memarena.h"
#include "BLI_threads.h"
@@ -165,7 +165,7 @@ static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr,
/* set up view vector */
VECCOPY(shi->view, shi->co);
- Normalize(shi->view);
+ normalize_v3(shi->view);
/* cache for shadow */
shi->samplenr++;
@@ -181,8 +181,8 @@ static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr,
/* not a pretty solution, but fixes common cases */
if(shi->obr->ob && shi->obr->ob->transflag & OB_NEG_SCALE) {
- VecNegf(shi->vn);
- VecNegf(shi->vno);
+ negate_v3(shi->vn);
+ negate_v3(shi->vno);
}
/* init material vars */
@@ -311,12 +311,12 @@ static void occ_face(const OccFace *face, float *co, float *normal, float *area)
if(co) {
if(vlr->v4)
- VecLerpf(co, vlr->v1->co, vlr->v3->co, 0.5f);
+ interp_v3_v3v3(co, vlr->v1->co, vlr->v3->co, 0.5f);
else
- CalcCent3f(co, vlr->v1->co, vlr->v2->co, vlr->v3->co);
+ cent_tri_v3(co, vlr->v1->co, vlr->v2->co, vlr->v3->co);
if(obi->flag & R_TRANSFORMED)
- Mat4MulVecfl(obi->mat, co);
+ mul_m4_v3(obi->mat, co);
}
if(normal) {
@@ -325,7 +325,7 @@ static void occ_face(const OccFace *face, float *co, float *normal, float *area)
normal[2]= -vlr->n[2];
if(obi->flag & R_TRANSFORMED)
- Mat3MulVecfl(obi->nmat, normal);
+ mul_m3_v3(obi->nmat, normal);
}
if(area) {
@@ -335,17 +335,17 @@ static void occ_face(const OccFace *face, float *co, float *normal, float *area)
if(vlr->v4) VECCOPY(v4, vlr->v4->co);
if(obi->flag & R_TRANSFORMED) {
- Mat4MulVecfl(obi->mat, v1);
- Mat4MulVecfl(obi->mat, v2);
- Mat4MulVecfl(obi->mat, v3);
- if(vlr->v4) Mat4MulVecfl(obi->mat, v4);
+ mul_m4_v3(obi->mat, v1);
+ mul_m4_v3(obi->mat, v2);
+ mul_m4_v3(obi->mat, v3);
+ if(vlr->v4) mul_m4_v3(obi->mat, v4);
}
/* todo: correct area for instances */
if(vlr->v4)
- *area= AreaQ3Dfl(v1, v2, v3, v4);
+ *area= area_quad_v3(v1, v2, v3, v4);
else
- *area= AreaT3Dfl(v1, v2, v3);
+ *area= area_tri_v3(v1, v2, v3);
}
}
@@ -591,7 +591,7 @@ static void occ_build_recursive(OcclusionTree *tree, OccNode *node, int begin, i
}
if(node->area != 0.0f)
- VecMulf(node->co, 1.0f/node->area);
+ mul_v3_fl(node->co, 1.0f/node->area);
/* compute maximum distance from center */
node->dco= 0.0f;
@@ -1116,10 +1116,10 @@ static float occ_quad_form_factor(float *p, float *n, float *q0, float *q1, floa
normalizef(r2);
normalizef(r3);
- Crossf(g0, r1, r0); normalizef(g0);
- Crossf(g1, r2, r1); normalizef(g1);
- Crossf(g2, r3, r2); normalizef(g2);
- Crossf(g3, r0, r3); normalizef(g3);
+ cross_v3_v3v3(g0, r1, r0); normalizef(g0);
+ cross_v3_v3v3(g1, r2, r1); normalizef(g1);
+ cross_v3_v3v3(g2, r3, r2); normalizef(g2);
+ cross_v3_v3v3(g3, r0, r3); normalizef(g3);
a1= saacosf(INPR(r0, r1));
a2= saacosf(INPR(r1, r2));
@@ -1151,9 +1151,9 @@ static float occ_form_factor(OccFace *face, float *p, float *n)
VECCOPY(v3, vlr->v3->co);
if(obi->flag & R_TRANSFORMED) {
- Mat4MulVecfl(obi->mat, v1);
- Mat4MulVecfl(obi->mat, v2);
- Mat4MulVecfl(obi->mat, v3);
+ mul_m4_v3(obi->mat, v1);
+ mul_m4_v3(obi->mat, v2);
+ mul_m4_v3(obi->mat, v3);
}
if(occ_visible_quad(p, n, v1, v2, v3, q0, q1, q2, q3))
@@ -1162,7 +1162,7 @@ static float occ_form_factor(OccFace *face, float *p, float *n)
if(vlr->v4) {
VECCOPY(v4, vlr->v4->co);
if(obi->flag & R_TRANSFORMED)
- Mat4MulVecfl(obi->mat, v4);
+ mul_m4_v3(obi->mat, v4);
if(occ_visible_quad(p, n, v1, v3, v4, q0, q1, q2, q3))
contrib += occ_quad_form_factor(p, n, q0, q1, q2, q3);
@@ -1269,7 +1269,7 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float
}
if(occ) *occ= resultocc;
- if(bentn) Normalize(bentn);
+ if(bentn) normalize_v3(bentn);
}
static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass)
@@ -1282,7 +1282,7 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass)
for(pass=0; pass<totpass; pass++) {
for(i=0; i<tree->totface; i++) {
occ_face(&tree->face[i], co, n, NULL);
- VecNegf(n);
+ negate_v3(n);
VECADDFAC(co, co, n, 1e-8f);
occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL);
@@ -1315,7 +1315,7 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f
aocolor= WO_AOPLAIN;
VECCOPY(nn, n);
- VecNegf(nn);
+ negate_v3(nn);
occ_lookup(tree, thread, exclude, co, nn, &occ, (aocolor)? bn: NULL);
@@ -1347,7 +1347,7 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f
}
#endif
- VecMulf(skycol, occlusion);
+ mul_v3_fl(skycol, occlusion);
}
else {
skycol[0]= occlusion;
@@ -1477,7 +1477,7 @@ static void sample_occ_surface(ShadeInput *shi)
co3= mesh->co[face[2]];
co4= (face[3])? mesh->co[face[3]]: NULL;
- InterpWeightsQ3Dfl(co1, co2, co3, co4, strand->vert->co, w);
+ interp_weights_face_v3( w,co1, co2, co3, co4, strand->vert->co);
shi->ao[0]= shi->ao[1]= shi->ao[2]= 0.0f;
VECADDFAC(shi->ao, shi->ao, mesh->col[face[0]], w[0]);
@@ -1512,14 +1512,14 @@ static void *exec_strandsurface_sample(void *data)
if(face[3]) {
co4= mesh->co[face[3]];
- VecLerpf(co, co1, co3, 0.5f);
- CalcNormFloat4(co1, co2, co3, co4, n);
+ interp_v3_v3v3(co, co1, co3, 0.5f);
+ normal_quad_v3( n,co1, co2, co3, co4);
}
else {
- CalcCent3f(co, co1, co2, co3);
- CalcNormFloat(co1, co2, co3, n);
+ cent_tri_v3(co, co1, co2, co3);
+ normal_tri_v3( n,co1, co2, co3);
}
- VecNegf(n);
+ negate_v3(n);
sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, col);
VECCOPY(othread->facecol[a], col);
@@ -1597,7 +1597,7 @@ void make_occ_tree(Render *re)
for(a=0; a<mesh->totvert; a++)
if(count[a])
- VecMulf(mesh->col[a], 1.0f/count[a]);
+ mul_v3_fl(mesh->col[a], 1.0f/count[a]);
MEM_freeN(count);
MEM_freeN(facecol);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 96da7c2288b..abecad3b0c6 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -53,7 +53,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
#include "BLI_threads.h"
@@ -1268,7 +1268,7 @@ void RE_SetWindow(Render *re, rctf *viewplane, float clipsta, float clipend)
re->clipend= clipend;
re->r.mode &= ~R_ORTHO;
- i_window(re->viewplane.xmin, re->viewplane.xmax, re->viewplane.ymin, re->viewplane.ymax, re->clipsta, re->clipend, re->winmat);
+ perspective_m4( re->winmat,re->viewplane.xmin, re->viewplane.xmax, re->viewplane.ymin, re->viewplane.ymax, re->clipsta, re->clipend);
}
@@ -1281,14 +1281,14 @@ void RE_SetOrtho(Render *re, rctf *viewplane, float clipsta, float clipend)
re->clipend= clipend;
re->r.mode |= R_ORTHO;
- i_ortho(re->viewplane.xmin, re->viewplane.xmax, re->viewplane.ymin, re->viewplane.ymax, re->clipsta, re->clipend, re->winmat);
+ orthographic_m4( re->winmat,re->viewplane.xmin, re->viewplane.xmax, re->viewplane.ymin, re->viewplane.ymax, re->clipsta, re->clipend);
}
void RE_SetView(Render *re, float mat[][4])
{
/* re->ok flag? */
- Mat4CpyMat4(re->viewmat, mat);
- Mat4Invert(re->viewinv, re->viewmat);
+ copy_m4_m4(re->viewmat, mat);
+ invert_m4_m4(re->viewinv, re->viewmat);
}
/* image and movie output has to move to either imbuf or kernel */
@@ -1515,7 +1515,7 @@ static RenderPart *find_next_pano_slice(Render *re, int *minx, rctf *viewplane)
R.viewplane.xmin = viewplane->xmin + R.panodxv;
R.viewplane.xmax = viewplane->xmax + R.panodxv;
RE_SetWindow(re, &R.viewplane, R.clipsta, R.clipend);
- Mat4CpyMat4(R.winmat, re->winmat);
+ copy_m4_m4(R.winmat, re->winmat);
/* rotate database according to part coordinates */
project_renderdata(re, projectverto, 1, -R.panodxp*phi, 1);
@@ -2471,7 +2471,7 @@ static void do_render_seq(Render * re)
if (recurs_depth == 0) { /* with nested scenes, only free on toplevel... */
Editing * ed = re->scene->ed;
if (ed) {
- free_imbuf_seq(&ed->seqbase, TRUE);
+ free_imbuf_seq(re->scene, &ed->seqbase, TRUE);
}
}
}
diff --git a/source/blender/render/intern/source/pixelblending.c b/source/blender/render/intern/source/pixelblending.c
index 0e453d461ab..da9a698291c 100644
--- a/source/blender/render/intern/source/pixelblending.c
+++ b/source/blender/render/intern/source/pixelblending.c
@@ -34,7 +34,7 @@
#include <string.h>
/* global includes */
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
/* own includes */
diff --git a/source/blender/render/intern/source/pixelshading.c b/source/blender/render/intern/source/pixelshading.c
index de3a50acddf..d4b7c403f50 100644
--- a/source/blender/render/intern/source/pixelshading.c
+++ b/source/blender/render/intern/source/pixelshading.c
@@ -27,7 +27,7 @@
#include <float.h>
#include <math.h>
#include <string.h>
-#include "BLI_arithb.h"
+#include "BLI_math.h"
/* External modules: */
#include "IMB_imbuf_types.h"
@@ -155,7 +155,7 @@ static void render_lighting_halo(HaloRen *har, float *colf)
/* rotate view to lampspace */
VECCOPY(lvrot, lv);
- Mat3MulVecfl(lar->imat, lvrot);
+ mul_m3_v3(lar->imat, lvrot);
x= MAX2(fabs(lvrot[0]/lvrot[2]) , fabs(lvrot[1]/lvrot[2]));
/* 1.0/(sqrt(1+x*x)) is equivalent to cos(atan(x)) */
@@ -553,7 +553,7 @@ void shadeSkyView(float *colf, float *rco, float *view, float *dxyview, short th
VECCOPY(lo, view);
if(R.wrld.skytype & WO_SKYREAL) {
- Mat3MulVecfl(R.imat, lo);
+ mul_m3_v3(R.imat, lo);
SWAP(float, lo[1], lo[2]);
@@ -594,11 +594,11 @@ void shadeSunView(float *colf, float *view)
if(do_init) {
VECCOPY(sview, view);
- Normalize(sview);
- Mat3MulVecfl(R.imat, sview);
+ normalize_v3(sview);
+ mul_m3_v3(R.imat, sview);
if (sview[2] < 0.0)
sview[2] = 0.0;
- Normalize(sview);
+ normalize_v3(sview);
do_init= 0;
}
@@ -654,7 +654,7 @@ void shadeSkyPixel(float *collector, float fx, float fy, short thread)
}
else {
calc_view_vector(view, fx, fy);
- fac= Normalize(view);
+ fac= normalize_v3(view);
if(R.wrld.skytype & WO_SKYTEX) {
dxyview[0]= -R.viewdx/fac;
@@ -677,8 +677,8 @@ void shadeAtmPixel(struct SunSky *sunsky, float *collector, float fx, float fy,
float view[3];
calc_view_vector(view, fx, fy);
- Normalize(view);
- /*Mat3MulVecfl(R.imat, view);*/
+ normalize_v3(view);
+ /*mul_m3_v3(R.imat, view);*/
AtmospherePixleShader(sunsky, view, distance, collector);
}
diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c
index 2b3e6047af4..9ce77f751c0 100644
--- a/source/blender/render/intern/source/pointdensity.c
+++ b/source/blender/render/intern/source/pointdensity.c
@@ -29,7 +29,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_kdopbvh.h"
@@ -106,7 +106,7 @@ static void pointdensity_cache_psys(Render *re, PointDensity *pd, Object *ob, Pa
/* init everything */
if (!psys || !ob || !pd) return;
- Mat4MulMat4(obview, re->viewinv, ob->obmat);
+ mul_m4_m4m4(obview, re->viewinv, ob->obmat);
/* Just to create a valid rendering context for particles */
psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy, 0);
@@ -119,7 +119,7 @@ static void pointdensity_cache_psys(Render *re, PointDensity *pd, Object *ob, Pa
}
/* in case ob->imat isn't up-to-date */
- Mat4Invert(ob->imat, ob->obmat);
+ invert_m4_m4(ob->imat, ob->obmat);
total_particles = psys->totpart+psys->totchild;
psys->lattice=psys_get_lattice(&sim);
@@ -140,11 +140,11 @@ static void pointdensity_cache_psys(Render *re, PointDensity *pd, Object *ob, Pa
VECCOPY(partco, state.co);
if (pd->psys_cache_space == TEX_PD_OBJECTSPACE)
- Mat4MulVecfl(ob->imat, partco);
+ mul_m4_v3(ob->imat, partco);
else if (pd->psys_cache_space == TEX_PD_OBJECTLOC) {
float obloc[3];
VECCOPY(obloc, ob->loc);
- VecSubf(partco, partco, obloc);
+ sub_v3_v3v3(partco, partco, obloc);
} else {
/* TEX_PD_WORLDSPACE */
}
@@ -190,7 +190,6 @@ static void pointdensity_cache_object(Render *re, PointDensity *pd, Object *ob)
int i;
DerivedMesh *dm;
MVert *mvert = NULL;
- float cam_mat[4][4];
dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
mvert= dm->getVertArray(dm); /* local object space */
@@ -209,12 +208,12 @@ static void pointdensity_cache_object(Render *re, PointDensity *pd, Object *ob)
case TEX_PD_OBJECTSPACE:
break;
case TEX_PD_OBJECTLOC:
- Mat4MulVecfl(ob->obmat, co);
- VecSubf(co, co, ob->loc);
+ mul_m4_v3(ob->obmat, co);
+ sub_v3_v3v3(co, co, ob->loc);
break;
case TEX_PD_WORLDSPACE:
default:
- Mat4MulVecfl(ob->obmat, co);
+ mul_m4_v3(ob->obmat, co);
break;
}
@@ -391,7 +390,7 @@ int pointdensitytex(Tex *tex, float *texvec, TexResult *texres)
num = BLI_bvhtree_range_query(pd->point_tree, co, pd->radius, accum_density, &pdr);
if (num > 0) {
age /= num;
- VecMulf(vec, 1.0f/num);
+ mul_v3_fl(vec, 1.0f/num);
}
/* reset */
@@ -424,7 +423,7 @@ int pointdensitytex(Tex *tex, float *texvec, TexResult *texres)
num = BLI_bvhtree_range_query(pd->point_tree, co, pd->radius, accum_density, &pdr);
if (num > 0) {
age /= num;
- VecMulf(vec, 1.0f/num);
+ mul_v3_fl(vec, 1.0f/num);
}
texres->tin = density;
@@ -448,7 +447,7 @@ int pointdensitytex(Tex *tex, float *texvec, TexResult *texres)
break;
case TEX_PD_COLOR_PARTSPEED:
{
- float speed = VecLength(vec) * pd->speed_scale;
+ float speed = len_v3(vec) * pd->speed_scale;
if (pd->coba) {
if (do_colorband(pd->coba, speed, col)) {
@@ -462,7 +461,7 @@ int pointdensitytex(Tex *tex, float *texvec, TexResult *texres)
}
case TEX_PD_COLOR_PARTVEL:
texres->talpha= 1;
- VecMulf(vec, pd->speed_scale);
+ mul_v3_fl(vec, pd->speed_scale);
VECCOPY(&texres->tr, vec);
texres->ta = texres->tin;
break;
diff --git a/source/blender/render/intern/source/rayobject_blibvh.c b/source/blender/render/intern/source/rayobject_blibvh.c
index 3fd71862f54..3579eb9007f 100644
--- a/source/blender/render/intern/source/rayobject_blibvh.c
+++ b/source/blender/render/intern/source/rayobject_blibvh.c
@@ -31,7 +31,7 @@
#include "MEM_guardedalloc.h"
#include "BKE_utildefines.h"
#include "BLI_kdopbvh.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "RE_raytrace.h"
#include "render_types.h"
#include "rayobject.h"
@@ -120,7 +120,7 @@ static int RE_rayobject_blibvh_intersect(RayObject *o, Isect *isec)
data.leafs = obj->leafs;
VECCOPY(dir, isec->vec);
- Normalize(dir);
+ normalize_v3(dir);
hit.index = 0;
hit.dist = isec->labda*isec->dist;
diff --git a/source/blender/render/intern/source/rayobject_instance.c b/source/blender/render/intern/source/rayobject_instance.c
index e2f4dc5a9dd..9ed184e532c 100644
--- a/source/blender/render/intern/source/rayobject_instance.c
+++ b/source/blender/render/intern/source/rayobject_instance.c
@@ -30,7 +30,7 @@
#include "MEM_guardedalloc.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "RE_raytrace.h"
#include "rayobject.h"
@@ -79,8 +79,8 @@ RayObject *RE_rayobject_instance_create(RayObject *target, float transform[][4],
obj->ob = ob;
obj->target_ob = target_ob;
- Mat4CpyMat4(obj->target2global, transform);
- Mat4Invert(obj->global2target, obj->target2global);
+ copy_m4_m4(obj->target2global, transform);
+ invert_m4_m4(obj->global2target, obj->target2global);
return RE_rayobject_unalignRayAPI((RayObject*) obj);
}
@@ -111,10 +111,10 @@ static int RE_rayobject_instance_intersect(RayObject *o, Isect *isec)
//Transform to target coordinates system
VECADD( isec->vec, isec->vec, isec->start );
- Mat4MulVecfl(obj->global2target, isec->start);
- Mat4MulVecfl(obj->global2target, isec->vec );
+ mul_m4_v3(obj->global2target, isec->start);
+ mul_m4_v3(obj->global2target, isec->vec );
- isec->dist = VecLenf( isec->start, isec->vec );
+ isec->dist = len_v3v3( isec->start, isec->vec );
VECSUB( isec->vec, isec->vec, isec->start );
isec->labda *= isec->dist / dist;
@@ -194,7 +194,7 @@ static void RE_rayobject_instance_bb(RayObject *o, float *min, float *max)
for(i=0; i<8; i++)
{
for(j=0; j<3; j++) t[j] = i&(1<<j) ? M[j] : m[j];
- Mat4MulVecfl(obj->target2global, t);
+ mul_m4_v3(obj->target2global, t);
DO_MINMAX(t, min, max);
}
}
diff --git a/source/blender/render/intern/source/rayobject_octree.c b/source/blender/render/intern/source/rayobject_octree.c
index 2f0a1a3f53b..7c29db6a4bb 100644
--- a/source/blender/render/intern/source/rayobject_octree.c
+++ b/source/blender/render/intern/source/rayobject_octree.c
@@ -40,7 +40,7 @@
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "rayobject.h"
@@ -226,7 +226,7 @@ static int face_in_node(RayFace *face, short x, short y, short z, float rtf[][3]
// init static vars
if(face) {
- CalcNormFloat(rtf[0], rtf[1], rtf[2], nor);
+ normal_tri_v3( nor,rtf[0], rtf[1], rtf[2]);
d= -nor[0]*rtf[0][0] - nor[1]*rtf[0][1] - nor[2]*rtf[0][2];
return 0;
}
diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c
index 7043837166a..85442480a9c 100644
--- a/source/blender/render/intern/source/rayshade.c
+++ b/source/blender/render/intern/source/rayshade.c
@@ -41,7 +41,7 @@
#include "BKE_node.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_jitter.h"
#include "BLI_rand.h"
@@ -397,11 +397,11 @@ static void makeraytree_single(Render *re)
RE_rayface_from_vlak(face, obi, vlr);
if((obi->flag & R_TRANSFORMED))
{
- Mat4MulVecfl(obi->mat, face->v1);
- Mat4MulVecfl(obi->mat, face->v2);
- Mat4MulVecfl(obi->mat, face->v3);
+ mul_m4_v3(obi->mat, face->v1);
+ mul_m4_v3(obi->mat, face->v2);
+ mul_m4_v3(obi->mat, face->v3);
if(RE_rayface_isQuad(face))
- Mat4MulVecfl(obi->mat, face->v4);
+ mul_m4_v3(obi->mat, face->v4);
}
RE_rayobject_add( raytree, RE_rayobject_unalignRayFace(face) );
@@ -481,7 +481,7 @@ void shade_ray(Isect *is, ShadeInput *shi, ShadeResult *shr)
shi->co[1]= is->start[1]+is->labda*(shi->view[1]);
shi->co[2]= is->start[2]+is->labda*(shi->view[2]);
- Normalize(shi->view);
+ normalize_v3(shi->view);
shi->obi= obi;
shi->obr= obi->obr;
@@ -674,7 +674,7 @@ static void ray_fadeout_endcolor(float *col, ShadeInput *origshi, ShadeInput *sh
VECCOPY(col, shr->combined);
} else if (origshi->mat->fadeto_mir == MA_RAYMIR_FADETOSKY) {
VECCOPY(shi->view, vec);
- Normalize(shi->view);
+ normalize_v3(shi->view);
shadeSkyView(col, isec->start, shi->view, NULL, shi->thread);
shadeSunView(col, shi->view);
@@ -686,7 +686,7 @@ static void ray_fadeout(Isect *is, ShadeInput *shi, float *col, float *blendcol,
/* if fading out, linear blend against fade color */
float blendfac;
- blendfac = 1.0 - VecLenf(shi->co, is->start)/dist_mir;
+ blendfac = 1.0 - len_v3v3(shi->co, is->start)/dist_mir;
col[0] = col[0]*blendfac + (1.0 - blendfac)*blendcol[0];
col[1] = col[1]*blendfac + (1.0 - blendfac)*blendcol[1];
@@ -1297,15 +1297,15 @@ static void trace_refract(float *col, ShadeInput *shi, ShadeResult *shr)
/* get a quasi-random vector from a phong-weighted disc */
QMC_samplePhong(samp3d, qsa, shi->thread, samples, blur);
- VecOrthoBasisf(v_refract, orthx, orthy);
- VecMulf(orthx, samp3d[0]);
- VecMulf(orthy, samp3d[1]);
+ ortho_basis_v3v3_v3( orthx, orthy,v_refract);
+ mul_v3_fl(orthx, samp3d[0]);
+ mul_v3_fl(orthy, samp3d[1]);
/* and perturb the refraction vector in it */
- VecAddf(v_refract_new, v_refract, orthx);
- VecAddf(v_refract_new, v_refract_new, orthy);
+ add_v3_v3v3(v_refract_new, v_refract, orthx);
+ add_v3_v3v3(v_refract_new, v_refract_new, orthy);
- Normalize(v_refract_new);
+ normalize_v3(v_refract_new);
} else {
/* no blurriness, use the original normal */
VECCOPY(v_refract_new, v_refract);
@@ -1384,20 +1384,20 @@ static void trace_reflect(float *col, ShadeInput *shi, ShadeResult *shr, float f
/* find the normal's perpendicular plane, blurring along tangents
* if tangent shading enabled */
if (shi->mat->mode & (MA_TANGENT_V)) {
- Crossf(orthx, shi->vn, shi->tang); // bitangent
+ cross_v3_v3v3(orthx, shi->vn, shi->tang); // bitangent
VECCOPY(orthy, shi->tang);
- VecMulf(orthx, samp3d[0]);
- VecMulf(orthy, samp3d[1]*aniso);
+ mul_v3_fl(orthx, samp3d[0]);
+ mul_v3_fl(orthy, samp3d[1]*aniso);
} else {
- VecOrthoBasisf(shi->vn, orthx, orthy);
- VecMulf(orthx, samp3d[0]);
- VecMulf(orthy, samp3d[1]);
+ ortho_basis_v3v3_v3( orthx, orthy,shi->vn);
+ mul_v3_fl(orthx, samp3d[0]);
+ mul_v3_fl(orthy, samp3d[1]);
}
/* and perturb the normal in it */
- VecAddf(v_nor_new, shi->vn, orthx);
- VecAddf(v_nor_new, v_nor_new, orthy);
- Normalize(v_nor_new);
+ add_v3_v3v3(v_nor_new, shi->vn, orthx);
+ add_v3_v3v3(v_nor_new, v_nor_new, orthy);
+ normalize_v3(v_nor_new);
} else {
/* no blurriness, use the original normal */
VECCOPY(v_nor_new, shi->vn);
@@ -1706,7 +1706,7 @@ static void DS_energy(float *sphere, int tot, float *vec)
res[0]= res[1]= res[2]= 0.0f;
for(a=0, fp=sphere; a<tot; a++, fp+=3) {
- VecSubf(force, vec, fp);
+ sub_v3_v3v3(force, vec, fp);
fac= force[0]*force[0] + force[1]*force[1] + force[2]*force[2];
if(fac!=0.0f) {
fac= 1.0f/fac;
@@ -1716,9 +1716,9 @@ static void DS_energy(float *sphere, int tot, float *vec)
}
}
- VecMulf(res, 0.5);
- VecAddf(vec, vec, res);
- Normalize(vec);
+ mul_v3_fl(res, 0.5);
+ add_v3_v3v3(vec, vec, res);
+ normalize_v3(vec);
}
@@ -1881,7 +1881,7 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac)
VECCOPY(nrm, shi->facenor);
}
- VecOrthoBasisf(nrm, up, side);
+ ortho_basis_v3v3_v3( up, side,nrm);
/* sampling init */
if (R.wrld.ao_samp_method==WO_AOSAMP_HALTON) {
@@ -1908,7 +1908,7 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac)
dir[1] = (samp3d[0]*up[1] + samp3d[1]*side[1] + samp3d[2]*nrm[1]);
dir[2] = (samp3d[0]*up[2] + samp3d[1]*side[2] + samp3d[2]*nrm[2]);
- Normalize(dir);
+ normalize_v3(dir);
isec.vec[0] = -dir[0];
isec.vec[1] = -dir[1];
@@ -1928,7 +1928,7 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac)
view[0]= -dir[0];
view[1]= -dir[1];
view[2]= -dir[2];
- Normalize(view);
+ normalize_v3(view);
if(aocolor==WO_AOSKYCOL) {
skyfac= 0.5*(1.0f+view[0]*R.grvec[0]+ view[1]*R.grvec[1]+ view[2]*R.grvec[2]);
@@ -2064,7 +2064,7 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac)
view[0]= -vec[0];
view[1]= -vec[1];
view[2]= -vec[2];
- Normalize(view);
+ normalize_v3(view);
if(aocolor==WO_AOSKYCOL) {
fac= 0.5*(1.0f+view[0]*R.grvec[0]+ view[1]*R.grvec[1]+ view[2]*R.grvec[2]);
@@ -2230,8 +2230,8 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, float *lampco, float *
v[0] = co[0] - lampco[0];
v[1] = co[1] - lampco[1];
v[2] = co[2] - lampco[2];
- Normalize(v);
- VecOrthoBasisf(v, ru, rv);
+ normalize_v3(v);
+ ortho_basis_v3v3_v3( ru, rv,v);
/* sampling, returns quasi-random vector in area_size disc */
QMC_sampleDisc(samp3d, qsa, shi->thread, samples,lar->area_size);
@@ -2248,7 +2248,7 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, float *lampco, float *
QMC_sampleRect(samp3d, qsa, shi->thread, samples, lar->area_size, lar->area_sizey);
/* align samples to lamp vector */
- Mat3MulVecfl(lar->mat, samp3d);
+ mul_m3_v3(lar->mat, samp3d);
}
end[0] = vec[0]+samp3d[0];
end[1] = vec[1]+samp3d[1];
@@ -2259,11 +2259,11 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, float *lampco, float *
if(shi->strand) {
/* bias away somewhat to avoid self intersection */
- float jitbias= 0.5f*(VecLength(shi->dxco) + VecLength(shi->dyco));
+ float jitbias= 0.5f*(len_v3(shi->dxco) + len_v3(shi->dyco));
float v[3];
VECSUB(v, co, end);
- Normalize(v);
+ normalize_v3(v);
co[0] -= jitbias*v[0];
co[1] -= jitbias*v[1];
@@ -2274,7 +2274,7 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, float *lampco, float *
isec->vec[0] = end[0]-isec->start[0];
isec->vec[1] = end[1]-isec->start[1];
isec->vec[2] = end[2]-isec->start[2];
- isec->labda = 1.0f; // * Normalize(isec->vec);
+ isec->labda = 1.0f; // * normalize_v3(isec->vec);
/* trace the ray */
if(isec->mode==RE_RAY_SHADOW_TRA) {
@@ -2370,7 +2370,7 @@ static void ray_shadow_jitter(ShadeInput *shi, LampRen *lar, float *lampco, floa
vec[0]= jitlamp[0];
vec[1]= jitlamp[1];
vec[2]= 0.0f;
- Mat3MulVecfl(lar->mat, vec);
+ mul_m3_v3(lar->mat, vec);
/* set start and vec */
isec->vec[0] = vec[0]+lampco[0]-isec->start[0];
@@ -2537,7 +2537,7 @@ static void ray_translucent(ShadeInput *shi, LampRen *lar, float *distfac, float
co[1]= isec.start[1]+isec.labda*(isec.vec[1]);
co[2]= isec.start[2]+isec.labda*(isec.vec[2]);
- *distfac= VecLength(isec.vec);
+ *distfac= len_v3(isec.vec);
}
else
*distfac= 0.0f;
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c
index 6c18592b8d2..cae6c640f8b 100644
--- a/source/blender/render/intern/source/rendercore.c
+++ b/source/blender/render/intern/source/rendercore.c
@@ -36,7 +36,7 @@
/* External modules: */
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_jitter.h"
#include "BLI_rand.h"
@@ -1498,13 +1498,13 @@ static void shade_sample_sss(ShadeSample *ssamp, Material *mat, ObjectInstanceRe
VECCOPY(nor, shi->facenor);
calc_view_vector(shi->facenor, sx, sy);
- Normalize(shi->facenor);
+ normalize_v3(shi->facenor);
shade_input_set_viewco(shi, x, y, sx, sy, z);
- orthoarea= VecLength(shi->dxco)*VecLength(shi->dyco);
+ orthoarea= len_v3(shi->dxco)*len_v3(shi->dyco);
VECCOPY(shi->facenor, nor);
shade_input_set_viewco(shi, x, y, sx, sy, z);
- *area= VecLength(shi->dxco)*VecLength(shi->dyco);
+ *area= len_v3(shi->dxco)*len_v3(shi->dyco);
*area= MIN2(*area, 2.0f*orthoarea);
shade_input_set_uv(shi);
@@ -1516,8 +1516,8 @@ static void shade_sample_sss(ShadeSample *ssamp, Material *mat, ObjectInstanceRe
/* not a pretty solution, but fixes common cases */
if(shi->obr->ob && shi->obr->ob->transflag & OB_NEG_SCALE) {
- VecNegf(shi->vn);
- VecNegf(shi->vno);
+ negate_v3(shi->vn);
+ negate_v3(shi->vno);
}
/* if nodetree, use the material that we are currently preprocessing
@@ -2148,24 +2148,24 @@ static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int
/* bitangent */
if(tvn && ttang) {
VECCOPY(mat[0], ttang);
- Crossf(mat[1], tvn, ttang);
+ cross_v3_v3v3(mat[1], tvn, ttang);
VECCOPY(mat[2], tvn);
}
else {
VECCOPY(mat[0], shi->nmaptang);
- Crossf(mat[1], shi->vn, shi->nmaptang);
+ cross_v3_v3v3(mat[1], shi->vn, shi->nmaptang);
VECCOPY(mat[2], shi->vn);
}
- Mat3Inv(imat, mat);
- Mat3MulVecfl(imat, nor);
+ invert_m3_m3(imat, mat);
+ mul_m3_v3(imat, nor);
}
else if(R.r.bake_normal_space == R_BAKE_SPACE_OBJECT)
- Mat4Mul3Vecfl(ob->imat, nor); /* ob->imat includes viewinv! */
+ mul_mat3_m4_v3(ob->imat, nor); /* ob->imat includes viewinv! */
else if(R.r.bake_normal_space == R_BAKE_SPACE_WORLD)
- Mat4Mul3Vecfl(R.viewinv, nor);
+ mul_mat3_m4_v3(R.viewinv, nor);
- Normalize(nor); /* in case object has scaling */
+ normalize_v3(nor); /* in case object has scaling */
shr.combined[0]= nor[0]/2.0f + 0.5f;
shr.combined[1]= 0.5f - nor[1]/2.0f;
@@ -2278,7 +2278,7 @@ static int bake_intersect_tree(RayObject* raytree, Isect* isect, float *start, f
hitco[1] = isect->start[1] + isect->labda*isect->vec[1];
hitco[2] = isect->start[2] + isect->labda*isect->vec[2];
- *dist= VecLenf(start, hitco);
+ *dist= len_v3v3(start, hitco);
}
return hit;
@@ -2330,8 +2330,8 @@ static void bake_set_vlr_dxyco(BakeShade *bs, float *uv1, float *uv2, float *uv3
}
if(bs->obi->flag & R_TRANSFORMED) {
- Mat3MulVecfl(bs->obi->nmat, bs->dxco);
- Mat3MulVecfl(bs->obi->nmat, bs->dyco);
+ mul_m3_v3(bs->obi->nmat, bs->dxco);
+ mul_m3_v3(bs->obi->nmat, bs->dyco);
}
}
@@ -2370,7 +2370,7 @@ static void do_bake_shade(void *handle, int x, int y, float u, float v)
shi->co[2]= l*v3[2]+u*v1[2]+v*v2[2];
if(obi->flag & R_TRANSFORMED)
- Mat4MulVecfl(obi->mat, shi->co);
+ mul_m4_v3(obi->mat, shi->co);
VECCOPY(shi->dxco, bs->dxco);
VECCOPY(shi->dyco, bs->dyco);
@@ -2406,7 +2406,7 @@ static void do_bake_shade(void *handle, int x, int y, float u, float v)
isec.userdata= bs;
if(bake_intersect_tree(R.raytree, &isec, shi->co, shi->vn, sign, co, &dist)) {
- if(!hit || VecLenf(shi->co, co) < VecLenf(shi->co, minco)) {
+ if(!hit || len_v3v3(shi->co, co) < len_v3v3(shi->co, minco)) {
minisec= isec;
mindist= dist;
VECCOPY(minco, co);
diff --git a/source/blender/render/intern/source/renderdatabase.c b/source/blender/render/intern/source/renderdatabase.c
index 54863ef3295..75e58648cd5 100644
--- a/source/blender/render/intern/source/renderdatabase.c
+++ b/source/blender/render/intern/source/renderdatabase.c
@@ -60,7 +60,7 @@
#include "MEM_guardedalloc.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_memarena.h"
@@ -448,8 +448,8 @@ int RE_vlakren_get_normal(Render *re, ObjectInstanceRen *obi, VlakRen *vlr, floa
if(obi->flag & R_TRANSFORMED) {
VECCOPY(nor, vlr->n);
- Mat3MulVecfl(nmat, nor);
- Normalize(nor);
+ mul_m3_v3(nmat, nor);
+ normalize_v3(nor);
}
else
VECCOPY(nor, vlr->n);
@@ -462,7 +462,7 @@ int RE_vlakren_get_normal(Render *re, ObjectInstanceRen *obi, VlakRen *vlr, floa
else {
VECCOPY(v1, vlr->v1->co);
if(obi->flag & R_TRANSFORMED)
- Mat4MulVecfl(obi->mat, v1);
+ mul_m4_v3(obi->mat, v1);
if(INPR(v1, nor) < 0.0f) {
flipped= 1;
}
@@ -995,12 +995,12 @@ HaloRen *RE_inithalo(Render *re, ObjectRen *obr, Material *ma, float *vec, f
har->sin= sin(zn);
har->cos= cos(zn);
- zn= VecLenf(vec1, vec);
+ zn= len_v3v3(vec1, vec);
har->hasize= vectsize*zn + (1.0-vectsize)*hasize;
- VecSubf(har->no, vec, vec1);
- Normalize(har->no);
+ sub_v3_v3v3(har->no, vec, vec1);
+ normalize_v3(har->no);
}
if(ma->mode & MA_HALO_XALPHA) har->type |= HA_XALPHA;
@@ -1035,7 +1035,7 @@ HaloRen *RE_inithalo(Render *re, ObjectRen *obr, Material *ma, float *vec, f
/* texvec[0]+= imatbase->ivec[0]; */
/* texvec[1]+= imatbase->ivec[1]; */
/* texvec[2]+= imatbase->ivec[2]; */
- /* Mat3MulVecfl(imatbase->imat, texvec); */
+ /* mul_m3_v3(imatbase->imat, texvec); */
}
else {
if(orco) {
@@ -1108,12 +1108,12 @@ HaloRen *RE_inithalo_particle(Render *re, ObjectRen *obr, DerivedMesh *dm, Mater
har->sin= sin(zn);
har->cos= cos(zn);
- zn= VecLenf(vec1, vec)*0.5;
+ zn= len_v3v3(vec1, vec)*0.5;
har->hasize= vectsize*zn + (1.0-vectsize)*hasize;
- VecSubf(har->no, vec, vec1);
- Normalize(har->no);
+ sub_v3_v3v3(har->no, vec, vec1);
+ normalize_v3(har->no);
}
if(ma->mode & MA_HALO_XALPHA) har->type |= HA_XALPHA;
@@ -1149,13 +1149,13 @@ HaloRen *RE_inithalo_particle(Render *re, ObjectRen *obr, DerivedMesh *dm, Mater
if(mtex->object){
float imat[4][4];
/* imat should really be cached somewhere before this */
- Mat4Invert(imat,mtex->object->obmat);
- Mat4MulVecfl(imat,texvec);
+ invert_m4_m4(imat,mtex->object->obmat);
+ mul_m4_v3(imat,texvec);
}
/* texvec[0]+= imatbase->ivec[0]; */
/* texvec[1]+= imatbase->ivec[1]; */
/* texvec[2]+= imatbase->ivec[2]; */
- /* Mat3MulVecfl(imatbase->imat, texvec); */
+ /* mul_m3_v3(imatbase->imat, texvec); */
}
else if(mtex->texco & TEXCO_GLOB){
VECCOPY(texvec,vec);
@@ -1349,10 +1349,10 @@ ObjectInstanceRen *RE_addRenderInstance(Render *re, ObjectRen *obr, Object *ob,
obi->lay= lay;
if(mat) {
- Mat4CpyMat4(obi->mat, mat);
- Mat3CpyMat4(mat3, mat);
- Mat3Inv(obi->nmat, mat3);
- Mat3Transp(obi->nmat);
+ copy_m4_m4(obi->mat, mat);
+ copy_m3_m4(mat3, mat);
+ invert_m3_m3(obi->nmat, mat3);
+ transpose_m3(obi->nmat);
obi->flag |= R_DUPLI_TRANSFORMED;
}
@@ -1395,14 +1395,14 @@ int clip_render_object(float boundbox[][3], float *bounds, float winmat[][4])
float mat[4][4], vec[4];
int a, fl, flag= -1;
- Mat4CpyMat4(mat, winmat);
+ copy_m4_m4(mat, winmat);
for(a=0; a<8; a++) {
vec[0]= (a & 1)? boundbox[0][0]: boundbox[1][0];
vec[1]= (a & 2)? boundbox[0][1]: boundbox[1][1];
vec[2]= (a & 4)? boundbox[0][2]: boundbox[1][2];
vec[3]= 1.0;
- Mat4MulVec4fl(mat, vec);
+ mul_m4_v4(mat, vec);
fl= 0;
if(bounds) {
diff --git a/source/blender/render/intern/source/shadbuf.c b/source/blender/render/intern/source/shadbuf.c
index 50e0321a6eb..f8428680135 100644
--- a/source/blender/render/intern/source/shadbuf.c
+++ b/source/blender/render/intern/source/shadbuf.c
@@ -37,7 +37,7 @@
#include "BKE_scene.h"
#include "BKE_utildefines.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_jitter.h"
#include "BLI_memarena.h"
@@ -613,7 +613,7 @@ static void shadowbuf_autoclip(Render *re, LampRen *lar)
char *clipflag;
minz= 1.0e30f; maxz= -1.0e30f;
- Mat4CpyMat4(viewmat, lar->shb->viewmat);
+ copy_m4_m4(viewmat, lar->shb->viewmat);
if(lar->mode & (LA_LAYER|LA_LAYER_SHADOW)) lay= lar->lay;
@@ -628,9 +628,9 @@ static void shadowbuf_autoclip(Render *re, LampRen *lar)
obr= obi->obr;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obviewmat, obi->mat, viewmat);
+ mul_m4_m4m4(obviewmat, obi->mat, viewmat);
else
- Mat4CpyMat4(obviewmat, viewmat);
+ copy_m4_m4(obviewmat, viewmat);
memset(clipflag, 0, sizeof(char)*obr->totvert);
@@ -661,7 +661,7 @@ static void shadowbuf_autoclip(Render *re, LampRen *lar)
if(clipflag[a]) {
VECCOPY(vec, ver->co);
- Mat4MulVecfl(obviewmat, vec);
+ mul_m4_v3(obviewmat, vec);
/* Z on visible side of lamp space */
if(vec[2] < 0.0f) {
float inpr, z= -vec[2];
@@ -669,7 +669,7 @@ static void shadowbuf_autoclip(Render *re, LampRen *lar)
/* since vec is rotated in lampspace, this is how to get the cosine of angle */
/* precision is set 20% larger */
vec[2]*= 1.2f;
- Normalize(vec);
+ normalize_v3(vec);
inpr= - vec[2];
if(inpr>=lar->spotsi) {
@@ -764,8 +764,8 @@ void makeshadowbuf(Render *re, LampRen *lar)
shb->pixsize= (shb->d)/temp;
wsize= shb->pixsize*(shb->size/2.0);
- i_window(-wsize, wsize, -wsize, wsize, shb->d, shb->clipend, shb->winmat);
- Mat4MulMat4(shb->persmat, shb->viewmat, shb->winmat);
+ perspective_m4( shb->winmat,-wsize, wsize, -wsize, wsize, shb->d, shb->clipend);
+ mul_m4_m4m4(shb->persmat, shb->viewmat, shb->winmat);
if(ELEM3(lar->buftype, LA_SHADBUF_REGULAR, LA_SHADBUF_HALFWAY, LA_SHADBUF_DEEP)) {
shb->totbuf= lar->buffers;
@@ -1107,7 +1107,7 @@ float testshadowbuf(Render *re, ShadBuf *shb, float *rco, float *dxco, float *dy
VECCOPY(co, rco);
co[3]= 1.0f;
- Mat4MulVec4fl(shb->persmat, co); /* rational hom co */
+ mul_m4_v4(shb->persmat, co); /* rational hom co */
xs1= siz*(1.0f+co[0]/co[3]);
ys1= siz*(1.0f+co[1]/co[3]);
@@ -1148,7 +1148,7 @@ float testshadowbuf(Render *re, ShadBuf *shb, float *rco, float *dxco, float *dy
co[1]= rco[1]+dxco[1];
co[2]= rco[2]+dxco[2];
co[3]= 1.0;
- Mat4MulVec4fl(shb->persmat,co); /* rational hom co */
+ mul_m4_v4(shb->persmat,co); /* rational hom co */
dx[0]= xs1- siz*(1.0+co[0]/co[3]);
dx[1]= ys1- siz*(1.0+co[1]/co[3]);
@@ -1156,7 +1156,7 @@ float testshadowbuf(Render *re, ShadBuf *shb, float *rco, float *dxco, float *dy
co[1]= rco[1]+dyco[1];
co[2]= rco[2]+dyco[2];
co[3]= 1.0;
- Mat4MulVec4fl(shb->persmat,co); /* rational hom co */
+ mul_m4_v4(shb->persmat,co); /* rational hom co */
dy[0]= xs1- siz*(1.0+co[0]/co[3]);
dy[1]= ys1- siz*(1.0+co[1]/co[3]);
@@ -1292,7 +1292,7 @@ float shadow_halo(LampRen *lar, float *p1, float *p2)
co[1]= p1[1];
co[2]= p1[2]/lar->sh_zfac;
co[3]= 1.0;
- Mat4MulVec4fl(shb->winmat, co); /* rational hom co */
+ mul_m4_v4(shb->winmat, co); /* rational hom co */
xf1= siz*(1.0+co[0]/co[3]);
yf1= siz*(1.0+co[1]/co[3]);
zf1= (co[2]/co[3]);
@@ -1302,7 +1302,7 @@ float shadow_halo(LampRen *lar, float *p1, float *p2)
co[1]= p2[1];
co[2]= p2[2]/lar->sh_zfac;
co[3]= 1.0;
- Mat4MulVec4fl(shb->winmat, co); /* rational hom co */
+ mul_m4_v4(shb->winmat, co); /* rational hom co */
xf2= siz*(1.0+co[0]/co[3]);
yf2= siz*(1.0+co[1]/co[3]);
zf2= (co[2]/co[3]);
@@ -1635,9 +1635,9 @@ static void bspface_init_strand(BSPFace *face)
face->radline= 0.5f*VecLen2f(face->v1, face->v2);
- VecMidf(face->vec1, face->v1, face->v2);
+ mid_v3_v3v3(face->vec1, face->v1, face->v2);
if(face->v4)
- VecMidf(face->vec2, face->v3, face->v4);
+ mid_v3_v3v3(face->vec2, face->v3, face->v4);
else
VECCOPY(face->vec2, face->v3);
@@ -1659,7 +1659,7 @@ static int point_behind_strand(float *p, BSPFace *face)
/* v1 - v2 is radius, v1 - v3 length */
float dist, rc[2], pt[2];
- /* using code from PdistVL2Dfl(), distance vec to line-piece */
+ /* using code from dist_to_line_segment_v2(), distance vec to line-piece */
if(face->len==0.0f) {
rc[0]= p[0]-face->vec1[0];
@@ -1977,9 +1977,9 @@ static void isb_bsp_fillfaces(Render *re, LampRen *lar, ISBBranch *root)
obr= obi->obr;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(winmat, obi->mat, shb->persmat);
+ mul_m4_m4m4(winmat, obi->mat, shb->persmat);
else
- Mat4CpyMat4(winmat, shb->persmat);
+ copy_m4_m4(winmat, shb->persmat);
for(a=0; a<obr->totvlak; a++) {
@@ -2055,7 +2055,7 @@ static int viewpixel_to_lampbuf(ShadBuf *shb, ObjectInstanceRen *obi, VlakRen *v
RE_vlakren_get_normal(&R, obi, vlr, nor);
VECCOPY(v1, vlr->v1->co);
if(obi->flag & R_TRANSFORMED)
- Mat4MulVecfl(obi->mat, v1);
+ mul_m4_v3(obi->mat, v1);
/* from shadepixel() */
dface= v1[0]*nor[0] + v1[1]*nor[1] + v1[2]*nor[2];
@@ -2093,7 +2093,7 @@ static int viewpixel_to_lampbuf(ShadBuf *shb, ObjectInstanceRen *obi, VlakRen *v
}
/* move 3d vector to lampbuf */
- Mat4MulVec4fl(shb->persmat, hoco); /* rational hom co */
+ mul_m4_v4(shb->persmat, hoco); /* rational hom co */
/* clip We can test for -1.0/1.0 because of the properties of the
* coordinate transformations. */
diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c
index 79ee6c89460..396c713cfb7 100644
--- a/source/blender/render/intern/source/shadeinput.c
+++ b/source/blender/render/intern/source/shadeinput.c
@@ -30,7 +30,7 @@
#include <string.h>
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "DNA_curve_types.h"
@@ -212,7 +212,7 @@ void shade_input_do_shade(ShadeInput *shi, ShadeResult *shr)
if(R.r.mode & R_ORTHO)
shr->mist= mistfactor(-shi->co[2], shi->co);
else
- shr->mist= mistfactor(VecLength(shi->co), shi->co);
+ shr->mist= mistfactor(len_v3(shi->co), shi->co);
}
else shr->mist= 0.0f;
@@ -227,7 +227,7 @@ void shade_input_do_shade(ShadeInput *shi, ShadeResult *shr)
shr->combined[3]= fac;
if (shi->mat->material_type!= MA_TYPE_VOLUME)
- VecMulf(shr->combined, fac);
+ mul_v3_fl(shr->combined, fac);
}
else
shr->combined[3]= 1.0f;
@@ -314,9 +314,9 @@ void shade_input_set_triangle_i(ShadeInput *shi, ObjectInstanceRen *obi, VlakRen
VECCOPY(shi->n3, shi->v3->n);
if(obi->flag & R_TRANSFORMED) {
- Mat3MulVecfl(obi->nmat, shi->n1);
- Mat3MulVecfl(obi->nmat, shi->n2);
- Mat3MulVecfl(obi->nmat, shi->n3);
+ mul_m3_v3(obi->nmat, shi->n1);
+ mul_m3_v3(obi->nmat, shi->n2);
+ mul_m3_v3(obi->nmat, shi->n3);
}
if(!(vlr->flag & (R_NOPUNOFLIP|R_TANGENT))) {
@@ -384,7 +384,7 @@ void shade_input_set_strand(ShadeInput *shi, StrandRen *strand, StrandPoint *spo
/* shade_input_set_viewco equivalent */
VECCOPY(shi->co, spoint->co);
VECCOPY(shi->view, shi->co);
- Normalize(shi->view);
+ normalize_v3(shi->view);
shi->xs= (int)spoint->x;
shi->ys= (int)spoint->y;
@@ -407,12 +407,12 @@ void shade_input_set_strand(ShadeInput *shi, StrandRen *strand, StrandPoint *spo
else {
float cross[3];
- Crossf(cross, spoint->co, spoint->tan);
- Crossf(shi->vn, cross, spoint->tan);
- Normalize(shi->vn);
+ cross_v3_v3v3(cross, spoint->co, spoint->tan);
+ cross_v3_v3v3(shi->vn, cross, spoint->tan);
+ normalize_v3(shi->vn);
if(INPR(shi->vn, shi->view) < 0.0f)
- VecNegf(shi->vn);
+ negate_v3(shi->vn);
}
VECCOPY(shi->vno, shi->vn);
@@ -450,8 +450,8 @@ void shade_input_set_strand_texco(ShadeInput *shi, StrandRen *strand, StrandVert
if(shi->mat->strand_surfnor > 0.0f) {
shi->surfdist= 0.0f;
for(sv=strand->vert; sv!=svert; sv++)
- shi->surfdist+=VecLenf(sv->co, (sv+1)->co);
- shi->surfdist += spoint->t*VecLenf(sv->co, (sv+1)->co);
+ shi->surfdist+=len_v3v3(sv->co, (sv+1)->co);
+ shi->surfdist += spoint->t*len_v3v3(sv->co, (sv+1)->co);
}
}
@@ -474,13 +474,13 @@ void shade_input_set_strand_texco(ShadeInput *shi, StrandRen *strand, StrandVert
if(texco & TEXCO_GLOB) {
VECCOPY(shi->gl, shi->co);
- Mat4MulVecfl(R.viewinv, shi->gl);
+ mul_m4_v3(R.viewinv, shi->gl);
if(shi->osatex) {
VECCOPY(shi->dxgl, shi->dxco);
- Mat3MulVecfl(R.imat, shi->dxco);
+ mul_m3_v3(R.imat, shi->dxco);
VECCOPY(shi->dygl, shi->dyco);
- Mat3MulVecfl(R.imat, shi->dyco);
+ mul_m3_v3(R.imat, shi->dyco);
}
}
@@ -652,7 +652,7 @@ void shade_input_calc_viewco(ShadeInput *shi, float x, float y, float z, float *
VECCOPY(v1, shi->v1->co);
if(shi->obi->flag & R_TRANSFORMED)
- Mat4MulVecfl(shi->obi->mat, v1);
+ mul_m4_v3(shi->obi->mat, v1);
dface= v1[0]*shi->facenor[0]+v1[1]*shi->facenor[1]+v1[2]*shi->facenor[2];
@@ -731,7 +731,7 @@ void shade_input_calc_viewco(ShadeInput *shi, float x, float y, float z, float *
shi->camera_co[0] = shi->camera_co[1] = shi->camera_co[2] = 0.0f;
/* cannot normalize earlier, code above needs it at viewplane level */
- Normalize(view);
+ normalize_v3(view);
}
/* from scanline pixel coordinates to 3d coordinates, requires set_triangle */
@@ -773,17 +773,17 @@ void shade_input_set_uv(ShadeInput *shi)
VECCOPY(v3, shi->v3->co);
if(shi->obi->flag & R_TRANSFORMED) {
- Mat4MulVecfl(shi->obi->mat, v1);
- Mat4MulVecfl(shi->obi->mat, v2);
- Mat4MulVecfl(shi->obi->mat, v3);
+ mul_m4_v3(shi->obi->mat, v1);
+ mul_m4_v3(shi->obi->mat, v2);
+ mul_m4_v3(shi->obi->mat, v3);
}
/* exception case for wire render of edge */
if(vlr->v2==vlr->v3) {
float lend, lenc;
- lend= VecLenf(v2, v1);
- lenc= VecLenf(shi->co, v1);
+ lend= len_v3v3(v2, v1);
+ lenc= len_v3v3(shi->co, v1);
if(lend==0.0f) {
shi->u=shi->v= 0.0f;
@@ -851,7 +851,7 @@ void shade_input_set_normals(ShadeInput *shi)
shi->vn[1]= l*n3[1]-u*n1[1]-v*n2[1];
shi->vn[2]= l*n3[2]-u*n1[2]-v*n2[2];
- Normalize(shi->vn);
+ normalize_v3(shi->vn);
}
else
VECCOPY(shi->vn, shi->facenor);
@@ -939,9 +939,9 @@ void shade_input_set_shade_texco(ShadeInput *shi)
shi->tang[2]= (tl*s3[2] - tu*s1[2] - tv*s2[2]);
if(obi->flag & R_TRANSFORMED)
- Mat3MulVecfl(obi->nmat, shi->tang);
+ mul_m3_v3(obi->nmat, shi->tang);
- Normalize(shi->tang);
+ normalize_v3(shi->tang);
VECCOPY(shi->nmaptang, shi->tang);
}
}
@@ -963,9 +963,9 @@ void shade_input_set_shade_texco(ShadeInput *shi)
shi->nmaptang[2]= (tl*s3[2] - tu*s1[2] - tv*s2[2]);
if(obi->flag & R_TRANSFORMED)
- Mat3MulVecfl(obi->nmat, shi->nmaptang);
+ mul_m3_v3(obi->nmat, shi->nmaptang);
- Normalize(shi->nmaptang);
+ normalize_v3(shi->nmaptang);
}
}
}
@@ -976,7 +976,7 @@ void shade_input_set_shade_texco(ShadeInput *shi)
if(surfnor) {
VECCOPY(shi->surfnor, surfnor)
if(obi->flag & R_TRANSFORMED)
- Mat3MulVecfl(obi->nmat, shi->surfnor);
+ mul_m3_v3(obi->nmat, shi->surfnor);
}
else
VECCOPY(shi->surfnor, shi->vn)
@@ -1037,15 +1037,15 @@ void shade_input_set_shade_texco(ShadeInput *shi)
if(texco & TEXCO_GLOB) {
VECCOPY(shi->gl, shi->co);
- Mat4MulVecfl(R.viewinv, shi->gl);
+ mul_m4_v3(R.viewinv, shi->gl);
if(shi->osatex) {
VECCOPY(shi->dxgl, shi->dxco);
// TXF: bug was here, but probably should be in convertblender.c, R.imat only valid if there is a world
- //Mat3MulVecfl(R.imat, shi->dxco);
- Mat4Mul3Vecfl(R.viewinv, shi->dxco);
+ //mul_m3_v3(R.imat, shi->dxco);
+ mul_mat3_m4_v3(R.viewinv, shi->dxco);
VECCOPY(shi->dygl, shi->dyco);
- //Mat3MulVecfl(R.imat, shi->dyco);
- Mat4Mul3Vecfl(R.viewinv, shi->dyco);
+ //mul_m3_v3(R.imat, shi->dyco);
+ mul_mat3_m4_v3(R.viewinv, shi->dyco);
}
}
@@ -1242,9 +1242,9 @@ void shade_input_set_shade_texco(ShadeInput *shi)
zbuf_make_winmat(&R, winmat);
if(shi->obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
zbuf_render_project(obwinmat, v1->co, ho1);
zbuf_render_project(obwinmat, v2->co, ho2);
diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c
index aa0bbd575a7..f167122f497 100644
--- a/source/blender/render/intern/source/shadeoutput.c
+++ b/source/blender/render/intern/source/shadeoutput.c
@@ -31,7 +31,7 @@
#include <string.h>
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_colortools.h"
#include "BKE_material.h"
@@ -168,7 +168,7 @@ static void spothalo(struct LampRen *lar, ShadeInput *shi, float *intens)
p1[0]= shi->co[0]-lar->co[0];
p1[1]= shi->co[1]-lar->co[1];
p1[2]= -lar->co[2];
- Mat3MulVecfl(lar->imat, p1);
+ mul_m3_v3(lar->imat, p1);
VECCOPY(npos, p1); // npos is double!
/* pre-scale */
@@ -180,7 +180,7 @@ static void spothalo(struct LampRen *lar, ShadeInput *shi, float *intens)
/* rotate view */
VECCOPY(nray, shi->view);
- Mat3MulVecd(lar->imat, nray);
+ mul_m3_v3_double(lar->imat, nray);
if(R.wrld.mode & WO_MIST) {
/* patchy... */
@@ -311,7 +311,7 @@ static void spothalo(struct LampRen *lar, ShadeInput *shi, float *intens)
a= sqrt(p1[0]*p1[0]+p1[1]*p1[1]+p1[2]*p1[2]);
b= sqrt(p2[0]*p2[0]+p2[1]*p2[1]+p2[2]*p2[2]);
- c= VecLenf(p1, p2);
+ c= len_v3v3(p1, p2);
a/= ladist;
a= sqrt(a);
@@ -489,7 +489,7 @@ static float area_lamp_energy_multisample(LampRen *lar, float *co, float *vn)
vec[0]= jitlamp[0];
vec[1]= jitlamp[1];
vec[2]= 0.0f;
- Mat3MulVecfl(lar->mat, vec);
+ mul_m3_v3(lar->mat, vec);
VECADD(area[0], lar->area[0], vec);
VECADD(area[1], lar->area[1], vec);
@@ -553,7 +553,7 @@ static float Phong_Spec( float *n, float *l, float *v, int hard, int tangent )
h[0] = l[0] + v[0];
h[1] = l[1] + v[1];
h[2] = l[2] + v[2];
- Normalize(h);
+ normalize_v3(h);
rslt = h[0]*n[0] + h[1]*n[1] + h[2]*n[2];
if(tangent) rslt= sasqrt(1.0f - rslt*rslt);
@@ -573,7 +573,7 @@ static float CookTorr_Spec(float *n, float *l, float *v, int hard, int tangent)
h[0]= v[0]+l[0];
h[1]= v[1]+l[1];
h[2]= v[2]+l[2];
- Normalize(h);
+ normalize_v3(h);
nh= n[0]*h[0]+n[1]*h[1]+n[2]*h[2];
if(tangent) nh= sasqrt(1.0f - nh*nh);
@@ -606,7 +606,7 @@ static float Blinn_Spec(float *n, float *l, float *v, float refrac, float spec_p
h[0]= v[0]+l[0];
h[1]= v[1]+l[1];
h[2]= v[2]+l[2];
- Normalize(h);
+ normalize_v3(h);
nh= n[0]*h[0]+n[1]*h[1]+n[2]*h[2]; /* Dot product between surface normal and half-way vector */
if(tangent) nh= sasqrt(1.0f - nh*nh);
@@ -653,7 +653,7 @@ static float Toon_Spec( float *n, float *l, float *v, float size, float smooth,
h[0] = l[0] + v[0];
h[1] = l[1] + v[1];
h[2] = l[2] + v[2];
- Normalize(h);
+ normalize_v3(h);
rslt = h[0]*n[0] + h[1]*n[1] + h[2]*n[2];
if(tangent) rslt = sasqrt(1.0f - rslt*rslt);
@@ -677,7 +677,7 @@ static float WardIso_Spec( float *n, float *l, float *v, float rms, int tangent)
h[0] = l[0] + v[0];
h[1] = l[1] + v[1];
h[2] = l[2] + v[2];
- Normalize(h);
+ normalize_v3(h);
nh = n[0]*h[0]+n[1]*h[1]+n[2]*h[2]; /* Dot product between surface normal and half-way vector */
if(tangent) nh = sasqrt(1.0f - nh*nh);
@@ -728,7 +728,7 @@ static float OrenNayar_Diff(float nl, float *n, float *l, float *v, float rough
h[0]= v[0]+l[0];
h[1]= v[1]+l[1];
h[2]= v[2]+l[2];
- Normalize(h);
+ normalize_v3(h);
nh= n[0]*h[0]+n[1]*h[1]+n[2]*h[2]; /* Dot product between surface normal and half-way vector */
if(nh<0.0f) nh = 0.0f;
@@ -749,12 +749,12 @@ static float OrenNayar_Diff(float nl, float *n, float *l, float *v, float rough
Lit_B[0] = l[0] - (realnl * n[0]);
Lit_B[1] = l[1] - (realnl * n[1]);
Lit_B[2] = l[2] - (realnl * n[2]);
- Normalize( Lit_B );
+ normalize_v3( Lit_B );
View_B[0] = v[0] - (nv * n[0]);
View_B[1] = v[1] - (nv * n[1]);
View_B[2] = v[2] - (nv * n[2]);
- Normalize( View_B );
+ normalize_v3( View_B );
t = Lit_B[0]*View_B[0] + Lit_B[1]*View_B[1] + Lit_B[2]*View_B[2];
if( t < 0 ) t = 0;
@@ -1143,7 +1143,7 @@ float lamp_get_visibility(LampRen *lar, float *co, float *lv, float *dist)
/* rotate view to lampspace */
VECCOPY(lvrot, lv);
- Mat3MulVecfl(lar->imat, lvrot);
+ mul_m3_v3(lar->imat, lvrot);
x= MAX2(fabs(lvrot[0]/lvrot[2]) , fabs(lvrot[1]/lvrot[2]));
/* 1.0f/(sqrt(1+x*x)) is equivalent to cos(atan(x)) */
@@ -1235,27 +1235,27 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int
float cross[3], nstrand[3], blend;
if(ma->mode & MA_STR_SURFDIFF) {
- Crossf(cross, shi->surfnor, vn);
- Crossf(nstrand, vn, cross);
+ cross_v3_v3v3(cross, shi->surfnor, vn);
+ cross_v3_v3v3(nstrand, vn, cross);
blend= INPR(nstrand, shi->surfnor);
blend= 1.0f - blend;
CLAMP(blend, 0.0f, 1.0f);
- VecLerpf(vnor, nstrand, shi->surfnor, blend);
- Normalize(vnor);
+ interp_v3_v3v3(vnor, nstrand, shi->surfnor, blend);
+ normalize_v3(vnor);
}
else {
- Crossf(cross, lv, vn);
- Crossf(vnor, cross, vn);
- Normalize(vnor);
+ cross_v3_v3v3(cross, lv, vn);
+ cross_v3_v3v3(vnor, cross, vn);
+ normalize_v3(vnor);
}
if(ma->strand_surfnor > 0.0f) {
if(ma->strand_surfnor > shi->surfdist) {
blend= (ma->strand_surfnor - shi->surfdist)/ma->strand_surfnor;
- VecLerpf(vnor, vnor, shi->surfnor, blend);
- Normalize(vnor);
+ interp_v3_v3v3(vnor, vnor, shi->surfnor, blend);
+ normalize_v3(vnor);
}
}
@@ -1264,9 +1264,9 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int
}
else if (ma->mode & MA_TANGENT_V) {
float cross[3];
- Crossf(cross, lv, shi->tang);
- Crossf(vnor, cross, shi->tang);
- Normalize(vnor);
+ cross_v3_v3v3(cross, lv, shi->tang);
+ cross_v3_v3v3(vnor, cross, shi->tang);
+ normalize_v3(vnor);
vnor[0]= -vnor[0];vnor[1]= -vnor[1];vnor[2]= -vnor[2];
vn= vnor;
}
@@ -1404,7 +1404,7 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int
lv[1]+= view[1];
lv[2]+= view[2];
- Normalize(lv);
+ normalize_v3(lv);
t= vn[0]*lv[0]+vn[1]*lv[1]+vn[2]*lv[2];
@@ -1662,15 +1662,15 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr)
if(texfac==0.0f) {
VECCOPY(col, shr->col);
- VecMulf(col, invalpha);
+ mul_v3_fl(col, invalpha);
}
else if(texfac==1.0f) {
col[0]= col[1]= col[2]= 1.0f;
- VecMulf(col, invalpha);
+ mul_v3_fl(col, invalpha);
}
else {
VECCOPY(col, shr->col);
- VecMulf(col, invalpha);
+ mul_v3_fl(col, invalpha);
col[0]= pow(col[0], 1.0f-texfac);
col[1]= pow(col[1], 1.0f-texfac);
col[2]= pow(col[2], 1.0f-texfac);
diff --git a/source/blender/render/intern/source/sss.c b/source/blender/render/intern/source/sss.c
index a416c2d2764..25cfc0f1253 100644
--- a/source/blender/render/intern/source/sss.c
+++ b/source/blender/render/intern/source/sss.c
@@ -47,7 +47,7 @@
/* external modules: */
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_memarena.h"
@@ -443,8 +443,8 @@ static void compute_radiance(ScatterTree *tree, float *co, float *rad)
of the mesh not visible from the camera. this can not only make
it darker, but also lead to ugly color shifts */
- VecMulf(result.rad, tree->ss[0]->frontweight);
- VecMulf(result.backrad, tree->ss[0]->backweight);
+ mul_v3_fl(result.rad, tree->ss[0]->frontweight);
+ mul_v3_fl(result.backrad, tree->ss[0]->backweight);
VECCOPY(rad, result.rad);
VECADD(backrad, result.rad, result.backrad);
@@ -760,7 +760,7 @@ ScatterTree *scatter_tree_new(ScatterSettings *ss[3], float scale, float error,
points[i].area= fabs(area[i])/(tree->scale*tree->scale);
points[i].back= (area[i] < 0.0f);
- VecMulf(points[i].co, 1.0f/tree->scale);
+ mul_v3_fl(points[i].co, 1.0f/tree->scale);
DO_MINMAX(points[i].co, tree->min, tree->max);
refpoints[i]= points + i;
@@ -813,7 +813,7 @@ void scatter_tree_sample(ScatterTree *tree, float *co, float *color)
float sco[3];
VECCOPY(sco, co);
- VecMulf(sco, 1.0f/tree->scale);
+ mul_v3_fl(sco, 1.0f/tree->scale);
compute_radiance(tree, sco, color);
}
diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c
index 61080c7d807..47a7c052b18 100644
--- a/source/blender/render/intern/source/strand.c
+++ b/source/blender/render/intern/source/strand.c
@@ -37,7 +37,7 @@
#include "DNA_material_types.h"
#include "DNA_meshdata_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_memarena.h"
@@ -99,10 +99,10 @@ void strand_eval_point(StrandSegment *sseg, StrandPoint *spoint)
VECCOPY(p[3], sseg->v[3]->co);
if(sseg->obi->flag & R_TRANSFORMED) {
- Mat4MulVecfl(sseg->obi->mat, p[0]);
- Mat4MulVecfl(sseg->obi->mat, p[1]);
- Mat4MulVecfl(sseg->obi->mat, p[2]);
- Mat4MulVecfl(sseg->obi->mat, p[3]);
+ mul_m4_v3(sseg->obi->mat, p[0]);
+ mul_m4_v3(sseg->obi->mat, p[1]);
+ mul_m4_v3(sseg->obi->mat, p[2]);
+ mul_m4_v3(sseg->obi->mat, p[3]);
}
if(t == 0.0f) {
@@ -135,11 +135,11 @@ void strand_eval_point(StrandSegment *sseg, StrandPoint *spoint)
spoint->dtco[2]= data[0]*p[0][2] + data[1]*p[1][2] + data[2]*p[2][2] + data[3]*p[3][2];
VECCOPY(spoint->tan, spoint->dtco);
- Normalize(spoint->tan);
+ normalize_v3(spoint->tan);
VECCOPY(spoint->nor, spoint->co);
VECMUL(spoint->nor, -1.0f);
- Normalize(spoint->nor);
+ normalize_v3(spoint->nor);
spoint->width= strand_eval_width(ma, spoint->strandco);
@@ -148,7 +148,7 @@ void strand_eval_point(StrandSegment *sseg, StrandPoint *spoint)
spoint->alpha= (simplify)? simplify[1]: 1.0f;
/* outer points */
- Crossf(cross, spoint->co, spoint->tan);
+ cross_v3_v3v3(cross, spoint->co, spoint->tan);
w= spoint->co[2]*strandbuf->winmat[2][3] + strandbuf->winmat[3][3];
dx= strandbuf->winx*cross[0]*strandbuf->winmat[0][0]/w;
@@ -157,7 +157,7 @@ void strand_eval_point(StrandSegment *sseg, StrandPoint *spoint)
if(w > 0.0f) {
if(strandbuf->flag & R_STRAND_B_UNITS) {
- crosslen= VecLength(cross);
+ crosslen= len_v3(cross);
w= 2.0f*crosslen*strandbuf->minwidth/w;
if(spoint->width < w) {
@@ -169,14 +169,14 @@ void strand_eval_point(StrandSegment *sseg, StrandPoint *spoint)
/* squared because we only change width, not length */
spoint->width *= simplify[0]*simplify[0];
- VecMulf(cross, spoint->width*0.5f/crosslen);
+ mul_v3_fl(cross, spoint->width*0.5f/crosslen);
}
else
- VecMulf(cross, spoint->width/w);
+ mul_v3_fl(cross, spoint->width/w);
}
- VecSubf(spoint->co1, spoint->co, cross);
- VecAddf(spoint->co2, spoint->co, cross);
+ sub_v3_v3v3(spoint->co1, spoint->co, cross);
+ add_v3_v3v3(spoint->co2, spoint->co, cross);
VECCOPY(spoint->dsco, cross);
}
@@ -220,7 +220,7 @@ void interpolate_shade_result(ShadeResult *shr1, ShadeResult *shr2, float t, Sha
interpolate_vec4(shr1->col, shr2->col, t, negt, shr->col);
if(addpassflag & SCE_PASS_NORMAL) {
interpolate_vec3(shr1->nor, shr2->nor, t, negt, shr->nor);
- Normalize(shr->nor);
+ normalize_v3(shr->nor);
}
if(addpassflag & SCE_PASS_DIFFUSE)
interpolate_vec3(shr1->diff, shr2->diff, t, negt, shr->diff);
@@ -825,9 +825,9 @@ int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBa
/* compute matrix and try clipping whole object */
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
if(clip_render_object(obi->obr->boundbox, bounds, winmat))
continue;
@@ -903,9 +903,9 @@ int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBa
obr= obi->obr;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
sseg.obi= obi;
sseg.strand= RE_findOrAddStrand(obr, sortseg->strand);
@@ -975,7 +975,7 @@ StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm,
mvert= dm->getVertArray(dm);
for(a=0; a<mesh->totvert; a++, mvert++) {
VECCOPY(co[a], mvert->co);
- Mat4MulVecfl(mat, co[a]);
+ mul_m4_v3(mat, co[a]);
}
mface= dm->getFaceArray(dm);
diff --git a/source/blender/render/intern/source/sunsky.c b/source/blender/render/intern/source/sunsky.c
index 2b490e71142..54032833196 100644
--- a/source/blender/render/intern/source/sunsky.c
+++ b/source/blender/render/intern/source/sunsky.c
@@ -21,7 +21,7 @@
#include "sunsky.h"
#include "math.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_global.h"
/**
@@ -289,12 +289,12 @@ void GetSkyXYZRadiancef(struct SunSky* sunsky, const float varg[3], float color_
float theta, phi;
float v[3];
- VecCopyf(v, (float*)varg);
- Normalize(v);
+ copy_v3_v3(v, (float*)varg);
+ normalize_v3(v);
if (v[2] < 0.001){
v[2] = 0.001;
- Normalize(v);
+ normalize_v3(v);
}
DirectionToThetaPhi(v, &theta, &phi);
@@ -448,7 +448,7 @@ void AtmospherePixleShader( struct SunSky* sunSky, float view[3], float s, float
sunDirection[1] = sunSky->toSun[1];
sunDirection[2] = sunSky->toSun[2];
- costheta = Inpf(view, sunDirection); // cos(theta)
+ costheta = dot_v3v3(view, sunDirection); // cos(theta)
Phase_1 = 1 + (costheta * costheta); // Phase_1
vec3opf(sunSky->atm_BetaRay, sunSky->atm_BetaRay, *, sunSky->atm_BetaRayMultiplier);
@@ -461,7 +461,7 @@ void AtmospherePixleShader( struct SunSky* sunSky, float view[3], float s, float
E1[1] = exp(E1[1]);
E1[2] = exp(E1[2]);
- VecCopyf(E, E1);
+ copy_v3_v3(E, E1);
//Phase2(theta) = (1-g^2)/(1+g-2g*cos(theta))^(3/2)
fTemp = 1 + sunSky->atm_HGg - 2 * sunSky->atm_HGg * costheta;
diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c
index a74bd3e8041..a9f6e7a53fd 100644
--- a/source/blender/render/intern/source/texture.c
+++ b/source/blender/render/intern/source/texture.c
@@ -33,7 +33,7 @@
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "DNA_texture_types.h"
@@ -832,7 +832,7 @@ static int cubemap_glob(float *n, float x, float y, float z, float *adr1, float
else {
VECCOPY(nor, n);
}
- Mat4Mul3Vecfl(R.viewinv, nor);
+ mul_mat3_m4_v3(R.viewinv, nor);
x1= fabs(nor[0]);
y1= fabs(nor[1]);
@@ -871,7 +871,7 @@ static int cubemap(MTex *mtex, VlakRen *vlr, float *n, float x, float y, float z
/* test for v1, vlr can be faked for baking */
if(vlr->v1 && vlr->v1->orco) {
float nor[3];
- CalcNormFloat(vlr->v1->orco, vlr->v2->orco, vlr->v3->orco, nor);
+ normal_tri_v3( nor,vlr->v1->orco, vlr->v2->orco, vlr->v3->orco);
if( fabs(nor[0])<fabs(nor[2]) && fabs(nor[1])<fabs(nor[2]) ) vlr->puno |= ME_PROJXY;
else if( fabs(nor[0])<fabs(nor[1]) && fabs(nor[2])<fabs(nor[1]) ) vlr->puno |= ME_PROJXZ;
@@ -925,7 +925,7 @@ static int cubemap_ob(Object *ob, float *n, float x, float y, float z, float *ad
if(n==NULL) return 0;
VECCOPY(nor, n);
- if(ob) Mat4Mul3Vecfl(ob->imat, nor);
+ if(ob) mul_mat3_m4_v3(ob->imat, nor);
x1= fabs(nor[0]);
y1= fabs(nor[1]);
@@ -970,8 +970,8 @@ static void do_2d_mapping(MTex *mtex, float *t, VlakRen *vlr, float *n, float *d
fx = (t[0] + 1.0) / 2.0;
fy = (t[1] + 1.0) / 2.0;
}
- else if(wrap==MTEX_TUBE) tubemap(t[0], t[1], t[2], &fx, &fy);
- else if(wrap==MTEX_SPHERE) spheremap(t[0], t[1], t[2], &fx, &fy);
+ else if(wrap==MTEX_TUBE) map_to_tube( &fx, &fy,t[0], t[1], t[2]);
+ else if(wrap==MTEX_SPHERE) map_to_sphere( &fx, &fy,t[0], t[1], t[2]);
else {
if(texco==TEXCO_OBJECT) cubemap_ob(ob, n, t[0], t[1], t[2], &fx, &fy);
else if(texco==TEXCO_GLOB) cubemap_glob(n, t[0], t[1], t[2], &fx, &fy);
@@ -1042,20 +1042,20 @@ static void do_2d_mapping(MTex *mtex, float *t, VlakRen *vlr, float *n, float *d
}
if(ok) {
if(wrap==MTEX_TUBE) {
- tubemap(t[0], t[1], t[2], area, area+1);
- tubemap(t[0]+dxt[0], t[1]+dxt[1], t[2]+dxt[2], area+2, area+3);
- tubemap(t[0]+dyt[0], t[1]+dyt[1], t[2]+dyt[2], area+4, area+5);
+ map_to_tube( area, area+1,t[0], t[1], t[2]);
+ map_to_tube( area+2, area+3,t[0]+dxt[0], t[1]+dxt[1], t[2]+dxt[2]);
+ map_to_tube( area+4, area+5,t[0]+dyt[0], t[1]+dyt[1], t[2]+dyt[2]);
}
else {
- spheremap(t[0], t[1], t[2],area,area+1);
- spheremap(t[0]+dxt[0], t[1]+dxt[1], t[2]+dxt[2], area+2, area+3);
- spheremap(t[0]+dyt[0], t[1]+dyt[1], t[2]+dyt[2], area+4, area+5);
+ map_to_sphere(area,area+1,t[0], t[1], t[2]);
+ map_to_sphere( area+2, area+3,t[0]+dxt[0], t[1]+dxt[1], t[2]+dxt[2]);
+ map_to_sphere( area+4, area+5,t[0]+dyt[0], t[1]+dyt[1], t[2]+dyt[2]);
}
areaflag= 1;
}
else {
- if(wrap==MTEX_TUBE) tubemap(t[0], t[1], t[2], &fx, &fy);
- else spheremap(t[0], t[1], t[2], &fx, &fy);
+ if(wrap==MTEX_TUBE) map_to_tube( &fx, &fy,t[0], t[1], t[2]);
+ else map_to_sphere( &fx, &fy,t[0], t[1], t[2]);
dxt[0]/= 2.0;
dxt[1]/= 2.0;
dyt[0]/= 2.0;
@@ -1230,7 +1230,7 @@ static int multitex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex,
* artificer: added the use of tmpvec to avoid scaling texvec
*/
VECCOPY(tmpvec, texvec);
- VecMulf(tmpvec, 1.0/tex->noisesize);
+ mul_v3_fl(tmpvec, 1.0/tex->noisesize);
switch(tex->stype) {
case TEX_MFRACTAL:
@@ -1252,7 +1252,7 @@ static int multitex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex,
* artificer: added the use of tmpvec to avoid scaling texvec
*/
VECCOPY(tmpvec, texvec);
- VecMulf(tmpvec, 1.0/tex->noisesize);
+ mul_v3_fl(tmpvec, 1.0/tex->noisesize);
retval= voronoiTex(tex, tmpvec, texres);
break;
@@ -1261,7 +1261,7 @@ static int multitex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex,
* artificer: added the use of tmpvec to avoid scaling texvec
*/
VECCOPY(tmpvec, texvec);
- VecMulf(tmpvec, 1.0/tex->noisesize);
+ mul_v3_fl(tmpvec, 1.0/tex->noisesize);
retval= mg_distNoiseTex(tex, tmpvec, texres);
break;
@@ -1611,17 +1611,17 @@ static void texco_mapping(ShadeInput* shi, Tex* tex, MTex* mtex, float* co, floa
dxt[0] = mtex->size[0]*dx[mtex->projx - 1];
dyt[0] = mtex->size[0]*dy[mtex->projx - 1];
}
- else dxt[0] = 0.f;
+ else dxt[0] = dyt[0] = 0.f;
if (mtex->projy) {
dxt[1] = mtex->size[1]*dx[mtex->projy - 1];
dyt[1] = mtex->size[1]*dy[mtex->projy - 1];
}
- else dxt[1] = 0.f;
+ else dxt[1] = dyt[1] = 0.f;
if (mtex->projz) {
dxt[2] = mtex->size[2]*dx[mtex->projz - 1];
dyt[2] = mtex->size[2]*dy[mtex->projz - 1];
}
- else dxt[2]= 0.f;
+ else dxt[2]= dyt[2] = 0.f;
}
}
}
@@ -1675,13 +1675,13 @@ void do_material_tex(ShadeInput *shi)
VECCOPY(tempvec, shi->co);
if(mtex->texflag & MTEX_OB_DUPLI_ORIG)
if(shi->obi && shi->obi->duplitexmat)
- Mat4MulVecfl(shi->obi->duplitexmat, tempvec);
- Mat4MulVecfl(ob->imat, tempvec);
+ mul_m4_v3(shi->obi->duplitexmat, tempvec);
+ mul_m4_v3(ob->imat, tempvec);
if(shi->osatex) {
VECCOPY(dxt, shi->dxco);
VECCOPY(dyt, shi->dyco);
- Mat4Mul3Vecfl(ob->imat, dxt);
- Mat4Mul3Vecfl(ob->imat, dyt);
+ mul_mat3_m4_v3(ob->imat, dxt);
+ mul_mat3_m4_v3(ob->imat, dyt);
}
}
else {
@@ -1742,7 +1742,7 @@ void do_material_tex(ShadeInput *shi)
nn[0] = -shi->vn[0];
nn[1] = -shi->vn[1];
nn[2] = -shi->vn[2];
- VecOrthoBasisf(nn, nu, nv);
+ ortho_basis_v3v3_v3( nu, nv,nn);
nunvdone= 1;
}
@@ -1819,7 +1819,7 @@ void do_material_tex(ShadeInput *shi)
nn[0] = -shi->vn[0];
nn[1] = -shi->vn[1];
nn[2] = -shi->vn[2];
- VecOrthoBasisf(nn, nu, nv);
+ ortho_basis_v3v3_v3( nu, nv,nn);
nunvdone= 1;
}
@@ -1897,20 +1897,20 @@ void do_material_tex(ShadeInput *shi)
idv = (dv < 1e-6f) ? bf : (bf/dv);
if ((mtex->texco == TEXCO_ORCO) && shi->obr && shi->obr->ob) {
- Mat4Mul3Vecfl(shi->obr->ob->imat, tu);
- Mat4Mul3Vecfl(shi->obr->ob->imat, tv);
- Normalize(tu);
- Normalize(tv);
+ mul_mat3_m4_v3(shi->obr->ob->imat, tu);
+ mul_mat3_m4_v3(shi->obr->ob->imat, tv);
+ normalize_v3(tu);
+ normalize_v3(tv);
}
else if (mtex->texco == TEXCO_GLOB) {
- Mat4Mul3Vecfl(R.viewinv, tu);
- Mat4Mul3Vecfl(R.viewinv, tv);
+ mul_mat3_m4_v3(R.viewinv, tu);
+ mul_mat3_m4_v3(R.viewinv, tv);
}
else if (mtex->texco == TEXCO_OBJECT && mtex->object) {
- Mat4Mul3Vecfl(mtex->object->imat, tu);
- Mat4Mul3Vecfl(mtex->object->imat, tv);
- Normalize(tu);
- Normalize(tv);
+ mul_mat3_m4_v3(mtex->object->imat, tu);
+ mul_mat3_m4_v3(mtex->object->imat, tv);
+ normalize_v3(tu);
+ normalize_v3(tv);
}
// +u val
@@ -1937,7 +1937,7 @@ void do_material_tex(ShadeInput *shi)
nv[0] += vd*nn[0];
nv[1] += vd*nn[1];
nv[2] += vd*nn[2];
- Crossf(nvec, nu, nv);
+ cross_v3_v3v3(nvec, nu, nv);
nvec[0] = -nvec[0];
nvec[1] = -nvec[1];
@@ -2020,12 +2020,12 @@ void do_material_tex(ShadeInput *shi)
// rotate to global coords
if(mtex->texco==TEXCO_ORCO || mtex->texco==TEXCO_UV) {
if(shi->vlr && shi->obr && shi->obr->ob) {
- float len= Normalize(texres.nor);
+ float len= normalize_v3(texres.nor);
// can be optimized... (ton)
- Mat4Mul3Vecfl(shi->obr->ob->obmat, texres.nor);
- Mat4Mul3Vecfl(R.viewmat, texres.nor);
- Normalize(texres.nor);
- VecMulf(texres.nor, len);
+ mul_mat3_m4_v3(shi->obr->ob->obmat, texres.nor);
+ mul_mat3_m4_v3(R.viewmat, texres.nor);
+ normalize_v3(texres.nor);
+ mul_v3_fl(texres.nor, len);
}
}
}
@@ -2100,7 +2100,7 @@ void do_material_tex(ShadeInput *shi)
if(mtex->normapspace == MTEX_NSPACE_TANGENT) {
/* qdn: tangent space */
float B[3], tv[3];
- Crossf(B, shi->vn, shi->nmaptang); /* bitangent */
+ cross_v3_v3v3(B, shi->vn, shi->nmaptang); /* bitangent */
/* transform norvec from tangent space to object surface in camera space */
tv[0] = texres.nor[0]*shi->nmaptang[0] + texres.nor[1]*B[0] + texres.nor[2]*shi->vn[0];
tv[1] = texres.nor[0]*shi->nmaptang[1] + texres.nor[1]*B[1] + texres.nor[2]*shi->vn[1];
@@ -2116,15 +2116,15 @@ void do_material_tex(ShadeInput *shi)
if(mtex->normapspace == MTEX_NSPACE_CAMERA);
else if(mtex->normapspace == MTEX_NSPACE_WORLD) {
- Mat4Mul3Vecfl(R.viewmat, nor);
+ mul_mat3_m4_v3(R.viewmat, nor);
}
else if(mtex->normapspace == MTEX_NSPACE_OBJECT) {
if(shi->obr && shi->obr->ob)
- Mat4Mul3Vecfl(shi->obr->ob->obmat, nor);
- Mat4Mul3Vecfl(R.viewmat, nor);
+ mul_mat3_m4_v3(shi->obr->ob->obmat, nor);
+ mul_mat3_m4_v3(R.viewmat, nor);
}
- Normalize(nor);
+ normalize_v3(nor);
/* qdn: worldspace */
shi->vn[0]= facm*shi->vn[0] + fact*nor[0];
@@ -2159,7 +2159,7 @@ void do_material_tex(ShadeInput *shi)
shi->vn[2]+= dot*nor[2];
}
}
- Normalize(shi->vn);
+ normalize_v3(shi->vn);
/* this makes sure the bump is passed on to the next texture */
shi->orn[0]= -shi->vn[0];
@@ -2316,9 +2316,9 @@ void do_volume_tex(ShadeInput *shi, float *xyz, int mapto_flag, float *col, floa
VECCOPY(co, xyz);
if(mtex->texflag & MTEX_OB_DUPLI_ORIG) {
if(shi->obi && shi->obi->duplitexmat)
- Mat4MulVecfl(shi->obi->duplitexmat, co);
+ mul_m4_v3(shi->obi->duplitexmat, co);
}
- Mat4MulVecfl(ob->imat, co);
+ mul_m4_v3(ob->imat, co);
}
}
/* not really orco, but 'local' */
@@ -2330,12 +2330,12 @@ void do_volume_tex(ShadeInput *shi, float *xyz, int mapto_flag, float *col, floa
else {
Object *ob= shi->obi->ob;
VECCOPY(co, xyz);
- Mat4MulVecfl(ob->imat, co);
+ mul_m4_v3(ob->imat, co);
}
}
else if(mtex->texco==TEXCO_GLOB) {
VECCOPY(co, xyz);
- Mat4MulVecfl(R.viewinv, co);
+ mul_m4_v3(R.viewinv, co);
}
else continue; // can happen when texco defines disappear and it renders old files
@@ -2648,8 +2648,8 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f
case TEXCO_H_SPHEREMAP:
case TEXCO_H_TUBEMAP:
if(skyflag & WO_ZENUP) {
- if(mtex->texco==TEXCO_H_TUBEMAP) tubemap(lo[0], lo[2], lo[1], tempvec, tempvec+1);
- else spheremap(lo[0], lo[2], lo[1], tempvec, tempvec+1);
+ if(mtex->texco==TEXCO_H_TUBEMAP) map_to_tube( tempvec, tempvec+1,lo[0], lo[2], lo[1]);
+ else map_to_sphere( tempvec, tempvec+1,lo[0], lo[2], lo[1]);
/* tube/spheremap maps for outside view, not inside */
tempvec[0]= 1.0-tempvec[0];
/* only top half */
@@ -2668,7 +2668,7 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f
case TEXCO_OBJECT:
if(mtex->object) {
VECCOPY(tempvec, lo);
- Mat4MulVecfl(mtex->object->imat, tempvec);
+ mul_m4_v3(mtex->object->imat, tempvec);
co= tempvec;
}
break;
@@ -2676,16 +2676,16 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f
case TEXCO_GLOB:
if(rco) {
VECCOPY(tempvec, rco);
- Mat4MulVecfl(R.viewinv, tempvec);
+ mul_m4_v3(R.viewinv, tempvec);
co= tempvec;
}
else
co= lo;
// VECCOPY(shi->dxgl, shi->dxco);
-// Mat3MulVecfl(R.imat, shi->dxco);
+// mul_m3_v3(R.imat, shi->dxco);
// VECCOPY(shi->dygl, shi->dyco);
-// Mat3MulVecfl(R.imat, shi->dyco);
+// mul_m3_v3(R.imat, shi->dyco);
break;
}
@@ -2812,12 +2812,12 @@ void do_lamp_tex(LampRen *la, float *lavec, ShadeInput *shi, float *colf, int ef
dx= dxt;
dy= dyt;
VECCOPY(tempvec, shi->co);
- Mat4MulVecfl(ob->imat, tempvec);
+ mul_m4_v3(ob->imat, tempvec);
if(shi->osatex) {
VECCOPY(dxt, shi->dxco);
VECCOPY(dyt, shi->dyco);
- Mat4Mul3Vecfl(ob->imat, dxt);
- Mat4Mul3Vecfl(ob->imat, dyt);
+ mul_mat3_m4_v3(ob->imat, dxt);
+ mul_mat3_m4_v3(ob->imat, dyt);
}
}
else {
@@ -2828,12 +2828,12 @@ void do_lamp_tex(LampRen *la, float *lavec, ShadeInput *shi, float *colf, int ef
else if(mtex->texco==TEXCO_GLOB) {
co= shi->gl; dx= shi->dxco; dy= shi->dyco;
VECCOPY(shi->gl, shi->co);
- Mat4MulVecfl(R.viewinv, shi->gl);
+ mul_m4_v3(R.viewinv, shi->gl);
}
else if(mtex->texco==TEXCO_VIEW) {
VECCOPY(tempvec, lavec);
- Mat3MulVecfl(la->imat, tempvec);
+ mul_m3_v3(la->imat, tempvec);
if(la->type==LA_SPOT) {
tempvec[0]*= la->spottexfac;
@@ -2846,11 +2846,11 @@ void do_lamp_tex(LampRen *la, float *lavec, ShadeInput *shi, float *colf, int ef
VECCOPY(dxt, shi->dxlv);
VECCOPY(dyt, shi->dylv);
/* need some matrix conversion here? la->imat is a [3][3] matrix!!! **/
- Mat3MulVecfl(la->imat, dxt);
- Mat3MulVecfl(la->imat, dyt);
+ mul_m3_v3(la->imat, dxt);
+ mul_m3_v3(la->imat, dyt);
- VecMulf(dxt, la->spottexfac);
- VecMulf(dyt, la->spottexfac);
+ mul_v3_fl(dxt, la->spottexfac);
+ mul_v3_fl(dyt, la->spottexfac);
}
}
diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c
index cfaf333d656..e9162b7367f 100644
--- a/source/blender/render/intern/source/volume_precache.c
+++ b/source/blender/render/intern/source/volume_precache.c
@@ -34,7 +34,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_threads.h"
#include "BLI_voxel.h"
@@ -175,6 +175,7 @@ static void lightcache_filter(VolumePrecache *vp)
}
}
+#if 0
static void lightcache_filter2(VolumePrecache *vp)
{
int x, y, z;
@@ -211,6 +212,7 @@ static void lightcache_filter2(VolumePrecache *vp)
if (new_g) { MEM_freeN(new_g); new_g=NULL; }
if (new_b) { MEM_freeN(new_b); new_b=NULL; }
}
+#endif
static inline int ms_I(int x, int y, int z, int *n) //has a pad of 1 voxel surrounding the core for boundary simulation
{
@@ -444,8 +446,8 @@ static void *vol_precache_part(void *data)
continue;
}
- VecCopyf(shi->view, co);
- Normalize(shi->view);
+ copy_v3_v3(shi->view, co);
+ normalize_v3(shi->view);
vol_get_scattering(shi, scatter_col, co);
obi->volume_precache->data_r[ V_I(x, y, z, res) ] = scatter_col[0];
@@ -495,7 +497,7 @@ static void precache_init_parts(Render *re, RayObject *tree, ShadeInput *shi, Ob
parts[0] = parts[1] = parts[2] = totthread;
res = vp->res;
- VecSubf(voxel, bbmax, bbmin);
+ sub_v3_v3v3(voxel, bbmax, bbmin);
voxel[0] /= res[0];
voxel[1] /= res[1];
@@ -564,7 +566,7 @@ static int precache_resolution(VolumePrecache *vp, float *bbmin, float *bbmax, i
{
float dim[3], div;
- VecSubf(dim, bbmax, bbmin);
+ sub_v3_v3v3(dim, bbmax, bbmin);
div = MAX3(dim[0], dim[1], dim[2]);
dim[0] /= div;
diff --git a/source/blender/render/intern/source/volumetric.c b/source/blender/render/intern/source/volumetric.c
index cf4b6b4002f..32ab2980316 100644
--- a/source/blender/render/intern/source/volumetric.c
+++ b/source/blender/render/intern/source/volumetric.c
@@ -34,7 +34,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_voxel.h"
@@ -85,7 +85,7 @@ static float vol_get_shadow(ShadeInput *shi, LampRen *lar, float *co)
/* trace shadow manually, no good lamp api atm */
Isect is;
- VecCopyf(is.start, co);
+ copy_v3_v3(is.start, co);
if(lar->type==LA_SUN || lar->type==LA_HEMI) {
is.vec[0] = -lar->vec[0];
is.vec[1] = -lar->vec[1];
@@ -93,7 +93,7 @@ static float vol_get_shadow(ShadeInput *shi, LampRen *lar, float *co)
is.labda = R.maxdist;
} else {
VECSUB( is.vec, lar->co, is.start );
- is.labda = VecLength( is.vec );
+ is.labda = len_v3( is.vec );
}
is.mode = RE_RAY_MIRROR;
@@ -122,9 +122,9 @@ static int vol_get_bounds(ShadeInput *shi, float *co, float *vec, float *hitco,
/* XXX TODO - get raytrace max distance from object instance's bounding box */
/* need to account for scaling only, but keep coords in camera space...
* below code is WIP and doesn't work!
- VecSubf(bb_dim, shi->obi->obr->boundbox[1], shi->obi->obr->boundbox[2]);
- Mat3MulVecfl(shi->obi->nmat, bb_dim);
- maxsize = VecLength(bb_dim);
+ sub_v3_v3v3(bb_dim, shi->obi->obr->boundbox[1], shi->obi->obr->boundbox[2]);
+ mul_m3_v3(shi->obi->nmat, bb_dim);
+ maxsize = len_v3(bb_dim);
*/
VECCOPY(isect->start, co);
@@ -184,7 +184,7 @@ static void shade_intersection(ShadeInput *shi, float *col, Isect *is)
shade_ray(is, &shi_new, &shr_new);
}
- VecCopyf(col, shr_new.combined);
+ copy_v3_v3(col, shr_new.combined);
col[3] = shr_new.alpha;
}
@@ -225,7 +225,7 @@ static void vol_get_precached_scattering(ShadeInput *shi, float *scatter_col, fl
/* convert input coords to 0.0, 1.0 */
VECCOPY(bbmin, shi->obi->obr->boundbox[0]);
VECCOPY(bbmax, shi->obi->obr->boundbox[1]);
- VecSubf(dim, bbmax, bbmin);
+ sub_v3_v3v3(dim, bbmax, bbmin);
sample_co[0] = ((co[0] - bbmin[0]) / dim[0]);
sample_co[1] = ((co[1] - bbmin[1]) / dim[1]);
@@ -246,18 +246,18 @@ static float metadensity(Object* ob, float* co)
/* transform co to meta-element */
float tco[3] = {co[0], co[1], co[2]};
- Mat4MulMat4(mat, ob->obmat, R.viewmat);
- Mat4Invert(imat, mat);
- Mat4MulVecfl(imat, tco);
+ mul_m4_m4m4(mat, ob->obmat, R.viewmat);
+ invert_m4_m4(imat, mat);
+ mul_m4_v3(imat, tco);
for (ml = mb->elems.first; ml; ml=ml->next) {
float bmat[3][3], dist2;
/* element rotation transform */
float tp[3] = {ml->x - tco[0], ml->y - tco[1], ml->z - tco[2]};
- QuatToMat3(ml->quat, bmat);
- Mat3Transp(bmat); // rot.only, so inverse == transpose
- Mat3MulVecfl(bmat, tp);
+ quat_to_mat3( bmat,ml->quat);
+ transpose_m3(bmat); // rot.only, so inverse == transpose
+ mul_m3_v3(bmat, tp);
/* MB_BALL default */
switch (ml->type) {
@@ -379,7 +379,7 @@ float vol_get_phasefunc(ShadeInput *shi, float g, float *w, float *wp)
return normalize * 1.f;
} else { /* schlick */
const float k = 1.55f * g - .55f * g * g * g;
- const float kcostheta = k * Inpf(w, wp);
+ const float kcostheta = k * dot_v3v3(w, wp);
return normalize * (1.f - k*k) / ((1.f - kcostheta) * (1.f - kcostheta));
}
@@ -435,14 +435,14 @@ static void vol_get_transmittance(ShadeInput *shi, float *tr, float *co, float *
float tau[3] = {0.f, 0.f, 0.f};
float t0 = 0.f;
- float t1 = Normalize(step_vec);
+ float t1 = normalize_v3(step_vec);
float pt0 = t0;
t0 += shi->mat->vol.stepsize * ((shi->mat->vol.stepsize_type == MA_VOL_STEP_CONSTANT) ? 0.5f : BLI_thread_frand(shi->thread));
p[0] += t0 * step_vec[0];
p[1] += t0 * step_vec[1];
p[2] += t0 * step_vec[2];
- VecMulf(step_vec, shi->mat->vol.stepsize);
+ mul_v3_fl(step_vec, shi->mat->vol.stepsize);
for (; t0 < t1; pt0 = t0, t0 += shi->mat->vol.stepsize) {
const float d = vol_get_density(shi, p);
@@ -455,7 +455,7 @@ static void vol_get_transmittance(ShadeInput *shi, float *tr, float *co, float *
tau[1] += stepd * sigma_t[1];
tau[2] += stepd * sigma_t[2];
- VecAddf(p, p, step_vec);
+ add_v3_v3v3(p, p, step_vec);
}
/* return transmittance */
@@ -477,34 +477,34 @@ void vol_shade_one_lamp(struct ShadeInput *shi, float *co, LampRen *lar, float *
if ((visifac= lamp_get_visibility(lar, co, lv, &lampdist)) == 0.f) return;
- VecCopyf(lacol, &lar->r);
+ copy_v3_v3(lacol, &lar->r);
if(lar->mode & LA_TEXTURE) {
shi->osatex= 0;
do_lamp_tex(lar, lv, shi, lacol, LA_TEXTURE);
}
- VecMulf(lacol, visifac);
+ mul_v3_fl(lacol, visifac);
if (ELEM(lar->type, LA_SUN, LA_HEMI))
VECCOPY(lv, lar->vec);
- VecMulf(lv, -1.0f);
+ mul_v3_fl(lv, -1.0f);
if (shi->mat->vol.shade_type == MA_VOL_SHADE_SHADOWED) {
- VecMulf(lacol, vol_get_shadow(shi, lar, co));
+ mul_v3_fl(lacol, vol_get_shadow(shi, lar, co));
}
else if (shi->mat->vol.shade_type == MA_VOL_SHADE_SHADED)
{
Isect is;
if (shi->mat->vol.shadeflag & MA_VOL_RECV_EXT_SHADOW) {
- VecMulf(lacol, vol_get_shadow(shi, lar, co));
+ mul_v3_fl(lacol, vol_get_shadow(shi, lar, co));
if (luminance(lacol) < 0.001f) return;
}
/* find minimum of volume bounds, or lamp coord */
if (vol_get_bounds(shi, co, lv, hitco, &is, VOL_BOUNDS_SS)) {
- float dist = VecLenf(co, hitco);
+ float dist = len_v3v3(co, hitco);
VlakRen *vlr = (VlakRen *)is.hit.face;
/* simple internal shadowing */
@@ -523,7 +523,7 @@ void vol_shade_one_lamp(struct ShadeInput *shi, float *co, LampRen *lar, float *
vol_get_transmittance(shi, tr, co, atten_co);
- VecMulVecf(lacol, lacol, tr);
+ mul_v3_v3v3(lacol, lacol, tr);
}
else {
/* Point is on the outside edge of the volume,
@@ -561,7 +561,7 @@ void vol_get_scattering(ShadeInput *shi, float *scatter_col, float *co)
if (lar) {
vol_shade_one_lamp(shi, co, lar, lacol);
- VecAddf(scatter_col, scatter_col, lacol);
+ add_v3_v3v3(scatter_col, scatter_col, lacol);
}
}
}
@@ -594,13 +594,13 @@ static void volumeintegrate(struct ShadeInput *shi, float *col, float *co, float
float t0 = 0.f;
float pt0 = t0;
- float t1 = Normalize(step_vec); /* returns vector length */
+ float t1 = normalize_v3(step_vec); /* returns vector length */
t0 += stepsize * ((shi->mat->vol.stepsize_type == MA_VOL_STEP_CONSTANT) ? 0.5f : BLI_thread_frand(shi->thread));
p[0] += t0 * step_vec[0];
p[1] += t0 * step_vec[1];
p[2] += t0 * step_vec[2];
- VecMulf(step_vec, stepsize);
+ mul_v3_fl(step_vec, stepsize);
for (; t0 < t1; pt0 = t0, t0 += stepsize) {
const float density = vol_get_density(shi, p);
@@ -631,12 +631,12 @@ static void volumeintegrate(struct ShadeInput *shi, float *col, float *co, float
radiance[1] += stepd * tr[1] * (emit_col[1] + scatter_col[1]);
radiance[2] += stepd * tr[2] * (emit_col[2] + scatter_col[2]);
}
- VecAddf(p, p, step_vec);
+ add_v3_v3v3(p, p, step_vec);
}
/* multiply original color (from behind volume) with transmittance over entire distance */
- VecMulVecf(col, tr, col);
- VecAddf(col, col, radiance);
+ mul_v3_v3v3(col, tr, col);
+ add_v3_v3v3(col, col, radiance);
/* alpha <-- transmission luminance */
col[3] = 1.0f - luminance(tr);
@@ -729,7 +729,7 @@ static void volume_trace(struct ShadeInput *shi, struct ShadeResult *shr, int in
else
col[3] = 1.f;
- VecCopyf(shr->combined, col);
+ copy_v3_v3(shr->combined, col);
shr->alpha = col[3];
VECCOPY(shr->diff, shr->combined);
@@ -768,7 +768,7 @@ void shade_volume_shadow(struct ShadeInput *shi, struct ShadeResult *shr, struct
density = vol_get_density(shi, startco);
vol_get_transmittance(shi, tr, startco, endco);
- VecCopyf(shr->combined, tr);
+ copy_v3_v3(shr->combined, tr);
shr->combined[3] = 1.0f - luminance(tr);
}
diff --git a/source/blender/render/intern/source/voxeldata.c b/source/blender/render/intern/source/voxeldata.c
index 479f33c9ff2..8e71fec4db9 100644
--- a/source/blender/render/intern/source/voxeldata.c
+++ b/source/blender/render/intern/source/voxeldata.c
@@ -32,7 +32,7 @@
#include "MEM_guardedalloc.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_voxel.h"
@@ -277,9 +277,9 @@ int voxeldatatex(struct Tex *tex, float *texvec, struct TexResult *texres)
/* scale lookup from 0.0-1.0 (original location) to -1.0, 1.0, consistent with image texture tex coords */
/* in implementation this works backwards, bringing sample locations from -1.0, 1.0
* to the range 0.0, 1.0, before looking up in the voxel structure. */
- VecCopyf(co, texvec);
- VecMulf(co, 0.5f);
- VecAddf(co, co, offset);
+ copy_v3_v3(co, texvec);
+ mul_v3_fl(co, 0.5f);
+ add_v3_v3v3(co, co, offset);
/* co is now in the range 0.0, 1.0 */
switch (tex->extend) {
diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c
index 6c1055ec9e0..a3a714553d2 100644
--- a/source/blender/render/intern/source/zbuf.c
+++ b/source/blender/render/intern/source/zbuf.c
@@ -37,7 +37,7 @@
#include <limits.h>
#include <string.h>
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_jitter.h"
#include "BLI_threads.h"
@@ -1808,16 +1808,16 @@ void zbuf_make_winmat(Render *re, float winmat[][4])
float panomat[4][4];
if(re->r.mode & R_PANORAMA) {
- Mat4One(panomat);
+ unit_m4(panomat);
panomat[0][0]= re->panoco;
panomat[0][2]= re->panosi;
panomat[2][0]= -re->panosi;
panomat[2][2]= re->panoco;
- Mat4MulMat4(winmat, panomat, re->winmat);
+ mul_m4_m4m4(winmat, panomat, re->winmat);
}
else
- Mat4CpyMat4(winmat, re->winmat);
+ copy_m4_m4(winmat, re->winmat);
}
/* do zbuffering and clip, f1 f2 f3 are hocos, c1 c2 c3 are clipping flags */
@@ -2133,9 +2133,9 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart*,
continue;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
if(clip_render_object(obi->obr->boundbox, bounds, obwinmat))
continue;
@@ -2312,9 +2312,9 @@ void zbuffer_shadow(Render *re, float winmat[][4], LampRen *lar, int *rectz, int
continue;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
if(clip_render_object(obi->obr->boundbox, NULL, obwinmat))
continue;
@@ -2551,9 +2551,9 @@ void zbuffer_sss(RenderPart *pa, unsigned int lay, void *handle, void (*func)(vo
continue;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
if(clip_render_object(obi->obr->boundbox, bounds, obwinmat))
continue;
@@ -3297,9 +3297,9 @@ static int zbuffer_abuf(Render *re, RenderPart *pa, APixstr *APixbuf, ListBase *
continue;
if(obi->flag & R_TRANSFORMED)
- Mat4MulMat4(obwinmat, obi->mat, winmat);
+ mul_m4_m4m4(obwinmat, obi->mat, winmat);
else
- Mat4CpyMat4(obwinmat, winmat);
+ copy_m4_m4(obwinmat, winmat);
if(clip_render_object(obi->obr->boundbox, bounds, obwinmat))
continue;
diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt
index 59e9d30093f..7f1611b7f55 100644
--- a/source/blender/windowmanager/CMakeLists.txt
+++ b/source/blender/windowmanager/CMakeLists.txt
@@ -36,6 +36,7 @@ SET(INC .
../../kernel/gen_system ../readstreamglue
../../../intern/elbeem/extern
../../../intern/ghost ../../../intern/opennl/extern ../../../extern/glew/include
+ ../python
../nodes
../gpu
../freestyle
@@ -43,6 +44,8 @@ SET(INC .
${OPENGL_INCLUDE_DIR}
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
IF(WITH_INTERNATIONAL)
ADD_DEFINITIONS(-DINTERNATIONAL)
ENDIF(WITH_INTERNATIONAL)
@@ -85,4 +88,3 @@ IF(BF_BUILDINFO)
ENDIF(BF_BUILDINFO)
BLENDERLIB_NOLIST(bf_windowmanager "${SRC}" "${INC}")
-
diff --git a/source/blender/windowmanager/SConscript b/source/blender/windowmanager/SConscript
index 97963953e3b..7077407bc31 100644
--- a/source/blender/windowmanager/SConscript
+++ b/source/blender/windowmanager/SConscript
@@ -14,7 +14,7 @@ incs += ' ../makesrna ../gpu ../freestyle ../blenfont'
incs += ' #/intern/guardedalloc #/intern/memutil #/intern/ghost'
incs += ' #/intern/elbeem #/extern/glew/include'
-defs = []
+defs = [ 'GLEW_STATIC' ]
if not env['WITH_BF_PYTHON']:
defs.append('DISABLE_PYTHON')
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index f9732b9c929..a965b484087 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -52,6 +52,11 @@ void WM_init (struct bContext *C);
void WM_exit (struct bContext *C);
void WM_main (struct bContext *C);
+void WM_init_splash (struct bContext *C);
+
+
+void WM_check (struct bContext *C);
+
struct wmWindow *WM_window_open (struct bContext *C, struct rcti *rect);
/* defines for 'type' WM_window_open_temp */
@@ -83,6 +88,8 @@ void WM_timecursor (struct wmWindow *win, int nr);
void *WM_paint_cursor_activate(struct wmWindowManager *wm, int (*poll)(struct bContext *C), void (*draw)(struct bContext *C, int, int, void *customdata), void *customdata);
void WM_paint_cursor_end(struct wmWindowManager *wm, void *handle);
+void WM_cursor_warp (struct wmWindow *win, int x, int y);
+
/* keyconfig and keymap */
wmKeyConfig *WM_keyconfig_add (struct wmWindowManager *wm, char *idname);
void WM_keyconfig_free (struct wmKeyConfig *keyconf);
@@ -95,17 +102,20 @@ wmKeyMapItem *WM_keymap_verify_item(struct wmKeyMap *keymap, char *idname, int t
int val, int modifier, int keymodifier);
wmKeyMapItem *WM_keymap_add_item(struct wmKeyMap *keymap, char *idname, int type,
int val, int modifier, int keymodifier);
+wmKeyMapItem *WM_keymap_add_menu(struct wmKeyMap *keymap, char *idname, int type,
+ int val, int modifier, int keymodifier);
void WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem *kmi);
char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len);
wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid);
wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap);
+int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap);
wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap);
void WM_keymap_restore_to_default(struct wmKeyMap *keymap);
wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, struct EnumPropertyItem *items);
wmKeyMap *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname);
-void WM_modalkeymap_add_item(struct wmKeyMap *km, int type, int val, int modifier, int keymodifier, int value);
+wmKeyMapItem *WM_modalkeymap_add_item(struct wmKeyMap *km, int type, int val, int modifier, int keymodifier, int value);
void WM_modalkeymap_assign(struct wmKeyMap *km, char *opname);
const char *WM_key_event_string(short type);
@@ -183,6 +193,7 @@ int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int con
void WM_operator_properties_alloc(struct PointerRNA **ptr, struct IDProperty **properties, const char *opstring); /* used for keymap and macro items */
void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring);
+void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot);
void WM_operator_properties_free(struct PointerRNA *ptr);
void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type);
void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend);
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 3d31341c66a..53cca69fffc 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -82,6 +82,7 @@ enum {
#define KM_NOTHING 0
#define KM_PRESS 1
#define KM_RELEASE 2
+#define KM_CLICK 3
/* ************** UI Handler ***************** */
@@ -133,8 +134,9 @@ typedef struct wmNotifier {
#define NC_WORLD (13<<24)
#define NC_ANIMATION (14<<24)
#define NC_SPACE (15<<24)
-#define NC_NODE (15<<24)
#define NC_GEOM (16<<24)
+#define NC_NODE (17<<24)
+#define NC_ID (18<<24)
/* data type, 256 entries is enough, it can overlap */
#define NOTE_DATA 0x00FF0000
@@ -211,6 +213,13 @@ typedef struct wmNotifier {
#define ND_SELECT (80<<16)
#define ND_DATA (81<<16)
+ /* NC_NODE Nodes */
+#define ND_NODE_SELECT (1<<16)
+
+ /* NC_ID IDs */
+#define ND_ID_RENAME (1<<16)
+
+
/* NC_SPACE */
#define ND_SPACE_CONSOLE (1<<16) /* general redraw */
#define ND_SPACE_CONSOLE_REPORT (2<<16) /* update for reports, could specify type */
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index 1d173005d85..d455c8b2bc1 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -43,6 +43,7 @@
#include "BKE_main.h"
#include "BKE_screen.h"
#include "BKE_report.h"
+#include "BKE_global.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -196,7 +197,7 @@ void WM_keymap_init(bContext *C)
WM_keyconfig_userdef(wm);
}
-void wm_check(bContext *C)
+void WM_check(bContext *C)
{
wmWindowManager *wm= CTX_wm_manager(C);
@@ -208,19 +209,21 @@ void wm_check(bContext *C)
if(wm==NULL) return;
if(wm->windows.first==NULL) return;
- /* case: fileread */
- if((wm->initialized & WM_INIT_WINDOW) == 0) {
- WM_keymap_init(C);
- WM_autosave_init(C);
- }
-
- /* case: no open windows at all, for old file reads */
- wm_window_add_ghostwindows(wm);
-
- /* case: fileread */
- if((wm->initialized & WM_INIT_WINDOW) == 0) {
- ED_screens_initialize(wm);
- wm->initialized |= WM_INIT_WINDOW;
+ if (!G.background) {
+ /* case: fileread */
+ if((wm->initialized & WM_INIT_WINDOW) == 0) {
+ WM_keymap_init(C);
+ WM_autosave_init(C);
+ }
+
+ /* case: no open windows at all, for old file reads */
+ wm_window_add_ghostwindows(wm);
+
+ /* case: fileread */
+ if((wm->initialized & WM_INIT_WINDOW) == 0) {
+ ED_screens_initialize(wm);
+ wm->initialized |= WM_INIT_WINDOW;
+ }
}
}
diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c
index df483f9013e..6145871f9d4 100644
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@ -173,16 +173,22 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds)
if(hide) mode = GHOST_kGrabHide;
else if(wrap) mode = GHOST_kGrabWrap;
- if ((G.f & G_DEBUG) == 0)
- if(win)
- GHOST_SetCursorGrab(win->ghostwin, mode, bounds);
+ if ((G.f & G_DEBUG) == 0) {
+ if (win && win->ghostwin) {
+ const GHOST_TabletData *tabletdata= GHOST_GetTabletData(win->ghostwin);
+
+ if ((tabletdata) && (tabletdata->Active == GHOST_kTabletModeNone))
+ GHOST_SetCursorGrab(win->ghostwin, mode, bounds);
+ }
+ }
}
void WM_cursor_ungrab(wmWindow *win)
{
- if ((G.f & G_DEBUG) == 0)
+ if ((G.f & G_DEBUG) == 0) {
if(win && win->ghostwin)
GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL);
+ }
}
/* afer this you can call restore too */
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index f301a20a7c1..93c8b669611 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -461,10 +461,18 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
WM_operator_free(op);
}
else if(retval & OPERATOR_RUNNING_MODAL) {
- /* grab cursor during blocking modal ops (X11) */
- if(ot->flag & OPTYPE_BLOCKING) {
+ /* grab cursor during blocking modal ops (X11)
+ * Also check for macro
+ * */
+ if(ot->flag & OPTYPE_BLOCKING || (op->opm && op->opm->type->flag & OPTYPE_BLOCKING)) {
int bounds[4] = {-1,-1,-1,-1};
- int wrap = (U.uiflag & USER_CONTINUOUS_MOUSE) && ((op->flag & OP_GRAB_POINTER) || (ot->flag & OPTYPE_GRAB_POINTER));
+ int wrap;
+
+ if (op->opm) {
+ wrap = (U.uiflag & USER_CONTINUOUS_MOUSE) && ((op->opm->flag & OP_GRAB_POINTER) || (op->opm->type->flag & OPTYPE_GRAB_POINTER));
+ } else {
+ wrap = (U.uiflag & USER_CONTINUOUS_MOUSE) && ((op->flag & OP_GRAB_POINTER) || (ot->flag & OPTYPE_GRAB_POINTER));
+ }
if(wrap) {
ARegion *ar= CTX_wm_region(C);
@@ -498,12 +506,25 @@ static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, int contex
int retval;
/* dummie test */
- if(ot && C && window) {
- event= window->eventstate;
+ if(ot && C) {
+ switch(context) {
+ case WM_OP_INVOKE_DEFAULT:
+ case WM_OP_INVOKE_REGION_WIN:
+ case WM_OP_INVOKE_AREA:
+ case WM_OP_INVOKE_SCREEN:
+ /* window is needed for invoke, cancel operator */
+ if (window == NULL)
+ return 0;
+ else
+ event= window->eventstate;
+ break;
+ default:
+ event = NULL;
+ }
+
switch(context) {
case WM_OP_EXEC_REGION_WIN:
- event= NULL; /* pass on without break */
case WM_OP_INVOKE_REGION_WIN:
{
/* forces operator to go to the region window, for header menus */
@@ -527,7 +548,6 @@ static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, int contex
return retval;
}
case WM_OP_EXEC_AREA:
- event= NULL; /* pass on without break */
case WM_OP_INVOKE_AREA:
{
/* remove region from context */
@@ -540,7 +560,6 @@ static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, int contex
return retval;
}
case WM_OP_EXEC_SCREEN:
- event= NULL; /* pass on without break */
case WM_OP_INVOKE_SCREEN:
{
/* remove region + area from context */
@@ -556,7 +575,6 @@ static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, int contex
return retval;
}
case WM_OP_EXEC_DEFAULT:
- event= NULL; /* pass on without break */
case WM_OP_INVOKE_DEFAULT:
return wm_operator_invoke(C, ot, event, properties, reports);
}
@@ -611,7 +629,7 @@ int WM_operator_call_py(bContext *C, wmOperatorType *ot, int context, PointerRNA
/* ********************* handlers *************** */
/* future extra customadata free? */
-static void wm_event_free_handler(wmEventHandler *handler)
+void wm_event_free_handler(wmEventHandler *handler)
{
MEM_freeN(handler);
}
@@ -756,6 +774,30 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi)
return 1;
}
}
+ /* exception for numpad emulation */
+ else if(U.flag & USER_NONUMPAD) {
+ wmKeyMapItem tmp= *kmi;
+
+ switch(kmi->type) {
+ case PAD0: tmp.type = ZEROKEY; break;
+ case PAD1: tmp.type = ONEKEY; break;
+ case PAD2: tmp.type = TWOKEY; break;
+ case PAD3: tmp.type = THREEKEY; break;
+ case PAD4: tmp.type = FOURKEY; break;
+ case PAD5: tmp.type = FIVEKEY; break;
+ case PAD6: tmp.type = SIXKEY; break;
+ case PAD7: tmp.type = SEVENKEY; break;
+ case PAD8: tmp.type = EIGHTKEY; break;
+ case PAD9: tmp.type = NINEKEY; break;
+ case PADMINUS: tmp.type = MINUSKEY; break;
+ case PADPLUSKEY: tmp.type = EQUALKEY; break;
+ case PADSLASHKEY: tmp.type = BACKSLASHKEY; break;
+ }
+
+ if(tmp.type != kmi->type)
+ if(wm_eventmatch(winevent, &tmp))
+ return 1;
+ }
/* the matching rules */
if(kmitype==KM_TEXTINPUT)
@@ -795,12 +837,17 @@ static int wm_event_always_pass(wmEvent *event)
}
/* operator exists */
-static void wm_event_modalkeymap(wmOperator *op, wmEvent *event)
+static void wm_event_modalkeymap(const bContext *C, wmOperator *op, wmEvent *event)
{
+ /* support for modal keymap in macros */
+ if (op->opm)
+ op = op->opm;
+
if(op->type->modalkeymap) {
+ wmKeyMap *keymap= WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap);
wmKeyMapItem *kmi;
-
- for(kmi= op->type->modalkeymap->items.first; kmi; kmi= kmi->next) {
+
+ for(kmi= keymap->items.first; kmi; kmi= kmi->next) {
if(wm_eventmatch(event, kmi)) {
event->type= EVT_MODAL_MAP;
@@ -827,7 +874,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
wm_handler_op_context(C, handler);
wm_region_mouse_co(C, event);
- wm_event_modalkeymap(op, event);
+ wm_event_modalkeymap(C, op, event);
retval= ot->modal(C, op, event);
@@ -890,6 +937,14 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
retval= wm_operator_invoke(C, ot, event, properties, NULL);
}
+ /* Finished and pass through flag as handled */
+ if(retval == (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH))
+ return WM_HANDLER_HANDLED;
+
+ /* Modal unhandled, break */
+ if(retval == (OPERATOR_PASS_THROUGH|OPERATOR_RUNNING_MODAL))
+ return (WM_HANDLER_BREAK|WM_HANDLER_MODAL);
+
if(retval & OPERATOR_PASS_THROUGH)
return WM_HANDLER_CONTINUE;
@@ -1063,7 +1118,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
/* modal+blocking handler */
if(handler->flag & WM_HANDLER_BLOCKING)
- action= WM_HANDLER_BREAK;
+ action |= WM_HANDLER_BREAK;
if(handler->keymap) {
wmKeyMap *keymap= WM_keymap_active(wm, handler->keymap);
@@ -1075,28 +1130,28 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
event->keymap_idname= kmi->idname; /* weak, but allows interactive callback to not use rawkey */
- action= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr);
- if(action==WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */
+ action |= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr);
+ if(action & WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */
break;
}
}
}
}
else if(handler->ui_handle) {
- action= wm_handler_ui_call(C, handler, event);
+ action |= wm_handler_ui_call(C, handler, event);
}
else if(handler->type==WM_HANDLER_FILESELECT) {
/* screen context changes here */
- action= wm_handler_fileselect_call(C, handlers, handler, event);
+ action |= wm_handler_fileselect_call(C, handlers, handler, event);
}
else {
/* modal, swallows all */
- action= wm_handler_operator_call(C, handlers, handler, event, NULL);
+ action |= wm_handler_operator_call(C, handlers, handler, event, NULL);
}
- if(action==WM_HANDLER_BREAK) {
+ if(action & WM_HANDLER_BREAK) {
if(always_pass)
- action= WM_HANDLER_CONTINUE;
+ action &= ~WM_HANDLER_BREAK;
else
break;
}
@@ -1106,6 +1161,22 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
if(CTX_wm_window(C)==NULL)
break;
}
+
+ /* test for CLICK event */
+ if (event->val == KM_RELEASE && (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL))) {
+ wmWindow *win = CTX_wm_window(C);
+
+ if (win && win->last_type == event->type && win->last_val == KM_PRESS) {
+ event->val = KM_CLICK;
+ action |= wm_handlers_do(C, event, handlers);
+
+ /* revert value if not handled */
+ if ((action & WM_HANDLER_BREAK) == 0) {
+ event->val = KM_RELEASE;
+ }
+ }
+ }
+
return action;
}
@@ -1203,7 +1274,7 @@ void wm_event_do_handlers(bContext *C)
wm_event_free_all(win);
while( (event= win->queue.first) ) {
- int action;
+ int action = WM_HANDLER_CONTINUE;
CTX_wm_window_set(C, win);
@@ -1215,7 +1286,7 @@ void wm_event_do_handlers(bContext *C)
wm_window_make_drawable(C, win);
/* first we do priority handlers, modal + some limited keymaps */
- action= wm_handlers_do(C, event, &win->modalhandlers);
+ action |= wm_handlers_do(C, event, &win->modalhandlers);
/* fileread case */
if(CTX_wm_window(C)==NULL)
@@ -1224,7 +1295,7 @@ void wm_event_do_handlers(bContext *C)
/* builtin tweak, if action is break it removes tweak */
wm_tweakevent_test(C, event, action);
- if(action==WM_HANDLER_CONTINUE) {
+ if((action & WM_HANDLER_BREAK) == 0) {
ScrArea *sa;
ARegion *ar;
int doit= 0;
@@ -1241,15 +1312,15 @@ void wm_event_do_handlers(bContext *C)
if(wm_event_inside_i(event, &sa->totrct)) {
CTX_wm_area_set(C, sa);
- if(action==WM_HANDLER_CONTINUE) {
+ if((action & WM_HANDLER_BREAK) == 0) {
for(ar=sa->regionbase.first; ar; ar= ar->next) {
if(wm_event_inside_i(event, &ar->winrct)) {
CTX_wm_region_set(C, ar);
- action= wm_handlers_do(C, event, &ar->handlers);
+ action |= wm_handlers_do(C, event, &ar->handlers);
doit |= (BLI_in_rcti(&ar->winrct, event->x, event->y));
- if(action==WM_HANDLER_BREAK)
+ if(action & WM_HANDLER_BREAK)
break;
}
}
@@ -1257,8 +1328,8 @@ void wm_event_do_handlers(bContext *C)
CTX_wm_region_set(C, NULL);
- if(action==WM_HANDLER_CONTINUE)
- action= wm_handlers_do(C, event, &sa->handlers);
+ if((action & WM_HANDLER_BREAK) == 0)
+ action |= wm_handlers_do(C, event, &sa->handlers);
CTX_wm_area_set(C, NULL);
@@ -1266,12 +1337,12 @@ void wm_event_do_handlers(bContext *C)
}
}
- if(action==WM_HANDLER_CONTINUE) {
+ if((action & WM_HANDLER_BREAK) == 0) {
/* also some non-modal handlers need active area/region */
CTX_wm_area_set(C, area_event_inside(C, event->x, event->y));
CTX_wm_region_set(C, region_event_inside(C, event->x, event->y));
- action= wm_handlers_do(C, event, &win->handlers);
+ action |= wm_handlers_do(C, event, &win->handlers);
/* fileread case */
if(CTX_wm_window(C)==NULL)
@@ -1286,6 +1357,18 @@ void wm_event_do_handlers(bContext *C)
}
}
+ /* store last event for this window */
+ /* mousemove event don't overwrite last type */
+ if (event->type != MOUSEMOVE) {
+ if (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) {
+ win->last_type = event->type;
+ win->last_val = event->val;
+ } else {
+ win->last_type = -1;
+ win->last_val = 0;
+ }
+ }
+
/* unlink and free here, blender-quit then frees all */
BLI_remlink(&win->queue, event);
wm_event_free(event);
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index b2e55c8532e..ba514f097e6 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -89,7 +89,7 @@
#include "GPU_draw.h"
-// XXX #include "BPY_extern.h"
+#include "BPY_extern.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -122,6 +122,8 @@ static void wm_window_match_init(bContext *C, ListBase *wmlist)
for(win= wm->windows.first; win; win= win->next) {
CTX_wm_window_set(C, win); /* needed by operator close callbacks */
+ WM_event_remove_handlers(C, &win->handlers);
+ WM_event_remove_handlers(C, &win->modalhandlers);
ED_screen_exit(C, win, win->screen);
}
}
@@ -256,8 +258,8 @@ void WM_read_file(bContext *C, char *name, ReportList *reports)
G.save_over = 1;
/* match the read WM with current WM */
- wm_window_match_do(C, &wmbase);
- wm_check(C); /* opens window(s), checks keymaps */
+ wm_window_match_do(C, &wmbase);
+ WM_check(C); /* opens window(s), checks keymaps */
// XXX mainwindow_set_filename_to_title(G.main->name);
@@ -274,8 +276,11 @@ void WM_read_file(bContext *C, char *name, ReportList *reports)
WM_event_add_notifier(C, NC_WM|ND_FILEREAD, NULL);
// refresh_interface_font();
-
+
CTX_wm_window_set(C, NULL); /* exits queues */
+
+ /* run any texts that were loaded in and flagged as modules */
+ BPY_load_user_modules(C);
}
else if(retval==1)
BKE_write_undo(C, "Import file");
@@ -322,14 +327,14 @@ int WM_read_homefile(bContext *C, wmOperator *op)
/* match the read WM with current WM */
wm_window_match_do(C, &wmbase);
- wm_check(C); /* opens window(s), checks keymaps */
+ WM_check(C); /* opens window(s), checks keymaps */
strcpy(G.sce, scestr); /* restore */
wm_init_userdef();
/* When loading factory settings, the reset solid OpenGL lights need to be applied. */
- GPU_default_lights();
+ if (!G.background) GPU_default_lights();
/* XXX */
G.save_over = 0; // start with save preference untitled.blend
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c
index 8097822acbc..d5fe9d324c4 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -108,8 +108,10 @@ static void wm_free_reports(bContext *C)
void WM_init(bContext *C)
{
- wm_ghost_init(C); /* note: it assigns C to ghost! */
- wm_init_cursor_data();
+ if (!G.background) {
+ wm_ghost_init(C); /* note: it assigns C to ghost! */
+ wm_init_cursor_data();
+ }
wm_operatortype_init();
set_free_windowmanager_cb(wm_close_and_free); /* library.c */
@@ -130,10 +132,12 @@ void WM_init(bContext *C)
WM_read_homefile(C, NULL);
wm_init_reports(C); /* reports cant be initialized before the wm */
-
- GPU_extensions_init();
- UI_init();
+ if (!G.background) {
+ GPU_extensions_init();
+
+ UI_init();
+ }
// clear_matcopybuf(); /* XXX */
@@ -147,6 +151,19 @@ void WM_init(bContext *C)
read_Blog();
BLI_strncpy(G.lib, G.sce, FILE_MAX);
+
+}
+
+void WM_init_splash(bContext *C)
+{
+ wmWindowManager *wm= CTX_wm_manager(C);
+ wmWindow *prevwin= CTX_wm_window(C);
+
+ if(wm->windows.first) {
+ CTX_wm_window_set(C, wm->windows.first);
+ WM_operator_name_call(C, "WM_OT_splash", WM_OP_INVOKE_DEFAULT, NULL);
+ CTX_wm_window_set(C, prevwin);
+ }
}
/* free strings of open recent files */
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 48262e40ea7..b3269a23277 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -88,9 +88,14 @@ void WM_keyconfig_userdef(wmWindowManager *wm)
wmKeyMap *km;
wmKeyMapItem *kmi;
- for(km=U.keymaps.first; km; km=km->next)
- for(kmi=km->items.first; kmi; kmi=kmi->next)
- keymap_properties_set(kmi);
+ for(km=U.keymaps.first; km; km=km->next) {
+ /* modal keymaps don't have operator properties */
+ if ((km->flag & KEYMAP_MODAL) == 0) {
+ for(kmi=km->items.first; kmi; kmi=kmi->next) {
+ keymap_properties_set(kmi);
+ }
+ }
+ }
}
static wmKeyConfig *wm_keyconfig_list_find(ListBase *lb, char *idname)
@@ -188,6 +193,14 @@ wmKeyMapItem *WM_keymap_add_item(wmKeyMap *keymap, char *idname, int type, int v
return kmi;
}
+/* menu wrapper for WM_keymap_add_item */
+wmKeyMapItem *WM_keymap_add_menu(wmKeyMap *keymap, char *idname, int type, int val, int modifier, int keymodifier)
+{
+ wmKeyMapItem *kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", type, val, modifier, keymodifier);
+ RNA_string_set(kmi->ptr, "name", idname);
+ return kmi;
+}
+
void WM_keymap_remove_item(wmKeyMap *keymap, wmKeyMapItem *kmi)
{
if(BLI_findindex(&keymap->items, kmi) != -1) {
@@ -258,7 +271,7 @@ wmKeyMap *WM_modalkeymap_get(wmKeyConfig *keyconf, char *idname)
}
-void WM_modalkeymap_add_item(wmKeyMap *km, int type, int val, int modifier, int keymodifier, int value)
+wmKeyMapItem *WM_modalkeymap_add_item(wmKeyMap *km, int type, int val, int modifier, int keymodifier, int value)
{
wmKeyMapItem *kmi= MEM_callocN(sizeof(wmKeyMapItem), "keymap entry");
@@ -266,6 +279,8 @@ void WM_modalkeymap_add_item(wmKeyMap *km, int type, int val, int modifier, int
kmi->propvalue= value;
keymap_event_set(kmi, type, val, modifier, keymodifier);
+
+ return kmi;
}
void WM_modalkeymap_assign(wmKeyMap *km, char *opname)
@@ -295,17 +310,25 @@ char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len)
buf[0]= 0;
- if(kmi->shift)
- strcat(buf, "Shift ");
+ if (kmi->shift == KM_ANY &&
+ kmi->ctrl == KM_ANY &&
+ kmi->alt == KM_ANY &&
+ kmi->oskey == KM_ANY) {
+
+ strcat(buf, "Any ");
+ } else {
+ if(kmi->shift)
+ strcat(buf, "Shift ");
- if(kmi->ctrl)
- strcat(buf, "Ctrl ");
+ if(kmi->ctrl)
+ strcat(buf, "Ctrl ");
- if(kmi->alt)
- strcat(buf, "Alt ");
+ if(kmi->alt)
+ strcat(buf, "Alt ");
- if(kmi->oskey)
- strcat(buf, "Cmd ");
+ if(kmi->oskey)
+ strcat(buf, "Cmd ");
+ }
if(kmi->keymodifier) {
strcat(buf, WM_key_event_string(kmi->keymodifier));
@@ -410,6 +433,36 @@ char *WM_key_event_operator_string(const bContext *C, const char *opname, int op
/* ***************** user preferences ******************* */
+int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap)
+{
+ wmKeyConfig *keyconf;
+ wmKeyMap *km;
+
+ if(!keymap)
+ return 0;
+
+ /* init from user key config */
+ keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
+ if(keyconf) {
+ km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ if(km) {
+ keymap->poll= km->poll; /* lazy init */
+ keymap->modal_items= km->modal_items;
+ return 1;
+ }
+ }
+
+ /* or from default */
+ km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ if(km) {
+ keymap->poll= km->poll; /* lazy init */
+ keymap->modal_items= km->modal_items;
+ return 1;
+ }
+
+ return 0;
+}
+
wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap)
{
wmKeyConfig *keyconf;
@@ -422,6 +475,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap)
km= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(km) {
km->poll= keymap->poll; /* lazy init */
+ km->modal_items= keymap->modal_items;
return km;
}
@@ -431,6 +485,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap)
km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(km) {
km->poll= keymap->poll; /* lazy init */
+ km->modal_items= keymap->modal_items;
return km;
}
}
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 22c5f1c15ae..15e27f45d5e 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -167,71 +167,159 @@ void WM_operatortype_append_ptr(void (*opfunc)(wmOperatorType*, void*), void *us
/* ********************* macro operator ******************** */
+typedef struct {
+ int retval;
+} MacroData;
+
+static void wm_macro_start(wmOperator *op)
+{
+ if (op->customdata == NULL) {
+ op->customdata = MEM_callocN(sizeof(MacroData), "MacroData");
+ }
+}
+
+static int wm_macro_end(wmOperator *op, int retval)
+{
+ if (retval & OPERATOR_CANCELLED) {
+ MacroData *md = op->customdata;
+
+ if (md->retval & OPERATOR_FINISHED) {
+ retval |= OPERATOR_FINISHED;
+ retval &= ~OPERATOR_CANCELLED;
+ }
+ }
+
+ /* if modal is ending, free custom data */
+ if (retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED)) {
+ if (op->customdata) {
+ MEM_freeN(op->customdata);
+ }
+ }
+
+ return retval;
+}
+
/* macro exec only runs exec calls */
static int wm_macro_exec(bContext *C, wmOperator *op)
{
wmOperator *opm;
int retval= OPERATOR_FINISHED;
-// printf("macro exec %s\n", op->type->idname);
-
+ wm_macro_start(op);
+
for(opm= op->macro.first; opm; opm= opm->next) {
if(opm->type->exec) {
-// printf("macro exec %s\n", opm->type->idname);
retval= opm->type->exec(C, opm);
- if(!(retval & OPERATOR_FINISHED))
- break;
+ if (retval & OPERATOR_FINISHED) {
+ MacroData *md = op->customdata;
+ md->retval = OPERATOR_FINISHED; /* keep in mind that at least one operator finished */
+ } else {
+ break; /* operator didn't finish, end macro */
+ }
}
}
-// if(opm)
-// printf("macro ended not finished\n");
-// else
-// printf("macro end\n");
- return retval;
+ return wm_macro_end(op, retval);
}
-static int wm_macro_invoke(bContext *C, wmOperator *op, wmEvent *event)
+int wm_macro_invoke_internal(bContext *C, wmOperator *op, wmEvent *event, wmOperator *opm)
{
- wmOperator *opm;
int retval= OPERATOR_FINISHED;
-
-// printf("macro invoke %s\n", op->type->idname);
-
- for(opm= op->macro.first; opm; opm= opm->next) {
-
+
+ /* start from operator received as argument */
+ for( ; opm; opm= opm->next) {
if(opm->type->invoke)
retval= opm->type->invoke(C, opm, event);
else if(opm->type->exec)
retval= opm->type->exec(C, opm);
-
- if(!(retval & OPERATOR_FINISHED))
- break;
+
+ if (retval & OPERATOR_FINISHED) {
+ MacroData *md = op->customdata;
+ md->retval = OPERATOR_FINISHED; /* keep in mind that at least one operator finished */
+ } else {
+ break; /* operator didn't finish, end macro */
+ }
}
-
-// if(opm)
-// printf("macro ended not finished\n");
-// else
-// printf("macro end\n");
-
-
- return retval;
+
+ return wm_macro_end(op, retval);
+}
+
+static int wm_macro_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ wm_macro_start(op);
+ return wm_macro_invoke_internal(C, op, event, op->macro.first);
}
static int wm_macro_modal(bContext *C, wmOperator *op, wmEvent *event)
{
-// printf("macro modal %s\n", op->type->idname);
+ wmOperator *opm = op->opm;
+ int retval= OPERATOR_FINISHED;
- if(op->opm==NULL)
+ if(opm==NULL)
printf("macro error, calling NULL modal()\n");
else {
-// printf("macro modal %s\n", op->opm->type->idname);
- return op->opm->type->modal(C, op->opm, event);
- }
-
- return OPERATOR_FINISHED;
+ retval = opm->type->modal(C, opm, event);
+
+ /* if this one is done but it's not the last operator in the macro */
+ if ((retval & OPERATOR_FINISHED) && opm->next) {
+ MacroData *md = op->customdata;
+
+ md->retval = OPERATOR_FINISHED; /* keep in mind that at least one operator finished */
+
+ retval = wm_macro_invoke_internal(C, op, event, opm->next);
+
+ /* if new operator is modal and also added its own handler */
+ if (retval & OPERATOR_RUNNING_MODAL && op->opm != opm) {
+ wmWindow *win = CTX_wm_window(C);
+ wmEventHandler *handler = NULL;
+
+ for (handler = win->modalhandlers.first; handler; handler = handler->next) {
+ /* first handler in list is the new one */
+ if (handler->op == op)
+ break;
+ }
+
+ if (handler) {
+ BLI_remlink(&win->modalhandlers, handler);
+ wm_event_free_handler(handler);
+ }
+
+ /* if operator is blocking, grab cursor
+ * This may end up grabbing twice, but we don't care.
+ * */
+ if(op->opm->type->flag & OPTYPE_BLOCKING) {
+ int bounds[4] = {-1,-1,-1,-1};
+ int wrap = (U.uiflag & USER_CONTINUOUS_MOUSE) && ((op->opm->flag & OP_GRAB_POINTER) || (op->opm->type->flag & OPTYPE_GRAB_POINTER));
+
+ if(wrap) {
+ ARegion *ar= CTX_wm_region(C);
+ if(ar) {
+ bounds[0]= ar->winrct.xmin;
+ bounds[1]= ar->winrct.ymax;
+ bounds[2]= ar->winrct.xmax;
+ bounds[3]= ar->winrct.ymin;
+ }
+ }
+
+ WM_cursor_grab(CTX_wm_window(C), wrap, FALSE, bounds);
+ }
+ }
+ }
+ }
+
+ return wm_macro_end(op, retval);
+}
+
+static int wm_macro_cancel(bContext *C, wmOperator *op)
+{
+ /* call cancel on the current modal operator, if any */
+ if (op->opm && op->opm->type->cancel) {
+ op->opm->type->cancel(C, op->opm);
+ }
+
+ return wm_macro_end(op, OPERATOR_CANCELLED);
}
/* Names have to be static for now */
@@ -254,6 +342,7 @@ wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag)
ot->exec= wm_macro_exec;
ot->invoke= wm_macro_invoke;
ot->modal= wm_macro_modal;
+ ot->cancel= wm_macro_cancel;
ot->poll= NULL;
RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)"); // XXX All ops should have a description but for now allow them not to.
@@ -376,8 +465,11 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i
PointerRNA opptr_default;
PropertyRNA *prop_default;
char *buf_default;
- if(!all_args) {
- WM_operator_properties_create(&opptr_default, ot->idname);
+ if(all_args==0 || opptr==NULL) {
+ WM_operator_properties_create_ptr(&opptr_default, ot);
+
+ if(opptr==NULL)
+ opptr = &opptr_default;
}
@@ -421,7 +513,7 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i
}
RNA_PROP_END;
- if(all_args==0)
+ if(all_args==0 || opptr==&opptr_default )
WM_operator_properties_free(&opptr_default);
BLI_dynstr_append(dynstr, ")");
@@ -431,12 +523,17 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i
return cstring;
}
+void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
+{
+ RNA_pointer_create(NULL, ot->srna, NULL, ptr);
+}
+
void WM_operator_properties_create(PointerRNA *ptr, const char *opstring)
{
wmOperatorType *ot= WM_operatortype_find(opstring, 0);
if(ot)
- RNA_pointer_create(NULL, ot->srna, NULL, ptr);
+ WM_operator_properties_create_ptr(ptr, ot);
else
RNA_pointer_create(NULL, &RNA_OperatorProperties, NULL, ptr);
}
@@ -610,10 +707,12 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op)
uiBlock *block;
uiLayout *layout;
uiStyle *style= U.uistyles.first;
+ int columns= 2, width= 300;
+
block= uiBeginBlock(C, ar, "redo_popup", UI_EMBOSS);
uiBlockClearFlag(block, UI_BLOCK_LOOP);
- uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1);
+ uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
uiBlockSetHandleFunc(block, redo_cb, arg_op);
if(!op->properties) {
@@ -621,14 +720,20 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op)
op->properties= IDP_New(IDP_GROUP, val, "wmOperatorProperties");
}
+ // XXX - hack, only for editing docs
+ if(strcmp(op->type->idname, "WM_OT_doc_edit")==0) {
+ columns= 1;
+ width= 500;
+ }
+
RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
- layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style);
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, width, 20, style);
uiItemL(layout, op->type->name, 0);
if(op->type->ui)
- op->type->ui((bContext*)C, &ptr, layout);
+ op->type->ui((bContext*)C, op, layout);
else
- uiDefAutoButsRNA(C, layout, &ptr, 2);
+ uiDefAutoButsRNA(C, layout, &ptr, columns);
uiPopupBoundsBlock(block, 4.0f, 0, 0);
uiEndBlock(C, block);
@@ -667,13 +772,13 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op)
block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
uiBlockClearFlag(block, UI_BLOCK_LOOP);
- uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1);
+ uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style);
uiItemL(layout, op->type->name, 0);
if(op->type->ui)
- op->type->ui(C, op->ptr, layout);
+ op->type->ui(C, op, layout);
else
uiDefAutoButsRNA(C, layout, op->ptr, 2);
@@ -716,6 +821,72 @@ static void WM_OT_debug_menu(wmOperatorType *ot)
RNA_def_int(ot->srna, "debugval", 0, -10000, 10000, "Debug Value", "", INT_MIN, INT_MAX);
}
+
+/* ***************** Splash Screen ************************* */
+
+static void wm_block_splash_close(bContext *C, void *arg_block, void *arg_unused)
+{
+ uiPupBlockClose(C, arg_block);
+}
+
+static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unused)
+{
+ uiBlock *block;
+ uiBut *but;
+ uiLayout *layout, *split, *col;
+ uiStyle *style= U.uistyles.first;
+
+ block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
+ uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1);
+
+ but= uiDefBut(block, BUT_IMAGE, 0, "", 0, 10, 501, 282, NULL, 0.0, 0.0, 0, 0, "");
+ uiButSetFunc(but, wm_block_splash_close, block, NULL);
+
+ uiBlockSetEmboss(block, UI_EMBOSSP);
+
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 10, 10, 480, 110, style);
+
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN);
+
+ split = uiLayoutSplit(layout, 0);
+ col = uiLayoutColumn(split, 0);
+ uiItemL(col, "Links", 0);
+ uiItemO(col, NULL, ICON_URL, "HELP_OT_release_logs");
+ uiItemO(col, NULL, ICON_URL, "HELP_OT_manual");
+ uiItemO(col, NULL, ICON_URL, "HELP_OT_blender_website");
+ uiItemO(col, NULL, ICON_URL, "HELP_OT_user_community");
+ uiItemO(col, NULL, ICON_URL, "HELP_OT_python_api");
+ uiItemS(col);
+
+ col = uiLayoutColumn(split, 0);
+ uiItemL(col, "Recent", 0);
+ uiItemsEnumO(col, "WM_OT_open_recentfile_splash", "file");
+ uiItemS(col);
+
+ uiCenteredBoundsBlock(block, 0.0f);
+ uiEndBlock(C, block);
+
+ return block;
+}
+
+static int wm_splash_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ uiPupBlock(C, wm_block_create_splash, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+static void WM_OT_splash(wmOperatorType *ot)
+{
+ ot->name= "Splash Screen";
+ ot->idname= "WM_OT_splash";
+ ot->description= "Opens a blocking popup region with release info";
+
+ ot->invoke= wm_splash_invoke;
+ ot->poll= WM_operator_winactive;
+}
+
+
/* ***************** Search menu ************************* */
static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
{
@@ -761,7 +932,7 @@ static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *arg_op)
uiBut *but;
block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
- uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1);
+ uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 10, 180, 19, "");
uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb, NULL);
@@ -921,6 +1092,7 @@ static EnumPropertyItem *open_recentfile_itemf(bContext *C, PointerRNA *ptr, int
/* dynamically construct enum */
for(recent = G.recent_files.first, i=0; (i<U.recent_files) && (recent); recent = recent->next, i++) {
tmp.value= i+1;
+ tmp.icon= ICON_FILE_BLEND;
tmp.identifier= recent->filename;
tmp.name= BLI_short_filename(recent->filename);
RNA_enum_item_add(&item, &totitem, &tmp);
@@ -950,6 +1122,47 @@ static void WM_OT_open_recentfile(wmOperatorType *ot)
RNA_def_enum_funcs(prop, open_recentfile_itemf);
}
+static EnumPropertyItem *open_recentfile_splash_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+ EnumPropertyItem tmp = {0, "", 0, "", ""};
+ EnumPropertyItem *item= NULL;
+ struct RecentFile *recent;
+ int totitem= 0, i;
+
+ /* dynamically construct enum */
+ for(recent = G.recent_files.first, i=0; (i<6) && (recent); recent = recent->next, i++) {
+ tmp.value= i+1;
+ tmp.icon= ICON_FILE_BLEND;
+ tmp.identifier= recent->filename;
+ tmp.name= BLI_last_slash(recent->filename);
+ if(tmp.name) tmp.name += 1;
+ else tmp.name = recent->filename;
+ RNA_enum_item_add(&item, &totitem, &tmp);
+ }
+
+ RNA_enum_item_end(&item, &totitem);
+ *free= 1;
+
+ return item;
+}
+
+static void WM_OT_open_recentfile_splash(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+ static EnumPropertyItem file_items[]= {
+ {0, NULL, 0, NULL, NULL}};
+
+ ot->name= "Open Recent File";
+ ot->idname= "WM_OT_open_recentfile_splash";
+ ot->description="Open recent files list.";
+
+ ot->exec= recentfile_exec;
+ ot->poll= WM_operator_winactive;
+
+ prop= RNA_def_enum(ot->srna, "file", file_items, 1, "File", "");
+ RNA_def_enum_funcs(prop, open_recentfile_splash_itemf);
+}
+
/* *************** open file **************** */
static void open_set_load_ui(wmOperator *op)
@@ -1810,8 +2023,11 @@ static void tweak_gesture_modal(bContext *C, wmEvent *event)
}
break;
default:
- WM_gesture_end(C, gesture);
- window->tweak= NULL;
+ if(!ISTIMER(event->type)) {
+ WM_gesture_end(C, gesture);
+ window->tweak= NULL;
+ }
+ break;
}
}
@@ -1829,7 +2045,7 @@ void wm_tweakevent_test(bContext *C, wmEvent *event, int action)
}
}
else {
- if(action==WM_HANDLER_BREAK) {
+ if(action & WM_HANDLER_BREAK) {
WM_gesture_end(C, win->tweak);
win->tweak= NULL;
}
@@ -2364,6 +2580,7 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_window_fullscreen_toggle);
WM_operatortype_append(WM_OT_exit_blender);
WM_operatortype_append(WM_OT_open_recentfile);
+ WM_operatortype_append(WM_OT_open_recentfile_splash);
WM_operatortype_append(WM_OT_open_mainfile);
WM_operatortype_append(WM_OT_link_append);
WM_operatortype_append(WM_OT_recover_last_session);
@@ -2373,6 +2590,7 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_redraw_timer);
WM_operatortype_append(WM_OT_memory_statistics);
WM_operatortype_append(WM_OT_debug_menu);
+ WM_operatortype_append(WM_OT_splash);
WM_operatortype_append(WM_OT_search_menu);
WM_operatortype_append(WM_OT_call_menu);
@@ -2447,12 +2665,12 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf)
{GESTURE_MODAL_BORDER_BEGIN, "BEGIN", 0, "Begin", ""},
{0, NULL, 0, NULL, NULL}};
- wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "View3D Gesture Border");
+ wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Border");
/* this function is called for each spacetype, only needs to add map once */
if(keymap) return;
- keymap= WM_modalkeymap_add(keyconf, "View3D Gesture Border", modal_items);
+ keymap= WM_modalkeymap_add(keyconf, "Gesture Border", modal_items);
/* items for modal map */
WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL);
@@ -2470,18 +2688,23 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf)
#endif
/* assign map to operators */
+ WM_modalkeymap_assign(keymap, "ACTION_OT_select_border");
WM_modalkeymap_assign(keymap, "ANIM_OT_channels_select_border");
- WM_modalkeymap_assign(keymap, "MARKER_OT_select_border");
-// WM_modalkeymap_assign(keymap, "SCREEN_OT_border_select"); // template
- WM_modalkeymap_assign(keymap, "ACT_OT_select_border");
+ WM_modalkeymap_assign(keymap, "ANIM_OT_previewrange_set");
WM_modalkeymap_assign(keymap, "CONSOLE_OT_select_border");
WM_modalkeymap_assign(keymap, "FILE_OT_select_border");
WM_modalkeymap_assign(keymap, "GRAPH_OT_select_border");
+ WM_modalkeymap_assign(keymap, "MARKER_OT_select_border");
WM_modalkeymap_assign(keymap, "NLA_OT_select_border");
WM_modalkeymap_assign(keymap, "NODE_OT_select_border");
+// WM_modalkeymap_assign(keymap, "SCREEN_OT_border_select"); // template
WM_modalkeymap_assign(keymap, "SEQUENCER_OT_select_border");
- WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_border");
WM_modalkeymap_assign(keymap, "UV_OT_select_border");
+ WM_modalkeymap_assign(keymap, "VIEW2D_OT_zoom_border");
+ WM_modalkeymap_assign(keymap, "VIEW3D_OT_clip_border");
+ WM_modalkeymap_assign(keymap, "VIEW3D_OT_render_border");
+ WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_border");
+ WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); // XXX TODO: zoom border should perhaps map rightmouse to zoom out instead of in+cancel
}
/* default keymap for windows and screens, only call once per WM */
diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c
index 081125bf7f6..00af9eb0bb9 100644
--- a/source/blender/windowmanager/intern/wm_subwindow.c
+++ b/source/blender/windowmanager/intern/wm_subwindow.c
@@ -38,7 +38,7 @@
#include "DNA_screen_types.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_global.h"
@@ -133,7 +133,7 @@ void wm_subwindow_getmatrix(wmWindow *win, int swinid, float mat[][4])
wmSubWindow *swin= swin_from_swinid(win, swinid);
if(swin)
- Mat4MulMat4(mat, swin->viewmat, swin->winmat);
+ mul_m4_m4m4(mat, swin->viewmat, swin->winmat);
}
/* always sets pixel-precise 2D window/view matrices */
@@ -155,8 +155,8 @@ int wm_subwindow_open(wmWindow *win, rcti *winrct)
swin->swinid= freewinid;
swin->winrct= *winrct;
- Mat4One(swin->viewmat);
- Mat4One(swin->winmat);
+ unit_m4(swin->viewmat);
+ unit_m4(swin->winmat);
/* and we appy it all right away */
wmSubWindowSet(win, swin->swinid);
@@ -279,9 +279,9 @@ void wmLoadMatrix(float mat[][4])
glLoadMatrixf(mat);
if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW)
- Mat4CpyMat4(_curswin->viewmat, mat);
+ copy_m4_m4(_curswin->viewmat, mat);
else
- Mat4CpyMat4(_curswin->winmat, mat);
+ copy_m4_m4(_curswin->winmat, mat);
}
void wmGetMatrix(float mat[][4])
@@ -289,9 +289,9 @@ void wmGetMatrix(float mat[][4])
if(_curswin==NULL) return;
if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW) {
- Mat4CpyMat4(mat, _curswin->viewmat);
+ copy_m4_m4(mat, _curswin->viewmat);
} else {
- Mat4CpyMat4(mat, _curswin->winmat);
+ copy_m4_m4(mat, _curswin->winmat);
}
}
@@ -317,8 +317,8 @@ void wmPushMatrix(void)
printf("wmPushMatrix error already pushed\n");
debugpush= 1;
- Mat4CpyMat4(_curswin->viewmat1, _curswin->viewmat);
- Mat4CpyMat4(_curswin->winmat1, _curswin->winmat);
+ copy_m4_m4(_curswin->viewmat1, _curswin->viewmat);
+ copy_m4_m4(_curswin->winmat1, _curswin->winmat);
}
void wmPopMatrix(void)
@@ -329,8 +329,8 @@ void wmPopMatrix(void)
printf("wmPopMatrix error nothing popped\n");
debugpush= 0;
- Mat4CpyMat4(_curswin->viewmat, _curswin->viewmat1);
- Mat4CpyMat4(_curswin->winmat, _curswin->winmat1);
+ copy_m4_m4(_curswin->viewmat, _curswin->viewmat1);
+ copy_m4_m4(_curswin->winmat, _curswin->winmat1);
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(&_curswin->winmat[0][0]);
@@ -342,7 +342,7 @@ void wmPopMatrix(void)
void wmGetSingleMatrix(float mat[][4])
{
if(_curswin)
- Mat4MulMat4(mat, _curswin->viewmat, _curswin->winmat);
+ mul_m4_m4m4(mat, _curswin->viewmat, _curswin->winmat);
}
void wmScale(float x, float y, float z)
@@ -363,9 +363,9 @@ void wmLoadIdentity(void)
if(_curswin==NULL) return;
if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW)
- Mat4One(_curswin->viewmat);
+ unit_m4(_curswin->viewmat);
else
- Mat4One(_curswin->winmat);
+ unit_m4(_curswin->winmat);
glLoadIdentity();
}
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 70d40df4532..78d70c96ad6 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -230,6 +230,9 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win)
BLI_remlink(&wm->windows, win);
wm_draw_window_clear(win);
+ CTX_wm_window_set(C, win); /* needed by handlers */
+ WM_event_remove_handlers(C, &win->handlers);
+ WM_event_remove_handlers(C, &win->modalhandlers);
ED_screen_exit(C, win, win->screen);
wm_window_free(C, wm, win);
@@ -335,7 +338,7 @@ static void wm_window_add_ghostwindow(wmWindowManager *wm, char *title, wmWindow
/* for wmWindows without ghostwin, open these and clear */
/* window size is read from window, if 0 it uses prefsize */
-/* called in wm_check, also inits stuff after file read */
+/* called in WM_check, also inits stuff after file read */
void wm_window_add_ghostwindows(wmWindowManager *wm)
{
wmKeyMap *keymap;
@@ -403,7 +406,7 @@ wmWindow *WM_window_open(bContext *C, rcti *rect)
win->drawmethod= -1;
win->drawdata= NULL;
- wm_check(C);
+ WM_check(C);
return win;
}
@@ -448,7 +451,7 @@ void WM_window_open_temp(bContext *C, rcti *position, int type)
/* make window active, and validate/resize */
CTX_wm_window_set(C, win);
- wm_check(C);
+ WM_check(C);
/* ensure it shows the right spacetype editor */
sa= win->screen->areabase.first;
@@ -480,7 +483,7 @@ void WM_window_open_temp(bContext *C, rcti *position, int type)
int wm_window_duplicate_op(bContext *C, wmOperator *op)
{
wm_window_copy(C, CTX_wm_window(C));
- wm_check(C);
+ WM_check(C);
return OPERATOR_FINISHED;
}
@@ -972,3 +975,18 @@ void WM_setprefsize(int stax, int stay, int sizx, int sizy)
prefsizy= sizy;
}
+/* This function requires access to the GHOST_SystemHandle (g_system) */
+void WM_cursor_warp(wmWindow *win, int x, int y)
+{
+ if (win && win->ghostwin) {
+ int oldx=x, oldy=y;
+
+ y= win->sizey -y - 1;
+ GHOST_ClientToScreen(win->ghostwin, x, y, &x, &y);
+ GHOST_SetCursorPosition(g_system, x, y);
+
+ win->eventstate->prevx= oldx;
+ win->eventstate->prevy= oldy;
+ }
+}
+
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h
index c476b7efa1e..9b888a0e347 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -44,7 +44,6 @@ extern void wm_close_and_free(bContext *C, wmWindowManager *);
extern void wm_close_and_free_all(bContext *C, ListBase *);
extern void wm_add_default(bContext *C);
-extern void wm_check(bContext *C);
extern void wm_clear_default_size(bContext *C);
/* register to windowmanager for redo or macro */
diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h
index 4322f70ea61..3d7cb3fbad1 100644
--- a/source/blender/windowmanager/wm_event_system.h
+++ b/source/blender/windowmanager/wm_event_system.h
@@ -31,6 +31,8 @@
/* return value of handler-operator call */
#define WM_HANDLER_CONTINUE 0
#define WM_HANDLER_BREAK 1
+#define WM_HANDLER_HANDLED 2
+#define WM_HANDLER_MODAL 4 /* MODAL|BREAK means unhandled */
struct ScrArea;
struct ARegion;
@@ -82,7 +84,7 @@ enum {
void wm_event_add (wmWindow *win, wmEvent *event_to_add);
void wm_event_free_all (wmWindow *win);
void wm_event_free (wmEvent *event);
-
+void wm_event_free_handler (wmEventHandler *handler);
/* goes over entire hierarchy: events -> window -> screen -> area -> region */
void wm_event_do_handlers (bContext *C);
diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c
index ebd7b439624..7f9928262c3 100644
--- a/source/blenderplayer/bad_level_call_stubs/stubs.c
+++ b/source/blenderplayer/bad_level_call_stubs/stubs.c
@@ -70,16 +70,30 @@ float texture_value_blend(float tex, float out, float fact, float facg, int blen
void texture_rgb_blend(float *in, float *tex, float *out, float fact, float facg, int blendtype){}
char stipple_quarttone[1]; //GLubyte stipple_quarttone[128]
double elbeemEstimateMemreq(int res, float sx, float sy, float sz, int refine, char *retstr) {return 0.0f;}
+struct Render *RE_NewRender(const char *name){return (struct Render*) NULL;}
+void RE_BlenderFrame(struct Render *re, struct Scene *scene, int frame){}
/* rna */
+void WM_menutype_free(void){}
+void WM_menutype_freelink(struct MenuType* mt){}
+int WM_menutype_add(struct MenuType *mt) {return 0;}
+struct MenuType *WM_menutype_find(const char *idname, int quiet){return (struct MenuType *) NULL;}
+
+void WM_autosave_init(struct bContext *C){}
+void WM_jobs_stop_all(struct wmWindowManager *wm){}
+
void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *reference){}
void ED_armature_bone_rename(struct bArmature *arm, char *oldnamep, char *newnamep){}
+void ED_armature_edit_bone_remove(struct bArmature *arm, struct EditBone *exBone){}
void object_test_constraints (struct Object *owner){}
void ED_object_parent(struct Object *ob, struct Object *par, int type, const char *substr){}
+void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con){}
void ED_node_composit_default(struct Scene *sce){}
struct EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, struct EditBone *ebo){return (struct EditBone *) NULL;}
+struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name){return (struct EditBone*) NULL;}
struct ListBase *get_active_constraints (struct Object *ob){return (struct ListBase *) NULL;}
+struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r){return (struct ListBase *) NULL;}
int ED_pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan){return 0;}
int ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit){return 0;}
@@ -89,18 +103,38 @@ void ED_space_image_set(struct bContext *C, struct SpaceImage *sima, struct Scen
struct ImBuf *ED_space_image_buffer(struct SpaceImage *sima){return (struct ImBuf *) NULL;}
struct PTCacheEdit *PE_get_current(struct Scene *scene, struct Object *ob){return (struct PTCacheEdit *) NULL;}
+void PE_current_changed(struct Scene *scene, struct Object *ob){}
+
+/* rna keymap */
+struct wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap){return (struct wmKeyMap *) NULL;}
+struct wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid){return (struct wmKeyMap *) NULL;}
+struct wmKeyMap *WM_keymap_add_item(struct wmKeyMap *keymap, char *idname, int type, int val, int modifier, int keymodifier){return (struct wmKeyMap *) NULL;}
+struct wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *kemap){return (struct wmKeyMap *) NULL;}
+struct wmKeyConfig *WM_keyconfig_add(struct wmWindowManager *wm, char *idname){return (struct wmKeyConfig *) NULL;}
+void WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem *kmi){}
+void WM_keymap_restore_to_default(struct wmKeyMap *keymap){}
+int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap) {return 0;}
+
/* rna editors */
+short ANIM_add_driver(struct ID *id, const char rna_path[], int array_index, short flag, int type){return 0;}
+void ED_space_image_release_buffer(struct SpaceImage *sima, void *lock){}
+struct ImBuf *ED_space_image_acquire_buffer(struct SpaceImage *sima, void **lock_r){return (struct ImBuf *) NULL;}
char *ED_info_stats_string(struct Scene *scene){return NULL;}
void ED_area_tag_redraw(struct ScrArea *sa){}
+void ED_area_newspace(struct bContext *C, struct ScrArea *sa, int type){}
void WM_event_add_fileselect(struct bContext *C, struct wmOperator *op){}
void ED_node_texture_default(struct Tex *tx){}
void ED_node_changed_update(struct bContext *C, struct bNode *node){}
+void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene){}
int text_file_modified(struct Text *text){return 0;}
void ED_node_shader_default(struct Material *ma){}
void ED_screen_animation_timer_update(struct bContext *C, int redraws){}
+void ED_base_object_select(struct Base *base, short mode){}
int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md){return 0;}
-int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type){return 0;}
+int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type){return 0;}
+void ED_object_enter_editmode(struct bContext *C, int flag){}
+void ED_object_exit_editmode(struct bContext *C, int flag){}
int uiLayoutGetActive(struct uiLayout *layout){return 0;}
int uiLayoutGetOperatorContext(struct uiLayout *layout){return 0;}
int uiLayoutGetAlignment(struct uiLayout *layout){return 0;}
@@ -148,9 +182,12 @@ void uiItemStringO(struct uiLayout *layout, char *name, int icon, char *opname,
void uiItemL(struct uiLayout *layout, char *name, int icon){}
void uiItemM(struct uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname){}
void uiItemS(struct uiLayout *layout){}
+void uiItemFullR(struct uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag){}
void uiLayoutSetContextPointer(struct uiLayout *layout, char *name, struct PointerRNA *ptr){}
/* rna template */
+void uiTemplateAnyID(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *text){}
+void uiTemplatePathBuilder(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *root_ptr, char *text){}
void uiTemplateHeader(struct uiLayout *layout, struct bContext *C, int menus){}
void uiTemplateID(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *newop, char *unlinkop){}
struct uiLayout *uiTemplateModifier(struct uiLayout *layout, struct PointerRNA *ptr){return (struct uiLayout *) NULL;}
@@ -165,17 +202,22 @@ ListBase uiTemplateList(struct uiLayout *layout, struct bContext *C, struct Poin
void uiTemplateRunningJobs(struct uiLayout *layout, struct bContext *C){}
void uiTemplateOperatorSearch(struct uiLayout *layout){}
void uiTemplateHeader3D(struct uiLayout *layout, struct bContext *C){}
-void uiTemplate_view3d_select_faceselmenu(struct uiLayout *layout, struct bContext *C){}
void uiTemplateTextureImage(struct uiLayout *layout, struct bContext *C, struct Tex *tex){}
void uiTemplateImage(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *userptr, int compact){}
/* rna render */
struct RenderResult *RE_engine_begin_result(struct RenderEngine *engine, int x, int y, int w, int h){return (struct RenderResult *) NULL;}
+struct RenderResult *RE_AcquireResultRead(struct Render *re){return (struct RenderResult *) NULL;}
+struct RenderResult *RE_AcquireResultWrite(struct Render *re){return (struct RenderResult *) NULL;}
+struct RenderStats *RE_GetStats(struct Render *re){return (struct RenderStats *) NULL;}
void RE_engine_update_result(struct RenderEngine *engine, struct RenderResult *result){}
void RE_engine_end_result(struct RenderEngine *engine, struct RenderResult *result){}
void RE_engine_update_stats(struct RenderEngine *engine, char *stats, char *info){}
void RE_layer_load_from_file(struct RenderLayer *layer, struct ReportList *reports, char *filename){}
void RE_result_load_from_file(struct RenderResult *result, struct ReportList *reports, char *filename){}
+void RE_AcquireResultImage(struct Render *re, struct RenderResult *rr){}
+void RE_ReleaseResult(struct Render *re){}
+void RE_ReleaseResultImage(struct Render *re){}
int RE_engine_test_break(struct RenderEngine *engine){return 0;}
/* python */
@@ -185,19 +227,31 @@ struct wmOperatorType *WM_operatortype_exists(const char *idname){return (struct
int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int context, struct PointerRNA *properties, struct ReportList *reports){return 0;}
int WM_operatortype_remove(const char *idname){return 0;}
int WM_operator_poll(struct bContext *C, struct wmOperatorType *ot){return 0;}
+int WM_operator_props_popup(struct bContext *C, struct wmOperator *op, struct wmEvent *event){return 0;}
void WM_operator_properties_free(struct PointerRNA *ptr){}
void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring){}
+void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot){}
void WM_operatortype_append_ptr(void (*opfunc)(struct wmOperatorType*, void*), void *userdata){}
void WM_operator_bl_idname(char *to, const char *from){}
+void WM_operator_py_idname(char *to, const char *from){}
short insert_keyframe (struct ID *id, struct bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag){return 0;}
char *WM_operator_pystring(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *opptr, int all_args){return NULL;}
+struct wmKeyMapItem *WM_modalkeymap_add_item(struct wmKeyMap *km, int type, int val, int modifier, int keymodifier, int value){return NULL;}
+struct wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, EnumPropertyItem *items){return NULL;}
+
+/* intern/decimation */
+int LOD_FreeDecimationData(struct LOD_Decimation_Info *info){return 0;}
+int LOD_CollapseEdge(struct LOD_Decimation_Info *info){return 0;}
+int LOD_PreprocessMesh(struct LOD_Decimation_Info *info){return 0;}
+int LOD_LoadMesh(struct LOD_Decimation_Info *info){return 0;}
/* smoke */
void lzo1x_1_compress(void) {return;}
void LzmaCompress(void) { return; }
-void smoke_export(void) {return;}
void lzo1x_decompress(void) {return;}
void LzmaUncompress(void) {return;}
+/* smoke is included anyway
+void smoke_export(void) {return;}
void smoke_init(void) {return;}
void smoke_turbulence_init(void) {return;}
void smoke_turbulence_initBlenderRNA(void) {return;}
@@ -214,5 +268,27 @@ void smoke_get_velocity_z(void) {return;}
void smoke_get_obstacle(void) {return;}
void smoke_get_index(void) {return;}
void smoke_step(void) {return;}
+*/
char blender_path(){return NULL;}
+
+/* CSG */
+struct CSG_BooleanOperation * CSG_NewBooleanFunction( void ){return (struct CSG_BooleanOperation *) NULL;}
+void CSG_FreeBooleanOperation(struct CSG_BooleanOperation *operation){return;}
+void CSG_FreeFaceDescriptor(struct CSG_FaceIteratorDescriptor * f_descriptor){return;}
+void CSG_FreeVertexDescriptor(struct CSG_VertexIteratorDescriptor * v_descriptor){return;}
+int CSG_OutputFaceDescriptor(struct CSG_BooleanOperation * operation, struct CSG_FaceIteratorDescriptor * output){return 0;}
+int CSG_OutputVertexDescriptor(struct CSG_BooleanOperation * operation, struct CSG_VertexIteratorDescriptor *output){return 0;}
+
+typedef struct CSG_VertexIteratorDescriptor {int a;} CSG_VertexIteratorDescriptor; //workaround to build CSG_PerformanceBoolean Operation
+typedef struct CSG_FaceIteratorDescriptor {int a;} CSG_FaceIteratorDescriptor; //workaround to build CSG_PerformanceBoolean Operation
+typedef struct CSG_OperationType {int a;} CSG_OperationType; //workaround to build CSG_PerformanceBoolean Operation
+
+int CSG_PerformBooleanOperation(
+ struct CSG_BooleanOperation *operation,
+ CSG_OperationType op_type,
+ CSG_FaceIteratorDescriptor obAFaces,
+ CSG_VertexIteratorDescriptor obAVertices,
+ CSG_FaceIteratorDescriptor obBFaces,
+ CSG_VertexIteratorDescriptor obBVertices)
+ { return 0;}
diff --git a/source/creator/creator.c b/source/creator/creator.c
index d273d786939..5867d76358f 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -280,7 +280,7 @@ int main(int argc, char **argv)
{
SYS_SystemHandle syshandle;
bContext *C= CTX_create();
- int a, i, stax, stay, sizx, sizy /*XXX, scr_init = 0*/;
+ int a, i, stax, stay, sizx, sizy /*XXX, scr_init = 0*/, file_loaded= 0;
#ifdef WITH_BINRELOC
br_init( NULL );
@@ -491,11 +491,13 @@ int main(int argc, char **argv)
}
}
-#ifndef DISABLE_PYTHON
- BPY_start_python(argc, argv);
-#endif
-
WM_init(C);
+
+#ifndef DISABLE_PYTHON
+ BPY_set_context(C); /* necessary evil */
+ BPY_start_python(argc, argv);
+ BPY_load_user_modules(C);
+#endif
// XXX BRECHT SOLVE
BLI_where_is_temp( btempdir, 1 ); /* call after loading the .B.blend so we can read U.tempdir */
@@ -510,8 +512,31 @@ int main(int argc, char **argv)
#endif
}
else {
+ for(a=1; a<argc; a++) {
+ if(argv[a][0] == '-') {
+ switch(argv[a][1]) {
+ case 'd':
+ G.f |= G_DEBUG; /* std output printf's */
+ printf ("Blender %d.%02d (sub %d) Build\n", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION);
+ MEM_set_memory_debug();
+#ifdef NAN_BUILDINFO
+ printf("Build: %s %s %s %s\n", build_date, build_time, build_platform, build_type);
+
+#endif // NAN_BUILDINFO
+ for (i = 0; i < argc; i++) {
+ printf("argv[%d] = %s\n", i, argv[i]);
+ }
+ break;
+ }
+ }
+ }
+
+ WM_init(C);
+
#ifndef DISABLE_PYTHON
+ BPY_set_context(C); /* necessary evil */
BPY_start_python(argc, argv);
+ BPY_load_user_modules(C);
#endif
BLI_where_is_temp( btempdir, 0 ); /* call after loading the .B.blend so we can read U.tempdir */
}
@@ -524,15 +549,13 @@ int main(int argc, char **argv)
* Update: now this function also inits the bpymenus, which also depend
* on U.pythondir.
*/
- BPY_post_start_python();
+
+ // TODO - U.pythondir
- if(!G.background)
- BPY_run_ui_scripts(C, 0); /* dont need to reload the first time */
#endif
CTX_py_init_set(C, 1);
- if(!G.background)
- WM_keymap_init(C); /* after BPY_run_ui_scripts() */
+ WM_keymap_init(C);
#ifdef WITH_QUICKTIME
@@ -849,7 +872,11 @@ int main(int argc, char **argv)
/*we successfully loaded a blend file, get sure that
pointcache works */
- if (retval!=0) G.relbase_valid = 1;
+ if (retval!=0) {
+ CTX_wm_manager_set(C, NULL); /* remove wm to force check */
+ WM_check(C);
+ G.relbase_valid = 1;
+ }
/* happens for the UI on file reading too (huh? (ton))*/
// XXX BKE_reset_undo();
@@ -859,6 +886,8 @@ int main(int argc, char **argv)
a file - this should do everything a 'load file' does */
WM_read_file(C, filename, NULL);
}
+
+ file_loaded = 1;
}
}
@@ -867,9 +896,12 @@ int main(int argc, char **argv)
WM_exit(C);
}
+ if(!G.background && !file_loaded)
+ WM_init_splash(C);
WM_main(C);
-
+
+
/*XXX if (scr_init==0) {
main_init_screen();
}
diff --git a/source/gameengine/BlenderRoutines/CMakeLists.txt b/source/gameengine/BlenderRoutines/CMakeLists.txt
index f2d6528d797..625ad006e0c 100644
--- a/source/gameengine/BlenderRoutines/CMakeLists.txt
+++ b/source/gameengine/BlenderRoutines/CMakeLists.txt
@@ -37,6 +37,8 @@ SET(INC
../../../extern/glew/include
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
IF(WITH_FFMPEG)
ADD_DEFINITIONS(-DWITH_FFMPEG)
ENDIF(WITH_FFMPEG)
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
index 73803846d70..e53a96ad9f6 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
@@ -138,17 +138,17 @@ void KX_BlenderCanvas::SetMouseState(RAS_MouseState mousestate)
{
case MOUSE_INVISIBLE:
{
- BL_HideMouse();
+ BL_HideMouse(m_win);
break;
}
case MOUSE_WAIT:
{
- BL_WaitMouse();
+ BL_WaitMouse(m_win);
break;
}
case MOUSE_NORMAL:
{
- BL_NormalMouse();
+ BL_NormalMouse(m_win);
break;
}
default:
@@ -166,7 +166,7 @@ void KX_BlenderCanvas::SetMousePosition(int x,int y)
int winY = m_frame_rect.GetBottom();
int winH = m_frame_rect.GetHeight();
- BL_warp_pointer(winX + x, winY + (winH-y-1));
+ BL_warp_pointer(m_win, winX + x, winY + (winH-y-1));
}
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
index 5967ce78b46..2c6962b5863 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
@@ -64,7 +64,7 @@ public:
*
* @param area The Blender ARegion to run the game within.
*/
- KX_BlenderCanvas(struct wmWindow* win, struct RAS_Rect &rect);
+ KX_BlenderCanvas(struct wmWindow* win, class RAS_Rect &rect);
~KX_BlenderCanvas();
void
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
index bb02f3b372e..b718dfc1acd 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
@@ -73,11 +73,11 @@ extern "C" {
#include "BKE_image.h"
extern "C" {
-//XXX #include "BDR_drawmesh.h"
-//XXX #include "BIF_mywindow.h"
-//XXX #include "BIF_toolbox.h"
-//XXX #include "BIF_graphics.h" /* For CURSOR_NONE CURSOR_WAIT CURSOR_STD */
-void wm_window_swap_buffers(wmWindow *win); // wm_window.h
+#include "WM_api.h"
+#include "WM_types.h"
+#include "wm_event_system.h"
+#include "wm_cursors.h"
+#include "wm_window.h"
}
/* end of blender block */
@@ -90,16 +90,14 @@ void spack(unsigned int ucol)
glColor3ub(cp[3], cp[2], cp[1]);
}
-void BL_warp_pointer(int x,int y)
+void BL_warp_pointer(wmWindow *win, int x,int y)
{
- //XXX warp_pointer(x,y);
+ WM_cursor_warp(win, x, y);
}
void BL_SwapBuffers(wmWindow *win)
{
- //wmWindow *window= CTX_wm_window(C);
wm_window_swap_buffers(win);
- //XXX myswapbuffers();
}
void DisableForText()
@@ -194,21 +192,21 @@ void BL_print_gamedebug_line_padded(const char* text, int xco, int yco, int widt
glEnable(GL_DEPTH_TEST);
}
-void BL_HideMouse()
+void BL_HideMouse(wmWindow *win)
{
- //XXX set_cursor(CURSOR_NONE);
+ WM_cursor_set(win, CURSOR_NONE);
}
-void BL_WaitMouse()
+void BL_WaitMouse(wmWindow *win)
{
- //XXX set_cursor(CURSOR_WAIT);
+ WM_cursor_set(win, CURSOR_WAIT);
}
-void BL_NormalMouse()
+void BL_NormalMouse(wmWindow *win)
{
- //XXX set_cursor(CURSOR_STD);
+ WM_cursor_set(win, CURSOR_STD);
}
#define MAX_FILE_LENGTH 512
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderGL.h b/source/gameengine/BlenderRoutines/KX_BlenderGL.h
index 5c947ff630e..d93b5eeabc5 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderGL.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderGL.h
@@ -39,13 +39,13 @@ struct ARegion;
// special swapbuffers, that takes care of which area (viewport) needs to be swapped
void BL_SwapBuffers(struct wmWindow *win);
-void BL_warp_pointer(int x,int y);
+void BL_warp_pointer(struct wmWindow *win,int x,int y);
void BL_MakeScreenShot(struct ARegion *ar, const char* filename);
-void BL_HideMouse();
-void BL_NormalMouse();
-void BL_WaitMouse();
+void BL_HideMouse(struct wmWindow *win);
+void BL_NormalMouse(struct wmWindow *win);
+void BL_WaitMouse(struct wmWindow *win);
void BL_print_gamedebug_line(const char* text, int xco, int yco, int width, int height);
void BL_print_gamedebug_line_padded(const char* text, int xco, int yco, int width, int height);
diff --git a/source/gameengine/BlenderRoutines/SConscript b/source/gameengine/BlenderRoutines/SConscript
index f076612e231..e5b263ad930 100644
--- a/source/gameengine/BlenderRoutines/SConscript
+++ b/source/gameengine/BlenderRoutines/SConscript
@@ -2,7 +2,7 @@
Import ('env')
sources = env.Glob('*.cpp')
-defs = []
+defs = [ 'GLEW_STATIC' ]
incs = '. #source/kernel/gen_system #intern/string #intern/guardedalloc'
incs += ' #source/gameengine/Rasterizer/RAS_OpenGLRasterizer'
diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp
index 6f3036d8e09..1325c80a6d4 100644
--- a/source/gameengine/Converter/BL_ActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ActionActuator.cpp
@@ -46,7 +46,7 @@
#include "DNA_scene_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "MT_Matrix4x4.h"
#include "BKE_utildefines.h"
#include "FloatValue.h"
@@ -539,8 +539,8 @@ KX_PYMETHODDEF_DOC(BL_ActionActuator, setChannel,
if(pchan) {
VECCOPY (pchan->loc, matrix[3]);
- Mat4ToSize(matrix, pchan->size);
- Mat4ToQuat(matrix, pchan->quat);
+ mat4_to_size( pchan->size,matrix);
+ mat4_to_quat( pchan->quat,matrix);
}
}
else {
diff --git a/source/gameengine/Converter/BL_ArmatureActuator.cpp b/source/gameengine/Converter/BL_ArmatureActuator.cpp
index b70a0aa79e7..603dfc370b4 100644
--- a/source/gameengine/Converter/BL_ArmatureActuator.cpp
+++ b/source/gameengine/Converter/BL_ArmatureActuator.cpp
@@ -33,7 +33,7 @@
#include "BKE_constraint.h"
#include "BL_ArmatureActuator.h"
#include "BL_ArmatureObject.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
/**
* This class is the conversion of the Pose channel constraint.
diff --git a/source/gameengine/Converter/BL_ArmatureChannel.cpp b/source/gameengine/Converter/BL_ArmatureChannel.cpp
index 71e91735b24..2444390c9f3 100644
--- a/source/gameengine/Converter/BL_ArmatureChannel.cpp
+++ b/source/gameengine/Converter/BL_ArmatureChannel.cpp
@@ -34,7 +34,7 @@
#include "BL_ArmatureChannel.h"
#include "BL_ArmatureObject.h"
#include "BL_ArmatureConstraint.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_string.h"
#ifndef DISABLE_PYTHON
@@ -211,19 +211,19 @@ PyObject* BL_ArmatureChannel::py_attr_get_joint_rotation(void *self_v, const str
float norm;
double sa, ca;
// get rotation in armature space
- Mat3CpyMat4(pose_mat, pchan->pose_mat);
- Mat3Ortho(pose_mat);
+ copy_m3_m4(pose_mat, pchan->pose_mat);
+ normalize_m3(pose_mat);
if (pchan->parent) {
// bone has a parent, compute the rest pose of the bone taking actual pose of parent
- Mat3IsMat3MulMat4(rest_mat, pchan->bone->bone_mat, pchan->parent->pose_mat);
- Mat3Ortho(rest_mat);
+ mul_m3_m3m4(rest_mat, pchan->bone->bone_mat, pchan->parent->pose_mat);
+ normalize_m3(rest_mat);
} else {
// otherwise, the bone matrix in armature space is the rest pose
- Mat3CpyMat4(rest_mat, pchan->bone->arm_mat);
+ copy_m3_m4(rest_mat, pchan->bone->arm_mat);
}
// remove the rest pose to get the joint movement
- Mat3Transp(rest_mat);
- Mat3MulMat3(joint_mat, rest_mat, pose_mat);
+ transpose_m3(rest_mat);
+ mul_m3_m3m3(joint_mat, rest_mat, pose_mat);
joints[0] = joints[1] = joints[2] = 0.f;
// returns a 3 element list that gives corresponding joint
int flag = 0;
@@ -237,35 +237,35 @@ PyObject* BL_ArmatureChannel::py_attr_get_joint_rotation(void *self_v, const str
case 0: // fixed joint
break;
case 1: // X only
- Mat3ToEulO(joint_mat, joints, EULER_ORDER_XYZ);
+ mat3_to_eulO( joints, EULER_ORDER_XYZ,joint_mat);
joints[1] = joints[2] = 0.f;
break;
case 2: // Y only
- Mat3ToEulO(joint_mat, joints, EULER_ORDER_XYZ);
+ mat3_to_eulO( joints, EULER_ORDER_XYZ,joint_mat);
joints[0] = joints[2] = 0.f;
break;
case 3: // X+Y
- Mat3ToEulO(joint_mat, joints, EULER_ORDER_ZYX);
+ mat3_to_eulO( joints, EULER_ORDER_ZYX,joint_mat);
joints[2] = 0.f;
break;
case 4: // Z only
- Mat3ToEulO(joint_mat, joints, EULER_ORDER_XYZ);
+ mat3_to_eulO( joints, EULER_ORDER_XYZ,joint_mat);
joints[0] = joints[1] = 0.f;
break;
case 5: // X+Z
// decompose this as an equivalent rotation vector in X/Z plane
joints[0] = joint_mat[1][2];
joints[2] = -joint_mat[1][0];
- norm = Normalize(joints);
+ norm = normalize_v3(joints);
if (norm < FLT_EPSILON) {
norm = (joint_mat[1][1] < 0.f) ? M_PI : 0.f;
} else {
norm = acos(joint_mat[1][1]);
}
- VecMulf(joints, norm);
+ mul_v3_fl(joints, norm);
break;
case 6: // Y+Z
- Mat3ToEulO(joint_mat, joints, EULER_ORDER_XYZ);
+ mat3_to_eulO( joints, EULER_ORDER_XYZ,joint_mat);
joints[0] = 0.f;
break;
case 7: // X+Y+Z
@@ -273,14 +273,14 @@ PyObject* BL_ArmatureChannel::py_attr_get_joint_rotation(void *self_v, const str
joints[0] = (joint_mat[1][2]-joint_mat[2][1])*0.5f;
joints[1] = (joint_mat[2][0]-joint_mat[0][2])*0.5f;
joints[2] = (joint_mat[0][1]-joint_mat[1][0])*0.5f;
- sa = VecLength(joints);
+ sa = len_v3(joints);
ca = (joint_mat[0][0]+joint_mat[1][1]+joint_mat[1][1]-1.0f)*0.5f;
if (sa > FLT_EPSILON) {
norm = atan2(sa,ca)/sa;
} else {
if (ca < 0.0) {
norm = M_PI;
- VecMulf(joints,0.f);
+ mul_v3_fl(joints,0.f);
if (joint_mat[0][0] > 0.f) {
joints[0] = 1.0f;
} else if (joint_mat[1][1] > 0.f) {
@@ -292,7 +292,7 @@ PyObject* BL_ArmatureChannel::py_attr_get_joint_rotation(void *self_v, const str
norm = 0.0;
}
}
- VecMulf(joints,norm);
+ mul_v3_fl(joints,norm);
break;
}
return newVectorObject(joints, 3, Py_NEW, NULL);
@@ -327,45 +327,45 @@ int BL_ArmatureChannel::py_attr_set_joint_rotation(void *self_v, const struct KX
flag |= 2;
if (!(pchan->ikflag & BONE_IK_NO_ZDOF))
flag |= 4;
- QuatOne(quat);
+ unit_qt(quat);
switch (flag) {
case 0: // fixed joint
break;
case 1: // X only
joints[1] = joints[2] = 0.f;
- EulOToQuat(joints, EULER_ORDER_XYZ, quat);
+ eulO_to_quat( quat,joints, EULER_ORDER_XYZ);
break;
case 2: // Y only
joints[0] = joints[2] = 0.f;
- EulOToQuat(joints, EULER_ORDER_XYZ, quat);
+ eulO_to_quat( quat,joints, EULER_ORDER_XYZ);
break;
case 3: // X+Y
joints[2] = 0.f;
- EulOToQuat(joints, EULER_ORDER_ZYX, quat);
+ eulO_to_quat( quat,joints, EULER_ORDER_ZYX);
break;
case 4: // Z only
joints[0] = joints[1] = 0.f;
- EulOToQuat(joints, EULER_ORDER_XYZ, quat);
+ eulO_to_quat( quat,joints, EULER_ORDER_XYZ);
break;
case 5: // X+Z
// X and Z are components of an equivalent rotation axis
joints[1] = 0;
- VecRotToQuat(joints, VecLength(joints), quat);
+ axis_angle_to_quat( quat,joints, len_v3(joints));
break;
case 6: // Y+Z
joints[0] = 0.f;
- EulOToQuat(joints, EULER_ORDER_XYZ, quat);
+ eulO_to_quat( quat,joints, EULER_ORDER_XYZ);
break;
case 7: // X+Y+Z
// equivalent axis
- VecRotToQuat(joints, VecLength(joints), quat);
+ axis_angle_to_quat( quat,joints, len_v3(joints));
break;
}
if (pchan->rotmode > 0) {
- QuatToEulO(quat, joints, pchan->rotmode);
- VecCopyf(pchan->eul, joints);
+ quat_to_eulO( joints, pchan->rotmode,quat);
+ copy_v3_v3(pchan->eul, joints);
} else
- QuatCopy(pchan->quat, quat);
+ copy_qt_qt(pchan->quat, quat);
return PY_SET_ATTR_SUCCESS;
}
diff --git a/source/gameengine/Converter/BL_ArmatureConstraint.cpp b/source/gameengine/Converter/BL_ArmatureConstraint.cpp
index 42581b63ec4..1f975f657b8 100644
--- a/source/gameengine/Converter/BL_ArmatureConstraint.cpp
+++ b/source/gameengine/Converter/BL_ArmatureConstraint.cpp
@@ -34,7 +34,7 @@
#include "DNA_action_types.h"
#include "BL_ArmatureConstraint.h"
#include "BL_ArmatureObject.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BLI_string.h"
#ifndef DISABLE_PYTHON
@@ -82,12 +82,12 @@ BL_ArmatureConstraint::BL_ArmatureConstraint(
m_blendsubtarget = (subtarget) ? subtarget->GetBlenderObject() : NULL;
m_pose = m_subpose = NULL;
if (m_blendtarget) {
- Mat4CpyMat4(m_blendmat, m_blendtarget->obmat);
+ copy_m4_m4(m_blendmat, m_blendtarget->obmat);
if (m_blendtarget->type == OB_ARMATURE)
m_pose = m_blendtarget->pose;
}
if (m_blendsubtarget) {
- Mat4CpyMat4(m_blendsubmat, m_blendsubtarget->obmat);
+ copy_m4_m4(m_blendsubmat, m_blendsubtarget->obmat);
if (m_blendsubtarget->type == OB_ARMATURE)
m_subpose = m_blendsubtarget->pose;
}
@@ -198,12 +198,12 @@ void BL_ArmatureConstraint::RestoreTarget()
{
if (m_constraint && !(m_constraint->flag&CONSTRAINT_OFF) && (!m_blendtarget || m_target)) {
if (m_blendtarget) {
- Mat4CpyMat4(m_blendtarget->obmat, m_blendmat);
+ copy_m4_m4(m_blendtarget->obmat, m_blendmat);
if (m_pose)
m_blendtarget->pose = m_pose;
}
if (m_blendsubtarget && m_subtarget) {
- Mat4CpyMat4(m_blendsubtarget->obmat, m_blendsubmat);
+ copy_m4_m4(m_blendsubtarget->obmat, m_blendsubmat);
if (m_subpose)
m_blendsubtarget->pose = m_subpose;
}
@@ -359,7 +359,7 @@ int BL_ArmatureConstraint::py_attr_setattr(void *self_v, const struct KX_PYATTRI
int attr_order = attrdef-Attributes;
int ival;
double dval;
- char* sval;
+// char* sval;
KX_GameObject *oval;
if (!constraint) {
diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp
index a6066adc03e..f62a6b84fca 100644
--- a/source/gameengine/Converter/BL_ArmatureObject.cpp
+++ b/source/gameengine/Converter/BL_ArmatureObject.cpp
@@ -32,7 +32,7 @@
#include "KX_BlenderSceneConverter.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "BIK_api.h"
#include "BKE_action.h"
#include "BKE_armature.h"
@@ -158,13 +158,13 @@ void game_blend_poses(bPose *dst, bPose *src, float srcweight/*, short mode*/)
QUATCOPY(dquat, dchan->quat);
QUATCOPY(squat, schan->quat);
if (mode==ACTSTRIPMODE_BLEND)
- QuatInterpol(dchan->quat, dquat, squat, srcweight);
+ interp_qt_qtqt(dchan->quat, dquat, squat, srcweight);
else {
- QuatMulFac(squat, srcweight);
- QuatMul(dchan->quat, dquat, squat);
+ mul_fac_qt_fl(squat, srcweight);
+ mul_qt_qtqt(dchan->quat, dquat, squat);
}
- NormalQuat(dchan->quat);
+ normalize_qt(dchan->quat);
}
for (i=0; i<3; i++) {
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 2b3838d4dfe..31616fdec15 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -89,11 +89,11 @@
#include "BKE_global.h"
#include "BKE_object.h"
#include "BKE_scene.h"
-#include "BL_SkinMeshObject.h"
#include "BL_ModifierDeformer.h"
#include "BL_ShapeDeformer.h"
#include "BL_SkinDeformer.h"
#include "BL_MeshDeformer.h"
+#include "KX_SoftBodyDeformer.h"
//#include "BL_ArmatureController.h"
#include "BlenderWorldInfo.h"
@@ -135,7 +135,7 @@
#include "BKE_mesh.h"
#include "MT_Point3.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
extern "C" {
#include "BKE_customdata.h"
@@ -720,7 +720,6 @@ bool ConvertMaterial(
RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, KX_BlenderSceneConverter *converter)
{
RAS_MeshObject *meshobj;
- bool skinMesh = false;
int lightlayer = blenderobj ? blenderobj->lay:(1<<20)-1; // all layers if no object.
if ((meshobj = converter->FindGameMesh(mesh/*, ob->lay*/)) != NULL)
@@ -743,14 +742,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene,
tangent = (float(*)[3])dm->getFaceDataArray(dm, CD_TANGENT);
}
- // Determine if we need to make a skinned mesh
- if (blenderobj && (mesh->dvert || mesh->key || ((blenderobj->gameflag & OB_SOFT_BODY) != 0) || BL_ModifierDeformer::HasCompatibleDeformer(blenderobj)))
- {
- meshobj = new BL_SkinMeshObject(mesh);
- skinMesh = true;
- }
- else
- meshobj = new RAS_MeshObject(mesh);
+ meshobj = new RAS_MeshObject(mesh);
// Extract avaiable layers
MTF_localLayer *layers = new MTF_localLayer[MAX_MTFACE];
@@ -774,7 +766,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene,
}
}
- meshobj->SetName(mesh->id.name);
+ meshobj->SetName(mesh->id.name + 2);
meshobj->m_sharedvertex_map.resize(totvert);
RAS_IPolyMaterial* polymat = NULL;
STR_String imastr;
@@ -805,15 +797,15 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene,
if(mface->flag & ME_SMOOTH) {
float n0[3], n1[3], n2[3], n3[3];
- NormalShortToFloat(n0, mvert[mface->v1].no);
- NormalShortToFloat(n1, mvert[mface->v2].no);
- NormalShortToFloat(n2, mvert[mface->v3].no);
+ normal_short_to_float_v3(n0, mvert[mface->v1].no);
+ normal_short_to_float_v3(n1, mvert[mface->v2].no);
+ normal_short_to_float_v3(n2, mvert[mface->v3].no);
no0 = n0;
no1 = n1;
no2 = n2;
if(mface->v4) {
- NormalShortToFloat(n3, mvert[mface->v4].no);
+ normal_short_to_float_v3(n3, mvert[mface->v4].no);
no3 = n3;
}
}
@@ -821,11 +813,9 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene,
float fno[3];
if(mface->v4)
- CalcNormFloat4(mvert[mface->v1].co, mvert[mface->v2].co,
- mvert[mface->v3].co, mvert[mface->v4].co, fno);
+ normal_quad_v3( fno,mvert[mface->v1].co, mvert[mface->v2].co, mvert[mface->v3].co, mvert[mface->v4].co);
else
- CalcNormFloat(mvert[mface->v1].co, mvert[mface->v2].co,
- mvert[mface->v3].co, fno);
+ normal_tri_v3( fno,mvert[mface->v1].co, mvert[mface->v2].co, mvert[mface->v3].co);
no0 = no1 = no2 = no3 = MT_Vector3(fno);
}
@@ -879,7 +869,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene,
if (kx_blmat == NULL)
kx_blmat = new KX_BlenderMaterial();
- kx_blmat->Initialize(scene, bl_mat, skinMesh);
+ kx_blmat->Initialize(scene, bl_mat);
polymat = static_cast<RAS_IPolyMaterial*>(kx_blmat);
}
else {
@@ -1468,7 +1458,9 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_soft_kAHR= blenderobject->bsoft->kAHR; /* Anchors hardness [0,1] */
objprop.m_soft_collisionflags= blenderobject->bsoft->collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */
objprop.m_soft_numclusteriterations= blenderobject->bsoft->numclusteriterations; /* number of iterations to refine collision clusters*/
- objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */
+ //objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */
+ /* disable welding: it doesn't bring any additional stability and it breaks the relation between soft body collision shape and graphic mesh */
+ objprop.m_soft_welding = 0.f;
objprop.m_margin = blenderobject->bsoft->margin;
objprop.m_contactProcessingThreshold = 0.f;
} else
@@ -1738,30 +1730,34 @@ static KX_GameObject *gameobject_from_blenderobject(
bool bHasDvert = mesh->dvert != NULL && ob->defbase.first;
bool bHasArmature = (ob->parent && ob->parent->type == OB_ARMATURE && ob->partype==PARSKEL && bHasDvert);
bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(ob);
+ bool bHasSoftBody = (!ob->parent && (ob->gameflag & OB_SOFT_BODY));
if (bHasModifier) {
BL_ModifierDeformer *dcont = new BL_ModifierDeformer((BL_DeformableGameObject *)gameobj,
- kxscene->GetBlenderScene(), ob, (BL_SkinMeshObject *)meshobj);
+ kxscene->GetBlenderScene(), ob, meshobj);
((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
if (bHasShapeKey && bHasArmature)
dcont->LoadShapeDrivers(ob->parent);
} else if (bHasShapeKey) {
// not that we can have shape keys without dvert!
BL_ShapeDeformer *dcont = new BL_ShapeDeformer((BL_DeformableGameObject*)gameobj,
- ob, (BL_SkinMeshObject*)meshobj);
+ ob, meshobj);
((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
if (bHasArmature)
dcont->LoadShapeDrivers(ob->parent);
} else if (bHasArmature) {
BL_SkinDeformer *dcont = new BL_SkinDeformer((BL_DeformableGameObject*)gameobj,
- ob, (BL_SkinMeshObject*)meshobj);
+ ob, meshobj);
((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
} else if (bHasDvert) {
// this case correspond to a mesh that can potentially deform but not with the
// object to which it is attached for the moment. A skin mesh was created in
// BL_ConvertMesh() so must create a deformer too!
BL_MeshDeformer *dcont = new BL_MeshDeformer((BL_DeformableGameObject*)gameobj,
- ob, (BL_SkinMeshObject*)meshobj);
+ ob, meshobj);
+ ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
+ } else if (bHasSoftBody) {
+ KX_SoftBodyDeformer *dcont = new KX_SoftBodyDeformer(meshobj, (BL_DeformableGameObject*)gameobj);
((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
}
@@ -1979,7 +1975,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
bAction *curAct;
for (curAct = (bAction*)maggie->action.first; curAct; curAct=(bAction*)curAct->id.next)
{
- logicmgr->RegisterActionName(curAct->id.name, curAct);
+ logicmgr->RegisterActionName(curAct->id.name + 2, curAct);
}
SetDefaultFaceType(blenderscene);
@@ -2055,8 +2051,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
BL_ConvertProperties(blenderobject,gameobj,timemgr,kxscene,isInActiveLayer);
-
- gameobj->SetName(blenderobject->id.name);
+ gameobj->SetName(blenderobject->id.name + 2);
// update children/parent hierarchy
if ((blenderobject->parent != 0)&&(!converter->addInitFromFrame))
@@ -2247,7 +2242,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
BL_ConvertProperties(blenderobject,gameobj,timemgr,kxscene,isInActiveLayer);
- gameobj->SetName(blenderobject->id.name);
+ gameobj->SetName(blenderobject->id.name + 2);
// update children/parent hierarchy
if ((blenderobject->parent != 0)&&(!converter->addInitFromFrame))
diff --git a/source/gameengine/Converter/BL_MeshDeformer.cpp b/source/gameengine/Converter/BL_MeshDeformer.cpp
index d7012abe316..516100394f6 100644
--- a/source/gameengine/Converter/BL_MeshDeformer.cpp
+++ b/source/gameengine/Converter/BL_MeshDeformer.cpp
@@ -41,13 +41,13 @@
#include "RAS_IPolygonMaterial.h"
#include "BL_DeformableGameObject.h"
#include "BL_MeshDeformer.h"
-#include "BL_SkinMeshObject.h"
+#include "RAS_MeshObject.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "GEN_Map.h"
#include "STR_HashedString.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
bool BL_MeshDeformer::Apply(RAS_IPolyMaterial*)
{
@@ -176,7 +176,7 @@ void BL_MeshDeformer::RecalcNormals()
fnor[0]= n1[1]*n2[2] - n1[2]*n2[1];
fnor[1]= n1[2]*n2[0] - n1[0]*n2[2];
fnor[2]= n1[0]*n2[1] - n1[1]*n2[0];
- Normalize(fnor);
+ normalize_v3(fnor);
/* add to vertices for smooth normals */
float *vn1 = m_transnors[v1.getOrigIndex()];
diff --git a/source/gameengine/Converter/BL_MeshDeformer.h b/source/gameengine/Converter/BL_MeshDeformer.h
index 1749d438d21..0a8c34992e2 100644
--- a/source/gameengine/Converter/BL_MeshDeformer.h
+++ b/source/gameengine/Converter/BL_MeshDeformer.h
@@ -50,7 +50,7 @@ public:
virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map);
BL_MeshDeformer(BL_DeformableGameObject *gameobj,
struct Object* obj,
- class BL_SkinMeshObject *meshobj ):
+ class RAS_MeshObject *meshobj ):
m_pMeshObject(meshobj),
m_bmesh((struct Mesh*)(obj->data)),
m_transverts(0),
@@ -73,7 +73,7 @@ public:
// virtual void InitDeform(double time){};
protected:
- class BL_SkinMeshObject* m_pMeshObject;
+ class RAS_MeshObject* m_pMeshObject;
struct Mesh* m_bmesh;
// this is so m_transverts doesn't need to be converted
diff --git a/source/gameengine/Converter/BL_ModifierDeformer.cpp b/source/gameengine/Converter/BL_ModifierDeformer.cpp
index 80165548ff2..dfdc53acdf9 100644
--- a/source/gameengine/Converter/BL_ModifierDeformer.cpp
+++ b/source/gameengine/Converter/BL_ModifierDeformer.cpp
@@ -36,7 +36,7 @@
#include "GEN_Map.h"
#include "STR_HashedString.h"
#include "RAS_IPolygonMaterial.h"
-#include "BL_SkinMeshObject.h"
+#include "RAS_MeshObject.h"
#include "PHY_IGraphicController.h"
//#include "BL_ArmatureController.h"
@@ -64,7 +64,7 @@ extern "C"{
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#define __NLA_DEFNORMALS
//#undef __NLA_DEFNORMALS
diff --git a/source/gameengine/Converter/BL_ModifierDeformer.h b/source/gameengine/Converter/BL_ModifierDeformer.h
index 5cc84c7d1e4..ef3a074630f 100644
--- a/source/gameengine/Converter/BL_ModifierDeformer.h
+++ b/source/gameengine/Converter/BL_ModifierDeformer.h
@@ -50,7 +50,7 @@ public:
BL_ModifierDeformer(BL_DeformableGameObject *gameobj,
Scene *scene,
Object *bmeshobj,
- BL_SkinMeshObject *mesh)
+ RAS_MeshObject *mesh)
:
BL_ShapeDeformer(gameobj,bmeshobj, mesh),
m_lastModifierUpdate(-1),
@@ -65,7 +65,7 @@ public:
struct Scene *scene,
struct Object *bmeshobj_old,
struct Object *bmeshobj_new,
- class BL_SkinMeshObject *mesh,
+ class RAS_MeshObject *mesh,
bool release_object,
BL_ArmatureObject* arma = NULL)
:
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.cpp b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
index 0af6556f285..4171bfcc58e 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
@@ -46,7 +46,7 @@
#include "DNA_armature_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "MT_Matrix4x4.h"
#include "BKE_utildefines.h"
#include "FloatValue.h"
diff --git a/source/gameengine/Converter/BL_ShapeDeformer.cpp b/source/gameengine/Converter/BL_ShapeDeformer.cpp
index 125e91e0e0a..c1761637d4e 100644
--- a/source/gameengine/Converter/BL_ShapeDeformer.cpp
+++ b/source/gameengine/Converter/BL_ShapeDeformer.cpp
@@ -36,7 +36,7 @@
#include "GEN_Map.h"
#include "STR_HashedString.h"
#include "RAS_IPolygonMaterial.h"
-#include "BL_SkinMeshObject.h"
+#include "RAS_MeshObject.h"
//#include "BL_ArmatureController.h"
#include "DNA_armature_types.h"
@@ -58,7 +58,7 @@ extern "C"{
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#define __NLA_DEFNORMALS
//#undef __NLA_DEFNORMALS
diff --git a/source/gameengine/Converter/BL_ShapeDeformer.h b/source/gameengine/Converter/BL_ShapeDeformer.h
index ca3770d4006..46db0f71f6c 100644
--- a/source/gameengine/Converter/BL_ShapeDeformer.h
+++ b/source/gameengine/Converter/BL_ShapeDeformer.h
@@ -45,7 +45,7 @@ class BL_ShapeDeformer : public BL_SkinDeformer
public:
BL_ShapeDeformer(BL_DeformableGameObject *gameobj,
Object *bmeshobj,
- BL_SkinMeshObject *mesh)
+ RAS_MeshObject *mesh)
:
BL_SkinDeformer(gameobj,bmeshobj, mesh),
m_lastShapeUpdate(-1)
@@ -56,7 +56,7 @@ public:
BL_ShapeDeformer(BL_DeformableGameObject *gameobj,
struct Object *bmeshobj_old,
struct Object *bmeshobj_new,
- class BL_SkinMeshObject *mesh,
+ class RAS_MeshObject *mesh,
bool release_object,
bool recalc_normal,
BL_ArmatureObject* arma = NULL)
diff --git a/source/gameengine/Converter/BL_SkinDeformer.cpp b/source/gameengine/Converter/BL_SkinDeformer.cpp
index f166a7252ad..ea7242b0225 100644
--- a/source/gameengine/Converter/BL_SkinDeformer.cpp
+++ b/source/gameengine/Converter/BL_SkinDeformer.cpp
@@ -35,7 +35,7 @@
#include "GEN_Map.h"
#include "STR_HashedString.h"
#include "RAS_IPolygonMaterial.h"
-#include "BL_SkinMeshObject.h"
+#include "RAS_MeshObject.h"
//#include "BL_ArmatureController.h"
#include "DNA_armature_types.h"
@@ -52,14 +52,14 @@ extern "C"{
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#define __NLA_DEFNORMALS
//#undef __NLA_DEFNORMALS
BL_SkinDeformer::BL_SkinDeformer(BL_DeformableGameObject *gameobj,
struct Object *bmeshobj,
- class BL_SkinMeshObject *mesh,
+ class RAS_MeshObject *mesh,
BL_ArmatureObject* arma)
: //
BL_MeshDeformer(gameobj, bmeshobj, mesh),
@@ -70,14 +70,14 @@ BL_SkinDeformer::BL_SkinDeformer(BL_DeformableGameObject *gameobj,
m_poseApplied(false),
m_recalcNormal(true)
{
- Mat4CpyMat4(m_obmat, bmeshobj->obmat);
+ copy_m4_m4(m_obmat, bmeshobj->obmat);
};
BL_SkinDeformer::BL_SkinDeformer(
BL_DeformableGameObject *gameobj,
struct Object *bmeshobj_old, // Blender object that owns the new mesh
struct Object *bmeshobj_new, // Blender object that owns the original mesh
- class BL_SkinMeshObject *mesh,
+ class RAS_MeshObject *mesh,
bool release_object,
bool recalc_normal,
BL_ArmatureObject* arma) :
@@ -93,7 +93,7 @@ BL_SkinDeformer::BL_SkinDeformer(
// that takes an object as parameter and not a mesh. The object matrice is used
// in the calculation, so we must use the matrix of the original object to
// simulate a pure replacement of the mesh.
- Mat4CpyMat4(m_obmat, bmeshobj_new->obmat);
+ copy_m4_m4(m_obmat, bmeshobj_new->obmat);
}
BL_SkinDeformer::~BL_SkinDeformer()
@@ -194,14 +194,14 @@ bool BL_SkinDeformer::UpdateInternal(bool shape_applied)
m_armobj->ApplyPose();
// save matrix first
- Mat4CpyMat4(obmat, m_objMesh->obmat);
+ copy_m4_m4(obmat, m_objMesh->obmat);
// set reference matrix
- Mat4CpyMat4(m_objMesh->obmat, m_obmat);
+ copy_m4_m4(m_objMesh->obmat, m_obmat);
armature_deform_verts( par_arma, m_objMesh, NULL, m_transverts, NULL, m_bmesh->totvert, ARM_DEF_VGROUP, NULL, NULL );
// restore matrix
- Mat4CpyMat4(m_objMesh->obmat, obmat);
+ copy_m4_m4(m_objMesh->obmat, obmat);
#ifdef __NLA_DEFNORMALS
if (m_recalcNormal)
diff --git a/source/gameengine/Converter/BL_SkinDeformer.h b/source/gameengine/Converter/BL_SkinDeformer.h
index 9c6f5db2b95..28f2d0bf644 100644
--- a/source/gameengine/Converter/BL_SkinDeformer.h
+++ b/source/gameengine/Converter/BL_SkinDeformer.h
@@ -55,14 +55,14 @@ public:
BL_SkinDeformer(BL_DeformableGameObject *gameobj,
struct Object *bmeshobj,
- class BL_SkinMeshObject *mesh,
+ class RAS_MeshObject *mesh,
BL_ArmatureObject* arma = NULL);
/* this second constructor is needed for making a mesh deformable on the fly. */
BL_SkinDeformer(BL_DeformableGameObject *gameobj,
struct Object *bmeshobj_old,
struct Object *bmeshobj_new,
- class BL_SkinMeshObject *mesh,
+ class RAS_MeshObject *mesh,
bool release_object,
bool recalc_normal,
BL_ArmatureObject* arma = NULL);
diff --git a/source/gameengine/Converter/BL_SkinMeshObject.cpp b/source/gameengine/Converter/BL_SkinMeshObject.cpp
deleted file mode 100644
index 4eb01df410b..00000000000
--- a/source/gameengine/Converter/BL_SkinMeshObject.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- * Deformer that supports armature skinning
- */
-
-#ifdef WIN32
-#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
-#endif //WIN32
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_key_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
-
-#include "RAS_BucketManager.h"
-#include "RAS_IPolygonMaterial.h"
-
-#include "KX_GameObject.h"
-
-#include "BL_SkinMeshObject.h"
-#include "BL_DeformableGameObject.h"
-
-BL_SkinMeshObject::BL_SkinMeshObject(Mesh* mesh)
- : RAS_MeshObject (mesh)
-{
- m_bDeformed = true;
-
- if (m_mesh && m_mesh->key)
- {
- KeyBlock *kb;
- int count=0;
- // initialize weight cache for shape objects
- // count how many keys in this mesh
- for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next)
- count++;
- m_cacheWeightIndex.resize(count,-1);
- }
-}
-
-BL_SkinMeshObject::~BL_SkinMeshObject()
-{
- if (m_mesh && m_mesh->key)
- {
- KeyBlock *kb;
- // remove the weight cache to avoid memory leak
- for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) {
- if(kb->weights)
- MEM_freeN(kb->weights);
- kb->weights= NULL;
- }
- }
-}
-
-void BL_SkinMeshObject::UpdateBuckets(void* clientobj,double* oglmatrix,bool useObjectColor,const MT_Vector4& rgbavec, bool visible, bool culled)
-{
- list<RAS_MeshMaterial>::iterator it;
- list<RAS_MeshSlot*>::iterator sit;
-
- for(it = m_materials.begin();it!=m_materials.end();++it) {
- if(!it->m_slots[clientobj])
- continue;
-
- RAS_MeshSlot *slot = *it->m_slots[clientobj];
- slot->SetDeformer(((BL_DeformableGameObject*)clientobj)->GetDeformer());
- }
-
- RAS_MeshObject::UpdateBuckets(clientobj, oglmatrix, useObjectColor, rgbavec, visible, culled);
-}
-
-static int get_def_index(Object* ob, const char* vgroup)
-{
- bDeformGroup *curdef;
- int index = 0;
-
- for (curdef = (bDeformGroup*)ob->defbase.first; curdef; curdef=(bDeformGroup*)curdef->next, index++)
- if (!strcmp(curdef->name, vgroup))
- return index;
-
- return -1;
-}
-
-void BL_SkinMeshObject::CheckWeightCache(Object* obj)
-{
- KeyBlock *kb;
- int kbindex, defindex;
- MDeformVert *dvert= NULL;
- int totvert, i, j;
- float *weights;
-
- if (!m_mesh->key)
- return;
-
- for(kbindex=0, kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next, kbindex++)
- {
- // first check the cases where the weight must be cleared
- if (kb->vgroup[0] == 0 ||
- m_mesh->dvert == NULL ||
- (defindex = get_def_index(obj, kb->vgroup)) == -1) {
- if (kb->weights) {
- MEM_freeN(kb->weights);
- kb->weights = NULL;
- }
- m_cacheWeightIndex[kbindex] = -1;
- } else if (m_cacheWeightIndex[kbindex] != defindex) {
- // a weight array is required but the cache is not matching
- if (kb->weights) {
- MEM_freeN(kb->weights);
- kb->weights = NULL;
- }
-
- dvert= m_mesh->dvert;
- totvert= m_mesh->totvert;
-
- weights= (float*)MEM_callocN(totvert*sizeof(float), "weights");
-
- for (i=0; i < totvert; i++, dvert++) {
- for(j=0; j<dvert->totweight; j++) {
- if (dvert->dw[j].def_nr == defindex) {
- weights[i]= dvert->dw[j].weight;
- break;
- }
- }
- }
- kb->weights = weights;
- m_cacheWeightIndex[kbindex] = defindex;
- }
- }
-}
-
-
diff --git a/source/gameengine/Converter/BL_SkinMeshObject.h b/source/gameengine/Converter/BL_SkinMeshObject.h
deleted file mode 100644
index 838c6c3cb95..00000000000
--- a/source/gameengine/Converter/BL_SkinMeshObject.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifndef __BL_SKINMESHOBJECT
-#define __BL_SKINMESHOBJECT
-
-#ifdef WIN32
-#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
-#endif //WIN32
-
-#include "RAS_MeshObject.h"
-#include "RAS_Deformer.h"
-#include "RAS_IPolygonMaterial.h"
-
-#include "BL_MeshDeformer.h"
-
-class BL_SkinMeshObject : public RAS_MeshObject
-{
-protected:
- vector<int> m_cacheWeightIndex;
-
-public:
- BL_SkinMeshObject(Mesh* mesh);
- ~BL_SkinMeshObject();
-
- void UpdateBuckets(void* clientobj, double* oglmatrix,
- bool useObjectColor, const MT_Vector4& rgbavec, bool visible, bool culled);
-
- // for shape keys,
- void CheckWeightCache(struct Object* obj);
-
-
-#ifdef WITH_CXX_GUARDEDALLOC
-public:
- void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_SkinMeshObject"); }
- void operator delete( void *mem ) { MEM_freeN(mem); }
-#endif
-};
-
-#endif
-
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 26b4514061c..6519626ee89 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
@@ -40,6 +40,10 @@
#include "KX_KetsjiEngine.h"
#include "KX_IPhysicsController.h"
#include "BL_Material.h"
+#include "KX_BlenderMaterial.h"
+#include "KX_PolygonMaterial.h"
+
+
#include "SYS_System.h"
#include "DummyPhysicsEnvironment.h"
@@ -66,33 +70,54 @@
#include "DNA_world_types.h"
#include "BKE_main.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
extern "C"
{
#include "DNA_object_types.h"
#include "DNA_curve_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_material_types.h"
#include "BLI_blenlib.h"
#include "MEM_guardedalloc.h"
//XXX #include "BSE_editipo.h"
//XXX #include "BSE_editipo_types.h"
#include "DNA_ipo_types.h"
#include "BKE_global.h"
+#include "BKE_library.h"
#include "BKE_ipo.h" // eval_icu
+#include "BKE_material.h" // copy_material
+#include "BKE_mesh.h" // copy_mesh
#include "DNA_space_types.h"
}
+/* Only for dynamic loading and merging */
+#include "RAS_BucketManager.h" // XXX cant stay
+#include "KX_BlenderSceneConverter.h"
+#include "BL_BlenderDataConversion.h"
+#include "KX_MeshProxy.h"
+#include "RAS_MeshObject.h"
+extern "C" {
+ #include "BKE_context.h"
+ #include "BLO_readfile.h"
+ #include "BKE_report.h"
+ #include "DNA_space_types.h"
+ #include "DNA_windowmanager_types.h" /* report api */
+ #include "../../blender/blenlib/BLI_linklist.h"
+}
KX_BlenderSceneConverter::KX_BlenderSceneConverter(
struct Main* maggie,
class KX_KetsjiEngine* engine
)
: m_maggie(maggie),
+ /*m_maggie_dyn(NULL),*/
m_ketsjiEngine(engine),
m_alwaysUseExpandFraming(false),
m_usemat(false),
m_useglslmat(false)
{
+ tag_main(maggie, 0); /* avoid re-tagging later on */
m_newfilename = "";
}
@@ -141,9 +166,14 @@ KX_BlenderSceneConverter::~KX_BlenderSceneConverter()
KX_ClearBulletSharedShapes();
#endif
-}
-
+ /* free any data that was dynamically loaded */
+ for (vector<Main*>::iterator it=m_DynamicMaggie.begin(); !(it==m_DynamicMaggie.end()); it++) {
+ Main *main= *it;
+ free_main(main);
+ }
+ m_DynamicMaggie.clear();
+}
void KX_BlenderSceneConverter::SetNewFileName(const STR_String& filename)
{
@@ -183,6 +213,14 @@ Scene *KX_BlenderSceneConverter::GetBlenderSceneForName(const STR_String& name)
if (name == (sce->id.name+2))
return sce;
+ for (vector<Main*>::iterator it=m_DynamicMaggie.begin(); !(it==m_DynamicMaggie.end()); it++) {
+ Main *main= *it;
+
+ for (sce= (Scene*) main->scene.first; sce; sce= (Scene*) sce->id.next)
+ if (name == (sce->id.name+2))
+ return sce;
+ }
+
return (Scene*)m_maggie->scene.first;
}
@@ -490,7 +528,9 @@ void KX_BlenderSceneConverter::RegisterGameMesh(
RAS_MeshObject *gamemesh,
struct Mesh *for_blendermesh)
{
- m_map_mesh_to_gamemesh.insert(CHashedPtr(for_blendermesh),gamemesh);
+ if(for_blendermesh) { /* dynamically loaded meshes we dont want to keep lookups for */
+ m_map_mesh_to_gamemesh.insert(CHashedPtr(for_blendermesh),gamemesh);
+ }
m_meshobjects.push_back(pair<KX_Scene*,RAS_MeshObject*>(m_currentScene,gamemesh));
}
@@ -617,8 +657,8 @@ extern "C"
//XXX void testhandles_ipocurve(struct IpoCurve *icu);
void insert_vert_icu(struct IpoCurve *, float, float, short);
float eval_icu(struct IpoCurve *icu, float ipotime);
- //void Mat3ToEul(float tmat[][3], float *eul);
- void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot);
+ //void mat3_to_eul( float *eul,float tmat[][3]);
+ void mat3_to_compatible_eul( float *eul, float *oldrot,float mat[][3]);
}
IpoCurve* findIpoCurve(IpoCurve* first, const char* searchName)
@@ -742,7 +782,7 @@ void KX_BlenderSceneConverter::resetNoneDynamicObjectToIpo(){
if (blenderobject->type==OB_ARMATURE)
continue;
float eu[3];
- Mat4ToEul(blenderobject->obmat,eu);
+ mat4_to_eul(eu,blenderobject->obmat);
MT_Point3 pos = MT_Point3(
blenderobject->obmat[3][0],
blenderobject->obmat[3][1],
@@ -847,8 +887,8 @@ void KX_BlenderSceneConverter::WritePhysicsObjectToAnimationIpo(int frameNumber)
for (int c=0;c<3;c++)
tmat[r][c] = orn[c][r];
- // Mat3ToEul(tmat, eulerAngles); // better to use Mat3ToCompatibleEul
- Mat3ToCompatibleEul(tmat, eulerAngles, eulerAnglesOld);
+ // mat3_to_eul( eulerAngles,tmat); // better to use Mat3ToCompatibleEul
+ mat3_to_compatible_eul( eulerAngles, eulerAnglesOld,tmat);
//eval_icu
for(int x = 0; x < 3; x++)
@@ -925,3 +965,480 @@ PyObject *KX_BlenderSceneConverter::GetPyNamespace()
return m_ketsjiEngine->GetPyNamespace();
}
#endif
+
+vector<Main*> &KX_BlenderSceneConverter::GetMainDynamic()
+{
+ return m_DynamicMaggie;
+}
+
+Main* KX_BlenderSceneConverter::GetMainDynamicPath(const char *path)
+{
+ for (vector<Main*>::iterator it=m_DynamicMaggie.begin(); !(it==m_DynamicMaggie.end()); it++)
+ if(strcmp((*it)->name, path)==0)
+ return *it;
+
+ return NULL;
+}
+
+bool KX_BlenderSceneConverter::LinkBlendFile(const char *path, char *group, KX_Scene *scene_merge, char **err_str)
+{
+ bContext *C;
+ Main *main_newlib; /* stored as a dynamic 'main' until we free it */
+ Main *main_tmp= NULL; /* created only for linking, then freed */
+ LinkNode *names = NULL;
+ BlendHandle *bpy_openlib = NULL; /* ptr to the open .blend file */
+ int idcode= BLO_idcode_from_name(group);
+ short flag= 0; /* dont need any special options */
+ ReportList reports;
+ static char err_local[255];
+
+ /* only scene and mesh supported right now */
+ if(idcode!=ID_SCE && idcode!=ID_ME) {
+ snprintf(err_local, sizeof(err_local), "invalid ID type given \"%s\"\n", group);
+ return false;
+ }
+
+ if(GetMainDynamicPath(path)) {
+ snprintf(err_local, sizeof(err_local), "blend file already open \"%s\"\n", path);
+ *err_str= err_local;
+ return false;
+ }
+
+ bpy_openlib = BLO_blendhandle_from_file( (char *)path );
+ if(bpy_openlib==NULL) {
+ snprintf(err_local, sizeof(err_local), "could not open blendfile \"%s\"\n", path);
+ *err_str= err_local;
+ return false;
+ }
+
+ main_newlib= (Main *)MEM_callocN( sizeof(Main), "BgeMain");
+ C= CTX_create();
+ CTX_data_main_set(C, main_newlib);
+ BKE_reports_init(&reports, RPT_STORE);
+
+ /* here appending/linking starts */
+ main_tmp = BLO_library_append_begin(C, &bpy_openlib, (char *)path);
+
+ names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode);
+
+ int i=0;
+ LinkNode *n= names;
+ while(n) {
+ BLO_library_append_named_part(C, main_tmp, &bpy_openlib, (char *)n->link, idcode, 0);
+ n= (LinkNode *)n->next;
+ i++;
+ }
+ BLI_linklist_free(names, free); /* free linklist *and* each node's data */
+
+ BLO_library_append_end(C, main_tmp, &bpy_openlib, idcode, flag);
+ BLO_blendhandle_close(bpy_openlib);
+
+ CTX_free(C);
+ BKE_reports_clear(&reports);
+ /* done linking */
+
+ /* needed for lookups*/
+ GetMainDynamic().push_back(main_newlib);
+ strncpy(main_newlib->name, path, sizeof(main_newlib->name));
+
+
+ if(idcode==ID_ME) {
+ /* Convert all new meshes into BGE meshes */
+ ID* mesh;
+ KX_Scene *kx_scene= m_currentScene;
+
+ for(mesh= (ID *)main_newlib->mesh.first; mesh; mesh= (ID *)mesh->next ) {
+ RAS_MeshObject *meshobj = BL_ConvertMesh((Mesh *)mesh, NULL, scene_merge, this);
+ kx_scene->GetLogicManager()->RegisterMeshName(meshobj->GetName(),meshobj);
+ }
+ }
+ else if(idcode==ID_SCE) {
+ /* Merge all new linked in scene into the existing one */
+ ID *scene;
+ for(scene= (ID *)main_newlib->scene.first; scene; scene= (ID *)scene->next ) {
+ printf("SceneName: %s\n", scene->name);
+
+ /* merge into the base scene */
+ KX_Scene* other= m_ketsjiEngine->CreateScene((Scene *)scene);
+ scene_merge->MergeScene(other);
+
+ // RemoveScene(other); // Dont run this, it frees the entire scene converter data, just delete the scene
+ delete other;
+ }
+ }
+
+ return true;
+}
+
+/* Note m_map_*** are all ok and dont need to be freed
+ * most are temp and NewRemoveObject frees m_map_gameobject_to_blender */
+bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie)
+{
+ int maggie_index;
+ int i=0;
+
+ if(maggie==NULL)
+ return false;
+
+ /* tag all false except the one we remove */
+ for (vector<Main*>::iterator it=m_DynamicMaggie.begin(); !(it==m_DynamicMaggie.end()); it++) {
+ Main *main= *it;
+ if(main != maggie) {
+ tag_main(main, 0);
+ }
+ else {
+ maggie_index= i;
+ }
+ i++;
+ }
+
+ m_DynamicMaggie.erase(m_DynamicMaggie.begin() + maggie_index);
+ tag_main(maggie, 1);
+
+
+ /* free all tagged objects */
+ KX_SceneList* scenes = m_ketsjiEngine->CurrentScenes();
+ int numScenes = scenes->size();
+
+
+ for (int scene_idx=0;scene_idx<numScenes;scene_idx++)
+ {
+ KX_Scene* scene = scenes->at(scene_idx);
+ if(IS_TAGGED(scene->GetBlenderScene())) {
+ RemoveScene(scene); // XXX - not tested yet
+ scene_idx--;
+ numScenes--;
+ }
+ else {
+
+ /* incase the mesh might be refered to later */
+ {
+ GEN_Map<STR_HashedString,void*> &mapStringToMeshes = scene->GetLogicManager()->GetMeshMap();
+
+ for(int i=0; i<mapStringToMeshes.size(); i++)
+ {
+ RAS_MeshObject *meshobj= (RAS_MeshObject *) *mapStringToMeshes.at(i);
+ if(meshobj && IS_TAGGED(meshobj->GetMesh()))
+ {
+ STR_HashedString mn = meshobj->GetName();
+ mapStringToMeshes.remove(mn);
+ i--;
+ }
+ }
+ }
+
+ //scene->FreeTagged(); /* removed tagged objects and meshes*/
+ CListValue *obj_lists[] = {scene->GetObjectList(), scene->GetInactiveList(), NULL};
+
+ for(int ob_ls_idx=0; obj_lists[ob_ls_idx]; ob_ls_idx++)
+ {
+ CListValue *obs= obj_lists[ob_ls_idx];
+ RAS_MeshObject* mesh;
+
+ for (int ob_idx = 0; ob_idx < obs->GetCount(); ob_idx++)
+ {
+ KX_GameObject* gameobj = (KX_GameObject*)obs->GetValue(ob_idx);
+ if(IS_TAGGED(gameobj->GetBlenderObject())) {
+
+ int size_before = obs->GetCount();
+
+ /* Eventually calls RemoveNodeDestructObject
+ * frees m_map_gameobject_to_blender from UnregisterGameObject */
+ scene->RemoveObject(gameobj);
+
+ if(size_before != obs->GetCount())
+ ob_idx--;
+ else {
+ printf("ERROR COULD NOT REMOVE \"%s\"\n", gameobj->GetName().ReadPtr());
+ }
+ }
+ else {
+ /* free the mesh, we could be referecing a linked one! */
+ int mesh_index= gameobj->GetMeshCount();
+ while(mesh_index--) {
+ mesh= gameobj->GetMesh(mesh_index);
+ if(IS_TAGGED(mesh->GetMesh())) {
+ gameobj->RemoveMeshes(); /* XXX - slack, should only remove meshes that are library items but mostly objects only have 1 mesh */
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ int size;
+
+ // delete the entities of this scene
+ /* TODO - */
+ /*
+ vector<pair<KX_Scene*,KX_WorldInfo*> >::iterator worldit;
+ size = m_worldinfos.size();
+ for (i=0, worldit=m_worldinfos.begin(); i<size; ) {
+ if ((*worldit).second) {
+ delete (*worldit).second;
+ *worldit = m_worldinfos.back();
+ m_worldinfos.pop_back();
+ size--;
+ } else {
+ i++;
+ worldit++;
+ }
+ }*/
+
+
+ /* Worlds dont reference original blender data so we need to make a set from them */
+ typedef std::set<KX_WorldInfo*> KX_WorldInfoSet;
+ KX_WorldInfoSet worldset;
+ for (int scene_idx=0;scene_idx<numScenes;scene_idx++)
+ {
+ KX_Scene* scene = scenes->at(scene_idx);
+ if(scene->GetWorldInfo())
+ worldset.insert( scene->GetWorldInfo() );
+ }
+
+ vector<pair<KX_Scene*,KX_WorldInfo*> >::iterator worldit;
+ size = m_worldinfos.size();
+ for (i=0, worldit=m_worldinfos.begin(); i<size; ) {
+ if ((*worldit).second && (worldset.count((*worldit).second)) == 0) {
+ delete (*worldit).second;
+ *worldit = m_worldinfos.back();
+ m_worldinfos.pop_back();
+ size--;
+ } else {
+ i++;
+ worldit++;
+ }
+ }
+ worldset.clear();
+ /* done freeing the worlds */
+
+
+
+
+ vector<pair<KX_Scene*,RAS_IPolyMaterial*> >::iterator polymit;
+ size = m_polymaterials.size();
+
+
+
+ for (i=0, polymit=m_polymaterials.begin(); i<size; ) {
+ RAS_IPolyMaterial *mat= (*polymit).second;
+ Material *bmat= NULL;
+
+ /* Why do we need to check for RAS_BLENDERMAT if both are cast to a (PyObject*)? - Campbell */
+ if(mat->GetFlag() & RAS_BLENDERMAT) {
+ KX_BlenderMaterial *bl_mat = static_cast<KX_BlenderMaterial*>(mat);
+ bmat= bl_mat->GetBlenderMaterial();
+
+ } else {
+ KX_PolygonMaterial *kx_mat = static_cast<KX_PolygonMaterial*>(mat);
+ bmat= kx_mat->GetBlenderMaterial();
+ }
+
+ if (IS_TAGGED(bmat)) {
+ /* only remove from bucket */
+ ((*polymit).first)->GetBucketManager()->RemoveMaterial(mat);
+ }
+
+ i++;
+ polymit++;
+ }
+
+
+
+ for (i=0, polymit=m_polymaterials.begin(); i<size; ) {
+ RAS_IPolyMaterial *mat= (*polymit).second;
+ Material *bmat= NULL;
+
+ /* Why do we need to check for RAS_BLENDERMAT if both are cast to a (PyObject*)? - Campbell */
+ if(mat->GetFlag() & RAS_BLENDERMAT) {
+ KX_BlenderMaterial *bl_mat = static_cast<KX_BlenderMaterial*>(mat);
+ bmat= bl_mat->GetBlenderMaterial();
+
+ } else {
+ KX_PolygonMaterial *kx_mat = static_cast<KX_PolygonMaterial*>(mat);
+ bmat= kx_mat->GetBlenderMaterial();
+ }
+
+ if(bmat) {
+ //printf("FOUND MAT '%s' !!! ", ((ID*)bmat)->name+2);
+ }
+ else {
+ //printf("LOST MAT !!!");
+ }
+
+ if (IS_TAGGED(bmat)) {
+
+ delete (*polymit).second;
+ *polymit = m_polymaterials.back();
+ m_polymaterials.pop_back();
+ size--;
+ //printf("tagged !\n");
+ } else {
+ i++;
+ polymit++;
+ //printf("(un)tagged !\n");
+ }
+ }
+
+ vector<pair<KX_Scene*,BL_Material*> >::iterator matit;
+ size = m_materials.size();
+ for (i=0, matit=m_materials.begin(); i<size; ) {
+ BL_Material *mat= (*matit).second;
+ if (IS_TAGGED(mat->material)) {
+ delete (*matit).second;
+ *matit = m_materials.back();
+ m_materials.pop_back();
+ size--;
+ } else {
+ i++;
+ matit++;
+ }
+ }
+
+ vector<pair<KX_Scene*,RAS_MeshObject*> >::iterator meshit;
+ size = m_meshobjects.size();
+ for (i=0, meshit=m_meshobjects.begin(); i<size; ) {
+ RAS_MeshObject *me= (*meshit).second;
+ if (IS_TAGGED(me->GetMesh())) {
+ delete (*meshit).second;
+ *meshit = m_meshobjects.back();
+ m_meshobjects.pop_back();
+ size--;
+ } else {
+ i++;
+ meshit++;
+ }
+ }
+
+ free_main(maggie);
+
+ return true;
+}
+
+bool KX_BlenderSceneConverter::FreeBlendFile(const char *path)
+{
+ return FreeBlendFile(GetMainDynamicPath(path));
+}
+
+bool KX_BlenderSceneConverter::MergeScene(KX_Scene *to, KX_Scene *from)
+{
+
+ {
+ vector<pair<KX_Scene*,KX_WorldInfo*> >::iterator itp = m_worldinfos.begin();
+ while (itp != m_worldinfos.end()) {
+ if ((*itp).first==from)
+ (*itp).first= to;
+ itp++;
+ }
+ }
+
+ {
+ vector<pair<KX_Scene*,RAS_IPolyMaterial*> >::iterator itp = m_polymaterials.begin();
+ while (itp != m_polymaterials.end()) {
+ if ((*itp).first==from) {
+ (*itp).first= to;
+
+ /* also switch internal data */
+ RAS_IPolyMaterial*mat= (*itp).second;
+ mat->Replace_IScene(to);
+ }
+ itp++;
+ }
+ }
+
+ {
+ vector<pair<KX_Scene*,RAS_MeshObject*> >::iterator itp = m_meshobjects.begin();
+ while (itp != m_meshobjects.end()) {
+ if ((*itp).first==from)
+ (*itp).first= to;
+ itp++;
+ }
+ }
+
+ {
+ vector<pair<KX_Scene*,BL_Material*> >::iterator itp = m_materials.begin();
+ while (itp != m_materials.end()) {
+ if ((*itp).first==from)
+ (*itp).first= to;
+ itp++;
+ }
+ }
+
+ return true;
+}
+
+/* This function merges a mesh from the current scene into another main
+ * it does not convert */
+RAS_MeshObject *KX_BlenderSceneConverter::ConvertMeshSpecial(KX_Scene* kx_scene, Main *maggie, const char *name)
+{
+ ID *me;
+
+ /* Find a mesh in the current main */
+ for(me = (ID *)m_maggie->mesh.first; me; me= (ID *)me->next)
+ if(strcmp(name, me->name+2)==0)
+ break;
+
+ if(me==NULL) {
+ printf("Could not be found \"%s\"\n", name);
+ return NULL;
+ }
+
+ /* Watch this!, if its used in the original scene can cause big troubles */
+ if(me->us > 0) {
+ printf("Mesh has a user \"%s\"\n", name);
+ me = (ID*)copy_mesh((Mesh*)me);
+ me->us--;
+ }
+ BLI_remlink(&m_maggie->mesh, me); /* even if we made the copy it needs to be removed */
+ BLI_addtail(&maggie->mesh, me);
+
+
+ /* Must copy the materials this uses else we cant free them */
+ {
+ Mesh *mesh= (Mesh *)me;
+
+ /* ensure all materials are tagged */
+ for(int i=0; i<mesh->totcol; i++)
+ if(mesh->mat[i])
+ mesh->mat[i]->id.flag &= ~LIB_DOIT;
+
+ for(int i=0; i<mesh->totcol; i++)
+ {
+ Material *mat_old= mesh->mat[i];
+
+ /* if its tagged its a replaced material */
+ if(mat_old && (mat_old->id.flag & LIB_DOIT)==0)
+ {
+ Material *mat_old= mesh->mat[i];
+ Material *mat_new= copy_material( mat_old );
+
+ mat_new->id.flag |= LIB_DOIT;
+ mat_old->id.us--;
+
+ BLI_remlink(&m_maggie->mat, mat_new);
+ BLI_addtail(&maggie->mat, mat_new);
+
+ mesh->mat[i]= mat_new;
+
+ /* the same material may be used twice */
+ for(int j=i+1; j<mesh->totcol; j++)
+ {
+ if(mesh->mat[j]==mat_old)
+ {
+ mesh->mat[j]= mat_new;
+ mat_new->id.us++;
+ mat_old->id.us--;
+ }
+ }
+ }
+ }
+ }
+
+ RAS_MeshObject *meshobj = BL_ConvertMesh((Mesh *)me, NULL, kx_scene, this);
+ kx_scene->GetLogicManager()->RegisterMeshName(meshobj->GetName(),meshobj);
+ m_map_mesh_to_gamemesh.clear(); /* This is at runtime so no need to keep this, BL_ConvertMesh adds */
+ return meshobj;
+}
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.h b/source/gameengine/Converter/KX_BlenderSceneConverter.h
index f74944d3552..c8009eb9437 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.h
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.h
@@ -31,6 +31,7 @@
#include "KX_HashedPtr.h"
#include "GEN_Map.h"
+#include <stdio.h>
#include "KX_ISceneConverter.h"
#include "KX_IpoConvert.h"
@@ -64,6 +65,7 @@ class KX_BlenderSceneConverter : public KX_ISceneConverter
GEN_Map<CHashedPtr,BL_InterpolatorList*> m_map_blender_to_gameAdtList;
Main* m_maggie;
+ vector<struct Main*> m_DynamicMaggie;
STR_String m_newfilename;
class KX_KetsjiEngine* m_ketsjiEngine;
@@ -140,7 +142,39 @@ public:
struct Scene* GetBlenderSceneForName(const STR_String& name);
- struct Main* GetMain() { return m_maggie; };
+// struct Main* GetMain() { return m_maggie; };
+ struct Main* GetMainDynamicPath(const char *path);
+ vector<struct Main*> &GetMainDynamic();
+
+ bool LinkBlendFile(const char *path, char *group, KX_Scene *scene_merge, char **err_str);
+ bool MergeScene(KX_Scene *to, KX_Scene *from);
+ RAS_MeshObject *ConvertMeshSpecial(KX_Scene* kx_scene, Main *maggie, const char *name);
+ bool FreeBlendFile(struct Main *maggie);
+ bool FreeBlendFile(const char *path);
+
+ void PrintStats() {
+ printf("BGE STATS!\n");
+
+ printf("\nAssets...\n");
+ printf("\t m_worldinfos: %d\n", m_worldinfos.size());
+ printf("\t m_polymaterials: %d\n", m_polymaterials.size());
+ printf("\t m_meshobjects: %d\n", m_meshobjects.size());
+ printf("\t m_materials: %d\n", m_materials.size());
+
+ printf("\nMappings...\n");
+ printf("\t m_map_blender_to_gameobject: %d\n", m_map_blender_to_gameobject.size());
+ printf("\t m_map_mesh_to_gamemesh: %d\n", m_map_mesh_to_gamemesh.size());
+ printf("\t m_map_blender_to_gameactuator: %d\n", m_map_blender_to_gameactuator.size());
+ printf("\t m_map_blender_to_gamecontroller: %d\n", m_map_blender_to_gamecontroller.size());
+ printf("\t m_map_blender_to_gameAdtList: %d\n", m_map_blender_to_gameAdtList.size());
+
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_printmemlist_pydict();
+#endif
+// /printf("\t m_ketsjiEngine->m_scenes: %d\n", m_ketsjiEngine->CurrentScenes()->size());
+ }
+
+
#ifndef DISABLE_PYTHON
PyObject *GetPyNamespace();
diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp
index 1cb16acf148..a0645476063 100644
--- a/source/gameengine/Converter/KX_ConvertActuators.cpp
+++ b/source/gameengine/Converter/KX_ConvertActuators.cpp
@@ -304,9 +304,6 @@ void BL_ConvertActuators(char* maggiename,
STR_String toPropName = (msgAct->toPropName
? (char*) msgAct->toPropName
: "");
- /* BGE Wants "OB" prefix */
- if (toPropName != "")
- toPropName = "OB" + toPropName;
/**
* Get the Message Subject to send.
diff --git a/source/gameengine/Converter/KX_IpoConvert.cpp b/source/gameengine/Converter/KX_IpoConvert.cpp
index 848fcfcdaa0..359eedb1e5e 100644
--- a/source/gameengine/Converter/KX_IpoConvert.cpp
+++ b/source/gameengine/Converter/KX_IpoConvert.cpp
@@ -53,6 +53,7 @@
#endif
#include "DNA_object_types.h"
+#include "DNA_action_types.h"
#include "DNA_ipo_types.h"
#include "DNA_lamp_types.h"
#include "DNA_world_types.h"
@@ -120,6 +121,21 @@ void BL_ConvertIpos(struct Object* blenderobject,KX_GameObject* gameobj,KX_Blend
)
);
+ char *rotmode, *drotmode;
+
+ switch(blenderobject->rotmode)
+ {
+ case ROT_MODE_AXISANGLE:
+ rotmode = "rotation_axis_angle";
+ drotmode = "delta_rotation_axis_angle";
+ case ROT_MODE_QUAT:
+ rotmode = "rotation_quaternion";
+ drotmode = "delta_rotation_quaternion";
+ default:
+ rotmode = "rotation_euler";
+ drotmode = "delta_rotation_euler";
+ }
+
BL_InterpolatorList *adtList= GetAdtList(blenderobject->adt, converter);
// For each active channel in the adtList add an
@@ -143,14 +159,14 @@ void BL_ConvertIpos(struct Object* blenderobject,KX_GameObject* gameobj,KX_Blend
}
}
for(int i=0; i<3; i++) {
- if ((interp = adtList->GetScalarInterpolator("rotation", i))) {
+ if ((interp = adtList->GetScalarInterpolator(rotmode, i))) {
interpolator= new KX_ScalarInterpolator(&(ipocontr->GetIPOTransform().GetEulerAngles()[i]), interp);
ipocontr->AddInterpolator(interpolator);
ipocontr->SetIPOChannelActive(OB_ROT_X+i, true);
}
}
for(int i=0; i<3; i++) {
- if ((interp = adtList->GetScalarInterpolator("delta_rotation", i))) {
+ if ((interp = adtList->GetScalarInterpolator(drotmode, i))) {
interpolator= new KX_ScalarInterpolator(&(ipocontr->GetIPOTransform().GetDeltaEulerAngles()[i]), interp);
ipocontr->AddInterpolator(interpolator);
ipocontr->SetIPOChannelActive(OB_DROT_X+i, true);
@@ -459,7 +475,7 @@ void BL_ConvertMaterialIpos(
Material *mat = give_current_material(blenderobject, material_index);
STR_HashedString matname;
if(mat) {
- matname= mat->id.name;
+ matname= mat->id.name; // who is using this name? can we remove the MA here?
ConvertMaterialIpos(mat, matname.hash(), gameobj, converter);
}
}
diff --git a/source/gameengine/Converter/KX_SoftBodyDeformer.cpp b/source/gameengine/Converter/KX_SoftBodyDeformer.cpp
new file mode 100644
index 00000000000..bee8751548a
--- /dev/null
+++ b/source/gameengine/Converter/KX_SoftBodyDeformer.cpp
@@ -0,0 +1,120 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifdef WIN32
+#pragma warning (disable : 4786)
+#endif //WIN32
+
+#include "MT_assert.h"
+
+#include "KX_ConvertPhysicsObject.h"
+#include "KX_SoftBodyDeformer.h"
+#include "RAS_MeshObject.h"
+#include "GEN_Map.h"
+#include "GEN_HashedPtr.h"
+
+#ifdef USE_BULLET
+
+#include "CcdPhysicsEnvironment.h"
+#include "CcdPhysicsController.h"
+#include "BulletSoftBody/btSoftBody.h"
+
+#include "KX_BulletPhysicsController.h"
+#include "btBulletDynamicsCommon.h"
+
+void KX_SoftBodyDeformer::Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
+{
+ void **h_obj = (*map)[m_gameobj];
+
+ if (h_obj) {
+ m_gameobj = (BL_DeformableGameObject*)(*h_obj);
+ m_pMeshObject = m_gameobj->GetMesh(0);
+ } else {
+ m_gameobj = NULL;
+ m_pMeshObject = NULL;
+ }
+}
+
+bool KX_SoftBodyDeformer::Apply(class RAS_IPolyMaterial *polymat)
+{
+ KX_BulletPhysicsController* ctrl = (KX_BulletPhysicsController*) m_gameobj->GetPhysicsController();
+ if (!ctrl)
+ return false;
+
+ btSoftBody* softBody= ctrl->GetSoftBody();
+ if (!softBody)
+ return false;
+
+ //printf("apply\n");
+ RAS_MeshSlot::iterator it;
+ RAS_MeshMaterial *mmat;
+ RAS_MeshSlot *slot;
+ size_t i;
+
+ // update the vertex in m_transverts
+ Update();
+
+ // The vertex cache can only be updated for this deformer:
+ // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object)
+ // share the same mesh (=the same cache). As the rendering is done per polymaterial
+ // cycling through the objects, the entire mesh cache cannot be updated in one shot.
+ mmat = m_pMeshObject->GetMeshMaterial(polymat);
+ if(!mmat->m_slots[(void*)m_gameobj])
+ return true;
+
+ slot = *mmat->m_slots[(void*)m_gameobj];
+
+ // for each array
+ for(slot->begin(it); !slot->end(it); slot->next(it))
+ {
+ btSoftBody::tNodeArray& nodes(softBody->m_nodes);
+
+ int index = 0;
+ for(i=it.startvertex; i<it.endvertex; i++,index++) {
+ RAS_TexVert& v = it.vertex[i];
+ btAssert(v.getSoftBodyIndex() >= 0);
+
+ MT_Point3 pt (
+ nodes[v.getSoftBodyIndex()].m_x.getX(),
+ nodes[v.getSoftBodyIndex()].m_x.getY(),
+ nodes[v.getSoftBodyIndex()].m_x.getZ());
+ v.SetXYZ(pt);
+
+ MT_Vector3 normal (
+ nodes[v.getSoftBodyIndex()].m_n.getX(),
+ nodes[v.getSoftBodyIndex()].m_n.getY(),
+ nodes[v.getSoftBodyIndex()].m_n.getZ());
+ v.SetNormal(normal);
+
+ }
+ }
+ return true;
+}
+
+#endif
diff --git a/source/gameengine/Converter/KX_SoftBodyDeformer.h b/source/gameengine/Converter/KX_SoftBodyDeformer.h
new file mode 100644
index 00000000000..b55b2a745c0
--- /dev/null
+++ b/source/gameengine/Converter/KX_SoftBodyDeformer.h
@@ -0,0 +1,102 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef KX_SOFTBODYDEFORMER
+#define KX_SOFTBODYDEFORMER
+
+#ifdef WIN32
+#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
+#endif //WIN32
+
+#include "RAS_Deformer.h"
+#include "BL_DeformableGameObject.h"
+#include <vector>
+
+
+class KX_SoftBodyDeformer : public RAS_Deformer
+{
+ class RAS_MeshObject* m_pMeshObject;
+ class BL_DeformableGameObject* m_gameobj;
+
+public:
+ KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj)
+ :m_pMeshObject(pMeshObject),
+ m_gameobj(gameobj)
+ {
+ //printf("KX_SoftBodyDeformer\n");
+ };
+
+ virtual ~KX_SoftBodyDeformer()
+ {
+ //printf("~KX_SoftBodyDeformer\n");
+ };
+ virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map);
+ virtual bool Apply(class RAS_IPolyMaterial *polymat);
+ virtual bool Update(void)
+ {
+ //printf("update\n");
+ m_bDynamic = true;
+ return true;//??
+ }
+ virtual bool UpdateBuckets(void)
+ {
+ // this is to update the mesh slots outside the rasterizer,
+ // no need to do it for this deformer, it's done in any case in Apply()
+ return false;
+ }
+
+ virtual RAS_Deformer *GetReplica()
+ {
+ KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this);
+ deformer->ProcessReplica();
+ return deformer;
+ }
+ virtual void ProcessReplica()
+ {
+ // we have two pointers to deal with but we cannot do it now, will be done in Relink
+ m_bDynamic = false;
+ }
+ virtual bool SkipVertexTransform()
+ {
+ return true;
+ }
+
+protected:
+ //class RAS_MeshObject *m_pMesh;
+
+#ifdef WITH_CXX_GUARDEDALLOC
+public:
+ void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_ShapeDeformer"); }
+ void operator delete( void *mem ) { MEM_freeN(mem); }
+#endif
+};
+
+
+#endif
+
diff --git a/source/gameengine/Converter/Makefile b/source/gameengine/Converter/Makefile
index d41cc705087..b6da47930d3 100644
--- a/source/gameengine/Converter/Makefile
+++ b/source/gameengine/Converter/Makefile
@@ -51,6 +51,7 @@ CPPFLAGS += -I../../blender/makesrna
CPPFLAGS += -I../../blender/editors/include
CPPFLAGS += -I../../blender/blenlib
CPPFLAGS += -I../../blender/blenkernel
+CPPFLAGS += -I../../blender/blenloader
CPPFLAGS += -I../../blender/render/extern/include
CPPFLAGS += -I../../blender/gpu
CPPFLAGS += -I../../blender/ikplugin
diff --git a/source/gameengine/GameLogic/SCA_EventManager.h b/source/gameengine/GameLogic/SCA_EventManager.h
index debefcc45b0..8d3610acc5f 100644
--- a/source/gameengine/GameLogic/SCA_EventManager.h
+++ b/source/gameengine/GameLogic/SCA_EventManager.h
@@ -70,6 +70,11 @@ public:
virtual void EndFrame();
virtual void RegisterSensor(class SCA_ISensor* sensor);
int GetType();
+ //SG_DList &GetSensors() { return m_sensors; }
+
+
+ void Replace_LogicManager(SCA_LogicManager* logicmgr) { m_logicmgr= logicmgr; }
+ virtual void Replace_PhysicsScene(class PHY_IPhysicsEnvironment* env) { } /* only for event managers that use one */
protected:
EVENT_MANAGER_TYPE m_mgrtype;
diff --git a/source/gameengine/GameLogic/SCA_ExpressionController.cpp b/source/gameengine/GameLogic/SCA_ExpressionController.cpp
index 91135079fe6..2771b6c45b5 100644
--- a/source/gameengine/GameLogic/SCA_ExpressionController.cpp
+++ b/source/gameengine/GameLogic/SCA_ExpressionController.cpp
@@ -107,7 +107,7 @@ void SCA_ExpressionController::Trigger(SCA_LogicManager* logicmgr)
{
if (value->IsError())
{
- printf(value->GetText());
+ printf("%s\n", value->GetText().ReadPtr());
} else
{
float num = (float)value->GetNumber();
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.h b/source/gameengine/GameLogic/SCA_ILogicBrick.h
index 11885f988f3..cebfcf6bdc4 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.h
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.h
@@ -35,6 +35,9 @@
#include "GEN_Map.h"
#include "GEN_HashedPtr.h"
+class NG_NetworkScene;
+class SCA_IScene;
+
class SCA_ILogicBrick : public CValue
{
Py_Header;
@@ -122,9 +125,14 @@ public:
virtual bool LessComparedTo(SCA_ILogicBrick* other);
+ /* runtime variable, set when Triggering the python controller */
static class SCA_LogicManager* m_sCurrentLogicManager;
+ /* for moving logic bricks between scenes */
+ virtual void Replace_IScene(SCA_IScene *val) {};
+ virtual void Replace_NetworkScene(NG_NetworkScene *val) {};
+
#ifndef DISABLE_PYTHON
// python methods
diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp
index 877563e3161..3191c99fb2f 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ISensor.cpp
@@ -160,6 +160,19 @@ void SCA_ISensor::RegisterToManager()
m_eventmgr->RegisterSensor(this);
}
+void SCA_ISensor::Replace_EventManager(class SCA_LogicManager* logicmgr)
+{
+ if(m_links) { /* true if we're used currently */
+
+ m_eventmgr->RemoveSensor(this);
+ m_eventmgr= logicmgr->FindEventManager(m_eventmgr->GetType());
+ m_eventmgr->RegisterSensor(this);
+ }
+ else {
+ m_eventmgr= logicmgr->FindEventManager(m_eventmgr->GetType());
+ }
+}
+
void SCA_ISensor::LinkToController(SCA_IController* controller)
{
m_linkedcontrollers.push_back(controller);
diff --git a/source/gameengine/GameLogic/SCA_ISensor.h b/source/gameengine/GameLogic/SCA_ISensor.h
index fce5f340be1..e01f5775289 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.h
+++ b/source/gameengine/GameLogic/SCA_ISensor.h
@@ -133,6 +133,7 @@ public:
virtual void RegisterToManager();
virtual void UnregisterToManager();
+ void Replace_EventManager(class SCA_LogicManager* logicmgr);
void ReserveController(int num)
{
m_linkedcontrollers.reserve(num);
diff --git a/source/gameengine/GameLogic/SCA_LogicManager.cpp b/source/gameengine/GameLogic/SCA_LogicManager.cpp
index d93f2e70e36..fe97add9a3f 100644
--- a/source/gameengine/GameLogic/SCA_LogicManager.cpp
+++ b/source/gameengine/GameLogic/SCA_LogicManager.cpp
@@ -119,7 +119,7 @@ void SCA_LogicManager::UnregisterGameObj(void* blendobj, CValue* gameobj)
CValue* SCA_LogicManager::GetGameObjectByName(const STR_String& gameobjname)
{
- STR_HashedString mn = "OB"+gameobjname;
+ STR_HashedString mn = gameobjname;
CValue** gameptr = m_mapStringToGameObjects[mn];
if (gameptr)
@@ -252,7 +252,7 @@ void SCA_LogicManager::UpdateFrame(double curtime, bool frame)
void* SCA_LogicManager::GetActionByName (const STR_String& actname)
{
- STR_HashedString an = "AC"+actname;
+ STR_HashedString an = actname;
void** actptr = m_mapStringToActions[an];
if (actptr)
@@ -265,7 +265,7 @@ void* SCA_LogicManager::GetActionByName (const STR_String& actname)
void* SCA_LogicManager::GetMeshByName(const STR_String& meshname)
{
- STR_HashedString mn = "ME"+meshname;
+ STR_HashedString mn = meshname;
void** meshptr = m_mapStringToMeshes[mn];
if (meshptr)
@@ -282,6 +282,11 @@ void SCA_LogicManager::RegisterMeshName(const STR_String& meshname,void* mesh)
m_mapStringToMeshes.insert(mn,mesh);
}
+void SCA_LogicManager::UnregisterMeshName(const STR_String& meshname,void* mesh)
+{
+ STR_HashedString mn = meshname;
+ m_mapStringToMeshes.remove(mn);
+}
void SCA_LogicManager::RegisterActionName(const STR_String& actname,void* action)
diff --git a/source/gameengine/GameLogic/SCA_LogicManager.h b/source/gameengine/GameLogic/SCA_LogicManager.h
index 402090357cb..0c2effc2516 100644
--- a/source/gameengine/GameLogic/SCA_LogicManager.h
+++ b/source/gameengine/GameLogic/SCA_LogicManager.h
@@ -66,6 +66,7 @@ typedef std::map<class SCA_ISensor*,controllerlist > sensormap_t;
#include "SCA_ILogicBrick.h"
#include "SCA_IActuator.h"
+#include "SCA_EventManager.h"
class SCA_LogicManager
@@ -110,6 +111,7 @@ public:
void AddTriggeredController(SCA_IController* controller, SCA_ISensor* sensor);
SCA_EventManager* FindEventManager(int eventmgrtype);
+ vector<class SCA_EventManager*> GetEventManagers() { return m_eventmanagers; }
void RemoveGameObject(const STR_String& gameobjname);
@@ -123,6 +125,9 @@ public:
// for the scripting... needs a FactoryManager later (if we would have time... ;)
void RegisterMeshName(const STR_String& meshname,void* mesh);
+ void UnregisterMeshName(const STR_String& meshname,void* mesh);
+ GEN_Map<STR_HashedString,void*>& GetMeshMap() { return m_mapStringToMeshes; };
+
void RegisterActionName(const STR_String& actname,void* action);
void* GetActionByName (const STR_String& actname);
diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.cpp b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
index 2a4222af355..47f3d0e3b40 100644
--- a/source/gameengine/GameLogic/SCA_PropertySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
@@ -39,6 +39,7 @@
#include "SCA_LogicManager.h"
#include "BoolValue.h"
#include "FloatValue.h"
+#include <stdio.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp
index ac3e0434d20..aeebce6c7d7 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.cpp
+++ b/source/gameengine/GameLogic/SCA_PythonController.cpp
@@ -465,7 +465,8 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
{
/* clear after PyErrPrint - seems it can be using
* something in this dictionary and crash? */
- PyDict_Clear(excdict);
+ // This doesn't appear to be needed anymore
+ //PyDict_Clear(excdict);
Py_DECREF(excdict);
}
diff --git a/source/gameengine/GamePlayer/common/GPC_Canvas.h b/source/gameengine/GamePlayer/common/GPC_Canvas.h
index 87719041f65..a65bad59d60 100644
--- a/source/gameengine/GamePlayer/common/GPC_Canvas.h
+++ b/source/gameengine/GamePlayer/common/GPC_Canvas.h
@@ -125,10 +125,11 @@ public:
return m_displayarea;
};
- RAS_Rect &
- GetDisplayArea(
+ void
+ SetDisplayArea(
+ RAS_Rect *rect
) {
- return m_displayarea;
+ m_displayarea= *rect;
};
RAS_Rect &
diff --git a/source/gameengine/GamePlayer/common/SConscript b/source/gameengine/GamePlayer/common/SConscript
index 99eda4cb592..51fc2fc7334 100644
--- a/source/gameengine/GamePlayer/common/SConscript
+++ b/source/gameengine/GamePlayer/common/SConscript
@@ -61,7 +61,7 @@ incs = ['.',
defs = []
if env['WITH_BF_PYTHON']:
- incs += ' ' + env['BF_PYTHON_INC']
+ incs += Split(env['BF_PYTHON_INC'])
else:
defs.append('DISABLE_PYTHON')
diff --git a/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp b/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp
index 71f40d03eb3..0002e538947 100644
--- a/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp
+++ b/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp
@@ -40,7 +40,6 @@
#include "GPW_KeyboardDevice.h"
#include "GPW_System.h"
-#include "SND_DeviceManager.h"
#include "NG_NetworkScene.h"
#include "NG_LoopBackNetworkDeviceInterface.h"
@@ -64,9 +63,6 @@ GPW_Engine::~GPW_Engine()
bool GPW_Engine::Initialize(HDC hdc, int width, int height)
{
- SND_DeviceManager::Subscribe();
- m_audiodevice = SND_DeviceManager::Instance();
-
m_keyboarddev = new GPW_KeyboardDevice();
m_mousedev = new GPC_MouseDevice();
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index fb2e1c72a85..8d9a59b1871 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -688,19 +688,19 @@ int main(int argc, char** argv)
if ((!fullScreenParFound) && (!windowParFound))
{
// Only use file settings when command line did not override
- if (scene->r.fullscreen) {
+ if (scene->gm.fullscreen) {
//printf("fullscreen option found in Blender file\n");
fullScreen = true;
- fullScreenWidth= scene->r.xplay;
- fullScreenHeight= scene->r.yplay;
- fullScreenFrequency= scene->r.freqplay;
- fullScreenBpp = scene->r.depth;
+ fullScreenWidth= scene->gm.xplay;
+ fullScreenHeight= scene->gm.yplay;
+ fullScreenFrequency= scene->gm.freqplay;
+ fullScreenBpp = scene->gm.depth;
}
else
{
fullScreen = false;
- windowWidth = scene->r.xplay;
- windowHeight = scene->r.yplay;
+ windowWidth = scene->gm.xplay;
+ windowHeight = scene->gm.yplay;
}
}
@@ -708,9 +708,11 @@ int main(int argc, char** argv)
// Check whether the game should be displayed in stereo
if (!stereoParFound)
{
- stereomode = (RAS_IRasterizer::StereoMode) scene->r.stereomode;
- if (stereomode == RAS_IRasterizer::RAS_STEREO_QUADBUFFERED)
- stereoWindow = true;
+ if(scene->gm.stereoflag == STEREO_ENABLED){
+ stereomode = (RAS_IRasterizer::StereoMode) scene->gm.stereomode;
+ if (stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED)
+ stereoWindow = true;
+ }
}
// GPG_Application app (system, maggie, startscenename);
diff --git a/source/gameengine/GamePlayer/ghost/SConscript b/source/gameengine/GamePlayer/ghost/SConscript
index cfb827cf8c3..93769e60401 100644
--- a/source/gameengine/GamePlayer/ghost/SConscript
+++ b/source/gameengine/GamePlayer/ghost/SConscript
@@ -43,7 +43,7 @@ incs = ['.',
defs = []
if env['WITH_BF_PYTHON']:
- incs += ' ' + env['BF_PYTHON_INC']
+ incs += Split(env['BF_PYTHON_INC'])
else:
defs.append('DISABLE_PYTHON')
diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt
index 857be4bd827..98a13c5bd48 100644
--- a/source/gameengine/Ketsji/CMakeLists.txt
+++ b/source/gameengine/Ketsji/CMakeLists.txt
@@ -61,6 +61,8 @@ SET(INC
../../../extern/glew/include
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
IF(WITH_SDL)
SET(INC ${INC} ${SDL_INCLUDE_DIR})
ELSE(WITH_SDL)
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
index fa7a674c250..95283dcce50 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
@@ -55,6 +55,10 @@ public:
virtual bool Update();
virtual CValue* GetReplica();
+ virtual void Replace_NetworkScene(NG_NetworkScene *val)
+ {
+ m_networkscene= val;
+ };
/* ------------------------------------------------------------ */
/* Python interface ------------------------------------------- */
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
index 3a8fe760bb9..90ba5db15ef 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
@@ -66,6 +66,11 @@ public:
virtual void Init();
void EndFrame();
+ virtual void Replace_NetworkScene(NG_NetworkScene *val)
+ {
+ m_NetworkScene= val;
+ };
+
#ifndef DISABLE_PYTHON
/* ------------------------------------------------------------- */
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index f5086ca89ac..bab7c54a310 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -58,8 +58,7 @@ KX_BlenderMaterial::KX_BlenderMaterial()
void KX_BlenderMaterial::Initialize(
KX_Scene *scene,
- BL_Material *data,
- bool skin)
+ BL_Material *data)
{
RAS_IPolyMaterial::Initialize(
data->texname[0],
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index 0946cd320c5..c5f5e23c6e7 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -19,6 +19,9 @@
#include "MEM_guardedalloc.h"
#endif
+#include "SCA_IScene.h" /* only for Replace_IScene */
+#include "KX_Scene.h"
+
struct MTFace;
class KX_Scene;
@@ -30,8 +33,7 @@ public:
KX_BlenderMaterial();
void Initialize(
class KX_Scene* scene,
- BL_Material* mat,
- bool skin
+ BL_Material* mat
);
virtual ~KX_BlenderMaterial();
@@ -68,6 +70,7 @@ public:
TCachingInfo& cachingInfo
)const;
+ Material* GetBlenderMaterial() const;
MTFace* GetMTFace(void) const;
unsigned int* GetMCol(void) const;
BL_Texture * getTex (unsigned int idx) {
@@ -83,6 +86,11 @@ public:
MT_Scalar ref, MT_Scalar emit, MT_Scalar alpha
);
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ mScene= static_cast<KX_Scene *>(val);
+ };
+
#ifndef DISABLE_PYTHON
// --------------------------------
virtual PyObject* py_repr(void) { return PyUnicode_FromString(mMaterial->matname.ReadPtr()); }
@@ -119,7 +127,6 @@ private:
bool UsesLighting(RAS_IRasterizer *rasty) const;
void GetMaterialRGBAColor(unsigned char *rgba) const;
- Material* GetBlenderMaterial() const;
Scene* GetBlenderScene() const;
void ReleaseMaterial();
diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
index 04e82d21cf4..bae32c74d1a 100644
--- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
+++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
@@ -32,12 +32,12 @@
#include "MT_assert.h"
+#include "KX_SoftBodyDeformer.h"
#include "KX_ConvertPhysicsObject.h"
#include "BL_DeformableGameObject.h"
#include "RAS_MeshObject.h"
#include "KX_Scene.h"
#include "SYS_System.h"
-#include "BL_SkinMeshObject.h"
#include "BulletSoftBody/btSoftBody.h"
#include "PHY_Pro.h" //todo cleanup
@@ -79,126 +79,6 @@ extern "C"{
#endif //WIN32
-
- class KX_SoftBodyDeformer : public RAS_Deformer
- {
- class RAS_MeshObject* m_pMeshObject;
- class BL_DeformableGameObject* m_gameobj;
-
- public:
- KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj)
- :m_pMeshObject(pMeshObject),
- m_gameobj(gameobj)
- {
- //printf("KX_SoftBodyDeformer\n");
- };
-
- virtual ~KX_SoftBodyDeformer()
- {
- //printf("~KX_SoftBodyDeformer\n");
- };
- virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
- {
- void **h_obj = (*map)[m_gameobj];
-
- if (h_obj) {
- m_gameobj = (BL_DeformableGameObject*)(*h_obj);
- m_pMeshObject = m_gameobj->GetMesh(0);
- } else {
- m_gameobj = NULL;
- m_pMeshObject = NULL;
- }
- }
- virtual bool Apply(class RAS_IPolyMaterial *polymat)
- {
- KX_BulletPhysicsController* ctrl = (KX_BulletPhysicsController*) m_gameobj->GetPhysicsController();
- if (!ctrl)
- return false;
-
- btSoftBody* softBody= ctrl->GetSoftBody();
- if (!softBody)
- return false;
-
- //printf("apply\n");
- RAS_MeshSlot::iterator it;
- RAS_MeshMaterial *mmat;
- RAS_MeshSlot *slot;
- size_t i;
-
- // update the vertex in m_transverts
- Update();
-
-
-
- // The vertex cache can only be updated for this deformer:
- // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object)
- // share the same mesh (=the same cache). As the rendering is done per polymaterial
- // cycling through the objects, the entire mesh cache cannot be updated in one shot.
- mmat = m_pMeshObject->GetMeshMaterial(polymat);
- if(!mmat->m_slots[(void*)m_gameobj])
- return true;
-
- slot = *mmat->m_slots[(void*)m_gameobj];
-
- // for each array
- for(slot->begin(it); !slot->end(it); slot->next(it))
- {
- btSoftBody::tNodeArray& nodes(softBody->m_nodes);
-
- int index = 0;
- for(i=it.startvertex; i<it.endvertex; i++,index++) {
- RAS_TexVert& v = it.vertex[i];
- btAssert(v.getSoftBodyIndex() >= 0);
-
- MT_Point3 pt (
- nodes[v.getSoftBodyIndex()].m_x.getX(),
- nodes[v.getSoftBodyIndex()].m_x.getY(),
- nodes[v.getSoftBodyIndex()].m_x.getZ());
- v.SetXYZ(pt);
-
- MT_Vector3 normal (
- nodes[v.getSoftBodyIndex()].m_n.getX(),
- nodes[v.getSoftBodyIndex()].m_n.getY(),
- nodes[v.getSoftBodyIndex()].m_n.getZ());
- v.SetNormal(normal);
-
- }
- }
- return true;
- }
- virtual bool Update(void)
- {
- //printf("update\n");
- m_bDynamic = true;
- return true;//??
- }
- virtual bool UpdateBuckets(void)
- {
- // this is to update the mesh slots outside the rasterizer,
- // no need to do it for this deformer, it's done in any case in Apply()
- return false;
- }
-
- virtual RAS_Deformer *GetReplica()
- {
- KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this);
- deformer->ProcessReplica();
- return deformer;
- }
- virtual void ProcessReplica()
- {
- // we have two pointers to deal with but we cannot do it now, will be done in Relink
- m_bDynamic = false;
- }
- virtual bool SkipVertexTransform()
- {
- return true;
- }
-
- protected:
- //class RAS_MeshObject *m_pMesh;
- };
-
// forward declarations
@@ -608,7 +488,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
physicscontroller->SetObject(gameobj->GetSGNode());
-
+#if 0
///test for soft bodies
if (objprop->m_softbody && physicscontroller)
{
@@ -620,6 +500,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
gameobj->SetDeformer(softbodyDeformer);
}
}
+#endif
}
@@ -651,7 +532,7 @@ bool KX_ReInstanceBulletShapeFromMesh(KX_GameObject *gameobj, KX_GameObject *fro
shapeInfo = spc->GetShapeInfo();
- if(shapeInfo->m_shapeType != PHY_SHAPE_MESH || spc->GetSoftBody())
+ if(shapeInfo->m_shapeType != PHY_SHAPE_MESH/* || spc->GetSoftBody()*/)
return false;
spc->DeleteControllerShape();
diff --git a/source/gameengine/Ketsji/KX_Dome.cpp b/source/gameengine/Ketsji/KX_Dome.cpp
index c0d7b639077..b62593b7911 100644
--- a/source/gameengine/Ketsji/KX_Dome.cpp
+++ b/source/gameengine/Ketsji/KX_Dome.cpp
@@ -33,7 +33,7 @@ Developed as part of a Research and Development project for SAT - La Soci�t�
#include "DNA_scene_types.h"
#include "RAS_CameraData.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "GL/glew.h"
diff --git a/source/gameengine/Ketsji/KX_GameActuator.cpp b/source/gameengine/Ketsji/KX_GameActuator.cpp
index bc0f875bca6..d6e2a623007 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.cpp
+++ b/source/gameengine/Ketsji/KX_GameActuator.cpp
@@ -51,7 +51,7 @@ KX_GameActuator::KX_GameActuator(SCA_IObject *gameobj,
int mode,
const STR_String& filename,
const STR_String& loadinganimationname,
- KX_Scene* scene,
+ SCA_IScene* scene,
KX_KetsjiEngine* ketsjiengine)
: SCA_IActuator(gameobj, KX_ACT_GAME)
{
diff --git a/source/gameengine/Ketsji/KX_GameActuator.h b/source/gameengine/Ketsji/KX_GameActuator.h
index 37d09a5a9fb..4880d476e36 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.h
+++ b/source/gameengine/Ketsji/KX_GameActuator.h
@@ -35,6 +35,9 @@
#include "SCA_IActuator.h"
+#include "SCA_IScene.h" /* Replace_IScene only */
+#include "KX_Scene.h" /* Replace_IScene only */
+
class KX_GameActuator : public SCA_IActuator
{
Py_Header;
@@ -43,7 +46,7 @@ protected:
bool m_restart;
STR_String m_filename;
STR_String m_loadinganimationname;
- class KX_Scene* m_scene;
+ class SCA_IScene* m_scene;
class KX_KetsjiEngine* m_ketsjiengine;
public:
@@ -64,7 +67,7 @@ protected:
int mode,
const STR_String& filename,
const STR_String& loadinganimationname,
- KX_Scene* scene,
+ SCA_IScene* scene,
KX_KetsjiEngine* ketsjiEngine);
virtual ~KX_GameActuator();
@@ -72,6 +75,11 @@ protected:
virtual bool Update();
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_scene= val;
+ };
+
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index d516d3e03ff..d18e11d3ca5 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -79,7 +79,7 @@ typedef unsigned long uint_ptr;
#include "KX_SG_NodeRelationships.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
static MT_Point3 dummy_point= MT_Point3(0.0, 0.0, 0.0);
static MT_Vector3 dummy_scaling = MT_Vector3(1.0, 1.0, 1.0);
@@ -474,9 +474,9 @@ void KX_GameObject::UpdateBlenderObjectMatrix(Object* blendobj)
const MT_Vector3& pos = NodeGetWorldPosition();
rot.getValue(blendobj->obmat[0]);
pos.getValue(blendobj->obmat[3]);
- VecMulf(blendobj->obmat[0], scale[0]);
- VecMulf(blendobj->obmat[1], scale[1]);
- VecMulf(blendobj->obmat[2], scale[2]);
+ mul_v3_fl(blendobj->obmat[0], scale[0]);
+ mul_v3_fl(blendobj->obmat[1], scale[1]);
+ mul_v3_fl(blendobj->obmat[2], scale[2]);
}
}
diff --git a/source/gameengine/Ketsji/KX_IPO_SGController.cpp b/source/gameengine/Ketsji/KX_IPO_SGController.cpp
index bd7e09d1dda..edd3a82b6b0 100644
--- a/source/gameengine/Ketsji/KX_IPO_SGController.cpp
+++ b/source/gameengine/Ketsji/KX_IPO_SGController.cpp
@@ -49,7 +49,7 @@ typedef unsigned long uint_ptr;
#include "KX_GameObject.h"
#include "KX_IPhysicsController.h"
#include "DNA_ipo_types.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
// All objects should start on frame 1! Will we ever need an object to
// start on another frame, the 1.0 should change.
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 9f4fa9a7c02..7f8a8e04e2e 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -1306,7 +1306,13 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_RENDER);
+ // Run any pre-drawing python callbacks
+ scene->RunDrawingCallbacks(scene->GetPreDrawCB());
+
scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
+
+ // Run any post-drawing python callbacks
+ scene->RunDrawingCallbacks(scene->GetPostDrawCB());
if (scene->GetPhysicsEnvironment())
scene->GetPhysicsEnvironment()->debugDrawWorld();
@@ -1606,15 +1612,12 @@ void KX_KetsjiEngine::RemoveScheduledScenes()
}
}
-
-
-KX_Scene* KX_KetsjiEngine::CreateScene(const STR_String& scenename)
+KX_Scene* KX_KetsjiEngine::CreateScene(Scene *scene)
{
- Scene *scene = m_sceneconverter->GetBlenderSceneForName(scenename);
KX_Scene* tmpscene = new KX_Scene(m_keyboarddevice,
m_mousedevice,
m_networkdevice,
- scenename,
+ scene->id.name+2,
scene);
m_sceneconverter->ConvertScene(tmpscene,
@@ -1624,7 +1627,11 @@ KX_Scene* KX_KetsjiEngine::CreateScene(const STR_String& scenename)
return tmpscene;
}
-
+KX_Scene* KX_KetsjiEngine::CreateScene(const STR_String& scenename)
+{
+ Scene *scene = m_sceneconverter->GetBlenderSceneForName(scenename);
+ return CreateScene(scene);
+}
void KX_KetsjiEngine::AddScheduledScenes()
{
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.h b/source/gameengine/Ketsji/KX_KetsjiEngine.h
index 74d683fbad6..b815ca0c716 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.h
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.h
@@ -380,6 +380,9 @@ public:
* @param b Blue component of the override color.
*/
void GetOverrideFrameColor(float& r, float& g, float& b) const;
+
+ KX_Scene* CreateScene(const STR_String& scenename);
+ KX_Scene* CreateScene(Scene *scene);
protected:
/**
@@ -399,7 +402,6 @@ protected:
void AddScheduledScenes(void);
void ReplaceScheduledScenes(void);
void PostProcessScene(class KX_Scene* scene);
- KX_Scene* CreateScene(const STR_String& scenename);
bool BeginFrame();
void ClearFrame();
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.h b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
index d4063ef1d16..e3f0e2b34f5 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.h
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
@@ -66,6 +66,13 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
replica->ProcessReplica();
return replica;
};
+
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_kxscene= static_cast<KX_Scene *>(val);
+ };
+
+
/**
* @attention Overrides default evaluate.
*/
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.h b/source/gameengine/Ketsji/KX_PolygonMaterial.h
index dba12acee7f..4f7d7f7888d 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.h
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.h
@@ -102,6 +102,11 @@ public:
void DefaultActivate(RAS_IRasterizer* rasty, TCachingInfo& cachingInfo) const;
virtual bool Activate(RAS_IRasterizer* rasty, TCachingInfo& cachingInfo) const;
+ Material *GetBlenderMaterial() const
+ {
+ return m_material;
+ }
+
/**
* Returns the Blender texture face structure that is used for this material.
* @return The material's texture face.
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index 1339200a740..ed422b81ec6 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -30,9 +30,6 @@
#include "GL/glew.h"
-// directory header for py function getBlendFileList
-#include <stdlib.h>
-
#ifdef WIN32
#pragma warning (disable : 4786)
#endif //WIN32
@@ -50,6 +47,16 @@ extern "C" {
#endif
#include "KX_PythonInit.h"
+
+// directory header for py function getBlendFileList
+#ifndef WIN32
+ #include <dirent.h>
+ #include <stdlib.h>
+#else
+ #include <io.h>
+ #include "BLI_winstuff.h"
+#endif
+
//python physics binding
#include "KX_PyConstraintBinding.h"
@@ -82,6 +89,8 @@ extern "C" {
#include "InputParser.h"
#include "KX_Scene.h"
+#include "NG_NetworkScene.h" //Needed for sendMessage()
+
#include "BL_Shader.h"
#include "KX_PyMath.h"
@@ -100,12 +109,16 @@ extern "C" {
#include "BKE_global.h"
#include "BLI_blenlib.h"
#include "GPU_material.h"
+#include "MEM_guardedalloc.h"
+
+/* for converting new scenes */
+#include "KX_BlenderSceneConverter.h"
+#include "KX_MeshProxy.h" /* for creating a new library of mesh objects */
+extern "C" {
+ #include "BLO_readfile.h"
+}
+
-#ifndef WIN32
- #include <dirent.h>
-#else
- #include "BLI_winstuff.h"
-#endif
#include "NG_NetworkScene.h" //Needed for sendMessage()
static void setSandbox(TPythonSecurityLevel level);
@@ -509,10 +522,16 @@ static PyObject* gPyGetSceneList(PyObject* self)
KX_Scene* scene = scenes->at(i);
PyList_SET_ITEM(list, i, scene->GetProxy());
}
-
+
return list;
}
+static PyObject *pyPrintStats(PyObject *,PyObject *,PyObject *)
+{
+ gp_KetsjiScene->GetSceneConverter()->PrintStats();
+ Py_RETURN_NONE;
+}
+
static PyObject *pyPrintExt(PyObject *,PyObject *,PyObject *)
{
#define pprint(x) std::cout << x << std::endl;
@@ -584,6 +603,116 @@ static PyObject *pyPrintExt(PyObject *,PyObject *,PyObject *)
Py_RETURN_NONE;
}
+static PyObject *gLibLoad(PyObject*, PyObject* args)
+{
+ KX_Scene *kx_scene= gp_KetsjiScene;
+ char *path;
+ char *group;
+ char *err_str= NULL;
+
+ if (!PyArg_ParseTuple(args,"ss:LibLoad",&path, &group))
+ return NULL;
+
+ if(kx_scene->GetSceneConverter()->LinkBlendFile(path, group, kx_scene, &err_str)) {
+ Py_RETURN_TRUE;
+ }
+
+ if(err_str) {
+ PyErr_SetString(PyExc_ValueError, err_str);
+ return NULL;
+ }
+
+ Py_RETURN_FALSE;
+}
+
+static PyObject *gLibNew(PyObject*, PyObject* args)
+{
+ KX_Scene *kx_scene= gp_KetsjiScene;
+ char *path;
+ char *group;
+ char *name;
+ PyObject *names;
+ int idcode;
+
+ if (!PyArg_ParseTuple(args,"ssO!:LibNew",&path, &group, &PyList_Type, &names))
+ return NULL;
+
+ if(kx_scene->GetSceneConverter()->GetMainDynamicPath(path))
+ {
+ PyErr_SetString(PyExc_KeyError, "the name of the path given exists");
+ return NULL;
+ }
+
+ idcode= BLO_idcode_from_name(group);
+ if(idcode==0) {
+ PyErr_Format(PyExc_ValueError, "invalid group given \"%s\"", group);
+ return NULL;
+ }
+
+ Main *maggie= (Main *)MEM_callocN( sizeof(Main), "BgeMain");
+ kx_scene->GetSceneConverter()->GetMainDynamic().push_back(maggie);
+ strncpy(maggie->name, path, sizeof(maggie->name)-1);
+
+ /* Copy the object into main */
+ if(idcode==ID_ME) {
+ PyObject *ret= PyList_New(0);
+ PyObject *item;
+ for(int i= 0; i < PyList_GET_SIZE(names); i++) {
+ name= _PyUnicode_AsString(PyList_GET_ITEM(names, i));
+ if(name) {
+ RAS_MeshObject *meshobj= kx_scene->GetSceneConverter()->ConvertMeshSpecial(kx_scene, maggie, name);
+ if(meshobj) {
+ KX_MeshProxy* meshproxy = new KX_MeshProxy(meshobj);
+ item= meshproxy->NewProxy(true);
+ PyList_Append(ret, item);
+ Py_DECREF(item);
+ }
+ }
+ else {
+ PyErr_Clear(); /* wasnt a string, ignore for now */
+ }
+ }
+
+ return ret;
+ }
+ else {
+ PyErr_Format(PyExc_ValueError, "only \"Mesh\" group currently supported");
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+static PyObject *gLibFree(PyObject*, PyObject* args)
+{
+ KX_Scene *kx_scene= gp_KetsjiScene;
+ char *path;
+
+ if (!PyArg_ParseTuple(args,"s:LibFree",&path))
+ return NULL;
+
+ if (kx_scene->GetSceneConverter()->FreeBlendFile(path))
+ {
+ Py_RETURN_TRUE;
+ }
+ else {
+ Py_RETURN_FALSE;
+ }
+}
+
+static PyObject *gLibList(PyObject*, PyObject* args)
+{
+ vector<Main*> &dynMaggie = gp_KetsjiScene->GetSceneConverter()->GetMainDynamic();
+ int i= 0;
+ PyObject *list= PyList_New(dynMaggie.size());
+
+ for (vector<Main*>::iterator it=dynMaggie.begin(); !(it==dynMaggie.end()); it++)
+ {
+ PyList_SET_ITEM(list, i++, PyUnicode_FromString( (*it)->name) );
+ }
+
+ return list;
+}
static struct PyMethodDef game_methods[] = {
{"expandPath", (PyCFunction)gPyExpandPath, METH_VARARGS, (const char *)gPyExpandPath_doc},
@@ -616,6 +745,14 @@ static struct PyMethodDef game_methods[] = {
{"getAverageFrameRate", (PyCFunction) gPyGetAverageFrameRate, METH_NOARGS, (const char *)"Gets the estimated average frame rate"},
{"getBlendFileList", (PyCFunction)gPyGetBlendFileList, METH_VARARGS, (const char *)"Gets a list of blend files in the same directory as the current blend file"},
{"PrintGLInfo", (PyCFunction)pyPrintExt, METH_NOARGS, (const char *)"Prints GL Extension Info"},
+ {"PrintMemInfo", (PyCFunction)pyPrintStats, METH_NOARGS, (const char *)"Print engine stastics"},
+
+ /* library functions */
+ {"LibLoad", (PyCFunction)gLibLoad, METH_VARARGS, (const char *)""},
+ {"LibNew", (PyCFunction)gLibNew, METH_VARARGS, (const char *)""},
+ {"LibFree", (PyCFunction)gLibFree, METH_VARARGS, (const char *)""},
+ {"LibList", (PyCFunction)gLibList, METH_VARARGS, (const char *)""},
+
{NULL, (PyCFunction) NULL, 0, NULL }
};
@@ -1471,7 +1608,7 @@ PyObject *KXpy_import(PyObject *self, PyObject *args)
}
/* Import blender texts as python modules */
- m= bpy_text_import(name, &found);
+ m= bpy_text_import_name(name, &found);
if (m)
return m;
diff --git a/source/gameengine/Ketsji/KX_RaySensor.h b/source/gameengine/Ketsji/KX_RaySensor.h
index 39b447b5657..ea7dd544cb1 100644
--- a/source/gameengine/Ketsji/KX_RaySensor.h
+++ b/source/gameengine/Ketsji/KX_RaySensor.h
@@ -34,6 +34,8 @@
#include "SCA_ISensor.h"
#include "MT_Point3.h"
+#include "SCA_IScene.h" /* only for scene replace */
+#include "KX_Scene.h" /* only for scene replace */
struct KX_ClientObjectInfo;
class KX_RayCast;
@@ -73,6 +75,10 @@ public:
bool RayHit(KX_ClientObjectInfo* client, KX_RayCast* result, void * const data);
bool NeedRayCast(KX_ClientObjectInfo* client);
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_scene= static_cast<KX_Scene *>(val);
+ }
//Python Interface
enum RayAxis {
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
index 4cccc406b58..53a71e3c6ea 100644
--- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
@@ -43,6 +43,8 @@
#include "MT_Vector3.h"
+
+
class SCA_IScene;
class KX_SCA_AddObjectActuator : public SCA_IActuator
@@ -100,6 +102,11 @@ public:
virtual void
ProcessReplica();
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_scene= val;
+ };
+
virtual bool
UnlinkObject(SCA_IObject* clientobj);
diff --git a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
index 782a24b1ef1..b99f40be707 100644
--- a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
@@ -59,6 +59,11 @@ class KX_SCA_EndObjectActuator : public SCA_IActuator
virtual bool
Update();
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_scene= val;
+ };
+
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
index 47c823afa9f..5f62c603ac6 100644
--- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
@@ -80,6 +80,11 @@ class KX_SCA_ReplaceMeshActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_scene= val;
+ };
+
static PyObject* pyattr_get_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index c93ead74182..c8c5b33693b 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -53,7 +53,6 @@
#include "SCA_JoystickManager.h"
#include "RAS_MeshObject.h"
-#include "BL_SkinMeshObject.h"
#include "RAS_IRasterizer.h"
#include "RAS_BucketManager.h"
@@ -83,6 +82,7 @@
#include "BL_ModifierDeformer.h"
#include "BL_ShapeDeformer.h"
#include "BL_DeformableGameObject.h"
+#include "KX_SoftBodyDeformer.h"
// to get USE_BULLET!
#include "KX_ConvertPhysicsObject.h"
@@ -211,6 +211,8 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice,
#ifndef DISABLE_PYTHON
m_attr_dict = PyDict_New(); /* new ref */
+ m_draw_call_pre = NULL;
+ m_draw_call_post = NULL;
#endif
}
@@ -264,6 +266,9 @@ KX_Scene::~KX_Scene()
#ifndef DISABLE_PYTHON
PyDict_Clear(m_attr_dict);
Py_DECREF(m_attr_dict);
+
+ Py_XDECREF(m_draw_call_pre);
+ Py_XDECREF(m_draw_call_post);
#endif
}
@@ -273,6 +278,10 @@ RAS_BucketManager* KX_Scene::GetBucketManager()
}
+CListValue* KX_Scene::GetTempObjectList()
+{
+ return m_tempObjectList;
+}
CListValue* KX_Scene::GetObjectList()
{
@@ -280,7 +289,6 @@ CListValue* KX_Scene::GetObjectList()
}
-
CListValue* KX_Scene::GetRootParentList()
{
return m_parentlist;
@@ -398,6 +406,34 @@ bool KX_Scene::IsClearingZBuffer()
return m_isclearingZbuffer;
}
+void KX_Scene::RunDrawingCallbacks(PyObject* cb_list)
+{
+ int len;
+
+ if (cb_list && (len=PyList_GET_SIZE(cb_list)))
+ {
+ PyObject* args= PyTuple_New(0); // save python creating each call
+ PyObject* func;
+ PyObject* ret;
+
+ // Iterate the list and run the callbacks
+ for (int pos=0; pos < len; pos++)
+ {
+ func= PyList_GET_ITEM(cb_list, pos);
+ ret= PyObject_Call(func, args, NULL);
+ if (ret==NULL) {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
+ Py_DECREF(ret);
+ }
+ }
+
+ Py_DECREF(args);
+ }
+}
+
void KX_Scene::EnableZBufferClearing(bool isclearingZbuffer)
{
m_isclearingZbuffer = isclearingZbuffer;
@@ -1043,7 +1079,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
newobj->SetDeformer(NULL);
}
- if (mesh->IsDeformed())
+ if (mesh->GetMesh())
{
// we must create a new deformer but which one?
KX_GameObject* parentobj = newobj->GetParent();
@@ -1064,12 +1100,16 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
blendobj->parent->type == OB_ARMATURE &&
blendobj->partype==PARSKEL &&
blendmesh->dvert!=NULL; // mesh has vertex group
+ bool bHasSoftBody = (!parentobj && (blendobj->gameflag & OB_SOFT_BODY));
+
bool releaseParent = true;
if (oldblendobj==NULL) {
- std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl;
- bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false;
+ if (bHasModifier || bHasShapeKey || bHasDvert || bHasArmature) {
+ std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl;
+ bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false;
+ }
}
if (bHasModifier)
@@ -1081,7 +1121,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
newobj,
m_blenderScene,
oldblendobj, blendobj,
- static_cast<BL_SkinMeshObject*>(mesh),
+ mesh,
true,
static_cast<BL_ArmatureObject*>( parentobj )
);
@@ -1094,7 +1134,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
newobj,
m_blenderScene,
oldblendobj, blendobj,
- static_cast<BL_SkinMeshObject*>(mesh),
+ mesh,
false,
NULL
);
@@ -1109,7 +1149,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
shapeDeformer = new BL_ShapeDeformer(
newobj,
oldblendobj, blendobj,
- static_cast<BL_SkinMeshObject*>(mesh),
+ mesh,
true,
true,
static_cast<BL_ArmatureObject*>( parentobj )
@@ -1122,7 +1162,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
shapeDeformer = new BL_ShapeDeformer(
newobj,
oldblendobj, blendobj,
- static_cast<BL_SkinMeshObject*>(mesh),
+ mesh,
false,
true,
NULL
@@ -1135,7 +1175,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
BL_SkinDeformer* skinDeformer = new BL_SkinDeformer(
newobj,
oldblendobj, blendobj,
- static_cast<BL_SkinMeshObject*>(mesh),
+ mesh,
true,
true,
static_cast<BL_ArmatureObject*>( parentobj )
@@ -1146,10 +1186,15 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
else if (bHasDvert)
{
BL_MeshDeformer* meshdeformer = new BL_MeshDeformer(
- newobj, oldblendobj, static_cast<BL_SkinMeshObject*>(mesh)
+ newobj, oldblendobj, mesh
);
newobj->SetDeformer(meshdeformer);
}
+ else if (bHasSoftBody)
+ {
+ KX_SoftBodyDeformer *softdeformer = new KX_SoftBodyDeformer(mesh, newobj);
+ newobj->SetDeformer(softdeformer);
+ }
// release parent reference if its not being used
if( releaseParent && parentobj)
@@ -1588,10 +1633,10 @@ void KX_Scene::SetSceneConverter(class KX_BlenderSceneConverter* sceneConverter)
void KX_Scene::SetPhysicsEnvironment(class PHY_IPhysicsEnvironment* physEnv)
{
m_physicsEnvironment = physEnv;
-
- KX_TouchEventManager* touchmgr = new KX_TouchEventManager(m_logicmgr, physEnv);
- m_logicmgr->RegisterEventManager(touchmgr);
- return;
+ if(m_physicsEnvironment) {
+ KX_TouchEventManager* touchmgr = new KX_TouchEventManager(m_logicmgr, physEnv);
+ m_logicmgr->RegisterEventManager(touchmgr);
+ }
}
void KX_Scene::setSuspendedTime(double suspendedtime)
@@ -1613,6 +1658,182 @@ double KX_Scene::getSuspendedDelta()
#ifndef DISABLE_PYTHON
+
+#include "KX_BulletPhysicsController.h"
+
+static void MergeScene_LogicBrick(SCA_ILogicBrick* brick, KX_Scene *to)
+{
+ SCA_LogicManager *logicmgr= to->GetLogicManager();
+
+ brick->Replace_IScene(to);
+ brick->Replace_NetworkScene(to->GetNetworkScene());
+
+ SCA_ISensor *sensor= dynamic_cast<class SCA_ISensor *>(brick);
+ if(sensor) {
+ sensor->Replace_EventManager(logicmgr);
+ }
+
+ /* near sensors have physics controllers */
+ KX_TouchSensor *touch_sensor = dynamic_cast<class KX_TouchSensor *>(brick);
+ if(touch_sensor) {
+ touch_sensor->GetPhysicsController()->SetPhysicsEnvironment(to->GetPhysicsEnvironment());
+ }
+}
+
+#include "CcdGraphicController.h" // XXX ctrl->SetPhysicsEnvironment(to->GetPhysicsEnvironment());
+#include "CcdPhysicsEnvironment.h" // XXX ctrl->SetPhysicsEnvironment(to->GetPhysicsEnvironment());
+#include "KX_BulletPhysicsController.h"
+
+
+static void MergeScene_GameObject(KX_GameObject* gameobj, KX_Scene *to, KX_Scene *from)
+{
+ {
+ SCA_ActuatorList& actuators= gameobj->GetActuators();
+ SCA_ActuatorList::iterator ita;
+
+ for (ita = actuators.begin(); !(ita==actuators.end()); ++ita)
+ {
+ MergeScene_LogicBrick(*ita, to);
+ }
+ }
+
+
+ {
+ SCA_SensorList& sensors= gameobj->GetSensors();
+ SCA_SensorList::iterator its;
+
+ for (its = sensors.begin(); !(its==sensors.end()); ++its)
+ {
+ MergeScene_LogicBrick(*its, to);
+ }
+ }
+
+ {
+ SCA_ControllerList& controllers= gameobj->GetControllers();
+ SCA_ControllerList::iterator itc;
+
+ for (itc = controllers.begin(); !(itc==controllers.end()); ++itc)
+ {
+ SCA_IController *cont= *itc;
+ MergeScene_LogicBrick(cont, to);
+
+ vector<SCA_ISensor*> linkedsensors = cont->GetLinkedSensors();
+ vector<SCA_IActuator*> linkedactuators = cont->GetLinkedActuators();
+
+ for (vector<SCA_IActuator*>::iterator ita = linkedactuators.begin();!(ita==linkedactuators.end());++ita) {
+ MergeScene_LogicBrick(*ita, to);
+ }
+
+ for (vector<SCA_ISensor*>::iterator its = linkedsensors.begin();!(its==linkedsensors.end());++its) {
+ MergeScene_LogicBrick(*its, to);
+ }
+ }
+ }
+
+ /* graphics controller */
+ PHY_IGraphicController *ctrl = gameobj->GetGraphicController();
+ if(ctrl) {
+ /* SHOULD update the m_cullingTree */
+ ctrl->SetPhysicsEnvironment(to->GetPhysicsEnvironment());
+ }
+
+ /* SG_Node can hold a scene reference */
+ SG_Node *sg= gameobj->GetSGNode();
+ if(sg) {
+ if(sg->GetSGClientInfo() == from) {
+ sg->SetSGClientInfo(to);
+ }
+
+ SGControllerList::iterator contit;
+ SGControllerList& controllers = sg->GetSGControllerList();
+ for (contit = controllers.begin();contit!=controllers.end();++contit)
+ {
+ KX_BulletPhysicsController *phys_ctrl= dynamic_cast<KX_BulletPhysicsController *>(*contit);
+ if (phys_ctrl)
+ phys_ctrl->SetPhysicsEnvironment(to->GetPhysicsEnvironment());
+ }
+ }
+}
+
+bool KX_Scene::MergeScene(KX_Scene *other)
+{
+ CcdPhysicsEnvironment *env= dynamic_cast<CcdPhysicsEnvironment *>(this->GetPhysicsEnvironment());
+ CcdPhysicsEnvironment *env_other= dynamic_cast<CcdPhysicsEnvironment *>(other->GetPhysicsEnvironment());
+
+ if((env==NULL) != (env_other==NULL)) /* TODO - even when both scenes have NONE physics, the other is loaded with bullet enabled, ??? */
+ {
+ printf("KX_Scene::MergeScene: physics scenes type differ, aborting\n");
+ printf("\tsource %d, terget %d\n", (int)(env!=NULL), (int)(env_other!=NULL));
+ return false;
+ }
+
+ if(GetSceneConverter() != other->GetSceneConverter()) {
+ printf("KX_Scene::MergeScene: converters differ, aborting\n");
+ return false;
+ }
+
+
+ GetBucketManager()->MergeBucketManager(other->GetBucketManager());
+
+ /* move materials across, assume they both use the same scene-converters */
+ GetSceneConverter()->MergeScene(this, other);
+
+ /* active + inactive == all ??? - lets hope so */
+ for (int i = 0; i < other->GetObjectList()->GetCount(); i++)
+ {
+ KX_GameObject* gameobj = (KX_GameObject*)other->GetObjectList()->GetValue(i);
+ MergeScene_GameObject(gameobj, this, other);
+
+ gameobj->UpdateBuckets(false); /* only for active objects */
+ }
+
+ for (int i = 0; i < other->GetInactiveList()->GetCount(); i++)
+ {
+ KX_GameObject* gameobj = (KX_GameObject*)other->GetInactiveList()->GetValue(i);
+ MergeScene_GameObject(gameobj, this, other);
+ }
+
+ GetTempObjectList()->MergeList(other->GetTempObjectList());
+ other->GetTempObjectList()->ReleaseAndRemoveAll();
+
+ GetObjectList()->MergeList(other->GetObjectList());
+ other->GetObjectList()->ReleaseAndRemoveAll();
+
+ GetInactiveList()->MergeList(other->GetInactiveList());
+ other->GetInactiveList()->ReleaseAndRemoveAll();
+
+ GetRootParentList()->MergeList(other->GetRootParentList());
+ other->GetRootParentList()->ReleaseAndRemoveAll();
+
+ GetLightList()->MergeList(other->GetLightList());
+ other->GetLightList()->ReleaseAndRemoveAll();
+
+ if(env) /* bullet scene? - dummy scenes dont need touching */
+ env->MergeEnvironment(env_other);
+
+ /* merge logic */
+ {
+ SCA_LogicManager *logicmgr= GetLogicManager();
+ SCA_LogicManager *logicmgr_other= other->GetLogicManager();
+
+ vector<class SCA_EventManager*>evtmgrs= logicmgr->GetEventManagers();
+ //vector<class SCA_EventManager*>evtmgrs_others= logicmgr_other->GetEventManagers();
+
+ //SCA_EventManager *evtmgr;
+ SCA_EventManager *evtmgr_other;
+
+ for(int i= 0; i < evtmgrs.size(); i++) {
+ evtmgr_other= logicmgr_other->FindEventManager(evtmgrs[i]->GetType());
+
+ if(evtmgr_other) /* unlikely but possible one scene has a joystick and not the other */
+ evtmgr_other->Replace_LogicManager(logicmgr);
+
+ /* when merging objects sensors are moved across into the new manager, dont need to do this here */
+ }
+ }
+ return true;
+}
+
//----------------------------------------------------------------------------
//Python
@@ -1818,6 +2039,61 @@ int KX_Scene::pyattr_set_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *a
return PY_SET_ATTR_SUCCESS;
}
+PyObject* KX_Scene::pyattr_get_drawing_callback_pre(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self = static_cast<KX_Scene*>(self_v);
+
+ if(self->m_draw_call_pre==NULL)
+ self->m_draw_call_pre= PyList_New(0);
+ else
+ Py_INCREF(self->m_draw_call_pre);
+ return self->m_draw_call_pre;
+}
+
+PyObject* KX_Scene::pyattr_get_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self = static_cast<KX_Scene*>(self_v);
+
+ if(self->m_draw_call_post==NULL)
+ self->m_draw_call_post= PyList_New(0);
+ else
+ Py_INCREF(self->m_draw_call_post);
+ return self->m_draw_call_post;
+}
+
+int KX_Scene::pyattr_set_drawing_callback_pre(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Scene* self = static_cast<KX_Scene*>(self_v);
+
+ if (!PyList_CheckExact(value))
+ {
+ PyErr_SetString(PyExc_ValueError, "Expected a list");
+ return PY_SET_ATTR_FAIL;
+ }
+ Py_XDECREF(self->m_draw_call_pre);
+
+ Py_INCREF(value);
+ self->m_draw_call_pre = value;
+
+ return PY_SET_ATTR_SUCCESS;
+}
+
+int KX_Scene::pyattr_set_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Scene* self = static_cast<KX_Scene*>(self_v);
+
+ if (!PyList_CheckExact(value))
+ {
+ PyErr_SetString(PyExc_ValueError, "Expected a list");
+ return PY_SET_ATTR_FAIL;
+ }
+ Py_XDECREF(self->m_draw_call_post);
+
+ Py_INCREF(value);
+ self->m_draw_call_post = value;
+
+ return PY_SET_ATTR_SUCCESS;
+}
PyAttributeDef KX_Scene::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("name", KX_Scene, pyattr_get_name),
@@ -1826,6 +2102,8 @@ PyAttributeDef KX_Scene::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("cameras", KX_Scene, pyattr_get_cameras),
KX_PYATTRIBUTE_RO_FUNCTION("lights", KX_Scene, pyattr_get_lights),
KX_PYATTRIBUTE_RW_FUNCTION("active_camera", KX_Scene, pyattr_get_active_camera, pyattr_set_active_camera),
+ KX_PYATTRIBUTE_RW_FUNCTION("pre_draw", KX_Scene, pyattr_get_drawing_callback_pre, pyattr_set_drawing_callback_pre),
+ KX_PYATTRIBUTE_RW_FUNCTION("post_draw", KX_Scene, pyattr_get_drawing_callback_post, pyattr_set_drawing_callback_post),
KX_PYATTRIBUTE_BOOL_RO("suspended", KX_Scene, m_suspend),
KX_PYATTRIBUTE_BOOL_RO("activity_culling", KX_Scene, m_activity_culling),
KX_PYATTRIBUTE_FLOAT_RW("activity_culling_radius", 0.5f, FLT_MAX, KX_Scene, m_activity_box_radius),
diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h
index da72ba2ec98..602e919b58d 100644
--- a/source/gameengine/Ketsji/KX_Scene.h
+++ b/source/gameengine/Ketsji/KX_Scene.h
@@ -73,7 +73,6 @@ class KX_Camera;
class KX_GameObject;
class KX_LightObject;
class RAS_BucketManager;
-class RAS_BucketManager;
class RAS_MaterialBucket;
class RAS_IPolyMaterial;
class RAS_IRasterizer;
@@ -83,6 +82,9 @@ class btCollisionShape;
class KX_BlenderSceneConverter;
struct KX_ClientObjectInfo;
+/* for ID freeing */
+#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->flag & LIB_DOIT))
+
/**
* The KX_Scene holds all data for an independent scene. It relates
* KX_Objects to the specific objects in the modules.
@@ -93,6 +95,8 @@ class KX_Scene : public PyObjectPlus, public SCA_IScene
#ifndef DISABLE_PYTHON
PyObject* m_attr_dict;
+ PyObject* m_draw_call_pre;
+ PyObject* m_draw_call_post;
#endif
struct CullingInfo {
@@ -284,6 +288,12 @@ public:
void RenderBuckets(const MT_Transform& cameratransform,
RAS_IRasterizer* rasty,
RAS_IRenderTools* rendertools);
+
+ /**
+ * Run the registered python drawing functions.
+ */
+ void RunDrawingCallbacks(PyObject* cb_list);
+
/**
* Update all transforms according to the scenegraph.
*/
@@ -321,6 +331,10 @@ public:
);
CListValue*
+ GetTempObjectList(
+ );
+
+ CListValue*
GetObjectList(
);
@@ -471,6 +485,7 @@ public:
KX_Camera* GetpCamera();
NG_NetworkDeviceInterface* GetNetworkDeviceInterface();
NG_NetworkScene* GetNetworkScene();
+ KX_BlenderSceneConverter *GetSceneConverter() { return m_sceneConverter; }
/**
* Replicate the logic bricks associated to this object.
@@ -536,6 +551,10 @@ public:
static PyObject* pyattr_get_cameras(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_active_camera(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_drawing_callback_pre(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_drawing_callback_pre(void *selv_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_drawing_callback_post(void *selv_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
virtual PyObject* py_repr(void) { return PyUnicode_FromString(GetName().ReadPtr()); }
@@ -543,6 +562,8 @@ public:
static PyMappingMethods Mapping;
static PySequenceMethods Sequence;
+ PyObject* GetPreDrawCB() { return m_draw_call_pre; };
+ PyObject* GetPostDrawCB() { return m_draw_call_post; };
#endif
/**
@@ -567,6 +588,15 @@ public:
* Returns the Blender scene this was made from
*/
struct Scene *GetBlenderScene() { return m_blenderScene; }
+
+ bool MergeScene(KX_Scene *other);
+
+
+ //void PrintStats(int verbose_level) {
+ // m_bucketmanager->PrintStats(verbose_level)
+ //}
+
+
};
typedef std::vector<KX_Scene*> KX_SceneList;
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.h b/source/gameengine/Ketsji/KX_SceneActuator.h
index e11a94798c9..4afa8926970 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.h
+++ b/source/gameengine/Ketsji/KX_SceneActuator.h
@@ -34,6 +34,8 @@
#define __KX_SCENEACTUATOR
#include "SCA_IActuator.h"
+#include "SCA_IScene.h" /* Replace_IScene only */
+#include "KX_Scene.h" /* Replace_IScene only */
class KX_SceneActuator : public SCA_IActuator
{
@@ -89,6 +91,11 @@ class KX_SceneActuator : public SCA_IActuator
#ifndef DISABLE_PYTHON
+ virtual void Replace_IScene(SCA_IScene *val)
+ {
+ m_scene= static_cast<KX_Scene *>(val);
+ };
+
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
diff --git a/source/gameengine/Ketsji/KX_TouchEventManager.h b/source/gameengine/Ketsji/KX_TouchEventManager.h
index e6414a2e285..c3da11eb1e2 100644
--- a/source/gameengine/Ketsji/KX_TouchEventManager.h
+++ b/source/gameengine/Ketsji/KX_TouchEventManager.h
@@ -74,6 +74,7 @@ public:
virtual void RemoveSensor(SCA_ISensor* sensor);
SCA_LogicManager* GetLogicManager() { return m_logicmgr;}
PHY_IPhysicsEnvironment *GetPhysicsEnvironment() { return m_physEnv; }
+ virtual void Replace_PhysicsScene(PHY_IPhysicsEnvironment* env) { m_physEnv= env; }
#ifdef WITH_CXX_GUARDEDALLOC
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.h b/source/gameengine/Ketsji/KX_TouchSensor.h
index ae5b68da845..248ce170d71 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.h
+++ b/source/gameengine/Ketsji/KX_TouchSensor.h
@@ -110,10 +110,12 @@ public:
if (m_invert) result = !result;
return result;
}
-
virtual void EndFrame();
+ class PHY_IPhysicsController* GetPhysicsController() { return m_physCtrl; }
+
+
// todo: put some info for collision maybe
#ifndef DISABLE_PYTHON
diff --git a/source/gameengine/Ketsji/Makefile b/source/gameengine/Ketsji/Makefile
index 0e9e657cc16..4ecd23fc1a2 100644
--- a/source/gameengine/Ketsji/Makefile
+++ b/source/gameengine/Ketsji/Makefile
@@ -59,6 +59,7 @@ CPPFLAGS += -I.
CPPFLAGS += -I../Converter
CPPFLAGS += -I../../blender/blenkernel
CPPFLAGS += -I../../blender/blenlib
+CPPFLAGS += -I../../blender/blenloader
CPPFLAGS += -I../../blender/makesdna
CPPFLAGS += -I../../blender/imbuf
CPPFLAGS += -I../../blender/gpu
diff --git a/source/gameengine/Ketsji/SConscript b/source/gameengine/Ketsji/SConscript
index 69d146776db..86afa930d09 100644
--- a/source/gameengine/Ketsji/SConscript
+++ b/source/gameengine/Ketsji/SConscript
@@ -4,7 +4,7 @@ import sys
Import ('env')
sources = env.Glob('*.cpp')
-defs = []
+defs = [ 'GLEW_STATIC' ]
incs = '. #source/blender/python/generic' # Only for Mathutils! and bpy_internal_import.h, be very careful
diff --git a/source/gameengine/Physics/Bullet/CcdGraphicController.cpp b/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
index 2dbbb7fa4a0..73ac789edf7 100644
--- a/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
@@ -124,6 +124,21 @@ PHY_IGraphicController* CcdGraphicController::GetReplica(class PHY_IMotionState*
return replica;
}
+void CcdGraphicController::SetPhysicsEnvironment(class PHY_IPhysicsEnvironment* env)
+{
+ CcdPhysicsEnvironment* phyEnv = static_cast<CcdPhysicsEnvironment*>(env);
+ /* Updates the m_phyEnv's m_cullingTree & m_cullingCache */
+ if(getBroadphaseHandle()) {
+ /* insert into the new physics scene */
+ Activate(false);
+ m_phyEnv= phyEnv;
+ Activate(true);
+ }
+ else {
+ m_phyEnv= phyEnv;
+ }
+}
+
void CcdGraphicController::Activate(bool active)
{
if (active)
diff --git a/source/gameengine/Physics/Bullet/CcdGraphicController.h b/source/gameengine/Physics/Bullet/CcdGraphicController.h
index 99885eb99ee..07cf6d940cb 100644
--- a/source/gameengine/Physics/Bullet/CcdGraphicController.h
+++ b/source/gameengine/Physics/Bullet/CcdGraphicController.h
@@ -47,6 +47,8 @@ public:
virtual void setBroadphaseHandle(btBroadphaseProxy* handle) { m_handle = handle; }
virtual btBroadphaseProxy* getBroadphaseHandle() { return m_handle; }
+ virtual void SetPhysicsEnvironment(class PHY_IPhysicsEnvironment* env);
+
////////////////////////////////////
// PHY_IGraphicController interface
////////////////////////////////////
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
index b7d0dd2f6e7..98e67afdd44 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
@@ -161,338 +161,265 @@ btSoftBody* CcdPhysicsController::GetSoftBody()
#include "BulletSoftBody/btSoftBodyHelpers.h"
-
-void CcdPhysicsController::CreateRigidbody()
+bool CcdPhysicsController::CreateSoftbody()
{
-
- //btTransform trans = GetTransformFromMotionState(m_MotionState);
- m_bulletMotionState = new BlenderBulletMotionState(m_MotionState);
-
- ///either create a btCollisionObject, btRigidBody or btSoftBody
-
- //create a collision object
-
int shapeType = m_cci.m_collisionShape ? m_cci.m_collisionShape->getShapeType() : 0;
//disable soft body until first sneak preview is ready
- if (m_cci.m_bSoft && m_cci.m_collisionShape &&
- (shapeType == CONVEX_HULL_SHAPE_PROXYTYPE)|
- (shapeType == TRIANGLE_MESH_SHAPE_PROXYTYPE) |
- (shapeType == SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE))
+ if (!m_cci.m_bSoft || !m_cci.m_collisionShape ||
+ (shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&&
+ (shapeType != TRIANGLE_MESH_SHAPE_PROXYTYPE) &&
+ (shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE))
{
- btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor);
- rbci.m_linearDamping = m_cci.m_linearDamping;
- rbci.m_angularDamping = m_cci.m_angularDamping;
- rbci.m_friction = m_cci.m_friction;
- rbci.m_restitution = m_cci.m_restitution;
-
-
-
-
-
-
- btVector3 p(0,0,0);// = getOrigin();
-
-
- btSoftRigidDynamicsWorld* softDynaWorld = (btSoftRigidDynamicsWorld*)m_cci.m_physicsEnv->getDynamicsWorld();
-
- PHY__Vector3 grav;
- grav[0] = softDynaWorld->getGravity().getX();
- grav[1] = softDynaWorld->getGravity().getY();
- grav[2] = softDynaWorld->getGravity().getZ();
- softDynaWorld->getWorldInfo().m_gravity.setValue(grav[0],grav[1],grav[2]); //??
+ return false;
+ }
+ btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor);
+ rbci.m_linearDamping = m_cci.m_linearDamping;
+ rbci.m_angularDamping = m_cci.m_angularDamping;
+ rbci.m_friction = m_cci.m_friction;
+ rbci.m_restitution = m_cci.m_restitution;
- //btSoftBody* psb=btSoftBodyHelpers::CreateRope(sbi, btVector3(-10,0,i*0.25),btVector3(10,0,i*0.25), 16,1+2);
-
- btSoftBody* psb = 0;
-
- if (m_cci.m_collisionShape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE)
- {
- btConvexHullShape* convexHull = (btConvexHullShape* )m_cci.m_collisionShape;
-
- //psb = btSoftBodyHelpers::CreateFromConvexHull(sbi,&transformedVertices[0],convexHull->getNumPoints());
-
- {
- int nvertices = convexHull->getNumPoints();
- const btVector3* vertices = convexHull->getPoints();
- btSoftBodyWorldInfo& worldInfo = softDynaWorld->getWorldInfo();
-
- HullDesc hdsc(QF_TRIANGLES,nvertices,vertices);
- HullResult hres;
- HullLibrary hlib;/*??*/
- hdsc.mMaxVertices=nvertices;
- hlib.CreateConvexHull(hdsc,hres);
-
- psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices,
- &hres.m_OutputVertices[0],0);
- for(int i=0;i<(int)hres.mNumFaces;++i)
- {
- const int idx[]={ hres.m_Indices[i*3+0],
- hres.m_Indices[i*3+1],
- hres.m_Indices[i*3+2]};
- if(idx[0]<idx[1]) psb->appendLink( idx[0],idx[1]);
- if(idx[1]<idx[2]) psb->appendLink( idx[1],idx[2]);
- if(idx[2]<idx[0]) psb->appendLink( idx[2],idx[0]);
- psb->appendFace(idx[0],idx[1],idx[2]);
- }
-
-
-
- hlib.ReleaseResult(hres);
-
-
- }
-
-
+ btVector3 p(0,0,0);// = getOrigin();
+ //btSoftBody* psb=btSoftBodyHelpers::CreateRope(worldInfo, btVector3(-10,0,i*0.25),btVector3(10,0,i*0.25), 16,1+2);
+ btSoftBody* psb = 0;
+ btSoftBodyWorldInfo& worldInfo = m_cci.m_physicsEnv->getDynamicsWorld()->getWorldInfo();
-
-
-
- } else
+ if (m_cci.m_collisionShape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE)
+ {
+ btConvexHullShape* convexHull = (btConvexHullShape* )m_cci.m_collisionShape;
{
+ int nvertices = convexHull->getNumPoints();
+ const btVector3* vertices = convexHull->getPoints();
+
+ HullDesc hdsc(QF_TRIANGLES,nvertices,vertices);
+ HullResult hres;
+ HullLibrary hlib;/*??*/
+ hdsc.mMaxVertices=nvertices;
+ hlib.CreateConvexHull(hdsc,hres);
- btSoftBodyWorldInfo& sbi= softDynaWorld->getWorldInfo();
-
- if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)
+ psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices,
+ &hres.m_OutputVertices[0],0);
+ for(int i=0;i<(int)hres.mNumFaces;++i)
{
- btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape;
- btBvhTriangleMeshShape* trimeshshape = scaledtrimeshshape->getChildShape();
-
- ///only deal with meshes that have 1 sub part/component, for now
- if (trimeshshape->getMeshInterface()->getNumSubParts()==1)
- {
- unsigned char* vertexBase;
- PHY_ScalarType vertexType;
- int numverts;
- int vertexstride;
- unsigned char* indexbase;
- int indexstride;
- int numtris;
- PHY_ScalarType indexType;
- trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType);
-
- psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,(const btScalar*)vertexBase,(const int*)indexbase,numtris);
- }
- } else
- {
- btBvhTriangleMeshShape* trimeshshape = (btBvhTriangleMeshShape*) m_cci.m_collisionShape;
- ///only deal with meshes that have 1 sub part/component, for now
- if (trimeshshape->getMeshInterface()->getNumSubParts()==1)
- {
- unsigned char* vertexBase;
- PHY_ScalarType vertexType;
- int numverts;
- int vertexstride;
- unsigned char* indexbase;
- int indexstride;
- int numtris;
- PHY_ScalarType indexType;
- trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType);
-
- psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,(const btScalar*)vertexBase,(const int*)indexbase,numtris);
- }
-
-
- //psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,&pts[0].getX(),triangles,numtriangles);
+ const int idx[]={ hres.m_Indices[i*3+0],
+ hres.m_Indices[i*3+1],
+ hres.m_Indices[i*3+2]};
+ if(idx[0]<idx[1]) psb->appendLink( idx[0],idx[1]);
+ if(idx[1]<idx[2]) psb->appendLink( idx[1],idx[2]);
+ if(idx[2]<idx[0]) psb->appendLink( idx[2],idx[0]);
+ psb->appendFace(idx[0],idx[1],idx[2]);
}
-
+ hlib.ReleaseResult(hres);
}
- if (m_cci.m_margin > 0.f)
+ } else
+ {
+ if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)
{
- psb->getCollisionShape()->setMargin(m_cci.m_margin);
- psb->updateBounds();
- }
-
-
- m_object = psb;
+ btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape;
+ btBvhTriangleMeshShape* trimeshshape = scaledtrimeshshape->getChildShape();
- //psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RS;//btSoftBody::fCollision::CL_SS+ btSoftBody::fCollision::CL_RS;
-
- //psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RS + btSoftBody::fCollision::VF_SS;//CL_SS;
-
-
- //btSoftBody::Material* pm=psb->appendMaterial();
- btSoftBody::Material* pm=psb->m_materials[0];
- pm->m_kLST = m_cci.m_soft_linStiff;
- pm->m_kAST = m_cci.m_soft_angStiff;
- pm->m_kVST = m_cci.m_soft_volume;
- psb->m_cfg.collisions = 0;
-
- if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_RS)
- {
- psb->m_cfg.collisions += btSoftBody::fCollision::CL_RS;
- } else
- {
- psb->m_cfg.collisions += btSoftBody::fCollision::SDF_RS;
- }
- if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_SS)
- {
- psb->m_cfg.collisions += btSoftBody::fCollision::CL_SS;
+ ///only deal with meshes that have 1 sub part/component, for now
+ if (trimeshshape->getMeshInterface()->getNumSubParts()==1)
+ {
+ unsigned char* vertexBase;
+ PHY_ScalarType vertexType;
+ int numverts;
+ int vertexstride;
+ unsigned char* indexbase;
+ int indexstride;
+ int numtris;
+ PHY_ScalarType indexType;
+ trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType);
+
+ psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris);
+ }
} else
{
- psb->m_cfg.collisions += btSoftBody::fCollision::VF_SS;
+ btBvhTriangleMeshShape* trimeshshape = (btBvhTriangleMeshShape*) m_cci.m_collisionShape;
+ ///only deal with meshes that have 1 sub part/component, for now
+ if (trimeshshape->getMeshInterface()->getNumSubParts()==1)
+ {
+ unsigned char* vertexBase;
+ PHY_ScalarType vertexType;
+ int numverts;
+ int vertexstride;
+ unsigned char* indexbase;
+ int indexstride;
+ int numtris;
+ PHY_ScalarType indexType;
+ trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType);
+
+ psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris);
+ }
}
+ }
+ if (m_cci.m_margin > 0.f)
+ {
+ psb->getCollisionShape()->setMargin(m_cci.m_margin);
+ psb->updateBounds();
+ }
+ m_object = psb;
+
+ //btSoftBody::Material* pm=psb->appendMaterial();
+ btSoftBody::Material* pm=psb->m_materials[0];
+ pm->m_kLST = m_cci.m_soft_linStiff;
+ pm->m_kAST = m_cci.m_soft_angStiff;
+ pm->m_kVST = m_cci.m_soft_volume;
+ psb->m_cfg.collisions = 0;
+
+ if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_RS)
+ {
+ psb->m_cfg.collisions += btSoftBody::fCollision::CL_RS;
+ } else
+ {
+ psb->m_cfg.collisions += btSoftBody::fCollision::SDF_RS;
+ }
+ if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_SS)
+ {
+ psb->m_cfg.collisions += btSoftBody::fCollision::CL_SS;
+ } else
+ {
+ psb->m_cfg.collisions += btSoftBody::fCollision::VF_SS;
+ }
- psb->m_cfg.kSRHR_CL = m_cci.m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */
- psb->m_cfg.kSKHR_CL = m_cci.m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */
- psb->m_cfg.kSSHR_CL = m_cci.m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */
- psb->m_cfg.kSR_SPLT_CL = m_cci.m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
-
- psb->m_cfg.kSK_SPLT_CL = m_cci.m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
- psb->m_cfg.kSS_SPLT_CL = m_cci.m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
- psb->m_cfg.kVCF = m_cci.m_soft_kVCF; /* Velocities correction factor (Baumgarte) */
- psb->m_cfg.kDP = m_cci.m_soft_kDP; /* Damping coefficient [0,1] */
-
- psb->m_cfg.kDG = m_cci.m_soft_kDG; /* Drag coefficient [0,+inf] */
- psb->m_cfg.kLF = m_cci.m_soft_kLF; /* Lift coefficient [0,+inf] */
- psb->m_cfg.kPR = m_cci.m_soft_kPR; /* Pressure coefficient [-inf,+inf] */
- psb->m_cfg.kVC = m_cci.m_soft_kVC; /* Volume conversation coefficient [0,+inf] */
- psb->m_cfg.kDF = m_cci.m_soft_kDF; /* Dynamic friction coefficient [0,1] */
- psb->m_cfg.kMT = m_cci.m_soft_kMT; /* Pose matching coefficient [0,1] */
- psb->m_cfg.kCHR = m_cci.m_soft_kCHR; /* Rigid contacts hardness [0,1] */
- psb->m_cfg.kKHR = m_cci.m_soft_kKHR; /* Kinetic contacts hardness [0,1] */
+ psb->m_cfg.kSRHR_CL = m_cci.m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */
+ psb->m_cfg.kSKHR_CL = m_cci.m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */
+ psb->m_cfg.kSSHR_CL = m_cci.m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */
+ psb->m_cfg.kSR_SPLT_CL = m_cci.m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
- psb->m_cfg.kSHR = m_cci.m_soft_kSHR; /* Soft contacts hardness [0,1] */
- psb->m_cfg.kAHR = m_cci.m_soft_kAHR; /* Anchors hardness [0,1] */
+ psb->m_cfg.kSK_SPLT_CL = m_cci.m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
+ psb->m_cfg.kSS_SPLT_CL = m_cci.m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
+ psb->m_cfg.kVCF = m_cci.m_soft_kVCF; /* Velocities correction factor (Baumgarte) */
+ psb->m_cfg.kDP = m_cci.m_soft_kDP; /* Damping coefficient [0,1] */
+ psb->m_cfg.kDG = m_cci.m_soft_kDG; /* Drag coefficient [0,+inf] */
+ psb->m_cfg.kLF = m_cci.m_soft_kLF; /* Lift coefficient [0,+inf] */
+ psb->m_cfg.kPR = m_cci.m_soft_kPR; /* Pressure coefficient [-inf,+inf] */
+ psb->m_cfg.kVC = m_cci.m_soft_kVC; /* Volume conversation coefficient [0,+inf] */
+ psb->m_cfg.kDF = m_cci.m_soft_kDF; /* Dynamic friction coefficient [0,1] */
+ psb->m_cfg.kMT = m_cci.m_soft_kMT; /* Pose matching coefficient [0,1] */
+ psb->m_cfg.kCHR = m_cci.m_soft_kCHR; /* Rigid contacts hardness [0,1] */
+ psb->m_cfg.kKHR = m_cci.m_soft_kKHR; /* Kinetic contacts hardness [0,1] */
- if (m_cci.m_gamesoftFlag & CCD_BSB_BENDING_CONSTRAINTS)//OB_SB_GOAL)
- {
- psb->generateBendingConstraints(2,pm);
- }
+ psb->m_cfg.kSHR = m_cci.m_soft_kSHR; /* Soft contacts hardness [0,1] */
+ psb->m_cfg.kAHR = m_cci.m_soft_kAHR; /* Anchors hardness [0,1] */
- psb->m_cfg.piterations = m_cci.m_soft_piterations;
- psb->m_cfg.viterations = m_cci.m_soft_viterations;
- psb->m_cfg.diterations = m_cci.m_soft_diterations;
- psb->m_cfg.citerations = m_cci.m_soft_citerations;
+ if (m_cci.m_gamesoftFlag & CCD_BSB_BENDING_CONSTRAINTS)//OB_SB_GOAL)
+ {
+ psb->generateBendingConstraints(2,pm);
+ }
- if (m_cci.m_gamesoftFlag & CCD_BSB_SHAPE_MATCHING)//OB_SB_GOAL)
- {
- psb->setPose(false,true);//
- } else
- {
- psb->setPose(true,false);
- }
+ psb->m_cfg.piterations = m_cci.m_soft_piterations;
+ psb->m_cfg.viterations = m_cci.m_soft_viterations;
+ psb->m_cfg.diterations = m_cci.m_soft_diterations;
+ psb->m_cfg.citerations = m_cci.m_soft_citerations;
+ if (m_cci.m_gamesoftFlag & CCD_BSB_SHAPE_MATCHING)//OB_SB_GOAL)
+ {
+ psb->setPose(false,true);//
+ } else
+ {
+ psb->setPose(true,false);
+ }
+
+ psb->randomizeConstraints();
-
- psb->randomizeConstraints();
+ if (m_cci.m_soft_collisionflags & (CCD_BSB_COL_CL_RS+CCD_BSB_COL_CL_SS))
+ {
+ psb->generateClusters(m_cci.m_soft_numclusteriterations);
+ }
- if (m_cci.m_soft_collisionflags & (CCD_BSB_COL_CL_RS+CCD_BSB_COL_CL_SS))
- {
- psb->generateClusters(m_cci.m_soft_numclusteriterations);
- }
+ psb->setTotalMass(m_cci.m_mass);
+
+ psb->setCollisionFlags(0);
-// psb->activate();
-// psb->setActivationState(1);
-// psb->setDeactivationTime(1.f);
-
- //psb->m_materials[0]->m_kLST = 0.1+(i/(btScalar)(n-1))*0.9;
- psb->setTotalMass(m_cci.m_mass);
-
- psb->setCollisionFlags(0);
+ ///create a mapping between graphics mesh vertices and soft body vertices
+ {
+ RAS_MeshObject* rasMesh= GetShapeInfo()->GetMesh();
- ///create a mapping between graphics mesh vertices and soft body vertices
+ if (rasMesh && !m_softbodyMappingDone)
{
- RAS_MeshObject* rasMesh= GetShapeInfo()->GetMesh();
-
- if (rasMesh && !m_softbodyMappingDone)
+ //printf("apply\n");
+ RAS_MeshSlot::iterator it;
+ RAS_MeshMaterial *mmat;
+ RAS_MeshSlot *slot;
+ size_t i;
+
+ //for each material
+ for (int m=0;m<rasMesh->NumMaterials();m++)
{
-
- //printf("apply\n");
- RAS_MeshSlot::iterator it;
- RAS_MeshMaterial *mmat;
- RAS_MeshSlot *slot;
- size_t i;
-
- //for each material
- for (int m=0;m<rasMesh->NumMaterials();m++)
+ mmat = rasMesh->GetMeshMaterial(m);
+
+ slot = mmat->m_baseslot;
+ for(slot->begin(it); !slot->end(it); slot->next(it))
{
- // The vertex cache can only be updated for this deformer:
- // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object)
- // share the same mesh (=the same cache). As the rendering is done per polymaterial
- // cycling through the objects, the entire mesh cache cannot be updated in one shot.
- mmat = rasMesh->GetMeshMaterial(m);
-
- slot = mmat->m_baseslot;
- for(slot->begin(it); !slot->end(it); slot->next(it))
+ int index = 0;
+ for(i=it.startvertex; i<it.endvertex; i++,index++)
{
- int index = 0;
- for(i=it.startvertex; i<it.endvertex; i++,index++)
+ RAS_TexVert* vertex = &it.vertex[i];
+ //search closest index, and store it in vertex
+ vertex->setSoftBodyIndex(0);
+ btScalar maxDistSqr = 1e30;
+ btSoftBody::tNodeArray& nodes(psb->m_nodes);
+ btVector3 xyz = btVector3(vertex->getXYZ()[0],vertex->getXYZ()[1],vertex->getXYZ()[2]);
+ for (int n=0;n<nodes.size();n++)
{
- RAS_TexVert* vertex = &it.vertex[i];
-
-
- //search closest index, and store it in vertex
- vertex->setSoftBodyIndex(0);
- btScalar maxDistSqr = 1e30;
- btSoftBody::tNodeArray& nodes(psb->m_nodes);
- btVector3 xyz = btVector3(vertex->getXYZ()[0],vertex->getXYZ()[1],vertex->getXYZ()[2]);
- for (int n=0;n<nodes.size();n++)
+ btScalar distSqr = (nodes[n].m_x - xyz).length2();
+ if (distSqr<maxDistSqr)
{
- btScalar distSqr = (nodes[n].m_x - xyz).length2();
- if (distSqr<maxDistSqr)
- {
- maxDistSqr = distSqr;
-
- vertex->setSoftBodyIndex(n);
- }
+ maxDistSqr = distSqr;
+
+ vertex->setSoftBodyIndex(n);
}
}
}
}
}
}
-
- m_softbodyMappingDone = true;
-
-
-
-
+ }
+ m_softbodyMappingDone = true;
+ btTransform startTrans;
+ rbci.m_motionState->getWorldTransform(startTrans);
-// m_object->setCollisionShape(rbci.m_collisionShape);
- btTransform startTrans;
+ m_MotionState->setWorldPosition(startTrans.getOrigin().getX(),startTrans.getOrigin().getY(),startTrans.getOrigin().getZ());
+ m_MotionState->setWorldOrientation(0,0,0,1);
- if (rbci.m_motionState)
- {
- rbci.m_motionState->getWorldTransform(startTrans);
- } else
- {
- startTrans = rbci.m_startWorldTransform;
- }
- //startTrans.setIdentity();
-
- //m_object->setWorldTransform(startTrans);
- //m_object->setInterpolationWorldTransform(startTrans);
- m_MotionState->setWorldPosition(startTrans.getOrigin().getX(),startTrans.getOrigin().getY(),startTrans.getOrigin().getZ());
- m_MotionState->setWorldOrientation(0,0,0,1);
+ if (!m_prototypeTransformInitialized)
+ {
+ m_prototypeTransformInitialized = true;
+ m_softBodyTransformInitialized = true;
+ psb->transform(startTrans);
+ }
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | m_cci.m_collisionFlags);
+ if (m_cci.m_do_anisotropic)
+ m_object->setAnisotropicFriction(m_cci.m_anisotropicFriction);
+ return true;
+}
- if (!m_prototypeTransformInitialized)
- {
- m_prototypeTransformInitialized = true;
- m_softBodyTransformInitialized = true;
- GetSoftBody()->transform(startTrans);
- }
-// btVector3 wp = m_softBody->getWorldTransform().getOrigin();
-// MT_Point3 center(wp.getX(),wp.getY(),wp.getZ());
-// m_gameobj->NodeSetWorldPosition(center);
+void CcdPhysicsController::CreateRigidbody()
+{
+ //btTransform trans = GetTransformFromMotionState(m_MotionState);
+ m_bulletMotionState = new BlenderBulletMotionState(m_MotionState);
- } else
- {
- btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor);
- rbci.m_linearDamping = m_cci.m_linearDamping;
- rbci.m_angularDamping = m_cci.m_angularDamping;
- rbci.m_friction = m_cci.m_friction;
- rbci.m_restitution = m_cci.m_restitution;
- m_object = new btRigidBody(rbci);
- }
+ ///either create a btCollisionObject, btRigidBody or btSoftBody
+ if (CreateSoftbody())
+ // soft body created, done
+ return;
+
+ //create a rgid collision object
+ btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor);
+ rbci.m_linearDamping = m_cci.m_linearDamping;
+ rbci.m_angularDamping = m_cci.m_angularDamping;
+ rbci.m_friction = m_cci.m_friction;
+ rbci.m_restitution = m_cci.m_restitution;
+ m_object = new btRigidBody(rbci);
//
// init the rigidbody properly
@@ -580,6 +507,20 @@ bool CcdPhysicsController::ReplaceControllerShape(btCollisionShape *newShape)
m_collisionShape= newShape;
m_cci.m_collisionShape= newShape;
+ if (GetSoftBody()) {
+ // soft body must be recreated
+ m_cci.m_physicsEnv->removeCcdPhysicsController(this);
+ delete m_object;
+ m_object = NULL;
+ // force complete reinitialization
+ m_softbodyMappingDone = false;
+ m_prototypeTransformInitialized = false;
+ m_softBodyTransformInitialized = false;
+ CreateSoftbody();
+ assert(m_object);
+ // reinsert the new body
+ m_cci.m_physicsEnv->addCcdPhysicsController(this);
+ }
/* Copied from CcdPhysicsEnvironment::addCcdPhysicsController() */
@@ -804,6 +745,23 @@ void CcdPhysicsController::PostProcessReplica(class PHY_IMotionState* motionsta
}
+void CcdPhysicsController::SetPhysicsEnvironment(class PHY_IPhysicsEnvironment *env)
+{
+ // can safely assume CCD environment
+ CcdPhysicsEnvironment *physicsEnv = static_cast<CcdPhysicsEnvironment*>(env);
+
+ if (m_cci.m_physicsEnv != physicsEnv)
+ {
+ // since the environment is changing, we must also move the controler to the
+ // new environement. Note that we don't handle sensor explicitely: this
+ // function can be called on sensor but only when they are not registered
+ if (m_cci.m_physicsEnv->removeCcdPhysicsController(this))
+ {
+ physicsEnv->addCcdPhysicsController(this);
+ }
+ m_cci.m_physicsEnv = physicsEnv;
+ }
+}
void CcdPhysicsController::SetCenterOfMassTransform(btTransform& xform)
{
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
index 69b16ca35bd..dcb0af62cf9 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
@@ -71,6 +71,7 @@ public:
m_meshObject(NULL),
m_unscaledShape(NULL),
m_useGimpact(false),
+ m_forceReInstance(false),
m_weldingThreshold1(0.f),
m_shapeProxy(NULL)
{
@@ -372,6 +373,7 @@ protected:
void GetWorldOrientation(btMatrix3x3& mat);
void CreateRigidbody();
+ bool CreateSoftbody();
bool Register() {
return (m_registerCount++ == 0) ? true : false;
@@ -432,6 +434,7 @@ protected:
// controller replication
virtual void PostProcessReplica(class PHY_IMotionState* motionstate,class PHY_IPhysicsController* parentctrl);
+ virtual void SetPhysicsEnvironment(class PHY_IPhysicsEnvironment *env);
// kinematic methods
virtual void RelativeTranslate(float dlocX,float dlocY,float dlocZ,bool local);
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index bf28802870a..3d1fa6fc180 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -375,9 +375,7 @@ m_scalingPropagated(false)
//m_dynamicsWorld->getSolverInfo().m_solverMode= SOLVER_USE_WARMSTARTING + SOLVER_USE_2_FRICTION_DIRECTIONS + SOLVER_RANDMIZE_ORDER + SOLVER_USE_FRICTION_WARMSTARTING;
m_debugDrawer = 0;
- m_gravity = btVector3(0.f,-10.f,0.f);
- m_dynamicsWorld->setGravity(m_gravity);
-
+ setGravity(0.f,0.f,-9.81f);
}
void CcdPhysicsEnvironment::addCcdPhysicsController(CcdPhysicsController* ctrl)
@@ -420,7 +418,7 @@ void CcdPhysicsEnvironment::addCcdPhysicsController(CcdPhysicsController* ctrl)
-void CcdPhysicsEnvironment::removeCcdPhysicsController(CcdPhysicsController* ctrl)
+bool CcdPhysicsEnvironment::removeCcdPhysicsController(CcdPhysicsController* ctrl)
{
//also remove constraint
btRigidBody* body = ctrl->GetRigidBody();
@@ -445,13 +443,13 @@ void CcdPhysicsEnvironment::removeCcdPhysicsController(CcdPhysicsController* ctr
m_dynamicsWorld->removeCollisionObject(ctrl->GetCollisionObject());
}
}
- m_controllers.erase(ctrl);
-
if (ctrl->m_registerCount != 0)
printf("Warning: removing controller with non-zero m_registerCount: %d\n", ctrl->m_registerCount);
//remove it from the triggers
m_triggerControllers.erase(ctrl);
+
+ return (m_controllers.erase(ctrl) != 0);
}
void CcdPhysicsEnvironment::updateCcdPhysicsController(CcdPhysicsController* ctrl, btScalar newMass, int newCollisionFlags, short int newCollisionGroup, short int newCollisionMask)
@@ -884,7 +882,7 @@ void CcdPhysicsEnvironment::setGravity(float x,float y,float z)
{
m_gravity = btVector3(x,y,z);
m_dynamicsWorld->setGravity(m_gravity);
-
+ m_dynamicsWorld->getWorldInfo().m_gravity.setValue(x,y,z);
}
@@ -1072,6 +1070,8 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac
rayCallback.m_hitTriangleIndex < shapeInfo->m_polygonIndexArray.size())
{
result.m_meshObject = shapeInfo->GetMesh();
+ // note for softbody: this assumes that the softbody shape uses the same triangle numbering
+ // than the triangle mesh shape that was used to build it
result.m_polygon = shapeInfo->m_polygonIndexArray.at(rayCallback.m_hitTriangleIndex);
// Bullet returns the normal from "outside".
@@ -1080,7 +1080,13 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac
{
// mesh shapes are shared and stored in the shapeInfo
btTriangleMeshShape* triangleShape = shapeInfo->GetMeshShape();
- if (triangleShape)
+
+ if (shape->isSoftBody())
+ {
+ // we can get the real normal directly from the body
+ btSoftBody* softBody = static_cast<btSoftBody*>(rayCallback.m_collisionObject);
+ rayCallback.m_hitNormalWorld = softBody->m_faces[rayCallback.m_hitTriangleIndex].m_normal;
+ } else if (triangleShape)
{
// this code is copied from Bullet
btVector3 triangle[3];
@@ -1736,10 +1742,19 @@ btDispatcher* CcdPhysicsEnvironment::getDispatcher()
return m_dynamicsWorld->getDispatcher();
}
+void CcdPhysicsEnvironment::MergeEnvironment(CcdPhysicsEnvironment *other)
+{
+ std::set<CcdPhysicsController*>::iterator it;
+ while (other->m_controllers.begin() != other->m_controllers.end())
+ {
+ it= other->m_controllers.begin();
+ CcdPhysicsController* ctrl= (*it);
-
-
+ other->removeCcdPhysicsController(ctrl);
+ this->addCcdPhysicsController(ctrl);
+ }
+}
CcdPhysicsEnvironment::~CcdPhysicsEnvironment()
{
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
index e087eac32c5..21f74e95ed4 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
@@ -199,7 +199,7 @@ protected:
void addCcdPhysicsController(CcdPhysicsController* ctrl);
- void removeCcdPhysicsController(CcdPhysicsController* ctrl);
+ bool removeCcdPhysicsController(CcdPhysicsController* ctrl);
void updateCcdPhysicsController(CcdPhysicsController* ctrl, btScalar newMass, int newCollisionFlags, short int newCollisionGroup, short int newCollisionMask);
@@ -242,13 +242,13 @@ protected:
class btConstraintSolver* GetConstraintSolver();
+ void MergeEnvironment(CcdPhysicsEnvironment *other);
+
protected:
-
std::set<CcdPhysicsController*> m_controllers;
-
std::set<CcdPhysicsController*> m_triggerControllers;
PHY_ResponseCallback m_triggerCallbacks[PHY_NUM_RESPONSE];
diff --git a/source/gameengine/Physics/common/PHY_IController.h b/source/gameengine/Physics/common/PHY_IController.h
index a053a9679b8..e897de255c1 100644
--- a/source/gameengine/Physics/common/PHY_IController.h
+++ b/source/gameengine/Physics/common/PHY_IController.h
@@ -31,6 +31,8 @@
#include "PHY_DynamicTypes.h"
+class PHY_IPhysicsEnvironment;
+
#ifdef WITH_CXX_GUARDEDALLOC
#include "MEM_guardedalloc.h"
#endif
@@ -45,8 +47,9 @@ class PHY_IController
public:
virtual ~PHY_IController();
// clientinfo for raycasts for example
- virtual void* getNewClientInfo()=0;
- virtual void setNewClientInfo(void* clientinfo)=0;
+ virtual void* getNewClientInfo()=0;
+ virtual void setNewClientInfo(void* clientinfo)=0;
+ virtual void SetPhysicsEnvironment(class PHY_IPhysicsEnvironment *env)=0;
#ifdef WITH_CXX_GUARDEDALLOC
diff --git a/source/gameengine/Physics/common/PHY_IGraphicController.h b/source/gameengine/Physics/common/PHY_IGraphicController.h
index aae971ff42a..eac3de68d4f 100644
--- a/source/gameengine/Physics/common/PHY_IGraphicController.h
+++ b/source/gameengine/Physics/common/PHY_IGraphicController.h
@@ -32,7 +32,6 @@
#include "PHY_IController.h"
-
/**
PHY_IPhysicsController is the abstract simplified Interface to a physical object.
It contains the IMotionState and IDeformableMesh Interfaces.
@@ -51,7 +50,6 @@ class PHY_IGraphicController : public PHY_IController
virtual PHY_IGraphicController* GetReplica(class PHY_IMotionState* motionstate) {return 0;}
-
#ifdef WITH_CXX_GUARDEDALLOC
void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:PHY_IController"); }
void operator delete( void *mem ) { MEM_freeN(mem); }
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsController.h b/source/gameengine/Physics/common/PHY_IPhysicsController.h
index 664e5fddd83..b34f8417e4c 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsController.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsController.h
@@ -32,6 +32,7 @@
#include "PHY_IController.h"
class PHY_IMotionState;
+class PHY_IPhysicsEnvironment;
/**
PHY_IPhysicsController is the abstract simplified Interface to a physical object.
diff --git a/source/gameengine/PyDoc/GameTypes.py b/source/gameengine/PyDoc/GameTypes.py
index 60511f41c2b..3c0292e9e8c 100644
--- a/source/gameengine/PyDoc/GameTypes.py
+++ b/source/gameengine/PyDoc/GameTypes.py
@@ -991,7 +991,7 @@ class CListValue(CPropValue):
C{val= clist[i]}
CListValue supports string lookups.
- C{val= scene.objects["OBCube"]}
+ C{val= scene.objects["Cube"]}
Other operations such as C{len(clist), list(clist), clist[0:10]} are also supported.
"""
@@ -1504,7 +1504,6 @@ class KX_GameObject(SCA_IObject):
- note: Calling ANY method or attribute on an object that has been removed from a scene will raise a SystemError, if an object may have been removed since last accessing it use the L{invalid} attribute to check.
@ivar name: The object's name. (read-only)
- - note: Currently (Blender 2.49) the prefix "OB" is added to all objects name. This may change in blender 2.5.
@type name: string.
@ivar mass: The object's mass
- note: The object must have a physics controller for the mass to be applied, otherwise the mass value will be returned as 0.0
@@ -3543,7 +3542,7 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
This will genereate a warning in the console:
- C{ERROR: GameObject I{OBName} has a AddObjectActuator I{ActuatorName} without object (in 'nonactive' layer)}
+ C{ERROR: GameObject I{Name} has a AddObjectActuator I{ActuatorName} without object (in 'nonactive' layer)}
"""
#{Deprecated
def setObject(object):
@@ -3729,7 +3728,7 @@ class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
This will generate a warning in the console:
- C{ERROR: GameObject I{OBName} ReplaceMeshActuator I{ActuatorName} without object}
+ C{ERROR: GameObject I{Name} ReplaceMeshActuator I{ActuatorName} without object}
@ivar mesh: L{KX_MeshProxy} or the name of the mesh that will replace the current one
Set to None to disable actuator
@@ -3782,7 +3781,7 @@ class KX_Scene(PyObjectPlus):
print obj.name
# get an object named 'Cube'
- obj = scene.objects["OBCube"]
+ obj = scene.objects["Cube"]
# get the first object in the scene.
obj = scene.objects[0]
@@ -3820,6 +3819,10 @@ class KX_Scene(PyObjectPlus):
@type activity_culling_radius: float
@ivar dbvt_culling: True when Dynamic Bounding box Volume Tree is set (read-only).
@type dbvt_culling: bool
+ @ivar pre_draw: A list of callables to be run before the render step.
+ @type pre_draw: list
+ @ivar post_draw: A list of callables to be run after the render step.
+ @type post_draw: list
@group Deprecated: getLightList, getObjectList, getName
"""
@@ -3874,7 +3877,7 @@ class KX_SceneActuator(SCA_IActuator):
This will generate a warning in the console:
- C{ERROR: GameObject I{OBName} has a SceneActuator I{ActuatorName} (SetScene) without scene}
+ C{ERROR: GameObject I{Name} has a SceneActuator I{ActuatorName} (SetScene) without scene}
@ivar scene: the name of the scene to change to/overlay/underlay/remove/suspend/resume
@type scene: string.
@@ -4181,7 +4184,7 @@ class KX_TrackToActuator(SCA_IActuator):
This will generate a warning in the console:
- C{ERROR: GameObject I{OBName} no object in EditObjectActuator I{ActuatorName}}
+ C{ERROR: GameObject I{Name} no object in EditObjectActuator I{ActuatorName}}
@ivar object: the object this actuator tracks.
@type object: KX_GameObject or None
diff --git a/source/gameengine/Rasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/CMakeLists.txt
index 51d1f5001dd..ec485d82fee 100644
--- a/source/gameengine/Rasterizer/CMakeLists.txt
+++ b/source/gameengine/Rasterizer/CMakeLists.txt
@@ -34,9 +34,12 @@ SET(INC
../../../intern/string
../../../intern/moto/include
../../../extern/glew/include
+ ../../../intern/guardedalloc
../Expressions
${PYTHON_INC}
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
BLENDERLIB(bf_rasterizer "${SRC}" "${INC}")
#env.BlenderLib ( 'bf_rasterizer', sources, Split(incs), [], libtype=['game','player'], priority=[35,115], compileflags = cflags )
diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile
index eafa2ded2f2..d4cc6ab2652 100644
--- a/source/gameengine/Rasterizer/Makefile
+++ b/source/gameengine/Rasterizer/Makefile
@@ -37,8 +37,9 @@ CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
CPPFLAGS += -I$(NAN_GLEW)/include
CPPFLAGS += -I$(OPENGL_HEADERS)
-CPPFLAGS += -I$(NAN_STRING)/include
+CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
+CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
CPPFLAGS += -I../../kernel/gen_system
CPPFLAGS += -I../../blender/makesdna
CPPFLAGS += -I../SceneGraph
@@ -48,7 +49,7 @@ CPPFLAGS += -I../Expressions
CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
ifeq ($(OS),darwin)
- CPPFLAGS += -fpascal-strings
+ CPPFLAGS += -fpascal-strings
endif
###############
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
index 8b3c4990a7a..f5750b39998 100644
--- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
@@ -317,3 +317,44 @@ void RAS_BucketManager::ReleaseMaterials(RAS_IPolyMaterial * mat)
}
}
+/* frees the bucket, only used when freeing scenes */
+void RAS_BucketManager::RemoveMaterial(RAS_IPolyMaterial * mat)
+{
+ BucketList::iterator bit, bitp;
+ list<RAS_MeshSlot>::iterator mit;
+ int i;
+
+
+ for(i=0; i<m_SolidBuckets.size(); i++) {
+ RAS_MaterialBucket *bucket = m_SolidBuckets[i];
+ if (mat == bucket->GetPolyMaterial()) {
+ m_SolidBuckets.erase(m_SolidBuckets.begin()+i);
+ delete bucket;
+ i--;
+ }
+ }
+
+ for(int i=0; i<m_AlphaBuckets.size(); i++) {
+ RAS_MaterialBucket *bucket = m_AlphaBuckets[i];
+ if (mat == bucket->GetPolyMaterial()) {
+ m_AlphaBuckets.erase(m_AlphaBuckets.begin()+i);
+ delete bucket;
+ i--;
+ }
+ }
+}
+
+//#include <stdio.h>
+
+void RAS_BucketManager::MergeBucketManager(RAS_BucketManager *other)
+{
+ /* concatinate lists */
+ // printf("BEFORE %d %d\n", GetSolidBuckets().size(), GetAlphaBuckets().size());
+ GetSolidBuckets().insert( GetSolidBuckets().end(), other->GetSolidBuckets().begin(), other->GetSolidBuckets().end() );
+ other->GetSolidBuckets().clear();
+
+ GetAlphaBuckets().insert( GetAlphaBuckets().end(), other->GetAlphaBuckets().begin(), other->GetAlphaBuckets().end() );
+ other->GetAlphaBuckets().clear();
+ //printf("AFTER %d %d\n", GetSolidBuckets().size(), GetAlphaBuckets().size());
+}
+
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.h b/source/gameengine/Rasterizer/RAS_BucketManager.h
index dcac41ab6e9..75b5e12a05b 100644
--- a/source/gameengine/Rasterizer/RAS_BucketManager.h
+++ b/source/gameengine/Rasterizer/RAS_BucketManager.h
@@ -60,6 +60,21 @@ public:
void ReleaseDisplayLists(RAS_IPolyMaterial * material = NULL);
void ReleaseMaterials(RAS_IPolyMaterial * material = NULL);
+ void RemoveMaterial(RAS_IPolyMaterial * mat); // freeing scenes only
+
+ /* for merging */
+ void MergeBucketManager(RAS_BucketManager *other);
+ BucketList & GetSolidBuckets() {return m_SolidBuckets;};
+ BucketList & GetAlphaBuckets() {return m_AlphaBuckets;};
+
+ /*void PrintStats(int verbose_level) {
+ printf("\nMappings...\n");
+ printf("\t m_SolidBuckets: %d\n", m_SolidBuckets.size());
+ printf("\t\t m_SolidBuckets: %d\n", m_SolidBuckets.size());
+ printf("\t m_AlphaBuckets: %d\n", m_AlphaBuckets.size());
+ }*/
+
+
private:
void OrderBuckets(const MT_Transform& cameratrans, BucketList& buckets, vector<sortedmeshslot>& slots, bool alpha);
diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
index af909dfa731..a387d96c383 100644
--- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
+++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
@@ -46,6 +46,7 @@ class RAS_IRasterizer;
struct MTFace;
struct Material;
struct Scene;
+class SCA_IScene;
enum MaterialProps
{
@@ -164,6 +165,9 @@ public:
virtual void GetMaterialRGBAColor(unsigned char *rgba) const;
virtual bool UsesLighting(RAS_IRasterizer *rasty) const;
virtual bool UsesObjectColor() const;
+
+ virtual void Replace_IScene(SCA_IScene *val) {}; /* overridden by KX_BlenderMaterial */
+
/*
* PreCalculate texture gen
*/
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
index 0995d5acdd5..1143d9441c8 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
@@ -25,6 +25,12 @@
*
* ***** END GPL LICENSE BLOCK *****
*/
+#include "MEM_guardedalloc.h"
+
+#include "DNA_object_types.h"
+#include "DNA_key_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
#include "RAS_MeshObject.h"
#include "RAS_IRasterizer.h"
@@ -93,17 +99,41 @@ STR_String RAS_MeshObject::s_emptyname = "";
RAS_MeshObject::RAS_MeshObject(Mesh* mesh)
: m_bModified(true),
m_bMeshModified(true),
- m_mesh(mesh),
- m_bDeformed(false)
+ m_mesh(mesh)
{
+ if (m_mesh && m_mesh->key)
+ {
+ KeyBlock *kb;
+ int count=0;
+ // initialize weight cache for shape objects
+ // count how many keys in this mesh
+ for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next)
+ count++;
+ m_cacheWeightIndex.resize(count,-1);
+ }
}
RAS_MeshObject::~RAS_MeshObject()
{
vector<RAS_Polygon*>::iterator it;
+ if (m_mesh && m_mesh->key)
+ {
+ KeyBlock *kb;
+ // remove the weight cache to avoid memory leak
+ for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) {
+ if(kb->weights)
+ MEM_freeN(kb->weights);
+ kb->weights= NULL;
+ }
+ }
+
for(it=m_Polygons.begin(); it!=m_Polygons.end(); it++)
delete (*it);
+
+ m_sharedvertex_map.clear();
+ m_Polygons.clear();
+ m_materials.clear();
}
bool RAS_MeshObject::MeshModified()
@@ -426,39 +456,6 @@ void RAS_MeshObject::AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer*
}
}
-void RAS_MeshObject::UpdateBuckets(void* clientobj,
- double* oglmatrix,
- bool useObjectColor,
- const MT_Vector4& rgbavec,
- bool visible,
- bool culled)
-{
- list<RAS_MeshMaterial>::iterator it;
-
- for(it = m_materials.begin();it!=m_materials.end();++it) {
- RAS_MeshSlot **msp = it->m_slots[clientobj];
-
- if(!msp)
- continue;
-
- RAS_MeshSlot *ms = *msp;
-
- ms->m_mesh = this;
- ms->m_OpenGLMatrix = oglmatrix;
- ms->m_bObjectColor = useObjectColor;
- ms->m_RGBAcolor = rgbavec;
- ms->m_bVisible = visible;
- ms->m_bCulled = culled || !visible;
- if (!ms->m_bCulled)
- ms->m_bucket->ActivateMesh(ms);
-
- /* split if necessary */
-#ifdef USE_SPLIT
- ms->Split();
-#endif
- }
-}
-
void RAS_MeshObject::RemoveFromBuckets(void *clientobj)
{
list<RAS_MeshMaterial>::iterator it;
@@ -556,3 +553,64 @@ void RAS_MeshObject::SchedulePolygons(int drawingmode)
}
}
+static int get_def_index(Object* ob, const char* vgroup)
+{
+ bDeformGroup *curdef;
+ int index = 0;
+
+ for (curdef = (bDeformGroup*)ob->defbase.first; curdef; curdef=(bDeformGroup*)curdef->next, index++)
+ if (!strcmp(curdef->name, vgroup))
+ return index;
+
+ return -1;
+}
+
+void RAS_MeshObject::CheckWeightCache(Object* obj)
+{
+ KeyBlock *kb;
+ int kbindex, defindex;
+ MDeformVert *dvert= NULL;
+ int totvert, i, j;
+ float *weights;
+
+ if (!m_mesh->key)
+ return;
+
+ for(kbindex=0, kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next, kbindex++)
+ {
+ // first check the cases where the weight must be cleared
+ if (kb->vgroup[0] == 0 ||
+ m_mesh->dvert == NULL ||
+ (defindex = get_def_index(obj, kb->vgroup)) == -1) {
+ if (kb->weights) {
+ MEM_freeN(kb->weights);
+ kb->weights = NULL;
+ }
+ m_cacheWeightIndex[kbindex] = -1;
+ } else if (m_cacheWeightIndex[kbindex] != defindex) {
+ // a weight array is required but the cache is not matching
+ if (kb->weights) {
+ MEM_freeN(kb->weights);
+ kb->weights = NULL;
+ }
+
+ dvert= m_mesh->dvert;
+ totvert= m_mesh->totvert;
+
+ weights= (float*)MEM_callocN(totvert*sizeof(float), "weights");
+
+ for (i=0; i < totvert; i++, dvert++) {
+ for(j=0; j<dvert->totweight; j++) {
+ if (dvert->dw[j].def_nr == defindex) {
+ weights[i]= dvert->dw[j].weight;
+ break;
+ }
+ }
+ }
+ kb->weights = weights;
+ m_cacheWeightIndex[kbindex] = defindex;
+ }
+ }
+}
+
+
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.h b/source/gameengine/Rasterizer/RAS_MeshObject.h
index 1738423c4f3..820d537ab10 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.h
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.h
@@ -70,9 +70,9 @@ private:
struct fronttoback;
protected:
+ vector<int> m_cacheWeightIndex;
list<RAS_MeshMaterial> m_materials;
Mesh* m_mesh;
- bool m_bDeformed;
public:
// for now, meshes need to be in a certain layer (to avoid sorting on lights in realtime)
@@ -80,7 +80,8 @@ public:
virtual ~RAS_MeshObject();
- bool IsDeformed() { return m_bDeformed; }
+ // for shape keys,
+ void CheckWeightCache(struct Object* obj);
/* materials */
int NumMaterials();
@@ -132,13 +133,6 @@ public:
/* buckets */
virtual void AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* deformer);
- virtual void UpdateBuckets(
- void* clientobj,
- double* oglmatrix,
- bool useObjectColor,
- const MT_Vector4& rgbavec,
- bool visible,
- bool culled);
void RemoveFromBuckets(void *clientobj);
void EndConversion() {
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
index f2b97bedb2f..e86f4cd1eb8 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
@@ -41,5 +41,7 @@ SET(INC
../../../../source/blender/blenloader
)
+ADD_DEFINITIONS(-DGLEW_STATIC)
+
BLENDERLIB(bf_oglrasterizer "${SRC}" "${INC}")
#env.BlenderLib ( 'bf_oglrasterizer', Split(sources), Split(incs), [], libtype=['game','player'], priority=[40, 120] )
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
index fb4c685f8d3..68e6789c05e 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
@@ -3,9 +3,11 @@ Import ('env')
sources = env.Glob('*.cpp')
+defs = [ 'GLEW_STATIC' ]
+
incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/Rasterizer #source/gameengine/BlenderRoutines '
incs += ' #source/blender/gpu #extern/glew/include ' + env['BF_OPENGL_INC']
incs += ' #source/blender/gameengine/Ketsji #source/gameengine/SceneGraph #source/blender/makesdna #source/blender/blenkernel'
incs += ' #intern/guardedalloc #source/blender/blenlib'
-env.BlenderLib ( 'bf_oglrasterizer', Split(sources), Split(incs), [], libtype=['core','player'], priority=[350,75], cxx_compileflags=env['BGE_CXXFLAGS'])
+env.BlenderLib ( 'bf_oglrasterizer', Split(sources), Split(incs), defines = defs, libtype=['core','player'], priority=[350,75], cxx_compileflags=env['BGE_CXXFLAGS'])
diff --git a/source/gameengine/Rasterizer/SConscript b/source/gameengine/Rasterizer/SConscript
index ea99fa966d8..8bc99f1596e 100644
--- a/source/gameengine/Rasterizer/SConscript
+++ b/source/gameengine/Rasterizer/SConscript
@@ -4,9 +4,9 @@ Import ('env')
sources = env.Glob('*.cpp')
-incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna'
+incs = '. #intern/guardedalloc #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna'
-defs = []
+defs = [ 'GLEW_STATIC' ]
if env['WITH_BF_PYTHON']:
incs += ' ' + env['BF_PYTHON_INC']
diff --git a/source/gameengine/SceneGraph/SG_IObject.h b/source/gameengine/SceneGraph/SG_IObject.h
index 23e6c1e9c99..523be0ef279 100644
--- a/source/gameengine/SceneGraph/SG_IObject.h
+++ b/source/gameengine/SceneGraph/SG_IObject.h
@@ -241,6 +241,22 @@ public:
m_SGclientObject = clientObject;
}
+
+ /* needed for scene switching */
+ inline const void* GetSGClientInfo() const
+ {
+ return m_SGclientInfo;
+ }
+ inline void* GetSGClientInfo()
+ {
+ return m_SGclientInfo;
+ }
+ void SetSGClientInfo(void* clientInfo)
+ {
+ m_SGclientInfo = clientInfo;
+ }
+
+
/**
* Set the current simulation time for this node.
* The implementation of this function runs through
diff --git a/source/gameengine/VideoTexture/ImageRender.cpp b/source/gameengine/VideoTexture/ImageRender.cpp
index 6e70bfb14a0..62594f9552c 100644
--- a/source/gameengine/VideoTexture/ImageRender.cpp
+++ b/source/gameengine/VideoTexture/ImageRender.cpp
@@ -34,7 +34,7 @@ http://www.gnu.org/copyleft/lesser.txt.
#include "DNA_scene_types.h"
#include "RAS_CameraData.h"
#include "RAS_MeshObject.h"
-#include "BLI_arithb.h"
+#include "BLI_math.h"
#include "ImageRender.h"
#include "ImageBase.h"
@@ -589,15 +589,15 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
{
v4 = polygon->GetVertex(3);
mirrorVerts.push_back(v4);
- area = CalcNormFloat4((float*)v1->getXYZ(), (float*)v2->getXYZ(), (float*)v3->getXYZ(), (float*)v4->getXYZ(), normal);
+ area = normal_quad_v3( normal,(float*)v1->getXYZ(), (float*)v2->getXYZ(), (float*)v3->getXYZ(), (float*)v4->getXYZ());
} else
{
- area = CalcNormFloat((float*)v1->getXYZ(), (float*)v2->getXYZ(), (float*)v3->getXYZ(), normal);
+ area = normal_tri_v3( normal,(float*)v1->getXYZ(), (float*)v2->getXYZ(), (float*)v3->getXYZ());
}
area = fabs(area);
mirrorArea += area;
- VecMulf(normal, area);
- VecAddf(mirrorNormal, mirrorNormal, normal);
+ mul_v3_fl(normal, area);
+ add_v3_v3v3(mirrorNormal, mirrorNormal, normal);
}
}
}
@@ -607,8 +607,8 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
THRWEXCP(MirrorSizeInvalid, S_OK);
}
// compute average normal of mirror faces
- VecMulf(mirrorNormal, 1.0f/mirrorArea);
- if (Normalize(mirrorNormal) == 0.f)
+ mul_v3_fl(mirrorNormal, 1.0f/mirrorArea);
+ if (normalize_v3(mirrorNormal) == 0.f)
{
// no normal
THRWEXCP(MirrorNormalInvalid, S_OK);
@@ -622,26 +622,26 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
fabs(mirrorNormal[2]) > fabs(mirrorNormal[0]))
{
// the mirror is more horizontal than vertical
- VecCopyf(axis, yaxis);
+ copy_v3_v3(axis, yaxis);
}
else
{
// the mirror is more vertical than horizontal
- VecCopyf(axis, zaxis);
+ copy_v3_v3(axis, zaxis);
}
- dist = Inpf(mirrorNormal, axis);
+ dist = dot_v3v3(mirrorNormal, axis);
if (fabs(dist) < FLT_EPSILON)
{
// the mirror is already fully aligned with up axis
- VecCopyf(mirrorUp, axis);
+ copy_v3_v3(mirrorUp, axis);
}
else
{
// projection of axis to mirror plane through normal
- VecCopyf(vec, mirrorNormal);
- VecMulf(vec, dist);
- VecSubf(mirrorUp, axis, vec);
- if (Normalize(mirrorUp) == 0.f)
+ copy_v3_v3(vec, mirrorNormal);
+ mul_v3_fl(vec, dist);
+ sub_v3_v3v3(mirrorUp, axis, vec);
+ if (normalize_v3(mirrorUp) == 0.f)
{
// should not happen
THRWEXCP(MirrorHorizontal, S_OK);
@@ -650,12 +650,12 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
}
// compute rotation matrix between local coord and mirror coord
// to match camera orientation, we select mirror z = -normal, y = up, x = y x z
- VecCopyf(mirrorMat[2], mirrorNormal);
- VecMulf(mirrorMat[2], -1.0f);
- VecCopyf(mirrorMat[1], mirrorUp);
- Crossf(mirrorMat[0], mirrorMat[1], mirrorMat[2]);
+ copy_v3_v3(mirrorMat[2], mirrorNormal);
+ mul_v3_fl(mirrorMat[2], -1.0f);
+ copy_v3_v3(mirrorMat[1], mirrorUp);
+ cross_v3_v3v3(mirrorMat[0], mirrorMat[1], mirrorMat[2]);
// transpose to make it a orientation matrix from local space to mirror space
- Mat3Transp(mirrorMat);
+ transpose_m3(mirrorMat);
// transform all vertex to plane coordinates and determine mirror position
left = FLT_MAX;
right = -FLT_MAX;
@@ -664,8 +664,8 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
back = -FLT_MAX; // most backward vertex (=highest Z coord in mirror space)
for (it = mirrorVerts.begin(); it != mirrorVerts.end(); it++)
{
- VecCopyf(vec, (float*)(*it)->getXYZ());
- Mat3MulVecfl(mirrorMat, vec);
+ copy_v3_v3(vec, (float*)(*it)->getXYZ());
+ mul_m3_v3(mirrorMat, vec);
if (vec[0] < left)
left = vec[0];
if (vec[0] > right)
@@ -690,8 +690,8 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
vec[1] = (top+bottom)*0.5f;
vec[2] = back;
// convert it in local space: transpose again the matrix to get back to mirror to local transform
- Mat3Transp(mirrorMat);
- Mat3MulVecfl(mirrorMat, vec);
+ transpose_m3(mirrorMat);
+ mul_m3_v3(mirrorMat, vec);
// mirror position in local space
m_mirrorPos.setValue(vec[0], vec[1], vec[2]);
// mirror normal vector (pointed towards the back of the mirror) in local space
diff --git a/source/nan_compile.mk b/source/nan_compile.mk
index 6a1263e286c..258d06c07b9 100644
--- a/source/nan_compile.mk
+++ b/source/nan_compile.mk
@@ -116,8 +116,7 @@ ifeq ($(OS),irix)
CFLAGS += -fPIC -funsigned-char -fno-strict-aliasing -mabi=n32 -mips4
CCFLAGS += -fPIC -fpermissive -funsigned-char -fno-strict-aliasing -mabi=n32 -mips4
REL_CFLAGS += -O2
- REL_CCFLAGS += -O2
- CPPFLAGS += -DXP_UNIX
+ REL_CCFLAGS += -O2
DBG_CFLAGS += -g3 -gdwarf-2 -ggdb
DBG_CCFLAGS += -g3 -gdwarf-2 -ggdb
else